Changeset 25156 in main


Ignore:
Timestamp:
04/29/22 18:13:22 (7 months ago)
Author:
GarthBraithwaite_STG
Message:

300 - fixed default content base path to include trailing /. Added wide grid css xslt params json and script.

Location:
branches/3.0.0/ibisph-view/src/main/webapp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/3.0.0/ibisph-view/src/main/webapp/WEB-INF/config/spring/common.xml

    r24241 r25156  
    5353                        webapp's directory structure (not recommended).
    5454                </description>
    55                 <constructor-arg value="../ibisph-content"/>
     55                <constructor-arg value="../ibisph-content/"/>
    5656        </bean>
    5757        <bean id="commonContentBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
  • branches/3.0.0/ibisph-view/src/main/webapp/css/DataViz.css

    r24695 r25156  
    410410
    411411
    412 .DataViz.Grid *[data-role="grid"]
    413 {
    414         width: 100%;
    415 }
     412
     413.DataViz.Grid footer
     414{
     415        display: inline-block;
     416        max-width: 800px;
     417        width: auto;
     418        margin: 0 auto;
     419}
     420
     421.DataViz.Grid .k-grid-expand
     422{
     423        display: none;
     424        float: right;
     425    padding: 0.9em 0.5em 0.9em 1em;
     426}
     427
     428.DataViz.Grid.WideOverflow
     429{
     430        width: 99vw;
     431        position: relative;
     432        left: calc(50% - 50vw);
     433        padding: 0 0.5em 0 1.25em;              /* my screen looks better vs  padding: 0 2em;  */
     434}
     435.DataViz.Grid.WideOverflow .k-grid
     436{
     437        margin: 0 auto;
     438        display: flex;
     439        flex-direction: column;
     440}
     441.DataViz.Grid.WideOverflow footer
     442{
     443        display: block;
     444}
     445
     446/* not sure needed - likely depends on other combinations ???
     447.DataViz.Grid .k-grid-footer
     448{
     449        width: auto;
     450}
     451*/
     452
    416453/*============================ End of Style Sheet ============================*/
  • branches/3.0.0/ibisph-view/src/main/webapp/xslt/json/Kendo.xslt

    r23488 r25156  
    6060        <xsl:param name="Kendo.defaultMeasureFormatPattern"  select="',##0.##'"/>
    6161
     62
     63        <xsl:param name="Kendo.gridLockColumns"    select="false"
     64                ibis:doc="true = sets the locked of the main cat/series/const/measure
     65                        grid colums.  If only set locked on the last main column then that
     66                        column is listed first with all other columns scrollable even though
     67                        some of those columns are listed before.  As such if true all of the
     68                        main columns are locked.  lockable is true by default.
     69                "
     70        />
     71        <xsl:param name="Kendo.gridColumnWidth"    select="150"
     72                ibis:doc="Controls the main cat/ser/con/measure/note column size (px).
     73                        If ibis option set 0 = auto Kendo size else ibis code will not process
     74                        and uses set value.
     75                "
     76        />   
     77        <xsl:param name="Kendo.gridAVColumnWidth"  select="120"
     78                ibis:doc="Same as Kendo.gridColumnWidth but applies to ancillary value columms."
     79        />
     80        <!-- GRID COLUMN WIDTH NOTES:
     81                - if one column width is not specified then grid widths will be somewhat
     82                        set via code and will result in smaller table.  If both set to 0 or
     83                        both specified then grid will be full size or larger with expand button. 
     84                - Even if setting the width or using the auto size these are still html
     85                        tables and subject to the browser.
     86        -->
    6287
    6388
     
    246271                        "field":  "<xsl:value-of select="$seriesDimensionField/RECORD_FIELD_NAME"/>SortOrder"
    247272                        ,"title": "<xsl:value-of select="$seriesDimensionField/TITLE"/> Sort Order"     
     273                        ,"hidden": true
     274                        ,"locked": <xsl:value-of select="$Kendo.gridLockColumns"/>
     275                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
    248276                        ,"groupHeaderTemplate": "#=items[0].SeriesTitle#"
    249                         ,"hidden": true
    250277                }
    251278                ,{
     
    254281                        ,"attributes": {"class": "SeriesColumn Dimension"}             
    255282                        ,"sortable": false
    256                         <xsl:if test="$showFooterRow">
    257                         ,"footerTemplate": "<div><xsl:value-of select="$Kendo.gridFooterRowTitle"/></div>"
    258                         </xsl:if>
     283                        ,"locked": <xsl:value-of select="$Kendo.gridLockColumns"/>
     284                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
     285                        <xsl:if test="$showFooterRow">,"footerTemplate": "<div><xsl:value-of select="$Kendo.gridFooterRowTitle"/></div>"</xsl:if>
    259286                }
    260287                ,
     
    264291                        ,"title": "<xsl:value-of select="$categoryDimensionField/TITLE"/>"     
    265292                        ,"attributes": {"class": "Dimension"}           
    266                         <xsl:if test="$showFooterRow and (2 gt number($seriesDimensionField/DIMENSION_VALUES_COUNT))">
    267                         ,"footerTemplate": "<xsl:value-of select="$Kendo.gridFooterRowTitle"/>"</xsl:if>
     293                        ,"locked": <xsl:value-of select="$Kendo.gridLockColumns"/>
     294                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
     295                        <xsl:if test="$showFooterRow and (2 gt number($seriesDimensionField/DIMENSION_VALUES_COUNT))">,"footerTemplate": "<xsl:value-of select="$Kendo.gridFooterRowTitle"/>"</xsl:if>
    268296                }<xsl:text/>
    269297                ,{
    270298                        "field":  "<xsl:value-of select="$categoryDimensionField/RECORD_FIELD_NAME"/>SortOrder"
    271299                        ,"title": "<xsl:value-of select="$categoryDimensionField/TITLE"/> Sort Order"   
     300                        ,"hidden": true
     301                        ,"locked": <xsl:value-of select="$Kendo.gridLockColumns"/>
     302                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
    272303                        ,"groupHeaderTemplate": "#=items[0].CategoryTitle#"
    273                         ,"hidden": true
    274304                }
    275305
     
    279309                        ,"title": "<xsl:value-of select="$constantDimensionField/TITLE"/>"     
    280310                        ,"attributes": {"class": "Dimension"}
     311                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
    281312                }
    282313                </xsl:if>
     
    285316                        "field": "MeasureValueTitle"
    286317                        ,"title": "<xsl:value-of select="$measureTitle"/>"
     318                        ,"attributes": {"class": "Value"}
     319                        ,"locked": <xsl:value-of select="$Kendo.gridLockColumns"/>
     320                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
    287321                        ,"template": "#=MeasureValueTitle#"
    288                         ,"attributes": {"class": "Value"}
    289322                        ,"sortable":
    290323                        {
     
    311344                        ,"template": "#=<xsl:value-of select="current()/NAME"/>Title#"
    312345                        ,"attributes": {"class": "Value"}
     346                        <xsl:if test="0 != $Kendo.gridColumnAVWidth">,"width": <xsl:value-of select="$Kendo.gridColumnAVWidth"/></xsl:if>
    313347                        ,"sortable":
    314348                        {
     
    319353                                }
    320354                        }
    321                         <xsl:if test="$showFooterRow">
    322                         ,"footerTemplate":"<xsl:value-of select="$datasetRecordTotalValues/DATASET_RECORD_TOTAL_VALUE[NAME = current()/NAME]/TITLE"/>"</xsl:if>
     355                        <xsl:if test="$showFooterRow">,"footerTemplate":"<xsl:value-of select="$datasetRecordTotalValues/DATASET_RECORD_TOTAL_VALUE[NAME = current()/NAME]/TITLE"/>"</xsl:if>
    323356                }
    324357                </xsl:for-each>
     
    329362                        ,"title": "<xsl:value-of select="$Kendo.labelColumnTitle"/>"
    330363                        ,"attributes": {"class": "Notes"}
     364                        <xsl:if test="0 != $Kendo.gridColumnAVWidth">,"width": <xsl:value-of select="$Kendo.gridColumnAVWidth"/></xsl:if>
    331365                }<xsl:text/>
    332366                </xsl:if>
     
    337371                        ,"title": "<xsl:value-of select="$Kendo.valueAttributeColumnTitle"/>"
    338372                        ,"attributes": {"class": "Notes"}
     373                        <xsl:if test="0 != $Kendo.gridColumnAVWidth">,"width": <xsl:value-of select="$Kendo.gridColumnAVWidth"/></xsl:if>
    339374                }<xsl:text/>
    340375                </xsl:if>
     
    345380                        ,"title": "<xsl:value-of select="$Kendo.noteColumnTitle"/>"
    346381                        ,"attributes": {"class": "Notes"}
     382                        <xsl:if test="0 != $Kendo.gridColumnWidth">,"width": <xsl:value-of select="$Kendo.gridColumnWidth"/></xsl:if>
    347383                }<xsl:text/>
    348384                </xsl:if>
     
    361397                "fileName": "<xsl:value-of select="$baseExportFilename"/>.pdf"
    362398        }
     399
     400
     401<!--
     402        ,"ibis":
     403        {
     404                // If count is this or more then checks size, auto fit, min/max, reduce
     405                // turn off adjusting size set to 0.  turn on for all columns set to 1. 
     406                // Turn on for only big grids set to 5.
     407                "columnCountAdjustSize": 5             
     408                ,"minColumnSize": 100
     409                ,"maxColumnSize": 300
     410                ,"reduceColumnQualifierSize": 300
     411                ,"reduceColumnSizeMultiplier": 0.33
     412                ,"addExpandButton": false                               // only shown if total col size > container size.
     413                ,"expandContainerClass": "WideOverflow" // if set and if needs expansion then added.
     414                ,"forceGridTotalColumnsSize": false             // sets the grid size based on the columns widths.
     415        }
     416-->
     417        ,expandClickHandler: function(e)
     418        {
     419                // grid width auto expands then with overflow already set visible it shows.
     420                e.target.parentElement.parentElement.style.width = e.target.totalColumnsWidth + "px";
     421                if(this.options.ibis.expandContainerClass)
     422                {
     423                        e.target.parentElement.parentElement.parentElement.classList.add(this.options.ibis.expandContainerClass);
     424                }
     425
     426                // hide button
     427                e.target.style.display = "none";
     428
     429                // stop events just in case, return false to ignore href #
     430                e.stopPropagation();
     431                e.cancelBubble = true;
     432                return(false);
     433        }
     434
     435        ,dataBound: function()
     436        {
     437        <![CDATA[
     438                // NOTES:
     439                // - Code is self contained and uses "this", standard js because potential
     440                //              of mult grids per page. 
     441                // - Grids are assumed the same structure within a figure etc.
     442                // - .width returns px suffix.  setting width style needs units suffix.
     443                // - gridContainerWidth is based on the current container and its css defs
     444                //              i.e. if 100% vw you'll never get the expand button etc.
     445                if(!this.options.ibis) return;
     446
     447                var notHiddenColumnCount = 0;
     448                for (var i = 0; i < this.columns.length; i++)
     449                {
     450                        if(!this.columns[i].hidden) notHiddenColumnCount++;
     451                }
     452
     453                var adjustColumnsSize = (this.options.ibis.columnCountAdjustSize && (notHiddenColumnCount >= this.options.ibis.columnCountAdjustSize));
     454                var totalColumnsWidth = 0;
     455                for (var i = 0; i < this.columns.length; i++)
     456                {
     457                        var columnWidth = this.columns[i].width;
     458
     459                        if(adjustColumnsSize)
     460                        {
     461                                // if undefined or 0 then use kendo auto fit
     462                                if(!columnWidth)
     463                                {
     464                                        this.autoFitColumn(i);
     465                                        columnWidth = this.columns[i].width;
     466                                }
     467                                else if(this.options.ibis.reduceColumnQualifierSize && (columnWidth > this.options.ibis.reduceColumnQualifierSize))
     468                                {
     469                                        columnWidth *= this.options.ibis.reduceColumnSizeMultiplier;
     470                                        this.resizeColumn(this.columns[i], columnWidth);
     471                                }
     472
     473                                // if min/max set then test and adjust.
     474                                if(this.options.ibis.minColumnSize && (columnWidth < this.options.ibis.minColumnSize))
     475                                {
     476                                        columnWidth = this.options.ibis.minColumnSize;
     477                                        this.resizeColumn(this.columns[i], columnWidth);
     478                                }
     479                                else if(this.options.ibis.maxColumnSize && (columnWidth > this.options.ibis.maxColumnSize))
     480                                {
     481                                        columnWidth = this.options.ibis.maxColumnSize;
     482                                        this.resizeColumn(this.columns[i], columnWidth);
     483                                }
     484                        }       // end of if adjusting sizing
     485
     486                        if(columnWidth) totalColumnsWidth += columnWidth;
     487                } // end of columns loop
     488
     489                var gridContainerWidth = parseInt(window.getComputedStyle(this.element[0]).width, 10);
     490                var tableWidth         = parseInt(window.getComputedStyle(this.element[0].querySelector("table")).width, 10);
     491
     492                // If the table width is wider than the container width and if the expand
     493                // button is wanted then show the button and set the footer table's sizing.
     494                // else no button but still wide and force then set the class.
     495                if(totalColumnsWidth > gridContainerWidth)
     496                {
     497                        if(this.options.ibis.addExpandButton)
     498                        {
     499                                var expandButton = this.element[0].querySelector(".k-grid-expand");
     500                                expandButton.style.display = "block";
     501                                expandButton.onclick=this.options.expandClickHandler.bind(this);
     502                                expandButton.title="Click here to expand grid to full width";
     503                                expandButton.totalColumnsWidth = totalColumnsWidth;     
     504                                this.element[0].querySelector(".k-grid-footer-wrap table").style.width = "100%";       
     505                        }
     506                        else if(this.options.ibis.expandContainerClass)
     507                        {
     508                                this.element[0].parentElement.classList.add(this.options.ibis.expandContainerClass);
     509                                this.element[0].style.width = (totalColumnsWidth) + "px";
     510                        }
     511                }
     512
     513                // if force size then set the actual grid size
     514                if(this.options.ibis.forceGridTotalColumnsSize && totalColumnsWidth)
     515                {
     516                        this.element[0].style.width = (totalColumnsWidth) + "px";
     517                }
     518
     519                // no matter what sizing is applied need to set the footer width to auto
     520                // because kendo code sets: padding-right: 17px; and width to container width.
     521                this.element[0].querySelector(".k-grid-footer").style.width = "auto";
     522        ]]>
     523        }
     524
    363525}
    364526        </xsl:template>
Note: See TracChangeset for help on using the changeset viewer.