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

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

view - css tweaks, replaced facts footer with Lois's, changed CP lists to goto the IP report, added ability to change the community type to the CP IPs page. Added js global window. context paths. Updated soc media links.

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