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

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

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

File size: 29.9 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" select="ibis:Graphic.showMap(
39                        /INDICATOR_VIEW/MAP_NAME,
40                        /INDICATOR_VIEW/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='category']/NAME,
41                        /INDICATOR_VIEW/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='series']/NAME,
42                        $Indicator.dimensions
43                )"
44        /> 
45        <xsl:param name="Page.showChart" select="ibis:Graphic.showChart(/INDICATOR_VIEW/CHART_NAME)"/>
46
47        <xsl:param name="Indicator.contentBlockType" select="'fixed'"/>
48        <xsl:param name="Indicator.contentBlockTitleLevel" select="3"/>
49
50
51        <xsl:template name="Page.sectionsContent" ibis:doc="Main page content template that determines if IP or Surrogate.">
52                <xsl:choose>
53                        <xsl:when test="0 = string-length($indicatorView/SURROGATE_VIEW_URL)">
54                                <xsl:call-template name="Page.interativeContent">
55                                        <xsl:with-param name="indicator"     select="$indicator"/>
56                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
57                                </xsl:call-template>
58                        </xsl:when>
59                        <xsl:otherwise>
60                                <xsl:call-template name="Page.insertAJAXContent">
61                                        <xsl:with-param name="sourceContentURL" select="$indicatorView/SURROGATE_VIEW_URL"/>
62                                </xsl:call-template>
63                        </xsl:otherwise>
64                </xsl:choose>
65        </xsl:template>
66
67
68        <xsl:template name="Page.interativeContent"
69                ibis:doc="Main interactive sections content template."
70        >
71                <xsl:param name="indicator"/>
72                <xsl:param name="indicatorView"/>
73
74                <xsl:variable name="measureName" select="$indicatorView/MEASURE_NAME"/>
75                <xsl:variable name="measure"     select="($indicator//MEASURE[NAME = $measureName])[1]"/>
76
77                <xsl:variable name="recordDimensionFields">
78                        <xsl:call-template name="Interactive.getRecordDimensionFields">
79                                <xsl:with-param name="dimensions"      select="$Indicator.dimensions"/>
80                                <xsl:with-param name="dimensionUsages" select="$indicatorView/DIMENSION_USAGES"/>
81                        </xsl:call-template>
82                </xsl:variable>
83                <xsl:variable name="datasetRecords" select="$indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/RECORDS"/>
84                <xsl:variable name="indicatorViewDatasetRecords">
85                        <xsl:call-template name="Interactive.getIndicatorViewDatasetRecords">
86                                <xsl:with-param name="datasetRecords"  select="$datasetRecords"/>
87                                <xsl:with-param name="dimensionUsages" select="$indicatorView/DIMENSION_USAGES"/>
88                                <xsl:with-param name="recordDimensionFields" select="$recordDimensionFields"/>
89                        </xsl:call-template>
90                </xsl:variable>
91
92                <xsl:call-template name="ContentContainer.expandable">
93                        <xsl:with-param name="title"   select="'Why Is This Important?'"/>
94                        <xsl:with-param name="content" select="$indicator/WHY_IMPORTANT"/>
95                        <xsl:with-param name="description" select="'Text that describes why this indicator is important to the populations overall health'"/>
96                        <xsl:with-param name="show"    select="true()"/>
97                        <xsl:with-param name="additionalClasses" select="'Text'"/>
98                        <xsl:with-param name="addWikiAttribute"  select="true()"/>
99                </xsl:call-template>
100<!-- GARTH TODO: remove
101<xsl:message select="$indicatorView/MAP_NAME"/>
102<xsl:message select="$indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='category']/NAME"/>
103<xsl:message select="$indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='series']/NAME"/>
104<xsl:message select="$indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='constant']/NAME"/>
105<xsl:message select="$Page.showMap"/>
106-->
107
108                <xsl:if test="$Page.showMap">
109                        <xsl:call-template name="ContentContainer.expandable">
110                                <xsl:with-param name="title" select="'Map'"/>
111                                <xsl:with-param name="content">
112                                        <xsl:call-template name="Graphic.mapContainer">
113                                                <xsl:with-param name="containerID" select="'map'"/>
114                                                <xsl:with-param name="title" select="ibis:getIndicatorViewMapTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
115                                        </xsl:call-template>
116                                        <xsl:call-template name="Indicator.contentBlock">
117                                                <xsl:with-param name="content" select="$indicatorView/MAP_NARRATIVE"/>
118                                                <xsl:with-param name="contentBlockType" select="'fixed'" tunnel="yes"/>
119                                        </xsl:call-template>
120                                </xsl:with-param>
121                                <xsl:with-param name="show" select="true()"/>
122                                <xsl:with-param name="addWikiAttribute" select="false()"/>
123                                <xsl:with-param name="description" select="'Choropleth/thematic map.'"/>
124                        </xsl:call-template>
125                </xsl:if>
126
127                <xsl:if test="$Page.showChart">
128                        <xsl:call-template name="ContentContainer.expandable">
129                                <xsl:with-param name="title" select="if('Line'=$indicatorView/CHART_NAME) then 'Trend' else 'Chart'"/>
130                                <xsl:with-param name="content">
131                                        <xsl:call-template name="Graphic.chartContainer">
132                                                <xsl:with-param name="containerID" select="'chart'"/>
133                                        </xsl:call-template>
134                                        <xsl:call-template name="Indicator.contentBlock">
135                                                <xsl:with-param name="content" select="$indicatorView/CHART_NARRATIVE"/>
136                                                <xsl:with-param name="contentBlockType" select="'fixed'" tunnel="yes"/>
137                                        </xsl:call-template>
138                                </xsl:with-param>
139                                <xsl:with-param name="inputOnChangeAttribute" select="'resizeKendoChart()'"/>
140                                <xsl:with-param name="show" select="not($Page.showMap)"/>
141                                <xsl:with-param name="addWikiAttribute" select="false()"/>
142                        </xsl:call-template>
143                </xsl:if>
144
145                <xsl:call-template name="ContentContainer.expandable">
146                        <xsl:with-param name="title" select="'Supplemental Graphic'"/>
147                        <xsl:with-param name="content">
148                                <xsl:call-template name="Indicator.supplementalImage">
149                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
150                                </xsl:call-template>
151                        </xsl:with-param>
152                        <xsl:with-param name="show" select="true()"/>
153                        <xsl:with-param name="addWikiAttribute" select="false()"/>
154                </xsl:call-template>
155
156                <xsl:call-template name="ContentContainer.expandable">
157                        <xsl:with-param name="title" select="'Data Notes'"/>
158                        <xsl:with-param name="content">
159                                <xsl:call-template name="Indicator.dataNotes">
160                                        <xsl:with-param name="title"         select="''"/>
161                                        <xsl:with-param name="measure"       select="$Indicator.measure"/>
162                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
163                                </xsl:call-template>
164                        </xsl:with-param>
165                        <xsl:with-param name="show" select="true()"/>
166                </xsl:call-template>
167
168                <xsl:variable name="valueAttributeNames" select="distinct-values($indicatorViewDatasetRecords//VALUE_ATTRIBUTE_NAME)"/>
169                <xsl:call-template name="ContentContainer.expandable">
170                        <xsl:with-param name="title" select="'Data Table'"/>
171                        <xsl:with-param name="content">
172                                <div class="Graphic Grid ScrollableContainer">
173                                        <div id="grid"></div>
174                                        <xsl:call-template name="Graphic.valueAttributeFootnote">
175                                                <xsl:with-param name="valueAttributeNames" select="$valueAttributeNames"/>
176                                                <xsl:with-param name="valueAttributes"     select="$Indicator.valueAttributes"/>
177                                        </xsl:call-template>
178                                </div>
179                        </xsl:with-param>
180                        <xsl:with-param name="show" select="false()"/>
181                        <xsl:with-param name="addWikiAttribute" select="false()"/>
182                </xsl:call-template>
183
184                <xsl:call-template name="ContentContainer.expandable">
185                        <xsl:with-param name="title" select="'Data Definitions &amp; Sources'"/>
186                        <xsl:with-param name="content">
187                                <xsl:call-template name="Indicator.definition"/>
188                                <xsl:call-template name="Indicator.howCalculated"/>
189                                <xsl:call-template name="Indicator.dataSources"/>
190                        </xsl:with-param>
191                        <xsl:with-param name="show"        select="false()"/>
192                        <xsl:with-param name="description" select="'Metadata for this health indicator.'"/>
193                </xsl:call-template>
194
195
196                <xsl:call-template name="ContentContainer.expandable">
197                        <xsl:with-param name="title" select="'Health Objectives and Targets'"/>
198                        <xsl:with-param name="content">
199                                <xsl:call-template name="Indicator.initiatives"/>
200                                <xsl:call-template name="Indicator.otherObjectives"/>
201                        </xsl:with-param>
202                        <xsl:with-param name="description" select="'Goals and objectives for this health indicator.'"/>
203                </xsl:call-template>
204
205                <xsl:call-template name="ContentContainer.expandable">
206                        <xsl:with-param name="title" select="'Current Outlook'"/>
207                        <xsl:with-param name="content">
208                                <xsl:call-template name="Indicator.howDoing"/>
209                                <xsl:call-template name="Indicator.howCompare"/>
210                        </xsl:with-param>
211                        <xsl:with-param name="description" select="'How are we doing, how do we compare.'"/>
212                </xsl:call-template>
213
214                <xsl:call-template name="ContentContainer.expandable">
215                        <xsl:with-param name="title" select="'Health Improvement Resources'"/>
216                        <xsl:with-param name="content">
217                                <xsl:call-template name="Indicator.whatDoing"/>
218                                <xsl:call-template name="Indicator.evidenceBasedPractices"/>
219                                <xsl:call-template name="Indicator.availableServices"/>
220                                <xsl:call-template name="Indicator.moreResources"/>
221                                <xsl:call-template name="Indicator.otherInformation"/>
222                        </xsl:with-param>
223                        <xsl:with-param name="description" select="'Other related information and resources.'"/>
224                </xsl:call-template>
225
226                <xsl:call-template name="ContentContainer.expandable">
227                        <xsl:with-param name="title" select="'References'"/>
228                        <xsl:with-param name="content">
229                                <xsl:call-template name="Indicator.footnoteReferences"/>
230                        </xsl:with-param>
231                        <xsl:with-param name="description" select="'References that may / might not be cited on this page.'"/>
232                </xsl:call-template>
233
234                <xsl:call-template name="Indicator.allDates"/>
235
236                <xsl:call-template name="Page.leafletKendoScript">
237                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
238                        <xsl:with-param name="indicatorViewDatasetRecords" select="$indicatorViewDatasetRecords"/>
239                        <xsl:with-param name="recordDimensionFields" select="$recordDimensionFields"/>
240                        <xsl:with-param name="measure"       select="$Indicator.measure"/>
241                        <xsl:with-param name="showMap"       select="$Page.showMap"/>
242                        <xsl:with-param name="showChart"     select="$Page.showChart"/>
243                        <xsl:with-param name="showValueAttributeColumn" select="0 != count($valueAttributeNames)"/>
244                        <xsl:with-param name="baseExportFilename" select="ibis:getCompleteIndicatorViewTitle($indicator, $indicatorView, $Indicator.dimensions)"/> 
245                </xsl:call-template>
246        </xsl:template>
247
248
249
250        <xsl:template name="Page.leafletKendoScript" ibis:doc="Provides the kendo and leaflet javascript.">
251                <xsl:param name="indicatorView"/>
252                <xsl:param name="indicatorViewDatasetRecords"/>
253                <xsl:param name="recordDimensionFields"/>
254
255                <xsl:param name="measure"/>
256                <xsl:param name="showMap"   select="$Page.showMap"/>
257                <xsl:param name="showChart" select="$Page.showChart"/>
258                <xsl:param name="showValueAttributeColumn" select="false()"/>
259                <xsl:param name="baseExportFilename" select="$indicatorView/TITLE"/> 
260
261                <xsl:variable name="measureValueFormatPattern" select="($Indicator.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN)[1]"/>
262                <xsl:variable name="ancillaryValueNames" select="distinct-values($indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/ANCILLARY_VALUE_USAGES/ANCILLARY_VALUE_USAGE/NAME)"/>
263                <xsl:variable name="recordAncillaryValueFields">
264                        <xsl:call-template name="Interactive.getIndicatorRecordAncillaryValueFields">
265                                <xsl:with-param name="indicator"     select="$indicator"/>
266                                <xsl:with-param name="indicatorView" select="$indicatorView"/>
267                                <xsl:with-param name="ancillaryValueNames" select="$ancillaryValueNames"/>
268                                <xsl:with-param name="ancillaryValues" select="$Indicator.ancillaryValues"/>
269                                <xsl:with-param name="valueTypes"      select="$Indicator.valueTypes"/>
270                                <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
271                        </xsl:call-template>
272                </xsl:variable>
273
274                <xsl:if test="$showMap">
275                        <xsl:call-template name="Graphic.choroplethMapJavaScript"/>
276                </xsl:if>
277                <script type="text/javascript" src="{$ibis.urlPrefix}js/jszip.js"/>
278                <script type="text/javascript">
279                        var records =
280                        [<xsl:text>&#10;</xsl:text>
281                                <xsl:call-template name="Dataset.getDatasetRecordsJSON">
282                                        <xsl:with-param name="dimensions"                 select="$Indicator.dimensions"/>
283                                        <xsl:with-param name="datasetRecords"             select="$indicatorViewDatasetRecords"/>
284                                        <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
285                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
286                                        <xsl:with-param name="measureValueFormatPattern"  select="$measureValueFormatPattern"/>
287                                </xsl:call-template>
288                        ];
289
290                        var kendoDataSource = new kendo.data.DataSource(
291                                <xsl:call-template name="Kendo.dataSourceConstructorJSON">
292                                        <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
293                                        <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
294                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
295                                </xsl:call-template>
296                        );
297
298                        var kendoGridConstructorJSON = $.extend
299                        (true, {}
300                                ,<xsl:call-template name="Kendo.baseGridJSON"/>
301                                ,<xsl:call-template name="Kendo.namedConfigurationJSON">
302                                        <xsl:with-param name="configurationName" select="'IndicatorProfileGrid'"/>
303                                </xsl:call-template>
304                                ,<xsl:call-template name="Kendo.requestGridJSON">
305                                        <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
306                                        <xsl:with-param name="measure" select="$measure"/>
307                                        <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
308                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
309                                        <xsl:with-param name="showValueAttributeColumn" select="$showValueAttributeColumn"/>
310                                        <xsl:with-param name="showLabelColumn"          select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
311                                        <!-- Never show the note column
312                                        <xsl:with-param name="showNoteColumn"           select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
313                                        -->
314                                </xsl:call-template>
315                        );
316
317                        <xsl:if test="$showMap">
318                        var leafletMapConstructorJSON = $.extend
319                                (true, {}
320,<xsl:call-template name="LeafletMap.baseJSON"/>
321,<xsl:call-template name="LeafletMap.namedConfigurationJSON">
322        <xsl:with-param name="configurationName" select="$indicatorView/MAP_NAME"/>
323</xsl:call-template>
324,<xsl:call-template name="LeafletMap.requestJSON"> 
325<!--    <xsl:with-param name="mapTitle"      select="'Choropleth'"/> -->
326        <xsl:with-param name="mapType"       select="'choropleth'"/>
327</xsl:call-template>
328,<xsl:call-template name="LeafletMap.choroplethJSON">
329        <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
330        <xsl:with-param name="geoJSONName"      select="$indicatorView/MAP_DIMENSION_NAME"/>
331        <xsl:with-param name="geoIDFieldName"   select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/> 
332        <xsl:with-param name="geoIDFieldValuePrefixToRemove"   select="concat($indicatorView/MAP_DIMENSION_NAME, '.')"/>
333        <xsl:with-param name="legendTitle"   select="$measure/TITLE"/>
334        <xsl:with-param name="geoTypeTitle"  select="ibis:getDimensionTitle($indicator//DIMENSIONS/DIMENSION[NAME = $indicatorView/MAP_DIMENSION_NAME])"/>
335        <xsl:with-param name="reverseColors" select="$measure/DESIRABLE_VALUE = 1"/>
336        <xsl:with-param name="desirableIndexValue" select="$measure/DESIRABLE_VALUE"/>
337
338<xsl:with-param name="comparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
339
340</xsl:call-template>
341                                );
342                        </xsl:if>
343
344// GARTH TODO: remove
345<xsl:message select="'gggggggggggggg'"/>
346<xsl:message select="count($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
347<xsl:message select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
348<xsl:message select="$indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)]"/>
349<xsl:message select="'xxxxxxxxxxxx'"/>
350<xsl:message select="count($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
351<xsl:message select="'zzzzzzzzzz'"/>
352<xsl:message select="string-length($indicatorViewDatasetRecords/RECORD/NOTE)"/>
353
354
355                        <xsl:if test="$showChart">
356                        var chartWidthVariable = $(".ExpandableContent").innerWidth();
357                        var kendoChartConstructorJSON = $.extend
358                        (true, {}
359                                ,<xsl:call-template name="Kendo.baseChartJSON"/>
360                                ,<xsl:call-template name="Kendo.namedConfigurationJSON">
361                                        <xsl:with-param name="configurationName" select="$indicatorView/CHART_NAME"/>
362                                </xsl:call-template>
363                                ,<xsl:call-template name="Kendo.requestChartJSON">
364                                        <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
365                                        <xsl:with-param name="title"         select="ibis:getIndicatorViewChartTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
366                                        <xsl:with-param name="seriesTitle"   select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/TITLE"/>
367                                        <xsl:with-param name="categoryTitle" select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/TITLE"/>
368                                        <xsl:with-param name="valueTitle"    select="$measure/TITLE"/>
369
370                                        <xsl:with-param name="seriesFieldName"    select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/NAME"/>
371                                        <xsl:with-param name="categoryFieldName"  select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/NAME"/>
372
373                                        <xsl:with-param name="includeDatasetSeries" select="1 &lt; $recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/VALUE_COUNT"/>
374                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
375                                </xsl:call-template>
376                        );
377
378                        // have to manually add this because Kendo can't.  See:
379                        // https://docs.telerik.com/kendo-ui/styles-and-layout/using-kendo-in-responsive-web-pages
380                        // another option: $(window).on("resize", function() { kendo.resize($(".chart-wrapper")); });
381                        $(window).resize(resizeKendoChart);
382
383                        console.debug("IP.Page.xslt (%o, kendoChartConstructorJSON, (JSON.stringify(kendoChartConstructorJSON):");
384                        console.debug("%o", kendoChartConstructorJSON);
385                        console.debug(JSON.stringify(kendoChartConstructorJSON,null,2)); 
386                        </xsl:if>
387
388
389                        var $kendoGrid;
390                        var $kendoChart;
391                        var $leafletMap;
392                        $(document).ready(function()
393                        {
394                        <xsl:if test="$showMap">
395                                $leafletMap = $("#map").leaflet(leafletMapConstructorJSON);
396                        </xsl:if>
397                        <xsl:if test="$showChart">
398                                $kendoChart = $("#chart").kendoChart(kendoChartConstructorJSON);
399                        </xsl:if>
400                                $kendoGrid  = $("#grid").kendoGrid(kendoGridConstructorJSON);
401
402                                // "read" fires the "change" event of the dataSource and any objects
403                                // that ref the data source will be bound.  This needs to occur
404                                // after the grid and chart are created because .autoBind = false.
405                                // Can also fire load by issuing a sort:
406                                // $kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
407                                kendoDataSource.read();
408
409                                // Kendo charts have an issue sizing the widget to the full width
410                                // when the chart's container starts out hidden.  Tried numerous
411                                // things with timers and setting the width to the main content
412                                // control to firing resize when the control's input is changed.
413                                // If set the width then even as the window resizes the chart does
414                                // NOT change its size.  So below code was commented out and the
415                                // input on change calls the resize func. 
416                                // var chartContainerWidth = $(".ExpandableContent").innerWidth();
417                                // $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
418                        }); //~~~~~~~~~~~~~~~~~~~~ End of Ready Function ~~~~~~~~~~~~~~~~~~~
419
420
421                        // Called via the chart's expandable content input element's onchange
422                        // firing this code.  Also bound to the windonws resize event to
423                        // properly resize the chart to fit the container.
424                        function resizeKendoChart()
425                        {
426                                kendo.resize( $(".k-chart") );
427                                // another option: $kendoChart.getKendoChart().resize();
428                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
429               
430
431                        var baseExportFilename = "<xsl:value-of select="$baseExportFilename"/>";
432
433                        function exportGrid()
434                        {
435                                var grid = $kendoGrid.getKendoGrid();
436                                grid.options.excel.fileName = baseExportFilename + " - data.xlsx";
437                                grid.saveAsExcel();
438                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
439
440                        function exportChart()
441                        {
442                                var chart = $kendoChart.getKendoChart();
443
444                                chart.exportImage().done
445                                (
446                                        function(data)
447                                        {
448                                                kendo.saveAs
449                                                ({
450                                                        dataURI: data
451                                                        ,fileName: baseExportFilename + ".png"
452                                                });
453                                        }
454                                );
455
456/* doesn't work
457                                chart.saveAsPDF();
458                                chart.exportPDF().done( function(data) { kendo.saveAs(); } );
459dataURI: "data:text/plain,Report title and text",
460*/
461                                chart.exportPDF().done
462                                (
463                                        function(data)
464                                        {
465                                                kendo.saveAs
466                                                ({
467                                                        dataURI: data
468                                                        ,fileName: baseExportFilename + " - chart.pdf"
469                                                });
470                                        }
471                                );
472                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
473
474                        function exportMap()
475                        {
476                                alert("Map export is not current supported.");
477                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
478
479<!--
480==========================================================================
481==========================================================================
482==========================================================================
483
484
485                                // Hack for vert bar charts to fill the width of the container.
486                                // Kendo charts have an issue filling when the container is hidden.
487                                // For some reason on my system need to wait 2 seconds for it
488                                // to work.
489                                // If set width then it's that size no matter what the window is
490                                // resized to.  Only 100% sure fire way is to have open or fire
491                                // some script when opened.
492//                              setTimeout(resizeKendoChart, 1000);
493                                var chartContainerWidth = $(".ExpandableContent").innerWidth();
494//                              $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
495//                              $("#chart").width = $(".ExpandableContent").innerWidth();
496                                $kendoChart.getKendoChart().resize();
497                        });
498
499                        function resizeKendoChart()
500                        {
501//                              var chartContainerWidth = $(".ExpandableContent").innerWidth();
502//                              $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
503                                $kendoChart.getKendoChart().resize();
504//                              $kendoChart.resize($("#chart"));
505                        };
506
507function myFunction() {
508                                kendoDataSource.read();
509                                $kendoChart.getKendoChart().resize();
510                                $kendoChart.getKendoChart().refresh();
511                                $kendoChart.getKendoChart().redraw();
512                                $kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
513}
514
515/*                     
516// none of these have any effect on the chart!!!
517//                              $kendoGrid.getKendoGrid().refresh();
518//                              $kendoChart.width(1000);
519//                              $kendoChart.chartArea.width(1000);
520//                              $kendoChart.getKendoChart().resize();
521//                              $kendoChart.getKendoChart().refresh();
522//                              $kendoChart.getKendoChart().redraw();
523
524$kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
525                                $kendoGrid.getKendoGrid().refresh();
526                                $kendoChart.getKendoChart().redraw();
527*/
528
529/* GARTH TODO:
530$("#grid tr[role='row']").on("mouseenter mouseover", function () {
531        var row = $("#grid").data("kendoGrid").dataItem(this); //get the data item attached to this row being hovered
532        chart.toggleHighlight(true,
533                function(point)
534                {
535                        return point.dataItem.Id === row.rowID;
536                }
537        ); //show the tooltip for the point where the Ids match
538
539
540
541
542GARTH TODO:
543
544// var firstSlot = $kendoChart.getKendoChart()._plotArea.axes[0].getSlot(0);
545// alert("first slot width" + firstSlot.width());
546
547<xsl:variable name="geoDimensionName" select="
548        if(0 != string-length($indicatorView/DEFAULT_GEOGRAPHY_DIM_NAME))
549        then $indicatorView/DEFAULT_GEOGRAPHY_DIM_NAME
550        else ($Indicator.dimensions/DIMENSION[
551                        exists(GEOGRAPHY_FLAG)
552                        and
553                        NAME = $indicatorView//DIMENSION_USAGE/NAME
554                ])[1]/NAME"
555/>
556
557<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
558<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
559<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
560<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]])"/>
561<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
562<xsl:message select="concat('Interactive - Show Map: ', $showMap, ', geoDimensionName:', $geoDimensionName)"/>
563
564<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
565<xsl:message select="$Page.comparisonDimensionName"/>
566<xsl:message select="$Page.comparisonDimensionValue"/>
567<xsl:with-param name="comparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
568
569Stuff to try when doing dashboard
570function dataSource_change(e) {
571  console.log(e);
572}
573kendoDataSource.bind("change", dataSource_change);
574select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
575
576**********************************************
577
578PROBLEM: "CATEGORY":"GeoCnty.4"
579                                                <xsl:with-param name="geoJSONName"      select="$indicatorView/MAP_DIMENSION_NAME"/>
580                                               
581******************
582probably need to geojson to have the geodim name + . + geodim value to uniquely ID the area.
583
584************ PROBLEM is that the QM only returns 1..31 and not GeoCnty.1
585
586The IP and QM dimension files are all 1..31
587
588So, need the field name then use the geotype and parse the .XXX from the end.
589Then in the QM will need to build the JSON fields the same way as we do with
590the IP - which is the right way to do it anyway so fields can be combined???
591
592*** also have issues with if 2d and 3d...
593        if mult series then drop down for that.
594        if mult constants then drop down for that as well.
595        when changed regen map.
596        Need to specify the category field name and value
597        Need to specify the series field name and value
598        Need to specify the constant field name and value
599       
600        GeoJSON GeoID Prefix to add when doing comparison???
601
602        <xsl:variable name="communityDatasets" select="$indicator/DATASETS/DATASET[DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[not(DIMENSION_2/NAME) and DIMENSION_1/NAME = $communityDimensionName]]"/>
603        <xsl:variable name="communityDataset"  select="$communityDatasets[(MEASURE_NAME = $measureName) and DIMENSION_COMBINATIONS/DIMENSION_COMBINATION[PERIOD_DIMENSION/NAME = $periodName]]"/>
604        <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)]]]"/>
605
606
607GARTH TODO:
608        <xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'"/>
609<xsl:message select="$indicatorViewDatasetRecords[1]"/>
610
611
612
613<xsl:with-param name="dimensionFieldInclusionCriteria">
614records have the field names to filter.
615to include need field name and value.
616
617specifies the records held constant - This is to filter out not matching constant records
618
619for mouse overs, the title needs specifics - dimension title and dimension value title.
620        <DIMENSION><NAME>CONSTANT</NAME><VALUE>YearAll.2014</VALUE><TITLE>Year</TITLE><VALUE_TITLE>2014</VALUE_TITLE></DIMENSION>
621        <DIMENSION><NAME>SERIES</NAME><VALUE>Sex.1</VALUE><TITLE>Sex</TITLE><VALUE_TITLE>Male</VALUE_TITLE></DIMENSION>
622</xsl:with-param>
623
624==========================================================================
625<xsl:message select="$indicatorViewDatasetRecords/RECORD"/>
626
627<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
628<xsl:message select="$indicatorView/MAP_DIMENSION_NAME"/>
629<xsl:message select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/> 
630
631==========================================================================
632==========================================================================
633==========================================================================
634-->
635
636                </script>
637
638        </xsl:template>
639
640</xsl:stylesheet>
641<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.