Skip to content

Commit 0ff07b6

Browse files
authored
Removed child thunks (#211)
* Removing child thunks * View object-metadata refactoring * Promise error handling fixes
1 parent d37ca1e commit 0ff07b6

8 files changed

Lines changed: 394 additions & 377 deletions

File tree

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block.xsl

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ exclude-result-prefixes="#all"
117117

118118
<!-- render row -->
119119

120-
<xsl:template match="*" mode="ldh:RenderRow">
120+
<xsl:template match="*" mode="ldh:RenderRow" as="(function(item()?) as map(*))?">
121121
<xsl:apply-templates mode="#current"/>
122122
</xsl:template>
123123

124-
<xsl:template match="text()" mode="ldh:RenderRow"/>
124+
<xsl:template match="text()" mode="ldh:RenderRow" as="(function(item()?) as map(*))?"/>
125125

126126
<!-- hide type control -->
127127
<xsl:template match="*[rdf:type/@rdf:resource = '&ldh;XHTML']" mode="bs2:TypeControl" priority="1">
@@ -321,35 +321,29 @@ exclude-result-prefixes="#all"
321321
<!-- CALLBACKS -->
322322

323323
<xsl:function name="ldh:load-block" ixsl:updating="yes" as="map(*)">
324-
<xsl:param name="context" as="map(*)"/>
325-
<xsl:param name="self-thunk" as="function(map(*)) as item()*"/>
326-
<xsl:param name="child-thunk" as="function(map(*)) as item()*?"/>
327-
<xsl:param name="ignored" as="item()?"/>
324+
<xsl:param name="context" as="map(*)"/>
325+
<xsl:param name="thunk" as="function(map(*)) as item()*"/>
326+
<xsl:param name="ignored" as="item()?"/>
328327

329-
<xsl:sequence select="
330-
ixsl:all-settled(
331-
array{
332-
$self-thunk($context),
333-
if ($child-thunk) then $child-thunk($context) else ()
334-
}
335-
)
336-
=> ixsl:then(
337-
ldh:hide-block-progress-bar(
338-
$context,
339-
?
340-
)
341-
)
342-
"/>
328+
<xsl:sequence select="
329+
$thunk($context) =>
330+
ixsl:then(
331+
ldh:hide-block-progress-bar(
332+
$context,
333+
?
334+
)
335+
)
336+
"/>
343337
</xsl:function>
344338

345339
<xsl:function name="ldh:hide-block-progress-bar" as="map(*)" ixsl:updating="yes">
346340
<xsl:param name="context" as="map(*)"/>
347-
<xsl:param name="results" as="array(*)"/>
341+
<xsl:param name="ignored" as="item()?"/>
348342

349343
<xsl:variable name="container" select="$context('container')" as="element()"/>
350344

351345
<xsl:message>ldh:hide-block-progress-bar $container/@typeof: <xsl:value-of select="$container/@typeof"/></xsl:message>
352-
346+
353347
<!-- hide the progress bar -->
354348
<xsl:for-each select="$container/ancestor::div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')]">
355349
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]"/>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/chart.xsl

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,6 @@ exclude-result-prefixes="#all"
240240
<xsl:for-each select="$block//div[contains-token(@class, 'bar')]">
241241
<ixsl:set-style name="width" select="'66%'" object="."/>
242242
</xsl:for-each>
243-
244-
<xsl:variable name="child-thunk" as="function(map(*)) as item()*?">
245-
<xsl:apply-templates mode="#current"/>
246-
</xsl:variable>
247243

248244
<xsl:variable name="request-uri" select="ldh:href($ldt:base, ac:absolute-path($ldh:requestUri), map{}, $query-uri)" as="xs:anyURI"/>
249245
<xsl:variable name="request" select="map{ 'method': 'GET', 'href': $request-uri, 'headers': map{ 'Accept': 'application/rdf+xml' } }" as="map(*)"/>
@@ -271,12 +267,11 @@ exclude-result-prefixes="#all"
271267
}"/>
272268

273269
<xsl:sequence select="
274-
ldh:load-block#4(
275-
$context,
276-
ldh:chart-self-thunk#1,
277-
$child-thunk,
278-
?
279-
)
270+
ldh:load-block#3(
271+
$context,
272+
ldh:chart-self-thunk#1,
273+
?
274+
)
280275
"/>
281276
</xsl:template>
282277

@@ -315,7 +310,7 @@ exclude-result-prefixes="#all"
315310
"/>
316311
</xsl:function>
317312

318-
<xsl:function name="ldh:render-chart" ixsl:updating="yes">
313+
<xsl:function name="ldh:render-chart" as="map(*)" ixsl:updating="yes">
319314
<xsl:param name="context" as="map(*)"/>
320315
<xsl:variable name="container" select="$context('container')" as="element()"/>
321316
<xsl:variable name="method" select="$context('method')" as="xs:string"/>
@@ -698,27 +693,34 @@ exclude-result-prefixes="#all"
698693
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]"/>
699694
</xsl:for-each>
700695

701-
<!-- error response - could not load query results -->
696+
<!-- error response - could not load query -->
702697
<xsl:for-each select="$container">
703698
<xsl:result-document href="?." method="ixsl:replace-content">
704699
<div class="alert alert-block">
705-
<strong>Error during query execution:</strong>
700+
<strong>Could not load query from <a href="{$query-uri}"><xsl:value-of select="$query-uri"/></a></strong>
706701
<pre>
707702
<xsl:value-of select="$response?message"/>
708703
</pre>
709704
</div>
710705
</xsl:result-document>
711706
</xsl:for-each>
712707

713-
<xsl:sequence select="$context"/>
708+
<xsl:sequence select="ldh:hide-block-progress-bar($context, ())[current-date() lt xs:date('2000-01-01')]"/>
709+
<xsl:sequence select="
710+
error(
711+
QName('&ldh;', 'ldh:HTTPError'),
712+
concat('HTTP ', ?status, ' returned: ', ?message),
713+
$response
714+
)
715+
"/>
714716
</xsl:otherwise>
715717
</xsl:choose>
716718
</xsl:for-each>
717719
</xsl:function>
718720

719721
<!-- SPARQL results response -->
720722

721-
<xsl:function name="ldh:chart-results-response" ixsl:updating="yes">
723+
<xsl:function name="ldh:chart-results-response" as="map(*)" ixsl:updating="yes">
722724
<xsl:param name="context" as="map(*)"/>
723725
<xsl:variable name="response" select="$context('response')" as="map(*)"/>
724726
<xsl:variable name="block" select="$context('block')" as="element()"/>
@@ -766,6 +768,8 @@ exclude-result-prefixes="#all"
766768
<xsl:with-param name="category" select="$category"/>
767769
<xsl:with-param name="series" select="$series"/>
768770
</xsl:call-template>
771+
772+
<xsl:sequence select="$context"/>
769773
</xsl:for-each>
770774
</xsl:when>
771775
<xsl:otherwise>
@@ -780,9 +784,18 @@ exclude-result-prefixes="#all"
780784
</div>
781785
</xsl:result-document>
782786
</xsl:for-each>
787+
788+
<xsl:sequence select="ldh:hide-block-progress-bar($context, ())[current-date() lt xs:date('2000-01-01')]"/>
789+
<xsl:sequence select="
790+
error(
791+
QName('&ldh;', 'ldh:HTTPError'),
792+
concat('HTTP ', ?status, ' returned: ', ?message),
793+
$response
794+
)
795+
"/>
783796
</xsl:otherwise>
784797
</xsl:choose>
785-
</xsl:for-each>
798+
</xsl:for-each>
786799
</xsl:function>
787800

788801
</xsl:stylesheet>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/object.xsl

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,6 @@ exclude-result-prefixes="#all"
3535
>
3636

3737
<!-- TEMPLATES -->
38-
39-
<!-- <xsl:template match="div[@typeof = '&ldh;Object']/div/div[@about]" mode="ldh:RenderRow" priority="1">
40-
<xsl:apply-templates mode="#current"/>
41-
42-
<xsl:message>HELLO? @about: <xsl:value-of select="@about"/></xsl:message>
43-
44-
hide the progress bar
45-
<xsl:for-each select="ancestor::div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')]">
46-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]"/>
47-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress-striped', false() ])[current-date() lt xs:date('2000-01-01')]"/>
48-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]"/>
49-
</xsl:for-each>
50-
</xsl:template>-->
5138

5239
<!-- hide type control -->
5340
<xsl:template match="*[rdf:type/@rdf:resource = '&ldh;Object']" mode="bs2:TypeControl" priority="1">
@@ -65,7 +52,7 @@ exclude-result-prefixes="#all"
6552

6653
<!-- object block (RDF resource) -->
6754

68-
<xsl:template match="*[@typeof = '&ldh;Object'][descendant::*[@property = '&rdf;value'][@resource]]" mode="ldh:RenderRow" as="item()" priority="2"> <!-- prioritize above block.xsl -->
55+
<xsl:template match="*[@typeof = '&ldh;Object'][descendant::*[@property = '&rdf;value'][@resource]]" mode="ldh:RenderRow" as="function(item()?) as map(*)" priority="2"> <!-- prioritize above block.xsl -->
6956
<xsl:param name="block" select="ancestor::div[contains-token(@class, 'block')][1]" as="element()"/>
7057
<xsl:param name="about" select="$block/@about" as="xs:anyURI"/>
7158
<xsl:param name="block-uri" select="$about" as="xs:anyURI"/>
@@ -80,10 +67,6 @@ exclude-result-prefixes="#all"
8067
<!-- update progress bar -->
8168
<ixsl:set-style name="width" select="'50%'" object="."/>
8269
</xsl:for-each>
83-
84-
<xsl:variable name="child-thunk" as="function(map(*)) as item()*?">
85-
<xsl:apply-templates mode="#current"/>
86-
</xsl:variable>
8770

8871
<!-- don't use ldh:base-uri(.) because its value comes from the last HTML document load -->
8972
<xsl:variable name="request-uri" select="ldh:href($ldt:base, if (starts-with($graph, $ldt:base)) then $graph else ac:absolute-path(xs:anyURI(ixsl:location())), map{}, ac:document-uri($resource-uri), $graph, ())" as="xs:anyURI"/>
@@ -100,12 +83,11 @@ exclude-result-prefixes="#all"
10083
}"/>
10184

10285
<xsl:sequence select="
103-
ldh:load-block#4(
104-
$context,
105-
ldh:object-self-thunk#1,
106-
$child-thunk,
107-
?
108-
)
86+
ldh:load-block#3(
87+
$context,
88+
ldh:object-self-thunk#1,
89+
?
90+
)
10991
"/>
11092
</xsl:template>
11193

@@ -199,6 +181,15 @@ exclude-result-prefixes="#all"
199181
</div>
200182
</xsl:result-document>
201183
</xsl:for-each>
184+
185+
<xsl:sequence select="ldh:hide-block-progress-bar($context, ())[current-date() lt xs:date('2000-01-01')]"/>
186+
<xsl:sequence select="
187+
error(
188+
QName('&ldh;', 'ldh:HTTPError'),
189+
concat('HTTP ', ?status, ' returned: ', ?message),
190+
$response
191+
)
192+
"/>
202193
</xsl:otherwise>
203194
</xsl:choose>
204195
</xsl:for-each>
@@ -210,13 +201,6 @@ exclude-result-prefixes="#all"
210201
<object data="{$resource-uri}"/>
211202
</div>
212203
</xsl:result-document>
213-
214-
<!-- hide the progress bar -->
215-
<!-- <xsl:for-each select="ancestor::div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')]">
216-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]"/>
217-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress-striped', false() ])[current-date() lt xs:date('2000-01-01')]"/>
218-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]"/>
219-
</xsl:for-each>-->
220204
</xsl:for-each>
221205
</xsl:when>
222206
<xsl:otherwise>
@@ -226,15 +210,17 @@ exclude-result-prefixes="#all"
226210
<strong>Could not load resource: <a href="{$resource-uri}"><xsl:value-of select="$resource-uri"/></a></strong>
227211
</div>
228212
</xsl:result-document>
229-
230-
<!-- hide the progress bar -->
231-
<!-- <xsl:for-each select="ancestor::div[contains-token(@class, 'span12')][contains-token(@class, 'progress')][contains-token(@class, 'active')]">
232-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress', false() ])[current-date() lt xs:date('2000-01-01')]"/>
233-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'progress-striped', false() ])[current-date() lt xs:date('2000-01-01')]"/>
234-
<xsl:sequence select="ixsl:call(ixsl:get(., 'classList'), 'toggle', [ 'active', false() ])[current-date() lt xs:date('2000-01-01')]"/>
235-
</xsl:for-each> -->
236213
</xsl:for-each>
237214

215+
<xsl:sequence select="ldh:hide-block-progress-bar($context, ())[current-date() lt xs:date('2000-01-01')]"/>
216+
<xsl:sequence select="
217+
error(
218+
QName('&ldh;', 'ldh:HTTPError'),
219+
concat('HTTP ', ?status, ' returned: ', ?message),
220+
$response
221+
)
222+
"/>
223+
238224
<xsl:sequence select="$context"/>
239225
</xsl:otherwise>
240226
</xsl:choose>
@@ -303,9 +289,21 @@ exclude-result-prefixes="#all"
303289
<xsl:param name="context" as="map(*)"/>
304290
<xsl:variable name="obj-value-id" select="$context('obj-value-id')" as="xs:string"/>
305291

306-
<xsl:message>ldh:block-object-apply $obj-value-id: <xsl:value-of select="$obj-value-id"/></xsl:message>
292+
<xsl:message>ldh:block-object-apply $obj-value-id: <xsl:value-of select="$obj-value-id"/> exists(id($obj-value-id, ixsl:page())): <xsl:value-of select="exists(id($obj-value-id, ixsl:page()))"/></xsl:message>
293+
294+
<!-- get the optional promise of the object value resource -->
295+
<xsl:variable name="rendered" as="(function(item()?) as map(*))?">
296+
<xsl:apply-templates select="id($obj-value-id, ixsl:page())" mode="ldh:RenderRow"/>
297+
</xsl:variable>
307298

308-
<xsl:apply-templates select="id($obj-value-id, ixsl:page())" mode="ldh:RenderRow"/>
299+
<xsl:sequence select="if (exists($rendered)) then $rendered else ldh:object-noop#2($context, ?)"/>
309300
</xsl:function>
310301

302+
<xsl:function name="ldh:object-noop" as="map(*)" ixsl:updating="yes">
303+
<xsl:param name="context" as="map(*)"/>
304+
<xsl:param name="ignored" as="item()?" />
305+
<!-- just return the context, doing nothing else -->
306+
<xsl:sequence select="$context"/>
307+
</xsl:function>
308+
311309
</xsl:stylesheet>

0 commit comments

Comments
 (0)