source: main/trunk/ibisph-view/src/main/webapp/xslt/html/indicator/profile/view/Page.xslt @ 18555

Last change on this file since 18555 was 18555, checked in by GarthBraithwaite_STG, 3 years ago

view - changed ip complete profile to summary. Cleaned up some topic pages. Updated the gauge images.

File size: 17.5 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        <xsl:import href="../../../../xml/Interactive.xslt"/>
11        <xsl:import href="../../../../json/Dataset.xslt"/>
12        <xsl:import href="../../../../json/Kendo.xslt"/>
13        <xsl:import href="../../../../json/LeafletMap.xslt"/>
14        <xsl:import href="../../../Graphic.xslt"/>
15        <xsl:import href="../Indicator.xslt"/>
16        <xsl:import href="../Page.xslt"/>
17
18
19        <ibis:doc>
20                <name>html/indicator/profile/view/Page</name>
21                <summary>Interactive indicator profile view page</summary>
22                <description>
23                        Specific XSLT used to create the indicator profile view page.
24                </description>
25        </ibis:doc>
26
27
28        <xsl:param name="Page.pageTitle" ibis:doc="Page's title text based on the 'INDICATOR/TITLE' element.">
29                Health Indicator Report - <xsl:value-of select="ibis:getCompleteIndicatorViewTitle($indicator, $indicatorView, $Indicator.dimensions)"/> 
30        </xsl:param>
31        <xsl:param name="Page.sectionsTitle" ibis:doc="Page's content block title text based on the 'INDICATOR/TITLE' element.">
32                Health Indicator Report of <xsl:value-of select="ibis:getCompleteIndicatorViewTitle($indicator, $indicatorView, $Indicator.dimensions)"/> 
33        </xsl:param>
34
35        <xsl:param name="Page.comparisonDimensionName"  select="'GeoState'"/>
36        <xsl:param name="Page.comparisonDimensionValue" select="'35'"/>
37
38        <xsl:param name="Page.showMap" ibis:doc="Exposed so that SS can access."
39                select="ibis:Graphic.showMap(
40                        $indicatorView/MAP_NAME,
41                        $indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='category']/NAME,
42                        $indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='series']/NAME,
43                        $Indicator.dimensions
44                )"
45        /> 
46        <xsl:param name="Page.showChart" select="ibis:Graphic.showChart($indicatorView/CHART_NAME)"/>
47
48        <xsl:param name="Indicator.contentBlockType" select="'fixed'"/>
49        <xsl:param name="Indicator.contentBlockTitleLevel" select="3"/>
50
51
52        <xsl:template name="Page.sectionsContent" ibis:doc="Main page content template that determines if IP or Surrogate.">
53                <xsl:choose>
54                        <xsl:when test="0 != string-length($indicatorView/EXTERNAL_CONTENT_URL)">
55                                <xsl:call-template name="Page.insertAJAXContent">
56                                        <xsl:with-param name="sourceContentURL"            select="$indicatorView/EXTERNAL_CONTENT_URL"/>
57                                        <xsl:with-param name="sourceContentJQuerySelector" select="$indicatorView/EXTERNAL_CONTENT_SELECTOR"/>
58                                        <xsl:with-param name="destContentJQuerySelector" 
59                                                select="if(0 = string-length($indicatorView/EXTERNAL_CONTENT_DEST_SELECTOR))
60                                                        then $indicatorView/EXTERNAL_CONTENT_DEST_SELECTOR
61                                                        else 'sectionsContainer'"
62                                        />
63                                </xsl:call-template>
64                        </xsl:when>
65                        <xsl:otherwise>
66                                <xsl:call-template name="Page.interativeContent">
67                                        <xsl:with-param name="indicator"     select="$indicator"/>
68                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
69                                </xsl:call-template>
70                        </xsl:otherwise>
71                </xsl:choose>
72        </xsl:template>
73
74
75        <xsl:template name="Page.interativeContent"
76                ibis:doc="Main interactive sections content template."
77        >
78                <xsl:param name="indicator"/>
79                <xsl:param name="indicatorView"/>
80                <xsl:param name="measure" select="$Indicator.measure"/>
81
82                <xsl:variable name="recordDimensionFields">
83                        <xsl:call-template name="Interactive.getRecordDimensionFields">
84                                <xsl:with-param name="dimensions"      select="$Indicator.dimensions"/>
85                                <xsl:with-param name="dimensionUsages" select="$indicatorView/DIMENSION_USAGES"/>
86                        </xsl:call-template>
87                </xsl:variable>
88                <xsl:variable name="datasetRecords" select="$indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/RECORDS"/>
89                <xsl:variable name="indicatorViewDatasetRecords">
90                        <xsl:call-template name="Interactive.getIndicatorViewDatasetRecords">
91                                <xsl:with-param name="datasetRecords"  select="$datasetRecords"/>
92                                <xsl:with-param name="dimensionUsages" select="$indicatorView/DIMENSION_USAGES"/>
93                                <xsl:with-param name="recordDimensionFields" select="$recordDimensionFields"/>
94                        </xsl:call-template>
95                </xsl:variable>
96                <xsl:variable name="valueAttributeNames" select="distinct-values($indicatorViewDatasetRecords//VALUE_ATTRIBUTE_NAME)"/>
97
98<style>
99        .Container.Text
100        {
101                background-color: #f8f8f8;
102                padding: 0.5em 1.5em 1em 1.5em;
103                border: 1px solid #999;
104                width: 100%;
105        }
106        .Graphic.Chart, .Graphic.Map, .Graphic.Grid
107        {
108                margin-top:     1.5em;
109        }
110</style>
111<!--
112                <xsl:call-template name="Indicator.whyImportant"/>
113-->
114                <xsl:call-template name="Indicator.contentBlock">
115                        <xsl:with-param name="additionalClasses">ColumnContainer Text</xsl:with-param>
116                        <xsl:with-param name="content">
117                                <div class="LeftColumn">
118                                <span class="Bold">Definition: </span>
119                                <xsl:value-of select="$indicator/DEFINITION"/>
120                                </div>
121                                <div class="RightColumn">
122                                <span class="Bold">Why is this Important: </span>
123                                <xsl:value-of select="$indicator/WHY_IMPORTANT"/>
124                                </div>
125                        </xsl:with-param>
126                        <xsl:with-param name="description" select="'Text that describes why this indicator is important to the populations overall health'"/>
127                </xsl:call-template>
128
129
130                <xsl:if test="$Page.showMap">
131                        <xsl:call-template name="Graphic.mapContainer">
132                                <xsl:with-param name="containerID" select="'map'"/>
133                                <xsl:with-param name="title" select="ibis:getIndicatorViewMapTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
134                                <xsl:with-param name="footerContent" select="$indicatorView/MAP_NARRATIVE"/>
135                        </xsl:call-template>
136                </xsl:if>
137
138                <xsl:if test="$Page.showChart">
139                        <xsl:call-template name="Graphic.chartContainer">
140                                <xsl:with-param name="containerID"   select="'chart'"/>
141                                <xsl:with-param name="footerContent" select="$indicatorView/CHART_NARRATIVE/text()"/>
142                        </xsl:call-template>
143                </xsl:if>
144
145                <xsl:call-template name="Indicator.externalDataViz">
146                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
147                </xsl:call-template>
148
149                <xsl:call-template name="Graphic.gridContainer">
150                        <xsl:with-param name="containerID"   select="'grid'"/>
151                        <xsl:with-param name="valueAttributeNames" select="$valueAttributeNames"/>
152                        <xsl:with-param name="valueAttributes"     select="$Indicator.valueAttributes"/>
153                </xsl:call-template>
154
155                <xsl:call-template name="Indicator.dataNotes">
156                        <xsl:with-param name="title"         select="''"/>
157                        <xsl:with-param name="measure"       select="$measure"/>
158                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
159                </xsl:call-template>
160                <xsl:call-template name="Indicator.dataSources"/>
161                <xsl:call-template name="Indicator.definition"/>
162                <xsl:call-template name="Indicator.howCalculated"/>
163
164                <xsl:call-template name="Indicator.allDates"/>
165
166                <xsl:variable name="ancillaryValueNames" select="distinct-values($indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/ANCILLARY_VALUE_USAGES/ANCILLARY_VALUE_USAGE/NAME)"/>
167                <xsl:variable name="measureValueFormatPattern" select="($Indicator.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN)[1]"/>
168                <xsl:call-template name="Graphic.choroplethMapJavaScript"/>
169                <xsl:call-template name="Graphic.leafletKendoScript">
170                        <xsl:with-param name="scriptContainerID"     select="concat($indicatorView/NAME, '_script')"/>
171                        <xsl:with-param name="dimensions"            select="$Indicator.dimensions"/>
172                        <xsl:with-param name="datasetRecords"        select="$indicatorViewDatasetRecords"/>
173                        <xsl:with-param name="recordDimensionFields" select="$recordDimensionFields"/>
174                        <xsl:with-param name="recordAncillaryValueFields">
175                                <xsl:call-template name="Interactive.getIndicatorRecordAncillaryValueFields">
176                                        <xsl:with-param name="indicator"     select="$indicator"/>
177                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
178                                        <xsl:with-param name="ancillaryValueNames" select="$ancillaryValueNames"/>
179                                        <xsl:with-param name="ancillaryValues" select="$Indicator.ancillaryValues"/>
180                                        <xsl:with-param name="valueTypes"      select="$Indicator.valueTypes"/>
181                                        <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
182                                </xsl:call-template>
183                        </xsl:with-param>
184
185                        <xsl:with-param name="measure" select="$measure"/>
186                        <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
187
188                        <xsl:with-param name="showMap"        select="$Page.showMap"/>
189                        <xsl:with-param name="mapName"        select="$indicatorView/MAP_NAME"/>
190                        <xsl:with-param name="geoJSONName"    select="$indicatorView/MAP_DIMENSION_NAME"/>
191                        <xsl:with-param name="geoIDFieldName" select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/> 
192                        <xsl:with-param name="geoIDFieldValuePrefixToRemove" select="concat($indicatorView/MAP_DIMENSION_NAME, '.')"/>
193                        <xsl:with-param name="geoTypeTitle"  select="ibis:getDimensionTitle($indicator//DIMENSIONS/DIMENSION[NAME = $indicatorView/MAP_DIMENSION_NAME])"/>
194                        <xsl:with-param name="mapComparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
195
196                        <xsl:with-param name="showChart"     select="$Page.showChart"/>
197                        <xsl:with-param name="chartName"     select="$indicatorView/CHART_NAME"/>
198                        <xsl:with-param name="chartTitle"    select="ibis:getIndicatorViewChartTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
199
200                        <xsl:with-param name="showGrid"      select="true()"/>
201                        <xsl:with-param name="showValueAttributeColumn" select="0 != count($valueAttributeNames)"/>
202                        <xsl:with-param name="showLabelColumn"          select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
203<!-- never show this...
204                        <xsl:with-param name="showNoteColumn"           select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
205-->
206
207                        <xsl:with-param name="baseExportFilename" select="ibis:getCompleteIndicatorViewTitle($indicator, $indicatorView, $Indicator.dimensions)"/> 
208                </xsl:call-template>
209        </xsl:template>
210
211
212
213
214<!--
215==========================================================================
216==========================================================================
217==========================================================================
218
219
220                                // Hack for vert bar charts to fill the width of the container.
221                                // Kendo charts have an issue filling when the container is hidden.
222                                // For some reason on my system need to wait 2 seconds for it
223                                // to work.
224                                // If set width then it's that size no matter what the window is
225                                // resized to.  Only 100% sure fire way is to have open or fire
226                                // some script when opened.
227//                              setTimeout(resizeKendoChart, 1000);
228                                var chartContainerWidth = $(".ExpandableContent").innerWidth();
229//                              $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
230//                              $("#chart").width = $(".ExpandableContent").innerWidth();
231                                $kendoChart.getKendoChart().resize();
232                        });
233
234                        function resizeKendoChart()
235                        {
236//                              var chartContainerWidth = $(".ExpandableContent").innerWidth();
237//                              $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
238                                $kendoChart.getKendoChart().resize();
239//                              $kendoChart.resize($("#chart"));
240                        };
241
242function myFunction() {
243                                kendoDataSource.read();
244                                $kendoChart.getKendoChart().resize();
245                                $kendoChart.getKendoChart().refresh();
246                                $kendoChart.getKendoChart().redraw();
247                                $kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
248}
249
250/*                     
251// none of these have any effect on the chart!!!
252//                              $kendoGrid.getKendoGrid().refresh();
253//                              $kendoChart.width(1000);
254//                              $kendoChart.chartArea.width(1000);
255//                              $kendoChart.getKendoChart().resize();
256//                              $kendoChart.getKendoChart().refresh();
257//                              $kendoChart.getKendoChart().redraw();
258
259$kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
260                                $kendoGrid.getKendoGrid().refresh();
261                                $kendoChart.getKendoChart().redraw();
262*/
263
264/* GARTH TODO:
265$("#grid tr[role='row']").on("mouseenter mouseover", function () {
266        var row = $("#grid").data("kendoGrid").dataItem(this); //get the data item attached to this row being hovered
267        chart.toggleHighlight(true,
268                function(point)
269                {
270                        return point.dataItem.Id === row.rowID;
271                }
272        ); //show the tooltip for the point where the Ids match
273
274
275
276
277GARTH TODO:
278
279// var firstSlot = $kendoChart.getKendoChart()._plotArea.axes[0].getSlot(0);
280// alert("first slot width" + firstSlot.width());
281
282<xsl:variable name="geoDimensionName" select="
283        if(0 != string-length($indicatorView/DEFAULT_GEOGRAPHY_DIM_NAME))
284        then $indicatorView/DEFAULT_GEOGRAPHY_DIM_NAME
285        else ($Indicator.dimensions/DIMENSION[
286                        exists(GEOGRAPHY_FLAG)
287                        and
288                        NAME = $indicatorView//DIMENSION_USAGE/NAME
289                ])[1]/NAME"
290/>
291
292<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
293<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
294<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
295<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]])"/>
296<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
297<xsl:message select="concat('Interactive - Show Map: ', $showMap, ', geoDimensionName:', $geoDimensionName)"/>
298
299<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
300<xsl:message select="$Page.comparisonDimensionName"/>
301<xsl:message select="$Page.comparisonDimensionValue"/>
302<xsl:with-param name="comparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
303
304Stuff to try when doing dashboard
305function dataSource_change(e) {
306  console.log(e);
307}
308kendoDataSource.bind("change", dataSource_change);
309select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
310
311**********************************************
312
313PROBLEM: "CATEGORY":"GeoCnty.4"
314                                                <xsl:with-param name="geoJSONName"      select="$indicatorView/MAP_DIMENSION_NAME"/>
315                                               
316******************
317probably need to geojson to have the geodim name + . + geodim value to uniquely ID the area.
318
319************ PROBLEM is that the QM only returns 1..31 and not GeoCnty.1
320
321The IP and QM dimension files are all 1..31
322
323So, need the field name then use the geotype and parse the .XXX from the end.
324Then in the QM will need to build the JSON fields the same way as we do with
325the IP - which is the right way to do it anyway so fields can be combined???
326
327*** also have issues with if 2d and 3d...
328        if mult series then drop down for that.
329        if mult constants then drop down for that as well.
330        when changed regen map.
331        Need to specify the category field name and value
332        Need to specify the series field name and value
333        Need to specify the constant field name and value
334       
335        GeoJSON GeoID Prefix to add when doing comparison???
336
337        <xsl:variable name="communityDatasets" select="$indicator/DATASETS/DATASET[DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $communityDimensionName]]"/>
338        <xsl:variable name="communityDataset"  select="$communityDatasets[(MEASURE_NAME = $measureName) and DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[PERIOD_DIMENSION/NAME = $periodName]]"/>
339        <xsl:variable name="stateRecord"       select="$communityDataset/RECORDS/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $stateDimensionName)     and (VALUE = $stateDimensionValue)]     and DIMENSION[(NAME = $periodName) and (VALUE = $periodValue)]]]"/>
340
341
342GARTH TODO:
343        <xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'"/>
344<xsl:message select="$indicatorViewDatasetRecords[1]"/>
345
346
347
348<xsl:with-param name="dimensionFieldInclusionCriteria">
349records have the field names to filter.
350to include need field name and value.
351
352specifies the records held constant - This is to filter out not matching constant records
353
354for mouse overs, the title needs specifics - dimension title and dimension value title.
355        <DIMENSION><NAME>CONSTANT</NAME><VALUE>YearAll.2014</VALUE><TITLE>Year</TITLE><VALUE_TITLE>2014</VALUE_TITLE></DIMENSION>
356        <DIMENSION><NAME>SERIES</NAME><VALUE>Sex.1</VALUE><TITLE>Sex</TITLE><VALUE_TITLE>Male</VALUE_TITLE></DIMENSION>
357</xsl:with-param>
358
359==========================================================================
360<xsl:message select="$indicatorViewDatasetRecords/RECORD"/>
361
362<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
363<xsl:message select="$indicatorView/MAP_DIMENSION_NAME"/>
364<xsl:message select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/> 
365
366==========================================================================
367==========================================================================
368==========================================================================
369-->
370
371</xsl:stylesheet>
372<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.