source: main/branches/2.1/src/main/webapps/ibisph-view/xslt/html/SelectionTree.xslt @ 3663

Last change on this file since 3663 was 3663, checked in by Garth Braithwaite, 10 years ago

java and view webapp - commit that has most of model map. committing before ripping out some code and cleaning up more model maps.

File size: 7.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="2.0" 
3        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
4        xmlns:ibis="http://www.ibisph.org"
5
6        exclude-result-prefixes="ibis"
7>
8
9        <ibis:doc>
10                <name>html/SelectionTree</name>
11                <summary>templates that transform a SELECTIONS/SELECTION type structure
12                        into an expandable selection tree HTML definition.  This tree's
13                        selection structure can be controlled if a userAuthorities struct
14                        is supplied to the template.  If the SELECTION has an AUTHORITY
15                        then a matching userAuthorities/AUTHORITY is required for the
16                        selection to be included in the output.
17                </summary>
18                <description>
19                        USAGE NOTE: These templates can build the approp HTML structure but
20                        to make the HTML exaandable and collapsable the following are required:
21                        1) Javascript is needed.  include this file: src='js/ShowHideBlockControl.js'
22                        2) Define this vairable exactly like this:
23                                var treeControl = new ShowHideBlockControl('control', 'Open', 'container');
24                        3) The tree container element MUST have an 'ExpandableTree' css class.  This
25                                is not an issue if you use the SelectionTree.expandableTree template.
26                        4) The 'ExpandableTree.css' definitions are needed - so include as approp.
27                </description>
28
29                <author>Garth Braithwaite</author>
30                <company>Software Technology Group/CDC/Utah Department of Health</company>
31        </ibis:doc>
32
33
34        <!-- SOURCE:
35                <SELECTIONS>
36                        <TITLE>Select from this list to query births from 1989 and later by county and health district. For small areas and race parameters, use Advanced Selection below.</TITLE>
37                        <SELECTION>
38                                <TITLE>Count, Birth and Fertility Rates</TITLE>
39                                <DESCRIPTION>Birth measures that use population data in the denominator by county and health district</DESCRIPTION>
40
41                                <SELECTIONS>
42                                        <SELECTION>
43                                                <TITLE>Count</TITLE>
44                                                <LOCAL_URL>birth/BirthBirthCnty/Count.html</LOCAL_URL>
45                                                <DESCRIPTION>Count of all live births in a given population and time period</DESCRIPTION>
46                                                <ibis:include href="help/BirthCount.xml"/>
47
48                                                [<AUTHORITIES>
49                                                        <AUTHORITY>someAuthValue</AUTHORITY>
50                                                        [<AUTHORITY>anotherAuthValue</AUTHORITY>]
51                                                </AUTHORITIES>]
52                                        </SELECTION>
53
54                                        <SELECTION>
55                                                <SELECTIONS>
56                                                        ...
57
58                OUTPUT:
59                <div class="Item [End]"> (item container, provides left most border)  SELECTION
60                        <span class="Icon Missing"/>  (icon - adjust left)
61                                <div class="Title">Missing Indicator or Folder</div>  (padding left so misses icon)
62                        -or-
63                                <a class="Folder [Open]" id="control#.#.#" href="tree.toggleExpandCollapse('#.#.#')">  SELECTIONS
64                                        <span class="Icon"/>
65                                        <div class="Title">    (adds left border for open folders which are script enabled)
66                                                Title (balance of left padding)
67                                        </div>
68                                </a>
69                                <div class="Container" id="container#.#.#">  (indenturing of sub items)
70                                        RECURSE ITEMS...
71                                        <div class="Item"...
72        -->
73
74        <xsl:template name="SelectionTree.expandableTree"
75                ibis:doc="container and kick off template for a selections ExpandableTree strut."
76        >
77                <xsl:param name="title"/>
78                <xsl:param name="description"/>
79                <xsl:param name="selections"/>
80                <xsl:param name="parentID" select="position()"/>
81                <xsl:param name="userAuthorities"/>
82
83                <div class="ExpandableTree">
84                        <xsl:if test="exists($title)">
85                                <h2 title="{if(string-length($description) = 0)then $title else $description}"><span class="Icon"/><xsl:value-of select="$title"/></h2>
86                        </xsl:if>
87                        <xsl:apply-templates select="$selections" mode="SelectionTree">
88                                <xsl:with-param name="parentID" select="$parentID"/>
89                                <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
90                        </xsl:apply-templates>
91                </div>
92        </xsl:template>
93
94
95
96        <xsl:template match="SELECTIONS" mode="SelectionTree" 
97                ibis:doc="Main SELECTIONS element driver template which is recusively called
98                        and calls the processIndexItem template to build the approriate HTML.
99                        USAGE NOTE: This template code can build the approp HTML structure but
100                        to make the HTML exaandable and collapsable the following are required:
101                        1) Javascript is needed.  include this file: src='js/ShowHideBlockControl.js'
102                        2) Define this vairable exactly like this:
103                                var treeControl = new ShowHideBlockControl('control', 'Open', 'container');
104                        3) The tree container element MUST have an 'ExpandableTree' css class.
105                        4) The 'ExpandableTree.css' definitions are needed - so include as approp.
106                "
107        >
108                <xsl:param name="parentID"/>
109                <xsl:param name="userAuthorities"/>
110
111<xsl:message select="concat('Selection Tree - userAuthorities:', $userAuthorities)"/>
112
113                <xsl:for-each select="SELECTION[ not(exists(.//AUTHORITIES)) or (.//AUTHORITIES/AUTHORITY = $userAuthorities/AUTHORITIES/AUTHORITY) ]">
114                        <div class="Item{if(position()=last()) then ' End' else ''}">
115                                <xsl:apply-templates select="." mode="SelectionTree">
116                                        <xsl:with-param name="id" select="concat($parentID, '.', position())"/>
117                                        <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
118                                </xsl:apply-templates>
119                        </div>
120                </xsl:for-each>
121        </xsl:template>
122
123
124
125        <xsl:template match="SELECTIONS/SELECTION" mode="SelectionTree" 
126                ibis:doc="Creates the appropriate HTML clickable sub SELECTION tree type
127                        elements or the end node 'a' selection element."
128        >
129                <xsl:param name="id"/>
130                <xsl:param name="userAuthorities"/>
131
132                <xsl:choose>
133                        <xsl:when test="exists(HELP)">
134                                <xsl:apply-templates select="HELP" mode="Page.helpButton"/>
135                        </xsl:when>
136
137                        <xsl:when test="string-length(DESCRIPTION) &gt; 40 ">
138                                <xsl:apply-templates select="HELP" mode="Page.helpButton"/>
139                        </xsl:when>
140                </xsl:choose>
141
142                <!-- If module and configuration name specified - then link to the query builder
143                        page.  Else if One or the other then do the broken link.  Else it's an
144                        intermediate tree step.  Build the container and process sub selections.
145                -->
146                <xsl:choose>
147
148                        <xsl:when test="exists(SELECTIONS)">
149                                <a class="Folder" title="Toggle the folder to show/hide the selections.">
150                                        <xsl:attribute name="id"   select="concat('control', $id)"/>
151                                        <xsl:attribute name="name" select="concat('control', $id)"/>
152                                        <xsl:attribute name="href">javascript:treeControl.toggle('<xsl:value-of select="$id"/>')</xsl:attribute>
153                                        <span class="Icon"/>
154                                        <div class="Title"><xsl:value-of select="TITLE"/></div>
155                                </a>
156
157                                <!-- recurse the items to process the children -->
158                                <div id="container{$id}" class="Container">
159                                        <xsl:apply-templates select="SELECTIONS" mode="SelectionTree">
160                                                <xsl:with-param name="parentID" select="$id"/>
161                                                <xsl:with-param name="userAuthorities" select="$userAuthorities"/>
162                                        </xsl:apply-templates>
163                                </div>
164                        </xsl:when>
165
166                        <xsl:when test="exists(LOCAL_URL) or exists(URL)">
167                                <xsl:if test="current()[ not(exists(AUTHORITIES)) or (AUTHORITIES/AUTHORITY = $userAuthorities/AUTHORITIES/AUTHORITY) ]">
168                                        <a  href ="{if(exists(LOCAL_URL)) then concat($ibis.urlPrefix, LOCAL_URL) else URL}"
169                                                title="{if(string-length(DESCRIPTION) &lt; 41) then DESCRIPTION else 'Go to page'}"
170                                                class="Document"
171                                        >
172                                                <span class="Icon"/>
173                                                <div class="Title"><xsl:value-of select="TITLE"/></div>
174                                        </a>
175                                </xsl:if>
176                        </xsl:when>
177
178                        <xsl:otherwise>
179                                <span class="Icon"/>
180                                <div class="Title" title="Definition is incomplete."><xsl:value-of select="TITLE"/></div>
181                        </xsl:otherwise>
182                </xsl:choose>
183
184        </xsl:template>
185
186</xsl:stylesheet>
187<!-- ============================= End of File ============================= -->
188
Note: See TracBrowser for help on using the repository browser.