@@ -203,7 +203,8 @@ exclude-result-prefixes="#all"
203203 </xsl : template >
204204
205205 <!-- render chart block -->
206- <xsl : template match =" *[@typeof = ('&ldh;ResultSetChart', '&ldh;GraphChart')][descendant::*[@property = '&spin;query'][@resource]][descendant::*[@property = '&ldh;chartType'][@resource]]" mode =" ldh:RenderRow" priority =" 2" > <!-- prioritize above block.xsl -->
206+
207+ <xsl : template match =" *[@typeof = ('&ldh;ResultSetChart', '&ldh;GraphChart')][descendant::*[@property = '&spin;query'][@resource]][descendant::*[@property = '&ldh;chartType'][@resource]]" mode =" ldh:RenderRow" as =" function(item()?) as map(*)" priority =" 2" > <!-- prioritize above block.xsl -->
207208 <xsl : param name =" block" select =" ancestor-or-self::div[contains-token(@class, 'block')][1]" as =" element()" />
208209 <xsl : param name =" about" select =" $block/@about" as =" xs:anyURI" />
209210 <xsl : param name =" container" select =" ." as =" element()" />
@@ -240,6 +241,97 @@ exclude-result-prefixes="#all"
240241 <ixsl : set-style name =" width" select =" '66%'" object =" ." />
241242 </xsl : for-each >
242243
244+ <xsl : variable name =" child-thunk" as =" function(map(*)) as item()*?" >
245+ <xsl : apply-templates mode =" #current" />
246+ </xsl : variable >
247+
248+ <xsl : variable name =" request-uri" select =" ldh:href($ldt:base, ac:absolute-path(ldh:base-uri(.)), map{}, $query-uri)" as =" xs:anyURI" />
249+ <xsl : variable name =" request" select =" map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/rdf+xml' } }" as =" map(*)" />
250+ <xsl : variable name =" context" as =" map(*)" select ="
251+ map{
252+ 'request': $request,
253+ 'this': $about,
254+ 'block': $block,
255+ 'container': $container,
256+ 'container-id': $container-id,
257+ 'method': $method,
258+ 'action': $action,
259+ 'accept-charset': $accept-charset,
260+ 'enctype': $enctype,
261+ 'chart-type-id': $chart-type-id,
262+ 'category-id': $category-id,
263+ 'series-id': $series-id,
264+ 'query-uri': $query-uri,
265+ 'chart-type': $chart-type,
266+ 'category': $category,
267+ 'series': $series,
268+ 'canvas-id': $canvas-id,
269+ 'canvas-class': $canvas-class,
270+ 'form-actions': $form-actions
271+ }" />
272+
273+ <xsl : sequence select ="
274+ ldh:load-block#4(
275+ $context,
276+ ldh:chart-self-thunk#1,
277+ $child-thunk,
278+ ?
279+ )
280+ " />
281+ </xsl : template >
282+
283+ <!-- this is the one thunk you hand to load-block#4 -->
284+ <xsl : function name =" ldh:chart-self-thunk" as =" item()*" ixsl : updating =" yes" >
285+ <xsl : param name =" context" as =" map(*)" />
286+ <xsl : message >ldh:chart-self-thunk</xsl : message >
287+ <xsl : sequence select ="
288+ ixsl:resolve($context) =>
289+ ixsl:then(ldh:render-chart#1) =>
290+ ixsl:then(ldh:chart-query-thunk#1) =>
291+ ixsl:then(ldh:chart-results-thunk#1)
292+ " />
293+ </xsl : function >
294+
295+ <!-- only the first HTTP → query‐response lives here -->
296+ <xsl : function name =" ldh:chart-query-thunk" as =" item()*" ixsl : updating =" yes" >
297+ <xsl : param name =" context" as =" map(*)" />
298+ <xsl : message >ldh:chart-query-thunk</xsl : message >
299+ <xsl : sequence select ="
300+ ixsl:http-request($context('request')) =>
301+ ixsl:then(ldh:rethread-response($context, ?)) =>
302+ ixsl:then(ldh:handle-response#1) =>
303+ ixsl:then(ldh:chart-query-response#1)
304+ " />
305+ </xsl : function >
306+
307+ <xsl : function name =" ldh:chart-results-thunk" as =" item()*" ixsl : updating =" yes" >
308+ <xsl : param name =" context" as =" map(*)" />
309+ <xsl : message >ldh:chart-results-thunk</xsl : message >
310+ <xsl : sequence select ="
311+ ixsl:http-request($context('request')) =>
312+ ixsl:then(ldh:rethread-response($context, ?)) =>
313+ ixsl:then(ldh:handle-response#1) =>
314+ ixsl:then(ldh:chart-results-response#1)
315+ " />
316+ </xsl : function >
317+
318+ <xsl : function name =" ldh:render-chart" ixsl : updating =" yes" >
319+ <xsl : param name =" context" as =" map(*)" />
320+ <xsl : variable name =" container" select =" $context('container')" as =" element()" />
321+ <xsl : variable name =" method" select =" $context('method')" as =" xs:string" />
322+ <xsl : variable name =" action" select =" $context('action')" as =" xs:anyURI" />
323+ <xsl : variable name =" accept-charset" select =" $context('accept-charset')" as =" xs:string?" />
324+ <xsl : variable name =" enctype" select =" $context('enctype')" as =" xs:string?" />
325+ <xsl : variable name =" chart-type-id" select =" $context('chart-type-id')" as =" xs:string" />
326+ <xsl : variable name =" category-id" select =" $context('category-id')" as =" xs:string" />
327+ <xsl : variable name =" series-id" select =" $context('series-id')" as =" xs:string" />
328+ <xsl : variable name =" chart-type" select =" $context('chart-type')" as =" xs:anyURI?" />
329+ <xsl : variable name =" canvas-id" select =" $context('canvas-id')" as =" xs:string?" />
330+ <xsl : variable name =" canvas-class" select =" $context('canvas-class')" as =" xs:string?" />
331+ <xsl : variable name =" form-actions" select =" $context('form-actions')" as =" element()?" />
332+
333+ <xsl : message >ldh:render-chart</xsl : message >
334+
243335 <xsl : for-each select =" $container//div[contains-token(@class, 'main')]" >
244336 <xsl : variable name =" header" select =" ./div/div[@class = 'well']" as =" element()" />
245337
@@ -325,28 +417,9 @@ exclude-result-prefixes="#all"
325417 </form >
326418 </xsl : result-document >
327419 </xsl : for-each >
328-
329- <xsl : variable name =" request-uri" select =" ldh:href($ldt:base, ac:absolute-path(ldh:base-uri(.)), map{}, $query-uri)" as =" xs:anyURI" />
330- <xsl : variable name =" request" select =" map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/rdf+xml' } }" as =" map(*)" />
331- <xsl : variable name =" context" as =" map(*)" select ="
332- map{
333- 'request': $request,
334- 'this': $about,
335- 'block': $block,
336- 'container': $container,
337- 'container-id': $container-id,
338- 'query-uri': $query-uri,
339- 'chart-type': $chart-type,
340- 'category': $category,
341- 'series': $series,
342- 'canvas-id': $canvas-id
343- }" />
344- <ixsl : promise select =" ixsl:http-request($context('request')) =>
345- ixsl:then(ldh:rethread-response($context, ?)) =>
346- ixsl:then(ldh:handle-response#1) =>
347- ixsl:then(ldh:chart-query-response#1)"
348- on-failure =" ldh:promise-failure#1" />
349- </xsl : template >
420+
421+ <xsl : sequence select =" $context" />
422+ </xsl : function >
350423
351424 <!-- EVENT LISTENERS -->
352425
@@ -576,6 +649,8 @@ exclude-result-prefixes="#all"
576649 <xsl : variable name =" series" select =" $context('series')" as =" xs:string*" />
577650 <xsl : variable name =" canvas-id" select =" $context('canvas-id')" as =" xs:string" />
578651
652+ <xsl : message >ldh:chart-query-response</xsl : message >
653+
579654 <xsl : for-each select =" $response" >
580655 <xsl : variable name =" response" select =" ." as =" map(*)" />
581656 <xsl : choose >
@@ -597,7 +672,7 @@ exclude-result-prefixes="#all"
597672 </xsl : for-each >
598673
599674 <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(*)" />
600- <xsl : variable name = " context " as = " map(*) " select ="
675+ <xsl : sequence select ="
601676 map{
602677 'request': $request,
603678 'endpoint': $endpoint,
@@ -613,11 +688,6 @@ exclude-result-prefixes="#all"
613688 'show-chart-save': false(),
614689 'results-container-id': $container-id || '-query-results'
615690 }" />
616- <ixsl : promise select =" ixsl:http-request($context('request')) =>
617- ixsl:then(ldh:rethread-response($context, ?)) =>
618- ixsl:then(ldh:handle-response#1) =>
619- ixsl:then(ldh:chart-results-response#1)"
620- on-failure =" ldh:promise-failure#1" />
621691 </xsl : for-each >
622692 </xsl : when >
623693 <xsl : otherwise >
@@ -639,11 +709,11 @@ exclude-result-prefixes="#all"
639709 </div >
640710 </xsl : result-document >
641711 </xsl : for-each >
712+
713+ <xsl : sequence select =" $context" />
642714 </xsl : otherwise >
643715 </xsl : choose >
644716 </xsl : for-each >
645-
646- <xsl : sequence select =" $context" />
647717 </xsl : function >
648718
649719 <!-- SPARQL results response -->
@@ -664,6 +734,8 @@ exclude-result-prefixes="#all"
664734 <xsl : variable name =" show-chart-save" select =" $context('show-chart-save')" as =" xs:boolean" />
665735 <xsl : variable name =" results-container-id" select =" $context('results-container-id')" as =" xs:string" />
666736
737+ <xsl : message >ldh:chart-results-response</xsl : message >
738+
667739 <xsl : for-each select =" $response" >
668740 <ixsl : set-style name =" cursor" select =" 'default'" object =" ixsl:page()//body" />
669741
@@ -694,23 +766,9 @@ exclude-result-prefixes="#all"
694766 <xsl : with-param name =" category" select =" $category" />
695767 <xsl : with-param name =" series" select =" $series" />
696768 </xsl : call-template >
697-
698- <!-- hide the progress bar - either of this block (if it contains a progress bar) or of the parent block -->
699- <xsl : for-each select =" ($block//div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')], $block/ancestor::div[contains-token(@class, 'block')]//div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')])[1]" >
700- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]" />
701- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress-striped', false() ])[current-date() lt xs:date('2000-01-01')]" />
702- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]" />
703- </xsl : for-each >
704769 </xsl : for-each >
705770 </xsl : when >
706771 <xsl : otherwise >
707- <!-- hide the progress bar - either of this block (if it contains a progress bar) or of the parent block -->
708- <xsl : for-each select =" ($block//div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')], $block/ancestor::div[contains-token(@class, 'block')]//div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')])[1]" >
709- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]" />
710- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress-striped', false() ])[current-date() lt xs:date('2000-01-01')]" />
711- <xsl : sequence select =" ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]" />
712- </xsl : for-each >
713-
714772 <!-- error response - could not load query results -->
715773 <xsl : for-each select =" $container" >
716774 <xsl : result-document href =" ?." method =" ixsl:replace-content" >
0 commit comments