source: main/trunk/ibisph-view/src/main/webapp/xslt/json/LeafletMap.xslt @ 17722

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

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

File size: 8.8 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>json/LeafletMap</name>
13                <summary>Templates that create the appropriate json code for 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="LeafletMap.jsonFilePath" select="ibis:getContentFilePath('json/leaflet/')"/>
23        <xsl:param name="LeafletMap.baseJSONFilename" select="'_Base.json'"/>
24
25        <xsl:param name="LeafletMap.ajaxGeoJSONMapLayersFilePath" select="'view/json/geo/'"
26                ibis:doc="Path injected into the ajax call to get map layer geojson files."
27        />
28        <xsl:param name="LeafletMap.geoJSONIDPropertyName" select="'GeoID'"
29                ibis:doc="Geo ID field name (property name in geojson) for the Choro area
30                        that is associated/corresponds to the data's geo dimension value.
31                "
32        />
33
34        <xsl:param name="LeafletMap.emptyConfigurationName" select="'_empty'" ibis:doc="name to be used for JSON file when no config name"/>
35
36        <xsl:param name="LeafletMap.lowerConfidenceLimitFieldName"      select="'LowerConfidenceLimit'"/>
37        <xsl:param name="LeafletMap.upperConfidenceLimitFieldName"      select="'UpperConfidenceLimit'"/>
38        <xsl:param name="LeafletMap.lowerConfidenceLimitTitleFieldName" select="'LowerConfidenceLimitTitle'"/>
39        <xsl:param name="LeafletMap.upperConfidenceLimitTitleFieldName" select="'UpperConfidenceLimitTitle'"/>
40        <xsl:param name="LeafletMap.numeratorTitleFieldName"            select="'NumeratorTitle'"/>
41        <xsl:param name="LeafletMap.denominatorTitleFieldName"          select="'DenominatorTitle'"/>
42
43        <xsl:template name="LeafletMap.namedConfigurationJSON" ibis:doc="Gets the named specific JSON options from the file.">
44                <xsl:param name="configurationName"/>
45                <xsl:variable name="configurationName" select="if(0 = string-length($configurationName)) then $LeafletMap.emptyConfigurationName else $configurationName"/>
46                <xsl:copy-of select="unparsed-text(concat($LeafletMap.jsonFilePath, $configurationName, '.json'))"/>
47        </xsl:template>
48        <xsl:template name="LeafletMap.baseJSON" ibis:doc="Returns the base/core JSON.">
49                <xsl:copy-of select="unparsed-text(concat($LeafletMap.jsonFilePath, $LeafletMap.baseJSONFilename))"/>
50        </xsl:template>
51
52
53        <xsl:template name="LeafletMap.requestJSON">
54                <xsl:param name="mapTitle"     select="'Request JSON'"/>
55                <xsl:param name="webappPrefix" select="$ibis.urlPrefix"/>
56                <xsl:param name="mapType"      select="'selection'"/>
57                <xsl:param name="selectionLayerSetLayerKeys"/>
58                <xsl:param name="selectionLayerSetSelectionType" select="'multiple'"/>
59
60{       // Start of Request Specific JSON
61        title: "<xsl:value-of select="$mapTitle"/>"
62        ,localURLWebappPrefix: "<xsl:value-of select="$webappPrefix"/>"
63        ,type: "<xsl:value-of select="$mapType"/>"
64        <xsl:if test="$selectionLayerSetLayerKeys">
65        ,selectionLayerSetLayerKeys: <xsl:value-of select="ibis:textNodesToJSONArray($selectionLayerSetLayerKeys)"/>
66        </xsl:if>
67        <xsl:if test="$selectionLayerSetSelectionType">
68        ,selectionLayerSetSelectionType: "<xsl:value-of select="$selectionLayerSetSelectionType"/>"
69        </xsl:if>
70}       // End of Request Specific JSON
71        </xsl:template>
72
73
74
75        <xsl:template name="LeafletMap.choroplethJSON">
76                <xsl:param name="javascriptRecordArrayVariableName" select="'records'"/>
77                <xsl:param name="geoIDFieldName"  select="'Category'" ibis:doc="data record's field that contains the geo ID to match against the GeoJSON ID field (typically 'Category' or 'Series')."/>
78                <xsl:param name="geoIDFieldValuePrefixToRemove"/>
79
80                <xsl:param name="geoJSONName"       select="'GeoCnty'" ibis:doc="choro json layer filename - sans path and .json extension."/>
81                <xsl:param name="geoTypeTitle" select="'County'"  ibis:doc="Choro layer title - County, Region"/>
82                <xsl:param name="legendTitle"  select="'Count'"   ibis:doc="Legend's value title - typically the measure title"/>
83
84                <xsl:param name="dimensionFieldInclusionCriteria" select="NULL"
85                        ibis:doc="List of field name/field values to filter out/refine the
86                                approp data value record to use for the choro.  These are typically
87                                the CONSTANT and SERIES dim values to hold constant. 
88                                Example - when doing a map that has 3 total group by dimensions:
89                                GeoXXX, Year, and MotherAgeGrp.  In this example we want the 2011
90                                year and the 20-29 mothers age group for the county.  If hooked
91                                up to a UI control then code will need to be added that sets the
92                                inclusion criteria, calls set the data properties, and notifies
93                                the choro to recalc.
94                        "
95                />
96
97                <xsl:param name="reverseColors"       select="false()"/>
98                <xsl:param name="comparisonValue"     select="0"/>
99                <xsl:param name="desirableIndexValue" select="0"/>
100
101                <xsl:param name="geoTitleFieldName" select="concat($geoIDFieldName, 'Title')"/>
102
103<xsl:message select="'========================= comp value in lm.cjson - GARTH TODO:'"/>
104<xsl:message select="$comparisonValue[1]"/>
105
106{       // Start of Choropleth JSON
107        choroplethControl:
108        {
109                legend:
110                {
111                        title: "<xsl:value-of select="$legendTitle"/>"
112                }
113                ,reverseColors: <xsl:value-of select="$reverseColors"/>
114                ,layerSetsKey: "<xsl:value-of select="$geoJSONName"/>"
115                ,dataClasses:
116                {
117                        betterWorse:
118                        {
119comparisonValue:      "<xsl:value-of select="$comparisonValue[1]"/>"
120                                ,desirableIndexValue: <xsl:value-of select="if(0 = string-length($desirableIndexValue)) then 0 else $desirableIndexValue"/> 
121                        }
122                }
123        }
124        ,layerSets:
125        {
126                sets:
127                {
128                        "choropleth":
129                        {
130                                title: "Choropleth"     <!-- grouping title -->
131                                ,layers:
132                                {
133                                        "<xsl:value-of select="$geoJSONName"/>":
134                                        {
135                                                type: "choropleth"
136                                                ,url: "<xsl:value-of select="concat($LeafletMap.ajaxGeoJSONMapLayersFilePath, $geoJSONName, '.json')"/>"
137                                                ,title: "<xsl:value-of select="$geoTypeTitle"/>"                <!-- layer title -->
138                                                ,show: true
139                                                ,options:
140                                                {
141                                                        geoIDPropertyName: "<xsl:value-of select="$LeafletMap.geoJSONIDPropertyName"/>"
142                                                        ,dataObject:
143                                                        {
144                                                                data: <xsl:value-of select="$javascriptRecordArrayVariableName"/>
145,comparisonValue: "<xsl:value-of select="$comparisonValue[1]"/>"
146                                                                <xsl:if test="0 != string-length($geoIDFieldValuePrefixToRemove)">
147                                                                ,geoIDFieldValuePrefixToRemove: "<xsl:value-of select="$geoIDFieldValuePrefixToRemove"/>"
148                                                                </xsl:if>
149                                                                ,fieldName:
150                                                                {
151<!-- GARTH TODO:
152        maybe have a constant field name and value  -  these ARE dynamic and script set
153                although the script could set these values and call the map refresh!!!!!!!!!!
154 in the l.geojson.int.js the this.options.dataObject.dimensionFieldInclusionCriteria
155    handles this...
156 maybe have a series field name and value
157 what about the new ancillary values and value attribute stuff?????
158
159<xsl:message select="'*************LeafletMapGraphic.requestOptionsJSON - dimensionFieldInclusionCriteria: '"/>
160<xsl:message select="$dimensionFieldInclusionCriteria"/>
161 -->
162                                                                        geoID:     "<xsl:value-of select="$geoIDFieldName"/>"
163                                                                        ,geoTitle: "<xsl:value-of select="$geoTitleFieldName"/>"
164                                                                        ,"measureValue":       "MeasureValue"
165                                                                        ,"measureValueTitle":  "MeasureValueTitle"
166                                                                        ,"lowerLimit":         "<xsl:value-of select="$LeafletMap.lowerConfidenceLimitFieldName"/>"
167                                                                        ,"upperLimit":         "<xsl:value-of select="$LeafletMap.upperConfidenceLimitFieldName"/>"
168                                                                        ,"lowerLimitTitle":    "<xsl:value-of select="$LeafletMap.lowerConfidenceLimitTitleFieldName"/>"
169                                                                        ,"upperLimitTitle":    "<xsl:value-of select="$LeafletMap.upperConfidenceLimitTitleFieldName"/>"
170                                                                        ,"numeratorTitle":     "<xsl:value-of select="$LeafletMap.numeratorTitleFieldName"/>"
171                                                                        ,"denominatorTitle":   "<xsl:value-of select="$LeafletMap.denominatorTitleFieldName"/>"
172                                                                        ,"note":               "Note"
173                                                                        ,"label":              "Label"
174                                                                        ,"valueAttributeName": "ValueAttributeName"
175                                                                }
176                <xsl:if test="count($dimensionFieldInclusionCriteria/*) != 0">
177                                                                ,dimensionFieldInclusionCriteria:
178                                                                [
179                        <xsl:for-each select="$dimensionFieldInclusionCriteria/DIMENSION">
180                                <xsl:if test="position() != 1">,</xsl:if>
181                                                                        {
182                                                                                fieldName:   "<xsl:value-of select="NAME"/>"
183                                                                                ,fieldTitle: "<xsl:value-of select="TITLE"/>"
184                                                                                ,value:      "<xsl:value-of select="VALUE"/>"
185                                                                                ,valueTitle: "<xsl:value-of select="VALUE"/>"
186                                                                        }
187                        </xsl:for-each>
188                                                                ]
189                </xsl:if>
190                                                        }
191                                                }
192                                        }
193                                }
194                        }
195                }
196        }
197}       // End of Choropleth JSON
198        </xsl:template>
199
200</xsl:stylesheet>
201<!-- ============================= End of File ============================= -->
202
Note: See TracBrowser for help on using the repository browser.