Bocian.php.view.js 98 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970
  1. var DBG = DBG || 0;
  2. var DBG1 = true;
  3. var CURRENT_DATE = CURRENT_DATE || '';
  4. if (!STORE_NAME) throw "Store name not defined";
  5. if (!global[STORE_NAME]) throw "Store not defined";
  6. if (!URL_TABLE_POWIAZANIA) throw "Brak URL_TABLE_POWIAZANIA";
  7. if (!BASE_URLS) throw "Brak BASE_URLS"
  8. var RECORD_MORE_FUNCTIONS_OPENED_NODE = null;
  9. if (!FIELD_LIST_PRACOWNICY) throw "Brak FIELD_LIST_PRACOWNICY"
  10. if (!FIELD_LIST_KONTRAHENCI) throw "Brak FIELD_LIST_KONTRAHENCI"
  11. var createReactClass = global.p5VendorJs.createReactClass;
  12. var h = global.p5VendorJs.React.createElement;
  13. var ReactDOM = global.p5VendorJs.ReactDOM;
  14. var swal = window.swal;
  15. var globalRaportStore = global[STORE_NAME];
  16. var P5UI__BocianHeader = createReactClass({
  17. getStateFromStore: function () {
  18. var storeState = this.props.store.getState();
  19. return {
  20. totalOdPracownicy: storeState.totalOdPracownicy,
  21. totalOdPozostale: storeState.totalOdPozostale,
  22. totalDoKontrahenci: storeState.totalDoKontrahenci,
  23. totalDoPozostale: storeState.totalDoPozostale,
  24. depth: storeState.depth,
  25. onlyTargets: storeState.onlyTargets,
  26. title: storeState.title,
  27. };
  28. },
  29. getInitialState: function() {
  30. return this.getStateFromStore();
  31. },
  32. componentDidMount: function () {
  33. this.unsubscribe = this.props.store.subscribe(this.storeUpdated)
  34. },
  35. componentWillUnmount: function () {
  36. this.unsubscribe()
  37. },
  38. storeUpdated: function () {
  39. DBG && console.log('DBG::P5UI__BocianHeader::storeUpdated ', this.getStateFromStore());
  40. this.setState(this.getStateFromStore())
  41. },
  42. addOdPozostale: function (event) {
  43. // window['createPracownikAjax'](event)
  44. window['addPozostaleOdDo'](event)
  45. },
  46. addDoPozostale: function (event) {
  47. // window['createKontrahentAjax'](event)
  48. window['addPozostaleOdDo'](event)
  49. },
  50. clearPozostaleOd: function (event) {
  51. this.props.store.dispatch({ type: 'CLEAR_POZOSTALE_OD' })
  52. },
  53. clearPozostaleDo: function (event) {
  54. this.props.store.dispatch({ type: 'CLEAR_POZOSTALE_DO' })
  55. },
  56. handleChangeDepth: function (event) {
  57. var store = this.props.store;
  58. var depth = event.target.value;
  59. store.dispatch({ type: 'SET_DEPTH', depth: depth })
  60. },
  61. handleChangeSetOnlyTargetsYes: function () {
  62. this.props.store.dispatch({ type: 'SET_ONLY_TARGETS', onlyTargets: true })
  63. },
  64. handleChangeSetOnlyTargetsNo: function () {
  65. this.props.store.dispatch({ type: 'SET_ONLY_TARGETS', onlyTargets: false })
  66. },
  67. handleChangeTitle: function (event) {
  68. this.props.store.dispatch({ type: 'SET_TITLE', title: event.target.value })
  69. },
  70. handleRaportSubmitForm: function (event) {
  71. event.preventDefault();
  72. var self_store = this.props.store;
  73. var idsPracownicy = getListFromLocalStorage('Bocian.biAuditForm.pracownicyIds');
  74. var idsKontrahenci = getListFromLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  75. var pozostaleOd = getListFromLocalStorage(getSelectedListLocalStorageKey('OD'));
  76. var pozostaleDo = getListFromLocalStorage(getSelectedListLocalStorageKey('DO'));
  77. var allOdLength = idsPracownicy.length + pozostaleOd.length;
  78. var allDoLength = idsKontrahenci.length + pozostaleDo.length;
  79. var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  80. var smadReaportTitle = getItemLocalStorage('Bocian.biAuditForm.smadReaportTitle');
  81. var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
  82. if ( !smadReaportTitle ) {
  83. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie podano tytułu raportu' });
  84. return;
  85. }
  86. if ( !depthValue ) {
  87. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie podano wartości dla głębokości powiązań' });
  88. return;
  89. }
  90. if ( !analizaOnlyTargets ) {
  91. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie podano wartości czy zwracać wyniki tylko z obiektami docelowymi' });
  92. return;
  93. }
  94. if ( !allOdLength ) {
  95. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano pozycji OD do analizy (pracownicy lub pozostałe bazy)' });
  96. return;
  97. }
  98. if ( !allOdLength && !allDoLength ) {
  99. p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano pozycji do analizy' });
  100. return;
  101. }
  102. // TODO: analizaOnlyTargets = ( 'y' | 'n' ) - allDoLength should depend of analizaOnlyTargets?
  103. // if not choise 'pracownicy' or 'kontrahenci'
  104. if ( !allOdLength || !allDoLength ) {
  105. var messageConfirm = '';
  106. if ( !allDoLength ) {
  107. messageConfirm = 'Nie wybrano podmiotów/kontrahentów! Czas przygotowania raportu może wydłużyć się ze względu na sprawdzenie powiązania ze wszystkimi podmiotami/kontrahentami w systemie. Czy jesteś pewny? ';
  108. }
  109. // show confirm window with message
  110. if (!confirm(messageConfirm)) return;
  111. }
  112. window.fetch(URL_GENERATE_BI_AUDIT_RAPORT_AJAX, {
  113. method: 'POST',
  114. headers: { 'Content-Type': 'application/json' },
  115. credentials: 'same-origin',
  116. body: JSON.stringify({
  117. pracownicyIds: idsPracownicy,
  118. kontrahenciIds: idsKontrahenci,
  119. pozostaleOd: pozostaleOd,
  120. pozostaleDo: pozostaleDo,
  121. depthValue: depthValue,
  122. smadReaportTitle: smadReaportTitle,
  123. analizaOnlyTargets: analizaOnlyTargets
  124. })
  125. })
  126. .then(function(response) {
  127. return response.text();
  128. })
  129. .then(function(responseText) {
  130. try {
  131. return JSON.parse(responseText);
  132. } catch (e) {
  133. throw responseText;
  134. }
  135. })
  136. .then(function(result) {
  137. if (result.type == 'success') {
  138. p5UI__notifyAjaxCallback(result);
  139. self_store.dispatch({ type: 'CLEAR_ALL' })
  140. // defaultBIAuditLocalStorage();
  141. updateTopCounters();
  142. $('#smad-table-PRACOWNICY form').find(':checkbox').prop('checked', false);
  143. $('#smad-table-KONTRAHENCI form').find(':checkbox').prop('checked', false);
  144. $('#count-selected-item-kontrahenci').text('0');
  145. $('#count-selected-item-pracownicy').text('0');
  146. $('.bottom--message-warning-critical-search').text('');
  147. swal({
  148. title: result.msg,
  149. html: '<a href="' + URL_TABLE_POWIAZANIA + '" title="przejdź do raportów" >Przejdź do raportów</a>',
  150. allowOutsideClick: false, // TODO: btn Anuluj na dole?
  151. showCloseButton: true,
  152. confirmButtonText: 'OK',
  153. });
  154. window.setTimeout(function () {
  155. console.warn("URL_TABLE_POWIAZANIA:", URL_TABLE_POWIAZANIA);
  156. }, 100);
  157. window.setTimeout(function () {
  158. window.location.href = URL_TABLE_POWIAZANIA;
  159. }, 6000);
  160. resolve(result.msg);
  161. } else {
  162. if (result.type && result.msg) p5UI__notifyAjaxCallback(result);
  163. reject(result.msg);
  164. }
  165. })
  166. .catch(function(error) {
  167. if(DBG) console.log('request failed', error);
  168. });
  169. },
  170. renderClearPozostaleOdBtn: function () {
  171. return h('i', {
  172. title: "Wyczyść pozostałe",
  173. className: "glyphicon glyphicon-remove",
  174. style: { 'font-size': '14px', 'line-height': '21px', 'margin-left': '3px', 'vertical-align': 'middle', color: "#f00", opacity: "0.5", cursor: "pointer" },
  175. onClick: this.clearPozostaleOd, 'line-height': '20px'
  176. });
  177. },
  178. renderClearPozostaleDoBtn: function () {
  179. return h('i', {
  180. title: "Wyczyść pozostałe",
  181. className: "glyphicon glyphicon-remove",
  182. style: { 'font-size': '14px', 'line-height': '21px', 'margin-left': '3px', 'vertical-align': 'middle', color: "#f00", opacity: "0.5", cursor: "pointer" },
  183. onClick: this.clearPozostaleDo, 'line-height': '20px'
  184. });
  185. },
  186. renderSummaryList: function () {
  187. var totalOd = this.state.totalOdPracownicy + this.state.totalOdPozostale;
  188. var totalDo = this.state.totalDoKontrahenci + this.state.totalDoPozostale;
  189. return h('ul', {}, [
  190. h('li', { style: { marginTop: "6px" } }, [
  191. h('span', {
  192. style: totalOd > 0 ? { color: "#d7142d" } : {}
  193. }, [
  194. " OD ",
  195. h('span', { className: "badge", style: totalOd > 0 ? { 'background-color': "#d7142d" } : {} }, totalOd),
  196. " : ",
  197. ]),
  198. h('a', { className: "btn btn-link", style: { padding: "6px" }, href: "#PRACOWNICY" }, [ // .bi-btn-primary
  199. " pracownicy ",
  200. h('span', { className: "badge" }, this.state.totalOdPracownicy),
  201. ]),
  202. h('i', { className: "glyphicon glyphicon-plus", style: { 'font-size': "14px", margin: "0 12px" } }),
  203. h('button', { className: "btn btn-link", style: { padding: "6px" }, onClick: this.addOdPozostale }, [ // .bi-btn-primary
  204. " pozostałe ",
  205. h('span', { className: "badge" }, this.state.totalOdPozostale),
  206. ]),
  207. (this.state.totalOdPozostale > 0) ? this.renderClearPozostaleOdBtn() : null,
  208. ]),
  209. h('li', { style: { marginTop: "6px" } }, [
  210. h('span', {
  211. style: totalDo > 0 ? { color: "#d7142d" } : {}
  212. }, [
  213. " DO ",
  214. h('span', { className: "badge", style: totalDo > 0 ? { 'background-color': "#d7142d" } : {} }, totalDo),
  215. " : ",
  216. ]),
  217. h('a', { className: "btn btn-link", style: { padding: "6px" }, href: "#KONTRAHENCI" }, [ // .bi-btn-primary
  218. " kontrahenci ",
  219. h('span', { className: "badge" }, this.state.totalDoKontrahenci),
  220. ]),
  221. h('i', { className: "glyphicon glyphicon-plus", style: { 'font-size': "14px", margin: "0 12px" } }),
  222. h('button', { className: "btn btn-link", style: { padding: "6px" }, onClick: this.addOdPozostale }, [ // .bi-btn-primary
  223. " pozostałe ",
  224. h('span', { className: "badge" }, this.state.totalDoPozostale),
  225. ]),
  226. (this.state.totalDoPozostale > 0) ? this.renderClearPozostaleDoBtn() : null,
  227. ]),
  228. ]);
  229. },
  230. renderRaportParamsForm: function () {
  231. var depth = parseInt(this.state.depth);
  232. var isDepthValid = ( !isNaN(depth) && depth >= 1 && depth <= 16 );
  233. var onlyTargets = this.state.onlyTargets;
  234. return h('div', {}, [
  235. h('div', { className: "row" + ( isDepthValid ? "" : " has-error" ), style: { 'margin-bottom': "12px" } }, [
  236. h('div', { className: "form-item col-md-7 col-lg-9 smad-heder-title", style: { 'font-size': "14px", 'text-align': "right", 'padding-top': "5px", 'padding-bottom': "0" } }, [
  237. "głębokość powiązań: ",
  238. ]),
  239. h('div', { className: "form-item col-md-5 col-lg-3" }, [
  240. h('input', { type: "number", className: "form-control", placeholder: "1-16", value: this.state.depth, onChange: this.handleChangeDepth, min: 1, max: 16 }),
  241. ]),
  242. ]),
  243. h('div', { className: "row", style: { 'margin-bottom': "12px" } }, [
  244. h('div', { className: "form-item col-md-7 col-lg-9 smad-heder-title", style: { 'font-size': "14px", 'text-align': "right", 'padding-top': "5px", 'padding-bottom': "0" } }, [
  245. "Czy zwracać wyniki tylko ze znalezionymi obiektami docelowymi (DO)? ",
  246. ]),
  247. h('div', { className: "form-item col-md-5 col-lg-3" }, [
  248. h('div', { className: "btn-group" }, [
  249. h('div', { className: "btn btn-default" + ( onlyTargets ? " active" : "" ), style: { padding: "6px 12px" }, onClick: this.handleChangeSetOnlyTargetsYes }, "TAK"),
  250. h('div', { className: "btn btn-default" + ( onlyTargets ? "" : " active" ), style: { padding: "6px 12px" }, onClick: this.handleChangeSetOnlyTargetsNo }, "NIE"),
  251. ]),
  252. ]),
  253. ]),
  254. h('div', { className: "row", style: { 'margin-bottom': "12px" } }, [
  255. h('div', { className: "form-item col-md-3 col-lg-3", style: { 'font-size': "14px", 'text-align': "right", 'padding-top': "5px", 'padding-bottom': "0" } }, [
  256. "Tytuł:",
  257. ]),
  258. h('div', { className: "form-item col-md-9 col-lg-9" }, [
  259. h('input', { type: "text", className: "form-control", placeholder: 'Raport bez tytułu z dnia ' + CURRENT_DATE, value: this.state.title, onChange: this.handleChangeTitle }),
  260. ]),
  261. ]),
  262. ]);
  263. },
  264. renderRaportFormSubmitBtn: function () {
  265. var totalOd = this.state.totalOdPracownicy + this.state.totalOdPozostale;
  266. var totalDo = this.state.totalDoKontrahenci + this.state.totalDoPozostale;
  267. var isFormValid = (totalOd || totalDo);
  268. return h('div', { className: "row", style: { padding: "0", 'margin-bottom': "0", 'text-align': "right" } }, [
  269. h('div', { className: "form-item col-md-12 col-lg-12" }, [
  270. h('button', {
  271. type: "button",
  272. className: "btn btn-default" + ( isFormValid ? "" : " disabled" ),
  273. onClick: this.handleRaportSubmitForm,
  274. style: { padding: "18px 42px", 'font-size': "18px", 'font-weight': "900" }
  275. }, "GENERUJ RAPORT POWIĄZAŃ"),
  276. ]),
  277. ]);
  278. },
  279. render: function () {
  280. DBG && console.log('DBG::P5UI__BocianHeader::render ', { state: this.state });
  281. var totalOd = this.state.totalOdPracownicy + this.state.totalOdPozostale;
  282. var totalDo = this.state.totalDoKontrahenci + this.state.totalDoPozostale;
  283. var depth = this.state.depth;
  284. var errorMsg = (depth > 16) ? "Maksymalna głębokość powiązań to 16!" : "";
  285. var warningMsg = ( ( !totalOd || !totalDo ) && depth > 6 ) ? "Krytyczne wielkości danych do przeszukania. Optymalna głębokość szukania powiaząń to: 6" : "";
  286. return h('div', { className: "container-fluid", style: { backgroundColor: "#efefef" } }, [
  287. h('div', { style: { fontSize: '16px', fontWeight: "normal", color: "#777" } }, [
  288. h('div', { className: "row" }, [
  289. h('div', { className: "col-md-6" }, [
  290. h('h3', { style: { color: "#000" } }, [
  291. h('span', { style: { fontSize: "120%", color: "#d7142d" } }, "|"),
  292. " Tworzenie nowego raportu ",
  293. h('br'),
  294. h('small', {}, [
  295. "(Wybierz elementy do porównania: ",
  296. h('span', { style: { color: "#d7142d" } }, " OD "),
  297. h('i', { className: "glyphicon glyphicon-random", style: { padding: '0 3px', 'font-size': "80%", color: "#000" } }),
  298. h('span', { style: { color: "#d7142d" } }, " DO"),
  299. ")",
  300. ])
  301. ]),
  302. "Wybrano:",
  303. this.renderSummaryList(),
  304. ]),
  305. h('div', { className: "col-md-6", style: { 'padding-top': "20px", 'padding-bottom': "20px" } }, [
  306. this.renderRaportParamsForm(),
  307. this.renderRaportFormSubmitBtn(),
  308. ]),
  309. ]),
  310. h('div', { className: "row" }, [
  311. h('div', { className: "col-md-8 col-md-offset-2 col-xs-12" }, [
  312. errorMsg ? h('div', { className: "alert alert-danger" }, errorMsg) : null,
  313. warningMsg ? h('div', { className: "alert alert-warning" }, warningMsg) : null,
  314. ]),
  315. ]),
  316. ])
  317. ])
  318. }
  319. })
  320. function getSelectedListLocalStorageKey(from) { // from: ( OD | DO )
  321. switch (from) {
  322. case 'OD': return 'Bocian.biAuditForm.odFeatureKeys';
  323. case 'DO': return 'Bocian.biAuditForm.doFeatureKeys';
  324. default: throw "Not implemented from selected list '" + from + "' - expected 'OD' or 'DO'";
  325. }
  326. }
  327. function getListFromLocalStorage(key) {
  328. return JSON.parse( localStorage.getItem(key) || '[]' );
  329. }
  330. function getSignedIntFromLocalStorage(key, defaultValue) {
  331. return JSON.parse( localStorage.getItem(key) || defaultValue );
  332. }
  333. function getStringFromLocalStorage(key, defaultValue) {
  334. var value = localStorage.getItem(key);
  335. value = (value) ? JSON.parse(value) : '';
  336. return (value) ? value : defaultValue;
  337. }
  338. // function saveToSelectedListInLocalStorage(from, featureKey) {
  339. // DBG && console.log("DBG::saveToSelectedListInLocalStorage(from, featureKey)", {from, featureKey}, {added: getSelectedListFromLocalStorage(from).concat(featureKey)});
  340. // localStorage.setItem(getSelectedListLocalStorageKey(from), JSON.stringify(
  341. // getSelectedListFromLocalStorage(from).concat(featureKey)
  342. // ))
  343. // }
  344. // function removeFromSelectedListInLocalStorage(from, featureKey) {
  345. // DBG && console.log("DBG::removeFromSelectedListInLocalStorage(from, featureKey)", {from, featureKey});
  346. // localStorage.setItem(getSelectedListLocalStorageKey(from), JSON.stringify(
  347. // getSelectedListFromLocalStorage(from).filter(function (item) {
  348. // return ( item !== featureKey );
  349. // })
  350. // ))
  351. // }
  352. /* DATA FOR READ REAPORT */
  353. function urlFetchKontrahenciPowiazania() {
  354. // Documentation: https://github.com/github/fetch
  355. fetch(URL_FETCH_KONTRAHENCI_POWIAZANIA, {
  356. credentials: 'same-origin'
  357. })
  358. .then(function parseJSON(response) {
  359. return response.json()
  360. })
  361. .then(function(data) {
  362. var reaportItemsKontrahenciPowiazani = null;
  363. data.body.items.forEach (function(row) {
  364. reaportItemsKontrahenciPowiazani += '<tr><td><input type="checkbox" name="kontrID[]" value="'+row['ID']+'" /></td>'+
  365. '<td align="right">'+row["ID"]+'</td>';
  366. });
  367. $( "#body-reaport-kontrahenci-powiazani-tree" ).html(reaportItemsKontrahenciPowiazani);
  368. }).catch(function(error) {
  369. if(DBG) console.log('request failed', error)
  370. });
  371. }
  372. /* FORM DATA FOR GENERATAE REAPORT */
  373. /**
  374. * Załadowanie wybranej pozycji w select czy zwracać wyniki tylko z obiektami docelowymi onlyTarget
  375. */
  376. function loadCurrentOnlyTargetsSelect() {
  377. var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
  378. $('#smad-select-target').val(analizaOnlyTargets).attr("selected", "selected");
  379. $('#smad-select-target-kontrahenci').val(analizaOnlyTargets).attr("selected", "selected");
  380. }
  381. /**
  382. * Załadowanie do storage informacji czy zwracać wyniki tylko z obiektami docelowymi
  383. */
  384. function updateLocalStorageBiAuditOnlyTargets(idSelect) {
  385. $(idSelect).change(function() {
  386. var newValue = $(idSelect).val();
  387. var responseValue = newValue;
  388. setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', responseValue);
  389. $('#smad-select-target').val(newValue).attr("selected", "selected");
  390. $('#smad-select-target-kontrahenci').val(newValue).attr("selected", "selected");
  391. // load in select selected option
  392. loadCurrentOnlyTargetsSelect();
  393. });
  394. }
  395. /**
  396. * Funkcja pozwala na wyświetlenie okienka importu
  397. */
  398. function showViewUploadFile( event, headerTitle, enumType, showCheckbox, csvFileExample ) {
  399. event.preventDefault();
  400. var enumType = enumType;
  401. if( csvFileExample !== undefined) { // przykład + instrukcja do pobrania
  402. csvFileExample = '<div><a href="'+csvFileExample+'" title="Pobierz przykład" download target="_balnk">Pobierz przykład</a></div>';
  403. }
  404. swal({
  405. title: 'Importuj plik csv',
  406. input: 'file',
  407. html: csvFileExample,
  408. inputAttributes: {
  409. 'accept': 'text/csv',
  410. 'aria-label': 'Upload csv file'
  411. },
  412. confirmButtonText: 'Importuj',
  413. preConfirm: function (file) {
  414. return new Promise(function (resolve, reject) {
  415. if (!file) {
  416. reject("Proszę wybrać plik csv");
  417. return
  418. }
  419. var input = document.querySelector('input[type="file"]');
  420. var data = new FormData()
  421. data.append('file', input.files[0])
  422. data.append('showCheckbox', showCheckbox);
  423. var responseParseFile = parseCsvFile( data, enumType );
  424. resolve('file imported')
  425. })
  426. },
  427. }).then(function (result) {
  428. if(DBG) console.log('result', result);
  429. }).catch(function (e) {
  430. if(DBG) console.log('catch: ', e);
  431. });
  432. }
  433. /**
  434. * Funkcja przekazuje dane z pliku csv do przeparsowania
  435. */
  436. function parseCsvFile( fileData, enumType ) {
  437. event.preventDefault();
  438. if(DBG) console.log( 'parseCsvFile fileData', fileData);
  439. fetch(URL_FORM_DATA_CSV_FILE_AJAX, {
  440. method: 'POST',
  441. credentials: 'same-origin',
  442. body: fileData
  443. })
  444. .then(function(response) {
  445. return response.json()
  446. }).then(function(json) {
  447. swal({
  448. title: 'Dane załadowane z pliku CSV',
  449. html: json.body.view,
  450. width: Math.round(window.innerWidth * 0.9),
  451. allowOutsideClick: false, // TODO: btn Anuluj na dole?
  452. showCloseButton: true,
  453. confirmButtonText: 'Zapisz',
  454. preConfirm: function (dataForm) {
  455. return new Promise(function (resolve, reject) {
  456. if (!dataForm) {
  457. reject("Formularz nie zawiera danych do zapisania");
  458. return
  459. }
  460. // zapisanie danych
  461. var responseSaveData = saveFormCsvFileAjaxAction(enumType);
  462. resolve('data save from form')
  463. })
  464. },
  465. }).then(function (result) {
  466. if(DBG) console.log('result', result)
  467. }).catch(function (e) {
  468. if(DBG) console.log('catch: ', e)
  469. });
  470. }).catch(function(ex) {
  471. if(DBG) console.log('parsing failed', ex);
  472. });
  473. }
  474. /**
  475. * Funkcja zapisuje dane z formularza do wgrania pliku csv
  476. */
  477. function saveFormCsvFileAjaxAction(enumType) {
  478. event.preventDefault();
  479. var formDataFrom = $("#formDataFromCsv").serialize();
  480. formDataFrom = formDataFrom.replace(/%5B/g,"[");
  481. formDataFrom = formDataFrom.replace(/%5D/g,"]");
  482. fetch(URL_SAVE_FORM_CSV_FILE_AJAX, {
  483. method: 'POST',
  484. credentials: 'same-origin',
  485. headers: {
  486. 'Content-Type': 'application/json'
  487. },
  488. body: JSON.stringify({
  489. formData: formDataFrom,
  490. enumType: enumType
  491. })
  492. })
  493. .then(function(response) {
  494. return response.json()
  495. }).then(function(json) {
  496. if(DBG) console.log('parsed json', json);
  497. if (response.type == 'success') {
  498. p5UI__notifyAjaxCallback(response.msg);
  499. }
  500. // return json;
  501. }).catch(function(ex) {
  502. if(DBG) console.log('parsing failed', ex);
  503. });
  504. }
  505. /**
  506. * Dodaj nowego pracownika
  507. */
  508. function createPracownikAjax(event) {
  509. event.preventDefault();
  510. swal({
  511. title: 'Dodaj osobę',
  512. showCancelButton: true,
  513. confirmButtonText: 'Zapisz',
  514. showLoaderOnConfirm: true,
  515. html:
  516. '<div class="form-group">'+
  517. '<input class="form-control required" id="personName" placeholder="Imię" >' +
  518. '<input class="form-control required" id="personSurname" placeholder="Nazwisko">'+
  519. '<input class="form-control required" id="personNip" placeholder="NIP">'+
  520. '<input class="form-control required" id="personPesel" placeholder="PESEL">'+
  521. '<input class="form-control required" id="personRegon" placeholder="REGON">'+
  522. '</div>',
  523. preConfirm: () => {
  524. return new Promise(function (resolve, reject) {
  525. // data from form
  526. var personName = $('#personName').val();
  527. var personSurname = $('#personSurname').val();
  528. var personNip = $('#personNip').val();
  529. var personPesel = $('#personPesel').val();
  530. var personRegon = $('#personRegon').val();
  531. //validate data from input
  532. if (!personName){
  533. reject('Proszę podać imię')
  534. return;
  535. }
  536. if (!personSurname){
  537. reject('Proszę podać nazwisko')
  538. return;
  539. }
  540. window.fetch(URL_CREATE_PRACOWNICY, {
  541. method: 'POST',
  542. header: {
  543. 'contentType': 'applications/json'
  544. },
  545. credentials: 'same-origin',
  546. body: JSON.stringify({
  547. 'personName': personName,
  548. 'personSurname': personSurname,
  549. 'personNip': personNip,
  550. 'personPesel': personPesel,
  551. 'personRegon': personRegon
  552. })
  553. })
  554. .then(function(response) {
  555. return response.text();
  556. })
  557. .then(function(responseText) {
  558. try {
  559. return JSON.parse(responseText);
  560. } catch (e) {
  561. throw responseText;
  562. }
  563. })
  564. .then(function(result) {
  565. if (result.type == 'success') {
  566. p5UI__notifyAjaxCallback(result);
  567. resolve(result.body);
  568. urlFetchPracownicy(1);
  569. }
  570. })
  571. .catch(function(error) {
  572. if(DBG) console.log('request failed', error);
  573. })
  574. })
  575. },
  576. allowOutsideClick: false
  577. }).then(function (createPerson) {
  578. if(DBG) console.log('dodanie osoby: ', createPerson);
  579. });
  580. }
  581. /**
  582. * Dodaj nowego kontrahenta
  583. */
  584. function createKontrahentAjax(event) {
  585. event.preventDefault();
  586. swal({
  587. title: 'Dodaj podmiot/kontrahenta',
  588. showCancelButton: true,
  589. confirmButtonText: 'Zapisz',
  590. showLoaderOnConfirm: true,
  591. html:
  592. '<div class="form-group">'+
  593. '<input class="form-control required" id="companyFullName" placeholder="Pelna nazwa" >' +
  594. '<input class="form-control required" id="companyShortName" placeholder="Skrócona nazwa\">'+
  595. '<input class="form-control required" id="companyNameGroup" placeholder="Nazwa grupy kapitałowej">'+
  596. '<input class="form-control required" id="companyKrs" placeholder="KRS">'+
  597. '<input class="form-control required" id="companyNip" placeholder="NIP">'+
  598. '<input class="form-control required" id="companyPesel" placeholder="PESEL">'+
  599. '<input class="form-control required" id="companyFax" placeholder="FAX">'+
  600. '<input class="form-control required" id="companyTelefon" placeholder="Telefon">'+
  601. '<input class="form-control required" id="companyMail" placeholder="Mail">'+
  602. '<input class="form-control required" id="companyStreet" placeholder="Ulica">'+
  603. '<input class="form-control required" id="companyNumberBuilding" placeholder="Numer budynku">'+
  604. '<input class="form-control required" id="companyNumberLocal" placeholder="Numer mieszkania /lokalu">'+
  605. '<input class="form-control required" id="companyPostCode" placeholder="Kod pocztowy">'+
  606. '<input class="form-control required" id="companyPlace" placeholder="Miejscowosc">'+
  607. '<input class="form-control required" id="companyCountry" placeholder="Kraj">'+
  608. '<input class="form-control required" id="companyTypeCompany" placeholder="Typ kontrahenta">'+
  609. '<input class="form-control required" id="companyTitleDocument" placeholder="Tytul dokumentu">'+
  610. '<input class="form-control required" id="companyDesc" placeholder="uwagi">'+
  611. '</div>',
  612. preConfirm: () => {
  613. return new Promise(function (resolve, reject) {
  614. // data from form
  615. var companyFullName = $('#companyFullName').val();
  616. var companyShortName = $('#companyShortName').val();
  617. var companyNameGroup = $('#companyNameGroup').val();
  618. var companyKrs = $('#companyKrs').val();
  619. var companyNip = $('#companyNip').val();
  620. var companyPesel = $('#companyPesel').val();
  621. var companyFax = $('#companyFax').val();
  622. var companyTelefon = $('#companyTelefon').val();
  623. var companyMail = $('#companyMail').val();
  624. var companyStreet = $('#companyStreet').val();
  625. var companyNumberBuilding = $('#companyNumberBuilding').val();
  626. var companyNumberLocal = $('#companyNumberLocal').val();
  627. var companyPostCode = $('#companyPostCode').val();
  628. var companyPlace = $('#companyPlace').val();
  629. var companyCountry = $('#companyCountry').val();
  630. var companyTypeCompany = $('#companyTypeCompany').val();
  631. var companyTitleDocument = $('#companyTitleDocument').val();
  632. var companyDesc = $('#companyDesc').val();
  633. //validate data from input
  634. if (!companyFullName){
  635. reject('Proszę podać pełną nazwę');
  636. return;
  637. }
  638. window.fetch(URL_CREATE_KONTRAHENCI, {
  639. method: 'POST',
  640. header: {
  641. 'contentType': 'applications/json'
  642. },
  643. credentials: 'same-origin',
  644. body: JSON.stringify({
  645. 'companyFullName': companyFullName,
  646. 'companyShortName': companyShortName,
  647. 'companyNameGroup': companyNameGroup,
  648. 'companyKrs': companyKrs,
  649. 'companyNip': companyNip,
  650. 'companyPesel': companyPesel,
  651. 'companyFax': companyFax,
  652. 'companyTelefon': companyTelefon,
  653. 'companyMail': companyMail,
  654. 'companyStreet': companyStreet,
  655. 'companyNumberBuilding': companyNumberBuilding,
  656. 'companyNumberLocal': companyNumberLocal,
  657. 'companyPostCode': companyPostCode,
  658. 'companyPlace': companyPlace,
  659. 'companyCountry': companyCountry,
  660. 'companyTypeCompany': companyTypeCompany,
  661. 'companyTitleDocument': companyTitleDocument,
  662. 'companyDesc': companyDesc
  663. })
  664. })
  665. .then(function(response) {
  666. return response.text();
  667. })
  668. .then(function(responseText) {
  669. try {
  670. return JSON.parse(responseText);
  671. } catch (e) {
  672. throw responseText;
  673. }
  674. })
  675. .then(function(result) {
  676. if (result.type == 'success') {
  677. p5UI__notifyAjaxCallback(result);
  678. resolve(result.body);
  679. urlFetchKontrahenci(1);
  680. }
  681. })
  682. .catch(function(error) {
  683. if(DBG) console.log('request failed', error);
  684. })
  685. })
  686. },
  687. allowOutsideClick: false
  688. }).then(function (createPerson) {
  689. if(DBG) console.log('dodanie podmiotu: ', createPerson);
  690. });
  691. }
  692. /**
  693. * Popup z opcja przeniesienia pracowników do innej grupy
  694. */
  695. function addPracownikToGroup(event) {
  696. event.preventDefault();
  697. var pracownicyIdsArray = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  698. if (pracownicyIdsArray === null || !pracownicyIdsArray || !pracownicyIdsArray.length) {
  699. showTextListIdPracownikow = 'nie wybrano osób';
  700. } else {
  701. showTextListIdPracownikow = '' + pracownicyIdsArray.length + ' osób';
  702. }
  703. var arrayGroupOptions = [];
  704. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups');
  705. // utworzenie tablicy Optionsów grupy
  706. listGroupStorage.map(function(item) {
  707. if (item.ID !== undefined) {
  708. arrayGroupOptions[item.ID] = item.NAZWA;
  709. }
  710. });
  711. swal({
  712. title: 'Dodaj do grupy',
  713. input: 'select',
  714. text: showTextListIdPracownikow,
  715. inputOptions: arrayGroupOptions,
  716. inputPlaceholder: 'Wybierz grupę',
  717. showCancelButton: true,
  718. confirmButtonText: 'Zapisz',
  719. showLoaderOnConfirm: true,
  720. preConfirm: function (idGroup) {
  721. return new Promise(function (resolve, reject) {
  722. if (!idGroup) {
  723. reject('Proszę wybrać nazwę grupy');
  724. return;
  725. }
  726. if (!pracownicyIdsArray || !pracownicyIdsArray.length) {
  727. reject('Wybierz pracowników');
  728. return;
  729. }
  730. window.fetch(URL_ADD_PRACOWNICY_TO_GROUP, {
  731. method: 'POST',
  732. header: { 'contentType': 'applications/json' },
  733. credentials: 'same-origin',
  734. body: JSON.stringify({
  735. 'idGroup': idGroup,
  736. 'pracownicyIds': getItemLocalStorage('Bocian.biAuditForm.pracownicyIds'),
  737. })
  738. })
  739. .then(function(response) {
  740. return response.text();
  741. })
  742. .then(function(responseText) {
  743. try {
  744. return JSON.parse(responseText);
  745. } catch (e) {
  746. throw responseText;
  747. }
  748. })
  749. .then(function(result) {
  750. if (result.type == 'success') {
  751. p5UI__notifyAjaxCallback(result);
  752. resolve(result.msg);
  753. } else {
  754. reject(result.msg);
  755. }
  756. })
  757. .catch(function(error) {
  758. if(DBG) console.warn('request failed', error);
  759. });
  760. })
  761. },
  762. allowOutsideClick: false
  763. }).then(function (value) {
  764. { // remove from selected
  765. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', []);
  766. updateCountItemCheckedByType('pracownicy');
  767. $('form').find(':checkbox').prop('checked', false);
  768. }
  769. });
  770. }
  771. function addPracownikAllToGroup(event) {
  772. event.preventDefault();
  773. var showTextListIdPracownikow = 'wszystkich pracowników pasujących do kryteriów wyszukiwania';
  774. var arrayGroupOptions = [];
  775. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups');
  776. // utworzenie tablicy Optionsów grupy
  777. listGroupStorage.map(function(item) {
  778. if (item.ID !== undefined) {
  779. arrayGroupOptions[item.ID] = item.NAZWA;
  780. }
  781. });
  782. swal({
  783. title: 'Dodaj do grupy',
  784. input: 'select',
  785. text: showTextListIdPracownikow,
  786. inputOptions: arrayGroupOptions,
  787. inputPlaceholder: 'Wybierz grupę',
  788. showCancelButton: true,
  789. confirmButtonText: 'Zapisz',
  790. showLoaderOnConfirm: true,
  791. preConfirm: function (idGroup) {
  792. return new Promise(function (resolve, reject) {
  793. if (!idGroup) {
  794. reject('Proszę wybrać nazwę grupy');
  795. return;
  796. }
  797. var filterFields = {}
  798. var frm = document.getElementById('filtersFieldRemoveBtn-PRACOWNICY').form
  799. var fieldNameList = FIELD_LIST_PRACOWNICY
  800. fieldNameList.filter(function (fieldName) {
  801. if (!frm[fieldName] && DBG) console.log('Err missing field: "'+fieldName+'"');
  802. return (frm[fieldName]) ? true : false
  803. }).map(function (fieldName) {
  804. return [ fieldName, frm[fieldName].value ]
  805. }).filter(function (filter) {
  806. return ( filter[1].length > 0 )
  807. }).map(function (filter) {
  808. filterFields[ filter[0] ] = filter[1]
  809. })
  810. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  811. if (filterIdGroup) filterFields[ 'filterIdGroup' ] = filterIdGroup
  812. window.fetch(URL_ADD_PRACOWNICY_TO_GROUP, {
  813. method: 'POST',
  814. header: {
  815. 'contentType': 'applications/json'
  816. },
  817. credentials: 'same-origin',
  818. body: JSON.stringify({
  819. 'idGroup': idGroup,
  820. 'type': 'filter',
  821. 'filter': filterFields,
  822. })
  823. })
  824. .then(function(response) {
  825. return response.text();
  826. })
  827. .then(function(responseText) {
  828. try {
  829. return JSON.parse(responseText);
  830. } catch (e) {
  831. throw responseText;
  832. }
  833. })
  834. .then(function(result) {
  835. if (result.type == 'success') {
  836. p5UI__notifyAjaxCallback(result);
  837. resolve(result.msg);
  838. } else {
  839. reject(result.msg);
  840. }
  841. })
  842. .catch(function(error) {
  843. if(DBG) console.log('request failed', error);
  844. });
  845. })
  846. },
  847. allowOutsideClick: false
  848. }).then(function (groupPracownicyData) {
  849. //TODO: pIOTRKU CZY TU POWINIENEM COŚ JESZCZE OBSŁUŻYĆ
  850. });
  851. }
  852. /**
  853. * Popup z opcja przeniesienia kontrahentów do innej grupy
  854. */
  855. function addKontrahenciToGroup(event) {
  856. event.preventDefault();
  857. var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  858. if (kontrahenciIdsArray === null || !kontrahenciIdsArray || !kontrahenciIdsArray.length) {
  859. showTextListIdKontrahentow = 'nie wybrano kontrahentów';
  860. } else {
  861. showTextListIdKontrahentow = '' + kontrahenciIdsArray.length + ' podmiotów/kontrahentów';
  862. }
  863. var arrayGroupOptions = [];
  864. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups');
  865. // utworzenie tablicy Optionsów grupy
  866. listGroupStorage.map(function(item) {
  867. if (item.ID !== undefined) {
  868. arrayGroupOptions[item.ID] = item.NAZWA;
  869. }
  870. });
  871. swal({
  872. title: 'Dodaj do grupy',
  873. input: 'select',
  874. text: showTextListIdKontrahentow,
  875. inputOptions: arrayGroupOptions,
  876. inputPlaceholder: 'Wybierz grupę',
  877. showCancelButton: true,
  878. confirmButtonText: 'Zapisz',
  879. showLoaderOnConfirm: true,
  880. preConfirm: function (idGroup) {
  881. return new Promise(function (resolve, reject) {
  882. if (!idGroup) {
  883. reject('Proszę wybrać nazwę grupy');
  884. return;
  885. }
  886. if (!kontrahenciIdsArray || !kontrahenciIdsArray.length) {
  887. reject('Wybierz kontrahentów');
  888. return;
  889. }
  890. window.fetch(URL_ADD_KONTRAHENCI_TO_GROUP, {
  891. method: 'POST',
  892. header: { 'contentType': 'applications/json' },
  893. credentials: 'same-origin',
  894. body: JSON.stringify({
  895. 'idGroup': idGroup,
  896. 'kontrahenciIds': getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds'),
  897. })
  898. })
  899. .then(function(response) {
  900. return response.text();
  901. })
  902. .then(function(responseText) {
  903. try {
  904. return JSON.parse(responseText);
  905. } catch (e) {
  906. throw responseText;
  907. }
  908. })
  909. .then(function(result) {
  910. if (result.type == 'success') {
  911. p5UI__notifyAjaxCallback(result);
  912. resolve(result.msg);
  913. } else {
  914. reject(result.msg);
  915. }
  916. })
  917. .catch(function(error) {
  918. if(DBG) console.warn('request failed', error);
  919. });
  920. })
  921. },
  922. allowOutsideClick: false
  923. }).then(function (value) {
  924. { // remove from selected
  925. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', []);
  926. updateCountItemCheckedByType('kontrahenci');
  927. $('form').find(':checkbox').prop('checked', false);
  928. }
  929. });
  930. }
  931. function addKontrahenciAllToGroup(event) {
  932. event.preventDefault();
  933. var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  934. var showTextListIdKontrahentow = 'wszystkich podmotów/kontrahentów pasujących do kryteriów wyszukiwania';
  935. var arrayGroupOptions = [];
  936. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups');
  937. // utworzenie tablicy Optionsów grupy
  938. listGroupStorage.map(function(item) {
  939. if (item.ID !== undefined) {
  940. arrayGroupOptions[item.ID] = item.NAZWA;
  941. }
  942. });
  943. swal({
  944. title: 'Dodaj do grupy',
  945. input: 'select',
  946. text: showTextListIdKontrahentow,
  947. inputOptions: arrayGroupOptions,
  948. inputPlaceholder: 'Wybierz grupę',
  949. showCancelButton: true,
  950. confirmButtonText: 'Zapisz',
  951. showLoaderOnConfirm: true,
  952. preConfirm: function (idGroup) {
  953. return new Promise(function (resolve, reject) {
  954. if (!idGroup) {
  955. reject('Proszę wybrać nazwę grupy');
  956. return;
  957. }
  958. var filterFields = {}
  959. var frm = document.getElementById('filtersFieldRemoveBtn-KONTRAHENCI').form
  960. var fieldNameList = FIELD_LIST_KONTRAHENCI
  961. fieldNameList.filter(function (fieldName) {
  962. if (!frm[fieldName] && DBG) console.log('Err missing field: "'+fieldName+'"')
  963. return (frm[fieldName]) ? true : false
  964. }).map(function (fieldName) {
  965. return [ fieldName, frm[fieldName].value ]
  966. }).filter(function (filter) {
  967. return ( filter[1].length > 0 )
  968. }).map(function (filter) {
  969. filterFields[ filter[0] ] = filter[1]
  970. })
  971. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  972. if (filterIdGroup) filterFields[ 'filterIdGroup' ] = filterIdGroup
  973. window.fetch(URL_ADD_KONTRAHENCI_TO_GROUP, {
  974. method: 'POST',
  975. header: {
  976. 'contentType': 'applications/json'
  977. },
  978. credentials: 'same-origin',
  979. body: JSON.stringify({
  980. 'idGroup': idGroup,
  981. 'type': 'filter',
  982. 'filter': filterFields,
  983. })
  984. })
  985. .then(function(response) {
  986. return response.text();
  987. })
  988. .then(function(responseText) {
  989. try {
  990. return JSON.parse(responseText);
  991. } catch (e) {
  992. throw responseText;
  993. }
  994. })
  995. .then(function(result) {
  996. $('#smad-table-PRACOWNICY form').find(':checkbox').prop('checked', false);
  997. if (result.type == 'success') {
  998. p5UI__notifyAjaxCallback(result);
  999. resolve(result.msg);
  1000. } else {
  1001. reject(result.msg);
  1002. }
  1003. })
  1004. .catch(function(error) {
  1005. if(DBG) console.log('request failed', error);
  1006. });
  1007. })
  1008. },
  1009. allowOutsideClick: false
  1010. });
  1011. }
  1012. function removeKontrahenciFromGroup(event) {
  1013. event.preventDefault;
  1014. var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1015. if (kontrahenciIdsArray === null || !kontrahenciIdsArray || !kontrahenciIdsArray.length) {
  1016. showTextListIdKontrahentow = 'nie wybrano kontrahentów';
  1017. } else {
  1018. showTextListIdKontrahentow = '' + kontrahenciIdsArray.length + ' podmiotów/kontrahentów';
  1019. }
  1020. var groupId = getItemLocalStorage("Bocian.biAuditForm.kontrahenci.filterIdGroup");
  1021. var removeTitle = "Czy chcesz usunąć z "
  1022. if (groupId === "0") {
  1023. removeTitle += "systemu";
  1024. } else {
  1025. var arrayGroupOptions = [];
  1026. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups');
  1027. // utworzenie tablicy Optionsów grupy
  1028. listGroupStorage.map(function(item) {
  1029. if (item.ID !== undefined) {
  1030. arrayGroupOptions[item.ID] = item.NAZWA;
  1031. }
  1032. });
  1033. removeTitle += "grupy ";
  1034. removeTitle += arrayGroupOptions[groupId];
  1035. }
  1036. swal({
  1037. title: removeTitle,
  1038. text: showTextListIdKontrahentow,
  1039. showConfirmButton: true,
  1040. showCancelButton: true,
  1041. confirmButtonText: 'Usuń',
  1042. cancelButtonText: 'Anuluj',
  1043. showLoaderOnConfirm: true,
  1044. preConfirm: function () {
  1045. return new Promise(function (resolve, reject) {
  1046. if (!kontrahenciIdsArray || !kontrahenciIdsArray.length) {
  1047. reject('Wybierz kontrahentów');
  1048. return;
  1049. }
  1050. window.fetch(URL_REMOVE_KONTRAHENCI_FROM_GROUP, {
  1051. method: 'POST',
  1052. header: { 'contentType': 'applications/json' },
  1053. credentials: 'same-origin',
  1054. body: JSON.stringify({
  1055. 'idGroup': getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup'),
  1056. 'kontrahenciIds': getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds'),
  1057. })
  1058. })
  1059. .then(function(response) {
  1060. return response.text();
  1061. })
  1062. .then(function(responseText) {
  1063. try {
  1064. return JSON.parse(responseText);
  1065. } catch (e) {
  1066. throw responseText;
  1067. }
  1068. })
  1069. .then(function(result) {
  1070. result
  1071. if (result.type == 'success') {
  1072. p5UI__notifyAjaxCallback(result);
  1073. updateTopCounters();
  1074. $('#smad-table-KONTRAHENCI form').find(':checkbox').prop('checked', false);
  1075. resolve(result.msg);
  1076. } else {
  1077. reject(result.msg);
  1078. }
  1079. })
  1080. })
  1081. },
  1082. allowOutsideClick: false
  1083. }).then((result) => {
  1084. if (!result) return;
  1085. if (result.dismiss) return;
  1086. if (!result.value) return;
  1087. { // remove from selected
  1088. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', []);
  1089. updateCountItemCheckedByType('kontrahenci');
  1090. $('#smad-table-KONTRAHENCI form').find(':checkbox').prop('checked', false);
  1091. }
  1092. urlFetchKontrahenci(1);
  1093. });
  1094. }
  1095. function removePracownikFromGroup(event){
  1096. event.preventDefault;
  1097. var pracownicyIdsArray = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1098. if (pracownicyIdsArray === null || !pracownicyIdsArray || !pracownicyIdsArray.length) {
  1099. showTextListIdPracownikow = 'nie wybrano osób';
  1100. } else {
  1101. showTextListIdPracownikow = '' + pracownicyIdsArray.length + ' osób';
  1102. }
  1103. var groupId = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  1104. var removeTitle = "Czy chcesz usunąć z "
  1105. if (!groupId) {
  1106. removeTitle += "systemu";
  1107. } else {
  1108. var arrayGroupOptions = [];
  1109. var listGroupStorage = getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups');
  1110. // utworzenie tablicy Optionsów grupy
  1111. listGroupStorage.map(function(item) {
  1112. if (item.ID !== undefined) {
  1113. arrayGroupOptions[item.ID] = item.NAZWA;
  1114. }
  1115. });
  1116. removeTitle += "grupy ";
  1117. removeTitle += arrayGroupOptions[groupId];
  1118. }
  1119. swal({
  1120. title: removeTitle,
  1121. text: showTextListIdPracownikow,
  1122. showConfirmButton: true,
  1123. showCancelButton: true,
  1124. confirmButtonText: 'Usuń',
  1125. cancelButtonText: 'Anuluj',
  1126. showLoaderOnConfirm: true,
  1127. preConfirm: function () {
  1128. return new Promise(function (resolve, reject) {
  1129. if (!pracownicyIdsArray || !pracownicyIdsArray.length) {
  1130. reject('Wybierz osoby');
  1131. return;
  1132. }
  1133. window.fetch(URL_REMOVE_PRACOWNICY_FROM_GROUP, {
  1134. method: 'POST',
  1135. header: { 'contentType': 'applications/json' },
  1136. credentials: 'same-origin',
  1137. body: JSON.stringify({
  1138. 'idGroup': getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup'),
  1139. 'pracownicyIds': getItemLocalStorage('Bocian.biAuditForm.pracownicyIds'),
  1140. })
  1141. })
  1142. .then(function(response) {
  1143. return response.text();
  1144. })
  1145. .then(function(responseText) {
  1146. try {
  1147. return JSON.parse(responseText);
  1148. } catch (e) {
  1149. throw responseText;
  1150. }
  1151. })
  1152. .then(function(result) {
  1153. if (result.type == 'success') {
  1154. p5UI__notifyAjaxCallback(result);
  1155. updateTopCounters();
  1156. $('#smad-table-PRACOWNICY form').find(':checkbox').prop('checked', false);
  1157. resolve(result.msg);
  1158. } else {
  1159. reject(result.msg);
  1160. }
  1161. })
  1162. })
  1163. },
  1164. allowOutsideClick: false
  1165. }).then((result) => {
  1166. if (!result) return;
  1167. if (result.dismiss) return;
  1168. if (!result.value) return;
  1169. { // remove from selected
  1170. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', []);
  1171. updateCountItemCheckedByType('pracownicy');
  1172. $('#smad-table-PRACOWNICY form').find(':checkbox').prop('checked', false);
  1173. }
  1174. urlFetchPracownicy(1);
  1175. });
  1176. }
  1177. function createGroupKontrahenci(event) {
  1178. event.preventDefault();
  1179. swal({
  1180. title: 'Utwórz grupę',
  1181. input: 'text',
  1182. showCancelButton: true,
  1183. confirmButtonText: 'Zapisz',
  1184. showLoaderOnConfirm: true,
  1185. preConfirm: function (NAZWA) {
  1186. return new Promise(function (resolve, reject) {
  1187. if (!NAZWA) {
  1188. reject('Proszę podać nazwę grupy');
  1189. return;
  1190. }
  1191. window.fetch(URL_CREATE_PRACOWNICY_GROUP, {
  1192. method: 'POST',
  1193. header: { 'contentType': 'applications/json' },
  1194. credentials: 'same-origin',
  1195. body: JSON.stringify({
  1196. 'NAZWA': NAZWA
  1197. })
  1198. })
  1199. .then(function(response) {
  1200. return response.text();
  1201. })
  1202. .then(function(responseText) {
  1203. try {
  1204. return JSON.parse(responseText);
  1205. } catch (e) {
  1206. throw responseText;
  1207. }
  1208. })
  1209. .then(function(result) {
  1210. if (result.type == 'success') {
  1211. p5UI__notifyAjaxCallback(result);
  1212. resolve(result.body);
  1213. } else {
  1214. reject("Proszę podać inną nazwę grupy");
  1215. }
  1216. })
  1217. .catch(function(error) {
  1218. if(DBG) console.log('request failed', error);
  1219. })
  1220. })
  1221. },
  1222. allowOutsideClick: false
  1223. }).then(function (result) {
  1224. if (!result) return;
  1225. if (result.dismiss) return;
  1226. if (!result.value) return;
  1227. // NOTE: swal has input, so resolver object from preConfirm is in { value: resolvedObject }
  1228. var addedGroup = result.value;
  1229. if (addedGroup.id && addedGroup.nazwa) {
  1230. $('#group-kontrahenci').append('<button class="btn btn-default" title="'+addedGroup['nazwa']+'" data-group-filter="'+addedGroup['id']+'">'+addedGroup['nazwa']+'</button>');
  1231. { // add group to local storage
  1232. setItemLocalStorage(
  1233. 'Bocian.biAuditForm.kontrahenci.groups',
  1234. [].concat(
  1235. getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups') || [],
  1236. [ { 'ID': addedGroup.id, 'NAZWA': addedGroup.nazwa } ]
  1237. )
  1238. );
  1239. }
  1240. }
  1241. //TODO: aktualizacja fitrów na widoku -> SPrawdzić co dostaniemy w odpowiedzi po dodaniu filtra grupy
  1242. });
  1243. }
  1244. function createGroupPracownicy(event) {
  1245. event.preventDefault();
  1246. swal({
  1247. title: 'Utwórz grupę',
  1248. input: 'text',
  1249. showCancelButton: true,
  1250. confirmButtonText: 'Zapisz',
  1251. showLoaderOnConfirm: true,
  1252. preConfirm: function (NAZWA) {
  1253. return new Promise(function (resolve, reject) {
  1254. if (!NAZWA) {
  1255. reject('Proszę podać nazwę grupy');
  1256. return;
  1257. }
  1258. window.fetch(URL_CREATE_PRACOWNICY_GROUP, {
  1259. method: 'POST',
  1260. header: { 'contentType': 'applications/json' },
  1261. credentials: 'same-origin',
  1262. body: JSON.stringify({
  1263. 'NAZWA': NAZWA
  1264. })
  1265. })
  1266. .then(function(response) {
  1267. return response.text();
  1268. })
  1269. .then(function(responseText) {
  1270. try {
  1271. return JSON.parse(responseText);
  1272. } catch (e) {
  1273. throw responseText;
  1274. }
  1275. })
  1276. .then(function(result) {
  1277. console.warn('DBG group added? result', result)
  1278. if (result.type == 'success') {
  1279. p5UI__notifyAjaxCallback(result);
  1280. resolve(result.body);
  1281. } else {
  1282. reject("Proszę podać inną nazwę grupy");
  1283. }
  1284. })
  1285. .catch(function(error) {
  1286. if(DBG) console.log('request failed', error);
  1287. })
  1288. })
  1289. },
  1290. allowOutsideClick: false
  1291. }).then(function (result) {
  1292. if (!result) return;
  1293. if (result.dismiss) return;
  1294. if (!result.value) return;
  1295. // NOTE: swal has input, so resolver object from preConfirm is in { value: resolvedObject }
  1296. var addedGroup = result.value;
  1297. if (addedGroup.id && addedGroup.nazwa) {
  1298. $('#group-pracownicy').append('<button class="btn btn-default" title="'+addedGroup['nazwa']+'" data-group-filter="'+addedGroup['id']+'">'+addedGroup['nazwa']+'</button>');
  1299. { // add group to local storage
  1300. setItemLocalStorage(
  1301. 'Bocian.biAuditForm.pracownicy.groups',
  1302. [].concat(
  1303. getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups') || [],
  1304. [ { 'ID': addedGroup.id, 'NAZWA': addedGroup.nazwa } ]
  1305. )
  1306. );
  1307. }
  1308. }
  1309. //TODO: aktualizacja fitrów na widoku -> SPrawdzić co dostaniemy w odpowiedzi po dodaniu filtra grupy
  1310. });
  1311. }
  1312. /**
  1313. * Function for load view Form pracownicy/kontrahenci
  1314. */
  1315. function rootChangeForm() {
  1316. //todo: do przeniesienia
  1317. urlFetchKontrahenciPowiazania();
  1318. var valueUrl = global.location.hash;
  1319. switch (valueUrl) {
  1320. case '#KONTRAHENCI':
  1321. $( ".container-bi_audit_form_kontrahenci_raport" ).html( VIEW_KONTRAHENCI );
  1322. urlFetchKontrahenci(1);
  1323. fetchGroupKontrahenci();
  1324. $( ".container-bi_audit_form_pracownicy_raport" ).hide();
  1325. $( ".container-bi_audit_form_kontrahenci_raport" ).show();
  1326. $(".container-bi-audit_form_operacyjna_baza_zgloszen").hide();
  1327. //parseGraph();
  1328. break;
  1329. case '#PRACOWNICY':
  1330. $( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
  1331. urlFetchPracownicy(1);
  1332. fetchGroupPracownicy();
  1333. $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  1334. $( ".container-bi_audit_form_pracownicy_raport" ).show();
  1335. $(".container-bi-audit_form_operacyjna_baza_zgloszen").hide();
  1336. break;
  1337. case '#OPERACYJNA_BAZA_ZGLOSZEN':
  1338. $( ".container-bi_audit_form_operacyjna_baza_zgloszen" ).html( OPERACYJNA_BAZA_ZGLOSZEN );
  1339. // urlFetchPracownicy(1);
  1340. // fetchGroupPracownicy();
  1341. $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  1342. $( ".container-bi_audit_form_pracownicy_raport" ).hide();
  1343. $(".container-bi-audit_form_operacyjna_baza_zgloszen").show();
  1344. break;
  1345. // case '#REAPORT':
  1346. // $( ".container-bi_audit_form_raport_data" ).html( VIEW_TREE_REAPORT );
  1347. // urlFetchKontrahenciPowiazania();
  1348. // $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  1349. // $( ".container-bi_audit_form_pracownicy_raport" ).hide();
  1350. // $( ".container-bi_audit_form_raport_data" ).show();
  1351. // break;
  1352. default:
  1353. $( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
  1354. urlFetchPracownicy(1);
  1355. fetchGroupPracownicy();
  1356. $( ".container-bi_audit_form_kontrahenci_raport" ).hide();
  1357. $( ".container-training" ).hide();
  1358. $( ".container-about" ).hide();
  1359. $( ".container-bi_audit_form_pracownicy_raport" ).show();
  1360. break;
  1361. }
  1362. // aktualizacja select option czy zwracać wyniki tylko z obiektami docelowymi
  1363. updateLocalStorageBiAuditOnlyTargets('#smad-select-target');
  1364. updateLocalStorageBiAuditOnlyTargets('#smad-select-target-kontrahenci');
  1365. // load in select selected option BI_analiza_onlyTargets
  1366. loadCurrentOnlyTargetsSelect();
  1367. }
  1368. function getAddressData(objectValue) {
  1369. var objectValue = objectValue || [];
  1370. var listData = '';
  1371. if (!objectValue) {
  1372. return true;
  1373. }
  1374. objectValue.forEach (function(item) {
  1375. if (item['kodPocztowy']) { listData += '<div>kod pocztowy: ' + item['kodPocztowy'] + '<div>'; }
  1376. if (item['miejscowosc']) { listData += '<div>miejscowość: ' + item['miejscowosc'] + '<div>'; }
  1377. if (item['nrBudynku']) { listData += '<div>nr budynku: ' + item['nrBudynku'] + '<div>'; }
  1378. if (item['nrLokalu']) { listData += '<div>nr lokalu: ' + item['nrLokalu'] + '<div>'; }
  1379. if (item['typAdresu']) { listData += '<div>typ adresu: ' + item['typAdresu'] + '<div>'; }
  1380. if (item['ulica']) { listData += '<div>ulica: ' + item['ulica'] + '<div>'; }
  1381. listData += '<div>------<div>';
  1382. });
  1383. return listData;
  1384. }
  1385. /**
  1386. * Get name name group
  1387. */
  1388. function getNameGroupById(store, filterIdGroup) {
  1389. var NAZWA = '';
  1390. if (!store || filterIdGroup === 0 ) {
  1391. NAZWA = 'Wszyscy';
  1392. } else {
  1393. $(store).each(function() {
  1394. if ( parseInt(filterIdGroup) === parseInt(this.ID) ) {
  1395. NAZWA = this.NAZWA;
  1396. }
  1397. });
  1398. }
  1399. return NAZWA;
  1400. }
  1401. function urlFetchKontrahenci(page) {
  1402. hideMoreRecordFunctionsPopover()
  1403. var page = page || getItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page');
  1404. selectPage('KONTRAHENCI', page);
  1405. if ( page === 1) {
  1406. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page', 1);
  1407. }
  1408. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  1409. var frm = document.getElementById('filtersFieldRemoveBtn-KONTRAHENCI').form
  1410. var fieldNameList = FIELD_LIST_KONTRAHENCI
  1411. var filterFields = fieldNameList.map(function (fieldName) {
  1412. return [ fieldName, frm[fieldName].value ]
  1413. }).filter(function (filter) {
  1414. return ( filter[1].length > 0 )
  1415. }).map(function (filter) {
  1416. return '' + filter[0] + '=' + filter[1]
  1417. }).join('&')
  1418. filterFields = (filterFields.length > 0) ? '&' + filterFields : ''
  1419. fetch(URL_FETCH_KONTRAHENCI + '&page=' + page + '&filterIdGroup=' + filterIdGroup + filterFields, {
  1420. credentials: 'same-origin'
  1421. })
  1422. .then(function parseJSON(response) {
  1423. return response.json()
  1424. var filterIdGroup = filterIdGroup || getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  1425. })
  1426. .then(function(data) {
  1427. var listItemsKontrahenci = null;
  1428. data.body.items.forEach (function(row) {
  1429. listItemsKontrahenci += '<tr><td style="white-space:nowrap">' +
  1430. '<input style="vertical-align:top" type="checkbox" name="kontrID[]" value="'+row['ID']+'" />' +
  1431. '<i onClick="kontrahenciLoadMoreRecordFunctions(event, this, '+row['ID']+')" style="margin-left:6px; cursor:pointer; color:#333" class="glyphicon glyphicon-menu-hamburger" title="Więcej funkcji dla rekordu nr ' + row['ID'] + '"></i>' +
  1432. '</td>' +
  1433. '<td align="right">'+row["ID"]+'</td>'+
  1434. '<td align="right">' + ( row["Nazwa_grupy_kapitalowej"] || '' ) + '</td>' +
  1435. '<td align="right">' + ( row["Pelna_nazwa_kontrahenta"] || '' ) + '</td>' +
  1436. '<td align="right">' + ( row["Numer_kontrahenta"] || '' ) + '</td>' +
  1437. '<td align="right">' + ( row["Skrocona_Nazwa_Kontrahenta"] || '' ) + '</td>' +
  1438. '<td align="right">' + ( row["Typ_kontrahenta"] || '' ) + '</td>' +
  1439. '<td align="right">' + ( row["NIP"] || '' ) + '</td>' +
  1440. '<td align="right">' + ( row["KRS"] || '' ) + '</td>' +
  1441. '<td align="right">' + ( row["REGON"] || '' ) + '</td>' +
  1442. '<td align="right">' + ( row["PESEL"] || '' ) + '</td>' +
  1443. '<td align="right">' + ( row["Forma_prawna_dzialalnosci"] || '' ) + '</td>' +
  1444. '<td align="right">' + ( row["Ulica"] || '' ) + '</td>' +
  1445. '<td align="right">' + ( row["Numer_budynku"] || '' ) + '</td>' +
  1446. '<td align="right">' + ( row["Numer_mieszkania_lokalu"] || '' ) + '</td>' +
  1447. '<td align="right">' + ( row["Miejscowosc"] || '' ) + '</td>' +
  1448. '<td align="right">' + ( row["Kod_pocztowy"] || '' ) + '</td>' +
  1449. '<td align="right">' + ( row["Kraj"] || '' ) + '</td>' +
  1450. '<td align="right">' + ( row["Telefon"] || '' ) + '</td>' +
  1451. '<td align="right">' + ( row["Fax"] || '' ) + '</td>' +
  1452. '<td align="right">' + ( row["Mail"] || '' ) + '</td>' +
  1453. '<td align="right">' + ( row["A_ADM_COMPANY"] || '' ) + '</td>' +
  1454. '<td align="right">' + ( row["A_CLASSIFIED"] || '' ) + '</td>' +
  1455. '<td align="right">' + ( row["Dodano"] || '' ) + '</td>' +
  1456. '<td align="right">' + ( row["Podmiot_dominujacy"] || '' ) + '</td>' +
  1457. '<td align="right">' + ( row["Tytul_dokumentu"] || '' ) + '</td>' +
  1458. '<td align="right">' + ( row["ownCompany"] || '' ) + '</td>' +
  1459. '<td align="right">' + ( row["uwagi"] || '' ) + '</td></tr>';
  1460. });
  1461. if (data.body.pagination !== undefined) {
  1462. Pagination.Init(document.getElementById('pagination-kontrahenci'), {
  1463. url: BASE_URLS+'index.php?_route=UrlAction_Bocian#KONTRAHENCI',
  1464. id_pagination: 'pagination-kontrahenci',
  1465. type: 'KONTRAHENCI',
  1466. limit: data.body.pagination.limit,
  1467. total_items: data.body.pagination.total_items, // pages size
  1468. size: data.body.pagination.size, // pages size
  1469. page: page, // selected page
  1470. step: 1 // pages before and after current
  1471. });
  1472. var paginationShowNextCount = 1;
  1473. if ( parseInt(data.body.pagination.current) !== 1) {
  1474. paginationShowNextCount = parseInt(data.body.pagination.limit) * (parseInt(data.body.pagination.current) - 1 ) + 1;
  1475. }
  1476. $('#paginationShowNextCount-KONTRAHENCI').text(paginationShowNextCount);
  1477. $('#smad-filter-desc-kontrahenci').text(data.body.pagination.total_items);
  1478. if (data.body.pagination.total_items > 0) {
  1479. var btnAddAll = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ WSZYSTKIE DO ANALIZY</button>');
  1480. btnAddAll.on('click', { type: 'kontrahenci', pagination: data.body.pagination }, addAllMatchesToReport);
  1481. var btnAddByReport = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ DO ANALIZY WG RAPORTU</button>');
  1482. btnAddByReport.on('click', { type: 'kontrahenci', pagination: data.body.pagination }, addToReportByPreviousReport);
  1483. $('#smad-filter-desc-kontrahenci').append(btnAddAll);
  1484. $('#smad-filter-desc-kontrahenci').append(btnAddByReport);
  1485. }
  1486. }
  1487. var groupSelectData = getNameGroupById(getItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups'), filterIdGroup);
  1488. $('#smad-filter-head-title-kontrahenci').text(groupSelectData);
  1489. if(DBG) console.log('kontrahenci groupSelectData: ', groupSelectData);
  1490. $( "#body-kontrahenci" ).html(listItemsKontrahenci);
  1491. checkAll('KONTRAHENCI');
  1492. catchEventCheckbox('KONTRAHENCI');
  1493. checkedChoiseItems('KONTRAHENCI', getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds') );
  1494. // $( ".container-bi_audit_raport" ).append( data.body.view );
  1495. if(DBG) console.log('request succeeded with JSON responseKontrahenci', data)
  1496. updateTopCounters();
  1497. }).catch(function(error) {
  1498. if(DBG) console.log('request failed', error);
  1499. })
  1500. }
  1501. function urlFetchPracownicy(page) {
  1502. hideMoreRecordFunctionsPopover()
  1503. var page = page || getItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page');
  1504. if ( page === 1) {
  1505. setItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page', 1);
  1506. }
  1507. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  1508. selectPage('PRACOWNICY', page);
  1509. var frm = document.getElementById('filtersFieldRemoveBtn-PRACOWNICY').form
  1510. var fieldNameList = FIELD_LIST_PRACOWNICY
  1511. var filterFields = fieldNameList.filter(function (fieldName) {
  1512. if (!frm[fieldName] && DBG) console.log('Err missing field: "'+fieldName+'"')
  1513. return (frm[fieldName]) ? true : false
  1514. }).map(function (fieldName) {
  1515. return [ fieldName, frm[fieldName].value ]
  1516. }).filter(function (filter) {
  1517. return ( filter[1].length > 0 )
  1518. }).map(function (filter) {
  1519. return '' + filter[0] + '=' + filter[1]
  1520. }).join('&')
  1521. filterFields = (filterFields.length > 0) ? '&' + filterFields : ''
  1522. var paginationLimit = 20;
  1523. /*p5WFS_GetFeature('default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY',
  1524. Object.assign({
  1525. sortBy: 'ID+D',
  1526. maxFeatures: paginationLimit,
  1527. startIndex: (page - 1) * paginationLimit,
  1528. // TODO: backRefNS, backRefPK, backRefField - TODO: from groups
  1529. // resolve: 'all',
  1530. // resolveDepth: 2
  1531. 'ogc:Filter': '<wfs:Query>' + '\n' + [
  1532. '*',
  1533. 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy/*',
  1534. [
  1535. 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row_object:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row_object',
  1536. 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row',
  1537. 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row_object:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row_object',
  1538. 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI'
  1539. ].join('/')
  1540. ].map(function (fieldName) {
  1541. return '<wfs:PropertyName>' + fieldName + '</wfs:PropertyName>';
  1542. }).join('\n') + '\n' + '</wfs:Query>'
  1543. }, (filterIdGroup > 0)
  1544. ? {
  1545. backRefNS: 'default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group',
  1546. backRefPK: filterIdGroup,
  1547. backRefField: 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY',
  1548. }
  1549. : {}
  1550. )
  1551. ).then(function (items) {
  1552. if(DBG)console.log('p5WFS_GetFeature: items: ', items);
  1553. }).catch(function (err) {
  1554. if(DBG)console.log('p5WFS_GetFeature: err: ', err);
  1555. })*/
  1556. fetch(URL_FETCH_PRACOWNICY + '&page=' + page + '&filterIdGroup=' + filterIdGroup + filterFields, {
  1557. credentials: 'same-origin'
  1558. })
  1559. .then(function parseJSON(response) {
  1560. return response.json()
  1561. })
  1562. .then(function(data) {
  1563. var addresPerson = '';
  1564. var listItemsPracownik = null;
  1565. if(DBG) console.log('urlFetchPracownicy', data.body.items);
  1566. data.body.items.forEach (function(row) {
  1567. if (row["default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy"]) {
  1568. addresPerson = getAddressData(row["default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy"]);
  1569. }
  1570. listItemsPracownik += '<tr><td style="white-space:nowrap">' +
  1571. '<input style="vertical-align:top" type="checkbox" name="prID[]" value="'+row['ID']+'" />' +
  1572. '<i onClick="pracownicyLoadMoreRecordFunctions(event, this, '+row['ID']+')" style="margin-left:6px; cursor:pointer; color:#333" class="glyphicon glyphicon-menu-hamburger" title="Więcej funkcji dla rekordu nr ' + row['ID'] + '"></i>' +
  1573. '</td>' +
  1574. '<td align="right">'+row["ID"]+'</td>' +
  1575. '<td align="right">' + ( row["imiona"] || '' ) + '</td>' +
  1576. '<td align="right">' + ( row["nazwisko"] || '' ) + '</td>' +
  1577. '<td align="right">' + ( row["nip"] || '' ) + '</td>' +
  1578. '<td align="right">' + ( row["pesel"] || '' ) + '</td>' +
  1579. '<td align="right">' + ( row["regon"] || '' ) + '</td>' +
  1580. '<td align="right">' + ( row["source"] || '' ) + '</td>' +
  1581. '<td align="right">' + ( row["jednostka_organizacyjna"] || '' ) + '</td>' +
  1582. '<td align="right">' + ( row["A_STATUS"] || '' ) + '</td>' +
  1583. '<td align="right">' + ( row["A_STATUS_INFO"] || '' ) + '</td>' +
  1584. '<td align="right">' + ( row["L_APPOITMENT_USER"] || '' ) + '</td>' +
  1585. '<td align="right">'+ addresPerson +'</td></tr>';
  1586. });
  1587. if (data.body.pagination.size) {
  1588. Pagination.Init(document.getElementById('pagination-pracownicy'), {
  1589. url: BASE_URLS+'index.php?_route=UrlAction_Bocian#PRACOWNICY',
  1590. id_pagination: 'pagination-pracownicy',
  1591. type: 'PRACOWNICY',
  1592. limit: data.body.pagination.limit,
  1593. total_items: data.body.pagination.total_items, // pages size
  1594. size: data.body.pagination.size, // pages size
  1595. page: data.body.pagination.current, // selected page
  1596. step: 1 // pages before and after current
  1597. });
  1598. var paginationShowNextCount = 1;
  1599. if ( parseInt(data.body.pagination.current) !== 1) {
  1600. paginationShowNextCount = parseInt(data.body.pagination.limit) * (parseInt(data.body.pagination.current) - 1 ) + 1;
  1601. }
  1602. $('#paginationShowNextCount-PRACOWNICY').text(paginationShowNextCount);
  1603. $('#smad-filter-desc-pracownicy').text(data.body.pagination.total_items);
  1604. if (data.body.pagination.total_items > 0) {
  1605. var btnAddAll = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ WSZYSTKIE DO ANALIZY</button>')
  1606. btnAddAll.on('click', { type: 'pracownicy', pagination: data.body.pagination }, addAllMatchesToReport);
  1607. var btnAddByReport = $('<button class="btn btn-primary" style="padding:1px 5px; margin-left:12px">DODAJ DO ANALIZY WG RAPORTU</button>');
  1608. btnAddByReport.on('click', { type: 'pracownicy', pagination: data.body.pagination }, addToReportByPreviousReport);
  1609. $('#smad-filter-desc-pracownicy').append(btnAddAll);
  1610. $('#smad-filter-desc-pracownicy').append(btnAddByReport);
  1611. }
  1612. }
  1613. // wyświetlenie wybranej grupy w naglówku nad tabela
  1614. var groupSelectData = getNameGroupById(getItemLocalStorage('Bocian.biAuditForm.pracownicy.groups'), filterIdGroup);
  1615. $('#smad-filter-head-title-pracownicy').text(groupSelectData);
  1616. // zaladaowanie listy pracowników
  1617. $( "#body-pracownicy" ).html( listItemsPracownik);
  1618. checkAll('PRACOWNICY');
  1619. catchEventCheckbox('PRACOWNICY');
  1620. checkedChoiseItems('PRACOWNICY', getItemLocalStorage('Bocian.biAuditForm.pracownicyIds') );
  1621. updateTopCounters();
  1622. }).catch(function(error) {
  1623. if(DBG) console.log('request failed', error)
  1624. })
  1625. }
  1626. function selectPage(type, nrPage) {
  1627. var type = type.toLowerCase();
  1628. $('#pagination-' + type + ' ul li a').each(function(index, value){
  1629. if (this.text === nrPage) {
  1630. $(this).addClass('active');
  1631. } else {
  1632. $(this).removeClass('active');
  1633. }
  1634. });
  1635. }
  1636. function checkAll(type) {
  1637. $('#checkAll-' + type).change(function() {
  1638. var valueCheckbox = null;
  1639. var checkboxes = $('form').find(':checkbox');
  1640. if($(this).prop('checked')) {
  1641. checkboxes.prop('checked', true);
  1642. //valueCheckbox = checkboxes.prop("checked");
  1643. var allValsChecked = [];
  1644. var checkedValues = $('#smad-table-' + type + ' input:checkbox:checked').map(function() {
  1645. if (this.value !== 'on') {
  1646. allValsChecked.push(parseInt(this.value));
  1647. }
  1648. }).get();
  1649. updateListIdBiAuditReaport(type, allValsChecked);
  1650. } else {
  1651. checkboxes.prop('checked', false);
  1652. var allValsUnChecked = [];
  1653. var checkedValues = $('#smad-table-' + type + ' input:checkbox:not(:checked)').map(function() {
  1654. if (this.value !== 'on') {
  1655. allValsUnChecked.push(parseInt(this.value));
  1656. }
  1657. }).get();
  1658. deleteListIdBiAuditReaport(type, allValsUnChecked);
  1659. }
  1660. // update count selected IDs
  1661. updateCountItemCheckedByType(type.toLowerCase());
  1662. });
  1663. }
  1664. /**
  1665. * Select again checkbox before selected item chekbox from storage (pracownicy/kontrahenci)
  1666. */
  1667. function checkedChoiseItems(type, store) {
  1668. updateCountItemCheckedByType(type.toLowerCase());
  1669. var idElement = 'smad-table-' + type;
  1670. // if id element exist
  1671. if (document.getElementById(idElement)) {
  1672. // if not checked
  1673. if (!store) {
  1674. return false;
  1675. }
  1676. // checked again if user selected Item (pracownicy/kontrahent)
  1677. for (i = 0; i < store.length; i++) {
  1678. $('#body-'+type.toLowerCase() +' input[type=checkbox] ').map(function(k, v) {
  1679. if ( store[i] === parseInt(this.value) ){
  1680. $(this).prop('checked', true);
  1681. }
  1682. }).get();
  1683. }
  1684. }
  1685. $('#smad-table-' + type + ' input[type=checkbox]').on( 'load', function() {
  1686. var itemsCHecked = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1687. getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1688. if (itemsCHecked.lenght === 0 ) {
  1689. return;
  1690. }
  1691. var valueCheckbox = null;
  1692. var checkboxes = $('form').find(':checkbox');
  1693. if($(this).prop('checked')) {
  1694. checkboxes.prop('checked', true);
  1695. var allValsChecked = [];
  1696. var checkedValues = $('#smad-table-' + type + ' input:checkbox:checked').map(function() {
  1697. if (this.value !== 'on') {
  1698. allValsChecked.push(parseInt(this.value));
  1699. }
  1700. }).get();
  1701. updateListIdBiAuditReaport(type, allValsChecked);
  1702. } else {
  1703. checkboxes.prop('checked', false);
  1704. var allValsUnChecked = [];
  1705. var checkedValues = $('#smad-table-' + type + ' input:checkbox:not(:checked)').map(function() {
  1706. if (this.value !== 'on') {
  1707. allValsUnChecked.push(parseInt(this.value));
  1708. }
  1709. }).get();
  1710. deleteListIdBiAuditReaport(type, allValsUnChecked);
  1711. }
  1712. });
  1713. }
  1714. function catchEventCheckbox(type) {
  1715. $('#smad-table-' + type + ' input[type="checkbox"]').on('change', function() {
  1716. if($(this).is(":checked")) {
  1717. var allValsChecked = [];
  1718. if (this.value !== 'on') {
  1719. allValsChecked.push(parseInt(this.value));
  1720. }
  1721. updateListIdBiAuditReaport(type, allValsChecked);
  1722. } else {
  1723. var allValsUnChecke = [];
  1724. if (this.value !== 'on') {
  1725. allValsUnChecke.push(parseInt(this.value));
  1726. }
  1727. deleteListIdBiAuditReaport(type, allValsUnChecke);
  1728. }
  1729. // update count selected IDs
  1730. updateCountItemCheckedByType(type.toLowerCase());
  1731. });
  1732. }
  1733. function clearSelectedCheckbox() {
  1734. $('#checkAll-PRACOWNICY').prop('checked', false)
  1735. $('#checkAll-KONTRAHENCI').prop('checked', false)
  1736. }
  1737. function updateListIdBiAuditReaport(type, valueArray) {
  1738. var currentStoragePracownicyIds = [];
  1739. var updateListPracownicyIds = null;
  1740. var currentStorageKontrahenciIds = [];
  1741. var updateListKontrahenciIds = null;
  1742. if ( type == 'PRACOWNICY') {
  1743. currentStoragePracownicyIds = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1744. if(currentStoragePracownicyIds !== null) {
  1745. updateListPracownicyIds = [...new Set([...currentStoragePracownicyIds ,...valueArray])];
  1746. }
  1747. else {
  1748. updateListPracownicyIds = valueArray;
  1749. }
  1750. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', updateListPracownicyIds);
  1751. }
  1752. if ( type == 'KONTRAHENCI') {
  1753. currentStorageKontrahenciIds = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1754. if(currentStorageKontrahenciIds !== null) {
  1755. updateListKontrahenciIds = [...new Set([...currentStorageKontrahenciIds ,...valueArray])];
  1756. }
  1757. else {
  1758. updateListKontrahenciIds = valueArray;
  1759. }
  1760. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', updateListKontrahenciIds);
  1761. }
  1762. }
  1763. function deleteListIdBiAuditReaport(type, valueArray) {
  1764. if ( type == 'PRACOWNICY') {
  1765. deleteItemLocalStorage('Bocian.biAuditForm.pracownicyIds', valueArray);
  1766. }
  1767. if ( type == 'KONTRAHENCI') {
  1768. deleteItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', valueArray);
  1769. }
  1770. }
  1771. function fetchGroupPracownicy() {
  1772. fetch(URL_FETCH_GROUP_PRACOWNICY, {
  1773. credentials: 'same-origin'
  1774. })
  1775. .then(function parseJSON(response) {
  1776. return response.json()
  1777. })
  1778. .then(function(data) {
  1779. setItemLocalStorage('Bocian.biAuditForm.pracownicy.groups', data.body.itmesGroupPracownicy);
  1780. if (data.body.itmesGroupPracownicy === null) {
  1781. return;
  1782. }
  1783. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup');
  1784. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1785. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', filterIdGroup);
  1786. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1787. var groupsPracownicy = '';
  1788. var activeButton = '';
  1789. data.body.itmesGroupPracownicy.forEach (function(row) {
  1790. activeButton = '';
  1791. if ( filterIdGroup === parseInt(row['ID']) ) {
  1792. activeButton = 'active';
  1793. $('#group-pracownicy button.active').removeClass('active');
  1794. }
  1795. groupsPracownicy += '<button class="btn btn-default '+activeButton+'" title="' + row['NAZWA'] + '" data-group-filter="' + row['ID'] + '">' + row['NAZWA'] + '</button>';
  1796. });
  1797. $("#group-pracownicy").append(groupsPracownicy);
  1798. updateCountItemCheckedByType('pracownicy');
  1799. detectChoiseFilter();
  1800. }).catch(function(error) {
  1801. if(DBG) console.log('request failed', error)
  1802. });
  1803. }
  1804. function fetchGroupKontrahenci() {
  1805. fetch(URL_FETCH_GROUP_KONTRAHENCI, {
  1806. credentials: 'same-origin'
  1807. })
  1808. .then(function parseJSON(response) {
  1809. return response.json()
  1810. })
  1811. .then(function(data) {
  1812. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.groups', data.body.itemsGroupKontrahenci);
  1813. if (data.body.itemsGroupKontrahenci === null) {
  1814. return;
  1815. }
  1816. var filterIdGroup = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup');
  1817. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1818. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', filterIdGroup);
  1819. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1820. var groupsKontrahenci = '';
  1821. var activeButton = '';
  1822. data.body.itemsGroupKontrahenci.forEach (function(row) {
  1823. activeButton = '';
  1824. if ( filterIdGroup === parseInt(row['ID']) ) {
  1825. activeButton = 'active';
  1826. $('#group-kontrahenci button.active').removeClass('active');
  1827. }
  1828. groupsKontrahenci += '<button class="btn btn-default '+activeButton+'" title="'+row['NAZWA']+'" data-group-filter="'+row['ID']+'">'+row['NAZWA']+'</button>';
  1829. });
  1830. $("#group-kontrahenci").append(groupsKontrahenci);
  1831. updateCountItemCheckedByType('kontrahenci');
  1832. detectChoiseFilter();
  1833. }).catch(function(error) {
  1834. if(DBG) console.log('request failed', error)
  1835. });
  1836. }
  1837. function detectChoiseFilter() {
  1838. $('#group-kontrahenci').on('click', 'button', function(evt) {
  1839. $('#group-kontrahenci button.active').removeClass('active');
  1840. $(this).addClass('active');
  1841. // pobranie id grupy kliknietego buttonu
  1842. var filterIdGroup = $(this).attr("data-group-filter");
  1843. // aktaulna wartość zagłebienia
  1844. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1845. // czy zwracać wyniki tylko z obiektami docelowymi
  1846. var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
  1847. // ustawienie ostaniej wartości zagłebienia przed resete
  1848. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1849. // czy zwracać wyniki tylko z obiektami docelowymi
  1850. setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', analizaOnlyTargets);
  1851. // ustawić id grupy do sesyjnej
  1852. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', parseInt(filterIdGroup));
  1853. // wywylac funckje pobrania danych
  1854. urlFetchKontrahenci(1);
  1855. });
  1856. $('#group-pracownicy').on('click', 'button', function(e) {
  1857. e.preventDefault();
  1858. $('#group-pracownicy button.active').removeClass('active');
  1859. $(this).addClass('active');
  1860. // pobranie id grupy kliknietego buttonu
  1861. var filterIdGroup = $(this).attr("data-group-filter");
  1862. // aktaulna wartość zagłebienia
  1863. var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1864. // ustawienie ostaniej wartości zagłebienia przed resete
  1865. setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
  1866. // ustawić id grupy do sesyjnej
  1867. setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', parseInt(filterIdGroup));
  1868. // wywylac funckje pobrania danych
  1869. urlFetchPracownicy(1);
  1870. });
  1871. }
  1872. // Local storage
  1873. function setItemLocalStorage(key, array) {
  1874. localStorage.setItem(key, JSON.stringify(array));
  1875. }
  1876. function getItemLocalStorage(key) {
  1877. var retrievedData = localStorage.getItem(key);
  1878. var response = JSON.parse(retrievedData);
  1879. return response;
  1880. }
  1881. function deleteItemLocalStorage(key, itemsArray) {
  1882. var currentStorageArray = getItemLocalStorage(key);
  1883. var newStorageArray = removeItemArrayInArray(currentStorageArray, itemsArray);
  1884. setItemLocalStorage(key, newStorageArray);
  1885. }
  1886. /**
  1887. * arr - array
  1888. * item - search item
  1889. */
  1890. function removeItemInArray(arr, item) {
  1891. for(var i = arr.length; i--;) {
  1892. if(arr[i] === item) {
  1893. arr.splice(i, 1);
  1894. }
  1895. }
  1896. return arr;
  1897. }
  1898. /**
  1899. * arr - array
  1900. * item - array list items
  1901. */
  1902. function removeItemArrayInArray(arr, itemsArray) {
  1903. for(var i = arr.length; i--;) {
  1904. for(var j = itemsArray.length; j--;) {
  1905. if(arr[i] === itemsArray[j]) {
  1906. arr.splice(i, 1);
  1907. }
  1908. }
  1909. }
  1910. return arr;
  1911. }
  1912. /**
  1913. * Cleart list local storage by type
  1914. * typeNameLocalStorage - name (praconwicy/kontrahenci)
  1915. */
  1916. function clearListLocalStorageByType(typeNameLocalStorage) {
  1917. if (typeNameLocalStorage === 'pracownicy') {
  1918. setItemLocalStorage('Bocian.biAuditForm.pracownicyIds', []);
  1919. }
  1920. if (typeNameLocalStorage === 'kontrahenci') {
  1921. setItemLocalStorage('Bocian.biAuditForm.kontrahenciIds', []);
  1922. }
  1923. // update count selected item
  1924. updateCountItemCheckedByType(typeNameLocalStorage);
  1925. // unchecked checkbox
  1926. $('#smad-table-'+typeNameLocalStorage.toUpperCase()+' form').find(':checkbox').prop('checked', false);
  1927. }
  1928. /**
  1929. * Update count selected pracowniyc/kontrahenci
  1930. */
  1931. function updateCountItemCheckedByType(typeNameLocalStorage) {
  1932. var countId = 0;
  1933. updateTopCounters();
  1934. if (typeNameLocalStorage === 'pracownicy') {
  1935. var countPracownicy = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1936. if (countPracownicy === null || countPracownicy === undefined) {
  1937. return countId;
  1938. }
  1939. countId = Object.keys(countPracownicy).length;
  1940. $('#count-selected-item-pracownicy').text(countId);
  1941. }
  1942. if (typeNameLocalStorage === 'kontrahenci') {
  1943. var countKontrahenci = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1944. if (countKontrahenci === null || countKontrahenci === undefined) {
  1945. return countId;
  1946. }
  1947. countId = Object.keys(countKontrahenci).length;
  1948. $('#count-selected-item-kontrahenci').text(countId);
  1949. }
  1950. return countId;
  1951. }
  1952. function updateTopCounters() {
  1953. var idsPracownicy = getListFromLocalStorage('Bocian.biAuditForm.pracownicyIds');
  1954. var idsKontrahenci = getListFromLocalStorage('Bocian.biAuditForm.kontrahenciIds');
  1955. var pozostaleOd = getListFromLocalStorage(getSelectedListLocalStorageKey('OD'));
  1956. var pozostaleDo = getListFromLocalStorage(getSelectedListLocalStorageKey('DO'));
  1957. var allOdLength = idsPracownicy.length + pozostaleOd.length;
  1958. var allDoLength = idsKontrahenci.length + pozostaleDo.length;
  1959. var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
  1960. if (globalRaportStore) globalRaportStore.dispatch({
  1961. type: 'UPDATE',
  1962. totalOdPracownicy: idsPracownicy.length,
  1963. totalDoKontrahenci: idsKontrahenci.length,
  1964. })
  1965. }
  1966. // Pagination
  1967. var Pagination = {
  1968. code: '', // end show html paginations
  1969. clickPage: 1, // set default 1 page
  1970. // --------------------
  1971. // Utility
  1972. // --------------------
  1973. // initialize default data
  1974. Extend: function(data) {
  1975. data = data || {};
  1976. Pagination.url = data.url;
  1977. Pagination.id_pagination = data.id_pagination;
  1978. Pagination.type = data.type;
  1979. Pagination.limit = data.limit;
  1980. Pagination.total_items = data.total_items;
  1981. Pagination.size = data.size || 2;
  1982. Pagination.page = data.page || 1;
  1983. Pagination.step = data.step || 3;
  1984. },
  1985. // add pages by number (from [s] to [f])
  1986. Add: function(s, f) {
  1987. for (var i = s; i < f; i++) {
  1988. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">' + i + '</a></li>';
  1989. }
  1990. },
  1991. // add last page with separator
  1992. Last: function() {
  1993. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">>></a></li>';
  1994. },
  1995. // add first page with separator
  1996. First: function() {
  1997. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default"><<</a></li>';
  1998. },
  1999. // add last page with separator
  2000. Next: function() {
  2001. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default">></a></li>';
  2002. },
  2003. // add first page with separator
  2004. Prev: function() {
  2005. Pagination.code += '<li><a href="' + Pagination.url + '" class="btn btn-default"><</a></li>';
  2006. },
  2007. // --------------------
  2008. // Handlers
  2009. // --------------------
  2010. // change page
  2011. Click: function() {
  2012. clearSelectedCheckbox();
  2013. var selectPage = $("#pagination-"+Pagination.type.toLowerCase()+' .tblAjax__footer__toolbar__pagination').find('a.active').text();
  2014. Pagination.clickPage = +this.innerHTML || '';
  2015. if ( selectPage === NaN || selectPage > Pagination.size) { selectPage = 1; }
  2016. switch (this.innerHTML) {
  2017. case '&gt;&gt;': // last
  2018. Pagination.clickPage = Pagination.size;
  2019. break;
  2020. case '&lt;&lt;': // first
  2021. Pagination.clickPage = 1;
  2022. break;
  2023. case '&lt;': // prev
  2024. Pagination.clickPage = parseInt(selectPage) - 1;
  2025. if (Pagination.clickPage < 1) {
  2026. Pagination.clickPage = 1;
  2027. }
  2028. break;
  2029. case '&gt;': // next
  2030. Pagination.clickPage = parseInt(selectPage) + 1;
  2031. if (Pagination.clickPage > Pagination.size) {
  2032. Pagination.clickPage = Pagination.size;
  2033. }
  2034. break;
  2035. }
  2036. if ( Pagination.type === 'KONTRAHENCI' ) {
  2037. setItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page', Pagination.clickPage);
  2038. Pagination.page = urlFetchKontrahenci(Pagination.clickPage);
  2039. }
  2040. else if ( Pagination.type === 'PRACOWNICY' ){
  2041. setItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page', Pagination.clickPage);
  2042. Pagination.page = urlFetchPracownicy(Pagination.clickPage);
  2043. }
  2044. Pagination.Start();
  2045. },
  2046. // --------------------
  2047. // Script structure pagination
  2048. // --------------------
  2049. // binding pages
  2050. Bind: function() {
  2051. var a = Pagination.e.getElementsByTagName('a');
  2052. var currentPage = Pagination.clickPage || 1;
  2053. for (var i = 0; i < a.length; i++) {
  2054. if (+a[i].innerHTML === Pagination.page) a[i].className = 'btn btn-default active';
  2055. a[i].addEventListener('click', Pagination.Click, false);
  2056. }
  2057. },
  2058. // write pagination
  2059. Finish: function() {
  2060. Pagination.e.innerHTML = Pagination.code;
  2061. Pagination.code = '</ul></nav>';
  2062. Pagination.Bind();
  2063. },
  2064. // find pagination type
  2065. Start: function() {
  2066. Pagination.code = '';
  2067. if ( Pagination.type === 'KONTRAHENCI' ) {
  2068. 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>';
  2069. } else if ( Pagination.type === 'PRACOWNICY' ) {
  2070. 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>';
  2071. }
  2072. Pagination.code += '<nav aria-label="Page navigation" class="footer_pagination_menu_items"><ul class="btn-group tblAjax__footer__toolbar__pagination smad-pagination">';
  2073. Pagination.First();
  2074. Pagination.Prev();
  2075. if ( Pagination.type === 'KONTRAHENCI' ) {
  2076. Pagination.page = getItemLocalStorage('Bocian.biAuditForm.kontrahenci.pagination.page') || 1;
  2077. }
  2078. else if ( Pagination.type === 'PRACOWNICY' ) {
  2079. Pagination.page = getItemLocalStorage('Bocian.biAuditForm.pracownicy.pagination.page') || 1;
  2080. }
  2081. if ( Pagination.page > Pagination.size ) {
  2082. Pagination.page = 1;
  2083. }
  2084. if (Pagination.size < Pagination.step * 2 + 6) {
  2085. Pagination.Add(1, Pagination.size + 1);
  2086. }
  2087. else if (Pagination.page < Pagination.step * 2 + 1) {
  2088. Pagination.Add(1, Pagination.step * 2 + 4);
  2089. }
  2090. else if (Pagination.page > Pagination.size - Pagination.step * 2) {
  2091. Pagination.Add(Pagination.size - Pagination.step * 2 - 2, Pagination.size + 1);
  2092. }
  2093. else {
  2094. Pagination.Add(Pagination.page - Pagination.step, Pagination.page + Pagination.step + 1);
  2095. }
  2096. Pagination.Next();
  2097. Pagination.Last();
  2098. Pagination.Finish();
  2099. },
  2100. // --------------------
  2101. // Initialization
  2102. // --------------------
  2103. // binding buttons
  2104. Buttons: function(e) {
  2105. var nav = e.getElementsByTagName('a');
  2106. },
  2107. // create skeleton
  2108. Create: function(e) {
  2109. var html = [
  2110. '<div></div>' // pagination container
  2111. ];
  2112. e.innerHTML = html.join('');
  2113. Pagination.e = e.getElementsByTagName('div')[0];
  2114. Pagination.Buttons(e);
  2115. },
  2116. // init
  2117. Init: function(e, data) {
  2118. Pagination.Extend(data);
  2119. Pagination.Create(e);
  2120. Pagination.Start();
  2121. }
  2122. };
  2123. function todo__fetchRaport(id) {
  2124. /* p5WFS_GetFeature('default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', {
  2125. primaryKey: id,
  2126. resolve: 'all',
  2127. resolveDepth: 3,
  2128. }).then(function (features) {
  2129. if(DBG) console.log('features', features)
  2130. }).catch(function (e) {
  2131. if(DBG) console.warn(e)
  2132. p5UI__notifyAjaxCallback({ type: 'error', msg: e })
  2133. })*/
  2134. }
  2135. function removeFiltersPracownicy(event, btnNode) {
  2136. event.preventDefault()
  2137. var fieldNameList = FIELD_LIST_PRACOWNICY
  2138. fieldNameList.forEach(function (fieldName) {
  2139. btnNode.form[fieldName].value = ''
  2140. })
  2141. urlFetchPracownicy(1)
  2142. }
  2143. function removeFiltersKontrahenci(event, btnNode) {
  2144. event.preventDefault()
  2145. var fieldNameList = FIELD_LIST_KONTRAHENCI
  2146. fieldNameList.forEach(function (fieldName) {
  2147. btnNode.form[fieldName].value = ''
  2148. })
  2149. urlFetchKontrahenci(1)
  2150. }
  2151. function onChangeFiltersPracownicy(event, inputNode) {
  2152. urlFetchPracownicy(1)
  2153. }
  2154. function onKeypressFiltersPracownicy(event, inputNode) {
  2155. if ("Enter" === event.key) {
  2156. event.stopPropagation()
  2157. event.preventDefault()
  2158. urlFetchPracownicy(1)
  2159. return false
  2160. }
  2161. }
  2162. function onChangeFiltersKontrahenci(event, inputNode) {
  2163. urlFetchKontrahenci(1)
  2164. }
  2165. function onKeypressFiltersKontrahenci(event, inputNode) {
  2166. if ("Enter" === event.key) {
  2167. event.stopPropagation()
  2168. event.preventDefault()
  2169. urlFetchKontrahenci(1)
  2170. return false
  2171. }
  2172. }
  2173. function loadMoreRecordFunctions(event, node, rowPK, namespace) {
  2174. var _node = node
  2175. var _rowPK = rowPK
  2176. var toShow = true
  2177. if (RECORD_MORE_FUNCTIONS_OPENED_NODE) {
  2178. if (RECORD_MORE_FUNCTIONS_OPENED_NODE === node) toShow = false
  2179. if (RECORD_MORE_FUNCTIONS_OPENED_NODE !== node) {
  2180. jQuery(RECORD_MORE_FUNCTIONS_OPENED_NODE).popover('destroy')
  2181. }
  2182. }
  2183. RECORD_MORE_FUNCTIONS_OPENED_NODE = node
  2184. // jQuery(node).popover({
  2185. // container: 'body',
  2186. // placement: 'right',
  2187. // trigger: 'click',
  2188. // template: '<div class="popover" role="tooltip" style="max-width:600px;width:440px;">' +
  2189. // '<div class="arrow"></div>' +
  2190. // '<div style="display:block;position:relative;">' +
  2191. // '<div class="popover-title">' +
  2192. // '</div>' +
  2193. // '<button type="button" class="close" onclick="return hideMoreRecordFunctionsPopover();" style="position:absolute;right:8px;top:6px;">&times;</button>' +
  2194. // '</div>' +
  2195. // '<div class="popover-content"></div>' +
  2196. // '</div>' +
  2197. // '',
  2198. // html: true,
  2199. // })
  2200. // jQuery(node).popover('show')
  2201. global.fetch(BASE_URLS + 'index.php?_route=ViewTableAjax&namespace=' + namespace + '&_task=moreFunctionsCellAjax&ID=' + rowPK, {
  2202. credentials: 'same-origin'
  2203. }).then(function (response) {
  2204. return response.json()
  2205. }).then(function (json) {
  2206. var funcListWrap = $('<div></div>')
  2207. var funcListNode = $('<ul class="list-unstyled popoverRowFunctions"></ul>').appendTo(funcListWrap)
  2208. if (_node === RECORD_MORE_FUNCTIONS_OPENED_NODE) {
  2209. if (json && 'success' === json.type && json.rowFunctions && json.rowFunctions.length > 0) {
  2210. json.rowFunctions.forEach(function(funObj) {
  2211. var funcNode = p5UI_TableAjax_generateFunctionNode(funObj, _rowPK, {ico: true, label: true});
  2212. var funcItemNode = jQuery('<li></li>')
  2213. funcItemNode.append(funcNode)
  2214. funcListNode.append(funcItemNode)
  2215. });
  2216. }
  2217. }
  2218. // jQuery(RECORD_MORE_FUNCTIONS_OPENED_NODE).popover('destroy')
  2219. jQuery(RECORD_MORE_FUNCTIONS_OPENED_NODE).popover({
  2220. container: 'body',
  2221. placement: 'right',
  2222. trigger: 'click',
  2223. template: '<div class="popover" role="tooltip" style="max-width:600px;width:440px;">' +
  2224. '<div class="arrow"></div>' +
  2225. '<div style="display:block;position:relative;">' +
  2226. '<div class="popover-title">' +
  2227. '</div>' +
  2228. '<button type="button" class="close" onclick="return hideMoreRecordFunctionsPopover();" style="position:absolute;right:8px;top:6px;">&times;</button>' +
  2229. '</div>' +
  2230. '<div class="popover-content"></div>' +
  2231. '</div>' +
  2232. '',
  2233. html: true,
  2234. content: funcListWrap.html(),
  2235. })
  2236. jQuery(RECORD_MORE_FUNCTIONS_OPENED_NODE).popover('show')
  2237. }).catch(function (err) {
  2238. if(DBG) console.log('err', err);
  2239. })
  2240. }
  2241. var p5UI_TableAjax_generateFunctionNode = function(funObj, rowPK, props) {
  2242. var defaultsProps = {
  2243. ico: true,
  2244. label: false
  2245. },
  2246. props = jQuery.extend({}, defaultsProps, props);
  2247. funcNode = $('<a href="#" style="margin:0 2px;"></a>')
  2248. ;
  2249. if ('href' in funObj) funcNode.attr('href', p5Utils__format(funObj.href, [rowPK]));
  2250. if (props.ico) {
  2251. if ('ico' in funObj) funcNode.append('<span class="' + funObj.ico + '"></span>');
  2252. }
  2253. if ('onclick' in funObj) funcNode.attr('onclick', p5Utils__format(funObj.onclick, [rowPK]));
  2254. if ('title' in funObj) funcNode.attr('title', funObj.title);
  2255. if ('target' in funObj) funcNode.attr('target', funObj.target);
  2256. if (props.label) {
  2257. if ('label' in funObj) {
  2258. funcNode.append(' ' + funObj.label);
  2259. } else if ('title' in funObj) {
  2260. funcNode.append(' ' + funObj.title);
  2261. }
  2262. }
  2263. return funcNode;
  2264. };
  2265. global.p5UI_TableAjax_generateFunctionNode = p5UI_TableAjax_generateFunctionNode
  2266. function addAllMatchesToReport(event) {
  2267. switch (event.data.type) {
  2268. case 'kontrahenci': break; // OK
  2269. case 'pracownicy': break; // OK
  2270. default: throw "Wrong type";
  2271. }
  2272. var postData = {}
  2273. if ('filter_idGroup' in event.data.pagination && event.data.pagination['filter_idGroup']) postData['filter_idGroup'] = event.data.pagination['filter_idGroup']
  2274. Object.keys(event.data.pagination).filter(function (key) {
  2275. return ('f_' === key.substr(0, 2))
  2276. }).forEach(function (filterKey) {
  2277. var value = event.data.pagination[filterKey]
  2278. postData[filterKey] = value
  2279. })
  2280. var thisButton = $(this)
  2281. thisButton.attr('disabled', true)
  2282. thisButton.text( thisButton.text() + '...' )
  2283. if ('pracownicy' === event.data.type) {
  2284. p5UI__notifyAjaxCallback({ type: 'info', msg: "Pobieranie pracowników..." })
  2285. var frm = document.getElementById('filtersFieldRemoveBtn-PRACOWNICY').form
  2286. var fieldNameList = FIELD_LIST_PRACOWNICY
  2287. fieldNameList.filter(function (fieldName) {
  2288. if (!frm[fieldName] && DBG) console.log('Err missing field: "'+fieldName+'"')
  2289. return (frm[fieldName]) ? true : false
  2290. }).map(function (fieldName) {
  2291. return [ fieldName, frm[fieldName].value ]
  2292. }).filter(function (filter) {
  2293. return ( filter[1].length > 0 )
  2294. }).forEach(function (filter) {
  2295. postData[ filter[0] ] = filter[1];
  2296. })
  2297. global.fetch(URL_FETCH_PRACOWNICY_IDS_AJAX, {
  2298. credentials: 'same-origin',
  2299. method: 'POST',
  2300. headers: { 'Content-Type': 'application/json' },
  2301. body: JSON.stringify(postData)
  2302. })
  2303. .then(function __parseJSON(response) {
  2304. return response.json()
  2305. })
  2306. .then(function (json) {
  2307. if ('success' === json.type && json.body && json.body.ids) {
  2308. updateListIdBiAuditReaport('PRACOWNICY', json.body.ids.map(function (id) {
  2309. return parseInt(id)
  2310. }))
  2311. // jQuery('#body-pracownicy').find('input[name="prID[]"]').attr('checked', true)
  2312. jQuery('#body-pracownicy').find('input[name="prID[]"]').each(function (idx, inputNode) {
  2313. inputNode.checked = true;
  2314. })
  2315. thisButton.attr('disabled', false)
  2316. var txt = thisButton.text()
  2317. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  2318. updateCountItemCheckedByType('pracownicy');
  2319. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+json.body.ids.length+" pracowników" })
  2320. }
  2321. })
  2322. .catch(function (e) {
  2323. p5UI__notifyAjaxCallback({ type: 'error', msg: '' + e })
  2324. thisButton.attr('disabled', false)
  2325. var txt = thisButton.text()
  2326. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  2327. })
  2328. }
  2329. if ('kontrahenci' === event.data.type) {
  2330. p5UI__notifyAjaxCallback({ type: 'info', msg: "Pobieranie podmiotów/kontrahentów..." })
  2331. var frm = document.getElementById('filtersFieldRemoveBtn-KONTRAHENCI').form
  2332. var fieldNameList = FIELD_LIST_KONTRAHENCI
  2333. fieldNameList.filter(function (fieldName) {
  2334. if (!frm[fieldName] && DBG) console.log('Err missing field: "'+fieldName+'"')
  2335. return (frm[fieldName]) ? true : false
  2336. }).map(function (fieldName) {
  2337. return [ fieldName, frm[fieldName].value ]
  2338. }).filter(function (filter) {
  2339. return ( filter[1].length > 0 )
  2340. }).forEach(function (filter) {
  2341. postData[ filter[0] ] = filter[1];
  2342. })
  2343. global.fetch(URL_FETCH_KONTRAHENCI_IDS_AJAX, {
  2344. credentials: 'same-origin',
  2345. method: 'POST',
  2346. headers: { 'Content-Type': 'application/json' },
  2347. body: JSON.stringify(postData)
  2348. })
  2349. .then(function __parseJSON(response) {
  2350. return response.json()
  2351. })
  2352. .then(function (json) {
  2353. if ('success' === json.type && json.body && json.body.ids) {
  2354. updateListIdBiAuditReaport('KONTRAHENCI', json.body.ids.map(function (id) {
  2355. return parseInt(id)
  2356. }))
  2357. // jQuery('#body-kontrahenci').find('input[name="kontrID[]"]').attr('checked', true); // Not working
  2358. jQuery('#body-kontrahenci').find('input[name="kontrID[]"]').each(function (idx, inputNode) {
  2359. inputNode.checked = true;
  2360. })
  2361. thisButton.attr('disabled', false);
  2362. var txt = thisButton.text()
  2363. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  2364. updateCountItemCheckedByType('kontrahenci');
  2365. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+json.body.ids.length+" kontrahentów" })
  2366. }
  2367. })
  2368. .catch(function (e) {
  2369. p5UI__notifyAjaxCallback({ type: 'error', msg: '' + e })
  2370. thisButton.attr('disabled', false)
  2371. var txt = thisButton.text()
  2372. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  2373. });
  2374. }
  2375. }
  2376. function mock_error__fetchLastReports(id) {
  2377. return new Promise(function (resolve) {
  2378. throw "Wystąpił błąd, spróbuj ponownie później"
  2379. })
  2380. }
  2381. function mock__fetchLastReports(id) {
  2382. return new Promise(function (resolve) {
  2383. var fakeResponse = '{"type":"success","msg":"ostatnie raporty","body":{"items":[{"id":"103","adnotacje":"raport pani x","totalPracownicy":"1","totalKontrahenci":"2"},{"id":"102","adnotacje":"test","totalPracownicy":"1","totalKontrahenci":"1"},{"id":"101","adnotacje":"Zuranski test all 7","totalPracownicy":"1","totalKontrahenci":"9307"},{"id":"100","adnotacje":"kike all 4","totalPracownicy":"5","totalKontrahenci":"9305"},{"id":"99","adnotacje":"test pracownik z KRS bez celu 3","totalPracownicy":"1","totalKontrahenci":"9305"}]}}';
  2384. var json = JSON.parse(fakeResponse);
  2385. var items = json.body.items;
  2386. console.log('items', items)
  2387. setTimeout(function () {
  2388. console.log('resolve items', items)
  2389. resolve(items);
  2390. }, 500);
  2391. });
  2392. }
  2393. function fetchLastReports(id) {
  2394. return global.fetch(URL_FETCH_LAST_REPORTS_AJAX, {
  2395. credentials: 'same-origin',
  2396. method: 'POST',
  2397. headers: { 'Content-Type': 'application/json' },
  2398. body: JSON.stringify({ id: id })
  2399. })
  2400. .then(function __parseJSON(response) {
  2401. return response.json()
  2402. })
  2403. .then(function (json) {
  2404. if ('success' === json.type && json.body && json.body.items) {
  2405. if (!json.body.items.length) throw "Brak danych"
  2406. return json.body.items;
  2407. }
  2408. throw "Wystąpił błąd, spróbuj ponownie później.";
  2409. })
  2410. }
  2411. function fetchPracownicyIdsByReport(id) {
  2412. return global.fetch(URL_FETCH_PRACOWNICY_IDS_BY_REPORT_AJAX, {
  2413. credentials: 'same-origin',
  2414. method: 'POST',
  2415. headers: { 'Content-Type': 'application/json' },
  2416. body: JSON.stringify({ id: id })
  2417. })
  2418. .then(function __parseJSON(response) {
  2419. return response.json()
  2420. })
  2421. .then(function (json) {
  2422. if ('success' === json.type && json.body && json.body.ids) {
  2423. if (!json.body.ids.length) throw "Brak danych"
  2424. return json.body.ids;
  2425. }
  2426. throw "Wystąpił błąd, spróbuj ponownie później.";
  2427. })
  2428. }
  2429. function fetchKontrahenciIdsByReport(id) {
  2430. return global.fetch(URL_FETCH_KONTRAHENCI_IDS_BY_REPORT_AJAX, {
  2431. credentials: 'same-origin',
  2432. method: 'POST',
  2433. headers: { 'Content-Type': 'application/json' },
  2434. body: JSON.stringify({ id: id })
  2435. })
  2436. .then(function __parseJSON(response) {
  2437. return response.json()
  2438. })
  2439. .then(function (json) {
  2440. if ('success' === json.type && json.body && json.body.ids) {
  2441. if (!json.body.ids.length) throw "Brak danych"
  2442. return json.body.ids;
  2443. }
  2444. throw "Wystąpił błąd, spróbuj ponownie później.";
  2445. })
  2446. }
  2447. function addToReportByPreviousReport(event) {
  2448. var pageType = (event.data.type) ? event.data.type : '';
  2449. switch (pageType) {
  2450. case 'pracownicy': break; // OK
  2451. case 'kontrahenci': break; // OK
  2452. default: throw "Wrong type";
  2453. }
  2454. var thisButton = $(this)
  2455. thisButton.attr('disabled', true)
  2456. thisButton.text( thisButton.text() + '...' )
  2457. function this__enableButton() {
  2458. thisButton.attr('disabled', false)
  2459. var txt = thisButton.text()
  2460. thisButton.text( '...' === txt.substr(-3) ? txt.substr(0, txt.length - 3) : txt )
  2461. }
  2462. var lastReportOptions = new Promise(function (resolve) {
  2463. fetchLastReports() // TODO: TEST remote `mock__`
  2464. .then(function (items) {
  2465. var options = {};
  2466. items.forEach(function (item) {
  2467. var label = "Nr " + item.id + ": " + item.adnotacje + " ";
  2468. var total = 0;
  2469. switch (pageType) {
  2470. case 'pracownicy': total = parseInt(item.totalPracownicy); break;
  2471. case 'kontrahenci': total = parseInt(item.totalKontrahenci); break;
  2472. }
  2473. label += ( total > 0 ? "(" + total + ")" : "brak");
  2474. options['raport-'+item.id] = label;
  2475. });
  2476. resolve(options);
  2477. })
  2478. .catch(function (e) {
  2479. swal.showValidationError(''+e)
  2480. swal.hideLoading();
  2481. resolve();
  2482. })
  2483. });
  2484. swal({
  2485. title: "Dodaj " + ('pracownicy' === pageType ? "praconików" : "kontrahentów") + " do analizy",
  2486. showCancelButton: true,
  2487. cancelButtonText: "Anuluj",
  2488. showConfirmButton: true,
  2489. confirmButtonText: "Wybierz",
  2490. focusCancel: true,
  2491. width: 600,
  2492. input: 'select',
  2493. inputOptions: lastReportOptions,
  2494. inputClass: "form-control input-lg",
  2495. preConfirm: function (selected) {
  2496. var id = parseInt(selected.substr('raport-'.length));
  2497. swal.showLoading();
  2498. if ('pracownicy' === pageType) {
  2499. return new Promise(function (resolve) {
  2500. fetchPracownicyIdsByReport(id)
  2501. .then(function (ids) {
  2502. updateListIdBiAuditReaport('PRACOWNICY', ids.map(function (id) {
  2503. return parseInt(id)
  2504. }))
  2505. ids.forEach(function (id) {
  2506. jQuery('#body-pracownicy').find('input[name="prID[]"][value="'+id+'"]').each(function (idx, inputNode) {
  2507. inputNode.checked = true;
  2508. })
  2509. })
  2510. updateCountItemCheckedByType('pracownicy');
  2511. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+ids.length+" pracowników" })
  2512. resolve();
  2513. })
  2514. .catch(function (e) {
  2515. swal.showValidationError(''+e)
  2516. swal.hideLoading();
  2517. resolve();
  2518. });
  2519. });
  2520. } else if ('kontrahenci' === pageType) {
  2521. return new Promise(function (resolve) {
  2522. fetchKontrahenciIdsByReport(id)
  2523. .then(function (ids) {
  2524. updateListIdBiAuditReaport('KONTRAHENCI', ids.map(function (id) {
  2525. return parseInt(id)
  2526. }))
  2527. ids.forEach(function (id) {
  2528. jQuery('#body-kontrahenci').find('input[name="kontrID[]"][value="'+id+'"]').each(function (idx, inputNode) {
  2529. inputNode.checked = true;
  2530. })
  2531. })
  2532. updateCountItemCheckedByType('kontrahenci');
  2533. p5UI__notifyAjaxCallback({ type: 'success', msg: "Dodano "+ids.length+" kontrahentów" })
  2534. resolve();
  2535. })
  2536. .catch(function (e) {
  2537. swal.showValidationError(''+e)
  2538. swal.hideLoading();
  2539. resolve();
  2540. });
  2541. });
  2542. } else return true;
  2543. },
  2544. // inputValidator: (value) => {
  2545. // return !value && 'Proszę wybrać raport'
  2546. // }
  2547. // html: '<p>Ostatnie raporty:</p>' + '<ul id="' + uniqHtmlId + '"></ul></p>',
  2548. }).then(function (selected) {
  2549. this__enableButton();
  2550. }).catch(function (e) {
  2551. this__enableButton();
  2552. })
  2553. }
  2554. $(document).ready(function(){
  2555. DBG && console.warn('DBG:: SET window[STORE_NAME]', { store: window[STORE_NAME], STORE_NAME: STORE_NAME, globalRaportStore })
  2556. ReactDOM.render(
  2557. h(P5UI__BocianHeader, {
  2558. store: globalRaportStore
  2559. }),
  2560. document.getElementById('bi_audit_header')
  2561. );
  2562. rootChangeForm();
  2563. updateTopCounters();
  2564. var unsubscribe = globalRaportStore.subscribe(function () {
  2565. // TODO: fetch data from globalRaportStore.getState()
  2566. // var defaultState = global[STORE_NAME + '__defaults']();
  2567. })
  2568. $(window).on('hashchange', function() {
  2569. DBG && console.warn("$(window).on('hashchange', ...")
  2570. rootChangeForm();
  2571. updateTopCounters();
  2572. hideMoreRecordFunctionsPopover()
  2573. });
  2574. });
  2575. global.hideMoreRecordFunctionsPopover = function() {
  2576. if (RECORD_MORE_FUNCTIONS_OPENED_NODE) jQuery(RECORD_MORE_FUNCTIONS_OPENED_NODE).popover('destroy')
  2577. }
  2578. global.pracownicyLoadMoreRecordFunctions = function(event, node, rowPK) {
  2579. return loadMoreRecordFunctions(event, node, rowPK, "default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY")
  2580. }
  2581. global.kontrahenciLoadMoreRecordFunctions = function(event, node, rowPK) {
  2582. return loadMoreRecordFunctions(event, node, rowPK, "default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI")
  2583. }
  2584. global.removeFiltersPracownicy = removeFiltersPracownicy;
  2585. global.removeFiltersKontrahenci = removeFiltersKontrahenci;
  2586. global.onChangeFiltersPracownicy = onChangeFiltersPracownicy;
  2587. global.onKeypressFiltersPracownicy = onKeypressFiltersPracownicy;
  2588. global.onChangeFiltersKontrahenci = onChangeFiltersKontrahenci;
  2589. global.onKeypressFiltersKontrahenci = onKeypressFiltersKontrahenci;
  2590. global.checkAll = checkAll;
  2591. global.checkedChoiseItems = checkedChoiseItems;
  2592. global.catchEventCheckbox = catchEventCheckbox;
  2593. global.clearSelectedCheckbox = clearSelectedCheckbox;
  2594. global.getNameGroupById = getNameGroupById;
  2595. global.createGroupPracownicy = createGroupPracownicy;
  2596. global.createGroupKontrahenci = createGroupKontrahenci;
  2597. global.selectPage = selectPage;
  2598. global.detectChoiseFilter = detectChoiseFilter;
  2599. global.updateListIdBiAuditReaport = updateListIdBiAuditReaport;
  2600. global.deleteListIdBiAuditReaport = deleteListIdBiAuditReaport;
  2601. global.urlFetchPracownicy = urlFetchPracownicy;
  2602. global.urlFetchKontrahenci = urlFetchKontrahenci;
  2603. global.getAddressData = getAddressData;
  2604. global.Pagination = Pagination;
  2605. global.todo__fetchRaport = todo__fetchRaport;
  2606. global.setItemLocalStorage = setItemLocalStorage;
  2607. global.getItemLocalStorage = getItemLocalStorage;
  2608. global.deleteItemLocalStorage = deleteItemLocalStorage;
  2609. global.removeItemInArray = removeItemInArray;
  2610. global.removeItemArrayInArray = removeItemArrayInArray;
  2611. global.addPracownikToGroup = addPracownikToGroup;
  2612. global.addPracownikAllToGroup = addPracownikAllToGroup;
  2613. global.addKontrahenciToGroup = addKontrahenciToGroup;
  2614. global.addKontrahenciAllToGroup = addKontrahenciAllToGroup;
  2615. global.createPracownikAjax = createPracownikAjax;
  2616. global.createKontrahentAjax = createKontrahentAjax;
  2617. global.removePracownikFromGroup = removePracownikFromGroup;
  2618. global.removeKontrahenciFromGroup = removeKontrahenciFromGroup;
  2619. global.showViewUploadFile = showViewUploadFile;
  2620. global.parseCsvFile = parseCsvFile;
  2621. global.clearListLocalStorageByType = clearListLocalStorageByType;
  2622. // message
  2623. global.messageCriticalSearchData = 'Krytyczne wielkości danych do przeszukania. Optymalna wartość głębokość szukania powiaząń to: 6';