source: main/adopters/hi/trunk/src/main/webapps/hhdw-view/xslt/html/query/module/result/Page.xslt @ 24954

Last change on this file since 24954 was 24954, checked in by GarthBraithwaite_STG, 5 months ago

hi - result page ds and topic text update as per Katherine.

File size: 19.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:xs  ="http://www.w3.org/2001/XMLSchema"
6        xmlns:ibis="http://www.ibisph.org"
7
8        exclude-result-prefixes="ibis xs xsl"
9>
10        <xsl:import href="../../../../xml/Interactive.xslt"/>
11        <xsl:import href="../../../user/login/Login.xslt"/>
12        <xsl:import href="../../definition/ApplyCriteria.xslt"/>
13        <xsl:import href="../../definition/QueryDefinition.xslt"/>
14        <xsl:import href="../Page.xslt"/>
15        <xsl:import href="DataViz.xslt"/>
16
17
18        <ibis:doc>
19                <name>html/query/result/Page</name>
20                <summary>Default core code that produces the interactive query result page</summary>
21                <description>
22                        Contains the templates that create the interactive data table, chart 
23                        and map module query results page.  This page differs from the basic
24                        parent query result page code in that it uses the Kendo and Leaflet     
25                        javascript to display interactive charts, data tables, and maps.
26                </description>
27        </ibis:doc>
28
29       
30        <xsl:param name="QueryModule.configurationTitle" select="$QueryModule.configuration/TITLE"/>
31        <xsl:param name="Page.pageTitle" ibis:doc="Page's title text which is based on the '/QUERY_MODULE/TITLE' element.">
32                Query Result - <xsl:value-of select="/QUERY_MODULE/TITLE"/> - <xsl:value-of select="$QueryModule.configurationTitle"/>
33        </xsl:param>
34        <xsl:param name="Page.contentTitle" ibis:doc="Page's content title text which is based on the '/QUERY_MODULE/TITLE' element.">
35                Query Results for <xsl:value-of select="/QUERY_MODULE/TITLE"/> - <xsl:value-of select="$QueryModule.configurationTitle"/>
36        </xsl:param>
37
38
39        <!-- bread crumbs and content options -->
40        <xsl:param name="Page.builderURL" select="concat($Page.queryBaseRequestPath, 'builder/', $QueryModule.request/CONFIGURATION_PATH, '.html')"/>
41        <xsl:param name="Page.resultURL"  select="concat($Page.queryBaseRequestPath, 'result/',  $QueryModule.request/CONFIGURATION_PATH, '.html')"/>
42
43
44        <xsl:param name="Page.requestErrorMessageContent">
45                <div class="Error">
46                        <h2>Error: <xsl:value-of select="$QueryModule.request/ERROR/TITLE"/></h2>
47
48                        <p>
49                        There is a problem getting the specified query data from the
50                        database.  This error could be a temporary issue either with
51                        the servers or the network.  Please wait a few minutes and try
52                        your query again.  If the problem persists, please report this
53                        problem to us (<a href="about/ContactInformation.html">contact information</a>).
54                        The nature of the problem is shown below and will be helpful
55                        when reporting the problem.  We apologize for any inconveniences
56                        and appreciate your patience and help.
57                        </p>
58
59                        <div class="Note" title="{$QueryModule.request/ERROR/TITLE}">
60                                <h3>Error Details:</h3>
61                                <xsl:value-of select="$QueryModule.request/ERROR/DESCRIPTION"/>
62                        </div>
63                </div>
64        </xsl:param>
65
66        <xsl:param name="Page.resultErrorMessageContent">
67                <div class="Error">
68                        <h2>SAS/CGI System Error:</h2>
69                        <p>
70                        There is a problem getting the specified query data from the
71                        database.  Please report this problem to us (<a href="about/ContactInformation.html">contact information</a>).
72                        The nature of the problem is shown below and will be helpful
73                        when reporting the problem.  We apologize for any inconveniences
74                        and appreciate your patience and help.
75                        </p>
76
77                        <div class="Note" title="{$QueryModule.request/ERROR/TITLE}">
78                                <h3>More Error Detail:</h3>
79                                <xsl:value-of select="$QueryModule.request/ERROR"/>
80                        </div>
81                </div>
82        </xsl:param>
83
84        <xsl:param name="Page.pleaseWaitMessageContent">
85                <div class="PleaseWait">
86                        <h2>Please wait.  Processing Dataset Request.</h2>
87                        <p>
88                        The system is processing your data request.  Your browser should
89                        be actively trying to load a page.  This is typically indicated by
90                        your browser showing something spinning the browser tab.  If this
91                        is not the case click on this <a href="{$Page.resultURL}" title="Resubmit query">get
92                        query results</a> link.  Otherwise be patient as your data will be
93                        displayed as soon as they are available.
94                        </p>
95                </div>
96        </xsl:param>
97
98        <xsl:param name="Page.resultNoDataMessageContent">
99                <div class="Note">
100                        <h2>Sorry, no data were returned for your query.</h2>
101                        <p>
102                        The filtering criteria was too specific or no data exists in
103                        the dataset.  If you feel that your query should have worked,
104                        please contact us and let us know about the problem. Otherwise,
105                        please go back and modify your query using less specific
106                        filtering criteria.
107                        </p>
108                </div>
109        </xsl:param>
110
111
112
113        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEMPLATES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
114        <xsl:template name="Page.specificHeadContent"
115                ibis:doc="If no query result element present then this page needs to
116                        issue a query result request which the controller will then build
117                        the query URL, call the Query app, and return to this page again
118                        but with a result which this page will then display.  This function
119                        used to be done with a confirmation page and separate controller but
120                        was combined 1/10/08."
121        >
122                <xsl:if test="not(exists($QueryModule.result)) and not(exists($QueryModule.request/ERROR))">
123                        <!-- 2021 FF has an issue with BASE element with relative URL when
124                                doing the refresh.  Using script works but doesn't show the
125                                wait screen.  Simple solution was to use a full explicit path.
126                                <script>window.location.href = "<xsl:value-of select="$Page.resultURL"/>";</script>
127                                <meta http-equiv="refresh" content="0;URL={$Page.resultURL}"/>
128
129                                This goes away when/if builder and result are combined.
130                        -->
131                        <meta http-equiv="refresh" content="0;url={ibis:getRequestURL($Page.resultURL)}"/>
132                </xsl:if>
133
134                <xsl:call-template name="Page.metaNoCacheControl"/>
135
136                <style>
137                        button, .Button, a.Button:visited
138                        {
139                                min-width: 180px;
140                        }
141                        section.WideBox
142                        {
143                                background-color: #333;
144                                width: 100vw;
145                                position: relative;
146                                left: calc(-50vw + 50%);
147                        }
148                        section.WideBox div.Container
149                        {
150                                display: flex;
151                                justify-content: center;
152                        }
153
154                        section.WideBox div.Container div.Left,
155                        section.WideBox div.Container div.Right
156                        {
157                                display: flex;
158                                flex-direction: column;
159                                margin: 2em 0 3em 0;
160                                max-width: 375px;
161                        }
162                        section.WideBox div.Container div.Center
163                        {
164                                margin: 2em 3em 3em 3em;
165                                border: 1px solid white;
166                        }
167                        section.WideBox div.Container div h4
168                        {
169                                margin: 0;
170                                color: #f8f8f8;
171                                font-size: 2em;
172                                text-transform: none;
173                        }
174                        #content section.WideBox div.Container div p
175                        {
176                                margin: 2em 0 1.5em 0;
177                                color: #d8d8d8;
178                        }
179                        section.WideBox div.Container div button
180                        {
181                                align-self: center;
182                                width: 200px;
183                                max-width: 200px;
184                        }
185                </style>
186
187        </xsl:template>
188
189
190        <xsl:template name="Page.contentBody" ibis:doc="Main interactive sections content template.">
191
192                <xsl:call-template name="Page.contentOptions"/>
193
194<!-- can include measure title if wanted
195QueryModule.measure
196-->
197                <h2>Query Criteria</h2>
198                <table id="userCriteria" class="Info"
199                        summary="The first column is a title of that type of selection with
200                                the next column showing a list of selected values.
201                        "
202                        caption="Result table that shows selected dimensions and group by selections."
203                >
204                        <xsl:call-template name="QueryModule.selectedDimensionsCriteriaTableRows">
205                                <xsl:with-param name="selectedDimensions" select="$QueryModule.queryModule//SECTION//SELECTED_DIMENSIONS"/>
206                                <xsl:with-param name="dimensions" select="$QueryModule.dimensions"/>
207                        </xsl:call-template>
208
209                        <xsl:call-template name="QueryModule.dataGroupedByTableRow">
210                                <xsl:with-param name="rowDimensionTitle"   select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$QueryModule.request/ACTUAL_GROUP_BY/CATEGORY_DIMENSION_NAME])"/>
211                                <xsl:with-param name="colDimensionTitle"   select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$QueryModule.request/ACTUAL_GROUP_BY/SERIES_DIMENSION_NAME])"/>
212                                <xsl:with-param name="otherDimensionTitle" select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$QueryModule.request/ACTUAL_GROUP_BY/OTHER_DIMENSION_NAME])"/>
213                        </xsl:call-template>
214                </table>
215
216<xsl:if test="$ApplyCriteria.isSet">
217                <h2>Current "Apply Query Definition"</h2>
218                <table id="applyCriteria" class="Info"
219                        summary="The first column is a title of that type of selection with
220                                the next column showing a list of selected values.
221                        "
222                        caption="Result table that shows selected dimensions and group by selections."
223                >
224                        <xsl:call-template name="QueryModule.selectedDimensionsCriteriaTableRows">
225                                <xsl:with-param name="selectedDimensions" select="$ApplyCriteria.queryDefinition//SELECTED_DIMENSIONS"/>
226                        </xsl:call-template>
227
228                        <xsl:call-template name="QueryModule.dataGroupedByTableRow">
229                                <xsl:with-param name="rowDimensionTitle"   select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$ApplyCriteria.queryDefinition/REQUEST/ACTUAL_GROUP_BY/CATEGORY_DIMENSION_NAME])"/>
230                                <xsl:with-param name="colDimensionTitle"   select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$ApplyCriteria.queryDefinition/REQUEST/ACTUAL_GROUP_BY/SERIES_DIMENSION_NAME])"/>
231                                <xsl:with-param name="otherDimensionTitle" select="ibis:getDimensionTitle($QueryModule.dimensions/DIMENSION[NAME=$ApplyCriteria.queryDefinition/REQUEST/ACTUAL_GROUP_BY/OTHER_DIMENSION_NAME])"/>
232                        </xsl:call-template>
233                        <xsl:call-template name="QueryModule.selectedVisualizationTableRow">
234                                <xsl:with-param name="request" select="$ApplyCriteria.queryDefinition/REQUEST"/>
235                        </xsl:call-template>
236                </table>
237</xsl:if>
238
239                <xsl:choose>
240                        <xsl:when test="exists($QueryModule.request/ERROR)">
241                                <xsl:copy-of select="$Page.requestErrorMessageContent"/>
242                        </xsl:when>
243
244                        <xsl:when test="exists($QueryModule.result/ERROR)">
245                                <xsl:copy-of select="$Page.resultErrorMessageContent"/>
246                        </xsl:when>
247
248                        <xsl:when test="not(exists($QueryModule.result))">
249                                <xsl:copy-of select="$Page.pleaseWaitMessageContent"/>
250                        </xsl:when>
251
252                        <xsl:when test="count($QueryModule.result/RECORDS/RECORD) = 0">
253                                <xsl:copy-of select="$Page.resultNoDataMessageContent"/>
254                        </xsl:when>
255
256                        <!-- If records, then display the data list table. -->
257                        <xsl:otherwise>
258                                <xsl:call-template name="Page.dataContent"/>
259                        </xsl:otherwise>
260                </xsl:choose>
261
262                <xsl:call-template name="Page.usageAgreementDialog"/>
263
264        </xsl:template>
265
266
267        <xsl:template name="Page.contentOptions">
268                <div class="ContentOptions">
269                        <h3><xsl:value-of select="'Query Result Page Options'"/></h3>
270
271                        <div class="Container Buttons">
272                                <button type="button" accesskey="B" id="modifyButton" 
273                                        onclick="location.href='{$Page.builderURL}'"
274                                >
275                                        Modify Query
276                                        <xsl:call-template name="Help.popup">
277                                                <xsl:with-param name="content" select="$Page.modifyQueryHelpContent"/>
278                                        </xsl:call-template>
279                                </button>
280
281                                <button type="button" accesskey="S" id="saveDefinition" onclick="saveQueryDefinition()">
282                                        Save Query Definition
283                                        <xsl:call-template name="Help.popup">
284                                                <xsl:with-param name="content" select="$Page.saveQueryDefinitionHelpContent"/>
285                                        </xsl:call-template>
286                                </button>
287
288                                <button type="button" accesskey="A" id="applyCriteria" 
289                                        onclick="openApplyCriteriaDialog();"
290                                >
291                                        Apply Query Definition
292                                        <xsl:call-template name="Help.popup">
293                                                <xsl:with-param name="content" select="$Page.applyCriteriaHelpContent"/>
294                                        </xsl:call-template>
295                                </button>
296
297                                <xsl:if test="exists($QueryModule.queryModule/DEVELOPMENT_FLAG)">
298                                        <button type="button" accesskey="L" id="defaultQueryButton" 
299                                                onclick="location.href='{$Page.resultURL}?Reload=x'"
300                                        >
301                                                Run Default Query
302                                                <xsl:call-template name="Help.popup">
303                                                        <xsl:with-param name="content" select="$Page.loadDefaultQueryHelpContent"/>
304                                                </xsl:call-template>
305                                        </button>
306
307                                        <button type="button" accesskey="X" id="viewXMLButton" 
308                                                onclick="location.href='query/configuration/{$QueryModule.request/CONFIGURATION_PATH}.xml'"
309                                        >
310                                                View Module XML
311                                        </button>
312
313                                        <xsl:if test="exists($QueryModule.request/QUERY_APPLICATION_URL) and ('post' != $QueryModule.queryModule/QUERY_APPLICATION_HTTP_REQUEST_TYPE)">
314                                        <button type="button" accesskey="Q" id="viewIBISQButton" 
315                                                onclick="location.href='{$QueryModule.request/QUERY_APPLICATION_URL}'"
316                                        >
317                                                Get IBISQ XML
318                                        </button>
319                                        </xsl:if>
320                                </xsl:if>
321
322                                <button type="button" accesskey="D" id="changeQueryDataset" 
323                                        onclick="location.href='{$QueryModule.queryModule/QUERY_CONFIGURATION_SELECTION/LOCAL_URL}'"
324                                >
325                                        Select New Indicator
326                                        <xsl:call-template name="Help.popup">
327                                                <xsl:with-param name="content" select="$Page.changeDatasetMeasureHelpContent"/>
328                                        </xsl:call-template>
329                                </button>
330<!--
331                                <button type="button" accesskey="S" id="selectNewDataSource"
332                                        onclick="location.href='/data-sources'"
333                                >
334                                        Go to Data Sources
335                                        <xsl:call-template name="Help.popup">
336                                                <xsl:with-param name="content" select="$Page.goDataSourceHelpContent"/>
337                                        </xsl:call-template>
338                                </button>
339-->
340                        </div>
341                </div>
342
343                <xsl:call-template name="ApplyCriteria.dialog"/>
344
345                <xsl:call-template name="QueryDefintion.editIdentityDialog">
346                        <xsl:with-param name="queryModule" select="$QueryModule.queryModule"/>
347                </xsl:call-template>
348
349                <xsl:call-template name="Login.dialog">
350                        <xsl:with-param name="overviewContent">
351                                <p>
352                                You are not logged in.  To save a query you must be logged in. 
353                                Enter your username / password to proceed.  Once successfully
354                                logged in you will be redirected back to this page where you
355                                can then save the query definition.
356                                </p>
357                        </xsl:with-param>
358                </xsl:call-template>
359
360        </xsl:template>
361
362
363        <xsl:template name="Page.dataContent" 
364                ibis:doc="Standard/basic map, chart, data table, and meta data.  This
365                        allows sub result type pages to Override this standard data content
366                        with different content.
367                "
368        >
369                <xsl:variable name="dataVizContainerIDPrefix" select="ibis:firstLetterLowerCase( replace($QueryModule.request/CONFIGURATION_PATH, '/', '_') )"/>
370                <xsl:variable name="dataVizObjectName"        select="concat($dataVizContainerIDPrefix, 'DataViz')"/>
371
372                <xsl:variable name="showMap"   select="ibis:DataViz.showMap($QueryModule.request/MAP_NAME)"/>
373                <xsl:variable name="showChart" select="ibis:DataViz.showChart($QueryModule.request/CHART_NAME)"/>
374
375                <xsl:if test="$showChart">
376                        <xsl:call-template name="ContentContainer.expandable">
377                                <xsl:with-param name="title" select="if('Line'=$QueryModule.request/CHART_NAME)then 'Trend' else 'Chart'"/>
378                                <xsl:with-param name="content">
379                                        <xsl:call-template name="DataViz.chartContainer">
380                                                <xsl:with-param name="containerID"   select="concat($dataVizContainerIDPrefix, '_chart')"/>
381                                                <xsl:with-param name="footerContent" select="$QueryModule.configuration/CHART_NARRATIVE"/>
382                                        </xsl:call-template>
383                                </xsl:with-param>
384                                <xsl:with-param name="show" select="true()"/>
385                                <xsl:with-param name="addWikiAttribute" select="false()"/>
386                        </xsl:call-template>
387                </xsl:if>
388
389                <xsl:call-template name="ContentContainer.expandable">
390                        <xsl:with-param name="title" select="'Data Table'"/>
391                        <xsl:with-param name="content">
392                                <xsl:call-template name="DataViz.gridContainer">
393                                        <xsl:with-param name="containerID"         select="concat($dataVizContainerIDPrefix, '_grid')"/>
394                                        <xsl:with-param name="valueAttributeNames" select="$QueryModule.valueAttributeNames"/>
395                                        <xsl:with-param name="valueAttributes"     select="$QueryModule.valueAttributes"/>
396                                </xsl:call-template>
397                        </xsl:with-param>
398                        <xsl:with-param name="show" select="true()"/>
399                        <xsl:with-param name="addWikiAttribute" select="false()"/>
400                </xsl:call-template>
401
402                <xsl:if test="$showMap">
403                        <xsl:call-template name="ContentContainer.expandable">
404                                <xsl:with-param name="title" select="'Map'"/>
405                                <xsl:with-param name="content">
406                                        <xsl:call-template name="DataViz.mapContainer">
407                                                <xsl:with-param name="containerID"   select="concat($dataVizContainerIDPrefix, '_map')"/>
408                                                <xsl:with-param name="footerContent" select="$QueryModule.configuration/MAP_NARRATIVE"/>
409                                        </xsl:call-template>
410                                </xsl:with-param>
411                                <xsl:with-param name="show" select="true()"/>
412                                <xsl:with-param name="addWikiAttribute" select="false()"/>
413                                <xsl:with-param name="description" select="'Choropleth/thematic map.'"/>
414                        </xsl:call-template>
415                </xsl:if>
416
417<section class="WideBox">
418        <div class="Container">
419                <div class="Left">
420                        <h4>Explore a different dataset</h4>
421                        <p>
422                                This is one data source available in the Hawai'i Health Data Warehouse.
423                                Click the button below to go to the page with all the data sources.
424                        </p>
425                        <button onclick="location.href='/data-sources'">Go to datasets</button>
426                </div>
427                <div class="Center"></div>
428                <div class="Right">
429                        <h4>Choose a different topic</h4>
430                        <p>
431                                This is one topic the Hawai'i Health Data Warehouse has available
432                                for you. Click the button below to go to the page with all the
433                                health topics.
434                        </p>
435                        <button onclick="location.href='/health-topics'">Select a different topic</button>
436                </div>
437        </div>
438</section>
439
440                <xsl:call-template name="ContentContainer.expandable">
441                        <xsl:with-param name="title" select="'Technical Notes'"/>
442                        <xsl:with-param name="content">
443                                <xsl:call-template name="QueryModule.dataNotes"/>
444                                <xsl:call-template name="QueryModule.dataSources"/>
445                                <xsl:call-template name="QueryModule.dataIssues"/>
446                        </xsl:with-param>
447                        <xsl:with-param name="show" select="true()"/>
448                </xsl:call-template>
449
450                <xsl:if test="$showMap">
451                        <xsl:call-template name="DataViz.choroplethMapJavaScript"/>
452                </xsl:if>
453                <script id="{$dataVizContainerIDPrefix}_script">
454                        <xsl:call-template name="DataViz.queryResultKendoLeafletDataVizObject">
455                                <xsl:with-param name="dataVizObjectName"        select="$dataVizObjectName"/>
456                                <xsl:with-param name="dataVizContainerIDPrefix" select="$dataVizContainerIDPrefix"/>
457
458                                <xsl:with-param name="queryModule"                      select="$QueryModule.queryModule"/>
459                                <xsl:with-param name="queryConfiguration"       select="$QueryModule.configuration"/>
460                                <xsl:with-param name="queryRequest"                     select="$QueryModule.request"/>
461                        </xsl:call-template>
462
463                        $(document).ready(function()
464                        {
465                                <xsl:value-of select="$dataVizObjectName"/>.init();
466                               
467                        });
468
469                        <xsl:if test="$showChart">
470                        $(window).resize(function () {
471                                <xsl:value-of select="$dataVizObjectName"/>.resizeKendoChart();
472                        });
473                        </xsl:if>
474                </script>
475        </xsl:template>
476
477
478        <xsl:template name="Page.contentFooter" ibis:doc="QM Result dates and owning program's contact info.">
479                <xsl:param name="queryModule" select="$QueryModule.queryModule"/>
480                <xsl:param name="orgUnitName" select="if(0 != string-length($queryModule/ORG_UNIT_NAME)) then $queryModule/ORG_UNIT_NAME else 'DEFAULT'"/>
481                <xsl:param name="orgUnit"     select="$Page.orgUnits//ORG_UNIT[NAME=$orgUnitName]"/>
482
483                <xsl:if test="string-length($orgUnit/TITLE) != 0">
484                        <footer>
485                                <div class="DataDates">
486                                        These data were queried on: <xsl:value-of select="$queryModule/REQUEST/FINISHED_DATE"/>
487                                        <xsl:if test="boolean($queryModule/IBISQ_QUERY_RESULT/DATASET/MODIFIED_DATE)">
488                                                <br/>
489                                                The dataset was last updated on:  <xsl:value-of select="$queryModule/IBISQ_QUERY_RESULT/DATASET/MODIFIED_DATE"/>
490                                        </xsl:if>
491                                </div>
492                                <div class="OrgUnit">
493                                        <xsl:value-of select="$orgUnit/TITLE"/>, <xsl:value-of select="$orgUnit/CONTACT_TEXT"/>
494                                        <xsl:if test="string-length($orgUnit/URL) != 0">
495                                                (<a href="{$orgUnit/URL}"><xsl:value-of select="$orgUnit/URL"/></a>)
496                                        </xsl:if>
497                                </div>
498                        </footer>
499                </xsl:if>
500        </xsl:template>
501
502</xsl:stylesheet>
503<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.