superedit-OBOWIAZKI_GRAPH.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. function OBOWIAZKI_GRAPH() {
  3. // items:
  4. $activeWorkers = array();
  5. $zasobyStanowiska = array();
  6. $procesy = array();
  7. // conections:
  8. $procesToStanowisko = array();
  9. $workerToStanowisko = array();
  10. {// fetch activeWorkers, workerToStanowisko
  11. $db = DB::getDB();
  12. $sql = "select u.`ID`
  13. , u.`ADM_ACCOUNT`
  14. , u.`ADM_NAME` -- imie i nazwisko
  15. , u.`EMPLOYEE_TYPE` -- EMPLOYEE_TYPE (ldap:employeeType)
  16. , up.`ID_ZASOB`
  17. from `ADMIN_USERS` as u
  18. left join `CRM_AUTH_PROFILE` as up on (up.`REMOTE_ID`=u.`ID` and up.`REMOTE_TABLE`='ADMIN_USERS' and up.`A_STATUS` in('WAITING', 'NORMAL'))
  19. where u.`A_STATUS` in('WAITING', 'NORMAL')
  20. and u.`EMPLOYEE_TYPE`='Pracownik'
  21. ";
  22. $res = $db->query($sql);
  23. while ($r = $db->fetch($res)) {
  24. if ($r->ID_ZASOB > 0) {
  25. $workerToStanowisko[$r->ID][] = $r->ID_ZASOB;
  26. }
  27. unset($r->ID_ZASOB);
  28. $activeWorkers[$r->ID] = $r;
  29. }
  30. }// fetch activeWorkers, workerToStanowisko
  31. {// fetch zasobyStanowiska
  32. $db = DB::getDB();
  33. $sql = "select z.`ID`
  34. , z.`DESC`
  35. from `CRM_LISTA_ZASOBOW` as z
  36. where z.`A_STATUS` in('WAITING', 'NORMAL')
  37. and z.`TYPE` in('STANOWISKO')
  38. ";
  39. $res = $db->query($sql);
  40. while ($r = $db->fetch($res)) {
  41. $zasobyStanowiska[$r->ID] = $r;
  42. }
  43. }// fetch zasobyStanowiska
  44. {// fetch procesy
  45. $db = DB::getDB();
  46. $sql = "select p.`ID`
  47. , p.`DESC`
  48. from `CRM_PROCES` as p
  49. where p.`A_STATUS` in('WAITING', 'NORMAL')
  50. and p.`TYPE` in('PROCES_INIT')
  51. ";
  52. $res = $db->query($sql);
  53. while ($r = $db->fetch($res)) {
  54. $procesy[$r->ID] = $r;
  55. }
  56. }// fetch procesy
  57. {// fetch procesToStanowisko
  58. $db = DB::getDB();
  59. $sql = "select w.`ID_PROCES`
  60. , w.`ID_ZASOB`
  61. from `CRM_WSKAZNIK` as w
  62. join `CRM_PROCES` as p on(p.`ID`=w.`ID_PROCES`)
  63. join `CRM_LISTA_ZASOBOW` as z on(z.`ID`=w.`ID_ZASOB`)
  64. where w.`A_STATUS` in('WAITING', 'NORMAL')
  65. and p.`A_STATUS` in('WAITING', 'NORMAL')
  66. and z.`A_STATUS` in('WAITING', 'NORMAL')
  67. ";
  68. $res = $db->query($sql);
  69. while ($r = $db->fetch($res)) {
  70. $procesToStanowisko[$r->ID_ZASOB][] = $r->ID_PROCES;
  71. }
  72. }// fetch procesToStanowisko
  73. if(V::get('DBG', '', $_GET)) {
  74. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">activeWorkers (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($activeWorkers);echo'</pre>';
  75. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">workerToStanowisko (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($workerToStanowisko);echo'</pre>';
  76. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">procesy('.count($procesy).') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($procesy);echo'</pre>';
  77. }
  78. ?>
  79. <link rel="stylesheet" href="stuff/joint-js/joint.css" />
  80. <div id="obowiazki_graph" style="border:1px solid #ddd;max-height:600px;overflow:auto;"></div>
  81. <script src="stuff/joint-js/joint.min.js"></script>
  82. <!--
  83. <script src="stuff/joint-js/lodash.min.js"></script>
  84. <script src="stuff/joint-js/backbone-min.js"></script>
  85. <script src="stuff/joint-js/geometry.min.js"></script>
  86. <script src="stuff/joint-js/vectorizer.min.js"></script>
  87. <script src="stuff/joint-js/joint.clean.min.js"></script>
  88. -->
  89. <script>
  90. <?php
  91. $boxHeight = 20;
  92. ?>
  93. var graph = new joint.dia.Graph;
  94. var paper = new joint.dia.Paper({
  95. el: $('#obowiazki_graph'),
  96. width: 1000,
  97. height: 5000,
  98. model: graph,
  99. gridSize: 1
  100. });
  101. var workers = {};
  102. <?php $i = 0; foreach ($activeWorkers as $worker) : $i++; ?>
  103. var worker = new joint.shapes.basic.Rect({
  104. position: { x: 100, y: <?php echo 10 + ($i * ($boxHeight + 5)); ?> },
  105. size: { width: 100, height: <?php echo $boxHeight; ?> },
  106. attrs: { rect: { fill: 'blue' }, text: { text: '<?php echo $worker->ID; ?>', fill: 'white' } }
  107. });
  108. workers[<?php echo $worker->ID; ?>] = worker;
  109. <?php endforeach; ?>
  110. var stanowiska = {};
  111. <?php $i = 0; foreach ($zasobyStanowiska as $zasob) : $i++; ?>
  112. var stanowisko = new joint.shapes.basic.Rect({
  113. position: { x: 100 + 400, y: <?php echo 10 + ($i * ($boxHeight + 5)); ?> },
  114. size: { width: 100, height: <?php echo $boxHeight; ?> },
  115. attrs: { rect: { fill: 'green' }, text: { text: '<?php echo $zasob->ID; ?>', fill: 'white' } }
  116. });
  117. stanowiska[<?php echo $zasob->ID; ?>] = stanowisko;
  118. <?php endforeach; ?>
  119. var procesy = {};
  120. <?php $i = 0; foreach ($procesy as $proces) : $i++; ?>
  121. var proces = new joint.shapes.basic.Rect({
  122. position: { x: 100 + 800, y: <?php echo 10 + ($i * ($boxHeight + 5)); ?> },
  123. size: { width: 100, height: <?php echo $boxHeight; ?> },
  124. attrs: { rect: { fill: 'red' }, text: { text: '<?php echo $proces->ID; ?>', fill: 'white' } }
  125. });
  126. procesy[<?php echo $proces->ID; ?>] = proces;
  127. <?php endforeach; ?>
  128. var workerToStanowisko = [];
  129. <?php $i = 0; foreach ($workerToStanowisko as $workerId => $zasobyIds) : $i++; ?>
  130. <?php foreach ($zasobyIds as $zasobId) : $i++; ?>
  131. if (workers[<?php echo $workerId; ?>] && 'id' in workers[<?php echo $workerId; ?>]
  132. && stanowiska[<?php echo $zasobId; ?>] && 'id' in stanowiska[<?php echo $zasobId; ?>]
  133. ) {
  134. var link = new joint.dia.Link({
  135. source: { id: workers[<?php echo $workerId; ?>].id },
  136. target: { id: stanowiska[<?php echo $zasobId; ?>].id }
  137. });
  138. workerToStanowisko.push(link);
  139. }
  140. <?php endforeach; ?>
  141. <?php endforeach; ?>
  142. var procesToStanowisko = [];
  143. <?php $i = 0; foreach ($procesToStanowisko as $stanowiskoId => $procesyIds) : $i++; ?>
  144. <?php foreach ($procesyIds as $procesId) : $i++; ?>
  145. if (procesy[<?php echo $procesId; ?>] && 'id' in procesy[<?php echo $procesId; ?>]
  146. && stanowiska[<?php echo $stanowiskoId; ?>] && 'id' in stanowiska[<?php echo $stanowiskoId; ?>]
  147. ) {
  148. var link = new joint.dia.Link({
  149. source: { id: stanowiska[<?php echo $stanowiskoId; ?>].id },
  150. target: { id: procesy[<?php echo $procesId; ?>].id }
  151. });
  152. procesToStanowisko.push(link);
  153. }
  154. <?php endforeach; ?>
  155. <?php endforeach; ?>
  156. graph.addCells(workers);
  157. graph.addCells(stanowiska);
  158. graph.addCells(procesy);
  159. graph.addCells(workerToStanowisko);
  160. graph.addCells(procesToStanowisko);
  161. /*
  162. var rect = new joint.shapes.basic.Rect({
  163. position: { x: 100, y: 30 },
  164. size: { width: 100, height: 30 },
  165. attrs: { rect: { fill: 'blue' }, text: { text: 'my box', fill: 'white' } }
  166. });
  167. var rect2 = rect.clone();
  168. rect2.translate(300);
  169. var link = new joint.dia.Link({
  170. source: { id: rect.id },
  171. target: { id: rect2.id }
  172. });
  173. graph.addCells([rect, rect2]);
  174. graph.addCells([link]);
  175. */
  176. </script>
  177. <?php
  178. }