@@ -262,7 +262,45 @@ exclude-result-prefixes="#all"
262262 <xsl : variable name =" results-uri" select =" ac:build-uri($endpoint, map{ 'query': $query-string })" as =" xs:anyURI" />
263263 <xsl : variable name =" request-uri" select =" ldh:href($ldt:base, $ldt:base, map{}, $results-uri)" as =" xs:anyURI" />
264264 <xsl : variable name =" request" select =" map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/sparql-results+xml,application/rdf+xml;q=0.9' } }" as =" map(xs:string, item())" />
265+ <xsl : variable name =" results-container-id" select =" $block-id || '-query-results'" as =" xs:string" />
266+ <xsl : variable name =" results-container-class" select =" 'sparql-query-results'" as =" xs:string" />
267+ <xsl : variable name =" results-container-about" select =" xs:anyURI(ac:absolute-path(ldh:base-uri(.)) || '#' || $results-container-id)" as =" xs:anyURI" />
265268
269+ <!-- create results/error container element if it doesn't exist -->
270+ <xsl : if test =" not(id($results-container-id, ixsl:page()))" >
271+ <!-- TO-DO: find a better solution. $container in ContentMode is the whole .content row but in ReadMode it's .main -->
272+ <xsl : for-each select =" if ($container//div[contains-token(@class, 'main')]) then $container//div[contains-token(@class, 'main')] else $container" >
273+ <xsl : variable name =" active-mode" select =" xs:anyURI('∾ ChartMode')" as =" xs:anyURI" />
274+
275+ <xsl : result-document href =" ?." method =" ixsl:append-content" >
276+ <xsl : if test =" $query-string" >
277+ <ul class =" nav nav-tabs nav-query-results" >
278+ <li class =" chart-mode" >
279+ <xsl : if test =" $active-mode = '∾ ChartMode'" >
280+ <xsl : attribute name =" class" select =" 'chart-mode active'" />
281+ </xsl : if >
282+
283+ <a >
284+ <xsl : apply-templates select =" key('resources', '&ldh; Chart', document(ac:document-uri('&ldh; ')))" mode =" ac:label" />
285+ </a >
286+ </li >
287+ <li class =" view-mode" >
288+ <xsl : if test =" $active-mode = '∾ ViewMode'" >
289+ <xsl : attribute name =" class" select =" 'view-mode active'" />
290+ </xsl : if >
291+
292+ <a >
293+ <xsl : apply-templates select =" key('resources', '&ldh; View', document(ac:document-uri('&ldh; ')))" mode =" ac:label" />
294+ </a >
295+ </li >
296+ </ul >
297+ </xsl : if >
298+
299+ <div class =" {$results-container-class}" id =" {$results-container-id}" about =" {$results-container-about}" ></div >
300+ </xsl : result-document >
301+ </xsl : for-each >
302+ </xsl : if >
303+
266304 <xsl : variable name =" request" as =" item()*" >
267305 <ixsl : schedule-action http-request =" $request" >
268306 <xsl : call-template name =" onSPARQLResultsLoad" >
@@ -271,7 +309,7 @@ exclude-result-prefixes="#all"
271309 <xsl : with-param name =" block-uri" select =" $block-uri" />
272310 <xsl : with-param name =" container" select =" $container" />
273311 <xsl : with-param name =" chart-canvas-id" select =" $block-id || '-chart-canvas'" />
274- <xsl : with-param name =" results-container-id " select =" $block-id || '-query-results' " />
312+ <xsl : with-param name =" results-container" select =" id($results-container-id, ixsl:page()) " />
275313 <xsl : with-param name =" query-string" select =" $query-string" />
276314 </xsl : call-template >
277315 </ixsl : schedule-action >
@@ -299,9 +337,9 @@ exclude-result-prefixes="#all"
299337 <xsl : apply-templates select =" $form" mode =" ixsl:onsubmit" />
300338 </xsl : template >
301339
302- <!-- toggle query results to container mode (prioritize over view.xsl) -->
340+ <!-- toggle query results to view mode (prioritize over view.xsl) -->
303341
304- <xsl : template match =" ul[contains-token(@class, 'nav-tabs')][contains-token(@class, 'nav-query-results')]/li[contains-token(@class, 'container -mode')][not(contains-token(@class, 'active'))]/a" mode =" ixsl:onclick" priority =" 1" >
342+ <xsl : template match =" ul[contains-token(@class, 'nav-tabs')][contains-token(@class, 'nav-query-results')]/li[contains-token(@class, 'view -mode')][not(contains-token(@class, 'active'))]/a" mode =" ixsl:onclick" priority =" 1" >
305343 <xsl : variable name =" block" select =" ancestor::div[contains-token(@class, 'block')][1]" as =" element()" />
306344 <xsl : variable name =" container" select =" ancestor::div[@typeof][1]" as =" element()" />
307345 <xsl : variable name =" form" select =" $container//form[contains-token(@class, 'sparql-query-form')]" as =" element()" />
@@ -342,9 +380,19 @@ exclude-result-prefixes="#all"
342380 <ixsl:set-style name="width" select="'50%'" object="."/>
343381 </xsl:for-each>-->
344382
383+ <xsl : variable name =" view-container" select =" $container//div[contains-token(@class, 'sparql-query-results')]" as =" element()" />
384+ <!-- ensure the HTML structure is compatible with what view expects -->
385+ <xsl : for-each select =" $view-container" >
386+ <ixsl : set-attribute name =" typeof" select =" '&ldh; View'" object =" $view-container" />
387+
388+ <xsl : result-document href =" ?." method =" ixsl:replace-content" >
389+ <div class =" main" ></div >
390+ </xsl : result-document >
391+ </xsl : for-each >
392+
345393 <xsl : apply-templates select =" $view-html" mode =" ldh:RenderRow" >
346394 <xsl : with-param name =" block" select =" $block" />
347- <xsl : with-param name =" container" select =" $container//div[contains-token(@class, 'sparql-query-results')] " />
395+ <xsl : with-param name =" container" select =" $view-container " />
348396 <xsl : with-param name =" this" select =" $this" />
349397 <xsl : with-param name =" base-uri" select =" ac:absolute-path(ldh:base-uri(.))" />
350398 </xsl : apply-templates >
@@ -464,47 +512,7 @@ exclude-result-prefixes="#all"
464512 <xsl : param name =" content-method" select =" xs:QName('ixsl:replace-content')" as =" xs:QName" />
465513 <xsl : param name =" show-editor" select =" true()" as =" xs:boolean" />
466514 <xsl : param name =" show-chart-save" select =" true()" as =" xs:boolean" />
467- <xsl : param name =" results-container-id" select =" ixsl:get($container, 'id') || '-query-results'" as =" xs:string" />
468- <xsl : param name =" results-container-class" select =" 'sparql-query-results'" as =" xs:string" />
469-
470- <!-- create results/error container element if it doesn't exist -->
471- <xsl : if test =" not(id($results-container-id, ixsl:page()))" >
472- <!-- TO-DO: find a better solution. $container in ContentMode is the whole .content row but in ReadMode it's .main -->
473- <xsl : for-each select =" if ($container//div[contains-token(@class, 'main')]) then $container//div[contains-token(@class, 'main')] else $container" >
474- <xsl : variable name =" active-mode" select =" xs:anyURI('∾ ChartMode')" as =" xs:anyURI" />
475-
476- <xsl : result-document href =" ?." method =" ixsl:append-content" >
477- <xsl : if test =" $query-string" >
478- <ul class =" nav nav-tabs nav-query-results" >
479- <li class =" chart-mode" >
480- <xsl : if test =" $active-mode = '∾ ChartMode'" >
481- <xsl : attribute name =" class" select =" 'chart-mode active'" />
482- </xsl : if >
483-
484- <a >
485- <xsl : apply-templates select =" key('resources', '∾ ChartMode', document(ac:document-uri('∾ ')))" mode =" ldh:logo" />
486- <xsl : apply-templates select =" key('resources', '∾ ChartMode', document(ac:document-uri('∾ ')))" mode =" ac:label" />
487- </a >
488- </li >
489- <li class =" container-mode" >
490- <xsl : if test =" $active-mode = '∾ ContainerMode'" >
491- <xsl : attribute name =" class" select =" 'container-mode active'" />
492- </xsl : if >
493-
494- <a >
495- <xsl : apply-templates select =" key('resources', '∾ ContainerMode', document(ac:document-uri('∾ ')))" mode =" ldh:logo" />
496- <xsl : apply-templates select =" key('resources', '∾ ContainerMode', document(ac:document-uri('∾ ')))" mode =" ac:label" />
497- </a >
498- </li >
499- </ul >
500- </xsl : if >
501-
502- <div class =" {$results-container-class}" id =" {$results-container-id}" ></div >
503- </xsl : result-document >
504- </xsl : for-each >
505- </xsl : if >
506-
507- <ixsl : set-style name =" cursor" select =" 'default'" object =" ixsl:page()//body" />
515+ <xsl : param name =" results-container" as =" element()" />
508516
509517 <xsl : variable name =" response" select =" ." as =" map(*)" />
510518 <xsl : choose >
@@ -514,7 +522,7 @@ exclude-result-prefixes="#all"
514522 <xsl : variable name =" category" select =" if (exists($category)) then $category else (if (rdf:RDF) then distinct-values(rdf:RDF/*/*/concat(namespace-uri(), local-name()))[1] else srx:sparql/srx:head/srx:variable[1]/@name)" as =" xs:string?" />
515523 <xsl : variable name =" series" select =" if (exists($series)) then $series else (if (rdf:RDF) then distinct-values(rdf:RDF/*/*/concat(namespace-uri(), local-name())) else srx:sparql/srx:head/srx:variable/@name)" as =" xs:string*" />
516524
517- <xsl : for-each select =" id( $results-container-id, ixsl:page()) " >
525+ <xsl : for-each select =" $results-container" >
518526 <xsl : result-document href =" ?." method =" ixsl:replace-content" >
519527 <xsl : apply-templates select =" $results" mode =" bs2:Chart" >
520528 <xsl : with-param name =" endpoint" select =" if (not($endpoint = sd:endpoint())) then $endpoint else ()" tunnel =" yes" />
@@ -564,7 +572,7 @@ exclude-result-prefixes="#all"
564572 </xsl : for-each >
565573
566574 <!-- error response - could not load query results -->
567- <xsl : for-each select =" id( $results-container-id, ixsl:page()) " >
575+ <xsl : for-each select =" $results-container" >
568576 <xsl : result-document href =" ?." method =" ixsl:replace-content" >
569577 <div class =" alert alert-block" >
570578 <strong >Error during query execution:</strong >
@@ -576,6 +584,8 @@ exclude-result-prefixes="#all"
576584 </xsl : for-each >
577585 </xsl : otherwise >
578586 </xsl : choose >
587+
588+ <ixsl : set-style name =" cursor" select =" 'default'" object =" ixsl:page()//body" />
579589 </xsl : template >
580590
581591</xsl : stylesheet >
0 commit comments