Changeset 6513 in main


Ignore:
Timestamp:
06/04/14 14:37:33 (8 years ago)
Author:
Garth Braithwaite
Message:

view webapp - Removed the jquery UI related css and script as kendo now provides this. Added geostats inplace of simple_statistics.js to include more geo grouping for maps. Added note in the security https.xml file to describe mixed content when including script files. FIxed CP reports to at least compile.

Location:
trunk
Files:
1 added
3 deleted
14 edited
1 moved

Legend:

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

    r5029 r6513  
    1111        if an adopter wants the app can handle this task very easily (assuming
    1212        the app server is setup properly with certs etc.).
     13
     14        IMPORTANT NOTES:
     15        - Outside non HTTPS files can be filtered out by some browsers as this is
     16        a security risk.  This would mostly be references to 3rd party javascript
     17        files that are served up on the vendor's site and not locally.
     18        - Need to make sure ALL content is served up via HTTPS - see the web.xml
     19        and ss.xml requests mappings etc.
    1320
    1421        High Level Steps:
  • trunk/ibisph-view/src/main/webapp/css/_kendo_overrides.css

    r6021 r6513  
    1 /* jQuery overrides */
     1/* Dialog windows */
    22
    3 .ui-widget-overlay
     3.k-window-title
    44{
    5         background:                     #333;
     5        font-weight:                    bold;
    66}
    77
    8 .ui-dialog-titlebar
    9 {
    10         border:                                 1px solid #222;
    11         background:                     #444;
    12 }
    13 .ui-dialog-titlebar .ui-dialog-title
    14 {
    15         color:                                  white;
    16         font-weight:                    bold;
    17 }
    18 .ui-dialog-titlebar .ui-button
    19 {
    20         min-width:                              inherit;
    21         border:                                 0;
    22         background:                     none;
    23         -webkit-box-shadow:             none;
    24         -moz-box-shadow:                none;
    25         box-shadow:                             none;
    26 }
    27 .ui-dialog-titlebar .ui-button .ui-icon-closethick
    28 {
    29         width:                                  32px;
    30         height:                                 32px;
    31         margin-top:                     -14px;
    32         margin-left:                    -14px;
    33         background:                             transparent url('../image/icon/32/closebox.png') no-repeat 0px 0px;
    34 }
    35 
    36 .ui-dialog-content .InnerCanvas
     8.k-window .DialogContent .InnerCanvas
    379{
    3810        margin:                                 5px 0 12px 0;
    3911        padding:                                2px 5px 2px 5px;
    40         background-color:               white;
    4112        overflow:                               auto;
    42         border-top:                     1px solid #444;
    43         border-left:                    1px solid #444;
    44         border-bottom:                  1px solid #ccc;
    45         border-right:                   1px solid #ccc;
    4613}
    47 .ui-dialog-content button
     14
     15.k-window .DialogContent button
    4816{
    4917        margin-left:                    1px;
    5018}
    5119
    52 /* turn off URL links - or host the jquery UI images */
    53 .ui-icon,
    54 .ui-widget-content,
    55 .ui-widget-header,
    56 .ui-state-default,
    57 .ui-widget-content .ui-state-default,
    58 .ui-widget-header  .ui-state-default,
    59 .ui-state-hover,
    60 .ui-widget-content .ui-state-hover,
    61 .ui-widget-header  .ui-state-hover,
    62 .ui-state-focus,
    63 .ui-widget-content .ui-state-focus,
    64 .ui-widget-header  .ui-state-focus,
    65 .ui-state-active,
    66 .ui-widget-content .ui-state-active,
    67 .ui-widget-header  .ui-state-active,
    68 .ui-state-highlight,
    69 .ui-widget-content .ui-state-highlight,
    70 .ui-widget-header  .ui-state-highlight,
    71 .ui-state-error,
    72 .ui-widget-content .ui-state-error,
    73 .ui-widget-header  .ui-state-error,
    74 .ui-state-error,
    75 .ui-progressbar .ui-progressbar-overlay,
    76 .ui-widget-content   .ui-icon,
    77 .ui-widget-header    .ui-icon,
    78 .ui-state-default    .ui-icon,
    79 .ui-state-hover      .ui-icon,
    80 .ui-state-focus      .ui-icon,
    81 .ui-state-active     .ui-icon,
    82 .ui-state-highlight  .ui-icon,
    83 .ui-state-error      .ui-icon,
    84 .ui-state-error-text .ui-icon,
    85 .ui-widget-overlay,
    86 .ui-widget-shadow
    87 { background-image: none; }
    88 
    8920/*============================ End of Style Sheet ============================*/
  • trunk/ibisph-view/src/main/webapp/css/stylesheet.css

    r6150 r6513  
    3939@import url('SocialMedia.css');
    4040
    41 @import url('jquery-ui.css');
    42 @import url('_jquery-ui_overrides.css');
     41@import url('_kendo_overrides.css');
    4342
    4443@import url('_handheld.css') handheld;
  • trunk/ibisph-view/src/main/webapp/js/jquery.leaflet.js

    r6488 r6513  
    215215                                        }
    216216                                }
     217
    217218                                ,dataObject:
    218219                                {
    219220                                        data: null
    220                                         ,geoIDFieldName:            "GeoCnty"
    221                                         ,geoTitleFieldName:         "GeoCntyTitle"
    222                                         ,valueFieldName:            "value"
    223                                         ,valueTitleFieldName:       "valueTitle"
    224                                         ,lowerLimitTitleFieldName:  "lowerLimitTitle"
    225                                         ,upperLimitTitleFieldName:  "upperLimitTitle"
    226                                         ,numeratorTitleFieldName:   "numeratorTitle"
    227                                         ,denominatorTitleFieldName: "denominatorTitle"
    228                                         ,noteFieldName:             "note"
    229                                         ,labelFieldName:            "label"
     221                                        ,fieldName:
     222                                        {
     223                                                geoID:             "GeoCnty"
     224                                                ,geoTitle:         "GeoCntyTitle"
     225                                                ,value:            "value"
     226                                                ,valueTitle:       "valueTitle"
     227                                                ,lowerLimitTitle:  "lowerLimitTitle"
     228                                                ,upperLimitTitle:  "upperLimitTitle"
     229                                                ,numeratorTitle:   "numeratorTitle"
     230                                                ,denominatorTitle: "denominatorTitle"
     231                                                ,note:             "note"
     232                                                ,label:            "label"
     233                                        }
    230234// Example - when doing a map that has 3 total group by dimensions: GeoXXX, Year, and MotherAgeGrp.
    231235// In this example the query result "total" record is to be used for mapping the GeoXXX.
     
    242246                                }
    243247
    244                                 ,group:
    245                                 {
    246                                         type: "jenks"                   // valid values are jenks or anything else.  If jenks then calculated - else struct used as is.
    247                                         ,size: 4
     248                                ,dataClasses:
     249                                {
     250                                        type: "Jenks"                   // valid values are jenks or anything else.  If jenks then calculated - else struct used as is.
     251                                        ,numberOfGroups: 4
    248252                                        ,dataValues: []                 // from the actual datastruct value if type = jenks
    249253                                        ,determinantValues: []  // from the stats jenks break routine if type = jenks
     
    281285                // class vars
    282286                var leafletMap;
     287                var geoStats;
    283288                var legendValuesHTMLContainer;
    284289                var legendChoroplethValuesHTML;
     
    304309                                if((null != dataValuesRecord) && (undefined != dataValuesRecord))
    305310                                {
    306                                         config.choropleth.group.dataValues.push(dataValuesRecord[config.choropleth.dataObject.valueFieldName]);
     311                                        config.choropleth.dataClasses.dataValues.push(dataValuesRecord[config.choropleth.dataObject.fieldName.value]);
    307312                                        $.extend(properties, dataValuesRecord);
    308                                         console.log("Found geo JSON geoID: " + properties[geoIDPropertyName] + ", value added: " + config.choropleth.geoJSON.data.features[i].properties[config.choropleth.dataObject.valueFieldName]);
     313                                        console.log("Found geo JSON geoID: " + properties[geoIDPropertyName] + ", value added: " + config.choropleth.geoJSON.data.features[i].properties[config.choropleth.dataObject.fieldName.value]);
    309314                                }
    310315                        };
     316                        geoStats = new geostats(config.choropleth.dataClasses.dataValues);
    311317
    312318                        // instantiate the main leaflet map object and basic controls
     
    388394                        {
    389395                                var record = config.choropleth.dataObject.data[i];
    390                                 if(record[config.choropleth.dataObject.geoIDFieldName] == geoID)
     396                                if(record[config.choropleth.dataObject.fieldName.geoID] == geoID)
    391397                                {
    392398                                        // need to test for the record's sub fields to match the specified values.
     
    445451                function setupChoroplethValuesAndLegend()
    446452                {
    447                         if("jenks" == config.choropleth.group.type)
    448                         {
    449                                 if(config.choropleth.group.size > config.choropleth.group.dataValues.length) config.choropleth.group.size = config.choropleth.group.dataValues.length;
    450                                 config.choropleth.group.determinantValues = ss.jenks(config.choropleth.group.dataValues, config.choropleth.group.size);
    451 //                              console.log(".setupChoroplethValuesAndLegend - determinantValues: " + config.choropleth.group.determinantValues + ", actual Values: " + config.choropleth.group.dataValues);
    452                         }
     453                        if(config.choropleth.dataClasses.numberOfGroups > config.choropleth.dataClasses.dataValues.length) config.choropleth.dataClasses.numberOfGroups = config.choropleth.dataClasses.dataValues.length;
     454                        if("Jenks" == config.choropleth.dataClasses.type)
     455                        {
     456                                config.choropleth.dataClasses.determinantValues = geoStats.getClassJenks(config.choropleth.dataClasses.numberOfGroups);
     457                        }
     458/*
     459same values so far...
     460else if("SSJenks" == config.choropleth.dataClasses.type)
     461{
     462alert("ss jenks");
     463        config.choropleth.dataClasses.determinantValues = ss.jenks(config.choropleth.dataClasses.dataValues, config.choropleth.dataClasses.numberOfGroups);
     464}
     465*/
     466                        else if("StdDev" == config.choropleth.dataClasses.type)
     467                        {
     468                                config.choropleth.dataClasses.determinantValues = geoStats.getClassStdDeviation(config.choropleth.dataClasses.numberOfGroups);
     469                        }
     470                        else if("GeometricProgression" == config.choropleth.dataClasses.type)
     471                        {
     472                                config.choropleth.dataClasses.determinantValues = geoStats.getClassGeometricProgression(config.choropleth.dataClasses.numberOfGroups);
     473                        }
     474                        else if("ArithmeticProgression" == config.choropleth.dataClasses.type)
     475                        {
     476                                config.choropleth.dataClasses.determinantValues = geoStats.getClassArithmeticProgression(config.choropleth.dataClasses.numberOfGroups);
     477                        }
     478                        else if("Quantile" == config.choropleth.dataClasses.type)
     479                        {
     480                                config.choropleth.dataClasses.determinantValues = geoStats.getClassQuantile(config.choropleth.dataClasses.numberOfGroups);
     481                        }
     482                        else if("Equal" == config.choropleth.dataClasses.type)
     483                        {
     484                                config.choropleth.dataClasses.determinantValues = geoStats.getClassEqInterval(config.choropleth.dataClasses.numberOfGroups);
     485                        }
     486                        else if("equal" == config.choropleth.dataClasses.type)
     487                        {
     488                                config.choropleth.dataClasses.determinantValues = equalBreaks(config.choropleth.dataClasses.dataValues, config.choropleth.dataClasses.numberOfGroups);
     489                        }
     490
     491//geoStats.setColors(["red", "green", "blue", "yellow", "purple", "black"]);
     492console.log(".setupChoroplethValuesAndLegend - determinantValues: " + config.choropleth.dataClasses.determinantValues + ", actual Values: " + config.choropleth.dataClasses.dataValues);
     493//console.log(".setupChoroplethValuesAndLegend - legend HTML: " + geoStats.getHtmlLegend(null, null, 1) );
     494
    453495                        setupChoroplethGroupRangeValues();
    454496
     
    469511                function setupChoroplethGroupRangeValues()
    470512                {
    471                         for(var i=1; i <= config.choropleth.group.determinantValues.length; i++)
    472                         {
    473                                 config.choropleth.group.rangeValues[i] =
    474                                 {
    475                                         startValue:       config.choropleth.group.determinantValues[i-1]
    476                                         ,endValue:        config.choropleth.group.determinantValues[i]
    477                                         ,startValueTitle: config.choropleth.group.determinantValues[i-1]
    478                                         ,endValueTitle:   config.choropleth.group.determinantValues[i]
     513                        for(var i=1; i <= config.choropleth.dataClasses.determinantValues.length; i++)
     514                        {
     515                                config.choropleth.dataClasses.rangeValues[i] =
     516                                {
     517                                        startValue:       config.choropleth.dataClasses.determinantValues[i-1]
     518                                        ,endValue:        config.choropleth.dataClasses.determinantValues[i]
     519                                        ,startValueTitle: config.choropleth.dataClasses.determinantValues[i-1]
     520                                        ,endValueTitle:   config.choropleth.dataClasses.determinantValues[i]
    479521                                };
    480522                        }
     
    482524                        // clean up any range values that might would have been created via
    483525                        // previous UI setting where the # of groups was larger than now.
    484                         for(var i=config.choropleth.group.rangeValues.length-1; i > config.choropleth.group.determinantValues.length; i--)
    485                                 delete config.choropleth.group.rangeValues[i];
     526                        for(var i=config.choropleth.dataClasses.rangeValues.length-1; i > config.choropleth.dataClasses.determinantValues.length; i--)
     527                                delete config.choropleth.dataClasses.rangeValues[i];
    486528                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
    487529
     
    495537                                        "<h4 class='legend-label'>"
    496538                                        + "<i class=\"legend-i\" style=\"background-color: "
    497                                         + config.choropleth.areaColor[config.choropleth.group.size][0]
     539                                        + config.choropleth.areaColor[config.choropleth.dataClasses.numberOfGroups][0]
    498540                                        + "\"></i>" + config.control.legend.noDataValueTitle + "</h4>"
    499541                        ;
    500                         for(var i = 1; i <= config.choropleth.group.size; i++)
     542                        for(var i = 1; i <= config.choropleth.dataClasses.numberOfGroups; i++)
    501543                        {
    502544                                html +=
    503545                                        "<h4 class='legend-label'>"
    504546                                        + "<i class=\"legend-i\" style=\"background-color: "
    505                                         + config.choropleth.areaColor[config.choropleth.group.size][i]
     547                                        + config.choropleth.areaColor[config.choropleth.dataClasses.numberOfGroups][i]
    506548                                        + "\"></i>"
    507                                         + getGroupValueRangeTitle(i)
     549                                        + getDataClassesRangeTitle(i)
    508550                                        + "</h4>"
    509551                                ;
     
    515557                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
    516558
    517                 function getGroupValueRangeTitle(groupIndex)
    518                 {
    519                         if(config.choropleth.group.rangeValues[groupIndex].startValue == config.choropleth.group.rangeValues[groupIndex].endValue)
    520                                 return(getDataValueTitle(config.choropleth.group.rangeValues[groupIndex].startValue));
     559                function getDataClassesRangeTitle(dataClassIndex)
     560                {
     561                        if(config.choropleth.dataClasses.rangeValues[dataClassIndex].startValue == config.choropleth.dataClasses.rangeValues[dataClassIndex].endValue)
     562                                return(getDataValueTitle(config.choropleth.dataClasses.rangeValues[dataClassIndex].startValue));
    521563                        else
    522564                        {
    523565                                var range =
    524                                         getDataValueTitle(config.choropleth.group.rangeValues[groupIndex].startValue)
     566                                        getDataValueTitle(config.choropleth.dataClasses.rangeValues[dataClassIndex].startValue)
    525567                                        + " - " +
    526                                         getDataValueTitle(config.choropleth.group.rangeValues[groupIndex].endValue)
     568                                        getDataValueTitle(config.choropleth.dataClasses.rangeValues[dataClassIndex].endValue)
    527569                                ;
    528570                                return(range);
     
    535577                        for(var i=0; i < config.choropleth.dataObject.data.length; i++)
    536578                        {
    537                                 if(value == config.choropleth.dataObject.data[i][config.choropleth.dataObject.valueFieldName])
    538                                 {
    539                                         if(0 < config.choropleth.dataObject.data[i][config.choropleth.dataObject.valueTitleFieldName].length)
    540                                                 return(config.choropleth.dataObject.data[i][config.choropleth.dataObject.valueTitleFieldName]);
    541                                 }
    542                         }
    543                         return(value);
     579                                if(value == config.choropleth.dataObject.data[i][config.choropleth.dataObject.fieldName.value])
     580                                {
     581                                        if(0 < config.choropleth.dataObject.data[i][config.choropleth.dataObject.fieldName.valueTitle].length)
     582                                                return(config.choropleth.dataObject.data[i][config.choropleth.dataObject.fieldName.valueTitle]);
     583                                }
     584                        }
     585                        var s = value.toString();
     586                        var decimalPlace = s.indexOf(".");
     587                        if(decimalPlace > 4)
     588                                s = s.substring(0, decimalPlace);
     589                        else if(decimalPlace > -1)
     590                                s = s.substring(0, decimalPlace + 3);
     591                        return(s);
    544592                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
    545593
     
    547595                function getChoroplethLayerStyle(feature, layer)
    548596                {
    549                         var groupValue = getGroupValue(feature.properties [config.choropleth.dataObject.valueFieldName]);
    550                         $.extend(feature.properties, {groupValue: groupValue});
    551 
    552                         var fillColor  = getChoroplethColor(groupValue);
     597                        var dataClassIndex = getDataClassIndex(feature.properties [config.choropleth.dataObject.fieldName.value]);
     598                        $.extend(feature.properties, {dataClassIndex: dataClassIndex});
     599
     600                        var fillColor  = getChoroplethColor(dataClassIndex);
    553601                        var layerStyle = config.choropleth.geoJSON.defaultLayerStyle;
    554                         if(0 == groupValue) layerStyle = config.choropleth.geoJSON.noDataLayerStyle;
     602                        if(0 == dataClassIndex) layerStyle = config.choropleth.geoJSON.noDataLayerStyle;
    555603                        $.extend(layerStyle, {fillColor: fillColor});
    556604
     
    561609                // returns the group index assoc with the choro value. If nothing matches/
    562610                // found 0 is returned which results in the default [0] cholor being used.
    563                 function getGroupValue(choroplethValue)
    564                 {
    565                         for(var i=1; i <= config.choropleth.group.size; i++)
    566                         {
    567                                 if( ((1 == i) && (choroplethValue == config.choropleth.group.rangeValues[i].startValue))
     611                function getDataClassIndex(choroplethValue)
     612                {
     613                        for(var i=1; i <= config.choropleth.dataClasses.numberOfGroups; i++)
     614                        {
     615                                if( ((1 == i) && (choroplethValue == config.choropleth.dataClasses.rangeValues[i].startValue))
    568616                                        ||
    569                                         ((choroplethValue >  config.choropleth.group.rangeValues[i].startValue) &&
    570                                          (choroplethValue <= config.choropleth.group.rangeValues[i].endValue))
     617                                        ((choroplethValue >  config.choropleth.dataClasses.rangeValues[i].startValue) &&
     618                                         (choroplethValue <= config.choropleth.dataClasses.rangeValues[i].endValue))
    571619                                ) return(i);
    572620                        }
     
    574622                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
    575623
    576                 // returns color directly - groupValue is a 1 based index. 
    577                 function getChoroplethColor(groupValue)
    578                 {
    579                         if(groupValue > config.choropleth.group.size)
    580                         {
    581                                 console.log(".getChoroplethColor - groupValue Index ["+groupValue+"] outside the range of group size: "+ config.choropleth.group.size);
     624                // returns color directly - dataClassIndex is a 1 based index. 
     625                function getChoroplethColor(dataClassIndex)
     626                {
     627                        if(dataClassIndex > config.choropleth.dataClasses.numberOfGroups)
     628                        {
     629                                console.log(".getChoroplethColor - dataClassIndex Index ["+dataClassIndex+"] outside the range of group numberOfGroupsClasses: "+ config.choropleth.dataClasses.numberOfGroups);
    582630                                return(config.choropleth.areaColor[0][0] );
    583631                        }
    584                         return(config.choropleth.areaColor[config.choropleth.group.size][groupValue]);
     632                        return(config.choropleth.areaColor[config.choropleth.dataClasses.numberOfGroups][dataClassIndex]);
    585633                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
    586634
     
    651699                function getChoroplethFeatureContent(feature)
    652700                {
    653 //              console.log(".getChoroplethFeatureContent groupValue: "+feature.properties.groupValue + ", color: " +getChoroplethColor(feature.properties.groupValue));
     701//              console.log(".getChoroplethFeatureContent dataClassIndex: "+feature.properties.dataClassIndex + ", color: " +getChoroplethColor(feature.properties.dataClassIndex));
    654702                        var searchFor = "[MARKER]";
    655703                        var content =
    656                                 getChoroplethFeatureContentLine("<h4 class=\"Area\">[MARKER]</h4>", searchFor, feature.properties[config.choropleth.dataObject.geoTitleFieldName], feature.properties["TITLE"])
    657                                 + getChoroplethFeatureContentLine("Value: [MARKER]<br/>",      searchFor, feature.properties[config.choropleth.dataObject.valueTitleFieldName], "no data")
    658                                 + getChoroplethFeatureContentLine("Peer Group: [MARKER] (<i style=\"background-color:" + getChoroplethColor(feature.properties.groupValue) + "\"></i>)<br/>", searchFor, feature.properties.groupValue.toString())
    659                                 + getChoroplethFeatureContentLine("Lower Limit: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.lowerLimitTitleFieldName])
    660                                 + getChoroplethFeatureContentLine("Upper Limit: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.upperLimitTitleFieldName])
    661                                 + getChoroplethFeatureContentLine("Numerator: [MARKER]<br/>",  searchFor, feature.properties[config.choropleth.dataObject.numeratorTitleFieldName])
    662                                 + getChoroplethFeatureContentLine("Denominator: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.denominatorTitleFieldName])
    663                                 + getChoroplethFeatureContentLine("Notes: [MARKER]<br/>",      searchFor, feature.properties[config.choropleth.dataObject.noteFieldName])
     704                                getChoroplethFeatureContentLine("<h4 class=\"Area\">[MARKER]</h4>", searchFor, feature.properties[config.choropleth.dataObject.fieldName.geoTitle], feature.properties["TITLE"])
     705                                + getChoroplethFeatureContentLine("Value: [MARKER]<br/>",      searchFor, feature.properties[config.choropleth.dataObject.fieldName.valueTitle], "no data")
     706                                + getChoroplethFeatureContentLine("Peer Group: [MARKER] (<i style=\"background-color:" + getChoroplethColor(feature.properties.dataClassIndex) + "\"></i>)<br/>", searchFor, feature.properties.dataClassIndex.toString())
     707                                + getChoroplethFeatureContentLine("Lower Limit: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.fieldName.lowerLimitTitle])
     708                                + getChoroplethFeatureContentLine("Upper Limit: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.fieldName.upperLimitTitle])
     709                                + getChoroplethFeatureContentLine("Numerator: [MARKER]<br/>",  searchFor, feature.properties[config.choropleth.dataObject.fieldName.numeratorTitle])
     710                                + getChoroplethFeatureContentLine("Denominator: [MARKER]<br/>",searchFor, feature.properties[config.choropleth.dataObject.fieldName.denominatorTitle])
     711                                + getChoroplethFeatureContentLine("Notes: [MARKER]<br/>",      searchFor, feature.properties[config.choropleth.dataObject.fieldName.note])
    664712                        ;
    665713                        return(content);
     
    699747
    700748*/
     749
     750
     751
     752                /**
     753                * Sorts the data, determines the break interval, then loops through all
     754                * the data and sets the determinant value when group count exceeded.
     755                */
     756                function equalBreaks(dataValueArray, numberOfGroupsGroups)
     757                {
     758                        var data = dataValueArray.sort();
     759                        var dataBreakInterval = data.length / numberOfGroupsGroups;
     760                        var determinantValues = [];
     761                        determinantValues[0] = data[0];
     762                        var i = 1;
     763                        var currentGroup = 1;
     764                        while(i < data.length)
     765                        {
     766                                if(i > dataBreakInterval)
     767                                {
     768                                        determinantValues[currentGroup] = data[i];
     769                                        currentGroup++;
     770                                        dataBreakInterval = currentGroup * dataBreakInterval;
     771                                }
     772                                i++;
     773                        }
     774                        determinantValues[numberOfGroupsGroups] = data[i];
     775                        return(determinantValues);
     776                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
     777
     778                               
     779
     780
     781
     782
     783
     784
    701785
    702786
     
    723807//leafletMap.addControl(panelLayers);   
    724808       
    725 
    726809                // =================================== E X P O S E D  F U N C T I O N S
    727         $.fn.leaflet.setGroupSize = function(groupSize)
    728                 {
    729                         config.choropleth.group.size = groupSize;
     810        $.fn.leaflet.setDataClassesCount = function(numberOfGroups)
     811                {
     812                        config.choropleth.dataClasses.numberOfGroups = numberOfGroups;
     813                        setupChoroplethValuesAndLegend();
     814            return(this);
     815                }; //~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~
     816
     817        $.fn.leaflet.setDataClassesType = function(dataClassesType)
     818                {
     819                        config.choropleth.dataClasses.type = dataClassesType;
    730820                        setupChoroplethValuesAndLegend();
    731821            return(this);
  • trunk/ibisph-view/src/main/webapp/xslt/html/LeafletMapGraphic.xslt

    r6488 r6513  
    2626                <script src="{$ibis.urlPrefix}js/leaflet.js"></script>
    2727                <script src="{$ibis.urlPrefix}js/jquery.leaflet.js"></script>
     28                <script src="{$ibis.urlPrefix}js/geostats.js"></script>
    2829                <script src="{$ibis.urlPrefix}js/simple_statistics.js"></script>
    2930        </xsl:template>
     
    5657                <xsl:param name="mapContainerID" select="'map'" ibis:doc="Value that is used as an ID for map.  Default = 'map'."/>
    5758
    58                 <label for="selectJenks">Number of Data Groups: </label>
    59                 <select id="selectJenks">
     59                <label for="mapDataClassesCount">Number of Data Groups: </label>
     60                <select id="mapDataClassesCount">
    6061                        <option value="2">2 classes</option>
    6162                        <option value="3">3 classes</option>
     
    6364                        <option value="5">5 classes</option>
    6465                        <option value="6">6 classes</option>
     66                </select>
     67
     68                <label for="mapDataClassesType">Grouping Type: </label>
     69                <select id="mapDataClassesType">
     70                        <option value="Jenks" selected="selected">Jenks</option>
     71                        <option value="StdDev">Standard Deviation</option>
     72                        <option value="GeometricProgression">Geometric Progression</option>
     73                        <option value="ArithmeticProgression">Arithmetic Progression</option>
     74                        <option value="Quantile">Quantile</option>
     75                        <option value="Equal">Equal</option>
    6576                </select>
    6677
     
    102113                {
    103114                        data: <xsl:value-of select="$javascriptDataStructureVariableName"/>
    104                         ,geoIDFieldName:    "<xsl:value-of select="$geoIDFieldName"/>"
    105                         ,geoTitleFieldName: "<xsl:value-of select="$geoTitleFieldName"/>"
     115                        ,fieldName:
     116                        {
     117                                geoID: "<xsl:value-of select="$geoIDFieldName"/>"
     118                                ,geoTitle: "<xsl:value-of select="$geoTitleFieldName"/>"
     119                        }
    106120<!--
    107121<xsl:message select="'LeafletMapGraphic.requestOptionsJSON - dimensionFieldInclusionCriteria: '"/>
  • trunk/ibisph-view/src/main/webapp/xslt/html/Page.xslt

    r6349 r6513  
    306306        >
    307307                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.js"/>
    308                 <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery-ui.js"/>
    309308        </xsl:template>
    310309
  • trunk/ibisph-view/src/main/webapp/xslt/html/SiteSpecific.xslt

    r6457 r6513  
    104104
    105105
     106        <xsl:template name="Page.standardCSS"
     107                ibis:doc="Provides the common/standard CSS to be used by all the
     108                        pages.  It is recommended that this template be defined high up in
     109                        the import hierarchy for ease of maintenance e.g. not be overridden
     110                        by each specific page type.  The 'html.otherCSS' template is provided
     111                        to handle lower level, page specific CSS links/code.  The default is
     112                        a CSS link to the 'css/stylesheet.css' file."
     113        >
     114                <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.common.min.css" rel="stylesheet"/>
     115                <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.silver.min.css" rel="stylesheet" />
     116                <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.dataviz.min.css" rel="stylesheet" />
     117                <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.dataviz.silver.min.css" rel="stylesheet" />
     118
     119                <link rel="stylesheet" type="text/css" href="{$ibis.urlPrefix}css/stylesheet.css"/>
     120        </xsl:template>
     121
     122
    106123        <xsl:template name="Page.standardScript"
    107124                ibis:doc="Provides the the core standard set of javascript which applies
     
    111128        >
    112129                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.js"/>
    113                 <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery-ui.js"/>
     130                <script src="http://cdn.kendostatic.com/2014.1.318/js/kendo.all.min.js"/>
    114131
    115132                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.tablesorter.js"/>
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/highlight/Highlight.xslt

    r6298 r6513  
    8282                                <xsl:call-template name="ContentContainer.titleTextsNodesetContentBlocks">
    8383                                        <xsl:with-param name="titleLevel" select="3"/>
     84<!--
    8485                                        <xsl:with-param name="titleAndTextsNodeset" select="$communityProfile/OVERVIEWS/OVERVIEW"/>
     86-->
    8587                                </xsl:call-template>
    8688                        </xsl:with-param>
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/highlight/index/SiteSpecific.xslt

    r6034 r6513  
    88>
    99        <xsl:import href="../../SiteSpecific.xslt"/>
     10        <xsl:import href="../../../ContentContainer.xslt"/>
    1011
    1112
     
    9495        </xsl:template>
    9596
     97
     98        <xsl:template name="Page.sectionsContent" ibis:doc="Main page content template.">
     99                <xsl:call-template name="SiteSpecific.overview"/>
     100<!--
     101cn: <xsl:value-of select="$CommunityName"/><br/>
     102cv: <xsl:value-of select="$CommunityValue"/><br/>
     103path: <xsl:value-of select="$Page.indicatorProfileXMLFilePath"/><br/>
     104-->
     105                <h2>Table of Contents</h2>
     106
     107                <a href="{$ibis.urlPrefix}community/highlight/introduction/{$CommunityName}/{$CommunityValue}.html">
     108                        <xsl:value-of select="$communityDimensionValueTitle"/> Quick Facts Page
     109                </a>
     110
     111                <xsl:call-template name="healthTopicItemGroup">
     112                        <xsl:with-param name="headingGroup"   select="'1'"/>
     113                        <xsl:with-param name="title"          select="'Health Outcomes'"/>
     114                        <xsl:with-param name="communityName"  select="$CommunityName"/>
     115                        <xsl:with-param name="communityValue" select="$CommunityValue"/>
     116                </xsl:call-template>
     117
     118                <xsl:call-template name="healthTopicItemGroup">
     119                        <xsl:with-param name="headingGroup"   select="'2'"/>
     120                        <xsl:with-param name="title"          select="'Risk and Resiliency Factors'"/>
     121                        <xsl:with-param name="communityName"  select="$CommunityName"/>
     122                        <xsl:with-param name="communityValue" select="$CommunityValue"/>
     123                </xsl:call-template>
     124
     125                <xsl:call-template name="healthTopicItemGroup">
     126                        <xsl:with-param name="headingGroup"   select="'3'"/>
     127                        <xsl:with-param name="title"          select="'Health Care System Factors'"/>
     128                        <xsl:with-param name="communityName"  select="$CommunityName"/>
     129                        <xsl:with-param name="communityValue" select="$CommunityValue"/>
     130                </xsl:call-template>
     131
     132                <xsl:call-template name="healthTopicItemGroup">
     133                        <xsl:with-param name="headingGroup"   select="'4'"/>
     134                        <xsl:with-param name="title"          select="'Demographic Characteristics'"/>
     135                        <xsl:with-param name="communityName"  select="$CommunityName"/>
     136                        <xsl:with-param name="communityValue" select="$CommunityValue"/>
     137                </xsl:call-template>
     138                <br/>
     139
     140                <xsl:call-template name="SiteSpecific.indexFooter"/>
     141        </xsl:template>
     142
     143
     144        <xsl:template name="healthTopicItemGroup">
     145                <xsl:param name="headingGroup" select="'1'"/>
     146                <xsl:param name="title" select="'Heading Title'"/>
     147                <xsl:param name="communityName"/>
     148                <xsl:param name="communityValue"/>
     149
     150                <xsl:call-template name="ContentContainer.expandable">
     151                        <xsl:with-param name="title" select="$title"/>
     152                        <xsl:with-param name="content">
     153                                <ul>
     154                                        <xsl:for-each select="$Page.communityProfile/INDICATOR_PROFILES/INDICATOR_PROFILE[HEADING_GROUP = $headingGroup]">
     155                                                <xsl:variable name="indicatorViewName" select="current()[INDICATOR_NAME = $Page.indicatorProfileSet/INDICATOR_NAMES/INDICATOR_NAME]/INDICATOR_VIEW_NAME"/>
     156                                                <xsl:if test="string-length($indicatorViewName) != 0">
     157                                                        <xsl:variable name="indicatorView" select="document(concat($Page.indicatorProfileXMLFilePath, '/', $indicatorViewName, '.xml'))/INDICATOR_VIEW"/>
     158                                                        <li>
     159                                                                <a href="{$ibis.urlPrefix}community/highlight/profile/{INDICATOR_VIEW_NAME}/{$communityName}/{$communityValue}.html">
     160                                                                        <xsl:value-of select="ibis:getCompleteIndicatorViewTitle($indicatorView)"/>
     161                                                                </a>
     162                                                        </li>
     163                                                </xsl:if>
     164                                        </xsl:for-each>
     165                                </ul>
     166                        </xsl:with-param>
     167                </xsl:call-template>
     168        </xsl:template>
     169
    96170</xsl:stylesheet>
    97171<!-- ============================= End of File ============================= -->
  • trunk/ibisph-view/src/main/webapp/xslt/html/indicator/profile/view_complete/SiteSpecific.xslt

    r6487 r6513  
    5050
    5151                <script type="text/javascript" src="{$ibis.urlPrefix}js/jquery.wikitohtml.js"/>
    52                 <xsl:call-template name="Kendo.cssAndScript"/>
    5352
    5453                <xsl:if test="$Graphic.datasetMapable">
     
    135134                                <xsl:if test="$Graphic.datasetMapable">
    136135                                        leafletMap = $("#map").leaflet($.extend(siteSpecificLeafletOptionsJSON, requestSpecificLeafletOptionsJSON));
    137                                         $("#selectJenks").change(function () { $("#map").leaflet.setGroupSize(this.value); });
     136                                        $("#mapDataClassesCount").change(function () { $("#map").leaflet.setDataClassesCount(this.value); });
     137                                        $("#mapDataClassesType").change(function () { $("#map").leaflet.setDataClassesType(this.value); });
    138138                                </xsl:if>
    139139       
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/builder/SiteSpecific.xslt

    r6098 r6513  
    8282                -->
    8383
    84                 <div id="usageAgreement" class="ui-dialog-content ui-widget-content">
     84                <div id="usageAgreement" class="DialogContent">
    8585                        <div class="InnerCanvas">
    8686                                The data and information provided through the IBIS-PH Query System are
     
    124124                                dismissal.
    125125                        </div>
    126                         <button type="button" onclick="$('#usageAgreement').dialog('close')" title="Closes this message.">I Agree</button>
     126                        <button type="button" onclick="usageAgreementWindow.close()" title="Closes this message.">I Agree</button>
    127127                </div>
    128128
    129129                <script language="JavaScript" type="text/javascript" src="{$ibis.urlPrefix}js/Cookie.js"/>
    130130                <script language="JavaScript" type="text/javascript">
     131                        var usageAgreementWindow;
    131132                        var agreementCookie = new Cookie("UsageAgreement", null, "<xsl:value-of select="$ibis.urlPrefix"/>");
    132133                        $(document).ready(function()
    133134                        {
    134                                 $("#usageAgreement").dialog({
    135                                         title: "Department of Health IBIS Query System, Data Use Agreement",
    136                                         autoOpen: false,
    137                                         width: "75%",
    138                                         resizable: true,
    139                                         hide: "clip",
    140                                         modal: true
    141                                 });
    142135
    143136                                // Check that the query usage agreement has been shown (session
     
    146139                                // that didn't init the sections until after the confirmation had
    147140                                // been closed.  This was done because input elements bleed
    148                                 // through the overlayed html.
    149                                 if("shown" != agreementCookie.getValue()) $("#usageAgreement").dialog("open");
     141                                // through the overlaied html.
     142                                if("shown" != agreementCookie.getValue())
     143                                {
     144                                        usageAgreementWindow =
     145                                                $("#usageAgreement").kendoWindow({
     146                                                        title: "Department of Health IBIS Query System, Data Use Agreement"
     147                                                        ,width: "75%"
     148                                                        ,resizable: true
     149                                                        ,modal: true
     150                                                        ,visible: false
     151                                                }).data('kendoWindow');
     152                                        usageAgreementWindow.center().open();
     153                                }
    150154                                agreementCookie.setValue("shown", null, "/");
    151155                        });
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/result/SiteSpecific.xslt

    r6488 r6513  
    218218                        <xsl:if test="$Graphic.datasetMapable">
    219219                                leafletMap = $("#map").leaflet($.extend(siteSpecificLeafletOptionsJSON, requestSpecificLeafletOptionsJSON));
    220                                 $("#selectJenks").change(function () { $("#map").leaflet.setGroupSize(this.value); });
     220                                $("#mapDataClassesCount").change(function () { $("#map").leaflet.setDataClassesCount(this.value); });
     221                                $("#mapDataClassesType").change(function () { $("#map").leaflet.setDataClassesType(this.value); });
    221222                        </xsl:if>
    222223                        }); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/ibisph-view/src/main/webapp/xslt/html/user/access/Page.xslt

    r6298 r6513  
    8686                </div>
    8787
    88                 <div id="loggedInModalDialog" class="ui-dialog-content ui-widget-content">
     88                <div id="loggedInModalDialog" class="DialogContent">
    8989                        <div class="InnerCanvas">
    9090                                You are currently logged in as
     
    103103
    104104                <script type="text/javascript">
     105                        var loggedInModalDialog;
    105106                        $(document).ready(function()
    106107                        {
    107                                 $("#loggedInModalDialog").dialog({
    108                                         title: "Already Logged In",
    109                                         autoOpen: false,
    110                                         width: "66%",
    111                                         resizable: true,
    112                                         hide: "clip",
    113                                         modal: true
    114                                 });
    115 
    116108                                if("" != "<xsl:value-of select="$ibis.userProfile/EMAIL_ADDRESS"/>")
    117109                                {
    118                                         $("#loggedInModalDialog").dialog("open");
     110                                        loggedInModalDialog =
     111                                                $("#loggedInModalDialog").dialog({
     112                                                        title: "Already Logged In"
     113                                                        ,visible: false
     114                                                        ,width: "66%"
     115                                                        ,resizable: true
     116                                                        ,modal: true
     117                                                }).data('kendoWindow');
     118                                        loggedInModalDialog.center().open();
    119119                                }
    120120                        });
  • trunk/ibisph-view/src/main/webapp/xslt/html/user/registration/Page.xslt

    r6298 r6513  
    6060                <br/><br/>
    6161       
    62                 <div id="usageAgreement" class="ui-dialog-content ui-widget-content">
     62                <div id="usageAgreement" class="DialogContent">
    6363                        <div class="InnerCanvas">
    6464                                The user preferences registration form simply provides a
     
    105105                                your browser's back button.
    106106                        </div>
    107                         <button type="button" onclick="$('#usageAgreement').dialog('close')" title="Closes this message.">I Agree</button>
     107                        <button type="button" onclick="usageAgreementWindow.close()" title="Closes this message.">I Agree</button>
    108108                </div>
    109109
    110                 <div id="loggedInModalDialog" class="ui-dialog-content ui-widget-content">
     110                <div id="loggedInModalDialog" class="DialogContent">
    111111                        <div class="InnerCanvas">
    112112                                You are currently logged in as
     
    117117                                from each other.
    118118                        </div>
    119                         <button type="button" onclick="$('#loggedInModalDialog').dialog('close')" title="Closes this message.">Close</button>
     119                        <button type="button" onclick="loggedInModalDialog.close()" title="Closes this message.">Close</button>
    120120                </div>
    121121
    122122                <script language="JavaScript" type="text/javascript" src="{$ibis.urlPrefix}js/Cookie.js"></script>
    123123                <script type="text/javascript">
     124                        var usageAgreement;
     125                        var loggedInModalDialog;
    124126                        $(document).ready(function()
    125127                        {
    126                                 $("#usageAgreement").dialog({
    127                                         title: "Department of Health User Preferences Account",
    128                                         autoOpen: false,
    129                                         width: "66%",
    130                                         resizable: true,
    131                                         show: "fade",
    132                                         hide: "clip",
    133                                         modal: true
    134                                 });
    135                                 $("#loggedInModalDialog").dialog({
    136                                         title: "Already Logged In",
    137                                         autoOpen: false,
    138                                         width: "66%",
    139                                         resizable: true,
    140                                         hide: "clip",
    141                                         modal: true
    142                                 });
    143 
    144128                                if("" != "<xsl:value-of select="$ibis.userProfile/EMAIL_ADDRESS"/>")
    145129                                {
    146                                         $("#loggedInModalDialog").dialog("open");
     130                                        loggedInModalDialog =
     131                                                $("#loggedInModalDialog").dialog({
     132                                                        title: "Already Logged In"
     133                                                        ,visible: false
     134                                                        ,width: "66%"
     135                                                        ,resizable: true
     136                                                        ,modal: true
     137                                                }).data('kendoWindow');
     138                                        loggedInModalDialog.center().open();
    147139                                }
    148140                                else
    149141                                {
     142                                        usageAgreement =
     143                                                $("#usageAgreement").dialog({
     144                                                        title: "Department of Health User Preferences Account"
     145                                                        ,visible: false
     146                                                        ,width: "66%"
     147                                                        ,resizable: true
     148                                                        ,modal: true
     149                                                }).data('kendoWindow');
    150150                                        var agreementCookie = new Cookie("RegistrationAgreement", null, "<xsl:value-of select="$ibis.urlPrefix"/>");
    151                                         if("shown" != agreementCookie.getValue()) $("#usageAgreement").dialog("open");
     151                                        if("shown" != agreementCookie.getValue()) usageAgreement.center().open();
    152152                                        agreementCookie.setValue("shown", null, "/");
    153153                                }
Note: See TracChangeset for help on using the changeset viewer.