source: main/trunk/ibisph-view/src/main/webapp/xslt/html/community/Page.xslt @ 19916

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

db, view - fixed prev other topic name. Implemented topic ip list. Cleaned up and moved _commity.css to Community. XML services and model map cleanup and better descrips. Removed extra "/" from dynamic IP paths when building filename. Renamed IP page.options to page.contentOptions to be consist.

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:ibis="http://www.ibisph.org"
6
7        exclude-result-prefixes="ibis"
8>
9        <xsl:import href="../../json/Dataset.xslt"/>
10        <xsl:import href="../../json/Kendo.xslt"/>
11        <xsl:import href="../../json/LeafletMap.xslt"/>
12        <xsl:import href="../../xml/ComparisonValues.xslt"/>
13        <xsl:import href="../DataViz.xslt"/>
14        <xsl:import href="../Page.xslt"/>
15
16        <ibis:doc>
17                <name>html/community/Page</name>
18                <summary>Default core code that most Community profile Pages inherit from</summary>
19                <description>
20                        Community profile base XSLT.
21                </description>
22        </ibis:doc>
23
24        <xsl:param name="Page.stateTitle" select="$ibis.adopterTitle"/>
25
26        <xsl:param name="Dimensions"/>
27        <xsl:param name="Page.dimensions" select="$Dimensions/DIMENSIONS"/>
28        <xsl:param name="Measures"/>
29        <xsl:param name="Page.measures"   select="$Measures/MEASURES"/>
30        <xsl:param name="ValueTypes"/>
31        <xsl:param name="Page.valueTypes" select="document(ibis:getContentPath('xml/value_types.xml'), /)/VALUE_TYPES"/>
32
33        <!-- Request parameter names and XML models injected by the controller -->
34        <xsl:param name="CommunityReportType"/>
35        <xsl:param name="IndicatorName"/>
36        <xsl:param name="IndicatorSets"/>
37        <xsl:param name="IndicatorSetName"/>
38        <xsl:param name="IndicatorProfileXMLFilePath"/>
39        <xsl:param name="CommunityProfileXMLFilePath"/>
40
41        <xsl:param name="DimensionName"/>
42        <xsl:param name="DimensionValue"/>
43        <xsl:param name="Page.dimensionName"  select="if(0 = string-length($DimensionName)) then $PathSegments[last()] else $DimensionName"/> 
44        <xsl:param name="Page.dimensionValue" select="$DimensionValue"/>
45
46        <xsl:param name="Page.communityDimension"      select="$Page.dimensions/DIMENSION[NAME = $Page.dimensionName]"/>
47        <xsl:param name="Page.communityDimensionValue" select="$Page.communityDimension/VALUES/VALUE[normalize-space(text()[1]) = $Page.dimensionValue]"/>
48        <xsl:param name="Page.previousDimensionValue"  select="$Page.communityDimensionValue/preceding-sibling::*[not(NOT_SELECTABLE_FLAG)][1]"/>
49        <xsl:param name="Page.nextDimensionValue"      select="$Page.communityDimensionValue/following-sibling::*[not(NOT_SELECTABLE_FLAG)][1]"/>
50
51        <xsl:param name="Page.communityDimensionTitle" select="ibis:getDimensionTitle($Page.communityDimension)"/>
52
53        <xsl:param name="Page.communityDimensionNames">
54                <NAME>GeoCnty</NAME>
55                <NAME>GeoRegion</NAME>
56                <NAME>GeoSarea</NAME>
57                <NAME>GeoSchDist</NAME>
58                <NAME>RacEthDOH</NAME>
59                <NAME>Sex</NAME>
60                <NAME>SexualOrientation</NAME>
61                <NAME>Income5Grps</NAME>
62        </xsl:param>
63
64        <!-- XML file paths injected by controller - renaming so downstream XSLT knows where this came from -->
65        <xsl:param name="Page.indicatorProfileXMLFilePath" select="$IndicatorProfileXMLFilePath"/>
66
67        <xsl:param name="Page.indicatorName" select="$IndicatorName"/>
68
69        <xsl:param name="Page.indicatorSets" select="$IndicatorSets/INDICATOR_SETS"/>
70        <xsl:param name="Page.indicatorSetName" select="if(0 = string-length($IndicatorSetName)) then $Page.indicatorSets/INDICATOR_SET[1]/NAME else $IndicatorSetName"/>
71        <xsl:param name="Page.indicatorSet"  select="$Page.indicatorSets/INDICATOR_SET[NAME = $Page.indicatorSetName]"/>
72
73        <!-- Optional file that allows filtering out of IP sets and possibly other
74                options that lois/adopters want.
75        -->
76        <xsl:param name="Page.communityProfileXMLFilePath" select="$CommunityProfileXMLFilePath"/>
77        <xsl:param name="Page.communityProfile" 
78                select="document(concat($Page.communityProfileXMLFilePath, '/', $Page.dimensionName, '.xml'), /)/COMMUNITY_PROFILE"
79        />
80        <xsl:param name="Page.communityIndicatorSet" select="if(0 = count($Page.communityProfile/INDICATOR_SET_NAMES/INDICATOR_SET_NAME))
81                then $Page.indicatorSets/INDICATOR_SET
82                else $Page.indicatorSets/INDICATOR_SET[NAME = $Page.communityProfile/INDICATOR_SET_NAMES/INDICATOR_SET_NAME]"
83        />
84
85        <xsl:param name="Page.communityReportType" select="if(0 = string-length($CommunityReportType)) then 'indicators' else $CommunityReportType"/>
86
87
88        <xsl:param name="Page.confidenceIntervalHelpContent">
89                <div>Description of the Confidence Interval</div>
90                The confidence interval indicates the range of probable
91                true values for the level of risk in the community.
92                <br/><br/>
93
94                A value of "DNA" (Data Not Available) will appear
95                if the confidence interval was not published with
96                the IBIS indicator data for this measure.
97        </xsl:param>
98
99        <xsl:param name="Page.statisticalStabilityHelpContent">
100                <div>Description of Statistical Stability</div>
101                <ul>
102                        <li>
103                                Stable = This count or rate is relatively stable
104                                and should provide a good estimate of your
105                                community risk.
106                        </li>
107                        <li>
108                                Unstable = This count or rate is statistically
109                                unstable (RSE >0.30), and may fluctuate widely
110                                due to random variation (chance).
111                        </li>
112                        <li>
113                                Very Unstable = This count or rate is extremely
114                                unstable (RSE >0.50). This value should not be
115                                used to represent your population risk. You
116                                should combine years or otherwise increase the
117                                population denominator in this calculation.
118                        </li>
119                        <li>
120                                DNA = Data Not Available. The required community
121                                value and/or confidence interval was not available
122                                for this measure.
123                        </li>
124                </ul>
125        </xsl:param>
126
127        <xsl:param name="Page.gauge4HelpContent" ibis:doc="">
128                <h4>Description of the Dashboard Gauge</h4>
129                This "dashboard" type graphic is based on the community data
130                on the right.  It compares the community value on this indicator
131                to the state overall value.
132
133                <ul class="ExtraWhiteSpace">
134                        <li>Excellent = The community's value on this indicator
135                                is BETTER than the state value, and the difference
136                                IS statistically significant.
137                        </li>
138                        <li>Watch = The community's value is BETTER than state value,
139                                but the difference IS NOT statistically significant.
140                        </li>
141                        <li>Similar = The community's value is SIMILAR to the state value,
142                                difference IS NOT statistically significant.
143                        </li>
144                        <li>Improvement Needed = The community's value on this
145                                indicator is WORSE than the state value, but the
146                                difference IS NOT statistically significant.
147                        </li>
148                        <li>Reason for Concern = The community's value on this
149                                indicator is WORSE than the state value, and the
150                                difference IS statistically significant.
151                        </li>
152                </ul><br/>
153        </xsl:param>
154
155        <xsl:param name="Page.gauge3HelpContent" ibis:doc="">
156                <h4>Description of the Dashboard Gauge</h4>
157                This "dashboard" type graphic is based on the community data
158                on the right.  It compares the community value on this indicator
159                to the state overall value.
160
161                <ul class="ExtraWhiteSpace">
162                        <li>Excellent = The community's value on this indicator
163                                is BETTER than the state value, and the difference
164                                IS statistically significant.
165                        </li>
166                        <li>Similar = The community's value is SIMILAR to the state value,
167                                difference IS NOT statistically significant.
168                        </li>
169                        <li>Reason for Concern = The community's value on this
170                                indicator is WORSE than the state value, and the
171                                difference IS statistically significant.
172                        </li>
173                </ul><br/>
174
175                <div class="BottomHalfLineSpace">
176                        The community value is considered statistically significantly
177                        different from the state value if the state value is outside
178                        the range of the community's 95% confidence interval. If the
179                        community's data or 95% confidence interval information is
180                        not available, a blank gauge image will be displayed with
181                        the message, "missing information."
182                </div>
183
184                NOTE: The labels used on the gauge graphic are meant to describe
185                the community's status in plain language. The placement of the
186                gauge needle is based solely on the statistical difference
187                between the community and state values.  When selecting priority
188                health issues to work on, a community should take into account
189                additional factors such as how much improvement could be made,
190                the U.S. value, the statistical stability of the community
191                number, the severity of the health condition, and whether the
192                difference is clinically significant.
193        </xsl:param>
194
195
196        <xsl:param name="ContentContainer.titleLevel" select="2"/>
197        <xsl:param name="ContentContainer.contentBlockType" select="'expandable'"/>
198
199
200        <xsl:param name="Page.pageTitle" ibis:doc="Page's title text."
201                select="concat(
202                        $Page.communityDimensionValue/TITLE,
203                        ' ',
204                        ibis:getDimensionTitle($Page.communityDimension),
205                        ' - ',
206                        $Page.indicatorSet/TITLE
207                )"
208        />
209        <xsl:param name="Page.contentTitle" select="$Page.pageTitle"/>
210
211
212        <xsl:template name="Page.specificCSS">
213                <link rel="stylesheet" type="text/css" href="{$ibis.baseRequestPath}css/Community.css"/>
214        </xsl:template>
215
216
217        <xsl:template name="Page.specificScript"
218                ibis:doc="Provides the javascript selection changes and selection map."
219        >
220                <script type="text/javascript" src="{$ibis.baseRequestPath}js/InputSelections.js"/>
221                <script type="text/javascript">
222                        var webappContextPath = "<xsl:value-of select="$ibis.baseRequestPath"/>";
223                        var dimensionName     = "<xsl:value-of select="$Page.dimensionName"/>";
224
225                        var selectionMapDialog;
226                        var $jqueryLeaflet;
227
228                        window.inputSelections = new InputSelections();         // all input elements on the page.
229
230                        $(document).ready(function()
231                        {
232                                if(location.href.indexOf("PrinterFriendly") == -1)
233                                {
234                                        window.inputSelections.registerOnChange();
235                                }
236
237                                selectionMapDialog =
238                                        $("#selectionMapDialog").kendoWindow({
239                                                title: "<xsl:value-of select="$Page.communityDimensionTitle"/> Selection Map"
240                                                ,visible: false
241                                                ,width: "90%"
242                                                ,resizable: true
243                                                ,modal: true
244                                        }).data("kendoWindow");
245
246                                var leafletMapConstructorJSON = $.extend
247                                        (true, {}
248                                                ,<xsl:call-template name="LeafletMap.baseJSON"/>
249                                                ,<xsl:call-template name="LeafletMap.namedConfigurationJSON">
250                                                        <xsl:with-param name="configurationName" select="'Selection'"/>
251                                                </xsl:call-template>
252                                                ,<xsl:call-template name="LeafletMap.requestJSON"> 
253                                                        <xsl:with-param name="mapType" select="'selection'"/>
254<xsl:with-param name="selectionLayerSetLayerKeys" select="$Page.dimensionName"/>                <!-- Page.communityDimension/NAME can't simply use dim name as this needs to be a node -->
255                                                        <xsl:with-param name="selectionLayerSetSelectionType" select="'single'"/>
256                                                </xsl:call-template>
257                                        );
258// GARTH TODO: some pages don't have a map so do this simply test to avoid error...
259                                if($("#map").leaflet) $jqueryLeaflet = $("#map").leaflet(leafletMapConstructorJSON);
260                        });
261
262
263                        function showMap()
264                        {
265                                selectionMapDialog.center().open();
266                                $jqueryLeaflet.map.invalidateSize();
267                                L.Control.LayerSets.prototype.htmlSelectionsToMapSelections("GeoProxy", "dimensionValue", $jqueryLeaflet.map, dimensionName);
268                        } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
269
270
271                        function resetForm()
272                        {
273                                document.form.reset();
274                        } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
275
276
277                        // according to: http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript
278                        // having a window.onbeforeunload tells the browser to NOT cache the
279                        // page so that the back button doesn't impact cleared non selected
280                        // query selection values.  On the modern browsers that were tested
281                        // this never was an issue as modern browsers pick up the "post"
282                        // and understand to reset the page as it was prior to submitting.
283//                      window.onbeforeunload = function() {}
284
285                        // <![CDATA[
286                        // ]]>
287                </script>
288        </xsl:template>
289
290
291        <xsl:template name="Page.selectionMap">
292                <input type="button" value=" Show Selection Map " onclick="showMap();"/>
293
294                <div id="selectionMapDialog" class="DialogContent">
295                        <div class="InnerCanvas">
296                                <xsl:call-template name="DataViz.mapContainer"/>
297                        </div>
298                        <button type="button" title="Sets the selected geographical values."
299                                onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', 'dimensionValue'); selectionMapDialog.close()" 
300                        >OK</button>
301                        <button type="button" title="Closes map selection without updating selections."
302                                onclick="selectionMapDialog.close()" 
303                        >Cancel</button>
304                </div>
305                <xsl:call-template name="DataViz.selectionMapJavaScript"/>
306        </xsl:template>
307
308
309        <xsl:template name="Page.contentOptions">
310                <xsl:param name="title"/>
311                <xsl:param name="communityReportType" select="$Page.communityReportType"/>
312                <xsl:param name="requsetSubPath" select="'community/'"/>
313                <xsl:param name="showIndicatorSetsSelection" select="false()"/>
314                <xsl:param name="showIndicatorSelection"     select="false()"/>
315                <xsl:param name="showQuickFactsSelection"    select="false()"/>
316
317                <div class="ContentOptions">
318                        <h3><xsl:value-of select="$title"/></h3>
319
320                        <table class="ListTable">
321
322                                <xsl:if test="'facts' != $communityReportType">
323                                <tr>
324                                        <td><label for="dimensions">Community Type:</label></td>
325                                        <td>
326                                                <select name="dimensions" id="dimensions" 
327                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');"
328                                                >
329                                                        <xsl:for-each select="$Page.dimensions/DIMENSION[NAME = $Page.communityDimensionNames/NAME]">
330                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
331                                                                <xsl:sort select="LABEL" order="ascending"/>
332                                                                <xsl:variable name="href"
333                                                                        select="concat($ibis.baseRequestPath, 'community/indicators/', $Page.indicatorSetName, '/', NAME, '.html')"
334                                                                />
335                                                                <option value="{NAME}" href="{$href}">
336                                                                        <xsl:if test="NAME = $Page.dimensionName">
337                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
338                                                                        </xsl:if>
339                                                                        <xsl:value-of select="LABEL"/>
340                                                                </option>
341                                                        </xsl:for-each>
342                                                </select>
343                                        </td>
344                                </tr>
345                                </xsl:if>
346
347                                <tr>
348                                        <td><label for="dimensionValue"><xsl:value-of select="$Page.communityDimensionTitle"/>:</label></td>
349                                        <td>
350<!--
351                                                <xsl:if test="0 != string-length($Page.previousDimensionValue/TITLE)">
352                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.previousDimensionValue/text()[1])}')"
353                                                                title="show previous community value"
354                                                        >&lt;&lt; Show <xsl:value-of select="$Page.previousDimensionValue/TITLE"/></a>
355                                                </xsl:if>
356-->
357                                                <select name="dimensionValue" id="dimensionValue" 
358                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');"
359                                                >
360                                                        <xsl:for-each select="$Page.communityDimension/VALUES/VALUE[not(NOT_SELECTABLE_FLAG)]">
361                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
362                                                                <xsl:sort select="TITLE" order="ascending"/>
363                                                                <xsl:variable name="value" select="normalize-space(text()[1])"/>
364                                                                <xsl:variable name="href">
365                                                                        <xsl:if test="'facts' = $communityReportType">
366                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $value, '.html')"/>
367                                                                        </xsl:if>
368                                                                        <xsl:if test="'indicator' = $communityReportType">
369                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicator/', $Page.indicatorName, '/', $Page.dimensionName, '/', $value, '.html')"/>
370                                                                        </xsl:if>
371                                                                        <xsl:if test="'indicators' = $communityReportType">
372                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicators/', $Page.indicatorSetName, '/', $Page.dimensionName, '/', $value, '.html')"/>
373                                                                        </xsl:if>
374                                                                </xsl:variable>
375                                                                <option value="{$value}" href="{$href}">
376                                                                        <xsl:if test="$value = $Page.dimensionValue">
377                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
378                                                                        </xsl:if>
379                                                                        <xsl:value-of select="TITLE"/>
380                                                                </option>
381                                                        </xsl:for-each>
382                                                </select>
383<!--
384                                                <xsl:if test="0 != string-length($Page.nextDimensionValue/TITLE)">
385                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.nextDimensionValue/text()[1])}')"
386                                                                title="show next community value"
387                                                        >Show <xsl:value-of select="$Page.nextDimensionValue/TITLE"/> &gt;&gt;</a>
388                                                </xsl:if>
389-->
390                                        </td>
391                                </tr>
392
393                                <xsl:if test="'facts' != $communityReportType">
394                                <tr>
395                                        <td>
396                                                <label for="indicatorSetName">Set of Health Indicators:</label>
397                                        </td>
398                                        <td>
399                                                <select name="indicatorSetName" id="indicatorSetName" 
400                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');">
401                                                >
402<!--
403                                                        <option value="">All</option>
404-->
405                                                        <xsl:for-each select="$Page.communityIndicatorSet">
406                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
407                                                                <xsl:sort select="TITLE" order="ascending"/>
408                                                                <xsl:variable name="href">
409                                                                        <xsl:if test="'indicator' = $communityReportType">
410                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicator/', NAME, '/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')"/>
411                                                                        </xsl:if>
412                                                                        <xsl:if test="'indicators' = $communityReportType">
413                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicators/', NAME, '/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')"/>
414                                                                        </xsl:if>
415                                                                </xsl:variable>
416                                                                <option value="{NAME}" href="{$href}">
417                                                                        <xsl:if test="NAME = $Page.indicatorSetName">
418                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
419                                                                        </xsl:if>
420                                                                        <xsl:value-of select="TITLE"/>
421                                                                </option>
422                                                        </xsl:for-each>
423                                                </select>
424                                        </td>
425                                        <td>
426                                                <div class="Help Popup Info FontIcon Inline">
427                                                        <div class="Container">
428                                                                <div class="Content">
429                                                                        List of health indicators based on the selected
430                                                                        set of indicators that have data for the selected
431                                                                        community. 
432                                                                       
433                                                                        You can change the set of health indicators to
434                                                                        be reported on by using the drop down list.
435
436                                                                        Click on the title link in the list
437                                                                        for a more detailed view of that community's
438                                                                        health indicator.
439                                                                </div>
440                                                        </div>
441                                                </div>
442                                        </td>
443                                </tr>
444                        </xsl:if>
445
446                        <xsl:if test="('facts' != $communityReportType) and exists($Page.communityProfile/FACTS_PAGE_FLAG)">
447                                <tr>
448<!--
449                                        <td><h4>About <xsl:value-of select="$Page.communityDimensionValue/TITLE"/>:</h4></td>
450-->
451                                        <td><label><xsl:value-of select="$Page.communityDimensionTitle"/> Information:</label></td>
452                                        <td>
453                                                <a title="Show this communities quick facts page."
454                                                        href="{concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')}"
455                                                        ><xsl:value-of select="$Page.communityDimensionValue/TITLE"/>'s Quick Facts</a>
456                                        </td>
457                                </tr>
458                        </xsl:if>
459                        </table>
460                </div>
461
462        </xsl:template>
463
464</xsl:stylesheet>
465<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.