procesEditor.js 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176
  1. $(document).ready(function() {
  2. $("#main").after("<button type=button id=saveBtn class='btn btn-default text-center'>Zapisz zmiany</button>");
  3. var deletedId = new Array();
  4. var generatedId = new Array();
  5. var deletedRes = new Array();
  6. var perms = [
  7. [1, "Kto wykonuje", "X"],
  8. [2, "Tylko do odczytu", "R"],
  9. [3, "Odczyt, zapis, wykonanie", "R,W,X"],
  10. [4, "Odczyt, zapis, wykonanie, tworzenie", "R,W,X,C"],
  11. [5, "Odczyt i wyknanie", "R,X"],
  12. [6, "Tylko do odczytu", "R"],
  13. [7, "MAPA PROCESU - opis mapy procesu", ""],
  14. [9, "Tylko do tworzenia rekordu", "C"],
  15. [10, "Tylko tworzenie i czytanie rekordów bez edycji", "R,X,C"],
  16. [11, "Tylko edycja rekordu - ustalanie nowej wartosci", "W"],
  17. [12, "Tylko edycja i dodanie rekordu - ustalanie nowej wartosci", "W,C"],
  18. [13, "Nowy rekord i edycja z pominieciem A_ADM_COMPANY", "R,W,X,C,S"],
  19. [14, "Widok tylko swoich danych z rekordu", "W,O"],
  20. [15, "Edycja rekordów dla super admina", "R,W,C,S"],
  21. [16, "Widok i dodawanie rekordów tylko dla swojego ADM_COMPANY", "C,O"],
  22. [17, "Super widok wszystkich rekordow niezaleznie od uprawnien rekordu", "R,V"],
  23. [18, "Administracja Edycja i widok wszystkich rekordow z pominieciem A", "R,W,X,S,V"],
  24. [19, "Administracja Edycja Tworzenie i widok wszystkich rekordow z pom", "R,W,X,C,S,V"],
  25. [20, "Export", "R,X,E"],
  26. [21, "Widzenie tylko swoich rekordów", "O"]
  27. ];
  28. var loaded = false;
  29. var tab = new Array(); //tablica kolejnosci
  30. //var mainProces_id = 1; //id procesu glownego. Potem bedzie przypisywane z linku
  31. var actSite = "none";
  32. showPreview();
  33. var filtr = 0;
  34. var selectedArea = false;
  35. var sZasoby;
  36. var lastSearch = "";
  37. var newSteps = 0;
  38. var newRes = 0;
  39. $("#main").hide();
  40. $("#saveBtn").hide();
  41. function loadResources() {
  42. var res = new Array();
  43. var sFiltr = "";
  44. var link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_WSKAZNIK&SRSNAME=EPSG:3003&sortBy=SORT_PRIO+A';
  45. //console.log("link "+link);
  46. sFiltr += `
  47. <GetFeature xmlns="http://www.opengis.net/wfs/2.0"
  48. xmlns:p5_default_db="` + BASE_URL + `wfs/default_db"
  49. xmlns:ogc="http://www.opengis.net/ogc"
  50. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  51. service="WFS"
  52. version="2.0.2"
  53. xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
  54. <ogc:Filter>
  55. <ogc:And>
  56. <ogc:Or>`;
  57. $("#main").children().each(function(index) {
  58. var id = $(this).data("id");
  59. sFiltr += '<ogc:PropertyIsEqualTo><ogc:PropertyName>ID_PROCES</ogc:PropertyName><ogc:Literal>' + id + '</ogc:Literal></ogc:PropertyIsEqualTo>';
  60. });
  61. sFiltr += '</ogc:Or><ogc:Not><ogc:PropertyIsEqualTo><ogc:PropertyName>A_STATUS</ogc:PropertyName><ogc:Literal>DELETED</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Not></ogc:And></ogc:Filter></GetFeature>';
  62. //console.log("x "+sFiltr);
  63. $.ajax({
  64. url: link,
  65. data: sFiltr,
  66. type: 'POST',
  67. contentType: "text/xml",
  68. dataType: "xml",
  69. success: function(data) {
  70. //console.log(data);
  71. $.each($(data).find("featureMember"), function() {
  72. var result = new Array();
  73. result["ID"] = $(this).find("ID").text();
  74. result["ID_ZASOB"] = $(this).find("ID_ZASOB").text();
  75. result["ID_PROCES"] = $(this).find("ID_PROCES").text();
  76. result["SORT_PRIO"] = $(this).find("SORT_PRIO").text();
  77. result["ID_PRZYPADEK"] = $(this).find("ID_PRZYPADEK").text();
  78. result["OPIS_ZASOB"] = $(this).find("OPIS_ZASOB").text();
  79. res.push(result);
  80. });
  81. //console.log(res);
  82. var sFiltr2 = "";
  83. var link2 = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_LISTA_ZASOBOW&SRSNAME=EPSG:3003';
  84. sFiltr2 += `
  85. <GetFeature xmlns="http://www.opengis.net/wfs/2.0"
  86. xmlns:p5_default_db="` + BASE_URL + `wfs/default_db"
  87. xmlns:ogc="http://www.opengis.net/ogc"
  88. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  89. service="WFS"
  90. version="2.0.2"
  91. xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
  92. <ogc:Filter>
  93. <ogc:Or>`;
  94. $.each(res, function(index, value) {
  95. var id = res[index]["ID_ZASOB"];
  96. sFiltr2 += `
  97. <ogc:PropertyIsEqualTo>
  98. <ogc:PropertyName>ID</ogc:PropertyName>
  99. <ogc:Literal>` + id + `</ogc:Literal>
  100. </ogc:PropertyIsEqualTo>`;
  101. });
  102. sFiltr2 += `
  103. </ogc:Or>
  104. </ogc:Filter>
  105. </GetFeature>`;
  106. //console.log(sFiltr2);
  107. //console.log(link2);
  108. var zasobInfo = new Array();
  109. $.ajax({
  110. url: link2,
  111. data: sFiltr2,
  112. type: 'POST',
  113. contentType: "text/xml",
  114. dataType: "xml",
  115. success: function(data2) {
  116. //console.log("data");
  117. //console.log(data2);
  118. $.each($(data2).find("featureMember"), function() {
  119. //console.log();
  120. zasobInfo[$(this).find("ID").text()] = new Array();
  121. zasobInfo[$(this).find("ID").text()]["DESC"] = $(this).find("DESC").text();
  122. zasobInfo[$(this).find("ID").text()]["OPIS"] = $(this).find("OPIS").text();
  123. zasobInfo[$(this).find("ID").text()]["TYPE"] = $(this).find("TYPE").text();
  124. });
  125. //console.log(res);
  126. $.each(res, function(index, value) {
  127. var type;
  128. if (zasobInfo[res[index]["ID_ZASOB"]]["TYPE"] == "DZIAL" || zasobInfo[res[index]["ID_ZASOB"]]["TYPE"] == "STANOWISKO" || zasobInfo[res[index]["ID_ZASOB"]]["TYPE"] == "PODMIOT") {
  129. type = $("#proc" + res[index]["ID_PROCES"]).find(".professions");
  130. } else {
  131. type = $("#proc" + res[index]["ID_PROCES"]).find(".resources");
  132. }
  133. $(type).append("<li data-zasob=" + res[index]["ID_ZASOB"] + " data-id=" + res[index]["ID"] + " data-przypadek=" + res[index]["ID_PRZYPADEK"] + " data-komentarz='" + res[index]["OPIS_ZASOB"] + "'><b>" + zasobInfo[res[index]["ID_ZASOB"]]["DESC"] + "</b> " + zasobInfo[res[index]["ID_ZASOB"]]["OPIS"] + " [" + res[index]["ID_ZASOB"] + "] <span aria-hidden='true' class='glyphicon glyphicon-edit btnEdit' title='Edytuj wskaźnik' style=font-size:12px;></span> <span class='glyphicon glyphicon-remove-sign delRes' title='Usuń wskaźnik' style=color:red;font-size:12px; aria-hidden='true' ></span> <span class='glyphicon glyphicon-arrow-up uArrowRes' title='Przesuń wskaźnik w górę' aria-hidden='true'></span> <span class='glyphicon glyphicon-arrow-down dArrowRes' title='Przesuń wskaźnik w dół' aria-hidden='true'></span></li>");
  134. $(type).parents("dl").show();
  135. updateArrows(type);
  136. });
  137. }
  138. });
  139. }
  140. });
  141. }
  142. $(document).ajaxStop(function() {
  143. if (loaded)
  144. return;
  145. //alert("OK");
  146. loaded = true;
  147. $(".drop").find("dl").hide();
  148. loadResources();
  149. $("#main").show();
  150. $("#saveBtn").show();
  151. });
  152. //Saveaction
  153. $(document).on('click', '#saveBtn', function() {
  154. $("#saveBtn").prop('disabled', true);
  155. //console.log("Saving has been started");
  156. var genReq = `
  157. <Transaction
  158. xmlns="http://www.opengis.net/wfs"
  159. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  160. version="1.0.0"
  161. service="WFS"
  162. xmlns:p5_default_db="` + BASE_URL + `wfs/default_db/CRM_PROCES"
  163. xsi:schemaLocation="` + BASE_URL + `wfs/default_db/CRM_PROCES ` + BASE_URL + `dev-pl/se-feature-api/wfs.php/xml/wfs/default_db/CRM_PROCES/?SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=p5_default_db:CRM_PROCES&amp;SRSNAME=EPSG:4326&amp;"
  164. xmlns:gml="http://www.opengis.net/gml">
  165. `;
  166. $("#main").children().each(function() {
  167. if ($(this).data("id") < 0) {
  168. genReq += `
  169. <Insert xmlns="http://www.opengis.net/wfs">
  170. <CRM_PROCES xmlns="` + BASE_URL + `wfs/default_db/CRM_PROCES">
  171. <PARENT_ID xmlns="` + BASE_URL + `wfs/default_db/CRM_PROCES">-1</PARENT_ID>
  172. </CRM_PROCES>
  173. </Insert>`;
  174. }
  175. });
  176. genReq += '</Transaction>';
  177. //console.log("genReq: " + genReq)
  178. var link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&';
  179. //console.log(link);
  180. $.ajax({
  181. url: link,
  182. data: genReq,
  183. type: 'POST',
  184. contentType: "text/xml",
  185. dataType: "text",
  186. success: function(data) {
  187. //console.log("x: " + data);
  188. $(data).find("[fid]").each(function(i, e) {
  189. var newId = $(e).attr("fid").substr($(e).attr("fid").indexOf('.') + 1);
  190. generatedId.push(newId);
  191. });
  192. //console.log(generatedId[0]);
  193. var i = 0;
  194. var newIdTab = Array();
  195. //console.log(generatedId);
  196. $("#main").children().each(function() {
  197. if ($(this).data("id") < 0) {
  198. newIdTab[$(this).data("id")] = generatedId[i];
  199. i++;
  200. }
  201. });
  202. //console.log(newIdTab);
  203. var request = `
  204. <Transaction
  205. xmlns="http://www.opengis.net/wfs"
  206. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  207. version="1.0.0"
  208. service="WFS"
  209. xmlns:p5_default_db="` + BASE_URL + `wfs/default_db/CRM_PROCES"
  210. xsi:schemaLocation="` + BASE_URL + `wfs/default_db/CRM_PROCES ` + BASE_URL + `dev-pl/se-feature-api/wfs.php/xml/wfs/default_db/CRM_PROCES/?SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=p5_default_db:CRM_PROCES&amp;SRSNAME=EPSG:4326&amp;"
  211. xmlns:gml="http://www.opengis.net/gml">
  212. `;
  213. $("#main").children().each(function() {
  214. request += `
  215. <Insert xmlns="http://www.opengis.net/wfs">
  216. <CRM_PROCES xmlns="` + BASE_URL + `wfs/default_db/CRM_PROCES">
  217. `;
  218. if ($(this).data("id") >= 0)
  219. request += '<ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + $(this).data("id") + '</ID>';
  220. else
  221. request += '<ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + newIdTab[$(this).data("id")] + '</ID>';
  222. if ($(this).data("parent_id") != false) {
  223. if ($(this).data("parent_id") >= 0)
  224. request += '<PARENT_ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + $(this).data("parent_id") + '</PARENT_ID>';
  225. else
  226. request += '<PARENT_ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + newIdTab[$(this).data("parent_id")] + '</PARENT_ID>';
  227. request += '<SORT_PRIO xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + $(this).data("SORT_PRIO") + '</SORT_PRIO>';
  228. }
  229. request += '<DESC xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + $(this).find(".hdesc").text() + '</DESC>';
  230. request += '<OPIS xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + $(this).find(".sdesc").text() + '</OPIS>';
  231. request += `
  232. </CRM_PROCES>
  233. </Insert>
  234. `;
  235. var id;
  236. if ($(this).data("id") >= 0)
  237. id = $(this).data("id");
  238. else
  239. id = newIdTab[$(this).data("id")];
  240. var sort_prio = 0;
  241. $(this).find(".professions,.resources").find("li").each(function() {
  242. sort_prio++;
  243. request += `
  244. <Insert xmlns="http://www.opengis.net/wfs">
  245. <CRM_WSKAZNIK xmlns="` + BASE_URL + `wfs/default_db/CRM_WSKAZNIK">
  246. `;
  247. if ($(this).data("id") >= 0) {
  248. request += '<ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + $(this).data("id") + '</ID>';
  249. }
  250. request += '<ID_ZASOB xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + $(this).data("zasob") + '</ID_ZASOB>';
  251. request += '<ID_PROCES xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + id + '</ID_PROCES>';
  252. request += '<ID_PRZYPADEK xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + $(this).data("przypadek") + '</ID_PRZYPADEK>';
  253. var opis = $(this).data("komentarz");
  254. opis = opis.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&apos;');
  255. request += '<SORT_PRIO xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + sort_prio + '</SORT_PRIO>';
  256. request += '<OPIS_ZASOB xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + opis + '</OPIS_ZASOB>';
  257. request += `
  258. </CRM_WSKAZNIK>
  259. </Insert>
  260. `;
  261. });
  262. });
  263. $.each(deletedId, function(key, value) {
  264. request += `
  265. <Insert xmlns="http://www.opengis.net/wfs">
  266. <CRM_PROCES xmlns="` + BASE_URL + `wfs/default_db/CRM_PROCES">
  267. `;
  268. request += '<ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">' + value + '</ID>';
  269. request += '<PARENT_ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">-1</PARENT_ID>';
  270. request += '<A_STATUS xmlns="' + BASE_URL + 'wfs/default_db/CRM_PROCES">DELETED</A_STATUS>';
  271. request += `
  272. </CRM_PROCES>
  273. </Insert>
  274. `;
  275. });
  276. $.each(deletedRes, function(key, value) {
  277. request += `
  278. <Insert xmlns="http://www.opengis.net/wfs">
  279. <CRM_WSKAZNIK xmlns="` + BASE_URL + `wfs/default_db/CRM_WSKAZNIK">
  280. `;
  281. request += '<ID xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">' + value + '</ID>';
  282. request += '<A_STATUS xmlns="' + BASE_URL + 'wfs/default_db/CRM_WSKAZNIK">DELETED</A_STATUS>';
  283. request += `
  284. </CRM_WSKAZNIK>
  285. </Insert>
  286. `;
  287. });
  288. request += '</Transaction>';
  289. //console.log(request); console.log(link);
  290. $.ajax({
  291. url: link,
  292. data: request,
  293. type: 'POST',
  294. contentType: "text/xml",
  295. dataType: "text",
  296. success: function(data) {
  297. //console.log(data);
  298. deletedRes = [];
  299. deletedId = [];
  300. showPreview();
  301. $("#saveBtn").prop('disabled', false);
  302. },
  303. error: function(xhr, ajaxOptions, thrownError) {
  304. $.notify("Brak połączenia z bazą danych", "error");
  305. }
  306. });
  307. },
  308. error: function(xhr, ajaxOptions, thrownError) {
  309. $.notify("Brak połączenia z bazą danych", "error");
  310. }
  311. });
  312. });
  313. $(document).on('click', '.btnEdit', function() {
  314. var zasob = $(this).parents("li");
  315. var permsOpt = "";
  316. $.each(perms, function(key, value) {
  317. if ($(zasob).data("przypadek") == value[0])
  318. permsOpt = permsOpt + "<option value=" + value[0] + " selected=selected>[" + value[2] + "] " + value[1] + "</option>";
  319. else
  320. permsOpt = permsOpt + "<option value=" + value[0] + ">[" + value[2] + "] " + value[1] + "</option>";
  321. })
  322. swal({
  323. showCancelButton: true,
  324. title: 'Uprawnienia',
  325. html: 'Uprawnienia<br><select class=form-control id="swal-input1">' + permsOpt + '</select>' +
  326. 'Komentarz<br><input class=form-control id="swal-input2" class="swal2-input" value="' + $(zasob).data("komentarz") + '">',
  327. preConfirm: function() {
  328. return new Promise(function(resolve) {
  329. resolve([
  330. $('#swal-input1').val(),
  331. $('#swal-input2').val()
  332. ]);
  333. });
  334. }
  335. }).then(function(result) {
  336. $(zasob).data("przypadek", result[0]);
  337. $(zasob).data("komentarz", result[1]);
  338. }).catch(function(e) {})
  339. });
  340. //Buttony i ich zadania
  341. $(document).on('click', '.step', function() {
  342. newSteps--;
  343. var main = false;
  344. if ($(this).parents(".drop").data("id") === mainProces_id)
  345. main = true;
  346. $(this).parents(".drop").after("<div class='drop container-fluid' id='proc" + newSteps + "'></div>");
  347. $("#proc" + newSteps).data("id", newSteps);
  348. $("#proc" + newSteps).append("<div class='col-sm-1 options' id=opt" + newSteps + "></div>");
  349. $("#opt" + newSteps).append("<span class='glyphicon glyphicon-remove-sign ico del' title='Usuń krok' style=color:red; aria-hidden='true'></span>");
  350. //Arrows
  351. $("#opt" + newSteps).append("<span class='glyphicon glyphicon-arrow-up ico uArrow' title='Przesuń krok w górę' aria-hidden='true'></span>");
  352. $("#opt" + newSteps).append("<span class='glyphicon glyphicon-arrow-down ico dArrow' title='Przesuń krok w dół' aria-hidden='true'></span>");
  353. $("#opt" + newSteps).append("<span class='glyphicon glyphicon-arrow-right ico rArrow' title='Przesuń krok w prawo' aria-hidden='true'></span>");
  354. $("#opt" + newSteps).append("<span class='glyphicon glyphicon-arrow-left ico lArrow' title='Przesuń krok w lewo' aria-hidden='true'></span>");
  355. //
  356. $("#opt" + newSteps).append("<div class='clearfix'></div>");
  357. $("#proc" + newSteps).append("<div class='col-sm-10 desc' id='desc" + newSteps + "' ><h4 class=changed><span class='stepDesc'></span><span class=hdesc>Nowy krok</span> <span class=ids>{?}</span></h4><span class=sdesc>Opis nowego kroku</span></div>");
  358. $("#proc" + newSteps).append("<div class='clearfix'></div>");
  359. $("#desc" + newSteps).append("<dl class='dl-horizontal'><dt>Stanowiska</dt><dd><ul class=professions></ul></dd></dl>");
  360. $("#desc" + newSteps).append("<dl class='dl-horizontal'><dt>Użyte zasoby</dt><dd><ul class=resources></ul></dd></dl>");
  361. if (!main)
  362. $("#proc" + newSteps).data("parent_id", $(this).parents(".drop").data("parent_id"));
  363. else
  364. $("#proc" + newSteps).data("parent_id", mainProces_id);
  365. $("#desc" + newSteps).append("<br><span class=step>Dodaj nowy krok</span>");
  366. tab.push(newSteps);
  367. var parent_id = $("#proc" + newSteps).data("parent_id");
  368. //console.log(parent_id);
  369. $("#proc" + newSteps).data("depth", $("#proc" + parent_id).data("depth") + 1);
  370. //var depthWidth = 20 * $("#proc" + this.id).data("depth");
  371. //$("#proc" + this.id).css("padding-left", depthWidth + "px");
  372. $("#proc" + newSteps).find("dl").hide();
  373. updateX();
  374. updateAll();
  375. });
  376. $(document).on('keyup', '#sZasoby', function() {
  377. if ($(this).val() != lastSearch) {
  378. lastSearch = $(this).val();
  379. clearTimeout(sZasoby);
  380. sZasoby = setTimeout(function() {
  381. searchRes();
  382. }, 300);
  383. }
  384. });
  385. function updateArrows(node){
  386. $(node).find("li").each(function(){
  387. if($(this).prev().length == 0){
  388. $(this).find(".uArrowRes").hide();
  389. }else {
  390. $(this).find(".uArrowRes").show();
  391. }
  392. if($(this).next().length == 0){
  393. $(this).find(".dArrowRes").hide();
  394. }else{
  395. $(this).find(".dArrowRes").show();
  396. }
  397. });
  398. }
  399. $(document).on('click', '.uArrowRes', function() {
  400. var node = $(this).parents("li");
  401. node.insertBefore(node.prev());
  402. updateArrows(node.parents("ul"));
  403. });
  404. $(document).on('click', '.dArrowRes', function() {
  405. var node = $(this).parents("li");
  406. node.insertAfter(node.next());
  407. updateArrows(node.parents("ul"));
  408. });
  409. $(document).on('click', '.uArrow', function() {
  410. var node = $(this).parent().parent();
  411. node.insertBefore(node.prev());
  412. updateX();
  413. updateAll();
  414. });
  415. $(document).on('click', '.dArrow', function() {
  416. var node = $(this).parent().parent();
  417. node.insertAfter(node.next());
  418. updateX();
  419. updateAll();
  420. });
  421. $(document).on('click', '.rArrow', function() {
  422. var node = $(this).parent().parent();
  423. $(node).data("depth", $(node).data("depth") + 1);
  424. //var depthWidth = 20 * $(node).data("depth");
  425. // $(node).css("padding-left", depthWidth + "px");
  426. updateAll();
  427. });
  428. $(document).on('click', '.lArrow', function() {
  429. var node = $(this).parent().parent();
  430. $(node).data("depth", $(node).data("depth") - 1);
  431. //var depthWidth = 20 * $(node).data("depth");
  432. //$(node).css("padding-left", depthWidth + "px");
  433. updateAll();
  434. });
  435. $(document).on('click', '#btnZasoby', function(e) {
  436. e.preventDefault();
  437. zasoby();
  438. $("#wrapper").toggleClass("toggled");
  439. });
  440. $(document).on('click', 'body', function() {
  441. if (selectedArea != false) {
  442. var content = $(selectedArea).val();
  443. var type;
  444. if ($(selectedArea).parent().hasClass("hdesc")) {
  445. type = "DESC";
  446. $(selectedArea).parents("h4").addClass("changed");
  447. }
  448. if ($(selectedArea).parent().hasClass("sdesc")) {
  449. $(selectedArea).parents(".sdesc").addClass("changed");
  450. type = "OPIS";
  451. }
  452. var id = (selectedArea).parents(".drop").data("id");
  453. var post = '<Transaction xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" xmlns:p5_default_db_13051="' + BASE_URL + '" service="WFS" xsi:schemaLocation="' + BASE_URL + ' ' + BASE_URL + 'dev-pl/se-feature-api/wfs.php/xml/wfs/default_db/?SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=p5_default_db_13051:TEST_PERMS&amp;SRSNAME=EPSG:3003" xmlns:gml="http://www.opengis.net/gml"> <Update xmlns="http://www.opengis.net/wfs" typeName="p5_default_db_13051:CRM_PROCES"> <Property xmlns="http://www.opengis.net/wfs"><Name xmlns="http://www.opengis.net/wfs">' + content + '</Name> <Value xmlns="http://www.opengis.net/wfs"></Value></Property><Filter xmlns="http://www.opengis.net/ogc"><FeatureId xmlns="http://www.opengis.net/ogc" fid="CRM_PROCES.' + id + '"/></Filter></Update></Transaction>';
  454. //console.log("Nowy "+type+" dla id "+id+" to "+content);
  455. if (content == "" && type == "OPIS") {
  456. $(selectedArea).parent().after("<span class=sDescAdd>Dodaj opis</span>");
  457. }
  458. if (content == "" && type == "DESC") {
  459. $(selectedArea).parent().after("<span class=hDescAdd>Dodaj opis</span>");
  460. }
  461. $(selectedArea).parent().html(content);
  462. selectedArea = false;
  463. }
  464. });
  465. $(document).on('click', '.hdesc', function() {
  466. if ($(this).find("textarea").is(selectedArea))
  467. return false;
  468. });
  469. $(document).on('click', '.sdesc', function() {
  470. if ($(this).find("textarea").is(selectedArea))
  471. return false;
  472. });
  473. $(document).on('dblclick', '.sdesc', function() {
  474. if (selectedArea)
  475. return;
  476. if ($(this).find("textarea").length == 0) {
  477. var content = $(this).html();
  478. $(this).empty();
  479. $(this).append("<textarea>" + content + "</textarea>");
  480. selectedArea = $(this).find("textarea");
  481. }
  482. });
  483. $(document).on('click', '.sDescAdd', function() {
  484. if (selectedArea)
  485. return;
  486. var action = $(this).parents(".drop").find(".sdesc");
  487. if ($(action).find("textarea").length == 0) {
  488. //alert($(action).text());
  489. $(action).empty();
  490. $(action).append("<textarea placeholder='Opis kroku'></textarea>");
  491. $(this).remove();
  492. selectedArea = $(action).find("textarea");
  493. return false;
  494. }
  495. });
  496. $(document).on('click', '.hDescAdd', function() {
  497. if (selectedArea)
  498. return;
  499. var action = $(this).parents(".drop").find(".hdesc");
  500. if ($(action).find("textarea").length == 0) {
  501. //alert($(action).text());
  502. $(action).empty();
  503. $(action).append("<textarea placeholder='Tytuł kroku'></textarea>");
  504. $(this).remove();
  505. selectedArea = $(action).find("textarea");
  506. return false;
  507. }
  508. });
  509. $(document).on('dblclick', '.hdesc', function() {
  510. if ($(this).find("textarea").length == 0) {
  511. var content = $(this).html();
  512. $(this).empty();
  513. $(this).append("<textarea>" + content + "</textarea>");
  514. selectedArea = $(this).find("textarea");
  515. }
  516. });
  517. $(document).on('click', '.del', function() {
  518. var node = $(this).parent().parent();
  519. swal({
  520. title: 'Usuwanie kroku',
  521. text: "Czy napewno chcesz usunąć ten krok?",
  522. type: 'warning',
  523. showCancelButton: true,
  524. confirmButtonColor: '#3085d6',
  525. cancelButtonColor: '#d33',
  526. confirmButtonText: 'Tak, usuń ten krok'
  527. }).then(function() {
  528. deletedId.push($(node).data("id"));
  529. node.remove();
  530. updateX();
  531. updateAll();
  532. //Parent_id = -1,
  533. })
  534. });
  535. $(document).on('click', '.delRes', function() {
  536. //var parent = $(this).parents(".drop");
  537. var child = $(this).parents("li");
  538. var li =
  539. swal({
  540. title: 'Usuwanie wskaźnika',
  541. text: "Czy napewno chcesz usunąć ten wskaźnik?",
  542. type: 'warning',
  543. showCancelButton: true,
  544. confirmButtonColor: '#3085d6',
  545. cancelButtonColor: '#d33',
  546. confirmButtonText: 'Tak, usuń ten wskaźnik'
  547. }).then(function() {
  548. deletedRes.push($(child).data("id"));
  549. child.remove();
  550. updateX();
  551. updateAll();
  552. //Parent_id = -1,
  553. })
  554. });
  555. //
  556. $(document).on('click', '.fbutton', function(e) {
  557. e.preventDefault();
  558. $(".fbutton").removeClass("btn-success");
  559. if ($(this).data("type") == filtr) {
  560. filtr = 0;
  561. //console.log("Odznaczono");
  562. } else {
  563. filtr = $(this).data("type");
  564. $(this).addClass("btn-success");
  565. }
  566. if (filtr === 0)
  567. $("#xBtn").prop("disabled", true);
  568. else
  569. $("#xBtn").prop("disabled", false);
  570. searchRes();
  571. });
  572. $(document).on('click', '.showMore', function() {
  573. var target = $(this).parent().find(".more");
  574. var id = $(this).data("id");
  575. if ($(target).parent().hasClass("resSelected")) {
  576. $(".more").empty();
  577. $(target).parent().removeClass("resSelected");
  578. $(target).parent().find(".gIco").addClass("glyphicon-chevron-down");
  579. $(target).parent().find(".gIco").removeClass("glyphicon-chevron-up");
  580. } else {
  581. $(".more").parent().removeClass("resSelected");
  582. $(".more").parent().find(".gIco").addClass("glyphicon-chevron-down");
  583. $(".more").parent().find(".gIco").removeClass("glyphicon-chevron-up");
  584. $(".more").empty();
  585. $(target).parent().addClass("resSelected");
  586. $(target).parent().find(".gIco").removeClass("glyphicon-chevron-down");
  587. $(target).parent().find(".gIco").addClass("glyphicon-chevron-up");
  588. var link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_LISTA_ZASOBOW&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>PARENT_ID</ogc:PropertyName><ogc:Literal>' + id + '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>KOMORKA</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>&sortBy=SORT_PRIO+A';
  589. //console.log(link);
  590. $.get(link, function(data) {
  591. $.each($(data).find("featureMember"), function() {
  592. if ($(this).find("ID").text() != 0) {
  593. var type = 0;
  594. $(target).append("<div class='drag hov' data-id=" + $(this).find("ID").text() + " data-type=" + type + " data-opis='<b>" + $(this).find("DESC").text() + "</b> " + $(this).find("OPIS").text() + " [" + $(this).find("ID").text() + "] '>" + $(this).find("DESC").text() + " [" + $(this).find("ID").text() + "]</div>");
  595. $('.drag').draggable({
  596. appendTo: 'body',
  597. helper: 'clone',
  598. stack: "div",
  599. distance: 0,
  600. cursor: "copy"
  601. });
  602. $(".drop").droppable({
  603. tolerance: 'pointer',
  604. accept: '.drag',
  605. drop: function(event, ui) {
  606. addResource(ui, this);
  607. }
  608. });
  609. }
  610. });
  611. });
  612. }
  613. });
  614. function searchRes() {
  615. var id = lastSearch;
  616. var link;
  617. //console.log("Szukam");
  618. switch (filtr) {
  619. case 0:
  620. link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_LISTA_ZASOBOW&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:Or><ogc:PropertyIsLike wildCard="*" singleChar="^" escapeChar="!"><ogc:PropertyName>ID</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsLike wildCard="*" singleChar="%23" escapeChar="!"><ogc:PropertyName>DESC</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike></ogc:Or></ogc:Filter>&maxFeatures=100';
  621. break;
  622. case 1:
  623. link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_LISTA_ZASOBOW&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:Or><ogc:PropertyIsLike wildCard="*" singleChar="^" escapeChar="!"><ogc:PropertyName>ID</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsLike wildCard="*" singleChar="%23" escapeChar="!"><ogc:PropertyName>DESC</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike></ogc:Or><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>STANOWISKO</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>PODMIOT</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>DZIAL</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:And></ogc:Filter>&maxFeatures=100';
  624. break;
  625. case 2:
  626. link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_LISTA_ZASOBOW&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:Or><ogc:PropertyIsLike wildCard="*" singleChar="^" escapeChar="!"><ogc:PropertyName>ID</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsLike wildCard="*" singleChar="%23" escapeChar="!"><ogc:PropertyName>DESC</ogc:PropertyName><ogc:Literal>*' + id + '*</ogc:Literal></ogc:PropertyIsLike></ogc:Or><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>KOMORKA</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>TYPE</ogc:PropertyName><ogc:Literal>TABELA</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:And></ogc:Filter>&maxFeatures=100&sortBy=TYPE+A';
  627. //console.log(link);
  628. break;
  629. default:
  630. link = "";
  631. }
  632. $.get(link, function(data) {
  633. var side = $("#side");
  634. //console.log(data);
  635. $(side).find("#ulcon").empty();
  636. $.each($(data).find("featureMember"), function() {
  637. if ($(this).find("ID").text() * 1 == 0) {
  638. $(side).find("#ulcon").append("<div><center>Brak wyników wyszukiwania</center></div>");
  639. return;
  640. }
  641. var type = 0;
  642. if ($(this).find("TYPE").text() == "DZIAL" || $(this).find("TYPE").text() == "PODMIOT" || $(this).find("TYPE").text() == "STANOWISKO")
  643. type = 1;
  644. if (filtr != 2 || $(this).find("TYPE").text() != "TABELA")
  645. $(side).find("#ulcon").append("<div class='drag hov' data-id=" + $(this).find("ID").text() + " data-type=" + type + " data-opis='<b>" + $(this).find("DESC").text() + "</b> " + $(this).find("OPIS").text() + " [" + $(this).find("ID").text() + "] '>" + $(this).find("DESC").text() + " [" + $(this).find("ID").text() + "]</div>");
  646. else {
  647. $(side).find("#ulcon").append("<div ><span class='drag click' data-id=" + $(this).find("ID").text() + " data-type=" + type + " data-opis='<b>" + $(this).find("DESC").text() + "</b> " + $(this).find("OPIS").text() + " [" + $(this).find("ID").text() + "] '>#</span> <div style=width:80%;float:left; data-id=" + $(this).find("ID").text() + " class=showMore><span class=tabelaName>" + $(this).find("DESC").text() + "</span> [" + $(this).find("ID").text() + "]</div><span class='gIco glyphicon glyphicon-chevron-down' style:float:left;></span><div style=clear:both;></div><div class=more ></div></div>");
  648. }
  649. });
  650. $('.drag').draggable({
  651. appendTo: 'body',
  652. helper: 'clone',
  653. stack: "div",
  654. distance: 0,
  655. cursor: "copy"
  656. });
  657. $(".drop").droppable({
  658. tolerance: 'pointer',
  659. accept: '.drag',
  660. drop: function(event, ui) {
  661. addResource(ui, this);
  662. }
  663. });
  664. });
  665. }
  666. function zasoby() {
  667. var side = $("#side");
  668. $(side).empty();
  669. $(side).append("<h3>Zarządzaj zasobami<h3>");
  670. $(side).append("<div class='form-group' ><input type='text' class=form-control id=sZasoby placeholder='Szukaj zasobów'></div>");
  671. $(side).append("<div class='btn-group' style=width:100% id=filtry></div>");
  672. $("#filtry").append("<button type='button' data-type=1 class='fbutton btn btn-default input-block-level ' style=width:40%>Stanowiska</button>");
  673. $("#filtry").append("<button type='button' data-type=2 class='fbutton btn btn-default input-block-level ' style=width:40%>Komórki</button>");
  674. $("#filtry").append("<button type='button' data-type=0 class='fbutton btn btn-danger input-block-level' id=xBtn style=width:20% disabled>X</button>");
  675. $(side).append("<div id=ulcon></div>");
  676. //$(side).find("#ulcon").append("<div class='drag' data-id=1 data-type=1 >[STANOWISKO] Ulotkarz</div>");
  677. //$(side).find("#ulcon").append("<div class='drag' data-id=2 data-type=1 >[STANOWISKO] Programista PHP</div>");
  678. //$(side).find("#ulcon").append("<div class='drag' data-id=3 data-type=2 >[ZASÓB] Komputer</div>");
  679. $('.drag').draggable({
  680. appendTo: 'body',
  681. helper: 'clone',
  682. stack: "div",
  683. distance: 0,
  684. cursor: "copy"
  685. });
  686. $(".drop").droppable({
  687. tolerance: 'pointer',
  688. accept: '.drag',
  689. drop: function(event, ui) {
  690. addResource(ui, this);
  691. }
  692. });
  693. }
  694. function addResource(ui, target) {
  695. var permsOpt = "";
  696. $.each(perms, function(key, value) {
  697. permsOpt = permsOpt + "<option value=" + value[0] + ">[" + value[2] + "] " + value[1] + "</option>";
  698. })
  699. swal({
  700. showCancelButton: true,
  701. title: 'Uprawnienia',
  702. html: 'Uprawnienia<br><select class=form-control id="swal-input1">' + permsOpt + '</select>' +
  703. 'Komentarz<br><input class=form-control id="swal-input2" class="swal2-input">',
  704. preConfirm: function() {
  705. return new Promise(function(resolve) {
  706. resolve([
  707. $('#swal-input1').val(),
  708. $('#swal-input2').val()
  709. ]);
  710. });
  711. }
  712. }).then(function(result) {
  713. //console.log("Dodaj zasob " + ui.draggable.data("id") + " do " + $(target).data("id") + " i uprawnienia id " + result[0] + " komentarz: " + result[1]); //
  714. newRes--;
  715. if (ui.draggable.data("type") == 1) {
  716. $(target).find(".professions").append("<li class=changed data-zasob=" + ui.draggable.data("id") + " data-id=" + newRes + " data-przypadek=" + result[0] + " data-komentarz='" + result[1] + "'>" + ui.draggable.data("opis") + " <span aria-hidden='true' class='glyphicon glyphicon-edit btnEdit' style=font-size:10px;></span> <span class='glyphicon glyphicon-remove-sign delRes' style=color:red;font-size:10px; aria-hidden='true' ></span><span class='glyphicon glyphicon-arrow-up uArrowRes' title='Przesuń wskaźnik w górę' aria-hidden='true'></span> <span class='glyphicon glyphicon-arrow-down dArrowRes' title='Przesuń wskaźnik w dół' style=display:none; aria-hidden='true'></span></li>");
  717. $(target).find(".professions").parents("dl").show();
  718. updateArrows($(target).find(".professions"));
  719. } else {
  720. $(target).find(".resources").append("<li class=changed data-zasob=" + ui.draggable.data("id") + " data-id=" + newRes + " data-przypadek=" + result[0] + " data-komentarz='" + result[1] + "'>" + ui.draggable.data("opis") + " <span aria-hidden='true' class='glyphicon glyphicon-edit btnEdit' style=font-size:10px;> <span class='glyphicon glyphicon-remove-sign delRes' style=color:red;font-size:10px; aria-hidden='true' ></span><span class='glyphicon glyphicon-arrow-up uArrowRes' title='Przesuń wskaźnik w górę' aria-hidden='true'></span> <span class='glyphicon glyphicon-arrow-down dArrowRes' style=display:none; title='Przesuń wskaźnik w dół' aria-hidden='true'></span></li>");
  721. $(target).find(".resources").parents("dl").show();
  722. updateArrows($(target).find(".resources"));
  723. }
  724. }).catch(function(e) {})
  725. }
  726. //Po uzyciu uArrow lub dArrow tworzy nowa kolejnosc
  727. function updateX() {
  728. tab = [];
  729. $.each($("#main").children(), function(index) {
  730. tab.push($(this).data("id") * 1);
  731. });
  732. //console.log(tab);
  733. }
  734. //Najwazniejsza funkcja odpalana po kazdej zmianie. Sprawdza, czy wszystkie funkcje maja rodzica,
  735. //jezeli nie to przesuwa w lewo obiekt
  736. //Odpowiada tez za ukrywanie guzikow i wywowalanie funkcji generacji krokow
  737. function updateAll() {
  738. $("#main").children().each(function(index) {
  739. if (getParentNode($(this).data("id")) != "NONE" && getParentNode($(this).data("id")) != false && getParentNode($(this).data("id")) != $(this).data("parent_id")) {
  740. $(this).data("parent_id", getParentNode($(this).data("id")));
  741. console.log("Ustawiono nowe parent_id na " + $(this).data("parent_id") + " dla " + $(this).data("id")); //
  742. } else if (getParentNode($(this).data("id")) === false) {
  743. var node = this;
  744. $(node).data("depth", $(node).data("depth") - 1);
  745. //var depthWidth = 20 * $(node).data("depth");
  746. //$(node).css("padding-left", depthWidth + "px");
  747. updateAll();
  748. return;
  749. }
  750. if (checkParentNode($(this).data("id"), "right") === false) {
  751. $(this).find(".rArrow").hide();
  752. } else {
  753. $(this).find(".rArrow").show();
  754. }
  755. if (checkParentNode($(this).data("id"), "left") === false) {
  756. $(this).find(".lArrow").hide();
  757. } else {
  758. $(this).find(".lArrow").show();
  759. }
  760. if (tab[1] == $(this).data("id"))
  761. $(this).find(".uArrow").hide();
  762. else
  763. $(this).find(".uArrow").show();
  764. if ($(this).next().length == 0) {
  765. $(this).find(".dArrow").hide();
  766. } else {
  767. $(this).find(".dArrow").show();
  768. }
  769. });
  770. stepsGenerator();
  771. }
  772. //Generuje kroki, sprawdza tez czy kolejnosc krokow w danym rodzicow zostala zmieniona
  773. //Jezeli tak to mozna wyslac ajaxem zmiane kolejnosci dla sort_prio
  774. function stepsGenerator() {
  775. $("#main").children().each(function(index) {
  776. $(this).data("step", 0);
  777. if ($(this).data("id") == mainProces_id) {
  778. $(this).data("stepDesc", "");
  779. } else {
  780. $("#proc" + $(this).data("parent_id")).data("step", $("#proc" + $(this).data("parent_id")).data("step") + 1);
  781. $(this).data("SORT_PRIO", $("#proc" + $(this).data("parent_id")).data("step"));
  782. $(this).data("stepDesc", $("#proc" + $(this).data("parent_id")).data("stepDesc") + $("#proc" + $(this).data("parent_id")).data("step") + ". ");
  783. //console.log($(this).data("stepDesc"));
  784. $(this).find(".stepDesc").text($(this).data("stepDesc"));
  785. }
  786. });
  787. }
  788. //Prosta funkcja sprawdzajaca pozycje danego obiektu
  789. function getX(id) {
  790. //alert("id "+id)
  791. var result;
  792. $.each(tab, function(index, value) {
  793. if (value == id)
  794. result = index;
  795. });
  796. return result;
  797. }
  798. //Na potrzeby guzikow dorobilem funkcje sprawdzajaca id rodzica po przesunieciu (przewidywanie).
  799. //Jezeli nie znajdzie zwraca false, a wtedy blokuje sie odpowiednia strzalka
  800. function checkParentNode(id, check) {
  801. var x = getX(id);
  802. //console.log(tab);
  803. var result = false;
  804. while (x > 0) {
  805. x--;
  806. if (check == "right")
  807. if ($("#proc" + tab[x]).data("depth") == $("#proc" + id).data("depth")) {
  808. result = tab[x];
  809. break;
  810. }
  811. if (check == "left")
  812. if ($("#proc" + tab[x]).data("depth") == $("#proc" + id).data("depth") - 2) {
  813. result = tab[x];
  814. break;
  815. }
  816. if (check == "right" && $("#proc" + tab[x]).data("depth") < $("#proc" + id).data("depth"))
  817. break;
  818. }
  819. return result;
  820. }
  821. //Zwraca id rodzica, jezeli nie ma zwraca false
  822. function getParentNode(id) {
  823. var x = getX(id);
  824. if (mainProces_id == id)
  825. return "NONE";
  826. var result = false;
  827. while (x > 0) {
  828. x--;
  829. var depth = $("#proc" + tab[x]).data("depth") - $("#proc" + id).data("depth");
  830. if ($("#proc" + tab[x]).data("depth") == $("#proc" + id).data("depth") - 1) {
  831. result = tab[x];
  832. break;
  833. }
  834. if ($("#proc" + tab[x]).data("depth") - $("#proc" + id).data("depth") == -2)
  835. break;
  836. }
  837. return result;
  838. }
  839. function genTree(parent_id, last) {
  840. var link = BASE_URL + '/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_PROCES&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>PARENT_ID</ogc:PropertyName><ogc:Literal>' + parent_id + '</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:Filter>&sortBy=SORT_PRIO+A';
  841. //console.log(link);
  842. $.ajax({
  843. url: link,
  844. success: function(data) {
  845. //console.log(data);
  846. $.each($(data).find("featureMember"), function() {
  847. if ($(this).find("ID").text() == "0")
  848. return;
  849. $(last).after("<div class='drop container-fluid' id='proc" + $(this).find("ID").text() + "'></div>");
  850. $("#proc" + $(this).find("ID").text()).data("id", $(this).find("ID").text() * 1);
  851. $("#proc" + $(this).find("ID").text()).append("<div class='col-sm-1 options' id=opt" + $(this).find("ID").text() + "></div>");
  852. $("#opt" + $(this).find("ID").text()).append("<span class='glyphicon glyphicon-remove-sign ico del' title='Usuń krok' aria-hidden='true'></span>");
  853. //Arrows
  854. $("#opt" + $(this).find("ID").text()).append("<span class='glyphicon glyphicon-arrow-up ico uArrow' aria-hidden='true' title='Przesuń krok w górę'></span>");
  855. $("#opt" + $(this).find("ID").text()).append("<span class='glyphicon glyphicon-arrow-down ico dArrow' aria-hidden='true' title='Przesuń krok w dół'></span>");
  856. $("#opt" + $(this).find("ID").text()).append("<span class='glyphicon glyphicon-arrow-right ico rArrow' aria-hidden='true' title='Przesuń krok w prawo'></span>");
  857. $("#opt" + $(this).find("ID").text()).append("<span class='glyphicon glyphicon-arrow-left ico lArrow' aria-hidden='true' title='Przesuń krok w lewo'></span>");
  858. //
  859. $("#opt" + $(this).find("ID").text()).append("<div class='clearfix'></div>");
  860. $("#proc" + $(this).find("ID").text()).append("<div class='col-sm-10 desc' id='desc" + $(this).find("ID").text() + "' ><h4 class=changable><span class='stepDesc'></span><span class=hdesc>" + $(this).find("DESC").text() + "</span> <span class=ids>{" + $(this).find("ID").text() + "}</span></h4><span class='sdesc changable'>" + $(this).find("OPIS").text() + "</span></div>");
  861. if ($(this).find("DESC").text() == "") {
  862. $("#proc" + $(this).find("ID").text()).find(".hdesc").after("<span class=hDescAdd>Dodaj tytuł</span>");
  863. }
  864. if ($(this).find("OPIS").text() == "") {
  865. $("#proc" + $(this).find("ID").text()).find(".sdesc").after("<span class=sDescAdd>Dodaj opis</span>");
  866. }
  867. $("#proc" + $(this).find("ID").text()).append("<div class='clearfix'></div>");
  868. $("#desc" + $(this).find("ID").text()).append("<dl class='dl-horizontal'><dt>Stanowiska</dt><dd><ul class=professions></ul></dd></dl>");
  869. $("#desc" + $(this).find("ID").text()).append("<dl class='dl-horizontal'><dt>Użyte zasoby</dt><dd><ul class=resources></ul></dd></dl>");
  870. $("#proc" + $(this).find("ID").text()).data("parent_id", $(this).find("PARENT_ID").text());
  871. $("#desc" + $(this).find("ID").text()).append("<br><span class=step>Dodaj nowy krok</span>");
  872. //tab.push($(this).find("ID").text()*1);
  873. var parent_id = $("#proc" + $(this).find("ID").text()).data("parent_id");
  874. $("#proc" + $(this).find("ID").text()).data("depth", $("#proc" + $(this).find("PARENT_ID").text()).data("depth") + 1);
  875. last = $("#proc" + $(this).find("ID").text());
  876. genTree($(this).find("ID").text(), last);
  877. //var depthWidth = 20 * $("#proc" + this.id).data("depth");
  878. //$("#proc" + this.id).css("padding-left", depthWidth + "px");
  879. //alert("add");
  880. updateX();
  881. updateAll();
  882. });
  883. }
  884. });
  885. }
  886. //Pierwszy render, tworzy potrzebna strukture
  887. function showPreview() {
  888. filtr = 0;
  889. selectedArea = false;
  890. lastSearch = "";
  891. newSteps = 0;
  892. newRes = 0;
  893. tab = [];
  894. deletedId = [];
  895. $("#main").empty();
  896. $("#main").hide();
  897. var id = mainProces_id;
  898. var link = BASE_URL + '/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_PROCES&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>ID</ogc:PropertyName><ogc:Literal>' + id + '</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:Filter>';
  899. //console.log(link);
  900. $.get(link, function(data) {
  901. loaded = false;
  902. //console.log(data);
  903. $("#main").append("<div class='drop container-fluid' id='proc" + mainProces_id + "'></div>");
  904. $("#proc" + mainProces_id).data("id", mainProces_id);
  905. $("#proc" + mainProces_id).data("depth", 0);
  906. $("#proc" + mainProces_id).data("parent_id", false);
  907. $("#proc" + mainProces_id).append("<div class='col-sm-1 options' id=opt" + mainProces_id + "><span aria-hidden='true' class='glyphicon glyphicon-menu-hamburger ico' title='Pokaż listę zasobów' id=btnZasoby></span></div>");
  908. $("#proc" + mainProces_id).append("<div class='col-sm-10 desc' id='desc" + mainProces_id + "' ><h4 class=changable><span class=hdesc>" + $(data).find("featureMember").find("DESC").text() + "</span> <span class=ids>{" + mainProces_id + "}</span></h4><span class='sdesc changable'>" + $(data).find("featureMember").find("OPIS").text() + "</span></div>");
  909. if ($(data).find("featureMember").find("DESC").text() == "") {
  910. $("#proc" + mainProces_id).find(".hdesc").after("<span class=hDescAdd>Dodaj Tytuł</span>");
  911. }
  912. if ($(data).find("featureMember").find("OPIS").text() == "") {
  913. $("#proc" + mainProces_id).find(".sdesc").after("<span class=sDescAdd>Dodaj opis</span>");
  914. }
  915. $("#proc" + mainProces_id).append("<div class='clearfix'></div>");
  916. $("#desc" + mainProces_id).append("<dl class='dl-horizontal'><dt>Stanowiska</dt><dd><ul class=professions></ul></dd></dl>");
  917. $("#desc" + mainProces_id).append("<dl class='dl-horizontal'><dt>Użyte zasoby</dt><dd><ul class=resources></ul></dd></dl>");
  918. $("#desc" + mainProces_id).append("<br><span class=step>Dodaj nowy krok</span>");
  919. tab.push(mainProces_id);
  920. genTree(mainProces_id, $("#proc" + mainProces_id));
  921. });
  922. actSite = "preview";
  923. }
  924. });