Bocian.php.view.js 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746
  1. if (!URL_TABLE_POWIAZANIA) throw "Brak URL_TABLE_POWIAZANIA";
  2. if (!BASE_URLS) throw "Brak BASE_URLS"
  3. var FIELD_LIST_PRACOWNICY = [
  4. 'f_ID',
  5. 'f_imiona',
  6. 'f_nazwisko',
  7. 'f_nip',
  8. 'f_pesel',
  9. 'f_regon',
  10. 'f_source',
  11. 'f_A_ADM_COMPANY',
  12. 'f_A_CLASSIFIED',
  13. 'f_A_STATUS',
  14. 'f_A_STATUS_INFO',
  15. 'f_L_APPOITMENT_USER',
  16. 'f_Adresy',
  17. ]
  18. var FIELD_LIST_KONTRAHENCI = [
  19. 'f_ID',
  20. 'f_Nazwa_grupy_kapitalowej',
  21. 'f_Pelna_nazwa_kontrahenta',
  22. 'f_Numer_kontrahenta',
  23. 'f_Skrocona_Nazwa_Kontrahenta',
  24. 'f_Typ_kontrahenta',
  25. 'f_NIP',
  26. 'f_KRS',
  27. 'f_REGON',
  28. 'f_PESEL',
  29. 'f_Forma_prawna_dzialalnosci',
  30. 'f_Ulica',
  31. 'f_Numer_budynku',
  32. 'f_Numer_mieszkania_lokalu',
  33. 'f_Miejscowosc',
  34. 'f_Kod_pocztowy',
  35. 'f_Kraj',
  36. 'f_Telefon',
  37. 'f_Fax',
  38. 'f_Mail',
  39. 'f_A_ADM_COMPANY',
  40. 'f_A_CLASSIFIED',
  41. 'f_Dodano',
  42. 'f_Podmiot_dominujacy',
  43. 'f_Tytul_dokumentu',
  44. 'f_ownCompany',
  45. 'f_uwagi',
  46. ]
  47. $(window).on('hashchange', function() {
  48. initLocalStorage();
  49. rootChangeForm();
  50. updateTopCounters();
  51. });
  52. /* DATA FOR READ REAPORT */
  53. function urlFetchKontrahenciPowiazania() {
  54. // Documentation: https://github.com/github/fetch
  55. fetch(URL_FETCH_KONTRAHENCI_POWIAZANIA, {
  56. credentials: 'same-origin'
  57. })
  58. .then(function parseJSON(response) {
  59. return response.json()
  60. })
  61. .then(function(data) {
  62. var reaportItemsKontrahenciPowiazani = null;
  63. data.body.items.forEach (function(row) {
  64. reaportItemsKontrahenciPowiazani += '<tr><td><input type="checkbox" name="kontrID[]" value="'+row['ID']+'" /></td>'+
  65. '<td align="right">'+row["ID"]+'</td>';
  66. });
  67. $( "#body-reaport-kontrahenci-powiazani-tree" ).html(reaportItemsKontrahenciPowiazani);
  68. }).catch(function(error) {
  69. console.log('request failed', error)
  70. });
  71. }
  72. /* FORM DATA FOR GENERATAE REAPORT */
  73. function loadCurrentDepthInInput(idInput) {
  74. var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  75. $(idInput).val(function() {
  76. return depthValue;
  77. });
  78. }
  79. function updateLocalStorageBiAuditDepth(idInput) {
  80. $(idInput).keyup(function() {
  81. delayUpdate(function(){
  82. var newValue = $(idInput).val();
  83. var responseValue = validateValueDepth(parseInt(newValue));
  84. setItemLocalStorage('Bocian.biAuditForm.depth', responseValue);
  85. loadCurrentDepthInInput('.smad-depth');
  86. }, 1000 );
  87. });
  88. }
  89. function validateValueDepth(newValue) {
  90. var value = null;
  91. value = newValue;
  92. if (parseInt(newValue) < 0) {
  93. value = 1;
  94. }
  95. if (parseInt(newValue) > 16) {
  96. value = 16;
  97. }
  98. return value;
  99. }
  100. var delayUpdate = (function() {
  101. var timer = 0;
  102. return function(callback, ms) {
  103. clearTimeout (timer);
  104. timer = setTimeout(callback, ms);
  105. };
  106. })();
  107. function initLocalStorage() {
  108. if (getItemLocalStorage('Bocian.biAuditForm.pracownicyIds') === null) {
  109. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', []);
  110. }
  111. if (getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds') === null) {
  112. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', []);
  113. }
  114. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', 0);
  115. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', 0);
  116. if (getItemLocalStorage('Bocian.biAuditForm.depth') === null) {
  117. updateLocalStorageBiAuditDepth(7);
  118. }
  119. }
  120. /**
  121. * Funkcja pozwala na wyświetlenie okienka importu
  122. */
  123. function showViewUploadFile( event, headerTitle, enumType, showCheckbox, csvFileExample ) {
  124. event.preventDefault();
  125. var enumType = enumType;
  126. if( csvFileExample !== undefined) { // przykład + instrukcja do pobrania
  127. csvFileExample = '<div><a href="'+csvFileExample+'" title="Pobierz przykład" download target="_balnk">Pobierz przykład</a></div>';
  128. }
  129. swal({
  130. title: 'Importuj plik csv',
  131. input: 'file',
  132. html: csvFileExample,
  133. inputAttributes: {
  134. 'accept': 'text/csv',
  135. 'aria-label': 'Upload csv file'
  136. },
  137. confirmButtonText: 'Importuj',
  138. preConfirm: function (file) {
  139. return new Promise(function (resolve, reject) {
  140. if (!file) {
  141. reject("Proszę wybrać plik csv");
  142. return
  143. }
  144. var input = document.querySelector('input[type="file"]');
  145. var data = new FormData()
  146. data.append('file', input.files[0])
  147. data.append('showCheckbox', showCheckbox);
  148. var responseParseFile = parseCsvFile( data, enumType );
  149. resolve('file imported')
  150. })
  151. },
  152. }).then(function (result) {
  153. console.log('result', result)
  154. }).catch(function (e) {
  155. console.log('catch: ', e)
  156. });
  157. }
  158. /**
  159. * Funkcja przekazuje dane z pliku csv do przeparsowania
  160. */
  161. function parseCsvFile( fileData, enumType ) {
  162. event.preventDefault();
  163. console.log( 'parseCsvFile fileData', fileData);
  164. fetch(URL_FORM_DATA_CSV_FILE_AJAX, {
  165. method: 'POST',
  166. credentials: 'same-origin',
  167. body: fileData
  168. })
  169. .then(function(response) {
  170. return response.json()
  171. }).then(function(json) {
  172. swal({
  173. title: 'Dane załadowane z pliku CSV',
  174. html: json.body.view,
  175. width: Math.round(window.innerWidth * 0.9),
  176. allowOutsideClick: false, // TODO: btn Anuluj na dole?
  177. showCloseButton: true,
  178. confirmButtonText: 'Zapisz',
  179. preConfirm: function (dataForm) {
  180. return new Promise(function (resolve, reject) {
  181. if (!dataForm) {
  182. reject("Formularz nie zawiera danych do zapisania");
  183. return
  184. }
  185. // zapisanie danych
  186. var responseSaveData = saveFormCsvFileAjaxAction(enumType);
  187. resolve('data save from form')
  188. })
  189. },
  190. }).then(function (result) {
  191. console.log('result', result)
  192. }).catch(function (e) {
  193. console.log('catch: ', e)
  194. });
  195. }).catch(function(ex) {
  196. console.log('parsing failed', ex)
  197. });
  198. }
  199. /**
  200. * Funkcja zapisuje dane z formularza do wgrania pliku csv
  201. */
  202. function saveFormCsvFileAjaxAction(enumType) {
  203. event.preventDefault();
  204. var formDataFrom = $("#formDataFromCsv").serialize();
  205. formDataFrom = formDataFrom.replace(/%5B/g,"[");
  206. formDataFrom = formDataFrom.replace(/%5D/g,"]");
  207. //var formDataFrom = $("#formDataFromCsv").serializeArray();
  208. console.log('dane z formularza formDataFrom ', formDataFrom );
  209. fetch(URL_SAVE_FORM_CSV_FILE_AJAX, {
  210. method: 'POST',
  211. credentials: 'same-origin',
  212. headers: {
  213. 'Content-Type': 'application/json'
  214. },
  215. body: JSON.stringify({
  216. formData: formDataFrom,
  217. enumType: enumType
  218. })
  219. })
  220. .then(function(response) {
  221. return response.json()
  222. }).then(function(json) {
  223. console.log('parsed json', json)
  224. if (response.type == 'success') {
  225. p5UI__notifyAjaxCallback(response.msg);
  226. }
  227. // return json;
  228. }).catch(function(ex) {
  229. console.log('parsing failed', ex)
  230. });
  231. }
  232. function defaultBIAuditLocalStorage() {
  233. localStorage.removeItem('Bocian.biAuditForm.pracownicyIds');
  234. localStorage.removeItem('Bocian.biAuditForm.kontrahenciIds');
  235. setItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page', 1);
  236. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page', 1);
  237. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', 0);
  238. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', 0);
  239. setItemLocalStorage('Bocian.biAuditForm.depth', 7);
  240. }
  241. function generateBiAuditRaport(event) {
  242. event.preventDefault();
  243. var pracownicyIdsArray = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  244. var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  245. var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  246. // validate
  247. if (!depthValue || depthValue === 0) {
  248. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie podano wartości dla głębokości powiązań' });
  249. } else if (!pracownicyIdsArray || pracownicyIdsArray.length === 0) {
  250. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano pracowników' });
  251. } else if (!kontrahenciIdsArray || kontrahenciIdsArray.length === 0) {
  252. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano kontrahentów' });
  253. } else {
  254. // send
  255. window.fetch(URL_GENERATE_BI_AUDIT_RAPORT_AJAX, {
  256. method: 'POST',
  257. headers: {
  258. 'Content-Type': 'application/json'
  259. },
  260. credentials: 'same-origin',
  261. body: JSON.stringify({
  262. pracownicyIds: pracownicyIdsArray,
  263. kontrahenciIds: kontrahenciIdsArray,
  264. depthValue: depthValue
  265. })
  266. })
  267. .then(function(response) {
  268. console.log('Firsst then', response);
  269. return response.text();
  270. })
  271. .then(function(responseText) {
  272. try {
  273. return JSON.parse(responseText);
  274. } catch (e) {
  275. throw responseText;
  276. }
  277. })
  278. .then(function(result) {
  279. if (result.type == 'success') {
  280. p5UI__notifyAjaxCallback(result);
  281. defaultBIAuditLocalStorage();
  282. window.setTimeout(URL_TABLE_POWIAZANIA, 6000);
  283. resolve(result.msg);
  284. } else {
  285. reject(result.msg);
  286. }
  287. })
  288. .catch(function(error) {
  289. console.log('request failed', error)
  290. });
  291. }
  292. }
  293. /**
  294. * Popup z opcja przeniesienia pracowników do innej grupy
  295. */
  296. function addPracownikToGroup(event) {
  297. event.preventDefault();
  298. var pracownicyIdsArray = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  299. console.log(pracownicyIdsArray);
  300. if (pracownicyIdsArray === null) {
  301. showTextListIdPracownikow = 'ID pracowników: nie wybrano';
  302. } else {
  303. showTextListIdPracownikow = 'ID pracowników: ' + pracownicyIdsArray;
  304. }
  305. var arrayGroupOptions = [];
  306. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups');
  307. // utworzenie tablicy Optionsów grupy
  308. listGroupStorage.map(function(item) {
  309. if (item.ID !== undefined) {
  310. arrayGroupOptions[item.ID] = item.NAZWA;
  311. }
  312. });
  313. swal({
  314. title: 'Przenieś do grupy',
  315. input: 'select',
  316. text: showTextListIdPracownikow,
  317. inputOptions: arrayGroupOptions,
  318. inputPlaceholder: 'Wybierz grupę',
  319. showCancelButton: true,
  320. confirmButtonText: 'Zapisz',
  321. showLoaderOnConfirm: true,
  322. preConfirm: function (idGroup) {
  323. return new Promise(function (resolve, reject) {
  324. console.log('idGrupy value', idGroup);
  325. if ( !pracownicyIdsArray || pracownicyIdsArray === null || pracownicyIdsArray === 'undefined' ) {
  326. reject('Wybierz pracowników');
  327. } else if ( pracownicyIdsArray.length === 0 ) {
  328. reject('Wybierz pracowników');
  329. }
  330. if (!idGroup) reject('Proszę wybrać nazwę grupy');
  331. window.fetch(URL_ADD_PRACOWNICY_TO_GROUP, {
  332. method: 'POST',
  333. header: {
  334. 'contentType': 'applications/json'
  335. },
  336. credentials: 'same-origin',
  337. body: JSON.stringify({
  338. 'idGroup': idGroup,
  339. 'pracownicyIds': getItemLocalStorage('Bocian.biAuditForm.pracownicyIds'),
  340. })
  341. })
  342. .then(function(response) {
  343. return response.text();
  344. })
  345. .then(function(responseText) {
  346. try {
  347. return JSON.parse(responseText);
  348. } catch (e) {
  349. throw responseText;
  350. }
  351. })
  352. .then(function(result) {
  353. if (result.type == 'success') {
  354. p5UI__notifyAjaxCallback(result);
  355. resolve(result.msg);
  356. } else {
  357. reject(result.msg);
  358. }
  359. })
  360. .catch(function(error) {
  361. console.log('request failed', error)
  362. });
  363. })
  364. },
  365. allowOutsideClick: false
  366. }).then(function (groupPracownicyData) {
  367. //TODO: pIOTRKU CZY TU POWINIENEM COŚ JESZCZE OBSŁUŻYĆ
  368. });
  369. }
  370. /**
  371. * Popup z opcja przeniesienia kontrahentów do innej grupy
  372. */
  373. function addKontrahenciToGroup(event) {
  374. event.preventDefault();
  375. var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  376. if (kontrahenciIdsArray === null) {
  377. showTextListIdKontrahentow = 'ID kontrahentów: nie wybrano';
  378. } else {
  379. showTextListIdKontrahentow = 'ID kontrahentów: ' + kontrahenciIdsArray;
  380. }
  381. var arrayGroupOptions = [];
  382. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups');
  383. // utworzenie tablicy Optionsów grupy
  384. listGroupStorage.map(function(item) {
  385. if (item.ID !== undefined) {
  386. arrayGroupOptions[item.ID] = item.NAZWA;
  387. }
  388. });
  389. swal({
  390. title: 'Przenieś do grupy',
  391. input: 'select',
  392. text: showTextListIdKontrahentow,
  393. inputOptions: arrayGroupOptions,
  394. inputPlaceholder: 'Wybierz grupę',
  395. showCancelButton: true,
  396. confirmButtonText: 'Zapisz',
  397. showLoaderOnConfirm: true,
  398. preConfirm: function (idGroup) {
  399. return new Promise(function (resolve, reject) {
  400. if (!idGroup) reject('Proszę wybrać nazwę grupy');
  401. if ( !kontrahenciIdsArray || kontrahenciIdsArray === null || kontrahenciIdsArray === 'undefined' ) {
  402. reject('Wybierz kontrahentów');
  403. } else if ( kontrahenciIdsArray.length === 0 ) {
  404. reject('Wybierz kontrahentów');
  405. }
  406. window.fetch(URL_ADD_KONTRAHENCI_TO_GROUP, {
  407. method: 'POST',
  408. header: {
  409. 'contentType': 'applications/json'
  410. },
  411. credentials: 'same-origin',
  412. body: JSON.stringify({
  413. 'idGroup': idGroup,
  414. 'kontrahenciIds': getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds'),
  415. })
  416. })
  417. .then(function(response) {
  418. return response.text();
  419. })
  420. .then(function(responseText) {
  421. try {
  422. return JSON.parse(responseText);
  423. } catch (e) {
  424. throw responseText;
  425. }
  426. })
  427. .then(function(result) {
  428. result
  429. if (result.type == 'success') {
  430. p5UI__notifyAjaxCallback(result);
  431. resolve(result.msg);
  432. } else {
  433. reject(result.msg);
  434. }
  435. })
  436. ;
  437. })
  438. },
  439. allowOutsideClick: false
  440. }).then(function (groupKontrahenciData) {
  441. //TODO: PIOTRKU CZY TU POWINIENEM COŚ JESZCZE OBSŁUŻYĆ
  442. });
  443. }
  444. function createGroupKontrahenci(event) {
  445. event.preventDefault();
  446. swal({
  447. title: 'Utwórz grupę',
  448. input: 'text',
  449. showCancelButton: true,
  450. confirmButtonText: 'Zapisz',
  451. showLoaderOnConfirm: true,
  452. preConfirm: function (NAZWA) {
  453. return new Promise(function (resolve, reject) {
  454. if (!NAZWA) reject('Proszę podać nazwę grupy');
  455. window.fetch(URL_CREATE_KONTRAHENCIS_GROUP, {
  456. method: 'POST',
  457. header: {
  458. 'contentType': 'applications/json'
  459. },
  460. credentials: 'same-origin',
  461. body: JSON.stringify({
  462. 'NAZWA': NAZWA
  463. })
  464. })
  465. .then(function(response) {
  466. return response.text();
  467. })
  468. .then(function(responseText) {
  469. try {
  470. return JSON.parse(responseText);
  471. } catch (e) {
  472. throw responseText;
  473. }
  474. })
  475. .then(function(result) {
  476. if (result.type == 'success') {
  477. p5UI__notifyAjaxCallback(result);
  478. resolve(result.body);
  479. } else {
  480. reject("Proszę podać inną nazwę grupy");
  481. }
  482. })
  483. .catch(function(error) {
  484. console.log('request failed', error)
  485. })
  486. })
  487. },
  488. allowOutsideClick: false
  489. }).then(function (groupKontrahenciData) {
  490. //TODO: aktualizacja fitrów na widoku -> SPrawdzić co dostaniemy w odpowiedzi po dodaniu filtra grupy
  491. groupsKontrahenci = '<button class="btn btn-default" title="'+groupKontrahenciData['nazwa']+'" data-group-filter="'+groupKontrahenciData['id']+'">'+groupKontrahenciData['nazwa']+'</button>';
  492. $('#group-kontrahenci').append(groupsKontrahenci);
  493. });
  494. }
  495. function createGroupPracownicy(event) {
  496. event.preventDefault();
  497. swal({
  498. title: 'Utwórz grupę',
  499. input: 'text',
  500. showCancelButton: true,
  501. confirmButtonText: 'Zapisz',
  502. showLoaderOnConfirm: true,
  503. preConfirm: function (NAZWA) {
  504. return new Promise(function (resolve, reject) {
  505. if (!NAZWA) reject('Proszę podać nazwę grupy');
  506. window.fetch(URL_CREATE_PRACOWNICY_GROUP, {
  507. method: 'POST',
  508. header: {
  509. 'contentType': 'applications/json'
  510. },
  511. credentials: 'same-origin',
  512. body: JSON.stringify({
  513. 'NAZWA': NAZWA
  514. })
  515. })
  516. .then(function(response) {
  517. return response.text();
  518. })
  519. .then(function(responseText) {
  520. try {
  521. return JSON.parse(responseText);
  522. } catch (e) {
  523. throw responseText;
  524. }
  525. })
  526. .then(function(result) {
  527. if (result.type == 'success') {
  528. console.log('grupa prac1: ', result);
  529. p5UI__notifyAjaxCallback(result);
  530. resolve(result.body);
  531. } else {
  532. reject("Proszę podać inną nazwę grupy");
  533. }
  534. })
  535. .catch(function(error) {
  536. console.log('request failed', error)
  537. })
  538. })
  539. },
  540. allowOutsideClick: false
  541. }).then(function (groupPracownicyData) {
  542. console.log('grupa prac2: ', groupPracownicyData);
  543. //TODO: aktualizacja fitrów na widoku -> SPrawdzić co dostaniemy w odpowiedzi po dodaniu filtra grupy
  544. groupsPracownicy = '<button class="btn btn-default" title="'+groupPracownicyData['nazwa']+'" data-group-filter="'+groupPracownicyData['id']+'">'+groupPracownicyData['nazwa']+'</button>';
  545. $('#group-pracownicy').append(groupsPracownicy);
  546. });
  547. }
  548. function rootChangeForm() {
  549. //todo: do przeniesienia
  550. urlFetchKontrahenciPowiazania();
  551. var valueUrl = global.location.hash;
  552. console.log('URL', valueUrl);
  553. switch (valueUrl) {
  554. case '#KONTRAHENCI':
  555. $( ".container-bi_audit_form_kontrahenci_raport" ).html( VIEW_KONTRAHENCI );
  556. urlFetchKontrahenci(1);
  557. fetchGroupKontrahenci();
  558. $( ".container-bi_audit_form_pracownicy_raport" ).hide();
  559. $( ".container-bi_audit_form_kontrahenci_raport" ).show();
  560. break;
  561. case '#PRACOWNICY':
  562. $( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
  563. urlFetchPracownicy(1);
  564. fetchGroupPracownicy();
  565. $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  566. $( ".container-bi_audit_form_pracownicy_raport" ).show();
  567. break;
  568. // case '#REAPORT':
  569. // $( ".container-bi_audit_form_raport_data" ).html( VIEW_TREE_REAPORT );
  570. // urlFetchKontrahenciPowiazania();
  571. // $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  572. // $( ".container-bi_audit_form_pracownicy_raport" ).hide();
  573. // $( ".container-bi_audit_form_raport_data" ).show();
  574. // break;
  575. default:
  576. $( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
  577. urlFetchPracownicy(1);
  578. fetchGroupPracownicy();
  579. $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  580. $( ".container-bi_audit_form_pracownicy_raport" ).show();
  581. break;
  582. }
  583. //aktualizacja inputa głebokości powiazan
  584. loadCurrentDepthInInput('.smad-depth');
  585. updateLocalStorageBiAuditDepth('.smad-depth');
  586. }
  587. function getAddressData(objectValue) {
  588. var objectValue = objectValue || [];
  589. var listData = '';
  590. if (!objectValue) {
  591. return true;
  592. }
  593. objectValue.forEach (function(item) {
  594. if (item['kodPocztowy']) { listData += '<div>kod pocztowy: ' + item['kodPocztowy'] + '<div>'; }
  595. if (item['miejscowosc']) { listData += '<div>miejscowość: ' + item['miejscowosc'] + '<div>'; }
  596. if (item['nrBudynku']) { listData += '<div>nr budynku: ' + item['nrBudynku'] + '<div>'; }
  597. if (item['nrLokalu']) { listData += '<div>nr lokalu: ' + item['nrLokalu'] + '<div>'; }
  598. if (item['typAdresu']) { listData += '<div>typ adresu: ' + item['typAdresu'] + '<div>'; }
  599. if (item['ulica']) { listData += '<div>ulica: ' + item['ulica'] + '<div>'; }
  600. listData += '<div>------<div>';
  601. });
  602. return listData;
  603. }
  604. /**
  605. * Get name name group
  606. */
  607. function getNameGroupById(store, filterIdGroup) {
  608. var NAZWA = '';
  609. if (!store || filterIdGroup === 0 ) {
  610. NAZWA = 'Wszyscy';
  611. } else {
  612. $(store).each(function() {
  613. if ( parseInt(filterIdGroup) === parseInt(this.ID) ) {
  614. NAZWA = this.NAZWA;
  615. }
  616. });
  617. }
  618. return NAZWA;
  619. }
  620. function urlFetchKontrahenci(page) {
  621. var page = page || getItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page');
  622. selectPage('KONTRAHENCI', page);
  623. if ( page === 1) {
  624. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page', 1);
  625. }
  626. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  627. var frm = document.getElementById('filtersFieldRemoveBtn-KONTRAHENCI').form
  628. var fieldNameList = FIELD_LIST_KONTRAHENCI
  629. var filterFields = fieldNameList.map(function (fieldName) {
  630. return [ fieldName, frm[fieldName].value ]
  631. }).filter(function (filter) {
  632. return ( filter[1].length > 0 )
  633. }).map(function (filter) {
  634. return '' + filter[0] + '=' + filter[1]
  635. }).join('&')
  636. filterFields = (filterFields.length > 0) ? '&' + filterFields : ''
  637. fetch(URL_FETCH_KONTRAHENCI + '&page=' + page + '&filterIdGroup=' + filterIdGroup + filterFields, {
  638. credentials: 'same-origin'
  639. })
  640. .then(function parseJSON(response) {
  641. return response.json()
  642. var filterIdGroup = filterIdGroup || getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  643. })
  644. .then(function(data) {
  645. var listItemsKontrahenci = null;
  646. data.body.items.forEach (function(row) {
  647. listItemsKontrahenci += '<tr><td><input type="checkbox" name="kontrID[]" value="'+row['ID']+'" /></td>'+
  648. '<td align="right">'+row["ID"]+'</td>'+
  649. '<td align="right">'+row["Nazwa_grupy_kapitalowej"]+'</td>'+
  650. '<td align="right">'+row["Pelna_nazwa_kontrahenta"]+'</td>'+
  651. '<td align="right">'+row["Numer_kontrahenta"]+'</td>'+
  652. '<td align="right">'+row["Skrocona_Nazwa_Kontrahenta"]+'</td>'+
  653. '<td align="right">'+row["Typ_kontrahenta"]+'</td>'+
  654. '<td align="right">'+row["NIP"]+'</td>'+
  655. '<td align="right">'+row["KRS"]+'</td>'+
  656. '<td align="right">'+row["REGON"]+'</td>'+
  657. '<td align="right">'+row["PESEL"]+'</td>'+
  658. '<td align="right">'+row["Forma_prawna_dzialalnosci"]+'</td>'+
  659. '<td align="right">'+row["Ulica"]+'</td>'+
  660. '<td align="right">'+row["Numer_budynku"]+'</td>'+
  661. '<td align="right">'+row["Numer_mieszkania_lokalu"]+'</td>'+
  662. '<td align="right">'+row["Miejscowosc"]+'</td>'+
  663. '<td align="right">'+row["Kod_pocztowy"]+'</td>'+
  664. '<td align="right">'+row["Kraj"]+'</td>'+
  665. '<td align="right">'+row["Telefon"]+'</td>'+
  666. '<td align="right">'+row["Fax"]+'</td>'+
  667. '<td align="right">'+row["Mail"]+'</td>'+
  668. '<td align="right">'+row["A_ADM_COMPANY"]+'</td>'+
  669. '<td align="right">'+row["A_CLASSIFIED"]+'</td>'+
  670. '<td align="right">'+row["Dodano"]+'</td>'+
  671. '<td align="right">'+row["Podmiot_dominujacy"]+'</td>'+
  672. '<td align="right">'+row["Tytul_dokumentu"]+'</td>'+
  673. '<td align="right">'+row["ownCompany"]+'</td>'+
  674. '<td align="right">'+row["uwagi"]+'</td></tr>';
  675. });
  676. if (data.body.pagination !== undefined) {
  677. Pagination.Init(document.getElementById('pagination-kontrahenci'), {
  678. url: BASE_URLS+'index.php?_route=UrlAction_Bocian#KONTRAHENCI',
  679. id_pagination: 'pagination-kontrahenci',
  680. type: 'KONTRAHENCI',
  681. limit: data.body.pagination.limit,
  682. total_items: data.body.pagination.total_items, // pages size
  683. size: data.body.pagination.size, // pages size
  684. page: page, // selected page
  685. step: 1 // pages before and after current
  686. });
  687. var paginationShowNextCount = 1;
  688. if ( parseInt(data.body.pagination.current) !== 1) {
  689. paginationShowNextCount = parseInt(data.body.pagination.limit) * (parseInt(data.body.pagination.current) - 1 ) + 1;
  690. }
  691. $('#paginationShowNextCount-KONTRAHENCI').text(paginationShowNextCount);
  692. $('#smad-filter-desc-kontrahenci').text(data.body.pagination.total_items);
  693. if (data.body.pagination.total_items > 0) {
  694. var btnAddAll = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ WSZYSTKIE DO ANALIZY</button>')
  695. btnAddAll.on('click', { pagination: data.body.pagination }, function (event) {
  696. // event.data.pagination: { [ filter_idGroup: ... ] }
  697. // fetch ids from request, set to LocatStorage, update selected on gui
  698. var postData = {}
  699. if ('filter_idGroup' in event.data.pagination && event.data.pagination['filter_idGroup']) postData['filter_idGroup'] = event.data.pagination['filter_idGroup']
  700. Object.keys(event.data.pagination).filter(function (key) {
  701. return ('f_' === key.substr(0, 2))
  702. }).forEach(function (filterKey) {
  703. var value = event.data.pagination[filterKey]
  704. postData[filterKey] = value
  705. })
  706. var thisButton = $(this)
  707. thisButton.attr('disabled', true)
  708. thisButton.text( thisButton.text() + '...' )
  709. p5UI__notifyAjaxCallback({ type: 'info', msg: "Pobieranie kontrahentów..." })
  710. global.fetch(URL_FETCH_KONTRAHENCI_IDS_AJAX, {
  711. credentials: 'same-origin',
  712. method: 'POST',
  713. headers: {
  714. 'Content-Type': 'application/json'
  715. },
  716. body: JSON.stringify(postData)
  717. })
  718. .then(function __parseJSON(response) {
  719. return response.json()
  720. })
  721. .then(function (json) {
  722. if ('success' === json.type && json.body && json.body.ids) {
  723. updateListIdBiAuditReaport('KONTRAHENCI', json.body.ids.map(function (id) {
  724. return parseInt(id)
  725. }))
  726. jQuery('#body-kontrahenci').find('input[name="kontrID[]"]').attr('checked', true)
  727. thisButton.attr('disabled', false)
  728. var txt = thisButton.text()
  729. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  730. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+json.body.ids.length+" kontrahentów" })
  731. }
  732. })
  733. .catch(function (e) {
  734. p5UI__notifyAjaxCallback({ type: 'error', msg: '' + e })
  735. thisButton.attr('disabled', false)
  736. var txt = thisButton.text()
  737. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  738. })
  739. })
  740. $('#smad-filter-desc-kontrahenci').append(btnAddAll);
  741. }
  742. }
  743. var groupSelectData = getNameGroupById(getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups'), filterIdGroup);
  744. $('#smad-filter-head-title-kontrahenci').text(groupSelectData);
  745. console.log('kontrahenci groupSelectData: ', groupSelectData);
  746. $( "#body-kontrahenci" ).html(listItemsKontrahenci);
  747. checkAll('KONTRAHENCI');
  748. catchEventCheckbox('KONTRAHENCI');
  749. checkedChoiseItems('KONTRAHENCI', getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds') );
  750. // $( ".container-bi_audit_raport" ).append( data.body.view );
  751. console.log('request succeeded with JSON responseKontrahenci', data)
  752. updateTopCounters();
  753. }).catch(function(error) {
  754. console.log('request failed', error)
  755. })
  756. }
  757. function urlFetchPracownicy(page) {
  758. var page = page || getItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page');
  759. if ( page === 1) {
  760. setItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page', 1);
  761. }
  762. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  763. selectPage('PRACOWNICY', page);
  764. var frm = document.getElementById('filtersFieldRemoveBtn-PRACOWNICY').form
  765. var fieldNameList = FIELD_LIST_PRACOWNICY
  766. var filterFields = fieldNameList.map(function (fieldName) {
  767. return [ fieldName, frm[fieldName].value ]
  768. }).filter(function (filter) {
  769. return ( filter[1].length > 0 )
  770. }).map(function (filter) {
  771. return '' + filter[0] + '=' + filter[1]
  772. }).join('&')
  773. filterFields = (filterFields.length > 0) ? '&' + filterFields : ''
  774. fetch(URL_FETCH_PRACOWNICY + '&page=' + page + '&filterIdGroup=' + filterIdGroup + filterFields, {
  775. credentials: 'same-origin'
  776. })
  777. .then(function parseJSON(response) {
  778. return response.json()
  779. })
  780. .then(function(data) {
  781. var addresPerson = '';
  782. var listItemsPracownik = null;
  783. console.log('urlFetchPracownicy', data.body.items);
  784. data.body.items.forEach (function(row) {
  785. if (row["default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy"]) {
  786. addresPerson = getAddressData(row["default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy"]);
  787. }
  788. listItemsPracownik += '<tr><td><input type="checkbox" name="prID[]" value="'+row['ID']+'" /></td>'+
  789. '<td align="right">'+row["ID"]+'</td>'+
  790. '<td align="right">'+row["imiona"]+'</td>'+
  791. '<td align="right">'+row["nazwisko"]+'</td>'+
  792. '<td align="right">'+row["nip"]+'</td>'+
  793. '<td align="right">'+row["pesel"]+'</td>'+
  794. '<td align="right">'+row["regon"]+'</td>'+
  795. '<td align="right">'+row["source"]+'</td>'+
  796. '<td align="right">'+row["A_ADM_COMPANY"]+'</td>'+
  797. '<td align="right">'+row["A_CLASSIFIED"]+'</td>'+
  798. '<td align="right">'+row["A_STATUS"]+'</td>'+
  799. '<td align="right">'+row["A_STATUS_INFO"]+'</td>'+
  800. '<td align="right">'+row["L_APPOITMENT_USER"]+'</td>'+
  801. '<td align="right">'+ addresPerson +'</td></tr>';
  802. });
  803. if (data.body.pagination.size) {
  804. Pagination.Init(document.getElementById('pagination-pracownicy'), {
  805. url: BASE_URLS+'index.php?_route=UrlAction_Bocian#PRACOWNICY',
  806. id_pagination: 'pagination-pracownicy',
  807. type: 'PRACOWNICY',
  808. limit: data.body.pagination.limit,
  809. total_items: data.body.pagination.total_items, // pages size
  810. size: data.body.pagination.size, // pages size
  811. page: data.body.pagination.current, // selected page
  812. step: 1 // pages before and after current
  813. });
  814. var paginationShowNextCount = 1;
  815. if ( parseInt(data.body.pagination.current) !== 1) {
  816. paginationShowNextCount = parseInt(data.body.pagination.limit) * (parseInt(data.body.pagination.current) - 1 ) + 1;
  817. }
  818. $('#paginationShowNextCount-PRACOWNICY').text(paginationShowNextCount);
  819. $('#smad-filter-desc-pracownicy').text(data.body.pagination.total_items);
  820. if (data.body.pagination.total_items > 0) {
  821. var btnAddAll = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ WSZYSTKIE DO ANALIZY</button>')
  822. btnAddAll.on('click', { pagination: data.body.pagination }, function (event) {
  823. // event.data.pagination: { [ filter_idGroup: ... ] }
  824. // fetch ids from request, set to LocatStorage, redirect to '#KONTRAHENCI'
  825. var postData = {}
  826. if ('filter_idGroup' in event.data.pagination && event.data.pagination['filter_idGroup']) postData['filter_idGroup'] = event.data.pagination['filter_idGroup']
  827. Object.keys(event.data.pagination).filter(function (key) {
  828. return ('f_' === key.substr(0, 2))
  829. }).forEach(function (filterKey) {
  830. var value = event.data.pagination[filterKey]
  831. postData[filterKey] = value
  832. })
  833. var thisButton = $(this)
  834. thisButton.attr('disabled', true)
  835. thisButton.text( thisButton.text() + '...' )
  836. p5UI__notifyAjaxCallback({ type: 'info', msg: "Pobieranie pracowników..." })
  837. global.fetch(URL_FETCH_PRACOWNICY_IDS_AJAX, {
  838. credentials: 'same-origin',
  839. method: 'POST',
  840. headers: {
  841. 'Content-Type': 'application/json'
  842. },
  843. body: JSON.stringify(postData)
  844. })
  845. .then(function __parseJSON(response) {
  846. return response.json()
  847. })
  848. .then(function (json) {
  849. if ('success' === json.type && json.body && json.body.ids) {
  850. updateListIdBiAuditReaport('PRACOWNICY', json.body.ids.map(function (id) {
  851. return parseInt(id)
  852. }))
  853. thisButton.attr('disabled', false)
  854. var txt = thisButton.text()
  855. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  856. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+json.body.ids.length+" pracowników" })
  857. window.location.hash = 'KONTRAHENCI'
  858. }
  859. })
  860. .catch(function (e) {
  861. p5UI__notifyAjaxCallback({ type: 'error', msg: '' + e })
  862. thisButton.attr('disabled', false)
  863. var txt = thisButton.text()
  864. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  865. })
  866. })
  867. $('#smad-filter-desc-pracownicy').append(btnAddAll);
  868. }
  869. }
  870. // wyświetlenie wybranej grupy w naglówku nad tabela
  871. var groupSelectData = getNameGroupById(getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups'), filterIdGroup);
  872. $('#smad-filter-head-title-pracownicy').text(groupSelectData);
  873. // zaladaowanie listy pracowników
  874. $( "#body-pracownicy" ).html( listItemsPracownik);
  875. checkAll('PRACOWNICY');
  876. catchEventCheckbox('PRACOWNICY');
  877. checkedChoiseItems('PRACOWNICY', getItemLocalStorage('Bocian.biAuditForm.pracownicyIds') );
  878. updateTopCounters();
  879. }).catch(function(error) {
  880. console.log('request failed', error)
  881. })
  882. }
  883. function selectPage(type, nrPage) {
  884. var type = type.toLowerCase();
  885. $('#pagination-' + type + ' ul li a').each(function(index, value){
  886. if (this.text === nrPage) {
  887. $(this).addClass('active');
  888. } else {
  889. $(this).removeClass('active');
  890. }
  891. });
  892. }
  893. function checkAll(type) {
  894. $('#checkAll-' + type).change(function() {
  895. var valueCheckbox = null;
  896. var checkboxes = $('form').find(':checkbox');
  897. if($(this).prop('checked')) {
  898. checkboxes.prop('checked', true);
  899. //valueCheckbox = checkboxes.prop("checked");
  900. var allValsChecked = [];
  901. var checkedValues = $('#smad-table-' + type + ' input:checkbox:checked').map(function() {
  902. if (this.value !== 'on') {
  903. allValsChecked.push(parseInt(this.value));
  904. }
  905. }).get();
  906. updateListIdBiAuditReaport(type, allValsChecked);
  907. } else {
  908. checkboxes.prop('checked', false);
  909. var allValsUnChecked = [];
  910. var checkedValues = $('#smad-table-' + type + ' input:checkbox:not(:checked)').map(function() {
  911. if (this.value !== 'on') {
  912. allValsUnChecked.push(parseInt(this.value));
  913. }
  914. }).get();
  915. deleteListIdBiAuditReaport(type, allValsUnChecked);
  916. }
  917. // update count selected IDs
  918. updateCountItemCheckedByType(type.toLowerCase());
  919. });
  920. }
  921. /**
  922. * Select again checkbox before selected item chekbox from storage (pracownicy/kontrahenci)
  923. */
  924. function checkedChoiseItems(type, store) {
  925. updateCountItemCheckedByType(type.toLowerCase());
  926. var idElement = 'smad-table-' + type;
  927. // if id element exist
  928. if (document.getElementById(idElement)) {
  929. // if not checked
  930. if (!store) {
  931. return false;
  932. }
  933. // checked again if user selected Item (pracownicy/kontrahent)
  934. for (i = 0; i < store.length; i++) {
  935. $('#body-'+type.toLowerCase() +' input[type=checkbox] ').map(function(k, v) {
  936. if ( store[i] === parseInt(this.value) ){
  937. $(this).prop('checked', true);
  938. }
  939. }).get();
  940. }
  941. }
  942. $('#smad-table-' + type + ' input[type=checkbox]').on( 'load', function() {
  943. var itemsCHecked = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  944. getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  945. if (itemsCHecked.lenght === 0 ) {
  946. return;
  947. }
  948. var valueCheckbox = null;
  949. var checkboxes = $('form').find(':checkbox');
  950. if($(this).prop('checked')) {
  951. checkboxes.prop('checked', true);
  952. var allValsChecked = [];
  953. var checkedValues = $('#smad-table-' + type + ' input:checkbox:checked').map(function() {
  954. if (this.value !== 'on') {
  955. allValsChecked.push(parseInt(this.value));
  956. }
  957. }).get();
  958. updateListIdBiAuditReaport(type, allValsChecked);
  959. } else {
  960. checkboxes.prop('checked', false);
  961. var allValsUnChecked = [];
  962. var checkedValues = $('#smad-table-' + type + ' input:checkbox:not(:checked)').map(function() {
  963. if (this.value !== 'on') {
  964. allValsUnChecked.push(parseInt(this.value));
  965. }
  966. }).get();
  967. deleteListIdBiAuditReaport(type, allValsUnChecked);
  968. }
  969. });
  970. }
  971. function catchEventCheckbox(type) {
  972. $('#smad-table-' + type + ' input[type="checkbox"]').on('change', function() {
  973. if($(this).is(":checked")) {
  974. var allValsChecked = [];
  975. if (this.value !== 'on') {
  976. allValsChecked.push(parseInt(this.value));
  977. }
  978. updateListIdBiAuditReaport(type, allValsChecked);
  979. } else {
  980. var allValsUnChecke = [];
  981. if (this.value !== 'on') {
  982. allValsUnChecke.push(parseInt(this.value));
  983. }
  984. deleteListIdBiAuditReaport(type, allValsUnChecke);
  985. }
  986. // update count selected IDs
  987. updateCountItemCheckedByType(type.toLowerCase());
  988. });
  989. }
  990. function clearSelectedCheckbox() {
  991. $('#checkAll-PRACOWNICY').prop('checked', false)
  992. $('#checkAll-KONTRAHENCI').prop('checked', false)
  993. }
  994. function updateListIdBiAuditReaport(type, valueArray) {
  995. var currentStoragePracownicyIds = [];
  996. var updateListPracownicyIds = null;
  997. var currentStorageKontrahenciIds = [];
  998. var updateListKontrahenciIds = null;
  999. if ( type == 'PRACOWNICY') {
  1000. currentStoragePracownicyIds = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1001. if(currentStoragePracownicyIds !== null) {
  1002. updateListPracownicyIds = [...new Set([...currentStoragePracownicyIds ,...valueArray])];
  1003. }
  1004. else {
  1005. updateListPracownicyIds = valueArray;
  1006. }
  1007. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', updateListPracownicyIds);
  1008. }
  1009. if ( type == 'KONTRAHENCI') {
  1010. currentStorageKontrahenciIds = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1011. if(currentStorageKontrahenciIds !== null) {
  1012. updateListKontrahenciIds = [...new Set([...currentStorageKontrahenciIds ,...valueArray])];
  1013. }
  1014. else {
  1015. updateListKontrahenciIds = valueArray;
  1016. }
  1017. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', updateListKontrahenciIds);
  1018. }
  1019. }
  1020. function deleteListIdBiAuditReaport(type, valueArray) {
  1021. var currentStoragePracownicyIds = [];
  1022. var updateListPracownicyIds = null;
  1023. if ( type == 'PRACOWNICY') {
  1024. deleteItemLocalStorage('Bocian.biAuditForm.pracownicyIds', valueArray);
  1025. }
  1026. if ( type == 'KONTRAHENCI') {
  1027. deleteItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', valueArray);
  1028. }
  1029. }
  1030. // filter group detect
  1031. function fetchGroupPracownicy() {
  1032. fetch(URL_FETCH_GROUP_PRACOWNICY, {
  1033. credentials: 'same-origin'
  1034. })
  1035. .then(function parseJSON(response) {
  1036. return response.json()
  1037. })
  1038. .then(function(data) {
  1039. setItemLocalStorage('Bocian.biAuditForm.pracownicy.groups', data.body.itmesGroupPracownicy);
  1040. if (data.body.itmesGroupPracownicy === null) {
  1041. return;
  1042. }
  1043. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  1044. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1045. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', filterIdGroup);
  1046. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1047. var groupsPracownicy = '';
  1048. var activeButton = '';
  1049. data.body.itmesGroupPracownicy.forEach (function(row) {
  1050. if ( filterIdGroup === row['ID'] ) { activeButton = 'active'; $('#group-pracownicy button.active').removeClass('active'); }
  1051. groupsPracownicy += '<button class="btn btn-default '+activeButton+'" title="' + row['NAZWA'] + '" data-group-filter="' + row['ID'] + '">' + row['NAZWA'] + '</button>';
  1052. });
  1053. $("#group-pracownicy").append(groupsPracownicy);
  1054. updateCountItemCheckedByType('pracownicy');
  1055. // detect filter group
  1056. detectChoiseFilter();
  1057. }).catch(function(error) {
  1058. console.log('request failed', error)
  1059. });
  1060. }
  1061. function fetchGroupKontrahenci() {
  1062. fetch(URL_FETCH_GROUP_KONTRAHENCI, {
  1063. credentials: 'same-origin'
  1064. })
  1065. .then(function parseJSON(response) {
  1066. return response.json()
  1067. })
  1068. .then(function(data) {
  1069. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups', data.body.itemsGroupKontrahenci);
  1070. if (data.body.itemsGroupKontrahenci === null) {
  1071. return;
  1072. }
  1073. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  1074. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1075. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', filterIdGroup);
  1076. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1077. var groupsKontrahenci = '';
  1078. var activeButton = '';
  1079. data.body.itemsGroupKontrahenci.forEach (function(row) {
  1080. if ( filterIdGroup === row['ID'] ) { activeButton = 'active'; $('#group-kontrahenci button.active').removeClass('active'); }
  1081. groupsKontrahenci += '<button class="btn btn-default '+activeButton+'" title="'+row['NAZWA']+'" data-group-filter="'+row['ID']+'">'+row['NAZWA']+'</button>';
  1082. });
  1083. $("#group-kontrahenci").append(groupsKontrahenci);
  1084. updateCountItemCheckedByType('kontrahenci');
  1085. // detect filter group
  1086. detectChoiseFilter();
  1087. console.log('request succeeded with JSON fetchGroupKontrahenci', data.body.itemsGroupKontrahenci);
  1088. }).catch(function(error) {
  1089. console.log('request failed', error)
  1090. });
  1091. }
  1092. function detectChoiseFilter() {
  1093. $('#group-kontrahenci').on('click', 'button', function(evt) {
  1094. $('#group-kontrahenci button.active').removeClass('active');
  1095. $(this).addClass('active');
  1096. // pobranie id grupy kliknietego buttonu
  1097. var filterIdGroup = $(this).attr("data-group-filter");
  1098. // aktaulna wartość zagłebienia
  1099. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1100. //reset LocalStorage
  1101. // defaultBIAuditLocalStorage();
  1102. // ustawienie ostaniej wartości zagłebienia przed resete
  1103. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1104. // ustawić id grupy do sesyjnej
  1105. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', parseInt(filterIdGroup));
  1106. // wywylac funckje pobrania danych
  1107. urlFetchKontrahenci(1);
  1108. });
  1109. $('#group-pracownicy').on('click', 'button', function(evt) {
  1110. $('#group-pracownicy button.active').removeClass('active');
  1111. $(this).addClass('active');
  1112. // pobranie id grupy kliknietego buttonu
  1113. var filterIdGroup = $(this).attr("data-group-filter");
  1114. // aktaulna wartość zagłebienia
  1115. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1116. //reset LocalStorage
  1117. // defaultBIAuditLocalStorage();
  1118. // ustawienie ostaniej wartości zagłebienia przed resete
  1119. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1120. // ustawić id grupy do sesyjnej
  1121. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', parseInt(filterIdGroup));
  1122. // wywylac funckje pobrania danych
  1123. urlFetchPracownicy(1);
  1124. });
  1125. }
  1126. // Local storage
  1127. function setItemLocalStorage(key, array) {
  1128. localStorage.setItem(key, JSON.stringify(array));
  1129. }
  1130. function getItemLocalStorage(key) {
  1131. var retrievedData = localStorage.getItem(key);
  1132. var response = JSON.parse(retrievedData);
  1133. return response;
  1134. }
  1135. function deleteItemLocalStorage(key, itemsArray) {
  1136. var currentStorageArray = getItemLocalStorage(key);
  1137. var newStorageArray = removeItemArrayInArray(currentStorageArray, itemsArray);
  1138. setItemLocalStorage(key, newStorageArray);
  1139. }
  1140. /**
  1141. * arr - array
  1142. * item - search item
  1143. */
  1144. function removeItemInArray(arr, item) {
  1145. for(var i = arr.length; i--;) {
  1146. if(arr[i] === item) {
  1147. arr.splice(i, 1);
  1148. }
  1149. }
  1150. return arr;
  1151. }
  1152. /**
  1153. * arr - array
  1154. * item - array list items
  1155. */
  1156. function removeItemArrayInArray(arr, itemsArray) {
  1157. for(var i = arr.length; i--;) {
  1158. for(var j = itemsArray.length; j--;) {
  1159. if(arr[i] === itemsArray[j]) {
  1160. arr.splice(i, 1);
  1161. }
  1162. }
  1163. }
  1164. return arr;
  1165. }
  1166. /**
  1167. * Cleart list local storage by type
  1168. * typeNameLocalStorage - name (praconwicy/kontrahenci)
  1169. */
  1170. function clearListLocalStorageByType(typeNameLocalStorage) {
  1171. if (typeNameLocalStorage === 'pracownicy') {
  1172. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', []);
  1173. }
  1174. if (typeNameLocalStorage === 'kontrahenci') {
  1175. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', []);
  1176. }
  1177. // update count selected item
  1178. updateCountItemCheckedByType(typeNameLocalStorage);
  1179. // unchecked checkbox
  1180. $('#smad-table-'+typeNameLocalStorage.toUpperCase()+' form').find(':checkbox').prop('checked', false);
  1181. }
  1182. /**
  1183. * Update count selected pracowniyc/kontrahenci
  1184. */
  1185. function updateCountItemCheckedByType(typeNameLocalStorage) {
  1186. var countId = 0;
  1187. updateTopCounters();
  1188. if (typeNameLocalStorage === 'pracownicy') {
  1189. var countPracownicy = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1190. if (countPracownicy === null || countPracownicy === undefined) {
  1191. return countId;
  1192. }
  1193. countId = Object.keys(countPracownicy).length;
  1194. $('#count-selected-item-pracownicy').text(countId);
  1195. }
  1196. if (typeNameLocalStorage === 'kontrahenci') {
  1197. var countKontrahenci = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1198. if (countKontrahenci === null || countKontrahenci === undefined) {
  1199. return countId;
  1200. }
  1201. countId = Object.keys(countKontrahenci).length;
  1202. $('#count-selected-item-kontrahenci').text(countId);
  1203. }
  1204. return countId;
  1205. }
  1206. function updateTopCounters() {
  1207. var countPracownicy = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1208. var countKontrahenci = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1209. var totalPracownicy = (countPracownicy) ? Object.keys(countPracownicy).length : 0;
  1210. var totalKontrahenci = (countKontrahenci) ? Object.keys(countKontrahenci).length : 0;
  1211. console.warn({totalPracownicy: totalPracownicy, totalKontrahenci: totalKontrahenci})
  1212. $('.top--count-selected-item-pracownicy').text(totalPracownicy ? '('+totalPracownicy+')' : '');
  1213. $('.top--count-selected-item-kontrahenci').text(totalKontrahenci ? '('+totalKontrahenci+')' : '');
  1214. $('.top--count-selected-item-pracownicy').attr('title', totalPracownicy ? "Wybrano: " + totalPracownicy + " pracowników" : '');
  1215. $('.top--count-selected-item-kontrahenci').attr('title', totalKontrahenci ? "Wybrano: " + totalKontrahenci + " kontrahentów" : '');
  1216. }
  1217. // Pagination
  1218. var Pagination = {
  1219. code: '', // end show html paginations
  1220. clickPage: 1, // set default 1 page
  1221. // --------------------
  1222. // Utility
  1223. // --------------------
  1224. // initialize default data
  1225. Extend: function(data) {
  1226. data = data || {};
  1227. Pagination.url = data.url;
  1228. Pagination.id_pagination = data.id_pagination;
  1229. Pagination.type = data.type;
  1230. Pagination.limit = data.limit;
  1231. Pagination.total_items = data.total_items;
  1232. Pagination.size = data.size || 2;
  1233. Pagination.page = data.page || 1;
  1234. Pagination.step = data.step || 3;
  1235. },
  1236. // add pages by number (from [s] to [f])
  1237. Add: function(s, f) {
  1238. for (var i = s; i < f; i++) {
  1239. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">' + i + '</a></li>';
  1240. }
  1241. },
  1242. // add last page with separator
  1243. Last: function() {
  1244. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">>></a></li>';
  1245. },
  1246. // add first page with separator
  1247. First: function() {
  1248. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default"><<</a></li>';
  1249. },
  1250. // add last page with separator
  1251. Next: function() {
  1252. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">></a></li>';
  1253. },
  1254. // add first page with separator
  1255. Prev: function() {
  1256. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default"><</a></li>';
  1257. },
  1258. // --------------------
  1259. // Handlers
  1260. // --------------------
  1261. // change page
  1262. Click: function() {
  1263. clearSelectedCheckbox();
  1264. var selectPage = $("#pagination-"+Pagination.type.toLowerCase()+' .tblAjax__footer__toolbar__pagination').find('a.active').text();
  1265. Pagination.clickPage = +this.innerHTML || '';
  1266. if ( selectPage === NaN || selectPage > Pagination.size) { selectPage = 1; }
  1267. switch (this.innerHTML) {
  1268. case '&gt;&gt;': // last
  1269. Pagination.clickPage = Pagination.size;
  1270. break;
  1271. case '&lt;&lt;': // first
  1272. Pagination.clickPage = 1;
  1273. break;
  1274. case '&lt;': // prev
  1275. Pagination.clickPage = parseInt(selectPage) - 1;
  1276. if (Pagination.clickPage < 1) {
  1277. Pagination.clickPage = 1;
  1278. }
  1279. break;
  1280. case '&gt;': // next
  1281. Pagination.clickPage = parseInt(selectPage) + 1;
  1282. if (Pagination.clickPage > Pagination.size) {
  1283. Pagination.clickPage = Pagination.size;
  1284. }
  1285. break;
  1286. }
  1287. if ( Pagination.type === 'KONTRAHENCI' ) {
  1288. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page', Pagination.clickPage);
  1289. Pagination.page = urlFetchKontrahenci(Pagination.clickPage);
  1290. }
  1291. else if ( Pagination.type === 'PRACOWNICY' ){
  1292. setItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page', Pagination.clickPage);
  1293. Pagination.page = urlFetchPracownicy(Pagination.clickPage);
  1294. }
  1295. Pagination.Start();
  1296. },
  1297. // --------------------
  1298. // Script structure pagination
  1299. // --------------------
  1300. // binding pages
  1301. Bind: function() {
  1302. var a = Pagination.e.getElementsByTagName('a');
  1303. var currentPage = Pagination.clickPage || 1;
  1304. for (var i = 0; i < a.length; i++) {
  1305. if (+a[i].innerHTML === Pagination.page) a[i].className = 'btn btn-default active';
  1306. a[i].addEventListener('click', Pagination.Click, false);
  1307. }
  1308. },
  1309. // write pagination
  1310. Finish: function() {
  1311. Pagination.e.innerHTML = Pagination.code;
  1312. Pagination.code = '</ul></nav>';
  1313. Pagination.Bind();
  1314. },
  1315. // find pagination type
  1316. Start: function() {
  1317. Pagination.code = '';
  1318. if ( Pagination.type === 'KONTRAHENCI' ) {
  1319. Pagination.code = '<div class="foot-info tblAjax__footer__toolbar__info footer_pagination_menu_items"><p>Wiersze od <span id="paginationShowNextCount-KONTRAHENCI"></span> do ' + Pagination.total_items + ' z ' + Pagination.total_items + '</p></div>';
  1320. } else if ( Pagination.type === 'PRACOWNICY' ) {
  1321. Pagination.code = '<div class="foot-info tblAjax__footer__toolbar__info footer_pagination_menu_items"><p>Wiersze od <span id="paginationShowNextCount-PRACOWNICY"></span> do ' + Pagination.total_items + ' z ' + Pagination.total_items + '</p></div>';
  1322. }
  1323. Pagination.code += '<nav aria-label="Page navigation" class="footer_pagination_menu_items"><ul class="btn-group tblAjax__footer__toolbar__pagination smad-pagination">';
  1324. Pagination.First();
  1325. Pagination.Prev();
  1326. if ( Pagination.type === 'KONTRAHENCI' ) {
  1327. Pagination.page = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page') || 1;
  1328. }
  1329. else if ( Pagination.type === 'PRACOWNICY' ) {
  1330. Pagination.page = getItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page') || 1;
  1331. }
  1332. if ( Pagination.page > Pagination.size ) {
  1333. Pagination.page = 1;
  1334. }
  1335. if (Pagination.size < Pagination.step * 2 + 6) {
  1336. Pagination.Add(1, Pagination.size + 1);
  1337. }
  1338. else if (Pagination.page < Pagination.step * 2 + 1) {
  1339. Pagination.Add(1, Pagination.step * 2 + 4);
  1340. }
  1341. else if (Pagination.page > Pagination.size - Pagination.step * 2) {
  1342. Pagination.Add(Pagination.size - Pagination.step * 2 - 2, Pagination.size + 1);
  1343. }
  1344. else {
  1345. Pagination.Add(Pagination.page - Pagination.step, Pagination.page + Pagination.step + 1);
  1346. }
  1347. Pagination.Next();
  1348. Pagination.Last();
  1349. Pagination.Finish();
  1350. },
  1351. // --------------------
  1352. // Initialization
  1353. // --------------------
  1354. // binding buttons
  1355. Buttons: function(e) {
  1356. var nav = e.getElementsByTagName('a');
  1357. },
  1358. // create skeleton
  1359. Create: function(e) {
  1360. var html = [
  1361. '<div></div>' // pagination container
  1362. ];
  1363. e.innerHTML = html.join('');
  1364. Pagination.e = e.getElementsByTagName('div')[0];
  1365. Pagination.Buttons(e);
  1366. },
  1367. // init
  1368. Init: function(e, data) {
  1369. Pagination.Extend(data);
  1370. Pagination.Create(e);
  1371. Pagination.Start();
  1372. }
  1373. };
  1374. function todo__fetchRaport(id) {
  1375. p5WFS_GetFeature('default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', {
  1376. primaryKey: id,
  1377. resolve: 'all',
  1378. resolveDepth: 3,
  1379. }).then(function (features) {
  1380. console.log('features', features)
  1381. }).catch(function (e) {
  1382. console.warn(e)
  1383. p5UI__notifyAjaxCallback({ type: 'error', msg: e })
  1384. })
  1385. }
  1386. function removeFiltersPracownicy(event, btnNode) {
  1387. event.preventDefault()
  1388. var fieldNameList = FIELD_LIST_PRACOWNICY
  1389. fieldNameList.forEach(function (fieldName) {
  1390. btnNode.form[fieldName].value = ''
  1391. })
  1392. urlFetchPracownicy(1)
  1393. }
  1394. function removeFiltersKontrahenci(event, btnNode) {
  1395. event.preventDefault()
  1396. var fieldNameList = FIELD_LIST_KONTRAHENCI
  1397. fieldNameList.forEach(function (fieldName) {
  1398. btnNode.form[fieldName].value = ''
  1399. })
  1400. urlFetchKontrahenci(1)
  1401. }
  1402. function onChangeFiltersPracownicy(inputNode) {
  1403. urlFetchPracownicy(1)
  1404. }
  1405. function onChangeFiltersKontrahenci(inputNode) {
  1406. urlFetchKontrahenci(1)
  1407. }
  1408. $(document).ready(function(){
  1409. rootChangeForm();
  1410. detectChoiseFilter();
  1411. updateTopCounters();
  1412. });
  1413. global.removeFiltersPracownicy = removeFiltersPracownicy;
  1414. global.removeFiltersKontrahenci = removeFiltersKontrahenci;
  1415. global.onChangeFiltersPracownicy = onChangeFiltersPracownicy;
  1416. global.onChangeFiltersKontrahenci = onChangeFiltersKontrahenci;
  1417. global.checkAll = checkAll;
  1418. global.checkedChoiseItems = checkedChoiseItems;
  1419. global.catchEventCheckbox = catchEventCheckbox;
  1420. global.clearSelectedCheckbox = clearSelectedCheckbox;
  1421. global.getNameGroupById = getNameGroupById;
  1422. global.createGroupPracownicy = createGroupPracownicy;
  1423. global.createGroupKontrahenci = createGroupKontrahenci;
  1424. global.selectPage = selectPage;
  1425. global.detectChoiseFilter = detectChoiseFilter;
  1426. global.updateListIdBiAuditReaport = updateListIdBiAuditReaport;
  1427. global.deleteListIdBiAuditReaport = deleteListIdBiAuditReaport;
  1428. global.urlFetchPracownicy = urlFetchPracownicy;
  1429. global.generateBiAuditRaport = generateBiAuditRaport;
  1430. global.getAddressData = getAddressData;
  1431. global.Pagination = Pagination;
  1432. global.todo__fetchRaport = todo__fetchRaport;
  1433. global.initLocalStorage = initLocalStorage;
  1434. global.setItemLocalStorage = setItemLocalStorage;
  1435. global.getItemLocalStorage = getItemLocalStorage;
  1436. global.deleteItemLocalStorage = deleteItemLocalStorage;
  1437. global.defaultBIAuditLocalStorage = defaultBIAuditLocalStorage;
  1438. global.removeItemInArray = removeItemInArray;
  1439. global.removeItemArrayInArray = removeItemArrayInArray;
  1440. global.addPracownikToGroup = addPracownikToGroup;
  1441. global.addKontrahenciToGroup = addKontrahenciToGroup;
  1442. global.showViewUploadFile = showViewUploadFile;
  1443. global.parseCsvFile = parseCsvFile;
  1444. global.clearListLocalStorageByType = clearListLocalStorageByType;