Ignore:
Timestamp:
01/18/19 10:07:54 (4 years ago)
Author:
GarthBraithwaite_STG
Message:

view - temp commit - middle of ajax block content dev.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ibisph-view/src/main/webapp/xslt/html/indicator/profile/view/Page.xslt

    r17722 r17771  
    3636        <xsl:param name="Page.comparisonDimensionValue" select="'35'"/>
    3737
    38         <xsl:param name="Page.showMap" select="ibis:Graphic.showMap(
     38        <xsl:param name="Page.showMap" ibis:doc="Exposed so that SS can access."
     39                select="ibis:Graphic.showMap(
    3940                        /INDICATOR_VIEW/MAP_NAME,
    4041                        /INDICATOR_VIEW/DIMENSION_USAGES/DIMENSION_USAGE[USAGE='category']/NAME,
     
    7172                <xsl:param name="indicator"/>
    7273                <xsl:param name="indicatorView"/>
    73 
    74                 <xsl:variable name="measureName" select="$indicatorView/MEASURE_NAME"/>
    75                 <xsl:variable name="measure"     select="($indicator//MEASURE[NAME = $measureName])[1]"/>
     74                <xsl:param name="measure" select="$Indicator.measure"/>
    7675
    7776                <xsl:variable name="recordDimensionFields">
     
    8988                        </xsl:call-template>
    9089                </xsl:variable>
     90                <xsl:variable name="valueAttributeNames" select="distinct-values($indicatorViewDatasetRecords//VALUE_ATTRIBUTE_NAME)"/>
    9191
    9292                <xsl:call-template name="ContentContainer.expandable">
     
    113113                                                <xsl:with-param name="containerID" select="'map'"/>
    114114                                                <xsl:with-param name="title" select="ibis:getIndicatorViewMapTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
    115                                         </xsl:call-template>
    116                                         <xsl:call-template name="Indicator.contentBlock">
    117                                                 <xsl:with-param name="content" select="$indicatorView/MAP_NARRATIVE"/>
    118                                                 <xsl:with-param name="contentBlockType" select="'fixed'" tunnel="yes"/>
     115                                                <xsl:with-param name="footerContent" select="$indicatorView/MAP_NARRATIVE"/>
    119116                                        </xsl:call-template>
    120117                                </xsl:with-param>
     
    127124                <xsl:if test="$Page.showChart">
    128125                        <xsl:call-template name="ContentContainer.expandable">
    129                                 <xsl:with-param name="title" select="if('Line'=$indicatorView/CHART_NAME) then 'Trend' else 'Chart'"/>
     126                        <xsl:with-param name="title" select="if('Line'=$indicatorView/CHART_NAME) then 'Trend' else 'Chart'"/>
    130127                                <xsl:with-param name="content">
    131128                                        <xsl:call-template name="Graphic.chartContainer">
    132                                                 <xsl:with-param name="containerID" select="'chart'"/>
    133                                         </xsl:call-template>
    134                                         <xsl:call-template name="Indicator.contentBlock">
    135                                                 <xsl:with-param name="content" select="$indicatorView/CHART_NARRATIVE"/>
    136                                                 <xsl:with-param name="contentBlockType" select="'fixed'" tunnel="yes"/>
     129                                                <xsl:with-param name="containerID"   select="'chart'"/>
     130                                                <xsl:with-param name="footerContent" select="$indicatorView/CHART_NARRATIVE"/>
    137131                                        </xsl:call-template>
    138132                                </xsl:with-param>
     
    159153                                <xsl:call-template name="Indicator.dataNotes">
    160154                                        <xsl:with-param name="title"         select="''"/>
    161                                         <xsl:with-param name="measure"       select="$Indicator.measure"/>
     155                                        <xsl:with-param name="measure"       select="$measure"/>
    162156                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
    163157                                </xsl:call-template>
     
    166160                </xsl:call-template>
    167161
    168                 <xsl:variable name="valueAttributeNames" select="distinct-values($indicatorViewDatasetRecords//VALUE_ATTRIBUTE_NAME)"/>
    169162                <xsl:call-template name="ContentContainer.expandable">
    170163                        <xsl:with-param name="title" select="'Data Table'"/>
    171164                        <xsl:with-param name="content">
    172                                 <div class="Graphic Grid ScrollableContainer">
    173                                         <div id="grid"></div>
    174                                         <xsl:call-template name="Graphic.valueAttributeFootnote">
    175                                                 <xsl:with-param name="valueAttributeNames" select="$valueAttributeNames"/>
    176                                                 <xsl:with-param name="valueAttributes"     select="$Indicator.valueAttributes"/>
    177                                         </xsl:call-template>
    178                                 </div>
     165                                <xsl:call-template name="Graphic.gridContainer">
     166                                        <xsl:with-param name="containerID"   select="'grid'"/>
     167                                        <xsl:with-param name="valueAttributeNames" select="$valueAttributeNames"/>
     168                                        <xsl:with-param name="valueAttributes"     select="$Indicator.valueAttributes"/>
     169                                </xsl:call-template>
    179170                        </xsl:with-param>
    180171                        <xsl:with-param name="show" select="false()"/>
     
    234225                <xsl:call-template name="Indicator.allDates"/>
    235226
    236                 <xsl:call-template name="Page.leafletKendoScript">
    237                         <xsl:with-param name="indicatorView" select="$indicatorView"/>
    238                         <xsl:with-param name="indicatorViewDatasetRecords" select="$indicatorViewDatasetRecords"/>
     227                <xsl:variable name="ancillaryValueNames" select="distinct-values($indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/ANCILLARY_VALUE_USAGES/ANCILLARY_VALUE_USAGE/NAME)"/>
     228                <xsl:variable name="measureValueFormatPattern" select="($Indicator.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN)[1]"/>
     229                <xsl:call-template name="Graphic.choroplethMapJavaScript"/>
     230                <xsl:call-template name="Graphic.leafletKendoScript">
     231                        <xsl:with-param name="scriptContainerID"     select="concat($indicatorView/NAME, '_script')"/>
     232                        <xsl:with-param name="dimensions"            select="$Indicator.dimensions"/>
     233                        <xsl:with-param name="datasetRecords"        select="$indicatorViewDatasetRecords"/>
    239234                        <xsl:with-param name="recordDimensionFields" select="$recordDimensionFields"/>
    240                         <xsl:with-param name="measure"       select="$Indicator.measure"/>
    241                         <xsl:with-param name="showMap"       select="$Page.showMap"/>
     235                        <xsl:with-param name="recordAncillaryValueFields">
     236                                <xsl:call-template name="Interactive.getIndicatorRecordAncillaryValueFields">
     237                                        <xsl:with-param name="indicator"     select="$indicator"/>
     238                                        <xsl:with-param name="indicatorView" select="$indicatorView"/>
     239                                        <xsl:with-param name="ancillaryValueNames" select="$ancillaryValueNames"/>
     240                                        <xsl:with-param name="ancillaryValues" select="$Indicator.ancillaryValues"/>
     241                                        <xsl:with-param name="valueTypes"      select="$Indicator.valueTypes"/>
     242                                        <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
     243                                </xsl:call-template>
     244                        </xsl:with-param>
     245
     246                        <xsl:with-param name="measure" select="$measure"/>
     247                        <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
     248
     249                        <xsl:with-param name="showMap"        select="$Page.showMap"/>
     250                        <xsl:with-param name="mapName"        select="$indicatorView/MAP_NAME"/>
     251                        <xsl:with-param name="geoJSONName"    select="$indicatorView/MAP_DIMENSION_NAME"/>
     252                        <xsl:with-param name="geoIDFieldName" select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/>
     253                        <xsl:with-param name="geoIDFieldValuePrefixToRemove" select="concat($indicatorView/MAP_DIMENSION_NAME, '.')"/>
     254                        <xsl:with-param name="geoTypeTitle"  select="ibis:getDimensionTitle($indicator//DIMENSIONS/DIMENSION[NAME = $indicatorView/MAP_DIMENSION_NAME])"/>
     255                        <xsl:with-param name="mapComparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
     256
    242257                        <xsl:with-param name="showChart"     select="$Page.showChart"/>
     258                        <xsl:with-param name="chartName"     select="$indicatorView/CHART_NAME"/>
     259                        <xsl:with-param name="chartTitle"    select="ibis:getIndicatorViewChartTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
     260
     261                        <xsl:with-param name="showGrid"      select="true()"/>
    243262                        <xsl:with-param name="showValueAttributeColumn" select="0 != count($valueAttributeNames)"/>
     263                        <xsl:with-param name="showLabelColumn"          select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
     264<!-- never show this...
     265                        <xsl:with-param name="showNoteColumn"           select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
     266-->
     267
    244268                        <xsl:with-param name="baseExportFilename" select="ibis:getCompleteIndicatorViewTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
    245269                </xsl:call-template>
     
    248272
    249273
    250         <xsl:template name="Page.leafletKendoScript" ibis:doc="Provides the kendo and leaflet javascript.">
    251                 <xsl:param name="indicatorView"/>
    252                 <xsl:param name="indicatorViewDatasetRecords"/>
    253                 <xsl:param name="recordDimensionFields"/>
    254 
    255                 <xsl:param name="measure"/>
    256                 <xsl:param name="showMap"   select="$Page.showMap"/>
    257                 <xsl:param name="showChart" select="$Page.showChart"/>
    258                 <xsl:param name="showValueAttributeColumn" select="false()"/>
    259                 <xsl:param name="baseExportFilename" select="$indicatorView/TITLE"/>
    260 
    261                 <xsl:variable name="measureValueFormatPattern" select="($Indicator.valueTypes/VALUE_TYPE[NAME = $measure/VALUE_TYPE_NAME]/XSLT_FORMAT_PATTERN)[1]"/>
    262                 <xsl:variable name="ancillaryValueNames" select="distinct-values($indicator/DATASETS/DATASET[NAME = $indicatorView/DATASET_NAMES/DATASET_NAME]/ANCILLARY_VALUE_USAGES/ANCILLARY_VALUE_USAGE/NAME)"/>
    263                 <xsl:variable name="recordAncillaryValueFields">
    264                         <xsl:call-template name="Interactive.getIndicatorRecordAncillaryValueFields">
    265                                 <xsl:with-param name="indicator"     select="$indicator"/>
    266                                 <xsl:with-param name="indicatorView" select="$indicatorView"/>
    267                                 <xsl:with-param name="ancillaryValueNames" select="$ancillaryValueNames"/>
    268                                 <xsl:with-param name="ancillaryValues" select="$Indicator.ancillaryValues"/>
    269                                 <xsl:with-param name="valueTypes"      select="$Indicator.valueTypes"/>
    270                                 <xsl:with-param name="measureValueFormatPattern" select="$measureValueFormatPattern"/>
    271                         </xsl:call-template>
    272                 </xsl:variable>
    273 
    274                 <xsl:if test="$showMap">
    275                         <xsl:call-template name="Graphic.choroplethMapJavaScript"/>
    276                 </xsl:if>
    277                 <script type="text/javascript" src="{$ibis.urlPrefix}js/jszip.js"/>
    278                 <script type="text/javascript">
    279                         var records =
    280                         [<xsl:text>&#10;</xsl:text>
    281                                 <xsl:call-template name="Dataset.getDatasetRecordsJSON">
    282                                         <xsl:with-param name="dimensions"                 select="$Indicator.dimensions"/>
    283                                         <xsl:with-param name="datasetRecords"             select="$indicatorViewDatasetRecords"/>
    284                                         <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
    285                                         <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
    286                                         <xsl:with-param name="measureValueFormatPattern"  select="$measureValueFormatPattern"/>
    287                                 </xsl:call-template>
    288                         ];
    289 
    290                         var kendoDataSource = new kendo.data.DataSource(
    291                                 <xsl:call-template name="Kendo.dataSourceConstructorJSON">
    292                                         <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
    293                                         <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
    294                                         <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
    295                                 </xsl:call-template>
    296                         );
    297 
    298                         var kendoGridConstructorJSON = $.extend
    299                         (true, {}
    300                                 ,<xsl:call-template name="Kendo.baseGridJSON"/>
    301                                 ,<xsl:call-template name="Kendo.namedConfigurationJSON">
    302                                         <xsl:with-param name="configurationName" select="'IndicatorProfileGrid'"/>
    303                                 </xsl:call-template>
    304                                 ,<xsl:call-template name="Kendo.requestGridJSON">
    305                                         <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
    306                                         <xsl:with-param name="measure" select="$measure"/>
    307                                         <xsl:with-param name="recordDimensionFields"      select="$recordDimensionFields"/>
    308                                         <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
    309                                         <xsl:with-param name="showValueAttributeColumn" select="$showValueAttributeColumn"/>
    310                                         <xsl:with-param name="showLabelColumn"          select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
    311                                         <!-- Never show the note column
    312                                         <xsl:with-param name="showNoteColumn"           select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
    313                                         -->
    314                                 </xsl:call-template>
    315                         );
    316 
    317                         <xsl:if test="$showMap">
    318                         var leafletMapConstructorJSON = $.extend
    319                                 (true, {}
    320 ,<xsl:call-template name="LeafletMap.baseJSON"/>
    321 ,<xsl:call-template name="LeafletMap.namedConfigurationJSON">
    322         <xsl:with-param name="configurationName" select="$indicatorView/MAP_NAME"/>
    323 </xsl:call-template>
    324 ,<xsl:call-template name="LeafletMap.requestJSON">
    325 <!--    <xsl:with-param name="mapTitle"      select="'Choropleth'"/> -->
    326         <xsl:with-param name="mapType"       select="'choropleth'"/>
    327 </xsl:call-template>
    328 ,<xsl:call-template name="LeafletMap.choroplethJSON">
    329         <xsl:with-param name="javascriptRecordArrayVariableName" select="'records'"/>
    330         <xsl:with-param name="geoJSONName"      select="$indicatorView/MAP_DIMENSION_NAME"/>
    331         <xsl:with-param name="geoIDFieldName"   select="$recordDimensionFields/RECORD_DIMENSION_FIELD[DIMENSION_NAMES/DIMENSION_NAME = $indicatorView/MAP_DIMENSION_NAME]/NAME"/>
    332         <xsl:with-param name="geoIDFieldValuePrefixToRemove"   select="concat($indicatorView/MAP_DIMENSION_NAME, '.')"/>
    333         <xsl:with-param name="legendTitle"   select="$measure/TITLE"/>
    334         <xsl:with-param name="geoTypeTitle"  select="ibis:getDimensionTitle($indicator//DIMENSIONS/DIMENSION[NAME = $indicatorView/MAP_DIMENSION_NAME])"/>
    335         <xsl:with-param name="reverseColors" select="$measure/DESIRABLE_VALUE = 1"/>
    336         <xsl:with-param name="desirableIndexValue" select="$measure/DESIRABLE_VALUE"/>
    337 
    338 <xsl:with-param name="comparisonValue" select="$indicatorViewDatasetRecords/RECORD[ DIMENSIONS[ (2 = count(DIMENSION)) and DIMENSION[(NAME = $Page.comparisonDimensionName)     and (VALUE = $Page.comparisonDimensionValue)]]]/MEASURE/VALUE"/>
    339 
    340 </xsl:call-template>
    341                                 );
    342                         </xsl:if>
    343 
    344 // GARTH TODO: remove
    345 <xsl:message select="'gggggggggggggg'"/>
    346 <xsl:message select="count($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
    347 <xsl:message select="exists($indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)])"/>
    348 <xsl:message select="$indicatorViewDatasetRecords/RECORD[0 != string-length(LABEL)]"/>
    349 <xsl:message select="'xxxxxxxxxxxx'"/>
    350 <xsl:message select="count($indicatorViewDatasetRecords/RECORD[0 != string-length(NOTE)])"/>
    351 <xsl:message select="'zzzzzzzzzz'"/>
    352 <xsl:message select="string-length($indicatorViewDatasetRecords/RECORD/NOTE)"/>
    353 
    354 
    355                         <xsl:if test="$showChart">
    356                         var chartWidthVariable = $(".ExpandableContent").innerWidth();
    357                         var kendoChartConstructorJSON = $.extend
    358                         (true, {}
    359                                 ,<xsl:call-template name="Kendo.baseChartJSON"/>
    360                                 ,<xsl:call-template name="Kendo.namedConfigurationJSON">
    361                                         <xsl:with-param name="configurationName" select="$indicatorView/CHART_NAME"/>
    362                                 </xsl:call-template>
    363                                 ,<xsl:call-template name="Kendo.requestChartJSON">
    364                                         <xsl:with-param name="kendoDataSourceJavascriptVariableName" select="'kendoDataSource'"/>
    365                                         <xsl:with-param name="title"         select="ibis:getIndicatorViewChartTitle($indicator, $indicatorView, $Indicator.dimensions)"/>
    366                                         <xsl:with-param name="seriesTitle"   select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/TITLE"/>
    367                                         <xsl:with-param name="categoryTitle" select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/TITLE"/>
    368                                         <xsl:with-param name="valueTitle"    select="$measure/TITLE"/>
    369 
    370                                         <xsl:with-param name="seriesFieldName"    select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/NAME"/>
    371                                         <xsl:with-param name="categoryFieldName"  select="$recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='category']/NAME"/>
    372 
    373                                         <xsl:with-param name="includeDatasetSeries" select="1 &lt; $recordDimensionFields/RECORD_DIMENSION_FIELD[USAGE='series']/VALUE_COUNT"/>
    374                                         <xsl:with-param name="recordAncillaryValueFields" select="$recordAncillaryValueFields"/>
    375                                 </xsl:call-template>
    376                         );
    377 
    378                         // have to manually add this because Kendo can't.  See:
    379                         // https://docs.telerik.com/kendo-ui/styles-and-layout/using-kendo-in-responsive-web-pages
    380                         // another option: $(window).on("resize", function() { kendo.resize($(".chart-wrapper")); });
    381                         $(window).resize(resizeKendoChart);
    382 
    383                         console.debug("IP.Page.xslt (%o, kendoChartConstructorJSON, (JSON.stringify(kendoChartConstructorJSON):");
    384                         console.debug("%o", kendoChartConstructorJSON);
    385                         console.debug(JSON.stringify(kendoChartConstructorJSON,null,2)); 
    386                         </xsl:if>
    387 
    388 
    389                         var $kendoGrid;
    390                         var $kendoChart;
    391                         var $leafletMap;
    392                         $(document).ready(function()
    393                         {
    394                         <xsl:if test="$showMap">
    395                                 $leafletMap = $("#map").leaflet(leafletMapConstructorJSON);
    396                         </xsl:if>
    397                         <xsl:if test="$showChart">
    398                                 $kendoChart = $("#chart").kendoChart(kendoChartConstructorJSON);
    399                         </xsl:if>
    400                                 $kendoGrid  = $("#grid").kendoGrid(kendoGridConstructorJSON);
    401 
    402                                 // "read" fires the "change" event of the dataSource and any objects
    403                                 // that ref the data source will be bound.  This needs to occur
    404                                 // after the grid and chart are created because .autoBind = false.
    405                                 // Can also fire load by issuing a sort:
    406                                 // $kendoGrid.getKendoGrid().dataSource.sort({field: "CategorySortOrder", dir: "asc"});
    407                                 kendoDataSource.read();
    408 
    409                                 // Kendo charts have an issue sizing the widget to the full width
    410                                 // when the chart's container starts out hidden.  Tried numerous
    411                                 // things with timers and setting the width to the main content
    412                                 // control to firing resize when the control's input is changed.
    413                                 // If set the width then even as the window resizes the chart does
    414                                 // NOT change its size.  So below code was commented out and the
    415                                 // input on change calls the resize func. 
    416                                 // var chartContainerWidth = $(".ExpandableContent").innerWidth();
    417                                 // $kendoChart.getKendoChart().options.chartArea.width = chartContainerWidth;
    418                         }); //~~~~~~~~~~~~~~~~~~~~ End of Ready Function ~~~~~~~~~~~~~~~~~~~
    419 
    420 
    421                         // Called via the chart's expandable content input element's onchange
    422                         // firing this code.  Also bound to the windonws resize event to
    423                         // properly resize the chart to fit the container.
    424                         function resizeKendoChart()
    425                         {
    426                                 kendo.resize( $(".k-chart") );
    427                                 // another option: $kendoChart.getKendoChart().resize();
    428                         } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
    429                
    430 
    431                         var baseExportFilename = "<xsl:value-of select="$baseExportFilename"/>";
    432 
    433                         function exportGrid()
    434                         {
    435                                 var grid = $kendoGrid.getKendoGrid();
    436                                 grid.options.excel.fileName = baseExportFilename + " - data.xlsx";
    437                                 grid.saveAsExcel();
    438                         } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
    439 
    440                         function exportChart()
    441                         {
    442                                 var chart = $kendoChart.getKendoChart();
    443 
    444                                 chart.exportImage().done
    445                                 (
    446                                         function(data)
    447                                         {
    448                                                 kendo.saveAs
    449                                                 ({
    450                                                         dataURI: data
    451                                                         ,fileName: baseExportFilename + ".png"
    452                                                 });
    453                                         }
    454                                 );
    455 
    456 /* doesn't work
    457                                 chart.saveAsPDF();
    458                                 chart.exportPDF().done( function(data) { kendo.saveAs(); } );
    459 dataURI: "data:text/plain,Report title and text",
    460 */
    461                                 chart.exportPDF().done
    462                                 (
    463                                         function(data)
    464                                         {
    465                                                 kendo.saveAs
    466                                                 ({
    467                                                         dataURI: data
    468                                                         ,fileName: baseExportFilename + " - chart.pdf"
    469                                                 });
    470                                         }
    471                                 );
    472                         } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
    473 
    474                         function exportMap()
    475                         {
    476                                 alert("Map export is not current supported.");
    477                         } //~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~
    478274
    479275<!--
     
    634430-->
    635431
    636                 </script>
    637 
    638         </xsl:template>
    639 
    640432</xsl:stylesheet>
    641433<!-- ============================= End of File ============================= -->
Note: See TracChangeset for help on using the changeset viewer.