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

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

view - turned off left nav and centered all pages.

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