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

Last change on this file since 22751 was 22407, checked in by GarthBraithwaite_STG, 6 months ago

view - qm ds and di fixes. ContentContainer? title level to headingLevel to better match use. Fixed SORT_ORDER typo. Removed additionalClasses" select="'Text'.

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