Bocian.php.view.js 45 KB

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