diff --git a/Rakefile b/Rakefile index 8dc3999..2da3dc4 100644 --- a/Rakefile +++ b/Rakefile @@ -76,6 +76,10 @@ js/Storytelling/Storytelling.js js/Storytelling/StorytellingConfig.js js/Storytelling/StorytellingGui.js js/Storytelling/StorytellingWidget.js +js/Datafilter/Datafilter.js +js/Datafilter/DatafilterConfig.js +js/Datafilter/DatafilterGui.js +js/Datafilter/DatafilterWidget.js js/LineOverlay/LineOverlay.js js/LineOverlay/LineOverlayConfig.js js/LineOverlay/LineOverlayWidget.js diff --git a/css/platin.css b/css/platin.css new file mode 100644 index 0000000..e1bfc8d --- /dev/null +++ b/css/platin.css @@ -0,0 +1,3159 @@ +div.olMap { + z-index: 0; + padding: 0 !important; + margin: 0 !important; + cursor: default; +} + +div.olMapViewport { + text-align: left; + -ms-touch-action: none; +} + +div.olLayerDiv { + -moz-user-select: none; + -khtml-user-select: none; +} + +.olLayerGoogleCopyright { + left: 2px; + bottom: 2px; +} +.olLayerGoogleV3.olLayerGoogleCopyright { + right: auto !important; +} +.olLayerGooglePoweredBy { + left: 2px; + bottom: 15px; +} +.olLayerGoogleV3.olLayerGooglePoweredBy { + bottom: 15px !important; +} +/* GMaps should not set styles on its container */ +.olForeignContainer { + opacity: 1 !important; +} +.olControlAttribution { + font-size: smaller; + left: 3px; + bottom: 1.5em; + position: absolute; + display: block; +} +.olControlScale { + right: 3px; + bottom: 3em; + display: block; + position: absolute; + font-size: smaller; +} +.olControlScaleLine { + display: block; + position: absolute; + left: 10px; + bottom: 15px; + font-size: xx-small; +} +.olControlScaleLineBottom { + border: solid 2px black; + border-bottom: none; + margin-top:-2px; + text-align: center; +} +.olControlScaleLineTop { + border: solid 2px black; + border-top: none; + text-align: center; +} + +.olControlPermalink { + right: 3px; + bottom: 1.5em; + display: block; + position: absolute; + font-size: smaller; +} + +div.olControlMousePosition { + bottom: 0; + right: 3px; + display: block; + position: absolute; + font-family: Arial; + font-size: smaller; +} + +.olControlOverviewMapContainer { + position: absolute; + bottom: 0; + right: 0; +} + +.olControlOverviewMapElement { + padding: 10px 18px 10px 10px; + background-color: #00008B; + -moz-border-radius: 1em 0 0 0; +} + +.olControlOverviewMapMinimizeButton, +.olControlOverviewMapMaximizeButton { + height: 18px; + width: 18px; + right: 0; + bottom: 80px; + cursor: pointer; +} + +.olControlOverviewMapExtentRectangle { + overflow: hidden; + background-image: url("img/blank.gif"); + cursor: move; + border: 2px dotted red; +} +.olControlOverviewMapRectReplacement { + overflow: hidden; + cursor: move; + background-image: url("img/overview_replacement.gif"); + background-repeat: no-repeat; + background-position: center; +} + +.olLayerGeoRSSDescription { + float:left; + width:100%; + overflow:auto; + font-size:1.0em; +} +.olLayerGeoRSSClose { + float:right; + color:gray; + font-size:1.2em; + margin-right:6px; + font-family:sans-serif; +} +.olLayerGeoRSSTitle { + float:left;font-size:1.2em; +} + +.olPopupContent { + padding:5px; + overflow: auto; +} + +.olControlNavigationHistory { + background-image: url("img/navigation_history.png"); + background-repeat: no-repeat; + width: 24px; + height: 24px; + +} +.olControlNavigationHistoryPreviousItemActive { + background-position: 0 0; +} +.olControlNavigationHistoryPreviousItemInactive { + background-position: 0 -24px; +} +.olControlNavigationHistoryNextItemActive { + background-position: -24px 0; +} +.olControlNavigationHistoryNextItemInactive { + background-position: -24px -24px; +} + +div.olControlSaveFeaturesItemActive { + background-image: url(img/save_features_on.png); + background-repeat: no-repeat; + background-position: 0 1px; +} +div.olControlSaveFeaturesItemInactive { + background-image: url(img/save_features_off.png); + background-repeat: no-repeat; + background-position: 0 1px; +} + +.olHandlerBoxZoomBox { + border: 2px solid red; + position: absolute; + background-color: white; + opacity: 0.50; + font-size: 1px; + filter: alpha(opacity=50); +} +.olHandlerBoxSelectFeature { + border: 2px solid blue; + position: absolute; + background-color: white; + opacity: 0.50; + font-size: 1px; + filter: alpha(opacity=50); +} + +.olControlPanPanel { + top: 10px; + left: 5px; +} + +.olControlPanPanel div { + background-image: url(img/pan-panel.png); + height: 18px; + width: 18px; + cursor: pointer; + position: absolute; +} + +.olControlPanPanel .olControlPanNorthItemInactive { + top: 0; + left: 9px; + background-position: 0 0; +} +.olControlPanPanel .olControlPanSouthItemInactive { + top: 36px; + left: 9px; + background-position: 18px 0; +} +.olControlPanPanel .olControlPanWestItemInactive { + position: absolute; + top: 18px; + left: 0; + background-position: 0 18px; +} +.olControlPanPanel .olControlPanEastItemInactive { + top: 18px; + left: 18px; + background-position: 18px 18px; +} + +.olControlZoomPanel { + top: 71px; + left: 14px; +} + +.olControlZoomPanel div { + background-image: url(img/zoom-panel.png); + position: absolute; + height: 18px; + width: 18px; + cursor: pointer; +} + +.olControlZoomPanel .olControlZoomInItemInactive { + top: 0; + left: 0; + background-position: 0 0; +} + +.olControlZoomPanel .olControlZoomToMaxExtentItemInactive { + top: 18px; + left: 0; + background-position: 0 -18px; +} + +.olControlZoomPanel .olControlZoomOutItemInactive { + top: 36px; + left: 0; + background-position: 0 18px; +} + +/* + * When a potential text is bigger than the image it move the image + * with some headers (closes #3154) + */ +.olControlPanZoomBar div { + font-size: 1px; +} + +.olPopupCloseBox { + background: url("img/close.gif") no-repeat; + cursor: pointer; +} + +.olFramedCloudPopupContent { + padding: 5px; + overflow: auto; +} + +.olControlNoSelect { + -moz-user-select: none; + -khtml-user-select: none; +} + +.olImageLoadError { + background-color: pink; + opacity: 0.5; + filter: alpha(opacity=50); /* IE */ +} + +/** + * Cursor styles + */ + +.olCursorWait { + cursor: wait; +} +.olDragDown { + cursor: move; +} +.olDrawBox { + cursor: crosshair; +} +.olControlDragFeatureOver { + cursor: move; +} +.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown { + cursor: -moz-grabbing; +} + +/** + * Layer switcher + */ +.olControlLayerSwitcher { + position: absolute; + top: 25px; + right: 0; + width: 20em; + font-family: sans-serif; + font-weight: bold; + margin-top: 3px; + margin-left: 3px; + margin-bottom: 3px; + font-size: smaller; + color: white; + background-color: transparent; +} + +.olControlLayerSwitcher .layersDiv { + padding-top: 5px; + padding-left: 10px; + padding-bottom: 5px; + padding-right: 10px; + background-color: darkblue; +} + +.olControlLayerSwitcher .layersDiv .baseLbl, +.olControlLayerSwitcher .layersDiv .dataLbl { + margin-top: 3px; + margin-left: 3px; + margin-bottom: 3px; +} + +.olControlLayerSwitcher .layersDiv .baseLayersDiv, +.olControlLayerSwitcher .layersDiv .dataLayersDiv { + padding-left: 10px; +} + +.olControlLayerSwitcher .maximizeDiv, +.olControlLayerSwitcher .minimizeDiv { + width: 18px; + height: 18px; + top: 5px; + right: 0; + cursor: pointer; +} + +.olBingAttribution { + color: #DDD; +} +.olBingAttribution.road { + color: #333; +} + +.olGoogleAttribution.hybrid, .olGoogleAttribution.satellite { + color: #EEE; +} +.olGoogleAttribution { + color: #333; +} +span.olGoogleAttribution a { + color: #77C; +} +span.olGoogleAttribution.hybrid a, span.olGoogleAttribution.satellite a { + color: #EEE; +} + +/** + * Editing and navigation icons. + * (using the editing_tool_bar.png sprint image) + */ +.olControlNavToolbar , +.olControlEditingToolbar { + margin: 5px 5px 0 0; +} +.olControlNavToolbar div, +.olControlEditingToolbar div { + background-image: url("img/editing_tool_bar.png"); + background-repeat: no-repeat; + margin: 0 0 5px 5px; + width: 24px; + height: 22px; + cursor: pointer +} +/* positions */ +.olControlEditingToolbar { + right: 0; + top: 0; +} +.olControlNavToolbar { + top: 295px; + left: 9px; +} +/* layouts */ +.olControlEditingToolbar div { + float: right; +} +/* individual controls */ +.olControlNavToolbar .olControlNavigationItemInactive, +.olControlEditingToolbar .olControlNavigationItemInactive { + background-position: -103px -1px; +} +.olControlNavToolbar .olControlNavigationItemActive , +.olControlEditingToolbar .olControlNavigationItemActive { + background-position: -103px -24px; +} +.olControlNavToolbar .olControlZoomBoxItemInactive { + background-position: -128px -1px; +} +.olControlNavToolbar .olControlZoomBoxItemActive { + background-position: -128px -24px; +} +.olControlEditingToolbar .olControlDrawFeaturePointItemInactive { + background-position: -77px -1px; +} +.olControlEditingToolbar .olControlDrawFeaturePointItemActive { + background-position: -77px -24px; +} +.olControlEditingToolbar .olControlDrawFeaturePathItemInactive { + background-position: -51px -1px; +} +.olControlEditingToolbar .olControlDrawFeaturePathItemActive { + background-position: -51px -24px; +} +.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{ + background-position: -26px -1px; +} +.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive { + background-position: -26px -24px; +} + +div.olControlZoom { + position: absolute; + top: 8px; + left: 8px; + background: rgba(255,255,255,0.4); + border-radius: 4px; + padding: 2px; +} +div.olControlZoom a { + display: block; + margin: 1px; + padding: 0; + color: white; + font-size: 18px; + font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + font-weight: bold; + text-decoration: none; + text-align: center; + height: 22px; + width:22px; + line-height: 19px; + background: #130085; /* fallback for IE - IE6 requires background shorthand*/ + background: rgba(0, 60, 136, 0.5); + filter: alpha(opacity=80); +} +div.olControlZoom a:hover { + background: #130085; /* fallback for IE */ + background: rgba(0, 60, 136, 0.7); + filter: alpha(opacity=100); +} +@media only screen and (max-width: 600px) { + div.olControlZoom a:hover { + background: rgba(0, 60, 136, 0.5); + } +} +a.olControlZoomIn { + border-radius: 4px 4px 0 0; +} +a.olControlZoomOut { + border-radius: 0 0 4px 4px; +} + + +/** + * Animations + */ + +.olLayerGrid .olTileImage { + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} + +/* Turn on GPU support where available */ +.olTileImage { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; +} + +/* when replacing tiles, do not show tile and backbuffer at the same time */ +.olTileReplacing { + display: none; +} + +/* override any max-width image settings (e.g. bootstrap.css) */ +img.olTileImage { + max-width: none; +} +/*! jQuery UI - v1.10.3 - 2013-05-29 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} +@import url(http://fonts.googleapis.com/css?family=Droid+Sans:regular,bold&subset=latin); + +body { + font-family: "Droid Sans", verdana, arial, serif; +} + +/* + settings for slider object +*/ +.dynamic-slider-control { + width: 20px; + position: relative; + margin: auto; +} + +.vertical { + height: 80px; +} + +.horizontal { + width: 60px; +} + +.dynamic-slider-control input { + display: none; +} + +.dynamic-slider-control .handle { + position: absolute; + font-size: 1px; + overflow: hidden; +} + +.dynamic-slider-control.vertical .handle { + width: 20px; + height: 30px; + background-image: url("../images/sliderDot.png"); +} + +.dynamic-slider-control.horizontal .handle { + width: 30px; + height: 20px; + background-image: url("../images/sliderDot-horizontal.png"); +} + +.dynamic-slider-control .line { + position: absolute; + font-size: 0.01mm; + overflow: hidden; + border: 1px solid rgb(90,97,90); + background: rgb(189,190,189); +} + +.dynamic-slider-control.vertical .line { + width: 3px; +} + +.dynamic-slider-control .line div { + width: 1px; + height: 1px; + + border: 1px solid; + border-color: rgb(230,230,230) rgb(189,190,189) + rgb(189,190,189) rgb(230,230,230); +} + +/* + settings for timeplot widget (some are overwritten timeplot css classes) +*/ +.plotWindow { + position: relative; + border-bottom: 1px solid #ADADAD; + z-index: 1; + width: 100%; +} + +.plotContainer { + position: absolute; + padding: 0px; + border: none; + top: 12px; + left: 0px; + z-index: 1; + overflow: hidden; + width: 100%; +} + +.plotCanvas { + position: absolute; + top: 0px; + left: 0px; + z-index: -2; +} + +.timeplot-background { + display: none; + z-index: -2; +} + +.timeplot-container { + position: absolute; + left: 16px; + padding: 0px; + border: none; + z-index: 1; + top: 0px; + overflow: visible; +} + +.timeplot-copyright { + visibility: hidden; +} + +.timeplot-timeflag { + font-size: 0.8em; + font-weight: normal; +} + +.timeplot-valueflag { + font-size: 0.8em; +} + +.timeplot-dayflag-pole { + display: none; + z-index: 999; +} + +.timeplot-dayflag { + display: none; + border: 1px solid #FF0000; + padding: 1px; + text-align: center; + background-color: #FFCCCC; + z-index: 1000; +} + +.range-box { + display: none; + background-repeat: repeat; + opacity: 0.6; +filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; +-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + z-index: -1; +} + +.popup-click-div { + display: none; + z-index: 1010; + cursor: pointer; +} + +.left-feather { + display: none; + z-index: -1; +} + +.right-feather { + display: none; + z-index: -1; +} + +.plotHandle { + position: absolute; + visibility: hidden; + cursor: pointer; + z-index: 1002; +} + +.plotHandleLabel { + padding: 2px 5px; + font-size: 0.8em; +} + +.plotHandleIcon { + height: 43px; + width: 14px; + margin: 0; + padding: 0; +} + +.plotHandleBox { + position: absolute; + border: solid 1px #d0ba9a; + background-color: #e8cfac; + filter: alpha(opacity=40); + opacity: 0.4; + margin: 0; + padding: 0; +} + +.plotToolbar { + position: absolute; + visibility: hidden; + z-index: 1; +} + +.featherSlider { + position: absolute; + top: 9px; + right: 64px; +} + +.timeOverview { + position: absolute; + top: 0px; + height: 12px; + z-index: 0; + visibility: hidden; + opacity: 0.5; +filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; +-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + overflow: hidden; + border-bottom: 1px solid rgb(100,100,100); +} + +.plotLabels { + position: absolute; + overflow: hidden; + top: 0px; + left: 0px; + height: 12px; + z-index: 0; +} + +.plotLabel { + position: absolute; + font-size: 9px; + height: 10px; + padding: 1px 2px; + border-left: solid 1px rgb(214,214,214); +} + +.overviewRange { + position: absolute; + top: 0px; + height: 12px; + background: white; +} + +.overviewLabel { + position: absolute; + font-size: 9px; + height: 10px; + padding: 1px 2px; + border-left: solid 1px black; +} + +.shiftLeft { + position: absolute; + left: 4px; + top: 0px; + height: 12px; + width: 12px; +filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; +-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + opacity: 0.8; + background-image: url(../images/shiftLeft.png); + visibility: hidden; +} + +.shiftLeft:hover { + cursor: pointer; + background-image: url(../images/shiftLeftOver.png); +} + +.shiftRight { + position: absolute; + right: 4px; + top: 0px; + height: 12px; + width: 12px; + opacity: 0.8; +filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; +-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + background-image: url(../images/shiftRight.png); + visibility: hidden; +} + +.shiftRight:hover { + cursor: pointer; + background-image: url(../images/shiftRightOver.png); +} + +/* + settings for map widget +*/ +.mapWindow { + position: absolute; + overflow: hidden; + z-index: 2; + width: 100%; +} + +.mapContainer { + width: 100%; +} + +.mapCanvas { + position: absolute; + top: 0px; + left: 0px; + z-index: -2; +} + +.mapsMenu { + position: absolute; + z-index: 1000; +} + +.mapsMenu dl { + margin: 0px; + display: block; +} + +.mapsMenu dt { + padding: 2px; + display: block; + cursor: pointer; +} + +.mapsMenu dt:hover { + background: #C9C9CB; +} + +.selectedMapEntry { + color: white; + background: #C9C9CB; +} + +.pointClickDiv { + position: absolute; + visibility: hidden; + z-index: 4; +} + +.pointClickDivBackground { + width: 100%; + height: 100%; + z-index: 4; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; +} + +.mapInfo { + position: absolute; + bottom: 5px; + right: 5px; + padding: 3px; +} + +.tagCloudDiv { + position: absolute; +} + +.mapToolbar { + position: absolute; + visibility: hidden; + z-index: 1009; + opacity: 0.8; +filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; +-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; +} + +.tagCloudItem { + z-index: 1009; + cursor: pointer; +} + +.controlLock { + position: absolute; + width: 100%; + height: 100%; + z-index: 1008; + visibility: hidden; +} + +/* + sti toolbar settings +*/ +.toolbarTop { + top: 0px; +} + +.toolbarBottom { + bottom: 0px; +} + +.toolbarLeft { + left: 0px; +} + +.toolbarRight { + right: 0px; +} + +.toolbarLeftLight { + background-image: url(../images/bg-left.png); + background-repeat: repeat-y; + border-right: 1px solid white; +} + +.toolbarRightLight { + background-image: url(../images/bg-right.png); + background-repeat: repeat-y; + border-left: 1px solid white; +} + +/* + settings for zoom slider +*/ +.sliderStyle { + position: relative; + width: 20px; + height: 100px; + border: 1px solid rgb(68,68,68); + margin: 3px; +} + +.zoomSliderContainer { + position: absolute; + top: 10px; + left: 0px; +} + +.zoomSliderIn { + position: absolute; + top: 0px; + left: 2px; +} + +.zoomSliderOut { + position: absolute; + top: 84px; + left: 2px; +} + +/* + settings for widgets integrated toolbars +*/ +.dragTimeRangeAlt { + position: relative; + height: 12px; + width: 43px; + cursor: pointer; +} + +.cancelRangeAlt { + position: absolute; + height: 16px; + width: 16px; + background-image: url(../images/cancel.png); + cursor: pointer; + visibility: hidden; +} + +.widgetHeadline { + position: absolute; + top: 3px; + font-size: 18px; + padding: 3px; +} + +/* + settings for widgets popup window +*/ +.popupDiv { + position: absolute; + background-color: white; + border: 2px solid #666666; + padding: 25px; + visibility: hidden; +} + +.back { + position: absolute; + height: 16px; + width: 16px; + top: 2px; + left: 5px; + background-image: url(../images/back.png); + background-repeat: no-repeat; + cursor: pointer; + display: none; +} + +.next { + position: absolute; + height: 16px; + width: 16px; + bottom: 5px; + right: 5px; + background-image: url(../images/next.png); + background-repeat: no-repeat; + cursor: pointer; +} + +.previous { + position: absolute; + height: 16px; + width: 16px; + bottom: 5px; + left: 5px; + background-image: url(../images/prev.png); + background-repeat: no-repeat; + cursor: pointer; +} + +.popupTriangleDown { + position: absolute; + height: 18px; + width: 31px; + background-image: url(../images/popupTriangleDown.png); + background-repeat: no-repeat; + z-index: 1000; +} + +.popupTriangleUp { + position: absolute; + height: 18px; + width: 31px; + background-image: url(../images/popupTriangleUp.png); + background-repeat: no-repeat; + z-index: 1000; +} + +.popupTriangleLeft { + position: absolute; + height: 31px; + width: 18px; + background-image: url(../images/popupTriangleLeft.png); + background-repeat: no-repeat; + z-index: 1000; +} + +.popupTriangleRight { + position: absolute; + height: 31px; + width: 18px; + background-image: url(../images/popupTriangleRight.png); + background-repeat: no-repeat; + z-index: 1000; +} + +.popupResultsLabel { + position: absolute; + bottom: 5px; + font-size: 60%; + color:#999999; +} + +.popupDescription { + font-size: 60%; +} + +.popupDiv ul { + list-style-type: none; + margin:0; + padding:0; +} + +.popupDiv ol li:hover { + text-decoration:underline; +} + +.popupDiv li { + padding: 5px; + cursor: pointer; +} + +.popupContent { + font-size: 60%; + font-weight: bold; +} + +.animation { + position: absolute; + width: 18px; + height: 18px; + cursor: pointer; + visibility: hidden; +} + +.osmLink { + position: absolute; + left: 5px; + bottom: 5px; + font-size: 11px; + color: blue; + visibility: hidden; + z-index: 1100; +} + +.osmLink a { + color: blue; +} + +.osmLink a:visited { + color: blue; +} + +.absoluteToolbar { + position: absolute; + top: 0px; + left: 0px; + z-index: 1002; +} + +.ddbToolbar { + width: 100%; +/* background-color: #878380; */ + background-color: #595754; + position: relative; + opacity: 0.85; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + border-spacing: 0px; + z-index: 10000; +} + +.ddbToolbar table { + border-spacing: 0px; +} + +.ddbToolbar td { + color: white; + font-size: 13px; + font-weight: bold; + border: none; + text-align: center; +} + +.ddbTooltip { + position: absolute; + width: 20px; + height: 20px; + background-image: url(../images/tooltip.png); + top: 5px; + right: 5px; + cursor: help; +} + +.dropdown { + display: inline-block; + height: 25px; + max-height: 25px; + white-space: nowrap; +} + +.dropdownLeft { + display: table-cell; + width: 5px; + height: 25px; + background-image: url(../images/dropdownLeft.png); +} + +.dropdownSelection { + text-align: center; + height: 25px; + color: #6f6b68; + font-style: italic; + font-weight: normal; + font-size: 13px; + display: table-cell; + vertical-align: middle; + background-image: url(../images/dropdownMiddle.png); + white-space: nowrap; +} + +.dropdownButtonEnabled { + display: table-cell; + width: 25px; + height: 25px; + background-image: url(../images/dropdownEnabled1.png); + cursor: pointer; +} + +.dropdownButtonDisabled { + display: table-cell; + width: 25px; + height: 25px; + background-image: url(../images/dropdownDisabled1.png); + cursor: pointer; +} + +.dropdownMenu { + display: inline-block; + font-size: 13px; + background-color: white; + opacity: 0.85; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + max-height: 200px; + overflow: auto; + position: absolute; + z-index: 3; +} + +.dropdownMenu dl { + margin: 0px; + display: block; + white-space: nowrap; +} + +.dropdownMenu dt { + padding: 2px 10px; + display: block; + cursor: pointer; + text-align: center; + color: #6f6b68; + font-weight: normal; + white-space: nowrap; +} + +.dropdownMenu dt:hover { + background: #DFDFDD; + white-space: nowrap; +} + +.dropdownSelectedEntry { + color: #6f6b68; + font-style: italic; + font-weight: normal; + display: table-cell; + vertical-align: middle; + white-space: nowrap; +} + +.dropdownUnselectedEntry { + color: #6f6b68; + font-style: normal; + font-weight: normal; + display: table-cell; + vertical-align: middle; + white-space: nowrap; +} + +.ddbElementsCount { + font-family: Calibri,Arial,sans-serif; + color: white; + font-style: italic; + font-weight: normal; + font-size: 13px; +} + +/* + settings for slider object +*/ +.dynamic-slider-control { + width: 20px; + height: 18px; + position: relative; +} + +.vertical { + height: 123px; +} + +.horizontal { + width: 123px; +} + +.dynamic-slider-control input { + display: none; +} + +.dynamic-slider-control .handle { + position: absolute; + font-size: 1px; + overflow: hidden; +} + +.dynamic-slider-control.vertical .handle { + width: 20px; + height: 12px; + cursor: pointer; + background-image: url("../images/zoom_slider-vertical.png"); +} + +.dynamic-slider-control.horizontal .handle { + width: 12px; + height: 20px; + cursor: pointer; + background-image: url("../images/zoom_slider-horizontal.png"); +} + +.dynamic-slider-control .line { + position: absolute; + font-size: 0.01mm; + overflow: hidden; + border: none; + background: rgb(189,190,189); +} + +.dynamic-slider-control.vertical .line { + width: 0px; +} + +.dynamic-slider-control .line div { + width: 0px; + height: 0px; + border: none; +} + +/* + settings for zoom slider +*/ +.sliderStyle-horizontal { + position: relative; + width: 167px; + height: 21px; + border: 1px solid #bebdbc; + margin: 3px; + background: white; +} + +.sliderStyle-vertical { + position: absolute; + width: 27px; + height: 173px; +/* border: 1px solid #bebdbc;*/ +/* margin: 3px;*/ +/* background: white;*/ + background-image: url("../images/ZoomBgWithIncrements.png"); + z-index: 1001; +} + +.zoomSliderContainer-horizontal { + position: absolute; + top: 2px; + left: 22px; + height: 16px; + background-image: url("../images/zoom_grid-horizontal.png"); +} + +.zoomSliderContainer-vertical { + position: absolute; + top: 24px; + width: 27px; +/* background-image: url("../images/zoom_grid-vertical.png");*/ +} + +.zoomSliderIn-horizontal { + position: absolute; + top: 1px; + left: 149px; + cursor: pointer; +} + +.zoomSliderOut-horizontal { + position: absolute; + top: 1px; + left: 2px; + cursor: pointer; +} + +.zoomSliderIn-vertical { + position: absolute; + top: 4px; + left: 4px; + cursor: pointer; +} + +.zoomSliderOut-vertical { + position: absolute; + bottom: 5px; + left: 4px; + cursor: pointer; +} + +.ddbPopupDiv { + position: absolute; + background-color: white; + padding: 15px; + visibility: visible; + z-index: 1000; + cursor: default; +} + +.ddbPopupInput { + overflow-x: auto; + overflow-y: auto; +} + +.ddbPopupInput tr { + font-size: 13px; +} + +.ddbPopupInput th { + font-size: 13px; +} + +.ddbPopupInput td { + font-size: 13px; +} + +.viewResults { + width: 121px; + height: 18px; + background-image: url("../images/Viewresultsbutton.png"); + cursor: pointer; + margin-top: 10px; +} + +.popupRight { + position: absolute; + width: 10px; + right: -4px; + top: 8px; + background-image: url("../images/right.png"); + background-repeat: repeat-y; + z-index: 3; +} + +.popupBottom { + position: absolute; + height: 10px; + bottom: -4px; + left: 16px; + background-image: url("../images/bottom.png"); + background-repeat: repeat-x; + z-index: 3; +} + +.popupBottomRight { + position: absolute; + width: 10px; + height: 10px; + bottom: -4px; + right: -4px; + background-image: url("../images/bottom_right.png"); + z-index: 4; +} + +.popupTopRight { + position: absolute; + width: 10px; + height: 8px; + top: 0px; + right: -4px; + background-image: url("../images/top_right.png"); + z-index: 4; +} + +.popupPeak { + position: absolute; + width: 26px; + height: 29px; + bottom: -14px; + left: -10px; + background-image: url("../images/peak.png"); + z-index: 4; +} + +.popupDDBResults { + font-weight: bold; + font-size: 12px; + color: #3e3a37; + cursor: default; + padding-bottom: 10px; +} + +.ddbPopupCancel { + position: absolute; + height: 16px; + width: 16px; + top: 2px; + right: 2px; + background-image: url(../images/cancel.png); + cursor: pointer; + z-index: 5; +} + +.ddbPopupLabel { + display: inline-block; + font-size: 12px; + color: #56524f; + cursor: pointer; +} + +.zoomPopup { + height: 20px; + width: 20px; + margin-left: 5px; + background-image: url(../images/zoom.png); + display: inline-block; + cursor: pointer; +} + + +.descriptions { + display: inline-block; + height: 20px; + width: 20px; + background-image: url(../images/descriptions.png); + background-repeat: no-repeat; + cursor: pointer; +} + +.mapLegend { + position: absolute; + right: 0px; + bottom: 0px; + opacity: 0.7; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + background-color: #EEE; + font-size: 12px; +} + +.mapHome { + position: absolute; + cursor: pointer; + z-index: 1001; + background-image: url("../images/ResetMap.png"); + height: 27px; + width: 27px; +} + +.geoLocationOn { + position: absolute; + cursor: pointer; + z-index: 1001; + background-image: url("../images/GeoLocation.png"); + height: 27px; + width: 27px; +} + +.geoLocationOff { + position: absolute; + cursor: pointer; + z-index: 1001; + background-image: url("../images/GeoLocation2.png"); + height: 27px; + width: 27px; +} + +.aggregation { + display: inline-block; + cursor: pointer; + background-image: url("../images/aggregation.png"); + height: 30px; + width: 31px; +} + +.noAggregation { + display: inline-block; + cursor: pointer; + background-image: url("../images/no_aggregation.png"); + height: 30px; + width: 31px; +} + +.showBbox { + display: inline-block; + cursor: pointer; + background-image: url("../images/bbox_icon.png"); + height: 30px; + width: 31px; +} + +.hideBbox { + display: inline-block; + cursor: pointer; + background-image: url("../images/hidebbox_icon.png"); + height: 30px; + width: 31px; +} + +.nextItem { + display: none; + cursor: pointer; + background-image: url("../images/next.png"); + height: 7px; + width: 9px; + margin-left: 3px; +} + +.prevItem { + display: none; + cursor: pointer; + background-image: url("../images/prev.png"); + height: 7px; + width: 9px; + margin-right: 3px; +} + +.singleTable { + width: 100%; +} + +.smallButton { + display: inline-block; + cursor: pointer; + height: 27px; + width: 27px; +} + +.paginationButton { + display: table-cell; + cursor: pointer; + height: 26px; + width: 27px; +} + +.firstPageEnabled { + background-image: url("../images/firstPageEnabled.png"); +} + +.firstPageDisabled { + background-image: url("../images/firstPageDisabled.png"); +} + +.nextPageEnabled { + background-image: url("../images/nextPageEnabled.png"); +} + +.nextPageDisabled { + background-image: url("../images/nextPageDisabled.png"); +} + +.previousPageEnabled { + background-image: url("../images/previousPageEnabled.png"); +} + +.previousPageDisabled { + background-image: url("../images/previousPageDisabled.png"); +} + +.lastPageEnabled { + background-image: url("../images/lastPageEnabled.png"); +} + +.lastPageDisabled { + background-image: url("../images/lastPageDisabled.png"); +} + +.pageInfo { + display: table-cell; + vertical-align: middle; + padding: 0px 10px; + font-style: italic; + font-weight: normal; + font-size: 13px; +} + +.resultsInfo { + display: table-cell; + vertical-align: middle; + font-style: italic; + font-weight: normal; + font-size: 13px; +} + +.resultsDropdown { + /*display: table-cell; */ + margin-top: 2px; + float: left; + padding-left: 10px; +} + +.tableEntry { + padding-top: 10px; + padding-bottom: 10px; + padding-right: 10px; + padding-left: 100px; + border-bottom: 1px solid #878380; + text-align: left; +} + +.tableTabs { + text-align: left; + opacity: 0.85; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + border-spacing: 0px; + height:47px; + overflow:auto; +} + +.tableTab { + display: inline-block; + padding: 5px 20px; + cursor: pointer; + font-weight: bold; + font-size: 13px; + margin-right: 10px; + border-top: 1px solid #878380; + border-left: 1px solid #878380; + border-right: 1px solid #878380; +} + +.mapControl { + display: inline-block; + width: 31px; + height: 30px; + cursor: pointer; +} + +.squareDisabled { + background-image: url("../images/square-disabled.png"); +} + +.squareActivated { + background-image: url("../images/square-activated.png"); +} + +.squareDeactivated { + background-image: url("../images/square-deactivated.png"); +} + +.circleDisabled { + background-image: url("../images/circle-disabled.png"); +} + +.circleActivated { + background-image: url("../images/circle-activated.png"); +} + +.circleDeactivated { + background-image: url("../images/circle-deactivated.png"); +} + +.polygonDisabled { + background-image: url("../images/polygon-disabled.png"); +} + +.polygonActivated { + background-image: url("../images/polygon-activated.png"); +} + +.polygonDeactivated { + background-image: url("../images/polygon-deactivated.png"); +} + +.countryDisabled { + background-image: url("../images/country-disabled.png"); +} + +.countryActivated { + background-image: url("../images/country-activated.png"); +} + +.countryDeactivated { + background-image: url("../images/country-deactivated.png"); +} + +.linearPlotActivated { + background-image: url("../images/lin-activated.png"); +} + +.linearPlotDeactivated { + background-image: url("../images/lin-deactivated.png"); +} + +.logarithmicPlotActivated { + background-image: url("../images/log-activated.png"); +} + +.logarithmicPlotDeactivated { + background-image: url("../images/log-deactivated.png"); +} + +.playEnabled { + background-image: url("../images/play-enabled.png"); +} + +.playDisabled { + background-image: url("../images/play-disabled.png"); +} + +.pauseEnabled { + background-image: url("../images/pause-enabled.png"); +} + +.pauseDisabled { + background-image: url("../images/pause-disabled.png"); +} + +.lockDeactivated { + background-image: url("../images/lock-deactivated.png"); +} + +.lockActivated { + background-image: url("../images/lock-activated.png"); +} + +.dragControl { + display: inline-block; + height: 19px; + width: 19px; + cursor: pointer; +} + +.dragDisabled { + background-image: url("../images/drag-disabled.png"); +} + +.dragActivated { + background-image: url("../images/drag-activated.png"); +} + +.dragDeactivated { + background-image: url("../images/drag-deactivated.png"); +} + +.selectAll { + background-image: url("../images/selectAll.png"); +} + +.invertSelection { + background-image: url("../images/invertSelection.png"); +} + +.deselectAll { + background-image: url("../images/deselectAll.png"); +} + +.showAll { + background-image: url("../images/showAll.png"); +} + +.showSelected { + background-image: url("../images/showSelected.png"); +} + +.createNewRefined { + background-image: url("../images/createNewRefined.png"); +} + +.selectPage { + background-image: url("../images/selectPage.png"); +} + +.deselectPage { + background-image: url("../images/deselectPage.png"); +} + +.resultList { + z-index: 2; + width: 100%; + /*background-color: #878380; + opacity: 0.85;*/ + background-color: #2175b1; + opacity: 0.8; + filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + border-spacing: 0px; +} + +.resultList table { + border-spacing: 0px; +} + +.resultList th { + font-family: Calibri,Arial,sans-serif; + color: white; + font-size: 13px; + font-weight: bold; + border: none; +} + +.resultList td { + font-family: Calibri,Arial,sans-serif; + font-size: 13px; + padding: 10px; + border-bottom: 1px solid #878380; + text-align: left; +} + +.sortDescActive { + background-image: url("../images/descActive.png"); +} + +.sortDescDeactive { + background-image: url("../images/descDeactive.png"); +} + +.sortAscActive { + background-image: url("../images/ascActive.png"); +} + +.sortAscDeactive { + background-image: url("../images/ascDeactive.png"); +} + +.sort { + height: 11px; + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; +} + +.headerLabel { + vertical-align: middle; + padding: 0px 10px; +} + +.smallButton { + display: inline-block; + height: 27px; + width: 27px; + cursor: pointer; +} + +.filter { + background-image: url("../images/filter.png"); +} + +.filterDisabled { + background-image: url("../images/filterDisabled.png"); +} + +.filterInverse { + background-image: url("../images/filterInverse.png"); +} + +.filterInverseDisabled { + background-image: url("../images/filterInverseDisabled.png"); +} + +.filterCancel { + background-image: url("../images/filterCancel.png"); +} + +.filterCancelDisabled { + background-image: url("../images/filterCancelDisabled.png"); +} + +.removeDataset { + background-image: url("../images/filterCancel.png"); +} + +.exportDataset { + background-image: url("../images/exportDataset.png"); +} + +.externalLink { + display: inline-block; + height: 10px; + width: 10px; + cursor: pointer; + padding-left: 5px; + padding-right: 5px; + background: url("../images/externalLink.png") top no-repeat; +} + +.fullscreenActivated { + background-image: url("../images/fullscreen-activated.png"); +} + +.fullscreenDeactivated { + background-image: url("../images/fullscreen-deactivated.png"); +} + +.rightMargin { + margin-right: 3px; +} + +.mapLizenz { + color: #7a7395; +} + +.mapLizenz:hover{ + cursor: pointer; + color: #56516b; +} \ No newline at end of file diff --git a/js/Datafilter/Datafilter.js b/js/Datafilter/Datafilter.js new file mode 100644 index 0000000..2654670 --- /dev/null +++ b/js/Datafilter/Datafilter.js @@ -0,0 +1,151 @@ +/* +* Datafilter.js +* +* Copyright (c) 2022, Kathrin Marquardt. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA +*/ + + +/** + * @class Datafilter + * Implementation for a Datafilter UI + * @author Kathrin Marquardt (Kathrin.Marquardt@sbb.spk-berlin.de) + * + * @param {HTML object} parent div to append the Datafilter + */ +function Datafilter(parent) { + + this.datafilter = this; + + this.parent = parent; + this.filters = []; + this.filteredDatasets = []; + this.dsObjects= []; + + this.initialize(); +} + +Datafilter.prototype = { + + show: function () { + this.parent.gui.htmlWrap.display = "block"; + }, + + hide: function () { + this.parent.gui.htmlWrap.style.display = "none"; + }, + + initialize: function () { + + var optCount = this.parent.dataFilterOpt.length; + var dsCount = GeoTemConfig.datasets.length; + + for (var i = 0; i < optCount; i++) + { + this.filters[this.parent.dataFilterOpt[i][0]] = ''; + } + + }, + + pickFilterData: function () { + + var optCount = this.parent.dataFilterOpt.length; + var datasetsCount = this.parent.datasets.length; + var aktFilter = []; + var aktFields = []; + var zaehler = 0; + var emptySet = true; + + for (var i = 0; i < optCount; i++) { + + if (this.filters[this.parent.dataFilterOpt[i][0]] != -1) + { + aktFilter[zaehler] = this.filters[this.parent.dataFilterOpt[i][0]]; + aktFields[zaehler] = this.parent.dataFilterOpt[i][2]; + zaehler++; + } + } + + // At changing datasets will be disabled animation button + var timePlotMarker = document.getElementsByClassName("plotHandleBox"); + var plotButton = null; + if (timePlotMarker != null && timePlotMarker.length > 0) + { + var timePlotEle = document.getElementById("plotContainerDiv"); + var toolbarEle = timePlotEle.getElementsByClassName("ddbToolbar")[0]; + plotButton = toolbarEle.getElementsByClassName("pauseEnabled")[0]; + } + + if (zaehler == 0) + { + for (var i = 0; i < datasetsCount; i++) + { + this.parent.datasets[i].objects = this.dsObjects[i]; + GeoTemConfig.datasets[i].objects = this.dsObjects[i]; + emptySet = false; + } + } + else { + for (var j = 0; j < datasetsCount; j++) { + + var dsCount = this.parent.datasets[j].objects.length; + var dsFilter = []; + for (var i = 0; i < dsCount; i++) { + for (var k = 0; k < zaehler; k++) { + + if (this.parent.datasets[j].objects[i].tableContent[aktFields[k]] != aktFilter[k]) { + break; + } + if (k == zaehler - 1) { + dsFilter.push(this.parent.datasets[j].objects[i]); + } + } + } + if (dsFilter.length > 0) + { + emptySet = false; + } + GeoTemConfig.datasets[j].objects = dsFilter; + } + } + + if (emptySet) + { + alert('Für den aktuellen Filter gibt es keine Treffer. \r\n There are no hits for the current filter.'); + + // When changing dataset with animated timeplot you have to enable stop-animation-button + if (plotButton != null) + { + var plotBtn = toolbarEle.getElementsByClassName("pauseDisabled")[0]; + plotBtn.classList.remove("pauseDisabled"); + plotBtn.classList.add("pauseEnabled"); + } + return; + } + Publisher.Publish('filterData', GeoTemConfig.datasets, null); + + // When changing dataset with animated timeplot you have to enable stop-animation-button + if (plotButton != null) + { + var plotBtn = toolbarEle.getElementsByClassName("pauseDisabled")[0]; + plotBtn.classList.remove("pauseDisabled"); + plotBtn.classList.add("pauseEnabled"); + } + + } + +} \ No newline at end of file diff --git a/js/Datafilter/DatafilterConfig.js b/js/Datafilter/DatafilterConfig.js new file mode 100644 index 0000000..479c97a --- /dev/null +++ b/js/Datafilter/DatafilterConfig.js @@ -0,0 +1,669 @@ +/* +* DatafilterConfig.js +* +* Copyright (c) 2022, Kathrin Marquardt. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA +*/ + +/** + * @class DatafilterConfig + * Configuration file for user / data file defined filter + * @author Kathrin Marquardt (Kathrin.Marquardt@sbb.spk-berlin.de) + * @release 1.0 + * @release date: 2022-01-19 + * @version date: 2022-01-19 + */ +function DatafilterConfig() { + + this.dataFilterOpt = new Array(); +// structure - formular element name = json section, label text, data files column name + this.dataFilterOpt[0] = new Array( 'fsWerke', 'Werke', 'fshop', 'Works'); + this.dataFilterOpt[1] = new Array( 'isoLang', 'Sprache', 'iso2Sprache', 'Language'); + this.dataFilterOpt[2] = new Array( 'wikiCountry', 'Land', 'isoLand', 'Country'); + this.labelLang = 'de'; + + this.options = { + fsWerke : [ + { + "value": "a1", + "label": "Gesamtausgaben" + }, + { + "value": "a2a", + "label": "Sammelbände" + }, + { + "value": "M", + "label": "Musikalische Schriften/Aufsätze" + }, + { + "value": "AH", + "label": "Der Artushof" + }, + { + "value": "AM", + "label": "Die Automate" + }, + { + "value": "AS", + "label": "Die Abenteuer der Sylvester-Nacht" + }, + { + "value": "AT", + "label": "Die ästhetische Teegesellschaft" + }, + { + "value": "BB", + "label": "Der Baron von B." + }, + { + "value": "BF", + "label": "Die Bergwerke zu Falun" + }, + { + "value": "BR", + "label": "Die Brautwahl" + }, + { + "value": "DD", + "label": "Doge und Dogaresse" + }, + { + "value": "DE", + "label": "Der Dey von Elba in Paris" + }, + { + "value": "DF", + "label": "Datura fastuosa" + }, + { + "value": "DG", + "label": "Die Doppeltgänger" + }, + { + "value": "DJ", + "label": "Don Juan" + }, + { + "value": "DK", + "label": "Der Dichter und der Komponist" + }, + { + "value": "EG", + "label": "Der Elementargeist" + }, + { + "value": "ER", + "label": "Erscheinungen" + }, + { + "value": "ES", + "label": "Der Einsiedler Serapion" + }, + { + "value": "FS", + "label": "Das Fräulein von Scuderi" + }, + { + "value": "ET", + "label": "Die Elixiere des Teufels" + }, + { + "value": "FD", + "label": "Der Feind" + }, + { + "value": "FK", + "label": "Das fremde Kind" + }, + { + "value": "FM", + "label": "Die Fermate" + }, + { + "value": "FC", + "label": "Fantasiestücke in Callot’s Manier" + }, + { + "value": "FL", + "label": "Ein Fragment aus dem Leben dreier Freunde" + }, + { + "value": "GE", + "label": "Die Genesung" + }, + { + "value": "GL", + "label": "Das Gelübde" + }, + { + "value": "GT", + "label": "Der goldene Topf" + }, + { + "value": "HA", + "label": "Haimatochare" + }, + { + "value": "ID", + "label": "Ignaz Denner" + }, + { + "value": "IG", + "label": "Die Irrungen / Die Geheimnisse" + }, + { + "value": "JG", + "label": "Die Jesuiterkirche in G." + }, + { + "value": "KB", + "label": "Die Königsbraut" + }, + { + "value": "KR", + "label": "Kreisleriana" + }, + { + "value": "KS", + "label": "Der Kampf der Sänger" + }, + { + "value": "KV", + "label": "Die Kunstverwandten" + }, + { + "value": "KZ", + "label": "Klein Zaches genannt Zinnober" + }, + { + "value": "LM", + "label": "Lebens-Ansichten des Katers Murr" + }, + { + "value": "MF", + "label": "Meister Floh" + }, + { + "value": "MG", + "label": "Der Magnetiseur" + }, + { + "value": "MJ", + "label": "Das Majorat" + }, + { + "value": "MM", + "label": "Meister Martin der Küfner und seine Gesellen" + }, + { + "value": "MP", + "label": "Die Marquise de la Pivardiere" + }, + { + "value": "MW", + "label": "Meister Johannes Wacht" + }, + { + "value": "NA", + "label": "Nachtstücke" + }, + { + "value": "NB", + "label": "Nachricht von den neuesten Schicksalen des Hundes Berganza" + }, + { + "value": "NE", + "label": "Neueste Schicksale eines abenteuerlichen Mannes" + }, + { + "value": "NL", + "label": "Nachricht aus dem Leben eines bekannten Mannes" + }, + { + "value": "NM", + "label": "Nußknacker und Mausekönig" + }, + { + "value": "NT", + "label": "Naivität" + }, + { + "value": "OH", + "label": "Das öde Haus" + }, + { + "value": "PB", + "label": "Prinzessin Brambilla" + }, + { + "value": "PL", + "label": "Prinzessin Blandina" + }, + { + "value": "RA", + "label": "Die Räuber" + }, + { + "value": "RG", + "label": "Ritter Gluck" + }, + { + "value": "RK", + "label": "Rat Krespel" + }, + { + "value": "SA", + "label": "Das Sanctus" + }, + { + "value": "SB", + "label": "Die Serapions-Brüder" + }, + { + "value": "SF", + "label": "Signor Formica" + }, + { + "value": "SG", + "label": "Spielerglück" + }, + { + "value": "SH", + "label": "Das steinerne Herz" + }, + { + "value": "SP", + "label": "Eine Spukgeschichte" + }, + { + "value": "SM", + "label": "Der Sandmann" + }, + { + "value": "ST", + "label": "Seltsame Leiden eines Theater-Direktors" + }, + { + "value": "UG", + "label": "Der unheimliche Gast" + }, + { + "value": "VA", + "label": "Vampirismus" + }, + { + "value": "VE", + "label": "Des Vetters Eckfenster" + }, + { + "value": "VS", + "label": "Die Vision auf dem Schlachtfelde bei Dresden" + }, + { + "value": "ZD", + "label": "Der Zusammenhang der Dinge" + }, + { + "value": "ZZ", + "label": "Sonstige Werke" + } + ], + isoLang :[ + { + "value": "afr", + "label_de": "Afrikaans", + "label_iso": "Afrikaans" + }, + { + "value": "alb", + "label_de": "Albanisch", + "label_iso": "Albanian" + }, + { + "value": "ara", + "label_de": "Arabisch", + "label_iso": "Arabic" + }, + { + "value": "arm", + "label_de": "Armenisch", + "label_iso": "Armenian" + }, + { + "value": "baq", + "label_de": "Baskisch", + "label_iso": "Basque" + }, + { + "value": "bul", + "label_de": "Bulgarisch", + "label_iso": "Bulgarian" + }, + { + "value": "cat", + "label_de": "Katalanisch, Valencianisch", + "label_iso": "Catalan; Valencian" + }, + { + "value": "chi", + "label_de": "Chinesisch", + "label_iso": "Chinese" + }, + { + "value": "cze", + "label_de": "Tschechisch", + "label_iso": "Czech" + }, + { + "value": "dan", + "label_de": "Dänisch", + "label_iso": "Danish" + }, + { + "value": "dut", + "label_de": "Niederländisch, Belgisches Niederländisch", + "label_iso": "Dutch; Flemish" + }, + { + "value": "eng", + "label_de": "Englisch", + "label_iso": "English" + }, + { + "value": "epo", + "label_de": "Esperanto", + "label_iso": "Esperanto" + }, + { + "value": "est", + "label_de": "Estnisch", + "label_iso": "Estonian" + }, + { + "value": "fao", + "label_de": "Färöisch", + "label_iso": "Faroese" + }, + { + "value": "fin", + "label_de": "Finnisch", + "label_iso": "Finnish" + }, + { + "value": "fre", + "label_de": "Französisch", + "label_iso": "French" + }, + { + "value": "gem", + "label_de": "Germanische Sprachen", + "label_iso": "Germanic languages" + }, + { + "value": "ger", + "label_de": "Deutsch", + "label_iso": "German" + }, + { + "value": "gle", + "label_de": "Irisch", + "label_iso": "Irish" + }, + { + "value": "glg", + "label_de": "Galicisch, Galegisch", + "label_iso": "Galician" + }, + { + "value": "got", + "label_de": "Gotisch", + "label_iso": "Gothic" + }, + { + "value": "gre", + "label_de": "Griechisch", + "label_iso": "Greek, Modern (ab 1453)" + }, + { + "value": "heb", + "label_de": "Hebräisch", + "label_iso": "Hebrew" + }, + { + "value": "hrv", + "label_de": "Kroatisch", + "label_iso": "Croatian" + }, + { + "value": "hun", + "label_de": "Ungarisch", + "label_iso": "Hungarian" + }, + { + "value": "ind", + "label_de": "Indonesisch", + "label_iso": "Indonesian" + }, + { + "value": "ita", + "label_de": "Italienisch", + "label_iso": "Italian" + }, + { + "value": "jpn", + "label_de": "Japanisch", + "label_iso": "Japanese" + }, + { + "value": "kor", + "label_de": "Koreanisch", + "label_iso": "Korean" + }, + { + "value": "lat", + "label_de": "Latein", + "label_iso": "Latin" + }, + { + "value": "lav", + "label_de": "Lettisch", + "label_iso": "Latvian" + }, + { + "value": "lit", + "label_de": "Litauisch", + "label_iso": "Lithuanian" + }, + { + "value": "mac", + "label_de": "Mazedonisch", + "label_iso": "Macedonian" + }, + { + "value": "mus", + "label_de": "Muskogee-Sprachen", + "label_iso": "Creek" + }, + { + "value": "nob", + "label_de": "Bokmål", + "label_iso": "Bokmål, Norwegian; Norwegian Bokmål" + }, + { + "value": "nor", + "label_de": "Norwegisch", + "label_iso": "Norwegian" + }, + { + "value": "per", + "label_de": "Persisch", + "label_iso": "Persian" + }, + { + "value": "pol", + "label_de": "Polnisch", + "label_iso": "Polish" + }, + { + "value": "por", + "label_de": "Portugiesisch", + "label_iso": "Portuguese" + }, + { + "value": "rum", + "label_de": "Rumänisch", + "label_iso": "Romanian; Moldavian; Moldovan" + }, + { + "value": "rus", + "label_de": "Russisch", + "label_iso": "Russian" + }, + { + "value": "sin", + "label_de": "Singhalesisch", + "label_iso": "Sinhala; Sinhalese" + }, + { + "value": "sla", + "label_de": "Slawische Sprachen", + "label_iso": "Slavic languages" + }, + { + "value": "slo", + "label_de": "Slowakisch", + "label_iso": "Slovak" + }, + { + "value": "slv", + "label_de": "Slowenisch", + "label_iso": "Slovenian" + }, + { + "value": "spa", + "label_de": "Spanisch, Kastilisch", + "label_iso": "Spanish; Castilian" + }, + { + "value": "srp", + "label_de": "Serbisch", + "label_iso": "Serbian" + }, + { + "value": "swe", + "label_de": "Schwedisch", + "label_iso": "Swedish" + }, + { + "value": "tha", + "label_de": "Tahitianisch, Tahitisch", + "label_iso": "Tahitian" + }, + { + "value": "tur", + "label_de": "Türkisch", + "label_iso": "Turkish" + }, + { + "value": "ukr", + "label_de": "Ukrainisch", + "label_iso": "Ukrainian" + }, + { + "value": "vie", + "label_de": "Vietnamesisch", + "label_iso": "Vietnamese" + }, + { + "value": "yid", + "label_de": "Jiddisch", + "label_iso": "Yiddish" + } + ], + wikiCountry : [ + { + "value": "BAV", + "label": "Bayern" + }, + { + "value": "DEU", + "label": "Deutschland" + }, + { + "value": "FRA", + "label": "Frankreich" + }, + { + "value": "NLD", + "label": "Holland" + }, + { + "value": "ITA", + "label": "Italien" + }, + { + "value": "YUG", + "label": "Jugoslawien" + }, + { + "value": "HRV", + "label": "Kroatien" + }, + { + "value": "AUT", + "label": "Österreich" + }, + { + "value": "POL", + "label": "Polen" + }, + { + "value": "PRU", + "label": "Preußen" + }, + { + "value": "ROU", + "label": "Rumänien" + }, + { + "value": "RUS", + "label": "Russland" + }, + { + "value": "SAX", + "label": "Sachsen" + }, + { + "value": "TJK", + "label": "Tadschikistan" + }, + { + "value": "THU", + "label": "Thüringen" + }, + { + "value": "USA", + "label": "U. S. A." + }, + { + "value": "WUR", + "label": "Württemberg" + } + ] + }; +} \ No newline at end of file diff --git a/js/Datafilter/DatafilterGui.js b/js/Datafilter/DatafilterGui.js new file mode 100644 index 0000000..6776fb2 --- /dev/null +++ b/js/Datafilter/DatafilterGui.js @@ -0,0 +1,150 @@ +/* +* DatafilterGui.js +* +* Copyright (c) 2022, Kathrin Marquardt. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA +*/ + +/** + * @class DatafilterGui + * Datafilter GUI Implementation + * @author Kathrin Marquardt (Kathrin.Marquardt@sbb.spk-berlin.de) + * + * @param {DatafilterWidget} parent Datafilter widget object + * @param {HTML object} parentEle parent HTML element to append the Datafilter gui + */ +function DatafilterGui(datafilterWidg, parentEle) { + + this.parent = datafilterWidg; + var datafilterGui = this; + + this.datafilterContainer = parentEle; + + var optCount = this.parent.dataFilterOpt.length; + var linguaIndex = 1; + if (GeoTemConfig.language != this.parent.labelLang) + { + linguaIndex = 3; + } + + if (optCount > 0) { + + // Complete wrapper for filter elements + this.coverDiv = document.createElement("div"); + var applyIndex = datafilterPrevSiblingCount; + + // Filter symbol/icon to advise selection + var symbolDiv = document.createElement("div"); + symbolDiv.innerHTML = '' + + '' + + ''; + symbolDiv.style.cssFloat = 'left'; + this.coverDiv.appendChild(symbolDiv); + this.fieldsDiv = document.createElement("div"); + this.fieldsDiv.style.cssFloat = 'left'; + this.coverDiv.appendChild(this.fieldsDiv); + + for (var i = 0; i < optCount; i++) { + var jsonFeld = this.parent.dataFilterOpt[i][0]; + var anzahl = this.parent.options[jsonFeld].length; + + colDiv = document.createElement("div"); + colDiv.style.cssFloat = 'left'; + colDiv.style.marginRight = '15px'; + //colDiv.style.marginRight = '10px'; + //colDiv.style.borderRight = '1px solid #fff'; + //colDiv.style.paddingRight = '7px'; + //colDiv.style.paddingTop = '2px'; + colDiv.style.paddingBottom = '3px'; + this.fieldsDiv.appendChild(colDiv); + + colThDiv = document.createElement("div"); + colThDiv.style.fontSize = '13px'; + colThDiv.textContent = this.parent.dataFilterOpt[i][linguaIndex]; + colDiv.appendChild(colThDiv); + + colTdDiv= document.createElement("div"); + colTdDiv.style.paddingTop = '2px'; + selectEle = document.createElement("select"); + selectEle.name = jsonFeld; + selectEle.id = jsonFeld; + selectEle.style.height = '23px'; // td-Elements 25px = 23px + 2px (colTdDiv.style.paddingTop) + selectEle.style.fontSize = '13px'; + selectEle.style.borderRadius = '0px'; + selectEle.id = jsonFeld; + selectEle.name = jsonFeld; + selectEle.style.lineHeight = '14px'; + selectEle.style.marginBottom = '0px'; + selectEle.style.paddingBottom = '0px'; + selectEle.style.paddingTop = '0px'; + colTdDiv.appendChild(selectEle); + colDiv.appendChild(colTdDiv); + + var optionEle = document.createElement("option"); + optionEle.value = '-1'; + optionEle.textContent = '*'; + selectEle.appendChild(optionEle); + + for (var j = 0; j < anzahl; j++) { +// console.log(parent.options[jsonFeld][j]); + optionEle = document.createElement("option"); + optionEle.value = this.parent.options[jsonFeld][j].value; + if (this.parent.options[jsonFeld][j].label_de) + { + if (linguaIndex == 1) { + optionEle.textContent = this.parent.options[jsonFeld][j].label_de; + } + else + { + optionEle.textContent = this.parent.options[jsonFeld][j].label_iso; + } + } + else + { + optionEle.textContent = this.parent.options[jsonFeld][j].label; + } + selectEle.appendChild(optionEle); + } + + selectEle.onchange = function () { + datafilterGui.parent.filtering(); + } + } + + if (this.datafilterContainer.nodeName == 'DIV') + { + if (this.datafilterContainer.childElementCount < applyIndex) + { + applyIndex = this.datafilterContainer.childElementCount; + } + this.datafilterContainer.insertBefore(this.coverDiv, this.datafilterContainer[applyIndex]); + } + + if (this.datafilterContainer.nodeName == 'TABLE') + { + var zeile = this.datafilterContainer.rows[0]; + if (zeile.length < applyIndex) + { + applyIndex = zeile.length; + } + + var cellFilter = zeile.insertCell(applyIndex); + cellFilter.rowSpan = this.datafilterContainer.rows.length; + cellFilter.appendChild(this.coverDiv); + } + } +} diff --git a/js/Datafilter/DatafilterWidget.js b/js/Datafilter/DatafilterWidget.js new file mode 100644 index 0000000..8110909 --- /dev/null +++ b/js/Datafilter/DatafilterWidget.js @@ -0,0 +1,126 @@ +/* +* DatafilterWidget.js +* +* Copyright (c) 2022, Kathrin Marquardt. All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA +*/ + +/** + * @class DatafilterWidget + * DatafilterWidget Implementation + * @author Kathrin Marquardt (Kathrin.Marquardt@sbb.spk-berlin.de) + * + * @param {WidgetWrapper} core wrapper for interaction to other widgets + * @param {HTML object} div parent div to append the Datafilter widget div + */ +DatafilterWidget = function(core, div) { + + this.core = core; + this.core.setWidget(this); + + var filterConf = new DatafilterConfig(); + this.options = filterConf.options; + this.dataFilterOpt = filterConf.dataFilterOpt; + this.labelLang = filterConf.labelLang; + this.gui = new DatafilterGui(this, div, this.options); + + this.dataFilter = new Datafilter(this); + this.datasets = []; + this.atFirst = true; +} + +DatafilterWidget.prototype = { + + initWidget: function () { + + var dataloaderWidget = this; + }, + + highlightChanged: function (objects) { + if (!GeoTemConfig.highlightEvents) { + return; + } + }, + + selectionChanged: function (selection) { + if (!GeoTemConfig.selectionEvents) { + return; + } + }, + + triggerHighlight: function (item) { + }, + + tableSelection: function () { + }, + + deselection: function () { + }, + + filtering: function () { + + if (this.atFirst) + { + var dscount = this.datasets.length; + for (var i = 0; i < dscount; i++) + { + this.dataFilter.dsObjects.push(this.datasets[i].objects); + } + this.atFirst = false; + } + else + { + var dscount = this.datasets.length; + for (var i = 0; i < dscount; i++) + { + this.datasets[i].objects = this.dataFilter.dsObjects[i]; + } + } + + for (var i = 0; i < this.dataFilterOpt.length; i++) + { + var eleName = this.dataFilterOpt[i][0]; + if (!document.getElementById(eleName)) + { + return; + } + this.dataFilter.filters[eleName] = document.getElementById(eleName).value; + } + this.dataFilter.pickFilterData(); + }, + + inverseFiltering: function () { + }, + + triggerRefining: function () { + }, + + reset: function () { + + for (var i = 0; i < this.dataFilterOpt.length; i++) + { + var eleName = this.dataFilterOpt[i][0]; + var ele = document.getElementById(eleName); + + ele.selectedIndex = 0; + } + GeoTemConfig.datasets = this.datasets; + this.filterdDatasets = this.datasets; + } + +} + diff --git a/js/Dataloader/Dataloader.js b/js/Dataloader/Dataloader.js index 27d6a4b..1e6d5d7 100644 --- a/js/Dataloader/Dataloader.js +++ b/js/Dataloader/Dataloader.js @@ -34,6 +34,11 @@ function Dataloader(parent) { this.options = parent.options; this.initialize(); + + if (exhibition || forEmbeddedUse) { + this.exhibitionLoader(); + } + } var addToProxysWhitelistMessage1 = "Could not load data!\n\nPlease check your URL <"; @@ -89,6 +94,9 @@ Dataloader.prototype = { return fileName; }, + /* + GeoTemConfig - central PLATIN object; central dataset management + */ distributeDataset : function(dataSet) { GeoTemConfig.addDataset(dataSet); }, @@ -97,9 +105,13 @@ Dataloader.prototype = { GeoTemConfig.addDatasets(datasets); }, + /* + Initialize origin part "Load data" - fieldset "dataloaderContainerDiv" + */ addStaticLoader : function() { if (this.options.staticKML.length > 0){ - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.StaticLoaderTab = document.createElement("div"); $(this.StaticLoaderTab).attr("id","StaticLoader"); @@ -127,7 +139,7 @@ Dataloader.prototype = { $(staticKMLList).append(""); this.loadStaticKMLButton = document.createElement("button"); - $(this.loadStaticKMLButton).text("Load"); + $(this.loadStaticKMLButton).text(GeoTemConfig.getString("load")); $(this.loadStaticKMLButton).addClass(GeoTemConfig.buttonCssClass); $(this.StaticLoaderTab).append(this.loadStaticKMLButton); @@ -155,7 +167,8 @@ Dataloader.prototype = { }, addKMLLoader : function() { - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.KMLLoaderTab = document.createElement("div"); $(this.KMLLoaderTab).attr("id","KMLLoader"); @@ -166,7 +179,7 @@ Dataloader.prototype = { $(this.KMLLoaderTab).append(this.kmlURL); this.loadKMLButton = document.createElement("button"); - $(this.loadKMLButton).text("Load KML"); + $(this.loadKMLButton).text(GeoTemConfig.getString("loadKML")); $(this.KMLLoaderTab).append(this.loadKMLButton); $(this.loadKMLButton).click($.proxy(function(){ @@ -195,7 +208,8 @@ Dataloader.prototype = { }, addKMZLoader : function() { - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.KMZLoaderTab = document.createElement("div"); $(this.KMZLoaderTab).attr("id","KMZLoader"); @@ -206,7 +220,7 @@ Dataloader.prototype = { $(this.KMZLoaderTab).append(this.kmzURL); this.loadKMZButton = document.createElement("button"); - $(this.loadKMZButton).text("Load KMZ") + $(this.loadKMZButton).text(GeoTemConfig.getString("loadKMZ")); $(this.KMZLoaderTab).append(this.loadKMZButton); $(this.loadKMZButton).click($.proxy(function(){ @@ -235,7 +249,8 @@ Dataloader.prototype = { }, addCSVLoader : function() { - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.CSVLoaderTab = document.createElement("div"); $(this.CSVLoaderTab).attr("id","CSVLoader"); @@ -246,7 +261,7 @@ Dataloader.prototype = { $(this.CSVLoaderTab).append(this.csvURL); this.loadCSVButton = document.createElement("button"); - $(this.loadCSVButton).text("Load CSV"); + $(this.loadCSVButton).text(GeoTemConfig.getString("loadCSV")); $(this.CSVLoaderTab).append(this.loadCSVButton); $(this.loadCSVButton).click($.proxy(function(){ @@ -272,7 +287,8 @@ Dataloader.prototype = { }, addLocalKMLLoader : function() { - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.localKMLLoaderTab = document.createElement("div"); $(this.localKMLLoaderTab).attr("id","LocalKMLLoader"); @@ -283,7 +299,7 @@ Dataloader.prototype = { $(this.localKMLLoaderTab).append(this.kmlFile); this.loadLocalKMLButton = document.createElement("button"); - $(this.loadLocalKMLButton).text("Load KML"); + $(this.loadLocalKMLButton).text(GeoTemConfig.getString("loadKML")); $(this.localKMLLoaderTab).append(this.loadLocalKMLButton); $(this.loadLocalKMLButton).click($.proxy(function(){ @@ -309,7 +325,8 @@ Dataloader.prototype = { }, addLocalCSVLoader : function() { - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.localCSVLoaderTab = document.createElement("div"); $(this.localCSVLoaderTab).attr("id","LocalCSVLoader"); @@ -320,7 +337,7 @@ Dataloader.prototype = { $(this.localCSVLoaderTab).append(this.csvFile); this.loadLocalCSVButton = document.createElement("button"); - $(this.loadLocalCSVButton).text("Load CSV"); + $(this.loadLocalCSVButton).text(GeoTemConfig.getString("loadCSV")); $(this.localCSVLoaderTab).append(this.loadLocalCSVButton); $(this.loadLocalCSVButton).click($.proxy(function(){ @@ -368,10 +385,13 @@ Dataloader.prototype = { //only show if there are datasets if (localStorageDatasetCount > 0) - $(this.parent.gui.loaderTypeSelect).append(""); + { + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); + } this.loadLocalStorageButton = document.createElement("button"); - $(this.loadLocalStorageButton).text("Load"); + $(this.loadLocalStorageButton).text(GeoTemConfig.getString("load")); $(this.localStorageLoaderTab).append(this.loadLocalStorageButton); $(this.loadLocalStorageButton).click($.proxy(function(){ @@ -400,7 +420,8 @@ Dataloader.prototype = { return o; } - $(this.parent.gui.loaderTypeSelect).append(""); + var strHtml = ""; + $(this.parent.gui.loaderTypeSelect).append(strHtml); this.LocalXLSXLoader = document.createElement("div"); $(this.LocalXLSXLoader).attr("id","LocalXLSXLoader"); @@ -411,7 +432,7 @@ Dataloader.prototype = { $(this.LocalXLSXLoader).append(this.xlsxFile); this.loadLocalXLSXButton = document.createElement("button"); - $(this.loadLocalXLSXButton).text("Load XLS/XLSX"); + $(this.loadLocalXLSXButton).text(GeoTemConfig.getString("loadExcel")); $(this.LocalXLSXLoader).append(this.loadLocalXLSXButton); $(this.loadLocalXLSXButton).click($.proxy(function(){ @@ -447,4 +468,29 @@ Dataloader.prototype = { $(this.parent.gui.loaders).append(this.LocalXLSXLoader); }, + // end of "dataloaderContainerDiv" + + /* + for special use cases - exhibition, poster, for embedded display + Only one dataset, that has configurated in embed/js/specialUses.geobro.conf.js + Explicit loading + */ + exhibitionLoader : function () { + var dataLoader = this; + var csvURL = exhibitionFile; + if (csvURL.length === 0) + return; + var origURL = csvURL; + var fileName = dataLoader.getFileName(csvURL); + + // Choose proxy or direct access in GeoTemConfig.getCSV(). + GeoTemConfig.getCsv(csvURL, function(json){ + if ((typeof json !== "undefined") && (json.length > 0)) { + var dataSet = new Dataset(GeoTemConfig.loadJson(json), fileName, origURL); + if (dataSet != null) + dataLoader.distributeDataset(dataSet); + } else + alert(addToProxysWhitelistMessage1 + csvURL + addToProxysWhitelistMessage2); + }); + } }; diff --git a/js/Dataloader/DataloaderConfig.js b/js/Dataloader/DataloaderConfig.js index f4ef9ad..ee05154 100644 --- a/js/Dataloader/DataloaderConfig.js +++ b/js/Dataloader/DataloaderConfig.js @@ -26,7 +26,9 @@ */ function DataloaderConfig(options) { - var dl = 'https://geobrowser.de.dariah.eu/'; +// var dl = 'https://geobrowser.de.dariah.eu/'; + var dl = 'http://b-dev20211109.pk.de/geo-browser/'; + // Diese Datei ist es nicht - etah2022.csv nicht im Auswahlmenü this.options = { staticKML : [ diff --git a/js/Dataloader/DataloaderWidget.js b/js/Dataloader/DataloaderWidget.js index 81cca6c..5f50467 100644 --- a/js/Dataloader/DataloaderWidget.js +++ b/js/Dataloader/DataloaderWidget.js @@ -405,7 +405,7 @@ DataloaderWidget.prototype = { }; if (parametersArray.length>0){ - parseParam(0) + parseParam(0); } } }; diff --git a/js/FuzzyTimeline/FuzzyTimelineConfig.js b/js/FuzzyTimeline/FuzzyTimelineConfig.js index 1936d53..8f3bfd2 100644 --- a/js/FuzzyTimeline/FuzzyTimelineConfig.js +++ b/js/FuzzyTimeline/FuzzyTimelineConfig.js @@ -42,9 +42,23 @@ function FuzzyTimelineConfig(options) { //if set to true, a span that creates more "bars" than fit on the screen //will lead to a width-increase of the chart (and a scroll bar appears) showAllPossibleSpans : true, + + // For special use cases you can configure a fix label format at x-axis (time) + xAxisFormat : '', + xAxisTooltip : '', }; if ( typeof options != 'undefined') { $.extend(this.options, options); } + if (exhibition) + { + // math.: Stützstellen - supporting points - calculate number of supporting points + this.options.maxDensityTicks = Math.floor((window.screen.availWidth - 70) / 5); + + // label time format at x-axis + this.options.xAxisFormat = '%Y'; + this.options.xAxisTooltip = 'YYYY'; + } + }; diff --git a/js/FuzzyTimeline/FuzzyTimelineDensity.js b/js/FuzzyTimeline/FuzzyTimelineDensity.js index f1feb6f..510c44a 100644 --- a/js/FuzzyTimeline/FuzzyTimelineDensity.js +++ b/js/FuzzyTimeline/FuzzyTimelineDensity.js @@ -78,9 +78,6 @@ FuzzyTimelineDensity.prototype = { } else { chartData.push([maxPlotedDate+1,0]); } - - - return chartData; }, @@ -182,6 +179,18 @@ FuzzyTimelineDensity.prototype = { tooltipFormatString = "YYYY/MM"; } + // For special use cases you can configure a fix label format at x-axis (time) + // configuration: PLATIN/js/FuzzyTimeline/FuzzyTimelineConfig.js + // actual use case: exhibition + if( this.options.xAxisFormat != '') + { + axisFormatString = this.options.xAxisFormat; + } + if( this.options.xAxisTooltip != '') + { + tooltipFormatString = this.options.xAxisTooltip; + } + //credits: Pimp Trizkit @ http://stackoverflow.com/a/13542669 function shadeRGBColor(color, percent) { var f=color.split(","),t=percent<0?0:255,p=percent<0?percent*-1:percent,R=parseInt(f[0].slice(4)),G=parseInt(f[1]),B=parseInt(f[2]); diff --git a/js/FuzzyTimeline/FuzzyTimelineRangeBars.js b/js/FuzzyTimeline/FuzzyTimelineRangeBars.js index a9e9905..fb01d74 100644 --- a/js/FuzzyTimeline/FuzzyTimelineRangeBars.js +++ b/js/FuzzyTimeline/FuzzyTimelineRangeBars.js @@ -154,7 +154,7 @@ FuzzyTimelineRangeBars.prototype = { var tickCount = rangeBar.tickSpans.length-1; var ticks = []; - + var axisFormatString = "YYYY"; if (rangeBar.spanWidth<60*1000){ axisFormatString = "YYYY/MM/DD HH:mm:ss"; @@ -167,6 +167,14 @@ FuzzyTimelineRangeBars.prototype = { } else if (rangeBar.spanWidth<12*31*24*60*60*1000){ axisFormatString = "YYYY/MM"; } + + // For special use cases you can configure a fix label format at x-axis (time) + // Configuration: PLATIN/js/FuzzyTimeline/FuzzyTimelineConfig.js + if( this.options.xAxisFormat !== '') + { + axisFormatString = this.options.xAxisTooltip; + } + //only show ~10 labels on the x-Axis (increase if zoomed) var labelModulo = Math.ceil(tickCount/(10*rangeBar.parent.zoomFactor)); for (var i = 0; i < tickCount; i++){ @@ -178,7 +186,7 @@ FuzzyTimelineRangeBars.prototype = { tickLabel = tickLabel.substring(1); ticks[i] = [i,tickLabel]; } - + var options = { series:{ bars:{show: true} diff --git a/js/FuzzyTimeline/FuzzyTimelineRangeSlider.js b/js/FuzzyTimeline/FuzzyTimelineRangeSlider.js index b1a0af3..4572618 100644 --- a/js/FuzzyTimeline/FuzzyTimelineRangeSlider.js +++ b/js/FuzzyTimeline/FuzzyTimelineRangeSlider.js @@ -40,35 +40,56 @@ function FuzzyTimelineRangeSlider(parent) { this.sliderParentTable = this.parent.gui.sliderTable; var headerRow = $("