source: main/trunk/ibisph-view/src/main/webapp/xslt/html/query/module/builder/Builder.xslt @ 19879

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

view - footer updates. text sections limited to 700px. Page content formatting and changes. Added goto submit for qm result. Fixed top margin for chart and maps. Limited MM css video to 400px. Changed org unit to authoring. Kendo template for table index page to change search placeholder to filter.

File size: 20.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
10        <ibis:doc>
11                <name>html/query/module/builder/Builder</name>
12                <summary>Core query module builder templates</summary>
13                <description>
14                        This file exists simply to lessen the size of the Page.xslt file. 
15                        It simply contains the "Page" type templates that would have been
16                        put into Page.xslt but it became too large.
17                </description>
18        </ibis:doc>
19
20        <!-- ~~~~~~~~~~~~~~~~~~~~~~~ PARAMS / VARIABLES ~~~~~~~~~~~~~~~~~~~~~~~~ -->
21        <xsl:param name="Builder.postURL" 
22                select="concat($ibis.contextPath, 'query/submit/', /QUERY_MODULE/REQUEST/CONFIGURATION_PATH, '.html')"
23                ibis:doc="Mechanism implemented so secure query can have a different result page."
24        />
25
26        <xsl:param name="Builder.groupBySelectionType" select="'group'"
27                ibis:doc="type of group by selection to be used.  valid values are group and table."
28        />
29
30        <xsl:param name="Builder.selectionMapName" select="'Selection'"
31                ibis:doc="selection map config name.  If set to 'None' then global no selection map."
32        />
33
34        <xsl:param name="Builder.usedDimensions" select="/QUERY_MODULE/DIMENSIONS/DIMENSION[
35                                (NAME=/QUERY_MODULE/CRITERIA//SELECTIONS/DIMENSION_NAME) or
36                                (NAME=/QUERY_MODULE/CRITERIA//SELECTIONS/NAME)
37                        ]
38                "
39                ibis:doc=""
40        />
41
42
43        <xsl:param name="categoryGroupByHelpContent">
44                Defines the data's primary grouping dimension.  The
45                primary grouping is required and also controls the
46                ordering of the result's data rows.  In MS-Excel
47                and other graphing packages this is typically referred
48                to as the the "dataset's category".  If viewing in a 2-d
49                table layout then this value/dimension is associated
50                with table's "row" values.  Others will refer to this
51                value as the first "cross by" or the first dimension.
52        </xsl:param>
53
54        <xsl:param name="seriesGroupByHelpContent">
55                Defines the 2nd field (or dimension) to be used to group
56                and aggregate values by.  MS-Excel chart users will
57                commonly refer to this as the dataset's "series"
58                field.  If viewing in a 2-d table layout then this
59                field is associated with data table's value columns.
60                Series group bys are optional.  Maps and some charts,
61                like the "Pie" chart, are currently not programmed to
62                handle datasets that have more than one group by e.g.
63                they only work with the primary category type group
64                by being specified.
65        </xsl:param>
66
67        <xsl:param name="otherGroupByHelpContent">
68                Defines a "fixed" dimension used to group and aggregate
69                the values by.  Fixed group by dimensions are needed
70                for a few select datasets that have at least 2 group
71                by type value fields or dimensions (with one being
72                required for the dataset's result).  If no other group
73                by is selected then this dimension is used as the
74                "series" the group by (as commonly known for MS-Excel
75                and other graphing packages).  If viewing in a 2-d table
76                layout then this dimension is associated with table's
77                "column" organization.  If another group by is specified
78                then this is simply the 3rd dimension group by or cross by.
79        </xsl:param>
80
81        <xsl:param name="chartHelpContent">
82                Defines the optional chart graphic to display.<br/><br/>
83
84                NOTE: Maps and some charts, like the "Pie" chart, are
85                currently not programmed to handle datasets that have
86                more than one group by e.g. they only work with the
87                primary category type group by being specified.  All
88                other charts will only work with a maximum of 2 group
89                bys e.g. if the fixed group by exists then the series
90                group by can NOT be used with charting or maps.
91        </xsl:param>
92
93        <xsl:param name="mapHelpContent">
94                Defines the optional map graphic to display.<br/><br/>
95
96                NOTE: Maps are only available when the category is
97                set to a geographical area and does not have a series
98                defined.
99        </xsl:param>
100
101        <xsl:param name="measureHelpContent">
102                Defines the primary measure value to display in the map and graph.
103        </xsl:param>
104
105       
106
107
108        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEMPLATES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
109        <xsl:template name="Builder.initContent" ibis:doc="Stubbed out template that
110                should be provided in a SiteSpecific.xslt.  This template should include
111                all the HTML and javascript for usage agreement, loading of cookie
112                preferences etc."
113        />
114
115
116        <xsl:template match="PARAMETERS/PARAMETER" mode="Builder.hiddenInput"
117                ibis:doc="Match template with a 'HIDDEN_PARAMETER' mode that
118                        creates a 'hidden' 'input' element with the appropriate name and
119                        value attributes."
120        >
121                <input type="hidden" name="{NAME}" value="{VALUE}"/>
122        </xsl:template>
123
124
125
126        <xsl:template name="Builder.displayControl"
127                ibis:doc="Creates the data 'grouping' step HTML selections which are 
128                        the next to the last step (step just before the submit step). 
129                        This includes a 2-d table or 3-d columns that lists the dimensions
130                        and provides some text as to what the measure is and options.   
131                        This also displays the graphic option."
132        >
133                <xsl:variable name="otherParameterGroupByDimensionName" select="/QUERY_MODULE//PARAMETERS/PARAMETER[NAME='_OtherGroupByDimensionName'][1]/VALUE"/>
134
135                <xsl:choose>
136                        <xsl:when test="(string-length($otherParameterGroupByDimensionName) = 0) and ($Builder.groupBySelectionType = 'table')">
137                                <xsl:call-template name="Builder.tableGroupByControl">
138                                </xsl:call-template>
139                        </xsl:when>
140
141                        <!-- standard display control -->
142                        <xsl:otherwise>
143                                <xsl:call-template name="Builder.listGroupByControl">
144                                </xsl:call-template>
145                        </xsl:otherwise>
146                </xsl:choose>
147        </xsl:template>
148
149
150
151        <xsl:template name="Builder.listGroupByControl"
152                ibis:doc="Creates the standard data 'grouping' step HTML selections."
153        >
154                <xsl:param name="otherParameterGroupByDimensionName" select="/QUERY_MODULE//PARAMETERS/PARAMETER[NAME='_OtherGroupByDimensionName'][1]/VALUE"/>
155
156                <table class="Info"
157                        summary="Visual group by selections that has a column group by
158                                selection list and a row group by selection list.
159                        "
160                        caption="Result row and column group by selections."
161                >
162                        <tr>
163                                <th scope="row" title="Primary grouping that specifies the sort order">
164                                        <label for="_CategoryGroupByDimensionName">Display By (category)</label>
165                                        <xsl:call-template name="Help.popup">
166                                                <xsl:with-param name="title">Primary group by field</xsl:with-param>
167                                                <xsl:with-param name="content" select="$categoryGroupByHelpContent"/>
168                                                <xsl:with-param name="additionalClasses" select="'Right'"/>
169                                                <xsl:with-param name="addWikiAttribute" select="false()"/>
170                                        </xsl:call-template>
171                                </th>
172                                <td title="select the dimension to sort the results by">
173                                        <xsl:call-template name="Builder.groupBySelection">
174                                                <xsl:with-param name="controlName"   select="'_CategoryGroupByDimensionName'"/>
175                                                <xsl:with-param name="selectedValue" select="/QUERY_MODULE/REQUEST/SELECTED_GROUP_BY/CATEGORY_DIMENSION_NAME"/>
176                                                <xsl:with-param name="noneFlag"      select="'n'"/>
177                                        </xsl:call-template>
178                                </td>
179                        </tr>
180
181                        <xsl:if test="(string-length($otherParameterGroupByDimensionName) != 0)">
182                        <tr>
183                                <th scope="row" title="Fixed, non selectable group by">
184                                        <label for="_OtherGroupByDimensionName">Fixed Group By</label>
185                                        <xsl:call-template name="Help.popup">
186                                                <xsl:with-param name="title">Fixed group by field</xsl:with-param>
187                                                <xsl:with-param name="content" select="$otherGroupByHelpContent"/>
188                                                <xsl:with-param name="additionalClasses" select="'Right'"/>
189                                                <xsl:with-param name="addWikiAttribute" select="false()"/>
190                                        </xsl:call-template>
191                                </th>
192                                <td title="Primary, non selectable dimension to group the results by">
193                                        <xsl:call-template name="Builder.groupBySelection">
194                                                <xsl:with-param name="controlName"   select="'_OtherGroupByDimensionName'"/>
195                                                <xsl:with-param name="selectedValue" select="$otherParameterGroupByDimensionName"/>
196                                                <xsl:with-param name="noneFlag"      select="'n'"/>
197                                        </xsl:call-template>
198                                </td>
199                        </tr>
200                        </xsl:if>
201
202                        <tr>
203                                <th scope="row" title="Group by">
204                                        <label for="_SeriesGroupByDimensionName">Group By (series)</label>
205                                        <xsl:call-template name="Help.popup">
206                                                <xsl:with-param name="title">Optional secondary group by field</xsl:with-param>
207                                                <xsl:with-param name="content" select="$seriesGroupByHelpContent"/>
208                                                <xsl:with-param name="additionalClasses" select="'Right'"/>
209                                                <xsl:with-param name="addWikiAttribute" select="false()"/>
210                                </xsl:call-template>
211                                </th>
212                                <td title="select the dimension to group the results by">
213                                        <xsl:call-template name="Builder.groupBySelection">
214                                                <xsl:with-param name="controlName"   select="'_SeriesGroupByDimensionName'"/>
215                                                <xsl:with-param name="selectedValue" select="/QUERY_MODULE/REQUEST/SELECTED_GROUP_BY/SERIES_DIMENSION_NAME"/>
216                                                <xsl:with-param name="noneFlag"      select="'y'"/>
217                                        </xsl:call-template>
218                                </td>
219                        </tr>
220
221                        <xsl:if test="0 != count($Page.charts)">
222                        <tr>
223                                <th scope="row" title="Available charts">
224                                        <label for="chartName">Chart</label>
225                                        <xsl:call-template name="Help.popup">
226                                                <xsl:with-param name="title">Optional chart graph</xsl:with-param>
227                                                <xsl:with-param name="content" select="$chartHelpContent"/>
228                                                <xsl:with-param name="additionalClasses" select="'Right'"/>
229                                                <xsl:with-param name="addWikiAttribute" select="false()"/>
230                                </xsl:call-template>
231                                </th>
232                                <td title="select the chart visualization to display the results with">
233                                        <xsl:call-template name="Builder.chartSelections"/>
234                                </td>
235                        </tr>
236                        </xsl:if>
237
238                        <xsl:if test="0 != count($Page.maps)">
239                        <tr>
240                                <th scope="row" title="Available maps">
241                                        <label for="mapName">Map</label>
242                                        <xsl:call-template name="Help.popup">
243                                                <xsl:with-param name="title">Optional map graph</xsl:with-param>
244                                                <xsl:with-param name="content" select="$mapHelpContent"/>
245                                                <xsl:with-param name="additionalClasses" select="'Right'"/>
246                                                <xsl:with-param name="addWikiAttribute" select="false()"/>
247                                </xsl:call-template>
248                                </th>
249                                <td title="select the map visualization to display the results with">
250                                        <xsl:call-template name="Builder.mapSelections"/>
251                                </td>
252                        </tr>
253                        </xsl:if>
254
255                </table>
256        </xsl:template>
257
258
259        <xsl:template name="Builder.tableGroupByControl"
260                ibis:doc="Creates the data 'grouping' step HTML selections which are 
261                        the next to the last step (step just before the submit step). 
262                        This includes a 2-d table or 3-d columns that lists the dimensions
263                        and provides some text as to what the measure is and options.   
264                        This also displays the graphic option.
265
266                        NOTE: thead, tfoot, tbody intentionally left out so tablesorter
267                        would not be implemented on this table.
268                "
269        >
270                <h3 style="padding-bottom:5px;">
271                        <xsl:call-template name="Help.popup">
272                                <xsl:with-param name="title">How to Tabulate and Display Data Values</xsl:with-param>
273                                <xsl:with-param name="content">
274                                        Use the drop down list options below to specify how to display
275                                        the numerical data values on the query results page.  If both
276                                        a Row Values Grouped By and a Column Values Grouped By are
277                                        specified, then a two dimensional table will be presented in
278                                        the query results.  Regardless of what is selected, a standard
279                                        data list table will be presented as well as meta data that
280                                        describes the data sources, data issues, and any data notes.
281                                        Select the Chart Graphic Type option below if you want a chart
282                                        graphic to be shown.
283                                </xsl:with-param>
284                                <xsl:with-param name="additionalClasses" select="'Right'"/>
285                        </xsl:call-template>
286                        Specify how to display the numerical data values.
287                </h3>
288
289                <table class="Info" summary="Visual group by selections that has a column
290                        group by selection list and a row group by selection list."
291                        caption="Result row and column group by selections."
292                >
293                        <tr>
294                                <th scope="col" title="blank formatting"></th>
295                                <th scope="col" title="Sets a second dimension for the data values to be summed/grouped/tabulated by and specifies that a 2-d type table be produced on the output page.">
296                                        <label for="_SeriesGroupByDimensionName">Column Values Grouped By:</label><br/>
297                                        <xsl:call-template name="Builder.groupBySelection">
298                                                <xsl:with-param name="controlName"   select="'_SeriesGroupByDimensionName'"/>
299                                                <xsl:with-param name="selectedValue" select="/QUERY_MODULE/REQUEST/SELECTED_GROUP_BY/SERIES_DIMENSION_NAME"/>
300                                                <xsl:with-param name="noneFlag"      select="'y'"/>
301                                        </xsl:call-template>
302                                </th>
303                        </tr>
304
305                        <tr><th scope="col" title="blank row for formatting">&#160;</th><td></td></tr>
306                        <tr>
307                                <th scope="col" title="How the row data will be grouped/summed/tabulated by and displayed by.">
308                                        <label for="_CategoryGroupByDimensionName">Row Values Grouped By:</label><br/>
309                                        <xsl:call-template name="Builder.groupBySelection">
310                                                <xsl:with-param name="controlName"   select="'_CategoryGroupByDimensionName'"/>
311                                                <xsl:with-param name="selectedValue" select="/QUERY_MODULE/REQUEST/SELECTED_GROUP_BY/CATEGORY_DIMENSION_NAME"/>
312                                                <xsl:with-param name="noneFlag"      select="'n'"/>
313                                        </xsl:call-template>
314                                </th>
315                                <td style="     vertical-align: middle; text-align: center" title="{$Page.configuration/DESCRIPTION} (these values will be grouped/tabulated according to the selected Row and Column value selections)">
316                                        <xsl:value-of select="$Page.configuration/TITLE"/> data values
317                                </td>
318                        </tr>
319                        <tr><th scope="row" title="blank row for formatting">&#160;</th><td></td></tr>
320                </table><br/>
321
322                <xsl:if test="not(exists($Page.configuration/CRITERIA/EXCLUDE/CHART_NAMES/ALL_FLAG))">
323                        <label for="chartName"><h3>Chart Graphic Type:</h3></label>
324                        <xsl:call-template name="Builder.chartSelections"/>
325                        <br/>
326                </xsl:if>
327        </xsl:template>
328
329
330        <xsl:template name="Builder.groupBySelection" ibis:doc="internal template to 
331                localize handling of select lists and parameter title overrides."
332        >
333                <xsl:param name="controlName"   ibis:doc="name of the HTML select element"/>
334                <xsl:param name="selectedValue" ibis:doc="default value to be selected in the list.  If noneFlag and nothing specified then none is the default else first item in list"/>
335                <xsl:param name="noneFlag"      ibis:doc="optional parameter that if x,y,t then a None value will be added to the list."/>
336<!-- GARTH TODO: remove
337<xsl:message select="concat('~~~~~~Builder.usedDimensions, count:', count($Builder.usedDimensions))"/>
338<xsl:message select="$Builder.usedDimensions/./NAME"/>
339<xsl:message select="$Builder.usedDimensions/.[not(exists(PROXY_DIMENSION_NAME)) ]/NAME"/>
340<xsl:message select="concat($Builder.usedDimensions/DIMENSION/NAME, ' - ', $Builder.usedDimensions/DIMENSION/GEOGRAPHY_FLAG)"/>
341-->
342
343                <xsl:variable name="groupByDimensionParameter" select="/QUERY_MODULE//PARAMETERS/PARAMETER[NAME=$controlName][1]"/>
344                <select name="{$controlName}" id="{$controlName}" onchange="displayOptionsChangeHandler()" title="Group results by {$controlName}">
345                        <xsl:choose>
346                                <xsl:when test="0 != string-length($groupByDimensionParameter/NAME)">
347                                        <xsl:variable name="groupByDimension" select="$Builder.usedDimensions/.[NAME=$groupByDimensionParameter/VALUE]"/>
348                                        <option value="{$groupByDimension/NAME}" selected="selected">
349                                                <xsl:value-of select="if(string-length($groupByDimension/TITLE) != 0)then $groupByDimension/TITLE else 'N/A'"/>
350                                        </option>
351                                </xsl:when>
352
353                                <xsl:otherwise>
354                                        <xsl:if test="ibis:isFirstLetter_T_or_Y_or_X($noneFlag)">
355                                                <option value="">
356                                                        <xsl:if test="string-length($selectedValue) = 0">
357                                                                <xsl:attribute name="selected" select="'selected'"/>
358                                                        </xsl:if>
359                                                        None
360                                                </option>
361                                        </xsl:if>
362                                        <xsl:apply-templates select="$Builder.usedDimensions/.[not(exists(PROXY_DIMENSION_NAME)) ]" mode="Builder.groupByOption">
363                                                <xsl:with-param name="selectedValue" select="$selectedValue"/>
364                                        </xsl:apply-templates>
365                                </xsl:otherwise>
366                        </xsl:choose>
367                </select>
368        </xsl:template>
369
370        <xsl:template match="DIMENSION" mode="Builder.groupByOption"
371                ibis:doc="DIMENSION match template with an 'OPTION' mode that creates an
372                        option list HTML 'option' selection element for the display step."
373        >
374                <xsl:param name="selectedValue" ibis:doc="default value to be selected in the list."/>
375
376                <option value="{NAME}">
377                        <xsl:if test="NAME=$selectedValue"><xsl:attribute name="selected" select="'selected'"/></xsl:if>
378                        <xsl:if test="0 != string-length(GEOGRAPHY_FLAG)"><xsl:attribute name="GeographyFlag" select="'true'"/></xsl:if>
379                        <xsl:value-of select="TITLE"/>
380                </option>
381        </xsl:template>
382
383
384        <xsl:template name="Builder.chartSelections"
385                ibis:doc="Provides the chart graph selection options.  This allows other
386                        adopters the ability to put in their own controls into the SiteSpecific
387                        XSLT for consistant look and feel.  The Java controller handles setting
388                        the RESULT/CHART_NAME if NO_GRAPHIC_SELECTION_FLAG is present and a
389                        DEFAULT_CHART_NAME is specified.
390                "
391        >
392                <xsl:param name="chartName" select="/QUERY_MODULE/REQUEST/CHART_NAME"/>
393                <select name="_ChartName" id="chartName" onchange="displayOptionsChangeHandler()" title="Selects the chart to be displayed on the results page.">
394                        <xsl:for-each select="$Page.charts">
395                                <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
396                                <option value="{NAME}">
397                                        <xsl:if test="NAME=$chartName">
398                                                <xsl:attribute name="selected" select="'selected'"/>
399                                        </xsl:if>
400                                        <xsl:value-of select="TITLE"/>
401                                </option>
402                        </xsl:for-each>
403                </select>
404        </xsl:template>
405
406
407        <xsl:template name="Builder.mapSelections"
408                ibis:doc="Provides the map graph selection options.  This allows other
409                        adopters the ability to put in their own controls into the SiteSpecific
410                        XSLT for consistant look and feel.  The Java controller handles setting
411                        the RESULT/MAP_NAME if NO_GRAPHIC_SELECTION_FLAG is present and a
412                        DEFAULT_MAP_NAME is specified.
413                "
414        >
415                <xsl:param name="mapName" select="/QUERY_MODULE/REQUEST/MAP_NAME"/>
416                <xsl:param name="show"    select="false()"/>
417<!-- GARTH TODO: remove
418<xsl:message select="$Page.configuration/CRITERIA/EXCLUDE/MAP_NAMES/MAP_NAME"/>
419<xsl:message select="$Page.maps/MAP[not(exists(NAME = $Page.configuration/CRITERIA/EXCLUDE/MAP_NAMES/MAP_NAME))]"/>
420<xsl:message select="$Page.configuration"/>
421-->
422
423                <select name="_MapName" id="mapName" onchange="displayOptionsChangeHandler()" title="Selects the map to be displayed on the results page.">
424                        <xsl:for-each select="$Page.maps">
425                                <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
426                                <option value="{NAME}">
427                                        <xsl:if test="NAME=$mapName">
428                                                <xsl:attribute name="selected" select="'selected'"/>
429                                        </xsl:if>
430                                        <xsl:value-of select="TITLE"/>
431                                </option>
432                        </xsl:for-each>
433                </select>
434        </xsl:template>
435
436        <xsl:template name="Builder.submitControl"
437                ibis:doc="Provides the submit query control buttons.  This allows other
438                        adopters the ability to put in their own controls into the SiteSpecific
439                        XSLT for consistent look and feel."
440        >
441                <button type="button" accesskey="S" id="submitButton" title="Submit the query and display the result page">
442                        <xsl:attribute name="onclick" select="
443                                if(exists($Page.configuration/CRITERIA/SUBMIT_JAVASCRIPT_FUNCTION_CALL))
444                                        then $Page.configuration/CRITERIA/SUBMIT_JAVASCRIPT_FUNCTION_CALL
445                                        else 'submitQuery()'
446                                "/>
447                        Submit
448                        <xsl:call-template name="Help.content">
449                                <xsl:with-param name="help">
450                                        <TEXT>
451                                                This submits your query definition.  Once submitted
452                                                the data will be processed and the result page will
453                                                be presented.  From the result page you can return
454                                                to this page and refineany data filtering criteria
455                                                and data grouping selections.
456                                        </TEXT>
457                                </xsl:with-param>
458                        </xsl:call-template>
459                </button>
460                <button type="button" accesskey="R" onclick="resetForm()" title="Reset the page to its original state">Reset</button>
461        </xsl:template>
462
463</xsl:stylesheet>
464<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.