source: main/trunk/ibisph-view/src/main/webapp/xslt/html/Graphic.xslt @ 17722

Last change on this file since 17722 was 17722, checked in by GarthBraithwaite_STG, 10 months ago

view, db - LCL and UCL XSLT updates. added value attribute footnote template. More css tweaks.

File size: 10.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2
3<xsl:stylesheet version="3.0"
4        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
5        xmlns:xs  ="http://www.w3.org/2001/XMLSchema"
6        xmlns:ibis="http://www.ibisph.org"
7
8        exclude-result-prefixes="ibis xs xsl"
9>
10
11        <ibis:doc>
12                <name>html/Graphic</name>
13                <summary>Templates that create the appropriate HTML code for Kendo objects and Leaflet maps</summary>
14                <description>
15                        Provides templates that creates the title, height, and chart URL then
16                        calls the graphic.chart template to generate the appropriate HTML
17                        code needed for a query result map/chart.
18                </description>
19        </ibis:doc>
20
21
22        <xsl:param name="MapName"
23                ibis:doc="Specifies the type of map to be displayed.  This value is set
24                        via the Java servlet transformation controller with the value coming
25                        either directly from the page request URL or from an HTTP request parameter. 
26                "
27        />
28        <xsl:param name="ChartName" ibis:doc="Optional user selected and injected param."/>
29        <xsl:param name="GridName"  ibis:doc="Optional user selected and injected param."/>
30
31        <xsl:param name="Graphic.noneName" select="'None'" ibis:doc="No Chart chart name."/>
32
33
34        <xsl:function name="ibis:Graphic.getMapName" as="xs:string"
35                ibis:doc="localizes checking the MapName param.  Rules:
36                        1) page request URL/HTTP request parameter via the request params
37                                model map and the Java servlet transformation. 
38                        2) Supplied chart name param.
39                        3) IP view map name.
40                        4) QM view map name.
41                "
42        >
43                <xsl:param name="mapName" ibis:doc="Map name unless param override."/>
44
45                <xsl:choose>
46                        <xsl:when test="string-length($MapName) != 0">
47                                <xsl:value-of select="$MapName"/>
48                        </xsl:when>
49                        <xsl:when test="string-length($mapName) != 0">
50                                <xsl:value-of select="$mapName"/>
51                        </xsl:when>
52                        <xsl:otherwise><xsl:value-of select="$Graphic.noneName"/></xsl:otherwise>
53                </xsl:choose>
54        </xsl:function>
55
56        <xsl:function name="ibis:Graphic.showMap" as="xs:boolean"
57                ibis:doc="Checking the supplied mapname and series and cats.  Prior to
58                        1/2019 had code that tested constant but this is not needed by
59                        constant have one singular value by definition ."
60        >
61                <xsl:param name="mapName" ibis:doc="Map name to test."/>
62                <xsl:param name="categoryDimensionName" ibis:doc="Map name to test."/>
63                <xsl:param name="seriesDimensionName" ibis:doc="Map name to test."/>
64                <xsl:param name="dimensions" ibis:doc="Map name to test."/>
65
66                <xsl:variable name="testMapName" select="if(string-length($mapName) != 0) then $mapName else ibis:Graphic.getMapName($mapName)"/>
67                <xsl:variable name="categoryOnlyDimension" select="($Graphic.noneName != $testMapName) and (0 = string-length($seriesDimensionName))"/>
68                <xsl:value-of select="(true() = $categoryOnlyDimension) and exists($dimensions/DIMENSION[NAME=$categoryDimensionName]/GEOGRAPHY_FLAG)"/>
69        </xsl:function>
70
71
72        <xsl:function name="ibis:Graphic.getChartName" as="xs:string"
73                ibis:doc="localizes checking the ChartName param.  Rules:
74                        1) page request URL/HTTP request parameter via the request params
75                                model map and the Java servlet transformation. 
76                        2) Supplied chart name param.
77                        3) IP view chart name.
78                        4) QM view chart name.
79                        5) 'DEFAULT'.
80                "
81        >
82                <xsl:param name="chartName" ibis:doc="Chart name unless param override."/>
83
84                <xsl:choose>
85                        <xsl:when test="string-length($ChartName) != 0">
86                                <xsl:value-of select="$ChartName"/>
87                        </xsl:when>
88                        <xsl:when test="string-length($chartName) != 0">
89                                <xsl:value-of select="$chartName"/>
90                        </xsl:when>
91                        <xsl:otherwise>DEFAULT</xsl:otherwise> 
92                </xsl:choose>
93        </xsl:function>
94
95        <xsl:function name="ibis:Graphic.showChart" as="xs:boolean"
96                ibis:doc="localizes checking the supplied chartName against the 'None' value."
97        >
98                <xsl:param name="chartName" ibis:doc="Chart name to test."/>
99                <xsl:value-of select="$chartName != $Graphic.noneName"/>
100        </xsl:function>
101
102       
103        <xsl:function name="ibis:Graphic.getGridName" as="xs:string"
104                ibis:doc="localizes checking the GridName param.  Rules same as chart."
105        >
106                <xsl:param name="gridName" ibis:doc="Chart name unless param override."/>
107
108                <xsl:choose>
109                        <xsl:when test="string-length($GridName) != 0">
110                                <xsl:value-of select="$GridName"/>
111                        </xsl:when>
112                        <xsl:when test="string-length($gridName) != 0">
113                                <xsl:value-of select="$gridName"/>
114                        </xsl:when>
115                        <xsl:otherwise>DEFAULT</xsl:otherwise> 
116                </xsl:choose>
117        </xsl:function>
118
119
120        <xsl:template name="Graphic.chartContainer" ibis:doc="Kendo chart container HTML code.">
121                <xsl:param name="containerID" select="'chart'" ibis:doc="Value that is used as an ID for chart.  Default = 'chart'."/>
122                <xsl:param name="title"/>
123                <xsl:param name="defaultContent"/>
124
125                <div class="Graphic Chart">
126                        <xsl:if test="0 != string-length($title)"><h3><xsl:value-of select="$title"/></h3></xsl:if>
127                        <div id="{$containerID}"><xsl:copy-of select="$defaultContent"/></div>
128                </div>
129        </xsl:template>
130
131
132        <xsl:template name="Graphic.mapContainer" ibis:doc="Leaflet map container HTML code.">
133                <xsl:param name="containerID" select="'map'" ibis:doc="Value that is used as an ID for map.  Default = 'map'."/>
134                <xsl:param name="title"/>
135
136                <div class="Graphic Map">
137                        <xsl:if test="string-length($title) != 0"><h3><xsl:value-of select="$title"/></h3></xsl:if>
138                        <div id="{$containerID}"></div>
139                </div><br/>
140        </xsl:template>
141
142
143        <xsl:template name="Graphic.choroplethMapJavaScript">
144                <script type="text/javascript" src="{$ibis.urlPrefix}js/leaflet-src.js"/>
145                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.leaflet.js"/>
146                <script type="text/javascript" src="{$ibis.urlPrefix}js/geostats.js"/>
147
148                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.GeoJSON.Interactive.js"/>
149                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.GeoJSON.Interactive.Choropleth.js"/>
150                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.LayerSets.js"/>
151                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Control.LayerSets.js"/>
152                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Control.Choropleth.js"/>
153                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Control.Zoom.Min.js"/>
154                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Map.ContextMenu.js"/> 
155        </xsl:template>
156
157        <xsl:template name="Graphic.selectionMapJavaScript">
158                <script type="text/javascript" src="{$ibis.urlPrefix}js/leaflet-src.js"/>
159                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.leaflet.js"/>
160
161                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.GeoJSON.Interactive.js"/>
162                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.GeoJSON.Interactive.Selection.js"/>
163                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.LayerSets.js"/>
164                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Control.LayerSets.js"/>
165                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Control.Zoom.Min.js"/>
166                <script type="text/javascript" src="{$ibis.urlPrefix}js/L.Map.ContextMenu.js"/>
167        </xsl:template>
168
169
170        <xsl:template name="Graphic.tieGridAndChart" ibis:doc="">
171                <xsl:param name="gridContainerID"  select="'grid'"  ibis:doc="Value that is used as an ID for the grid.   Default = 'grid'."/>
172                <xsl:param name="chartContainerID" select="'chart'" ibis:doc="Value that is used as an ID for the chart.  Default = 'chart'."/>
173                <xsl:param name="hideToolTipName"  select="'Series'" ibis:doc=".  Default = 'Series'."/>
174
175                <script>
176/*
177var data = [{ Id: 1, Name: "Object 1", Date: new Date(), Amount: 100 }, { Id: 2, Name: "Object 2", Date: new Date(), Amount: 200 }];
178var series = { name: "Series Name", type: "scatter", xField: "Date", yField: "Amount", data: data };
179*/
180
181                        $("#<xsl:value-of select="$gridContainerID"/> .k-grid-content tr[role='row']").on("mouseenter", function () {
182                                var row = $("#grid").data("kendoGrid").dataItem(this); //get the data item attached to this row being hovered
183                                var chart = $("#chart").data("kendoChart"); //get the chart
184                                chart.toggleHighlight(true, function(point) { return point.dataItem.Id === row.Id; }); //highlight the point where the Ids match
185                                chart.showTooltip(function(point) { return point.dataItem.Id === row.Id; }); //show the tooltip for the point where the Ids match
186                        });
187
188                        $("#<xsl:value-of select="$gridContainerID"/> .k-grid-content tr[role='row']").on("mouseleave", function () {
189                                var chart = $("#<xsl:value-of select="$chartContainerID"/>").data("kendoChart"); //get the chart
190                                chart.toggleHighlight(false, "Series"); //remove all highlights for the Series the point is in
191                                chart.hideTooltip("<xsl:value-of select="$hideToolTipName"/>"); //hide tooltips for all points in the Series the point is in
192                        });
193
194        var chart = $("#chart").data("kendoChart"); //get the chart
195$("#grid tr[role='row']").on("mouseenter mouseover", function () {
196        var row = $("#grid").data("kendoGrid").dataItem(this); //get the data item attached to this row being hovered
197        chart.toggleHighlight(true,
198                function(point)
199                {
200                        return point.dataItem.Id === row.rowID;
201                }
202        ); //highlight the point where the Ids match
203        chart.showTooltip(
204                function(point)
205                {
206                        return point.dataItem.Id === row.Id;
207                }
208        ); //show the tooltip for the point where the Ids match
209});
210
211                </script>
212        </xsl:template>
213
214
215
216        <xsl:template name="Graphic.valueAttributeFootnote">
217                <xsl:param name="valueAttributeNames"/>
218                <xsl:param name="valueAttributes"/>
219
220                <xsl:if test="0 != count($valueAttributeNames)">
221                        <footer class="Footnotes ValueAttribute">
222                                <ul>
223                                        <xsl:for-each select="$valueAttributes//VALUE_ATTRIBUTE">
224                                                <xsl:sort select="SORT_ORDER" order="ascending" data-type="number"/>
225                                                <xsl:if test="exists(current()[NAME = $valueAttributeNames])">
226                                        <li>
227                                                <span><xsl:value-of select="CODE"/></span> 
228                                                <span><xsl:value-of select="DEFINITION"/></span>
229                                        </li>
230                                                </xsl:if>
231                                        </xsl:for-each>
232                                </ul>
233                        </footer>
234                </xsl:if>
235        </xsl:template>
236
237</xsl:stylesheet>
238<!-- ============================= End of File ============================= -->
239
Note: See TracBrowser for help on using the repository browser.