Changeset 19906 in main


Ignore:
Timestamp:
02/26/20 16:50:52 (5 weeks ago)
Author:
GarthBraithwaite_STG
Message:

view, java - removed cp index xslt and put common drop down content options into main cp page.xslt. Updated main CP ModelFromHTTPRequestPath to handle keeping existing selections and put quick facts html_content into that MM for now. Updated XMLLIb.getText to trim strings.

Location:
trunk
Files:
1 deleted
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/SiteSpecific.xml

    r19820 r19906  
    147147
    148148                                <!-- C O M M U N I T Y -->
    149                                 <entry key="/community/index/*.html"        value-ref="communityIndexController"/>
    150149                                <entry key="/community/indicators/**"       value-ref="communityIndicatorsReportController"/>
    151150                                <entry key="/community/indicator/**"        value-ref="communityIndicatorReportController"/>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/community.xml

    r18944 r19906  
    3535                        model for the CP pages.
    3636                </description>
     37                <property name="modelMapKey"     value="#{commonXMLModelMapKey.string}"/>
     38                <property name="getModelService" ref="commonXMLFilePathModelService"/>
    3739        </bean>
    3840
     
    5860        </bean>
    5961
    60         <bean id="communityIndexController" parent="communityCommonControllerProperties">
    61                 <property name="view" ref="communityIndexView"/>
    62         </bean>
    63 
    6462        <bean id="communityIndicatorsReportController" parent="communityCommonControllerProperties">
    6563                <property name="view" ref="communityIndicatorsReportView"/>
     
    7371                <property name="modelMapList">
    7472                        <list>
     73                                <ref bean="commonDimensionsModelMap"/>
    7574                                <ref bean="commonMeasuresModelMap"/>
    76                                 <ref bean="commonDimensionsModelMap"/>
    7775                                <ref bean="commonValueTypesModelMap"/>
    7876
    7977                                <ref bean="indicatorIndicatorSetsModelMap"/>
    8078                                <ref bean="indicatorIndicatorProfileFilePathModelMap"/>
     79                                <ref bean="indicatorPublishedIndicatorsFilePathModelMap"/>
     80
    8181                                <ref bean="communityControlFilePathModelMap"/>
    8282                                <ref bean="communitySelectionsToSessionModelMap"/>
    83                                 <bean class="org.ibisph.web.modelmap.ModelFromHTTPRequestPathSegments"
    84                                         parent="commonXMLServiceModelMapProperties"
    85                                 >
    86                                         <property name="modelFilePathAndNameTemplate">
    87                                                 <list>
    88                                                         <value>html_content/community/[2]/[3].xml</value>
    89                                                         <value>html_content/community/Introduction.xml</value>
    90                                                 </list>
    91                                         </property>
    92                                         <property name="filenameSuffix" value=""/>
    93                                         <property name="getModelService" ref="commonVerifiedXMLFilePathModelService"/>
    94                                 </bean>
    9583                        </list>
    9684                </property>
     
    10088
    10189        <!--  V I E W S  -->
    102         <bean id="communityIndexView" parent="commonXSLTTransformationView">
    103                 <property name="XSLTPathAndFilename" value="html/community/index/IndexPage.xslt"/>
    104         </bean>
    10590        <bean id="communityIndicatorsReportView" parent="commonXSLTTransformationView">
    10691                <property name="XSLTPathAndFilename" value="html/community/indicators/IndicatorsPage.xslt"/>
  • trunk/ibisph-view/src/main/webapp/css/ContentOptions.css

    r19902 r19906  
    3737{
    3838        margin-top:                     0.3em;
     39}
     40.ContentOptions table td select
     41{
     42        min-width:                      200px;
     43        width:                          100%;
    3944}
    4045
  • trunk/ibisph-view/src/main/webapp/css/Topic.css

    r19902 r19906  
    7777        background-image:       url("../image/icon/link-white.png");
    7878}
     79.Topic #content .Aside h5
     80{
     81        margin-top:                     1em;
     82}
    7983
    8084.Topic #content .Aside  section > *:not(h3)
  • trunk/ibisph-view/src/main/webapp/css/_general.css

    r19902 r19906  
    9595h5
    9696{
    97         margin-top:                     1em;
    9897        font-weight:            bold;
    9998}
  • trunk/ibisph-view/src/main/webapp/http_test.jsp

    r11789 r19906  
    154154                        <tr class="Title"><th colspan="2">Request Properties</th></tr>
    155155                        <tr class="Section"><th>Item</th><th>Value</th></tr>
     156                        <tr><th class="Section">Request URL</th>        <td class="Info"><%=request.getRequestURL()%> </td></tr>
     157                        <tr><th class="Section">Request URI</th>        <td class="Info"><%=request.getRequestURI()%> </td></tr>
    156158                        <tr><th class="Section">Context Path</th>       <td class="Info"><%=request.getContextPath()%> </td></tr>
     159                        <tr><th class="Section">Servlet Path</th>       <td class="Info"><%=request.getServletPath()%> </td></tr>
    157160                        <tr><th class="Section">Path Info</th>          <td class="Info"><%=request.getPathInfo()%> </td></tr>
    158                         <tr><th class="Section">Servlet Path</th>       <td class="Info"><%=request.getServletPath()%> </td></tr>
    159                         <tr><th class="Section">Request URI</th>        <td class="Info"><%=request.getRequestURI()%> </td></tr>
    160                         <tr><th class="Section">Request URL</th>        <td class="Info"><%=request.getRequestURL()%> </td></tr>
    161161                        <tr><th class="Section">Query Str</th>          <td class="Info"><%=request.getQueryString()%> </td></tr>
    162162                        <tr><th class="Section">Locale</th>                     <td class="Info"><%=request.getLocale()%> </td></tr>
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/Page.xslt

    r19890 r19906  
    183183                difference is clinically significant.
    184184        </xsl:param>
    185 
    186 
    187 <!-- NOT USED
    188         <xsl:template name="Compare.valueOrDNA"
    189                 ibis:doc="Used to show value or DNA."
    190         >
    191                 <xsl:param name="value"/>
    192                 <xsl:choose>
    193                         <xsl:when test="string(number($value)) ='NaN'">DNA</xsl:when>
    194                         <xsl:otherwise><xsl:value-of select="$value"/></xsl:otherwise>
    195                 </xsl:choose>
    196         </xsl:template>
    197 
    198 
    199         <xsl:template name="Compare.confidenceInterval"
    200                 ibis:doc="DNA is shown if the comparitiveValue is missing."
    201         >
    202                 <xsl:param name="measureLowerLimit"/>
    203                 <xsl:param name="measureUpperLimit"/>
    204                 <xsl:param name="valueFormatPattern"/>
    205 
    206                 <xsl:choose>
    207                         <xsl:when test="($measureLowerLimit = 'DNA') or ($measureUpperLimit = 'DNA')">
    208                                 DNA
    209                         </xsl:when>
    210                         <xsl:otherwise>
    211                                  (<xsl:value-of select="ibis:getFormattedNumber($measureLowerLimit, $valueFormatPattern)"/>
    212                                 - <xsl:value-of select="ibis:getFormattedNumber($measureUpperLimit, $valueFormatPattern)"/>)
    213                         </xsl:otherwise>
    214                 </xsl:choose>
    215         </xsl:template>
    216 -->
    217 
    218185
    219186
     
    302269//                      window.onbeforeunload = function() {}
    303270
    304 
    305 /*
    306 index -
    307         builds all 3 types of urls
    308         left nav changes dim name to new index
    309 
    310 ips -
    311         drop down Choose different dim value    requestSamePageDifferentDimensionValue
    312         drop down choose different IP set
    313         left nav facts, ip built xslt.           
    314         left nav prev/next dim value                    requestSamePageDifferentDimensionValue
    315         left nav different ip set
    316 
    317 ip -
    318         drop down Choose different dim value    requestSamePageDifferentDimensionValue
    319         drop down choose different IP ?
    320         left nav facts, ip built xslt.
    321         left nav ip set built xslt  (if set exists)
    322         left nav prev/next dim value                    requestSamePageDifferentDimensionValue
    323         left nav prev/next ip   (if set exists) requestSamePageDifferentSegment???
    324 
    325 quick facts -
    326         drop down Choose different dim value    requestSamePageDifferentDimensionValue
    327         left nav ip built xslt (if set exists)
    328         left nav ip set built xslt  (if ip exists)
    329         left nav prev/next dim value
    330 document.querySelector("input[name='gender']:checked").value;
    331 */
    332                         // Builds complete url based on the requested report type. 
    333                         // NOTE: this is only used on the index pages but included here to
    334                         // keep things simpler to maintain.
    335                         function requestCommunityPage()
    336                         {
    337                                 var communityReportType = document.forms.form.communityReportType.value;
    338                                 var dimensionValue      = document.forms.form.dimensionValue.value;
    339                                 var indicatorSetName    = document.forms.form.indicatorSetName.value;
    340                                 var indicatorName       = document.forms.form.indicatorName.value;
    341 
    342                                 var subURL;
    343                                 if("indicatorSet" == communityReportType)
    344                                 {
    345                                         subURL = "community/indicators/" + indicatorSetName + "/" + dimensionName + "/" + dimensionValue;
    346                                 }
    347                                 else if("communityIndicator" == communityReportType)
    348                                 {
    349                                         subURL = "community/indicator/" + indicatorName + "/" + dimensionName + "/" + dimensionValue;
    350                                 }
    351                                 else if("communityFacts" == communityReportType)
    352                                 {
    353                                         subURL = "community/facts/" + dimensionName + "/" + dimensionValue;
    354                                 }
    355                                 location.href = webappContextPath + subURL + ".html";
    356                         } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
    357 
    358 
    359 
    360                         // used for prev/next dim value navigation
    361                         function requestSamePageDifferentDimensionValue(dimensionValue)
    362                         {
    363                                 if(!dimensionValue) dimensionValue = document.querySelector("select[name='dimensionValue']").value;
    364                                 var dotHTMLIndex   = location.href.lastIndexOf(".html");
    365                                 var lastSlashIndex = location.href.lastIndexOf("/");
    366                                 var currentDimensionValue = location.href.substring(lastSlashIndex, dotHTMLIndex) + ".html";
    367                                 location.href = location.href.replace(currentDimensionValue, "/" + dimensionValue + ".html");
    368                         } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
    369 
    370 
    371                         // used for prev/next indicator navigation
    372                         function requestSamePageDifferentSegment(currentSegmentValue, newSegmentValue)
    373                         {
    374                                 location.href = location.href.replace("/"+currentSegmentValue+"/", "/"+newSegmentValue+"/");
    375                         } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
    376 
    377 
    378                         // used for indicators change ip set name
    379                         function requestDifferentIndicatorSet(currentIndicatorSetName)
    380                         {
    381                                 var indicatorSetName = document.querySelector("select[name='indicatorSetName']").value;
    382                                 if(currentIndicatorSetName)
    383                                         requestSamePageDifferentSegment(currentIndicatorSetName, indicatorSetName);
    384                                 else
    385                                 {
    386                                         var questionMarkIndex = location.href.indexOf("?");
    387                                         var href = (-1 == questionMarkIndex) ? location.href : location.href.substring(0, questionMarkIndex);
    388                                         location.href = href + "?IndicatorSetName=" + indicatorSetName;
    389                                 }
    390                         } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
    391 
    392271                        // <![CDATA[
    393272                        // ]]>
     
    413292        </xsl:template>
    414293
     294
     295        <xsl:template name="Page.contentOptions">
     296                <xsl:param name="title"/>
     297                <xsl:param name="communityReportType" select="$Page.communityReportType"/>
     298                <xsl:param name="requsetSubPath" select="'community/'"/>
     299                <xsl:param name="showIndicatorSetsSelection" select="false()"/>
     300                <xsl:param name="showIndicatorSelection"     select="false()"/>
     301                <xsl:param name="showQuickFactsSelection"    select="false()"/>
     302
     303                <div class="ContentOptions">
     304                        <h3><xsl:value-of select="$title"/></h3>
     305
     306                        <table class="ListTable">
     307                                <tr>
     308                                        <td><label for="dimensionValue"><xsl:value-of select="$Page.communityDimensionTitle"/>:</label></td>
     309                                        <td>
     310<!--
     311                                                <xsl:if test="0 != string-length($Page.previousDimensionValue/TITLE)">
     312                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.previousDimensionValue/text()[1])}')"
     313                                                                title="show previous community value"
     314                                                        >&lt;&lt; Show <xsl:value-of select="$Page.previousDimensionValue/TITLE"/></a>
     315                                                </xsl:if>
     316-->
     317                                                <select name="dimensionValue" id="dimensionValue"
     318                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');"
     319                                                >
     320                                                        <xsl:for-each select="$Page.communityDimension/VALUES/VALUE[not(NOT_SELECTABLE_FLAG)]">
     321                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
     322                                                                <xsl:sort select="TITLE" order="ascending"/>
     323                                                                <xsl:variable name="value" select="normalize-space(text()[1])"/>
     324                                                                <xsl:variable name="href">
     325                                                                        <xsl:if test="'facts' = $communityReportType">
     326                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $value, '.html')"/>
     327                                                                        </xsl:if>
     328                                                                        <xsl:if test="'indicator' = $communityReportType">
     329                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicator/', $Page.indicatorName, '/', $Page.dimensionName, '/', $value, '.html')"/>
     330                                                                        </xsl:if>
     331                                                                        <xsl:if test="'indicators' = $communityReportType">
     332                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicators/', $Page.indicatorSetName, '/', $Page.dimensionName, '/', $value, '.html')"/>
     333                                                                        </xsl:if>
     334                                                                </xsl:variable>
     335                                                                <option value="{$value}" href="{$href}">
     336                                                                        <xsl:if test="$value = $Page.dimensionValue">
     337                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
     338                                                                        </xsl:if>
     339                                                                        <xsl:value-of select="TITLE"/>
     340                                                                </option>
     341                                                        </xsl:for-each>
     342                                                </select>
     343<!--
     344                                                <xsl:if test="0 != string-length($Page.nextDimensionValue/TITLE)">
     345                                                        <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.nextDimensionValue/text()[1])}')"
     346                                                                title="show next community value"
     347                                                        >Show <xsl:value-of select="$Page.nextDimensionValue/TITLE"/> &gt;&gt;</a>
     348                                                </xsl:if>
     349-->
     350                                        </td>
     351                                </tr>
     352
     353                                <xsl:if test="'facts' != $communityReportType">
     354                                <tr>
     355                                        <td>
     356                                                <label for="indicatorSetName">Set of Health Indicators:</label>
     357                                        </td>
     358                                        <td>
     359                                                <select name="indicatorSetName" id="indicatorSetName"
     360                                                        onchange="location=this.options[this.selectedIndex].getAttribute('href');">
     361                                                >
     362<!--
     363                                                        <option value="">All</option>
     364-->
     365                                                        <xsl:for-each select="$Page.communityIndicatorSet">
     366                                                                <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
     367                                                                <xsl:sort select="TITLE" order="ascending"/>
     368                                                                <xsl:variable name="href">
     369                                                                        <xsl:if test="'indicator' = $communityReportType">
     370                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicator/', NAME, '/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')"/>
     371                                                                        </xsl:if>
     372                                                                        <xsl:if test="'indicators' = $communityReportType">
     373                                                                                <xsl:value-of select="concat($ibis.baseRequestPath, 'community/indicators/', NAME, '/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')"/>
     374                                                                        </xsl:if>
     375                                                                </xsl:variable>
     376                                                                <option value="{NAME}" href="{$href}">
     377                                                                        <xsl:if test="NAME = $Page.indicatorSetName">
     378                                                                                <xsl:attribute name="selected">selected</xsl:attribute>
     379                                                                        </xsl:if>
     380                                                                        <xsl:value-of select="TITLE"/>
     381                                                                </option>
     382                                                        </xsl:for-each>
     383                                                </select>
     384                                        </td>
     385                                        <td>
     386                                                <div class="Help Popup Info FontIcon Inline">
     387                                                        <div class="Container">
     388                                                                <div class="Content">
     389                                                                        List of health indicators based on the selected
     390                                                                        set of indicators that have data for the selected
     391                                                                        community. 
     392                                                                       
     393                                                                        You can change the set of health indicators to
     394                                                                        be reported on by using the drop down list.
     395
     396                                                                        Click on the title link in the list
     397                                                                        for a more detailed view of that community's
     398                                                                        health indicator.
     399                                                                </div>
     400                                                        </div>
     401                                                </div>
     402                                        </td>
     403                                </tr>
     404                        </xsl:if>
     405
     406                        <xsl:if test="('facts' != $communityReportType) and exists($Page.communityProfile/FACTS_PAGE_FLAG)">
     407                                <tr>
     408<!--
     409                                        <td><h4>About <xsl:value-of select="$Page.communityDimensionValue/TITLE"/>:</h4></td>
     410-->
     411                                        <td><label><xsl:value-of select="$Page.communityDimensionTitle"/> Information:</label></td>
     412                                        <td>
     413                                                <a title="Show this communities quick facts page."
     414                                                        href="{concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')}"
     415                                                        ><xsl:value-of select="$Page.communityDimensionValue/TITLE"/>'s Quick Facts</a>
     416                                        </td>
     417                                </tr>
     418                        </xsl:if>
     419                        </table>
     420                </div>
     421
     422        </xsl:template>
     423
    415424</xsl:stylesheet>
    416425<!-- ============================= End of File ============================= -->
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/facts/Page.xslt

    r19905 r19906  
    8989</style>
    9090
    91                 <div class="ContentOptions">
    92                         <h3>Quick Facts Report Options</h3>
    93 
    94                         <table class="ListTable">
    95                                 <tr>
    96                                         <td><label for="dimensionValue"><xsl:value-of select="$Page.communityDimensionTitle"/>:</label></td>
    97                                         <td>
    98 <!--
    99                                                 <xsl:if test="0 != string-length($Page.previousDimensionValue/TITLE)">
    100                                                         <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.previousDimensionValue/text()[1])}')"
    101                                                                 title="show previous community value"
    102                                                         >&lt;&lt; Show <xsl:value-of select="$Page.previousDimensionValue/TITLE"/></a>
    103                                                 </xsl:if>
    104 -->
    105                                                 <select name="dimensionValue" id="dimensionValue" onchange="location=this.value; this.value='';" style="width: 200px;">
    106                                                         <xsl:for-each select="$Page.communityDimension/VALUES/VALUE[not(NOT_SELECTABLE_FLAG)]">
    107                                                                 <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
    108                                                                 <xsl:sort select="TITLE" order="ascending"/>
    109                                                                 <xsl:variable name="value" select="normalize-space(text()[1])"/>
    110                                                                 <option value="{concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $value, '.html')}">
    111                                                                         <xsl:if test="$value = $Page.dimensionValue">
    112                                                                                 <xsl:attribute name="selected">selected</xsl:attribute>
    113                                                                         </xsl:if>
    114                                                                         <xsl:value-of select="TITLE"/>
    115                                                                 </option>
    116                                                         </xsl:for-each>
    117                                                 </select>
    118 <!--
    119                                                 <xsl:if test="0 != string-length($Page.nextDimensionValue/TITLE)">
    120                                                         <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.nextDimensionValue/text()[1])}')"
    121                                                                 title="show next community value"
    122                                                         >Show <xsl:value-of select="$Page.nextDimensionValue/TITLE"/> &gt;&gt;</a>
    123                                                 </xsl:if>
    124 -->
    125                                         </td>
    126                                 </tr>
    127                         </table>
    128                 </div>
    129 
    130                 <!-- The content file contains elements that control demographic and
    131                         IP set bar charts etc.
    132                 -->
     91                <xsl:call-template name="Page.contentOptions">
     92                        <xsl:with-param name="title" select="'Quick Facts Report Options'"/>
     93                </xsl:call-template>
     94
    13395                <xsl:apply-templates select="HTML_CONTENT/CONTENT/(text() | *)" mode="ibis.copy"/>
    13496
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/indicators/Page.xslt

    r19905 r19906  
    4040                ibis:doc="Main page content template."
    4141        >
    42 <!--
    43                 <xsl:call-template name="ContentContainer.contentBlockWithDelimitedTitleTextsNodesets">
    44                         <xsl:with-param name="title"      select="'Overview'"/>
    45                         <xsl:with-param name="contentBlockType" select="'expandable'"/>
    46                         <xsl:with-param name="expandableContentShow" select="true()"/>
    47                         <xsl:with-param name="addWikiAttribute"      select="true()"/>
    48                         <xsl:with-param name="titleAndTextsNodeset"  select="$Page.communityProfile/OVERVIEWS/OVERVIEW | $indicatorProfileSet/NARRATIVE"/>
     42                <xsl:call-template name="Page.contentOptions">
     43                        <xsl:with-param name="title" select="'Community Health Profile Report Options'"/>
    4944                </xsl:call-template>
    50 <xsl:message select="$indicatorProfileSet"/>
    51 
    52 <br/><br/>
    53 
    54 DimensionName: <xsl:value-of select="$DimensionName"/><br/>
    55 DimensionValue: <xsl:value-of select="$DimensionValue"/><br/>
    56 IndicatorSetName: <xsl:value-of select="$Page.indicatorSetName"/><br/>
    57 -->
    58                 <div class="ContentOptions">
    59                         <h3>Community Health Profile Report Options</h3>
    60 
    61                         <table class="ListTable">
    62                                 <tr>
    63                                         <td><label for="dimensionValue"><xsl:value-of select="$Page.communityDimensionTitle"/>:</label></td>
    64                                         <td>
    65 <!--
    66                                                 <xsl:if test="0 != string-length($Page.previousDimensionValue/TITLE)">
    67                                                         <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.previousDimensionValue/text()[1])}')"
    68                                                                 title="show previous community value"
    69                                                         >&lt;&lt; Show <xsl:value-of select="$Page.previousDimensionValue/TITLE"/></a>
    70                                                 </xsl:if>
    71 -->
    72                                                 <select name="dimensionValue" id="dimensionValue" onchange="location=this.value; this.value='';" style="width: 100%">
    73                                                         <xsl:for-each select="$Page.communityDimension/VALUES/VALUE[not(NOT_SELECTABLE_FLAG)]">
    74                                                                 <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
    75                                                                 <xsl:sort select="TITLE" order="ascending"/>
    76                                                                 <xsl:variable name="value" select="normalize-space(text()[1])"/>
    77                                                                 <option value="{concat($ibis.baseRequestPath, 'community/indicators/', $Page.indicatorSetName, '/', $Page.dimensionName, '/', $value, '.html')}">
    78                                                                         <xsl:if test="$value = $Page.dimensionValue">
    79                                                                                 <xsl:attribute name="selected">selected</xsl:attribute>
    80                                                                         </xsl:if>
    81                                                                         <xsl:value-of select="TITLE"/>
    82                                                                 </option>
    83                                                         </xsl:for-each>
    84                                                 </select>
    85 <!--
    86                                                 <xsl:if test="0 != string-length($Page.nextDimensionValue/TITLE)">
    87                                                         <a href="javascript:requestSamePageDifferentDimensionValue('{normalize-space($Page.nextDimensionValue/text()[1])}')"
    88                                                                 title="show next community value"
    89                                                         >Show <xsl:value-of select="$Page.nextDimensionValue/TITLE"/> &gt;&gt;</a>
    90                                                 </xsl:if>
    91 -->
    92                                         </td>
    93                                 </tr>
    94                                 <tr>
    95                                         <td>
    96                                                 <label for="indicatorSetName">Set of Health Indicators:</label>
    97                                         </td>
    98                                         <td>
    99                                                 <select name="indicatorSetName" id="indicatorSetName"
    100                                                         onchange="location=this.value; this.value='';"
    101                                                 >
    102 <!--
    103                                                         <option value="">All</option>
    104 -->
    105                                                         <xsl:for-each select="$Page.communityIndicatorSet">
    106                                                                 <xsl:sort select="SORT_ORDER" data-type="number" order="ascending"/>
    107                                                                 <xsl:sort select="TITLE" order="ascending"/>
    108                                                                 <option value="{concat($ibis.baseRequestPath, 'community/indicators/', NAME, '/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')}">
    109                                                                         <xsl:if test="NAME = $Page.indicatorSetName">
    110                                                                                 <xsl:attribute name="selected">selected</xsl:attribute>
    111                                                                         </xsl:if>
    112                                                                         <xsl:value-of select="TITLE"/>
    113                                                                 </option>
    114                                                         </xsl:for-each>
    115                                                 </select>
    116                                         </td>
    117                                         <td>
    118                                                 <div class="Help Popup Info FontIcon Inline">
    119                                                         <div class="Container">
    120                                                                 <div class="Content">
    121                                                                         List of health indicators based on the selected
    122                                                                         set of indicators that have data for the selected
    123                                                                         community. 
    124                                                                        
    125                                                                         You can change the set of health indicators to
    126                                                                         be reported on by using the drop down list.
    127 
    128                                                                         Click on the title link in the list
    129                                                                         for a more detailed view of that community's
    130                                                                         health indicator.
    131                                                                 </div>
    132                                                         </div>
    133                                                 </div>
    134                                         </td>
    135                                 </tr>
    136                         <xsl:if test="exists($Page.communityProfile/FACTS_PAGE_FLAG)">
    137                                 <tr>
    138 <!--
    139                                         <td><h4>About <xsl:value-of select="$Page.communityDimensionValue/TITLE"/>:</h4></td>
    140 -->
    141                                         <td><label><xsl:value-of select="$Page.communityDimensionTitle"/> Information:</label></td>
    142                                         <td>
    143                                                 <a title="Show this communities quick facts page."
    144                                                         href="{concat($ibis.baseRequestPath, 'community/facts/', $Page.dimensionName, '/', $Page.dimensionValue, '.html')}"
    145                                                         ><xsl:value-of select="$Page.communityDimensionValue/TITLE"/>'s Quick Facts</a>
    146                                         </td>
    147                                 </tr>
    148                         </xsl:if>
    149                         </table>
    150                 </div>
    151 
    152                 <!-- have to do the table-layout:fixed and th width of 40% for weird chrome behavior -->
     45
    15346                <table class="Info Comparison" style="table-layout:fixed; margin-top: 1rem;"
    15447                        summary="Data table of the community profile snapshot report.
  • trunk/ibisph/src/main/java/org/ibisph/communityprofile/modelmap/ModelFromHTTPRequestPath.java

    r19891 r19906  
    22
    33import java.util.Map;
    4 import java.util.HashMap;
    54
    65import javax.servlet.http.HttpServletRequest;
    7 
     6import org.dom4j.Node;
     7import org.ibisph.model.GetModelService;
    88import org.ibisph.modelmap.AbstractModelMap;
    9 import org.ibisph.modelmap.GetModelMapFromHTTPRequest;
     9import org.ibisph.modelmap.ProcessModelMapFromHTTPRequest;
    1010import org.ibisph.util.IOPath;
    1111import org.ibisph.util.StrLib;
     12import org.ibisph.util.XMLLib;
    1213
    1314/**
     
    2021public class ModelFromHTTPRequestPath
    2122  extends AbstractModelMap
    22   implements GetModelMapFromHTTPRequest
     23  implements ProcessModelMapFromHTTPRequest
    2324{
    2425  protected String communityNameModelMapKey       = "DimensionName";
     
    2829  protected String communityReportTypeModelMapKey = "CommunityReportType";
    2930
     31  protected String dimensionsModelMapKey          ="Dimensions";
     32  protected String indicatorSetsModelMapKey       ="IndicatorSets";
     33
    3034  protected String indicatorsCommunityReportType  = "indicators";
    3135  protected String indicatorCommunityReportType   = "indicator";
    3236  protected String factsCommunityReportType       = "facts";
     37
     38  protected String communityHTMLContentFilePath   = "html_content/community/";
     39  protected GetModelService getModelService = null;
    3340
    3441
     
    6067   *   to gain access to this value with from the model map.
    6168   */
    62    public void setIndicatorNameModelMapKey(String indicatorNameModelMapKey) { this.indicatorNameModelMapKey = indicatorNameModelMapKey; }
    63 
    64    /**
    65     * Sets the indicator set name model name. 
    66     * @param indicatorValueModelMapKey model map key that the XSLT will be able
    67     *   to gain access to this value with from the model map.
    68     */
    69     public void setIndicatorSetNameModelMapKey(String indicatorSetNameModelMapKey) { this.indicatorSetNameModelMapKey = indicatorSetNameModelMapKey; }
    70 
     69  public void setIndicatorNameModelMapKey(String indicatorNameModelMapKey) { this.indicatorNameModelMapKey = indicatorNameModelMapKey; }
     70
     71  /**
     72   * Sets the indicator set name model name. 
     73   * @param indicatorValueModelMapKey model map key that the XSLT will be able
     74   *   to gain access to this value with from the model map.
     75   */
     76  public void setIndicatorSetNameModelMapKey(String indicatorSetNameModelMapKey) { this.indicatorSetNameModelMapKey = indicatorSetNameModelMapKey; }
     77
     78  /**
     79   * Sets the GetModel service to be used to resolve the path to a model (URL
     80   *   or object).
     81   * @param getModelService GetModel service.
     82   */
     83  public void setGetModelService(GetModelService getModelService) { this.getModelService = getModelService; }
     84
     85  public void setCommunityHTMLContentFilePath(String communityHTMLContentFilePath) { this.communityHTMLContentFilePath = communityHTMLContentFilePath; }
     86 
    7187
    7288  /**
     
    7995   * @return map with the values.
    8096   */
    81   public Map<String, Object> getModelMap(HttpServletRequest request) throws Exception {
     97  public void processModelMap(Map<String, Object> modelMap, HttpServletRequest request) throws Exception {
    8298    // get the components from the path this is of the form:
    83     // indicatorViewName/communityDimensionName/communityDimensionValue.*
    84     // Note request URI includes context.
    85     String[] pathSegment = IOPath.getPathSegments(IOPath.getFilePathAndNameWithoutExtension(request.getRequestURI()));
    86 
    87     // if index then get and set the community name
    88     if((4 == pathSegment.length) && "index".equals(pathSegment[pathSegment.length-2])) {
    89       request.getSession().setAttribute(this.communityNameModelMapKey, pathSegment[pathSegment.length-1]);
    90     }
    91     else if((5 == pathSegment.length) && this.factsCommunityReportType.equals(pathSegment[pathSegment.length-3])) {
    92       request.getSession().setAttribute(this.communityValueModelMapKey, pathSegment[pathSegment.length-1]);
    93       request.getSession().setAttribute(this.communityNameModelMapKey,  pathSegment[pathSegment.length-2]);
    94       request.getSession().setAttribute(this.communityReportTypeModelMapKey, this.factsCommunityReportType);
    95     }
    96     else if((6 == pathSegment.length) && this.indicatorsCommunityReportType.equals(pathSegment[pathSegment.length-4])) {
    97       request.getSession().setAttribute(this.communityValueModelMapKey,   pathSegment[pathSegment.length-1]);
    98       request.getSession().setAttribute(this.communityNameModelMapKey,    pathSegment[pathSegment.length-2]);
    99       request.getSession().setAttribute(this.indicatorSetNameModelMapKey, pathSegment[pathSegment.length-3]);
    100       request.getSession().setAttribute(this.communityReportTypeModelMapKey, indicatorsCommunityReportType);
    101     }
    102     else if((6 == pathSegment.length) && this.indicatorCommunityReportType.equals(pathSegment[pathSegment.length-4])) {
    103       request.getSession().setAttribute(this.communityValueModelMapKey, pathSegment[pathSegment.length-1]);
    104       request.getSession().setAttribute(this.communityNameModelMapKey,  pathSegment[pathSegment.length-2]);
    105       request.getSession().setAttribute(this.indicatorNameModelMapKey,  pathSegment[pathSegment.length-3]);
    106       request.getSession().setAttribute(this.communityReportTypeModelMapKey, this.indicatorCommunityReportType);
    107     }
    108 
    109     // process/override any http request param values.
    110     processHTTPRequestParameterOverride(request, this.communityNameModelMapKey);
    111     processHTTPRequestParameterOverride(request, this.communityValueModelMapKey);
    112     processHTTPRequestParameterOverride(request, this.indicatorSetNameModelMapKey);
    113     processHTTPRequestParameterOverride(request, this.indicatorNameModelMapKey);
    114     processHTTPRequestParameterOverride(request, this.communityReportTypeModelMapKey);
    115 
    116     // Put the values into the map so UI can access.
    117     Map<String, Object> modelMap = new HashMap<String, Object>();
    118     modelMap.put(this.communityReportTypeModelMapKey, (String)request.getSession().getAttribute(this.communityReportTypeModelMapKey));
    119     modelMap.put(this.communityValueModelMapKey, (String)request.getSession().getAttribute(this.communityValueModelMapKey));
    120     modelMap.put(this.communityNameModelMapKey,  (String)request.getSession().getAttribute(this.communityNameModelMapKey));
    121     modelMap.put(this.indicatorNameModelMapKey,  (String)request.getSession().getAttribute(this.indicatorNameModelMapKey));
    122     modelMap.put(this.indicatorSetNameModelMapKey, (String)request.getSession().getAttribute(this.indicatorSetNameModelMapKey));
    123 
    124     return(modelMap);
     99    // community/indicators/indicatorSetName/communityDimensionName/communityDimensionValue.html
     100    // community/indicator/indicatorName/communityDimensionName/communityDimensionValue.html
     101    // community/facts/                  communityDimensionName/communityDimensionValue.html
     102    // Note PathInfo starts after .
     103    String[] pathSegment = IOPath.getPathSegments(IOPath.getFilePathAndNameWithoutExtension(request.getPathInfo()));
     104    String reportRequsetType = pathSegment[0];
     105/* GARTH TODO: remove
     106String sp = request.getServletPath();
     107String cp = request.getContextPath();
     108String pi = request.getPathInfo();
     109*/
     110   
     111    // get the default values from the session
     112    String indicatorSetName        = (String)request.getSession().getAttribute(this.indicatorSetNameModelMapKey);
     113    String indicatorName           = (String)request.getSession().getAttribute(this.indicatorNameModelMapKey);
     114    String communityDimensionName  = (String)request.getSession().getAttribute(this.communityNameModelMapKey);
     115    String communityDimensionValue = (String)request.getSession().getAttribute(this.communityValueModelMapKey);
     116
     117    // set the values based on the path segments.
     118    try {
     119      if(this.indicatorsCommunityReportType.equals(reportRequsetType)) {
     120        indicatorSetName        = pathSegment[1];
     121        communityDimensionName  = pathSegment[2];
     122        communityDimensionValue = pathSegment[3];
     123      }
     124      else if(this.indicatorCommunityReportType.equals(reportRequsetType)) {
     125        indicatorName           = pathSegment[1];
     126        communityDimensionName  = pathSegment[2];
     127        communityDimensionValue = pathSegment[3];
     128      }
     129      else if(this.factsCommunityReportType.equals(reportRequsetType)) {
     130        communityDimensionName  = pathSegment[1];
     131        communityDimensionValue = pathSegment[2];
     132      }
     133    }
     134    catch(IndexOutOfBoundsException ioe) {}
     135
     136
     137    // need to handle if first time through and nothing set or dims switched.
     138    Node indicatorSetsNode = (Node)modelMap.get(this.indicatorSetsModelMapKey);
     139    if(!StrLib.isSomething(indicatorSetName)) {
     140      indicatorSetName = XMLLib.getText(indicatorSetsNode, "//INDICATOR_SET_NAME[1]");
     141    }
     142    if(!StrLib.isSomething(indicatorName)) {
     143      indicatorName = XMLLib.getText(indicatorSetsNode, "//INDICATOR_TO_INDICATOR_SET[INDICATOR_SET_NAME = '" + indicatorSetName + "'][1]/INDICATOR_NAME");
     144    }
     145
     146    Node dimensionsNode = (Node)modelMap.get(this.dimensionsModelMapKey);
     147    if(!StrLib.isSomething(communityDimensionName)) {
     148      if(StrLib.isSomething(communityDimensionValue)) communityDimensionValue = null;
     149      communityDimensionName = XMLLib.getText(dimensionsNode, "//DIMENSION[COMMUNITY_FLAG = 'x']/NAME");
     150    }
     151
     152    // check that a valid dim value for the selected dim.  If not found then clear
     153    // so next step can get the first valid dim value.
     154    if(StrLib.isSomething(communityDimensionValue)) {
     155      String testValue = XMLLib.getText(dimensionsNode,
     156        "//DIMENSION[NAME = '" + communityDimensionName
     157        + "']//VALUE[normalize-space(text()[1]) = '" + communityDimensionValue + "']"
     158      );
     159      if(!StrLib.isSomething(testValue)) communityDimensionValue = null;       
     160    }
     161    if(!StrLib.isSomething(communityDimensionValue)) {
     162      communityDimensionValue = XMLLib.getText(dimensionsNode, "//DIMENSION[NAME = '" + communityDimensionName + "']//VALUE[1]");
     163    }
     164
     165    // Set the values into the session.  This code also processes for http request
     166    // param value overrides (typically not done but the code does handle in case).
     167    processHTTPRequestParameterOverrideAndSetSessionAttribute(request, this.communityReportTypeModelMapKey, reportRequsetType, modelMap);
     168    processHTTPRequestParameterOverrideAndSetSessionAttribute(request, this.indicatorSetNameModelMapKey,    indicatorSetName,  modelMap);
     169    processHTTPRequestParameterOverrideAndSetSessionAttribute(request, this.indicatorNameModelMapKey,       indicatorName,     modelMap);
     170    processHTTPRequestParameterOverrideAndSetSessionAttribute(request, this.communityNameModelMapKey,       communityDimensionName,  modelMap);
     171    processHTTPRequestParameterOverrideAndSetSessionAttribute(request, this.communityValueModelMapKey,      communityDimensionValue, modelMap);
     172
     173// GARTH TODO: This is kind of kludgy and at some point should consider moving
     174// into its own simple model map code.  BUT then have to replicate session
     175// keys etc. so it's simply added here:
     176    // If facts request, put the community HTML content file into the model map
     177    if(this.factsCommunityReportType.equals(reportRequsetType)) {
     178      String fileName = communityDimensionName + "/" + communityDimensionValue + ".xml";
     179      String filePathAndName = IOPath.concat(this.communityHTMLContentFilePath, fileName, "/");
     180      Object model = this.getModelService.get(filePathAndName);
     181      modelMap.put(this.modelMapKey, model);
     182    }
     183
    125184  } //-------------------------- End of Method ------------------------------
    126185
     
    128187  /**
    129188   * Localizes processing...
     189    // Using the session values put the values into the map so UI can access.
    130190   * @param request
    131191   * @param key
    132192   */
    133   protected void processHTTPRequestParameterOverride(HttpServletRequest request, String key) {
     193  protected String processHTTPRequestParameterOverrideAndSetSessionAttribute(
     194    HttpServletRequest request,
     195    String key, String value,
     196    Map<String, Object> modelMap
     197  ) {
    134198    String paramValue = request.getParameter(key);
    135     if(StrLib.isSomething(paramValue)) request.getSession().setAttribute(key, paramValue);
     199    if(StrLib.isSomething(paramValue)) value = paramValue;
     200    request.getSession().setAttribute(key, value);
     201    modelMap.put(key, value);
     202    return(value);
    136203  } //-------------------------- End of Method ------------------------------
    137204
  • trunk/ibisph/src/main/java/org/ibisph/modelmap/AbstractModelMap.java

    r9041 r19906  
    8989    return(modelMap);
    9090  } //-------------------------- End of Method ------------------------------
     91
    9192  protected Object getModel(Map<String, Object> modelMap, HttpServletRequest httpServletRequest) throws Exception {return(modelMap);}
    9293
  • trunk/ibisph/src/main/java/org/ibisph/util/XMLLib.java

    r17685 r19906  
    332332    List<Node> nodes = getNodes(node, xPathExpression);
    333333    if(nodes.size() < 1) return(null);
    334     return(nodes.get(0).getText());
     334    String text = nodes.get(0).getText();
     335    return(text.trim());
    335336  } //-------------------------- End of Method ------------------------------
    336337
  • trunk/ibisph/src/main/java/org/ibisph/web/modelmap/WebAppBaseRequestPathFromHTTPRequest.java

    r19891 r19906  
    7575        requestURL.append(contextPath).append(this.contextPathSuffix);
    7676        this.webappBaseRequestPath = requestURL.toString();
     77
     78        logger.info(".getModelMap - webappBaseRequestPath not specified - building based on request URL: " + request.getRequestURL()
     79          + ", removing prior to context path: " + contextPath
     80          + ", suffix added after context path: " + this.contextPathSuffix
     81          + ", resulting request path ("+this.modelMapKey+"): " + this.webappBaseRequestPath
     82        );
    7783      }
    7884
Note: See TracChangeset for help on using the changeset viewer.