Changeset 22390 in main


Ignore:
Timestamp:
01/26/21 13:26:45 (9 months ago)
Author:
GarthBraithwaite_STG
Message:

java, admin, view - Updated admin IPV dims save to auto update the IPV MAP_DIMENSION_NAME. Added wiki_test.xml relative link examples. General css to handle P's inside LI items to have 1/2 spacing to match the LI spacing. Added notes to the QM xsd for data notes and issues after reviewing with Lois. ContentContainer?.xslt added comments about TEXT and added general TEXT nodeset processing for "content" - just in case. Changed Indicator.xslt tech notes title back to issues to match QM technotes/issues. Added strip-space processing to main Page.xslt which collapses blank elements. Updated QueryModule?.xslt to handle multiple TEXT within DN and DI. Changed kendo data table title for Record Code to Footnotes as per Lois. ConfigurationIncludeCriteriaExclude?.xslt added security blanket to normalize space for all text().

Location:
trunk
Files:
1 added
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/ibisph-view/src/content/xml/html_content/about/wiki_test.xml

    r10927 r22390  
    6969NON titled HTTPS link [https://www.msn.com].<br/>
    7070NON titled SPACED link [http://www.msn.com/somedir/some doc.pdf] - BROKEN NEEDS %20<br/>
    71 NON titled %20 link [http://www.msn.com/somedir/some%20doc.pdf]
     71NON titled %20 link [http://www.msn.com/somedir/some%20doc.pdf]<br/>
     72TEST RELATIVE link [http:Welcome.html]. [[br]]
     73TEST titled RELATIVE link [http../indicator/index/Alphabetical.html Relative IP Alpha]. [[br]]
    7274
    7375TITLED link [http://www.msn.com  MSN HOME PAGE TITLE] and some other text.<br/>
  • trunk/ibisph-view/src/main/webapp/css/_general.css

    r22319 r22390  
    134134        list-style-type:        decimal;
    135135}
    136 li
     136li:not(:last-child)
    137137{
    138138        margin-bottom:          0.5em;
     
    148148        color:                          black;
    149149        font-weight:            normal;
     150}
     151li:not(:last-child) p
     152{
     153        margin:                         0.5em 0;
    150154}
    151155
  • trunk/ibisph-view/src/main/webapp/xsd/query_module.xsd

    r22274 r22390  
    145145        </xsd:element>
    146146
     147
     148        <!-- Supplemental DATA_NOTES  (included after the measure data note) -->
    147149        <xsd:element name="DATA_NOTES" minOccurs="0">
    148150                <xsd:complexType>
     
    161163                        </xsd:sequence>
    162164                </xsd:complexType>
    163         </xsd:element>  <!-- DATA_NOTES -->
    164 
     165        </xsd:element> 
     166
     167
     168        <!-- Supplemental DATA_ISSUES (included after the datasource dataissues) -->
    165169        <xsd:element name="DATA_ISSUES" minOccurs="0">
    166170                <xsd:complexType>
     
    179183                        </xsd:sequence>
    180184                </xsd:complexType>
    181         </xsd:element> <!-- DATA_ISSUES -->
     185        </xsd:element>
    182186
    183187
  • trunk/ibisph-view/src/main/webapp/xslt/html/ContentContainer.xslt

    r22334 r22390  
    2828                                simply copied within these templates.
    2929                                Used in:
    30                                 HELP
    31                                 OVERVIEW
    32                                 DATA_SOURCE
    33                                 IP RELATION
    34                                 QM DATA_NOTE
    35                                 QM DATA_ISSUE
    36                                 QM DEBUG
     30                                HELP                    n:TEXT - processed in help.xslt because \n\n
     31                                OVERVIEW                n:TEXT - processed here - calls this textnodeset
     32                                DATA_SOURCE     1:TEXT - is the acutal descript of that DS. 
     33                                        DATA_SOURCE/DATA_ISSUES/text() = DI narrative.
     34                                IP RELATION             1:TEXT - RELATION/TEXT - Indicator.relatedIndicators
     35                                QM DATA_NOTE    n:TEXT - MEASURE/DATA_NOTE and QM DNs.  Handled
     36                                        in QM.xslt because needs to do a LI.  Calls the this textnodeset
     37                                        when there are a series of DN TEXTs to get proper [p] struct.
     38                                QM DATA_ISSUE   n:text - Lois wants multiple DI's for QMs AND she
     39                                        wants them split out from DN's.  This is similar to the QM
     40                                        datanotes it has to handle multiple DI/TEXTs with eath datasource
     41                                        DI and QM DI being in a list.
     42                                QM DEBUG - This is info returned from IBISQ and much of the time
     43                                        the XML is malformed and/or not useful to the end user.  So
     44                                        actual use is to example the QM XML.  As such not processed.
    3745                </description>
    3846        </ibis:doc>
     
    171179
    172180
    173         <xsl:template name="ContentContainer.getContent">
     181        <xsl:template name="ContentContainer.getContent"
     182                ibis:doc="Processes the actual content.  If content is CONTENT then
     183                        apply templates.  If content is TEXT then process the nodeset for
     184                        [P]s.  Else copy the content as is.
     185                "
     186        >
    174187                <xsl:param name="content"/>
    175188
     
    178191                                <xsl:call-template name="ibisIncludeGetContent">
    179192                                        <xsl:with-param name="content" select="$content"/>
     193                                </xsl:call-template>
     194                        </xsl:when>
     195                        <xsl:when test="$content/TEXT or ('TEXT' = $content/name())">
     196                                <xsl:call-template name="ContentContainer.getTextNodesetContent">
     197                                        <xsl:with-param name="textNodeset" select="$content"/>
    180198                                </xsl:call-template>
    181199                        </xsl:when>
     
    422440                        <xsl:with-param name="addWikiAttribute" select="$addWikiAttribute"/>
    423441                        <xsl:with-param name="content">
    424                                 <xsl:for-each select="$overview/TEXT">
    425                                         <p><xsl:copy-of select="text()"/></p>
    426                                 </xsl:for-each>
     442                                <xsl:call-template name="ContentContainer.getTextNodesetContent">
     443                                        <xsl:with-param name="textNodeset" select="$overview/TEXT"/>
     444                                </xsl:call-template>
    427445                        </xsl:with-param>
    428446                </xsl:call-template>
     447        </xsl:template>
     448
     449
     450
     451        <xsl:template name="ContentContainer.getTextNodesetContent"
     452                ibis:doc="Converts TEXT node(s) to [p] enclosed blocks."
     453        >
     454                <xsl:param name="textNodeset"/>
     455
     456                <xsl:if test="1 = count($textNodeset)">
     457                        <xsl:value-of select="$textNodeset"/>
     458                </xsl:if>
     459                <xsl:if test="1 &lt; count($textNodeset)">
     460                        <xsl:for-each select="$textNodeset">
     461                                <p><xsl:value-of select="."/></p>
     462                        </xsl:for-each>
     463                </xsl:if>
    429464        </xsl:template>
    430465
  • trunk/ibisph-view/src/main/webapp/xslt/html/Page.xslt

    r22256 r22390  
    77        exclude-result-prefixes="ibis"
    88>
     9        <!-- Condense all elements that only contain whitespace examples:
     10                [a]   [/a] goes to [a/].  [a]   b   [/a] stays the same.
     11        -->
     12        <xsl:strip-space elements="*"/>
     13
    914        <xsl:import href="../ibis.xslt"/>
    1015        <xsl:import href="ContentContainer.xslt"/>
  • trunk/ibisph-view/src/main/webapp/xslt/html/indicator/profile/Indicator.xslt

    r22274 r22390  
    159159                <xsl:param name="addWikiAttribute" select="true()"/>
    160160
     161
     162
    161163<!--
    162164GARTH TODO: Decide and keep or remove.
     
    176178</xsl:variable>
    177179-->
     180
     181
    178182
    179183                <xsl:call-template name="ContentContainer.contentBlock">
     
    873877                <xsl:param name="indicator"     select="$Indicator.indicator"/>
    874878                <xsl:param name="indicatorView" select="$Indicator.indicatorView"/>
    875                 <xsl:param name="title"         select="'Technical Notes'"/>
     879                <xsl:param name="title"         select="'Data Issues'"/>
    876880
    877881                <xsl:param name="indicatorDatasets" select="$indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]"/>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/QueryModule.xslt

    r22256 r22390  
    5757
    5858        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEMPLATES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    59         <xsl:template name="QueryModule.dataNotes">
     59        <xsl:template name="QueryModule.dataNotes"
     60                ibis:doc="Creates a series of DATA_NOTE structs.  First transform the QM
     61                        config Measure's Datanote into the struct.  Then get any QM config's
     62                        DN's and put into the set.  Note that DN's can have multiple TEXT
     63                        elements that need to be processed to create blocks wrapped in a [p].
     64                "
     65        >
    6066                <xsl:param name="queryConfiguration"    select="$QueryModule.configuration"/>
    6167                <xsl:param name="measure"                               select="$QueryModule.measure"/>
     
    7682                                <xsl:with-param name="title"    select="'Data Note'"/>
    7783                                <xsl:with-param name="titleLevel" select="3"/>
    78                                 <xsl:with-param name="content"  select="$dataNotes/DATA_NOTE"/>
     84                                <xsl:with-param name="description" select="$dataNotes/DATA_NOTE/TITLE"/>
     85                                <xsl:with-param name="content" select="$dataNotes/DATA_NOTE/TEXT"/>
    7986                        </xsl:call-template>
    8087                </xsl:if>
     
    9097                                                <li>
    9198                                                        <h4><xsl:value-of select="TITLE"/></h4>
    92                                                         <xsl:value-of select="TEXT"/>
     99                                                        <xsl:call-template name="ContentContainer.getTextNodesetContent">
     100                                                                <xsl:with-param name="textNodeset" select="TEXT"/>
     101                                                        </xsl:call-template>
    93102                                                </li>
    94103                                        </xsl:for-each>
     
    101110
    102111
    103         <xsl:template name="QueryModule.dataIssues">
     112        <xsl:template name="QueryModule.dataIssues"
     113                ibis:doc="Creates a series of DATA_ISSUE structs.  First transform the QM
     114                        config datasources DATA_ISSUE into the struct.  Then get any QM config's
     115                        DI's and put into the set.  Note that DI's can have multiple TEXT
     116                        elements that need to be processed to create blocks wrapped in a [p].
     117                "
     118        >
    104119                <xsl:param name="queryConfiguration"    select="$QueryModule.configuration"/>
    105120                <xsl:param name="dataSources"                   select="$QueryModule.dataSources"/>
     
    120135                </xsl:variable>
    121136
    122                 <xsl:call-template name="ContentContainer.contentBlock">
    123                         <xsl:with-param name="title"    select="'Data Issues'"/>
    124                         <xsl:with-param name="titleLevel" select="3"/>
    125                         <xsl:with-param name="content">
    126                                 <ul>
    127                                 <xsl:for-each select="$dataIssues/DATA_ISSUE">
    128                                         <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
    129                                         <xsl:sort select="TITLE"      order="ascending" data-type="text"/>
    130                                         <li>
    131                                                 <h4><xsl:value-of select="TITLE"/></h4>
    132                                                 <xsl:value-of select="TEXT"/>
    133                                         </li>
    134                                 </xsl:for-each>
    135                                 </ul>
    136                         </xsl:with-param>
    137                         <xsl:with-param name="addWikiAttribute"     select="true()"/>
    138                 </xsl:call-template>
    139         </xsl:template>
    140 
    141 
    142         <xsl:template name="QueryModule.dataSources">
     137                <xsl:if test="0 != count($dataIssues)">
     138                        <xsl:call-template name="ContentContainer.contentBlock">
     139                                <xsl:with-param name="title"    select="'Data Issues'"/>
     140                                <xsl:with-param name="titleLevel" select="3"/>
     141                                <xsl:with-param name="content">
     142                                        <ul>
     143                                        <xsl:for-each select="$dataIssues/DATA_ISSUE">
     144                                                <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
     145                                                <xsl:sort select="TITLE"      order="ascending" data-type="text"/>
     146                                                <li>
     147                                                        <h4><xsl:value-of select="TITLE"/></h4>
     148                                                        <xsl:call-template name="ContentContainer.getTextNodesetContent">
     149                                                                <xsl:with-param name="textNodeset" select="TEXT"/>
     150                                                        </xsl:call-template>
     151                                                </li>
     152                                        </xsl:for-each>
     153                                        </ul>
     154                                </xsl:with-param>
     155                                <xsl:with-param name="addWikiAttribute"     select="true()"/>
     156                        </xsl:call-template>
     157                </xsl:if>
     158        </xsl:template>
     159
     160
     161        <xsl:template name="QueryModule.dataSources"
     162                ibis:doc="Creates a list of QM config data sources that contain the
     163                        source's title and TEXT (which his a description of that source.
     164                        NOTE: the data source's DATA_ISSUE is handled in the dataIssues
     165                        template and not displayed as part of this (as per Lois 2020).
     166                "
     167        >
    143168                <xsl:param name="dataSources" select="$QueryModule.dataSources"/>
    144169
     
    147172                        <xsl:with-param name="titleLevel" select="3"/>
    148173                        <xsl:with-param name="content">
    149                                 <ul>
    150                                 <xsl:for-each select="$dataSources">
    151                                         <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
    152                                         <xsl:sort select="TITLE"      order="ascending" data-type="text"/>
    153                                         <li>
    154                                                 <xsl:value-of select="TEXT"/>
    155                                         </li>
    156                                 </xsl:for-each>
    157                                 </ul>
     174                                <xsl:if test="1 = count($dataSources)">
     175                                        <ul>
     176                                        <xsl:for-each select="$dataSources">
     177                                                <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
     178                                                <xsl:sort select="TITLE"      order="ascending" data-type="text"/>
     179                                                <li>
     180                                                        <xsl:value-of select="TEXT"/>
     181                                                </li>
     182                                        </xsl:for-each>
     183                                        </ul>
     184                                </xsl:if>
     185
     186                                <xsl:if test="1 &lt; count($dataSources)">
     187                                        <xsl:value-of select="TEXT"/>
     188                                </xsl:if>
    158189                        </xsl:with-param>
    159190                        <xsl:with-param name="addWikiAttribute" select="true()"/>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/report/configurations_by_file.xslt

    r21701 r22390  
    1818                <summary>Creates a report that contains a list of all module/configurations</summary>
    1919                <description>
     20                        Module File (with Exerciser option) Configs and .def file
     21
     22                        Use Example:
     23                                http://localhost/ibisph-view/view.html?xslt=html/query/module/report/configurations_by_file.xslt&amp;xml=files/query_module.xml
    2024                </description>
    2125        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/report/configurations_by_file_table.xslt

    r21701 r22390  
    1818                <summary>Creates a report that contains a list of all basic module/configurations</summary>
    1919                <description>
     20                        Main Info table grouped by Query Module with Measure, cat, series,
     21                        chart, map, count of data sources and AVs, Func (.def file).
     22
     23                        Use Example:
     24                                http://localhost/ibisph-view/view.html?xslt=html/query/module/report/configurations_by_file_table.xslt&amp;xml=files/query_module.xml
    2025                </description>
    2126        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/report/configurations_func.xslt

    r21701 r22390  
    1818                <summary>Creates a report that contains a list of all module/configurations and the func parameter</summary>
    1919                <description>
     20                        Path, Filename, Config Name, Measure, Fund Value (.def file).
     21                        Use Example:
     22                                http://localhost/ibisph-view/view.html?xslt=html/query/module/report/configurations_func.xslt&amp;xml=files/query_module.xml
    2023                </description>
    2124        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/report/dimension_names.xslt

    r21701 r22390  
    1818                        xincluded files to create a list of unique DIMENSION/NAME
    1919                        values.  Note that this report is based on an XML FILES/FILE type file.
     20
     21                        Use Example:
     22                                http://localhost/ibisph-view/view.html?xslt=html/query/module/report/dimension_names.xslt&amp;xml=files/query_module.xml
    2023                </description>
    2124        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/report/dimension_names_by_file.xslt

    r21701 r22390  
    2020                        called.  Note that this report is based on an XML FILES/FILE type file.
    2121                        Please verify that all desired module files reside within this XML file.
     22
     23                        Use Example:
     24                                http://localhost/ibisph-view/view.html?xslt=html/query/module/report/dimension_names_by_file.xslt&amp;xml=files/query_module.xml
    2225                </description>
    2326        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/result/DataViz.xslt

    r22244 r22390  
    171171<!-- never show this...
    172172                        <xsl:with-param name="showNoteColumn"           select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
     173                        <xsl:with-param name="baseExportFilename" select="concat(normalize-space($queryModule/TITLE), '-', normalize-space($queryConfiguration/TITLE))"/>
    173174-->
    174175                        <xsl:with-param name="baseExportFilename" select="concat($queryModule/TITLE, '-', $queryConfiguration/TITLE)"/>
  • trunk/ibisph-view/src/main/webapp/xslt/json/Kendo.xslt

    r22240 r22390  
    5353        <xsl:param name="Kendo.noteColumnTitle"    select="'Notes'"/>
    5454        <xsl:param name="Kendo.labelColumnTitle"   select="'Label'"/>
    55         <xsl:param name="Kendo.valueAttributeColumnTitle" select="'Record Code'"/>
     55        <xsl:param name="Kendo.valueAttributeColumnTitle" select="'Footnotes'"/>
    5656        <xsl:param name="Kendo.gridFooterRowTitle" select="'Overall'"/>
    5757
  • trunk/ibisph-view/src/main/webapp/xslt/json/LeafletMap.xslt

    r20915 r22390  
    9494                <xsl:param name="geoIDFieldValuePrefixToRemove"/>
    9595
    96                 <xsl:param name="geoJSONName"       select="'GeoCnty'" ibis:doc="choro json layer filename - sans path and .json extension."/>
     96                <xsl:param name="geoJSONName"  select="'GeoCnty'" ibis:doc="choro json layer filename - sans path and .json extension."/>
    9797                <xsl:param name="geoTypeTitle" select="'County'"  ibis:doc="Choro layer title - County, Region"/>
    9898                <xsl:param name="legendTitle"  select="'Count'"   ibis:doc="Legend's value title - typically the measure title"/>
  • trunk/ibisph-view/src/main/webapp/xslt/xml/query/module/ConfigurationIncludeCriteriaExclude.xslt

    r21972 r22390  
    141141        </xsl:template>
    142142
     143
     144        <xsl:template match="text()" mode="ibis.copy"
     145                ibis:doc="normalizes all text() white space.  Provides a safety blanket
     146                        to make sure NAME, TITLE and TEXT elements are cleaned for script/json
     147                        uses etc.  Rules are that NAME and TITLE should be one line without
     148                        leading/trailing spaces for proper lookup/comparisons and json.
     149                "
     150        >
     151                <xsl:value-of select="normalize-space(.)"/>
     152        </xsl:template>
     153       
    143154</xsl:stylesheet>
    144155<!-- ============================= End of File ============================= -->
  • trunk/ibisph/src/main/java/org/ibisph/indicatorprofile/springmvc/databean/EditDataSourceIndicatorViewPeriodDimensionController.java

    r15575 r22390  
    3232
    3333  protected String indicatorViewToDimensionMapModelName = "indicatorViewToDimension";
    34  
     34
    3535  protected String dataBeanFlagValue = "x";
    3636
  • trunk/ibisph/src/main/java/org/ibisph/indicatorprofile/springmvc/databean/SaveIndicatorViewDimensionsController.java

    r15467 r22390  
    11package org.ibisph.indicatorprofile.springmvc.databean;
    22
     3import java.util.ArrayList;
    34import java.util.Enumeration;
     5
     6import org.ibisph.databean.DataBean;
     7import org.ibisph.databean.dao.DataBeanDAOService;
     8import org.ibisph.indicatorprofile.databean.Dimension;
     9import org.ibisph.indicatorprofile.databean.DimensionToIndicatorView;
     10import org.ibisph.indicatorprofile.databean.IndicatorView;
     11import org.ibisph.util.StrLib;
    412import org.springframework.web.servlet.ModelAndView;
    5 
    6 import org.ibisph.databean.dao.DataBeanDAOService;
    7 import org.ibisph.indicatorprofile.databean.DimensionToIndicatorView;
    8 import org.ibisph.util.StrLib;
    913
    1014/**
     
    2125
    2226  protected String pageRequestParameterName = "requestedPageURL";
     27
     28  protected String dataBeanFlagValue = "x";
    2329
    2430
     
    7884//    this.dataBeanDAOService.save(dimensionToIndicatorView);
    7985
     86    boolean indicatorViewMapDimensionNameUpdated = false;
     87
    8088    // Save the dimension usages. This is a non standard request param struct
    8189    // where the param name is a DIMENSION_NAME IF the request param value
     
    99107        this.dataBeanDAOService.save(dimensionToIndicatorView);
    100108      }
     109
     110      // Need to set any geo dim names to the IPV.  This is needed because if
     111      // the user changes geo dims then the view's MAP_DIMENSION_NAME will not
     112      // be correct / out of sync. 
     113      // Discussed with Lois 1/20/2021 that the rule is there will never be a
     114      // case where a "view" will have multiple geo dims with a map.  The
     115      // dataset can but a view will only have one IF a map is wanted.  The
     116      // limitations are that geo comparison values can not be part of an IP
     117      // view.  If a state or US comparison value is wanted then those will have
     118      // to be specific dimension definitions and not from a GeoState or Geo
     119      // Country dimension.
     120
     121      // Find the associated dimension (loop or query) and if GeoFlag then load
     122      // the IPV and set the MAP_DIMENSION_NAME.  Set flag as to not process
     123      // this.
     124      if(!indicatorViewMapDimensionNameUpdated) {
     125        ArrayList<DataBean> dimensionCollection = new ArrayList<DataBean>();
     126        Dimension dimension = new Dimension();
     127        dimension.setFieldValue("GEOGRAPHY_FLAG", this.dataBeanFlagValue);
     128        dimension.setFieldValue("ACTIVE_FLAG",    this.dataBeanFlagValue);
     129        this.dataBeanDAOService.load(dimensionCollection, dimension);
     130        for(DataBean dataBean : dimensionCollection) {
     131          dimension = (Dimension)dataBean;
     132          if(dimension.getName().equals(httpRequestParameterName)) {
     133            IndicatorView indicatorView = new IndicatorView();
     134            indicatorView.setFieldValue("NAME", indicatorViewName);
     135            this.dataBeanDAOService.load(indicatorView);
     136            indicatorView.setFieldValue("MAP_DIMENSION_NAME", httpRequestParameterName);
     137            this.dataBeanDAOService.save(indicatorView);
     138            indicatorViewMapDimensionNameUpdated = true;
     139            break;
     140          }
     141        }
     142      }
    101143    }
    102144
  • trunk/ibisph/src/main/java/org/ibisph/querymodule/service/QueryModuleXML.java

    r21972 r22390  
    157157
    158158    // Test that the CONFIGURATION element exists.  If not, throw. 
    159     Node configuration = XMLLib.getNode(document, "/QUERY_MODULE/CONFIGURATIONS/CONFIGURATION[NAME='" + configurationName + "']");
     159    Node configuration = XMLLib.getNode(document, "/QUERY_MODULE/CONFIGURATIONS/CONFIGURATION[normalize-space(NAME)='" + configurationName + "']");
    160160    if(configuration == null) {
    161161      throw new Exception("Can NOT load query module.  QUERY_MODULE/CONFIGURATION/NAME ["+ configurationName + "] NOT FOUND.");
Note: See TracChangeset for help on using the changeset viewer.