WfsJsRequestPanel.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. // use Monolog\Handler\StreamHandler;
  3. // use Monolog\Formatter\JsonFormatter;
  4. Lib::loadClass('RouteBase');
  5. Lib::loadClass('P5');
  6. Lib::loadClass('Core_AclHelper');
  7. Lib::loadClass('ACL');
  8. class Route_WfsJsRequestPanel extends RouteBase {
  9. public function defaultAction() {
  10. UI::gora();
  11. try {
  12. $exampleFltr = [
  13. " <ogc:Filter>",
  14. " <ogc:Or>",
  15. " <ogc:PropertyIsEqualTo>",
  16. " <ogc:PropertyName>ID</ogc:PropertyName>",
  17. " <ogc:Literal>1003</ogc:Literal>",
  18. " </ogc:PropertyIsEqualTo>",
  19. " <ogc:PropertyIsEqualTo>",
  20. " <ogc:PropertyName>ID</ogc:PropertyName>",
  21. " <ogc:Literal>608</ogc:Literal>",
  22. " </ogc:PropertyIsEqualTo>",
  23. " </ogc:Or>",
  24. " </ogc:Filter>",
  25. ];
  26. $listExampleProp = [];
  27. $listExampleProp['lvl1'] = [
  28. " <wfs:PropertyName>ID</wfs:PropertyName>",
  29. " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
  30. " <wfs:PropertyName>TYPE</wfs:PropertyName>",
  31. " <wfs:PropertyName>DESC</wfs:PropertyName>",
  32. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
  33. ];
  34. $listExampleProp['lvl2'] = [
  35. " <wfs:PropertyName>ID</wfs:PropertyName>",
  36. " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
  37. " <wfs:PropertyName>TYPE</wfs:PropertyName>",
  38. " <wfs:PropertyName>DESC</wfs:PropertyName>",
  39. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
  40. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
  41. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
  42. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
  43. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
  44. ];
  45. $listExampleProp['lvl2wsk'] = [
  46. " <wfs:PropertyName>ID</wfs:PropertyName>",
  47. " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
  48. " <wfs:PropertyName>TYPE</wfs:PropertyName>",
  49. " <wfs:PropertyName>DESC</wfs:PropertyName>",
  50. " <wfs:PropertyName>OPIS</wfs:PropertyName>",
  51. " <wfs:PropertyName>path</wfs:PropertyName>",
  52. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
  53. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
  54. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
  55. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
  56. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
  57. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK</wfs:PropertyName>",
  58. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES_INIT/*</wfs:PropertyName>",
  59. " <!-- <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES_INIT/**</wfs:PropertyName> -->",
  60. " <wfs:PropertyName>default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
  61. ];
  62. $listExampleProp['lvl3'] = [
  63. " <wfs:PropertyName>ID</wfs:PropertyName>",
  64. " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
  65. " <wfs:PropertyName>TYPE</wfs:PropertyName>",
  66. " <wfs:PropertyName>DESC</wfs:PropertyName>",
  67. " <wfs:PropertyName>OPIS</wfs:PropertyName>",
  68. " <wfs:PropertyName>path</wfs:PropertyName>",
  69. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
  70. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
  71. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
  72. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
  73. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
  74. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
  75. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
  76. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
  77. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
  78. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
  79. " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES_INIT/*</wfs:PropertyName>",
  80. " <!-- <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES_INIT/**</wfs:PropertyName> -->",
  81. " <wfs:PropertyName>default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
  82. ];
  83. $exampleWfsRequestBody = "<wfs:Query>" . implode("\n", array_merge($listExampleProp['lvl1'], $exampleFltr)) . "</wfs:Query>";
  84. UI::startContainer();
  85. // Lib::loadClass('Vendor_Monolog');
  86. // $logger = new Vendor_Monolog('dbg-logger-name');
  87. // $logger->pushHandler(new StreamHandler('/tmp/monolog-test.log', Vendor_Monolog::WARNING));
  88. // $logger->warning('Foo');
  89. // $logger->error('Bar');
  90. //
  91. // $logFile = '/tmp/monolog-test-json.log';
  92. // $formatter = new JsonFormatter();
  93. // // Create a handler
  94. // $stream = new StreamHandler($logFile, Vendor_Monolog::INFO);
  95. // $stream->setFormatter($formatter);
  96. // // bind it to a logger object
  97. // $securityLogger = new Vendor_Monolog('View Info');
  98. // $securityLogger->pushHandler($stream);
  99. // $securityLogger->addInfo('debug message / label', [ 'dbg-object' => [ 'x' => 'y', 'z' ] ]);
  100. echo UI::h('textarea', [ 'id' => 'wfsRequestBody', 'style' => "width:100%; height:300px" ], htmlspecialchars($exampleWfsRequestBody));
  101. echo UI::h('button', [ 'class' => "btn btn-primary", 'onClick' => "return sendWfsRequest(this)" ], "Wyslij");
  102. echo UI::h('div', [ 'style' => "display:inline", 'id' => "wfs-example-btns" ]);
  103. echo UI::h('pre', [ 'id' => 'wfsResponse' ], 'loading...');
  104. UI::endContainer();
  105. $examples = array_map(function ($props) use ($exampleFltr) {
  106. return "<wfs:Query>" . implode("\n", array_merge($props, $exampleFltr)) . "</wfs:Query>";
  107. }, $listExampleProp);
  108. echo UI::h('script', [], "
  109. var examples = " . json_encode($examples) . ";
  110. console.log('examples', examples)
  111. function setWfsExample(i) {
  112. document.getElementById('wfsRequestBody').value = examples[i]
  113. sendWfsRequest()
  114. }
  115. for (var i in examples) {
  116. jQuery(document.getElementById('wfs-example-btns')).append('<button class=\"btn btn-default\" style=\"margin-left:12px\" onClick=\"setWfsExample(\''+i+'\')\">'+i+'</button>')
  117. }
  118. ");
  119. echo UI::h('script', [], "
  120. function sendWfsRequest() {
  121. document.getElementById('wfsResponse').innerHTML = 'loading...'
  122. var postBody = document.getElementById('wfsRequestBody').value.replace(/&lt;/g, '<').replace(/&gt;/g, '>')
  123. console.log('wfsRequestBody:', postBody)
  124. p5WFS_GetFeature('default_db__x3A__CRM_PROCES:PROCES', {
  125. 'ogc:Filter': postBody,
  126. }).then(function (features) {
  127. console.log('features', features)
  128. document.getElementById('wfsResponse').innerHTML = JSON.stringify(features, null, 2)
  129. }).catch(function (e) {
  130. console.warn(e)
  131. document.getElementById('wfsResponse').innerHTML = JSON.stringify(e, null, 2)
  132. p5UI__notifyAjaxCallback({ type: 'error', msg: e })
  133. })
  134. return false
  135. }
  136. (function () {
  137. console.log('p5WFS_GetFeature(default_db__x3A__CRM_PROCES:PROCES, ...)')
  138. sendWfsRequest()
  139. })()
  140. ");
  141. } catch (Exception $e) {
  142. UI::alert('danger', $e);
  143. }
  144. UI::dol();
  145. }
  146. }