| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- <?php
- // use Monolog\Handler\StreamHandler;
- // use Monolog\Formatter\JsonFormatter;
- Lib::loadClass('RouteBase');
- Lib::loadClass('P5');
- Lib::loadClass('Core_AclHelper');
- Lib::loadClass('ACL');
- class Route_WfsJsRequestPanel extends RouteBase {
- public function defaultAction() {
- UI::gora();
- try {
- $exampleProcesyFltr = [
- " <ogc:Filter>",
- " <ogc:Or>",
- " <ogc:PropertyIsEqualTo>",
- " <ogc:PropertyName>ID</ogc:PropertyName>",
- " <ogc:Literal>1003</ogc:Literal>",
- " </ogc:PropertyIsEqualTo>",
- " <ogc:PropertyIsEqualTo>",
- " <ogc:PropertyName>ID</ogc:PropertyName>",
- " <ogc:Literal>608</ogc:Literal>",
- " </ogc:PropertyIsEqualTo>",
- " </ogc:Or>",
- " </ogc:Filter>",
- ];
- $examples = [];
- $examples['Procesy'] = [];
- $examples['Procesy']['lvl1'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2-by-@-1'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName resolve=\"all\" resolveDepth=\"1\">default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2-by-@-2'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName resolve=\"all\" resolveDepth=\"2\">default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2-by-@-3'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName resolve=\"all\" resolveDepth=\"3\">default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2-by-@-*'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName resolve=\"all\" resolveDepth=\"*\">default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl2wsk'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName>OPIS</wfs:PropertyName>",
- " <wfs:PropertyName>path</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['Procesy']['lvl3'] = [
- 'typeName' => 'default_db__x3A__CRM_PROCES:PROCES',
- 'postBody' => "<wfs:Query>" . "\n" . implode("\n", array_merge([
- " <wfs:PropertyName>ID</wfs:PropertyName>",
- " <wfs:PropertyName>PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>DESC</wfs:PropertyName>",
- " <wfs:PropertyName>OPIS</wfs:PropertyName>",
- " <wfs:PropertyName>path</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/PARENT_ID</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/TYPE</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/DESC</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_PROCES:PROCES</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_PROCES:PROCES/default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
- " <wfs:PropertyName>default_db__x3A__CRM_WSKAZNIK:CRM_WSKAZNIK/*</wfs:PropertyName>",
- ], $exampleProcesyFltr)) . "\n" ."</wfs:Query>",
- ];
- $examples['BiAudit'] = [];
- $examples['BiAudit']['BiAudit'] = [
- 'typeName' => 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
- 'args' => [ 'primaryKey' => 1 ],
- ];
- $examples['BiAudit']['BiAudit lvl2'] = [
- 'typeName' => 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
- 'postBody' => "<wfs:Query>" . implode("\n\t", [
- "<wfs:PropertyName>A_ADM_COMPANY</wfs:PropertyName>",
- "<wfs:PropertyName>A_CLASSIFIED</wfs:PropertyName>",
- "<wfs:PropertyName>A_STATUS</wfs:PropertyName>",
- "<wfs:PropertyName>A_STATUS_INFO</wfs:PropertyName>",
- "<wfs:PropertyName>BI_analiza_depth</wfs:PropertyName>",
- "<wfs:PropertyName>BI_analiza_reloadCache</wfs:PropertyName>",
- "<wfs:PropertyName>FILE_STATUS</wfs:PropertyName>",
- "<wfs:PropertyName>FILE_STATUS_info</wfs:PropertyName>",
- "<wfs:PropertyName>ID</wfs:PropertyName>",
- "<wfs:PropertyName>L_APPOITMENT_USER</wfs:PropertyName>",
- // "<wfs:PropertyName>default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY</wfs:PropertyName>",
- // "<wfs:PropertyName>default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI</wfs:PropertyName>",
- "<wfs:PropertyName resolve=\"all\" resolveDepth=\"2\">default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row</wfs:PropertyName>",
- // "<wfs:PropertyName resolve=\"all\" resolveDepth=\"2\">default_db__x3A__BI_audit_KW_requested_person:BI_audit_KW_requested_person</wfs:PropertyName>",
- ]) . "\n" . "</wfs:Query>",
- ];
- $examples['BiAudit']['BiAudit lvl3'] = [
- 'typeName' => 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
- 'postBody' => "<wfs:Query>" . implode("\n\t", [
- "<wfs:PropertyName>A_ADM_COMPANY</wfs:PropertyName>",
- "<wfs:PropertyName>A_CLASSIFIED</wfs:PropertyName>",
- "<wfs:PropertyName>A_STATUS</wfs:PropertyName>",
- "<wfs:PropertyName>A_STATUS_INFO</wfs:PropertyName>",
- "<wfs:PropertyName>BI_analiza_depth</wfs:PropertyName>",
- "<wfs:PropertyName>BI_analiza_reloadCache</wfs:PropertyName>",
- "<wfs:PropertyName>FILE_STATUS</wfs:PropertyName>",
- "<wfs:PropertyName>FILE_STATUS_info</wfs:PropertyName>",
- "<wfs:PropertyName>ID</wfs:PropertyName>",
- "<wfs:PropertyName>L_APPOITMENT_USER</wfs:PropertyName>",
- "<wfs:PropertyName resolve=\"all\" resolveDepth=\"3\">default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY</wfs:PropertyName>",
- "<wfs:PropertyName resolve=\"all\" resolveDepth=\"3\">default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI</wfs:PropertyName>",
- "<wfs:PropertyName resolve=\"all\" resolveDepth=\"3\">default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row</wfs:PropertyName>",
- "<wfs:PropertyName resolve=\"all\" resolveDepth=\"3\">default_db__x3A__BI_audit_KW_requested_person:BI_audit_KW_requested_person</wfs:PropertyName>",
- ]) . "\n" . "</wfs:Query>",
- ];
- UI::startContainer();
- // Lib::loadClass('Vendor_Monolog');
- // $logger = new Vendor_Monolog('dbg-logger-name');
- // $logger->pushHandler(new StreamHandler('/tmp/monolog-test.log', Vendor_Monolog::WARNING));
- // $logger->warning('Foo');
- // $logger->error('Bar');
- //
- // $logFile = '/tmp/monolog-test-json.log';
- // $formatter = new JsonFormatter();
- // // Create a handler
- // $stream = new StreamHandler($logFile, Vendor_Monolog::INFO);
- // $stream->setFormatter($formatter);
- // // bind it to a logger object
- // $securityLogger = new Vendor_Monolog('View Info');
- // $securityLogger->pushHandler($stream);
- // $securityLogger->addInfo('debug message / label', [ 'dbg-object' => [ 'x' => 'y', 'z' ] ]);
- // 'wfsRequestFeatureTypeName' = 'default_db__x3A__CRM_PROCES:PROCES'
- echo UI::h('input', [ 'id' => 'wfsRequestFeatureTypeName', 'class' => "form-control", 'value' => $examples['Procesy']['lvl1']['typeName'], 'title' => "Feature name" ]);
- echo UI::h('textarea', [ 'id' => 'wfsRequestBody', 'style' => "width:100%; height:300px" ], htmlspecialchars($examples['Procesy']['lvl1']['postBody']));
- echo UI::h('button', [ 'class' => "btn btn-primary", 'onClick' => "return sendWfsRequest(this)" ], "Wyslij");
- echo UI::h('div', [ 'style' => "display:inline", 'id' => "wfs-example-btns" ]);
- echo UI::h('details', [ 'style' => "padding:6px; background-color:#333; color:#fff", 'open' => "open" ], [
- UI::h('summary', [ 'style' => "padding:0 3px; outline:none; cursor:pointer" ], [
- "WFS Response converted to JSON ",
- UI::h('button', [ 'class' => "btn btn-xs btn-default", 'onClick' => "return wfsResponseToggleTreeView(this)" ], "toggle tree view"),
- ]),
- UI::h('pre', [ 'id' => 'wfsResponse', 'style' => "margin:0; font-size:x-small; border-radius:0" ], 'loading...'),
- ]);
- echo UI::h('details', [ 'style' => "padding:6px; background-color:#68cbfd; color:#fff" ], [
- UI::h('summary', [ 'style' => "padding:0 3px; outline:none; cursor:pointer" ], [
- UI::h('i',[ 'class' => "glyphicon glyphicon-question-sign" ]),
- " WFS 1.1, 2.0 fetch nested objects (traverse, resolve)",
- ]),
- UI::h('pre', ['style' => "margin:0; font-size:x-small; border-radius:0"], implode("\n", [
- "WFS 1.1 - traverseXlinkDepth, traverseXlinkExpiry " . UI::h('a', ['href'=>"http://docs.opengeospatial.org/is/04-094r1/04-094r1.html#50"], "http://docs.opengeospatial.org/is/04-094r1/04-094r1.html#50"),
- "WFS 2.0 - resolve, resolveDepth, resolveTimeout " . UI::h('a', ['href'=>"http://docs.opengeospatial.org/is/09-025r2/09-025r2.html#57"], "http://docs.opengeospatial.org/is/09-025r2/09-025r2.html#57"),
- "",
- "WFS 1.1 traverseXlinkDepth type=\"string\" ('*' or int > 0) - recurse limit ('*' - no limit)",
- "WFS 1.1 traverseXlinkExpiry type=\"xsd:positiveInteger\" - timeOut in minutes",
- "WFS 1.1 Note: traverse used in wfs:GetFeature or inside wfs:Query tag wfs:XlinkPropertyName (same like wfs:PropertyName but with @traverse* attributes)",
- "",
- "WFS 2.0 resolve type=\"wfs:ResolveValueType\" default=\"none\" (enum: 'local', 'remote', 'all', 'none')",
- " - resolve=\"local\" - operation shall only resolve local references",
- " - resolve=\"remote\" - operation shall only resolve remote resource references",
- " - resolve=\"all\" - means that an operation shall resolve all resource references",
- " - resolve=\"none\" - means that an operation shall not resolve any resource references",
- "WFS 2.0 resolveDepth type=\"wfs:positiveIntegerWithStar\" default=\"*\" ('*' or int > 0) - recurse limit ('*' - no limit)",
- "WFW 2.0 resolveTimeout type=\"xsd:positiveInteger\" default=\"300\" - timeOut in seconds",
- "WFS 2.0 Note: resolve used in wfs:GetFeature or inside wfs:Query tag wfs:PropertyName",
- " in wfs:PropertyName may use resolvePath - @see " . UI::h('a', ['href'=>"http://docs.opengeospatial.org/is/09-025r2/09-025r2.html#103"], "http://docs.opengeospatial.org/is/09-025r2/09-025r2.html#103"),
- "",
- "WFS 2.0 resolve, resolveDepth example " . UI::h('a', ['href'=>"http://grepcode.com/file/repo1.maven.org/maven2/org.jvnet.ogc/ogc-schemas/2.2.0/ogc/wfs/2.0/examples/GetFeature/GetFeature_12.xml"], "http://grepcode.com/file/repo1.maven.org/maven2/org.jvnet.ogc/ogc-schemas/2.2.0/ogc/wfs/2.0/examples/GetFeature/GetFeature_12.xml"),
- ])),
- ]);
- UI::endContainer();
- echo UI::h('script', [], "
- var examples = " . json_encode($examples) . ";
- console.log('examples', examples)
- function setWfsExample(groupName, label) {
- console.log('groupName', groupName, 'label', label)
- document.getElementById('wfsRequestFeatureTypeName').value = examples[groupName][label].typeName
- document.getElementById('wfsRequestBody').value = examples[groupName][label].postBody || ''
- sendWfsRequest()
- }
- for (var groupName in examples) {
- for (var label in examples[groupName]) {
- jQuery(document.getElementById('wfs-example-btns')).append('<button class=\"btn btn-default\" style=\"margin-left:12px\" onClick=\"setWfsExample(\''+groupName+'\', \''+label+'\')\">'+label+'</button>')
- }
- }
- ");
- echo UI::h('script', [], "
- function sendWfsRequest() {
- var treeViewNode = document.getElementById('wfsResponseTreeView')
- if (treeViewNode) treeViewNode.parentNode.removeChild(treeViewNode)
- document.getElementById('wfsResponse').style.display = 'block'
- document.getElementById('wfsResponse').innerHTML = 'loading...'
- var featureTypeName = document.getElementById('wfsRequestFeatureTypeName').value
- var postBody = document.getElementById('wfsRequestBody').value.replace(/</g, '<').replace(/>/g, '>')
- console.log('wfsRequestBody:', postBody)
- var wfsParams = Object.assign({
- 'maxFeatures': 3,
- }, (!postBody) ? {} : { 'ogc:Filter': postBody }
- )
- console.log('p5WFS_GetFeature', featureTypeName, wfsParams)
- p5WFS_GetFeature(featureTypeName, wfsParams).then(function (features) {
- console.log('features', features)
- document.getElementById('wfsResponse').innerHTML = JSON.stringify(features, null, 2)
- }).catch(function (e) {
- console.warn(e)
- document.getElementById('wfsResponse').innerHTML = JSON.stringify(e, null, 2)
- p5UI__notifyAjaxCallback({ type: 'error', msg: e })
- })
- return false
- }
- (function () {
- console.log('p5WFS_GetFeature() ...')
- sendWfsRequest()
- })()
- ");
- echo UI::h('script', [], "
- var DBG = 0;
- function wfsResponseToggleTreeView(btnNode) {
- btnNode.isTreeViewActive = ! btnNode.isTreeViewActive
- if(DBG)console.log('btnNode.isTreeViewActive', btnNode.isTreeViewActive)
- if (btnNode.isTreeViewActive) {
- document.getElementById('wfsResponse').style.display = 'none'
- if (!document.getElementById('wfsResponseTreeView')) {
- var respTxtNode = document.getElementById('wfsResponse')
- var treeViewNode = document.createElement('div')
- treeViewNode.id = 'wfsResponseTreeView'
- treeViewNode.style.margin = '0'
- treeViewNode.style.padding = '9.5px'
- treeViewNode.style.border = '1px solid #ccc'
- treeViewNode.style.color = '#333'
- treeViewNode.style.backgroundColor = '#f5f5f5'
- treeViewNode.style.fontFamily = 'monospace'
- treeViewNode.style.fontSize = 'x-small'
- treeViewNode.style.lineHeight = '1.42857143'
- treeViewNode.style.wordBreak = 'break-all'
- treeViewNode.style.wordWrap = 'break-word'
- treeViewNode.innerHTML = parseJsonTextToTreeView(respTxtNode.innerHTML)
- respTxtNode.parentNode.insertBefore(treeViewNode, respTxtNode.nextSibling);
- }
- document.getElementById('wfsResponseTreeView').style.display = 'block'
- } else {
- var treeViewNode = document.getElementById('wfsResponseTreeView')
- if (treeViewNode) treeViewNode.parentNode.removeChild(treeViewNode)
- document.getElementById('wfsResponse').style.display = 'block'
- }
- }
- function parseJsonTextToTreeView(txtJson) {
- var out = ''
- var jsonLines = txtJson.split('\\n').map(function (line) {
- var whiteSpacePrefix = line.match(/^\s*/)[0].length
- return [ whiteSpacePrefix, line.substr(whiteSpacePrefix) ]
- })
- if(DBG)console.table(jsonLines)
- jsonLines = jsonLines.map(function (jsonLine) {
- if (jsonLine[1].length > 100) jsonLine[1] = jsonLine[1].substr(0, 100) + '...\"'
- return jsonLine
- })
- return generateTreeView(jsonLines)
- }
- function generateTreeView(jsonLines) {
- if (!jsonLines || !jsonLines.length) return ''
- out = ''
- if(DBG)console.log('----------------- group Childrens jsonLines:', jsonLines)
- groupedChildrens = jsonLines.reduce(function (grouped, cur, idx) {
- var last = grouped.pop()
- if (!last) {
- grouped.push({ deep: cur[0], label: cur[1], childrens: [] })
- if(DBG)console.log('groupedChildrens::(!last)', ' cur:[ '+cur[0]+', \"'+cur[1]+'\" ]')
- } else if (cur[0] > last.deep) {
- last.childrens.push([ cur[0] - 2, cur[1] ])
- grouped.push(last)
- if(DBG)console.log('groupedChildrens::(deep > cur[0])', ' cur:[ '+cur[0]+', \"'+cur[1]+'\" ]')
- } else if (cur[0] === last.deep) {
- var isEndOfObject = ([ ']', '],', '}', '},' ].indexOf(cur[1]) > -1)
- if (isEndOfObject && !last.childrens.length) last.label += ' ' + cur[1];
- grouped.push(last)
- if (!isEndOfObject) grouped.push({ deep: cur[0], label: cur[1], childrens: [] })
- // if (!isEndOfObject) console.log('groupedChildrens::(deep === cur[0] && !isEndOfObject)', ' cur:[ '+cur[0]+', \"'+cur[1]+'\" ]')
- if(DBG)console.log('groupedChildrens::(deep === cur[0])', ' cur:[ '+cur[0]+', \"'+cur[1]+'\" ]')
- }
- return grouped
- }, [])
- if(DBG)console.log('groupedChildrens', groupedChildrens)
- return groupedChildrens.map(function (group) {
- return (group.childrens.length > 0)
- ? '<details><summary style=\"outline:none; cursor:pointer\">' + group.label + '</summary><div style=\"padding:0 0 0 20px\">' + generateTreeView(group.childrens) + '</div></details>'
- : '<div>' + group.label + '</div>'
- }).join('\\n')
- }
- ");
- } catch (Exception $e) {
- UI::alert('danger', $e);
- }
- UI::dol();
- }
- }
|