source: main/branches/3.0.0/ibisph-view/src/main/webapp/xslt/html/community/Page.xslt @ 25063

Last change on this file since 25063 was 25063, checked in by GarthBraithwaite_STG, 10 months ago

nm epht, 300 - Cleared NM Page.communityNames selections from 300, set the epht value as string instead of wrapped in NAME.

File size: 15.6 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/Interactive.xslt"/>
13        <xsl:import href="../../xml/ComparisonValues.xslt"/>
14        <xsl:import href="../DataViz.xslt"/>
15        <xsl:import href="../Page.xslt"/>
16
17        <ibis:doc>
18                <name>html/community/Page</name>
19                <summary>Default core code that most Community profile Pages inherit from</summary>
20                <description>
21                        Community profile base XSLT.
22
23                        Since this XSLT is needed for all community pages even though the
24                        facts page is HTML_CONTENT implemented CSS via XSLT like:
25                        [xsl:param name="Page.htmlClass" select="'Community'"/]
26                        [xsl:template name="Page.specificCSS"]
27                                [link rel="stylesheet" type="text/css" href="css/Community.css"/]
28                        [/xsl:template]
29
30                        For facts could have used for the XML elements for Topic CSS but this
31                        only covers the facts and not all community report type requests.
32                        HTML_CLASS]Community[/HTML_CLASS]
33                        [OTHER_HEAD_CONTENT]
34                                [link   ibis:href="css/Community.css" rel="stylesheet" type="text/css"/]
35                        [/OTHER_HEAD_CONTENT]
36                </description>
37        </ibis:doc>
38
39        <xsl:param name="Page.stateTitle" select="$ibis.adopterTitle"/>
40
41        <xsl:param name="Page.htmlClass" select="'Community'"/>
42
43        <!-- Request parameter names and XML models injected by the controller -->
44        <xsl:param name="Dimensions"/>
45        <xsl:param name="Page.dimensions" select="$Dimensions/DIMENSIONS"/>
46        <xsl:param name="Measures"/>
47        <xsl:param name="Page.measures"   select="$Measures/MEASURES"/>
48        <xsl:param name="ValueTypes"/>
49        <xsl:param name="Page.valueTypes" select="$ValueTypes/VALUE_TYPES"/>
50
51        <xsl:param name="CommunityReportType"/>
52        <xsl:param name="Page.communityReportType" select="if(0 = string-length($CommunityReportType)) then 'indicators' else $CommunityReportType"/>
53
54        <xsl:param name="IndicatorName"/>
55        <xsl:param name="Page.indicatorName" select="$IndicatorName"/>
56
57        <xsl:param name="IndicatorProfilePath"/>
58        <xsl:param name="Page.indicatorProfilePath" select="$IndicatorProfilePath"/>
59
60        <xsl:param name="IndicatorSets"/>
61        <xsl:param name="Page.indicatorSets" select="$IndicatorSets/INDICATOR_SETS"/>
62
63        <xsl:param name="IndicatorSetName"/>
64        <xsl:param name="Page.indicatorSetName" select="if(0 = string-length($IndicatorSetName)) then $Page.indicatorSets/INDICATOR_SET[1]/NAME else $IndicatorSetName"/>
65        <xsl:param name="Page.indicatorSet"     select="$Page.indicatorSets/INDICATOR_SET[NAME = $Page.indicatorSetName]"/>
66
67        <!-- main model map.  NULL element if not exists. -->
68        <xsl:param name="Page.communityProfile" select="/COMMUNITY_PROFILE"/>
69        <xsl:param name="Page.communityIndicatorSet" select="if(0 = count($Page.communityProfile/INDICATOR_SET_NAMES/INDICATOR_SET_NAME))
70                then $Page.indicatorSets/INDICATOR_SET
71                else $Page.indicatorSets/INDICATOR_SET[NAME = $Page.communityProfile/INDICATOR_SET_NAMES/INDICATOR_SET_NAME]"
72        />
73
74
75        <!--
76                Parameter to control which communities show up in the selection list.
77                This is needed for NM because IBIS and EPHT share the same dimensions
78                of which EPHT only wants to use a few. 
79                To implement an override / specify which dim names set the parameter
80                with a simple CSV list as shown below:
81
82                xsl:param name="Page.communityNames" select="'GeoCnty', 'GeoRegion',
83                'GeoSarea', 'GeoSchDist', 'RacEthDOH', 'Sex', 'SexualOrientation',
84                'Income5Grps'"
85
86                -or-
87                The preferred way is for adopters to only set the COMMUNITY_FLAG (admin
88                app) for those dimensions they want to be treated as a community.
89        -->
90        <xsl:param name="Page.communityNames" select="$Page.dimensions/DIMENSION[COMMUNITY_FLAG = 'x']/NAME"/>
91
92        <xsl:param name="DimensionName"/>
93        <xsl:param name="Page.communityName"  select="if($Page.communityNames = $DimensionName) then $DimensionName else $Page.communityNames[1]"/> 
94
95        <xsl:param name="DimensionValue"/>
96        <xsl:param name="Page.communityValue" select="$DimensionValue"/>
97
98        <xsl:param name="Page.communityDimension"      select="$Page.dimensions/DIMENSION[NAME = $Page.communityName]"/>
99        <xsl:param name="Page.communityDimensionValue" select="$Page.communityDimension/VALUES/VALUE[normalize-space(text()[1]) = $Page.communityValue]"/>
100        <xsl:param name="Page.previousDimensionValue"  select="$Page.communityDimensionValue/preceding-sibling::*[not(NOT_SELECTABLE_FLAG)][1]"/>
101        <xsl:param name="Page.nextDimensionValue"      select="$Page.communityDimensionValue/following-sibling::*[not(NOT_SELECTABLE_FLAG)][1]"/>
102
103        <xsl:param name="Page.communityDimensionTitle" select="ibis:getDimensionTitle($Page.communityDimension)"/>
104
105
106        <!-- Optional file that allows filtering out of IP sets and possibly other
107                options that lois/adopters want.
108        -->
109        <xsl:param name="ContentContainer.headingLevel" select="2"/>
110        <xsl:param name="ContentContainer.contentBlockType" select="'expandable'"/>
111
112
113        <xsl:param name="Page.indicatorBaseRequestPath" select="'indicator/'"/>
114        <xsl:param name="Page.communityBaseRequestPath" select="'community/'"/>
115
116
117        <xsl:param name="Page.pageTitle" ibis:doc="Page's title text."
118                select="concat(
119                        $Page.communityDimensionValue/TITLE,
120                        ' ',
121                        ibis:getDimensionTitle($Page.communityDimension),
122                        ' - ',
123                        $Page.indicatorSet/TITLE
124                )"
125        />
126        <xsl:param name="Page.contentTitle" select="$Page.pageTitle"/>
127
128
129        <xsl:param name="Page.indicatorSetHelpContent">
130                List of health indicators based on the selected
131                set of indicators that have data for the selected
132                community. 
133               
134                You can change the set of health indicators to
135                be reported on by using the drop down list.
136
137                Click on the title link in the list
138                for a more detailed view of that community's
139                health indicator.
140        </xsl:param>
141
142
143<!-- GARTH TODO: Is this needed/wanted ??? -->
144        <xsl:template name="Page.specificCSS">
145                <link rel="stylesheet" type="text/css" href="css/Community.css"/>
146        </xsl:template>
147
148
149<!-- GARTH TODO: Used to have a selection map on the index pages.  This currently
150        isn't used so either remove or implement???
151-->
152        <xsl:template name="Page.specificScript"
153                ibis:doc="Provides the javascript selection changes and selection map."
154        >
155                <script type="text/javascript" src="js/InputSelections.js"/>
156                <script type="text/javascript">
157                        var dimensionName = "<xsl:value-of select="$Page.communityName"/>";
158
159                        var $jqueryLeaflet;
160
161                        window.inputSelections = new InputSelections();         // all input elements on the page.
162
163                        $(document).ready(function()
164                        {
165                                if(location.href.indexOf("PrinterFriendly") == -1)
166                                {
167                                        window.inputSelections.registerOnChange();
168                                }
169
170                                window.selectionMapDialog =
171                                        $("#selectionMapDialog").kendoWindow({
172                                                title: "<xsl:value-of select="$Page.communityDimensionTitle"/> Selection Map"
173                                                ,visible: false
174                                                ,width: "90%"
175                                                ,resizable: true
176                                                ,modal: true
177                                        }).data("kendoWindow");
178
179                                var leafletMapConstructorJSON = $.extend
180                                        (true, {}
181                                                ,<xsl:call-template name="LeafletMap.baseJSON"/>
182                                                ,<xsl:call-template name="LeafletMap.namedConfigurationJSON">
183                                                        <xsl:with-param name="configurationName" select="'Selection'"/>
184                                                </xsl:call-template>
185                                                ,<xsl:call-template name="LeafletMap.requestJSON"> 
186                                                        <xsl:with-param name="mapType" select="'selection'"/>
187<xsl:with-param name="selectionLayerSetLayerKeys" select="$Page.communityName"/>                <!-- Page.communityDimension/NAME can't simply use dim name as this needs to be a node -->
188                                                        <xsl:with-param name="selectionLayerSetSelectionType" select="'single'"/>
189                                                </xsl:call-template>
190                                        );
191                        });
192
193
194                        function showMap()
195                        {
196                                window.selectionMapDialog.center().open();
197                                $jqueryLeaflet.map.invalidateSize();
198                                L.Control.LayerSets.prototype.htmlSelectionsToMapSelections("GeoProxy", "dimensionValue", $jqueryLeaflet.map, dimensionName);
199                        } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
200
201
202                        function resetForm()
203                        {
204                                document.form.reset();
205                        } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206
207
208                        // according to: http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript
209                        // having a window.onbeforeunload tells the browser to NOT cache the
210                        // page so that the back button doesn't impact cleared non selected
211                        // query selection values.  On the modern browsers that were tested
212                        // this never was an issue as modern browsers pick up the "post"
213                        // and understand to reset the page as it was prior to submitting.
214//                      window.onbeforeunload = function() {}
215
216                        // <![CDATA[
217                        // ]]>
218                </script>
219        </xsl:template>
220
221
222<!-- GARTH TODO: Not used as of 8/2020
223Same type of code exists in the QM SectionSelections.xslt
224        <xsl:template name="Page.selectionMap">
225                <input type="button" value=" Show Selection Map " onclick="showMap();"/>
226
227                <div id="selectionMapDialog" class="DialogWindow">
228                        <div class="Content">
229                                <xsl:call-template name="DataViz.mapContainer"/>
230                        </div>
231                        <button type="button" title="Sets the selected geographical values."
232                                onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', 'dimensionValue'); window.selectionMapDialog.close()"
233                        >OK</button>
234                        <button type="button" title="Closes map selection without updating selections."
235                                onclick="window.selectionMapDialog.close()"
236                        >Cancel</button>
237                </div>
238                <xsl:call-template name="DataViz.selectionMapJavaScript"/>
239        </xsl:template>
240 -->
241
242        <xsl:template name="Page.contentOptions">
243                <xsl:param name="title"/>
244                <xsl:param name="communityReportType"                   select="$Page.communityReportType"/>
245                <xsl:param name="communityBaseRequestPath"              select="$Page.communityBaseRequestPath"/>
246                <xsl:param name="showIndicatorSetsSelection"    select="false()"/>
247                <xsl:param name="showIndicatorSelection"                select="false()"/>
248                <xsl:param name="showQuickFactsSelection"               select="false()"/>
249
250                <div class="ContentOptions">
251                        <h3><xsl:value-of select="$title"/></h3>
252
253                        <table class="ListTable">
254
255                                <xsl:if test="(1 lt count($Page.communityNames)) and ('facts' != $communityReportType)">
256                                <tr>
257                                        <td><label for="dimensions">Community Type:</label></td>
258                                        <td>
259                                                <select name="dimensions" id="dimensions" 
260                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');"
261                                                >
262                                                        <xsl:for-each select="$Page.dimensions/DIMENSION[NAME = $Page.communityNames]">
263                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
264                                                                <xsl:sort select="LABEL" order="ascending"/>
265                                                                <option value="{NAME}" href="{$communityBaseRequestPath}indicators/{$Page.indicatorSetName}/{NAME}.html">
266                                                                        <xsl:if test="NAME = $Page.communityName">
267                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
268                                                                        </xsl:if>
269                                                                        <xsl:value-of select="LABEL"/>
270                                                                </option>
271                                                        </xsl:for-each>
272                                                </select>
273                                        </td>
274                                </tr>
275                                </xsl:if>
276
277                                <tr>
278                                        <td><label for="dimensionValue"><xsl:value-of select="$Page.communityDimensionTitle"/>:</label></td>
279                                        <td>
280<!--
281                                                <xsl:if test="0 != string-length($Page.previousDimensionValue/TITLE)">
282                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.previousDimensionValue/text()[1])}')"
283                                                                title="show previous community value"
284                                                        >&lt;&lt; Show <xsl:value-of select="$Page.previousDimensionValue/TITLE"/></a>
285                                                </xsl:if>
286-->
287                                                <select name="dimensionValue" id="dimensionValue" 
288                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');"
289                                                >
290                                                        <xsl:for-each select="$Page.communityDimension/VALUES/VALUE[not(NOT_SELECTABLE_FLAG)]">
291                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
292                                                                <xsl:sort select="TITLE" order="ascending"/>
293                                                                <xsl:variable name="value" select="normalize-space(text()[1])"/>
294                                                                <xsl:variable name="href">
295                                                                        <xsl:if test="'facts' = $communityReportType">
296                                                                                <xsl:value-of select="concat($communityBaseRequestPath, 'facts/', $Page.communityName, '/', $value, '.html')"/>
297                                                                        </xsl:if>
298                                                                        <xsl:if test="'indicator' = $communityReportType">
299                                                                                <xsl:value-of select="concat($communityBaseRequestPath, 'indicator/', $Page.indicatorName, '/', $Page.communityName, '/', $value, '.html')"/>
300                                                                        </xsl:if>
301                                                                        <xsl:if test="'indicators' = $communityReportType">
302                                                                                <xsl:value-of select="concat($communityBaseRequestPath, 'indicators/', $Page.indicatorSetName, '/', $Page.communityName, '/', $value, '.html')"/>
303                                                                        </xsl:if>
304                                                                </xsl:variable>
305                                                                <option value="{$value}" href="{$href}">
306                                                                        <xsl:if test="$value = $Page.communityValue">
307                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
308                                                                        </xsl:if>
309                                                                        <xsl:value-of select="TITLE"/>
310                                                                </option>
311                                                        </xsl:for-each>
312                                                </select>
313<!--
314                                                <xsl:if test="0 != string-length($Page.nextDimensionValue/TITLE)">
315                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{ibis:getValueText($Page.nextDimensionValue/text()[1])}')"
316                                                                title="show next community value"
317                                                        >Show <xsl:value-of select="$Page.nextDimensionValue/TITLE"/> &gt;&gt;</a>
318                                                </xsl:if>
319-->
320                                        </td>
321                                </tr>
322
323                                <xsl:if test="(1 lt count($Page.communityIndicatorSet)) and ('facts' != $communityReportType)">
324                                <tr>
325                                        <td>
326                                                <label for="indicatorSetName">Set of Health Indicators:</label>
327                                        </td>
328                                        <td>
329                                                <select name="indicatorSetName" id="indicatorSetName" 
330                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');">
331                                                >
332<!--
333                                                        <option value="">All</option>
334-->
335                                                        <xsl:for-each select="$Page.communityIndicatorSet">
336                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
337                                                                <xsl:sort select="TITLE" order="ascending"/>
338                                                                <xsl:variable name="href">
339                                                                        <xsl:if test="'indicator' = $communityReportType">
340                                                                                <xsl:value-of select="concat($communityBaseRequestPath, 'indicator/', NAME, '/', $Page.communityName, '/', $Page.communityValue, '.html')"/>
341                                                                        </xsl:if>
342                                                                        <xsl:if test="'indicators' = $communityReportType">
343                                                                                <xsl:value-of select="concat($communityBaseRequestPath, 'indicators/', NAME, '/', $Page.communityName, '/', $Page.communityValue, '.html')"/>
344                                                                        </xsl:if>
345                                                                </xsl:variable>
346                                                                <option value="{NAME}" href="{$href}">
347                                                                        <xsl:if test="NAME = $Page.indicatorSetName">
348                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
349                                                                        </xsl:if>
350                                                                        <xsl:value-of select="TITLE"/>
351                                                                </option>
352                                                        </xsl:for-each>
353                                                </select>
354                                        </td>
355                                        <td>
356                                                <xsl:call-template name="Help.popup">
357                                                        <xsl:with-param name="content" select="$Page.indicatorSetHelpContent"/>
358                                                </xsl:call-template>
359                                        </td>
360                                </tr>
361                        </xsl:if>
362
363<!-- GARTH TODO: turned off until quick facts can be better defined
364                        <xsl:if test="('facts' != $communityReportType) and exists($Page.communityProfile/FACTS_PAGE_FLAG)">
365                                <tr>
366                                        <td><label><xsl:value-of select="$Page.communityDimensionTitle"/> Information:</label></td>
367                                        <td>
368                                                <a title="Show this communities quick facts page."
369                                                        href="{$communityBaseRequestPath}facts/{$Page.communityName}/{$Page.communityValue}.html"
370                                                        ><xsl:value-of select="$Page.communityDimensionValue/TITLE"/>'s Quick Facts</a>
371                                        </td>
372                                </tr>
373                        </xsl:if>
374-->
375                        </table>
376                </div>
377
378        </xsl:template>
379
380</xsl:stylesheet>
381<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.