source: main/trunk/ibisph-view/src/main/webapp/xslt/html/query/module/result/Result.xslt @ 19882

Last change on this file since 19882 was 19882, checked in by GarthBraithwaite_STG, 2 years ago

view - changed Graphic to DataViz?

File size: 24.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="3.0"
3        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"
4        xmlns:ibis="http://www.ibisph.org"
5
6        exclude-result-prefixes="ibis"
7>
8        <ibis:doc>
9                <name>html/query/result/Result</name>
10                <summary>query result variables</summary>
11                <description>
12                        Contains the query result variable definitions.
13                </description>
14        </ibis:doc>
15
16        <!-- ~~~~~~~~~~~~~~~~~~~~~~~ PARAMS / VARIABLES ~~~~~~~~~~~~~~~~~~~~~~~~ -->
17        <xsl:param name="Result.queryModule" select="/QUERY_MODULE" ibis:doc="query module with result."/>
18
19        <xsl:param name="Result.useExternalXML" select="true()"
20                ibis:doc="Controls where the supplemental XML data resides.  If true then
21                        the XML to be referenced is an external XML file.  If false then the
22                        XML resides within the IP XML file.  For adopters that want 100%
23                        self contained IP XML set this to false.  For database/centralized
24                        data referencing set to true.
25                "
26        />
27        <xsl:param name="AncillaryValues"/>
28        <xsl:param name="Result.ancillaryValues" select="if($Result.useExternalXML) then $AncillaryValues/ANCILLARY_VALUES else $Result.queryModule/ANCILLARY_VALUES"/>
29        <xsl:param name="DataSources"/>
30        <xsl:param name="Result.dataSources"     select="if($Result.useExternalXML) then $DataSources/DATA_SOURCES else $Result.queryModule/DATA_SOURCES"/>
31        <xsl:param name="Dimensions"/>
32        <xsl:param name="Result.dimensions"      select="if($Result.useExternalXML) then $Dimensions/DIMENSIONS else $Result.queryModule/DIMENSIONS"/>
33        <xsl:param name="Measures"/>
34        <xsl:param name="Result.measure"         select="if($Result.useExternalXML) then $Measures/MEASURES/MEASURE[NAME=$Result.queryModule/CONFIGURATIONS/CONFIGURATION/MEASURE_NAME] else $Result.queryModule/MEASURES/MEASURE[NAME=$Result.queryModule/CONFIGURATIONS/CONFIGURATION/MEASURE_NAME]"/>
35        <xsl:param name="ValueTypes"/>
36        <xsl:param name="Result.valueTypes"      select="if($Result.useExternalXML) then $ValueTypes/VALUE_TYPES else $Result.queryModule/VALUE_TYPES"/>
37        <xsl:param name="ValueAttributes"/>
38        <xsl:param name="Result.valueAttributes" select="if($Result.useExternalXML) then $ValueAttributes/VALUE_ATTRIBUTES else $Result.queryModule/VALUE_ATTRIBUTES"/>
39
40<!-- CLEAN UP ONCE DETERMINE USAGE
41        <xsl:param name="Page.dimensions" select="$Page.queryModule/DIMENSIONS"/>
42
43        <xsl:param name="Page.queryAncillaryValueNames" select="$Page.configuration/ANCILLARY_VALUE_NAMES/ANCILLARY_VALUE_NAME"/>
44        <xsl:param name="Page.ancillaryValues" select="$Result.ancillaryValues/ANCILLARY_VALUE[(NAME = $Page.queryAncillaryValueNames) and (ACTIVE_FLAG = 'x')]"/>
45
46        <xsl:param name="Page.queryValueTypeNames" select="$measure/VALUE_TYPE_NAME union $Result.ancillaryValues/VALUE_TYPE_NAME"/>
47        <xsl:param name="Page.valueTypes" select="$ValueTypes//VALUE_TYPE[NAME = $Page.queryValueTypeNames]"/>
48
49        <xsl:param name="Page.valueAttributes" select="$ValueAttributes/VALUE_ATTRIBUTES"/>
50        <xsl:param name="Page.valueAttributes" select="$Page.valueAttributes/VALUE_ATTRIBUITES/VALUE_ATTRIBUITE[NAME = 'x']"/>
51
52        <xsl:param name="Page.queryAncillaryValueNames" select="$Page.configuration/ANCILLARY_VALUE_NAMES/ANCILLARY_VALUE_NAME"/>
53        <xsl:param name="Page.ancillaryValues" select="$Result.ancillaryValues/ANCILLARY_VALUE[(NAME = $Page.queryAncillaryValueNames) and (ACTIVE_FLAG = 'x')]"/>
54
55        <xsl:param name="Page.queryValueTypeNames" select="$measure/VALUE_TYPE_NAME union $Result.ancillaryValues/VALUE_TYPE_NAME"/>
56
57        <xsl:param name="Page.valueAttributes" select="$ValueAttributes/VALUE_ATTRIBUTES"/>
58        <xsl:param name="Page.valueAttributes" select="$Page.valueAttributes/VALUE_ATTRIBUITES/VALUE_ATTRIBUITE[NAME = 'x']"/>
59-->
60
61<!-- GARTH TODO: this needs to be made easier????? -->
62        <xsl:param name="Result.comparisonDimensionName"  select="'GeoState'"/>
63        <xsl:param name="Result.comparisonDimensionValue" select="'35'"/>
64
65
66        <xsl:param name="ShowDimensionValues" select="''"
67                ibis:doc="if t, y, or x then shows the dim value in a column for sorting."
68        />
69        <xsl:param name="Result.showDimensionValueColumn" select="ibis:isFirstLetter_T_or_Y_or_X($ShowDimensionValues)"/>
70
71
72        <!-- value which contains the character that represents an IBISQ total value or an all value. -->
73        <xsl:param name="Result.ibisqAllValue" select="'.'"
74                ibis:doc="Provides a variable to localize the IBISQ total value
75                        which is typically the '.' character."
76        />
77
78
79
80        <xsl:param name="Result.supressedCellsMessage" 
81                ibis:doc="Text message to be displayed when cell supression value found.
82                        This is implemented as a global var for site specific override.  This
83                        message text also depends on a template that uses it.  If an adopter
84                        needs better format control then they will override the data table
85                        footnote template which will likely not reference this parameter value.
86GARTH TODO: Remove this stuff...
87                "
88        >
89                <xsl:variable name="countEndsWithStar"     select="count(/QUERY_MODULE/IBISQ_QUERY_RESULT/RECORDS/RECORD/MEASURE[ends-with(VALUE,  '*')])"/>
90                <xsl:variable name="countEndsWithStarStar" select="count(/QUERY_MODULE/IBISQ_QUERY_RESULT/RECORDS/RECORD/MEASURE[ends-with(VALUE, '**')])"/>
91                <xsl:if test="($countEndsWithStar != 0) and ($countEndsWithStar != $countEndsWithStarStar)">
92                        *Use caution in interpreting, the estimate has a relative standard
93                        error greater than 30% and does not meet UDOH standards for reliability.
94                        Consider aggregating years to decrease the relative standard error and
95                        improve the reliability of the estimate.
96                </xsl:if>
97
98                <!-- tried adding this inside both with br and whitespace and ignored.
99                -->
100                <xsl:if test="$countEndsWithStarStar != 0">
101                        <xsl:if test="$countEndsWithStar != $countEndsWithStarStar"><br/><br/></xsl:if>
102                        **The estimate has been suppressed because 1) The relative standard error
103                        is greater than 50% or when the relative standard error can't be determined.
104                        Consider aggregating years to decrease the relative standard error and improve
105                        the reliability of the estimate.  2) the observed number
106                        of events is very small and not appropriate for publication, or 3) it could be
107                        used to calculate the number in a cell that has been suppressed.
108                </xsl:if>
109        </xsl:param>
110
111        <xsl:param name="Result.requestErrorMessageContent">
112                <div class="Error">
113                        <h2>Error: <xsl:value-of select="/QUERY_MODULE/REQUEST/ERROR/TITLE"/></h2>
114
115                        There is a problem getting the specified query data from the
116                        database.  This error could be a temporary issue either with
117                        the servers or the network.  Please wait a few minutes and try
118                        your query again.  If the problem persists, please report this
119                        problem to us (<a href="{$ibis.contextPath}about/ContactInformation.html">contact information</a>).
120                        The nature of the problem is shown below and will be helpful
121                        when reporting the problem.  We apologize for any inconveniences
122                        and appreciate your patience and help.
123
124                        <div class="Note" style="margin-top: 1em;" title="{/QUERY_MODULE/REQUEST/ERROR/TITLE}">
125                                <h3>Error Details:</h3>
126                                <xsl:value-of select="/QUERY_MODULE/REQUEST/ERROR/DESCRIPTION"/>
127                        </div>
128                </div><br/>
129        </xsl:param>
130
131        <xsl:param name="Result.resultErrorMessageContent">
132                <div class="Error">
133                        <h2>SAS/CGI System Error:</h2>
134                        There is a problem getting the specified query data from the
135                        database.  Please report this problem to us (<a href="{$ibis.contextPath}about/ContactInformation.html">contact information</a>).
136                        The nature of the problem is shown below and will be helpful
137                        when reporting the problem.  We apologize for any inconveniences
138                        and appreciate your patience and help.
139                        <br/><br/>
140
141                        <div class="Note" title="{/QUERY_MODULE/REQUEST/ERROR/TITLE}">
142                                <h3>More Error Detail:</h3>
143                                <xsl:value-of select="/QUERY_MODULE/REQUEST/ERROR"/>
144                        </div>
145                </div><br/>
146        </xsl:param>
147
148        <xsl:param name="Result.pleaseWaitMessageContent">
149                <div class="PleaseWait">
150                        <h2>Please wait.  Processing query.</h2>
151                        The system is processing your data request.  Your browser should
152                        be actively trying to load a page.  This is typically indicated by
153                        your browser showing something spinning the browser tab.  If this
154                        is not the case click on this <a href="{$Page.resultURL}" title="Resubmit query">get
155                        query results</a> link.  Otherwise be patient as your data will be
156                        displayed as soon as they are available.
157                </div><br/>
158        </xsl:param>
159
160        <xsl:param name="Result.resultNoDataMessageContent">
161                <div class="Note">
162                        <h2>Sorry, no data were returned for your query.</h2>
163                        The filtering criteria was too specific or no data exists in
164                        the dataset.  If you feel that your query should have worked,
165                        please contact us and let us know about the problem. Otherwise,
166                        please go back and modify your query using less specific
167                        filtering criteria.
168                </div><br/>
169        </xsl:param>
170
171
172
173        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEMPLATES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
174
175        <xsl:template name="Result.dataTableValuesFootnote" 
176                ibis:doc="Text message to be displayed when cell supression value found.
177                        This template is implemented to interact with a parameter so that the
178                        message can be inject.  See the template below if you need to have
179                        fine grained control over formatting and putting in html links etc.
180                "
181        >
182                <xsl:if test="string-length($Result.supressedCellsMessage) != 0">
183                        <xsl:call-template name="ContentContainer.fixed">
184                                <xsl:with-param name="content" select="$Result.supressedCellsMessage"/>
185                                <xsl:with-param name="additionalClasses" select="'SupressedCellMessage'"/>
186                                <xsl:with-param name="addWikiAttribute"  select="false()"/>
187                        </xsl:call-template>
188                </xsl:if>
189        </xsl:template>
190
191
192<xsl:template name="Result.dataTableValuesFootnote-AnotherVersion" 
193                ibis:doc="template with ability to control text better..."
194        >
195                <xsl:if test="exists(//RECORDS/RECORD/MEASURE[ends-with(VALUE, '*')])">
196                        <div class="SupressedCellMessage">
197                                * Use caution in interpreting, the estimate has a relative standard
198                                error greater than 30% and does not meet UDOH standards for reliability.
199                                Consider aggregating years to decrease the relative standard error and
200                                improve the reliability of the estimate.
201                                <br/><br/>
202
203                        <xsl:if test="exists(//RECORDS/RECORD/MEASURE[VALUE = '**'])">
204                                ** The estimate has been suppressed because 1) The relative standard error
205                                is greater than 50% or when the relative standard error can't be determined.
206                                Consider aggregating years to decrease the relative standard error and improve
207                                the reliability of the estimate. 2) the observed number of events is very small
208                                and not appropriate for publication, or 3) it could be used to calculate the
209                                number in a cell that has been suppressed.
210                        </xsl:if>
211                        </div>
212                </xsl:if>
213        </xsl:template>
214
215
216
217        <xsl:template name="Result.leafletKendoScript" ibis:doc="Provides the kendo and leaflet javascript.">
218                <xsl:param name="queryModule"/>
219                <xsl:param name="configuration"/>
220                <xsl:param name="request"/>
221                <xsl:param name="showMap"/>
222                <xsl:param name="showChart"/>
223                <xsl:param name="showValueAttributeColumn" select="false()"/>
224
225                <xsl:param name="measure" select="$Result.measure"/>
226                <xsl:param name="datasetRecords" select="$queryModule/IBISQ_QUERY_RESULT/RECORDS"/>
227
228                <xsl:param name="ancillaryValueNames" select="$configuration/ANCILLARY_VALUE_USAGES/ANCILLARY_VALUE_USAGE/NAME"/>
229                <xsl:param name="ancillaryValues" select="$Result.ancillaryValues/ANCILLARY_VALUE[(NAME = $ancillaryValueNames) and (ACTIVE_FLAG = 'x')]"/>
230
231                <xsl:param name="dimensions" select="$Result.dimensions"/>
232
233                <xsl:param name="measureValueFormatPattern" select="($Result.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN)[1]"/>
234<!--
235<xsl:message select="'~~~~~~~~~~~~garth'"/>
236<xsl:message select="$measure"/>
237-->
238                <xsl:variable name="dimensionUsages" 
239                        ibis:doc="Builds a dim usages struct like:
240                                DIMENSION_USAGES
241                                        DIMENSION_USAGE
242                                                USAGE category
243                                                NAME Year
244                                                VALUES
245                                                        VALUE 2012
246                                                        VALUE 2011
247                                                        VALUE 2010
248                                                        ...
249                                        DIMENSION_USAGE
250                                                ...
251                        "
252                >
253                        <xsl:call-template name="getDimensionUsage">
254                                <xsl:with-param name="datasetRecords" select="$datasetRecords"/>
255                                <xsl:with-param name="usage" select="'category'"/>
256                                <xsl:with-param name="dimensionName" select="$request/ACTUAL_GROUP_BY/CATEGORY_DIMENSION_NAME"/>
257                        </xsl:call-template>
258                        <xsl:call-template name="getDimensionUsage">
259                                <xsl:with-param name="datasetRecords" select="$datasetRecords"/>
260                                <xsl:with-param name="usage" select="'series'"/>
261                                <xsl:with-param name="dimensionName" select="$request/ACTUAL_GROUP_BY/SERIES_DIMENSION_NAME"/>
262                        </xsl:call-template>
263                        <xsl:call-template name="getDimensionUsage">
264                                <xsl:with-param name="datasetRecords" select="$datasetRecords"/>
265                                <xsl:with-param name="usage" select="'constant'"/>
266                                <xsl:with-param name="dimensionName" select="$request/ACTUAL_GROUP_BY/CONSTANT_DIMENSION_NAME"/>
267                        </xsl:call-template>
268                </xsl:variable>
269
270                <xsl:variable name="recordDimensionFields">
271                        <xsl:call-template name="Interactive.getRecordDimensionFields">
272                                <xsl:with-param name="dimensions"      select="$dimensions"/>
273                                <xsl:with-param name="dimensionUsages" select="$dimensionUsages"/>
274                        </xsl:call-template>
275                </xsl:variable>
276
277                <xsl:variable name="recordAncillaryValueFields">
278                        <xsl:call-template name="Interactive.getQueryRecordAncillaryValueFields">
279                                <xsl:with-param name="ancillaryValueUsage" select="$configuration/ANCILLARY_VALUE_USAGES"/>
280                                <xsl:with-param name="ancillaryValues"     select="$Result.ancillaryValues"/>
281                                <xsl:with-param name="valueTypes"          select="$Result.valueTypes"/>
282                                <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
283                        </xsl:call-template>
284                </xsl:variable>
285
286                <!-- tried doing jsonp tech but callback func must be defined before doing the script jsonp
287                        so you'd have the variable = null, call back, end of script, include jsonp, then contructor
288                        script.  Very messy - decided just to do simple var and include it.
289                -->
290                <xsl:if test="$showMap">
291                        <xsl:call-template name="DataViz.choroplethMapJavaScript"/>
292                </xsl:if>
293                <script type="text/javascript" src="{$ibis.contextPath}js/jszip.js"/>
294                <script type="text/javascript">
295                        var records =
296                        [<xsl:text>&#10;</xsl:text>
297                                <xsl:call-template name="Dataset.getDatasetRecordsJSON">
298                                        <xsl:with-param name="dimensions"                 select="$dimensions"/>
299                                        <xsl:with-param name="datasetRecords"             select="$datasetRecords"/>
300                                        <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
301                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
302                                        <xsl:with-param name="measureValueFormatPattern"  select="$measureValueFormatPattern"/>
303                                </xsl:call-template>
304                        ];
305
306                        var kendoDataSource = new kendo.data.DataSource(
307                                <xsl:call-template name="Kendo.dataSourceConstructorJSON">
308                                        <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
309                                        <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
310                                        <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
311                                </xsl:call-template>
312                        );
313
314                        <xsl:variable name="recordDimensionCount" select="count($recordDimensionFields/RECORD_DIMENSION_FIELD[VALUE_COUNT != 0])"/>
315                        <xsl:variable name="grandTotalDatasetRecord" select="$datasetRecords//RECORD[$recordDimensionCount  = count(DIMENSIONS/DIMENSION[VALUE/text() = $Result.ibisqAllValue])]"/>
316                        var kendoGridConstructorJSON = $.extend
317                                (true, {}
318                                        ,<xsl:call-template name="Kendo.baseGridJSON"/>
319                                        ,<xsl:call-template name="Kendo.namedConfigurationJSON">
320                                                <xsl:with-param name="configurationName" select="'IndicatorProfileGrid'"/>
321                                        </xsl:call-template>
322                                        ,<xsl:call-template name="Kendo.requestGridJSON">
323                                                <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
324                                                <xsl:with-param name="measure" select="$measure"/>
325                                                <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
326                                                <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
327                                                <xsl:with-param name="footerValues">
328                                                        <VALUE><xsl:value-of select="ibis:getFormattedNumber($grandTotalDatasetRecord/MEASURE/VALUE, $measureValueFormatPattern)"/></VALUE>
329                                                        <xsl:for-each select="$recordAncillaryValueFields/RECORD_ANCILLARY_VALUE_FIELD">
330                                                                <VALUE><xsl:value-of select="ibis:getFormattedNumber($grandTotalDatasetRecord/ANCILLARY_VALUES/ANCILLARY_VALUE[NAME = current()/NAME]/VALUE, current()/XSLT_FORMAT_PATTERN)"/></VALUE>
331                                                        </xsl:for-each>
332                                                </xsl:with-param>
333                                                <xsl:with-param name="showValueAttributeColumn" select="$showValueAttributeColumn"/>
334                                                <xsl:with-param name="showNoteColumn"  select="false()"/>
335                                                <xsl:with-param name="showLabelColumn" select="false()"/>
336                                        </xsl:call-template>
337                                );
338
339                        <xsl:if test="$showMap">
340                        var leafletMapConstructorJSON = $.extend
341                                (true, {}
342                                        ,<xsl:call-template name="LeafletMap.baseJSON"/>
343                                        ,<xsl:call-template name="LeafletMap.namedConfigurationJSON">
344                                                <xsl:with-param name="configurationName" select="$configuration/MAP_NAME"/>
345                                        </xsl:call-template>
346                                        ,<xsl:call-template name="LeafletMap.requestJSON"> 
347<xsl:with-param name="mapType"       select="'choropleth'"/>
348                                        </xsl:call-template>
349
350                                        ,<xsl:call-template name="LeafletMap.choroplethJSON">
351                                                <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
352<xsl:with-param name="geoJSONName" select="$request/ACTUAL_GROUP_BY/CATEGORY_DIMENSION_NAME"/>
353
354<xsl:with-param name="geoIDFieldName"  select="'Category'"/> 
355<xsl:with-param name="geoIDFieldValuePrefixToRemove" select="concat($request/ACTUAL_GROUP_BY/CATEGORY_DIMENSION_NAME, '.')"/>
356<xsl:with-param name="legendTitle"     select="$measure/TITLE"/>
357<xsl:with-param name="geoTypeTitle"    select="ibis:getDimensionTitle($queryModule//DIMENSIONS/DIMENSION[NAME = $configuration/MAP_DIMENSION_NAME])"/>
358<xsl:with-param name="reverseColors"   select="$measure/DESIRABLE_VALUE = 'HIGH'"/>
359<xsl:with-param name="desirableValue"  select="$measure/DESIRABLE_VALUE"/>
360<xsl:with-param name="comparisonValue" select="$datasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Result.comparisonDimensionName) and (VALUE = $Result.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
361                                        </xsl:call-template>
362                                );
363                        </xsl:if>
364
365                        <xsl:if test="$showChart">
366                        var kendoChartConstructorJSON = $.extend
367                                (true, {}
368                                        ,<xsl:call-template name="Kendo.baseChartJSON"/>
369                                        ,<xsl:call-template name="Kendo.namedConfigurationJSON">
370                                                <xsl:with-param name="configurationName" select="$request/CHART_NAME"/>
371                                        </xsl:call-template>
372                                        ,<xsl:call-template name="Kendo.requestChartJSON">
373                                                <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
374                                                <xsl:with-param name="seriesTitle"   select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/TITLE"/>
375                                                <xsl:with-param name="categoryTitle" select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/TITLE"/>
376                                                <xsl:with-param name="valueTitle"    select="$measure/TITLE"/>
377
378                                                <xsl:with-param name="seriesFieldName"    select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/NAME"/>
379                                                <xsl:with-param name="categoryFieldName"  select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/NAME"/>
380
381                                                <xsl:with-param name="includeDatasetSeries" select="1 &lt; $recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/VALUE_COUNT"/>
382                                                <xsl:with-param name="recordAncillaryValueFields"  select="$recordAncillaryValueFields"/>
383                                        </xsl:call-template>
384                                );
385
386                        $(window).resize(resizeKendoChart);
387                        </xsl:if>
388
389
390                        var $kendoGrid;
391                        var $kendoChart;
392                        var $leafletMap;
393                        $(document).ready(function()
394                        {
395                        <xsl:if test="$showMap">
396                                $leafletMap = $("#map").leaflet(leafletMapConstructorJSON);
397                        </xsl:if>
398                        <xsl:if test="$showChart">
399                                $kendoChart = $("#chart").kendoChart(kendoChartConstructorJSON);
400                        </xsl:if>
401                                $kendoGrid  = $("#grid").kendoGrid (kendoGridConstructorJSON);
402
403                                // "read" fires the "change" event of the dataSource and any objects
404                                // that ref the data source will be bound.  This needs to occur
405                                // after the grid and chart are created because .autoBind = false.
406                                // Can also fire load by issuing a sort:
407                                // $kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
408                                kendoDataSource.read();
409                        }); //~~~~~~~~~~~~~~~~~~~~ End of Ready Function ~~~~~~~~~~~~~~~~~~~
410
411
412                        // Called via the chart's expandable content input element's onchange
413                        // firing this code.  Also bound to the windonws resize event to
414                        // properly resize the chart to fit the container.
415                        function resizeKendoChart()
416                        {
417                                $kendoChart.getKendoChart().resize();
418                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
419
420                        var baseExportFilename = "<xsl:value-of select="$configuration/TITLE"/>";
421                        function exportGrid()
422                        {
423                                var grid = $("#grid").getKendoGrid();
424                                grid.options.excel.fileName = baseExportFilename + " - data.xlsx";
425                                grid.saveAsExcel();
426                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
427                        function exportChart()
428                        {
429                                var chart = $("#chart").getKendoChart();
430
431<!--
432                                chart.exportImage().done
433                                (
434                                        function(data)
435                                        {
436                                                kendo.saveAs
437                                                ({
438                                                        dataURI: data
439                                                        ,fileName: baseExportFilename + ".png"
440                                                });
441                                        }
442                                );
443
444/* doesn't work
445                                chart.saveAsPDF();
446                                chart.exportPDF().done( function(data) { kendo.saveAs(); } );
447dataURI: "data:text/plain,Report title and text",
448*/
449-->
450                                chart.exportPDF().done
451                                (
452                                        function(data)
453                                        {
454                                                kendo.saveAs
455                                                ({
456                                                        dataURI: data
457                                                        ,fileName: baseExportFilename + " - chart.pdf"
458                                                });
459                                        }
460                                );
461                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
462
463                        function exportMap()
464                        {
465                                alert("Map export is not current supported.");
466                        } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
467                </script>
468        </xsl:template>
469
470
471        <xsl:template name="getDimensionUsage">
472                <xsl:param name="datasetRecords"/>
473                <xsl:param name="usage"/>
474                <xsl:param name="dimensionName"/>
475
476                <xsl:if test="0 != string-length($dimensionName)">
477                        <DIMENSION_USAGE>
478                                <USAGE><xsl:value-of select="$usage"/></USAGE>
479                                <NAME><xsl:value-of select="$dimensionName"/></NAME>
480                                <VALUES>
481                        <xsl:for-each select="distinct-values($datasetRecords/RECORD/DIMENSIONS/DIMENSION[NAME = $dimensionName]/VALUE/text()[1])">
482                                        <VALUE><xsl:value-of select="."/></VALUE>
483                        </xsl:for-each>
484                                </VALUES>
485                        </DIMENSION_USAGE>
486                </xsl:if>
487        </xsl:template>
488
489</xsl:stylesheet>
490<!-- ============================= End of File ============================= -->
491<!--
492
493<xsl:message select="$datasetRecords"/>
494
495<xsl:message select="concat('~~~~~~~~~~~~~~~~~~~~Page.leafletKendoScript - Records count: ', count($datasetRecords/*), ', recordDimensionFields: ', count($recordDimensionFields/*))"/>
496<xsl:message select="$recordDimensionFields"/>
497
498<xsl:message select="'============= start of IV Interactive.'"/>
499<xsl:message select="$recordDimensionFields"/>
500<xsl:message select="'============= end of IV Interactive.'"/>
501
502<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
503<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
504<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME])"/>
505<xsl:message select="exists($indicatorView/DIMENSION_USAGES/DIMENSION_USAGE[DIMENSION_NAME = $Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]])"/>
506<xsl:message select="$Indicator.dimensions/DIMENSION[exists(GEOGRAPHY_FLAG)]/NAME"/>
507<xsl:message select="concat('Interactive - Show Map: ', $Interactive.showMap, ', geoDimensionName:', $geoDimensionName)"/>
508
509<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
510<xsl:message select="$Page.comparisonDimensionName"/>
511<xsl:message select="$Page.comparisonDimensionValue"/>
512<xsl:message select="$indicatorViewInteractive./RECORD"/>
513
514<xsl:message select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX interact.xslt'"/>
515<xsl:message select="$indicatorView/MAP_DIMENSION_NAME"/>
516<xsl:message select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/> 
517
518-->
Note: See TracBrowser for help on using the repository browser.