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 = $(""); var controlsRow = $(""); + var strHtml = ''; $(this.sliderParentTable).append(headerRow).append(controlsRow); - headerRow.append("Time start"); - this.rangeStart = document.createElement("select"); - controlsRow.append($("").append(this.rangeStart)); + // At special use cases, timeStart isn't necessary + // construct GeoTemConfig.getString("timeStart") used for multi language + if (!exhibition && !forEmbeddedUse) { + var strHtml = "" + GeoTemConfig.getString("timeStart") + ""; + headerRow.append(strHtml); + //headerRow.append("Time start"); + this.rangeStart = document.createElement("select"); + controlsRow.append($("").append(this.rangeStart)); + } - headerRow.append("Time unit"); + var strHtml = "" + GeoTemConfig.getString("timeUnit") + ""; + headerRow.append(strHtml); + //headerRow.append("Time unit"); this.rangeDropdown = document.createElement("select"); controlsRow.append($("").append(this.rangeDropdown)); - headerRow.append("Scaling"); - this.scalingDropdown = document.createElement("select"); - controlsRow.append($("").append(this.scalingDropdown)); - $(this.scalingDropdown).append(""); - $(this.scalingDropdown).append(""); - $(this.scalingDropdown).append(""); - $(this.scalingDropdown).change(function(eventObject){ - var scaleMode = $(rangeSlider.scalingDropdown).find("option:selected").text(); - rangeSlider.parent.changeScaleMode(scaleMode); - }); + if (!exhibition) { + var strHtml = "" + GeoTemConfig.getString("scaling") + ""; + headerRow.append(strHtml); + //headerRow.append("Scaling"); + this.scalingDropdown = document.createElement("select"); + controlsRow.append($("").append(this.scalingDropdown)); + + strHtml = ""; + $(this.scalingDropdown).append(strHtml); + strHtml = ""; + $(this.scalingDropdown).append(strHtml); + strHtml = ""; + $(this.scalingDropdown).append(strHtml); + $(this.scalingDropdown).change(function (eventObject) { + var scaleMode = $(rangeSlider.scalingDropdown).find("option:selected")[0].value; + rangeSlider.parent.changeScaleMode(scaleMode); + }); + } headerRow.append("Animation"); this.startAnimation = document.createElement("div"); + this.startAnimation.title = GeoTemConfig.getString("playButton"); $(this.startAnimation).addClass("smallButton playDisabled"); this.pauseAnimation = document.createElement("div"); + this.pauseAnimation.title = GeoTemConfig.getString("animationPause"); $(this.pauseAnimation).addClass("smallButton pauseDisabled"); controlsRow.append($("").append(this.startAnimation).append(this.pauseAnimation)); - headerRow.append("Dated objects"); + var strHtml = "" + GeoTemConfig.getString("datedObjects") + ""; + headerRow.append(strHtml); + //headerRow.append("Dated objects"); this.numberDatedObjects = 0; this.numberDatedObjectsDIV = document.createElement("div"); $(this.numberDatedObjectsDIV).addClass("ddbElementsCount"); diff --git a/js/FuzzyTimeline/FuzzyTimelineWidget.js b/js/FuzzyTimeline/FuzzyTimelineWidget.js index d69f3ab..59527e7 100644 --- a/js/FuzzyTimeline/FuzzyTimelineWidget.js +++ b/js/FuzzyTimeline/FuzzyTimelineWidget.js @@ -58,7 +58,7 @@ FuzzyTimelineWidget.prototype = { initWidget : function(data) { var fuzzyTimeline = this; - + delete fuzzyTimeline.overallMin; delete fuzzyTimeline.overallMax; @@ -389,7 +389,7 @@ FuzzyTimelineWidget.prototype = { fuzzyTimeline.core.triggerSelection(selection); }, - + addHandle : function(x1,x2){ var fuzzyTimeline = this; //make sure the interval is ordered correctly @@ -456,7 +456,7 @@ FuzzyTimelineWidget.prototype = { leftHandle.style.top = plotHeight/2-$(leftHandle).height()/2 + "px"; var rightHandle = document.createElement("div"); - rightHandle.title = GeoTemConfig.getString('leftHandle'); + rightHandle.title = GeoTemConfig.getString('rightHandle'); rightHandle.style.backgroundImage = "url(" + GeoTemConfig.path + "rightHandle.png" + ")"; rightHandle.setAttribute('class', 'plotHandle plotHandleIcon'); rightHandle.style.visibility = "visible"; diff --git a/js/GeoTemConfig.js b/js/GeoTemConfig.js index 9ac190b..df85c01 100644 --- a/js/GeoTemConfig.js +++ b/js/GeoTemConfig.js @@ -52,7 +52,8 @@ GeoTemConfig = { incompleteData : true, // show/hide data with either temporal or spatial metadata inverseFilter : true, // if inverse filtering is offered mouseWheelZoom : true, // enable/disable zoom with mouse wheel on map & timeplot - language : 'en', // default language of GeoTemCo +// language : 'en', // default language of GeoTemCo + language : 'de', // default language of GeoTemCo allowFilter : true, // if filtering should be allowed highlightEvents : true, // if updates after highlight events selectionEvents : true, // if updates after selection events @@ -63,8 +64,9 @@ GeoTemConfig = { // default loadColorFromDataset : false, // if DataObject color should be loaded automatically (from column "color") allowColumnRenaming : true, - proxy : '/php/proxy.php?address=', // set this if a HTTP proxy shall be used (e.g. to bypass - // X-Domain problems) + // proxy : 'http://b-dev20211109/geo-browser/PLATIN/php/proxy.php?address=', // set this if a HTTP proxy shall be used (e.g. to bypass + proxy : 'http://b-dev20211109.pk.de/geo-browser/PLATIN/php/proxy.php?address=', // set this if a HTTP proxy shall be used (e.g. to bypass + // X-Domain problems) dariahOwnStorageURL : dariahOwnStorageURL, // URL of DARIAH-DE OwnStorage datasheetEditorURL : datasheetEditorURL, // URL of the Datasheet Editor dariahOwnStorageBearerPrefix : 'bearer ', @@ -214,6 +216,29 @@ GeoTemConfig = { } +/* + Language switcher - texts load from PLATIN/js/Util/Tooltips.js + actual: de - deutsch/german, en - englisch/english, 112 items + */ +var actualUrl = window.location.href; +if (actualUrl.indexOf('?') > 0) +{ + var feld1 = actualUrl.split('?'); + var feld2 = feld1[1].split('='); + GeoTemConfig.language = feld2[1].toLowerCase(); +} + + +if (exhibition){ + GeoTemConfig.mouseWheelZoom = false; + GeoTemConfig.allowFilter = false; +} +if (forEmbeddedUse) +{ + //GeoTemConfig.allowFilter = false; +} + + GeoTemConfig.ie = false; GeoTemConfig.ie8 = false; diff --git a/js/Map/MapConfig.js b/js/Map/MapConfig.js index 6c52e0a..15c6e01 100644 --- a/js/Map/MapConfig.js +++ b/js/Map/MapConfig.js @@ -273,7 +273,8 @@ function MapConfig(options) { bingApiKey : 'none', // bing maps api key, see informations at http://bingmapsportal.com/ osmMaps : true, // enable/disable OSM maps osmMapsMapQuest : false, // enable/disable OSM maps with MapQuest tiles - baseLayer : 'terrain', // initial layer to show (e.g. 'Google Streets') +// baseLayer : 'watercolor', // initial layer to show (e.g. 'Google Streets') + baseLayer : 'OpenStreetMap', // initial layer to show (e.g. 'Google Streets') resetMap : true, // show/hide map reset button countrySelect : true, // show/hide map country selection control button polygonSelect : true, // show/hide map polygon selection control button @@ -301,7 +302,8 @@ function MapConfig(options) { maxLabelIncrease : 2, // maximum increase (in em) for the font size of a label labelHover : false, // true, to update on label hover ieHighlightLabel : "color: COLOR1; background-color: COLOR0; filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';", // css code for a highlighted place label in IE - highlightLabel : "color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR0;", // css code for a highlighted place label +// highlightLabel : "color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR0;", // css code for a highlighted place label + highlightLabel : "color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR1;", // css code for a highlighted place label ieSelectedLabel : "color: COLOR1; font-weight: bold;", // css code for a selected place label in IE selectedLabel : "color: COLOR1; font-weight: bold;", // css code for a selected place label ieUnselectedLabel : "color: COLOR1; font-weight: normal;", // css code for an unselected place label in IE @@ -343,6 +345,20 @@ function MapConfig(options) { this.options.useGraphics = true; } + /* + special use cases + */ + if (exhibition){ + this.options.mapSelectionTools = false; + } + + if (forEmbeddedUse) + { + this.options.countrySelect = false; + this.options.polygonSelect = false; + + } + }; MapConfig.prototype.getGraphic = function(id){ diff --git a/js/Map/MapGui.js b/js/Map/MapGui.js index 3035fe8..40b14d2 100644 --- a/js/Map/MapGui.js +++ b/js/Map/MapGui.js @@ -63,6 +63,18 @@ function MapGui(map, div, options, iid) { this.container.appendChild(toolbarTable); this.mapToolbar = toolbarTable; + /* + for special use cases: take toolbar out of map - toolbar haven't overlap map + */ + if (exhibition){ + this.mapToolbar.style.position.value = 'relative'; + this.mapToolbar.style.top = '-43px'; + } + if (forEmbeddedUse){ + this.mapToolbar.style.position.value = 'relative'; + this.mapToolbar.style.top = '-53px'; + } + var titles = document.createElement("tr"); toolbarTable.appendChild(titles); var tools = document.createElement("tr"); @@ -115,33 +127,39 @@ function MapGui(map, div, options, iid) { tools.appendChild(mapSum); } - this.lockTitle = document.createElement("td"); - titles.appendChild(this.lockTitle); - this.lockIcon = document.createElement("td"); - var lockButton = document.createElement("div"); - $(lockButton).addClass('mapControl'); - $(lockButton).attr('title', 'Lock map state'); - var activateLock = function() { - map.navigation.deactivate(); - } - var deactivateLock = function() { - map.navigation.activate(); - } - var lockMapControl = new MapControl(this.map, lockButton, 'lock', activateLock, deactivateLock); - tools.appendChild(lockMapControl.button); - - this.fullscreenTitle = document.createElement("td"); - titles.appendChild(this.fullscreenTitle); - this.fullscreenIcon = document.createElement("td"); - var fullscreenButton = document.createElement("div"); - $(fullscreenButton).addClass('mapControl'); - $(fullscreenButton).attr('title', 'Fullscreen'); - var prevWidth; - var prevHeight; - var prevParent; - var activateFullscreen = function() { - $div=$(div); - $window = $(window); + /* + look and fullscreen aren't necessary for exhibition mode + */ + if (!(exhibition)) { + this.lockTitle = document.createElement("td"); + titles.appendChild(this.lockTitle); + this.lockTitle.innerHTML = ' '; + this.lockIcon = document.createElement("td"); + var lockButton = document.createElement("div"); + $(lockButton).addClass('mapControl'); + $(lockButton).attr('title', 'Lock map state'); + var activateLock = function () { + map.navigation.deactivate(); + } + var deactivateLock = function () { + map.navigation.activate(); + } + var lockMapControl = new MapControl(this.map, lockButton, 'lock', activateLock, deactivateLock); + tools.appendChild(lockMapControl.button); + + this.fullscreenTitle = document.createElement("td"); + titles.appendChild(this.fullscreenTitle); + this.fullscreenTitle.innerHTML = ' '; + this.fullscreenIcon = document.createElement("td"); + var fullscreenButton = document.createElement("div"); + $(fullscreenButton).addClass('mapControl'); + $(fullscreenButton).attr('title', 'Fullscreen'); + var prevWidth; + var prevHeight; + var prevParent; + var activateFullscreen = function () { + $div = $(div); + $window = $(window); prevWidth = $div.width(); prevHeight = $div.height(); @@ -166,12 +184,37 @@ function MapGui(map, div, options, iid) { $div.width(prevWidth); $div.height(prevHeight); - gui.resize(); + gui.resize(); + } + var fullscreenMapControl = new MapControl(this.map, fullscreenButton, 'fullscreen', activateFullscreen, deactivateFullscreen); + tools.appendChild(fullscreenMapControl.button); + } + + /* + At this moment: only reload map container + */ + if (exhibition || forEmbeddedUse) + { + this.reloadTitle = document.createElement("td"); + titles.appendChild(this.reloadTitle); + this.reloadTitle.innerHTML = ' '; + this.reloadIcon = document.createElement("td"); + this.reloadIcon.className = 'mapControl'; + this.reloadIcon.innerHTML = '' + + '' + + ''; + tools.appendChild(this.reloadIcon); + + this.reloadIcon.onclick = function() { + if (map.mds.getAllObjects() == null){ + map.openlayersMap.setCenter(new OpenLayers.LonLat(0, 0)); + map.openlayersMap.zoomTo(0); + } + gui.map.drawObjectLayer(true); + } } - var fullscreenMapControl = new MapControl(this.map, fullscreenButton, 'fullscreen', activateFullscreen, deactivateFullscreen); - tools.appendChild(fullscreenMapControl.button); - if (navigator.geolocation && options.geoLocation) { + if (navigator.geolocation && options.geoLocation && !(exhibition)) { this.geoActive = false; this.geoLocation = document.createElement("div"); this.geoLocation.setAttribute('class', 'geoLocationOff'); @@ -182,10 +225,10 @@ function MapGui(map, div, options, iid) { var changeStyle = function() { if (gui.geoActive) { gui.geoLocation.setAttribute('class', 'geoLocationOn'); - gui.geoLocation.title = GeoTemConfig.getString(GeoTemConfig.language, 'deactivateGeoLocation'); + gui.geoLocation.title = GeoTemConfig.getString('deactivateGeoLocation'); } else { gui.geoLocation.setAttribute('class', 'geoLocationOff'); - gui.geoLocation.title = GeoTemConfig.getString(GeoTemConfig.language, 'activateGeoLocation'); + gui.geoLocation.title = GeoTemConfig.getString('activateGeoLocation'); } } if (!gui.geoActive) { @@ -378,6 +421,38 @@ function MapGui(map, div, options, iid) { var basemap = this.map.baseLayers[i]; var name = basemap.name; if (basemap.title) name = basemap.title; + + // For use case "exhibition" - display without browser controls - Popup window + var mapCopyright = basemap.attribution; + if (mapCopyright != null) { + var copyDummy = document.createElement('span'); + copyDummy.innerHTML = mapCopyright; + // all link elements + var targetEles = copyDummy.getElementsByTagName('a'); + var anzEles = targetEles.length; + for (var j = 0; j < anzEles; j++) { + if (!exhibition) { + targetEles[j].target = '_blank'; + } else { + var strHref = targetEles[j].href; + // reproduce a-href -> span-onclick + var att = document.createAttribute("onclick"); + att.value = "window.open('" + strHref + "', 'licenseDisplay', 'width=800,height=600'); return false"; + targetEles[j].setAttributeNode(att); + targetEles[j].removeAttribute('href'); + // show as link + att = document.createAttribute("class"); + att.value = "mapLizenz"; + targetEles[j].setAttributeNode(att); + } + var strHtml = copyDummy.innerHTML; + // change element a to span + strHtml = strHtml.replaceAll("=this.resolutions[zoom]){ break; } } - if (zoom === this.resolutions.length){ + if (zoom == this.resolutions.length){ zoom--; } } - return zoom; + return(zoom); }, setMarker : function(lon, lat) { diff --git a/js/Map/PlacenameTags.js b/js/Map/PlacenameTags.js index ec489cb..8b95c02 100644 --- a/js/Map/PlacenameTags.js +++ b/js/Map/PlacenameTags.js @@ -32,12 +32,12 @@ function PlacenameTags(circle, map) { this.circle = circle; this.map = map; - this.placeLabels - this.selectedLabel + this.placeLabels; + this.selectedLabel; - this.allLabel - this.othersLabel - this.unknownLabel + this.allLabel; + this.othersLabel; + this.unknownLabel; this.calculate = function() { this.calculateLabels(); @@ -283,17 +283,25 @@ function PlacenameTags(circle, map) { }; -function PackPlacenameTags(circle, map) { +/* +* This class is never used in whole project + */ + +/* + function PackPlacenameTags(circle, map) { this.circle = circle; this.map = map; - this.placeLabels - this.selectedLabel + this.placeLabels; + this.selectedLabel; + + this.allLabel; + this.othersLabel; + this.unknownLabel; - this.allLabel - this.othersLabel - this.unknownLabel + console.log('label 2 - oben'); + console.log(this); this.calculate = function() { this.calculateLabels(); @@ -667,4 +675,4 @@ function PackPlacenameTags(circle, map) { $(this.centerDivOl).remove(); }; -}; +};*/ diff --git a/js/Util/Tooltips.js b/js/Util/Tooltips.js index 5d9e749..42925d2 100644 --- a/js/Util/Tooltips.js +++ b/js/Util/Tooltips.js @@ -112,8 +112,8 @@ var Tooltips = { "paginationDropdownHelp" : "Select number of elements per page", "selectTimeUnit" : "Select Time Unit", "valueScale" : "Value Scale", - "linearPlot" : "Linear Value Scale", - "logarithmicPlot" : "Logarithmic Value Scale", + "linearPlot" : "Linear/normal ", + "logarithmicPlot" : "Logarithmic (Ln)", "playButton" : "Animate Selected Range", "pauseButton" : "Pause Animation", "createNewFromSelectedHelp" : "Create new dataset from selected values", @@ -121,29 +121,49 @@ var Tooltips = { "exportDatasetHelp" : "Export this dataset to a KML file", "invertSelectionHelp" : "Invert the current selection", "colorShapeDatasetHelp" : "change color or shape of dataset", - "lockMap" : "lock the map in this state" + "lockMap" : "lock the map in this state", + "mapTitle" : "Results", + "StaticLoader" : "Static data", + "load" : "Load", + "KMLLoader" : "KML file URL", + "loadKML" : "Load KML", + "KMZLoader" : "KMZ file URL", + "loadKMZ" : "Load KMZ", + "CSVLoader" : "CSV file URL", + "loadCSV" : "Load CSV", + "localKMLLoader" : "Local KML file", + "localCSVLoader" : "Local CSV file", + "localStorageLoader" : "Geobrowser intern storage", + "localXLSXLoader" : "Local XLS/XLSX file", + "loadExcel" : "Load XLS/XLSX", + "timeStart" : "Time start", + "timeUnit" :"Time unit", + "scaling" : "Scaling", + "percentagePlot" : "Percentage (%)", + "datedObjects" : "Dated objects", + "linguaTitle" : "E. T. A. Hoffmanns works all over the world" }, "de" : { "locationType" : "Ortsfacette", - "selectLocationType" : "Wähle Ortsfacette", + "selectLocationType" : "Wähle Ortsfacette", "mapType" : "Kartentyp", - "selectMapType" : "Wähle Kartentyp", - "selectOverlay" : "Kartenauswahl für rämliches filtern", - "overlays" : "Wähle layer", + "selectMapType" : "Wähle Kartentyp", + "selectOverlay" : "Kartenauswahl für räumliches filtern", + "overlays" : "Wähle layer", "mapSelectorTools" : "Bereichsauswahl", - "overlaySelector" : "Selection layer", - "square" : "Quadratauswahl: Maus ziehen und loslassen um Mittelpunkt und Seitenlänge des Quadrats zu bestimmen", + "overlaySelector" : "Auswahlebene", + "square" : "Quadratauswahl: Maus ziehen und loslassen um Mittelpunkt und Seitenlänge des Quadrats zu bestimmen", "circle" : "Kreisauswahl: Maus ziehen und loslassen um Mittelpunkt und Radius des Kreises zu bestimmen", - "polygon" : "Polygonauswahl: Mausklick zum Hinzufügen eines Eckpunktes, Doppelklick zum Fertigstellen", + "polygon" : "Polygonauswahl: Mausklick zum Hinzufügen eines Eckpunktes, Doppelklick zum Fertigstellen", "country" : "Landauswahl: Mausklick innerhalb politischer Grenze eines Landes", "singleEntry" : "Nur 1 Eintrag vorhanden", "resultsLocation" : "mit Geoinformation", - "home" : "Zurücksetzen zur initialen Sicht", - "zoomIn" : "Vergrößern", + "home" : "Zurücksetzen zur initialen Sicht", + "zoomIn" : "Vergrößern", "zoomOut" : "Verkleinern", "zoomSlider" : "Zoomregler", "dragSelection" : "Verschiebe Auswahl", - "zoomSelection" : "Vergrößere Auswahl", + "zoomSelection" : "Vergrößere Auswahl", "clearSelection" : "Entferne Auswahlbereich", "contemporaryMap" : "Aktuelle Weltkarte", "activateGeoLocation" : "Meinen Standort anzeigen", @@ -155,25 +175,25 @@ var Tooltips = { "hexagonalBinning" : "Hexagone", "triangularBinning" : "Dreiecke", "noBinning" : "Keine Bins", - "selectBinningType" : "Wähle Binningart", - "binningTooltip" : "W&aunl;hle die Binninart für die Datenquellen", + "selectBinningType" : "Wähle Binningart", + "binningTooltip" : "Wähle die Binningart für die Datenquellen", "binningType" : "Binningart", "results" : "Resultate", "result" : "Resultat", "timeType" : "Zeitfacette", "timeUnit" : "Zeiteinheit", - "selectTimeType" : "Wähle Zeitfacette", + "selectTimeType" : "Wähle Zeitfacette", "timeAnimation" : "Animation", "resultsTime" : "mit Zeitinformation", "animationDisabled" : "Animationswerkzeug (deaktiviert)", - "animationPlay" : "Animiere ausgewählten Zeitbereich", + "animationPlay" : "Animiere ausgewählten Zeitbereich", "animationPause" : "Animation anhalten", "leftHandle" : "Verschiebe linke Grenze", "rightHandle" : "Verschiebe rechte Grenze", "dragTimeRange" : "Verschiebe Zeitbereich", "connectionsOn" : "Aktiviere zeitabhängige Verbindungen zwischen Kreisen auf der Karte", "connectionsOff" : "Deaktiviere zeitabhängige Verbindungen", - "timeFeather" : "Verändere Zeitbereichsübergänge zum Glätten der Animation", + "timeFeather" : "Verändere Zeitbereichsübergänge zum Glätten der Animation", "pageInfo" : "Seite PAGE_ID von PAGES_ID", "resultsInfo" : "RESULTS_FROM_ID-RESULTS_TO_ID von RESULTS_ID Ergebnissen", "allResults" : "alle", @@ -183,38 +203,58 @@ var Tooltips = { "noAggregation" : "Kreise nicht aggregiert", "showBbox" : "Geografische Ausdehnung anzeigen", "hideBbox" : "Geografische Ausdehnung ausblenden", - "spaceHelp" : "Jeder Punkt auf der Karte entspricht einem oder mehreren Objekten der Ergebnisliste. Sie können verschiedene ortsbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Ortsfacette) und verschiedene Kartentypen.
Da es Objekte geben kann, die keine Ortsangabe in ihrer Beschreibung enthalten, ist die Menge der in der Karte dargestellten Objekte in der Regel kleiner als in der Ergebnisliste (Anzahl darstellbarer Objekte siehe rechts oben über der Karte).
Mit der Karte können Sie die Suchergebnisse weiter eingrenzen, indem Sie auf einen der Punkte klicken. Wählen Sie einen Ort aus und klicken Sie auf die kleine Lupe, um die Ergebnisliste so einzuschränken, dass nur noch die diesem Ort zugeordneten Objekte als Suchergebnis erscheinen. Mehr zur Karte im Benutzerhandbuch ...", - "timeHelp" : "In der Zeitleiste sind die Suchergebnisse nach Jahren geordnet. Sie können verschiedene zeitbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Zeitfacette).
Da es Objekte geben kann, die keine Zeitangabe in ihrer Beschreibung enthalten, ist die Zahl der in der Zeitleiste dargestellten Objekte in der Regel kleiner als in der Ergebnisliste. Die Angabe über darstellbare Objekte finden Sie rechts über der Zeitleiste.
Mit der Zeitleiste können Sie die Suchergebnisse weiter eingrenzen. Wählen Sie ein Jahr oder einen Zeitraum durch Klicken und Ziehen und klicken Sie auf die kleine Lupe. Die Ergebnisliste zeigt nur noch die Objekte in diesem Zeitraum. Mehr zur Zeitleiste im Benutzerhandbuch ...", - "selectTablePageItemsHelp" : "Click to select all rows of this page", - "deselectTablePageItemsHelp" : "Click to deselect all rows of this page", - "selectAllTableItemsHelp" : "Click to select all rows of the table", - "deselectAllTableItemsHelp" : "Click to deselect all rows of the table", + "spaceHelp" : "Jeder Punkt auf der Karte entspricht einem oder mehreren Objekten der Ergebnisliste. Sie können verschiedene ortsbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Ortsfacette) und verschiedene Kartentypen.
Da es Objekte geben kann, die keine Ortsangabe in ihrer Beschreibung enthalten, ist die Menge der in der Karte dargestellten Objekte in der Regel kleiner als in der Ergebnisliste (Anzahl darstellbarer Objekte siehe rechts oben über der Karte).
Mit der Karte können Sie die Suchergebnisse weiter eingrenzen, indem Sie auf einen der Punkte klicken. Wählen Sie einen Ort aus und klicken Sie auf die kleine Lupe, um die Ergebnisliste so einzuschränken, dass nur noch die diesem Ort zugeordneten Objekte als Suchergebnis erscheinen. Mehr zur Karte im Benutzerhandbuch ...", + "timeHelp" : "In der Zeitleiste sind die Suchergebnisse nach Jahren geordnet. Sie können verschiedene zeitbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Zeitfacette).
Da es Objekte geben kann, die keine Zeitangabe in ihrer Beschreibung enthalten, ist die Zahl der in der Zeitleiste dargestellten Objekte in der Regel kleiner als in der Ergebnisliste. Die Angabe über darstellbare Objekte finden Sie rechts über der Zeitleiste.
Mit der Zeitleiste können Sie die Suchergebnisse weiter eingrenzen. Wählen Sie ein Jahr oder einen Zeitraum durch Klicken und Ziehen und klicken Sie auf die kleine Lupe. Die Ergebnisliste zeigt nur noch die Objekte in diesem Zeitraum. Mehr zur Zeitleiste im Benutzerhandbuch ...", + "selectTablePageItemsHelp" : "Klicken Sie, um alle Zeilen dieser Seite auszuwählen", + "deselectTablePageItemsHelp" : "Klicken Sie hier, um die Zeilenauswahl dieser Seite zu löschen", + "selectAllTableItemsHelp" : "Klicken Sie, um alle Zeilen dieser Tabelle auszuwählen", + "deselectAllTableItemsHelp" : "Klicken Sie, um die Zeilenauswahl dieser Tabelle zu löschen", "filter" : "Filter", - "filterSelectedItemsHelp" : "Filter the selected items", - "inverseFilterSelectedItemsHelp" : "Apply an inverse filter on the selected items removing them from the views", - "undoFilterSelection" : "Undo the last filter / inverse filter", - "cancelSelection" : "Discard the current selection (all items appear as deselected)", - "showSelectedHelp" : "Show only elements within the selection", - "selectByTextHelp" : "Select elements that contain the given text", - "showAllElementsHelp" : "Show all elements", - "paginationFirsPageHelp" : "Show first page", - "paginationPreviousPageHelp" : "Show previous page", - "paginationNextPageHelp" : "Show next page", - "paginationLastPageHelp" : "Show last page", - "sortAZHelp" : "Sort table elements ascending according this column", - "sortZAHelp" : "Sort table elements descending according this column", - "paginationDropdownHelp" : "Select number of elements per page", - "selectTimeUnit" : "Wähle Zeitinervalle", - "valueScale" : "Value Scale", - "linearPlot" : "Linear Value Scale", - "logarithmicPlot" : "Logarithmic Value Scale", - "playButton" : "Animate Selected Range", + "filterSelectedItemsHelp" : "Filtert die ausgewählten Elemente", + "inverseFilterSelectedItemsHelp" : "Wendet einen umgekehrten Filter auf die ausgewählten Elemente an, um ihre Markierung zu entfernen", + "undoFilterSelection" : "Macht die letzte Filteraktion rückgängig", + "cancelSelection" : "Aktuelle Auswahl verwerfen (Alle Elemente werden unmarkiert angezeigt.)", + "showSelectedHelp" : "Zeigt nur ausgewählte Elemente an", + "selectByTextHelp" : "Zeigt nur Elemente an, die den eingegebenen Text enthalten", + "showAllElementsHelp" : "Zeigt alle Elemente", + "paginationFirsPageHelp" : "Zeigt die erste Seite", + "paginationPreviousPageHelp" : "Zeigt die vorherige Seite", + "paginationNextPageHelp" : "Zeigt die nächste Seite", + "paginationLastPageHelp" : "Zeigt die letzte Seite", + "sortAZHelp" : "Sortiert alle Tabellenelemente gemäß der Werte dieser Spalte aufsteigend", + "sortZAHelp" : "Sortiert alle Tabellenelemente gemäß der Werte dieser Spalte absteigend", + "paginationDropdownHelp" : "Wählen Sie die Anzahl der angezeigten Elemente je Seite", + "selectTimeUnit" : "Wähle Zeitintervalle", + "valueScale" : "Skalierung Wertebereich / y-Achse", + "linearPlot" : "Linear", + "logarithmicPlot" : "Logarithmisch (Ln)", + "playButton" : "Animation des ausgewählten Bereiches starten", "pauseButton" : "Pause Animation", - "createNewFromSelectedHelp" : "Erstelle neuen Datensatz aus den selektierten Einträgen", + "createNewFromSelectedHelp" : "Erstelle neuen Datensatz aus den ausgewählten Einträgen", "removeDatasetHelp" : "Diesen Datensatz entfernen", "exportDatasetHelp" : "Diesen Datensatz in KML Datei exportieren", - "invertSelectionHelp" : "Jetzige Selektion umkehren", + "invertSelectionHelp" : "Jetzige Auswahl umkehren", "colorShapeDatasetHelp" : "Farbe oder Form des Datensatzes ändern", - "lockMap" : "Karte in diesem Zustand halten." + "lockMap" : "Karte in diesem Zustand halten.", + "mapTitle" : "Treffer", + "StaticLoader" : "Beispiele Fixdaten", + "load" : "Laden", + "KMLLoader" : "URL der KML-Datei", + "loadKML" : "KML-Datei laden", + "KMZLoader" : "URL der KMZ-Datei", + "loadKMZ" : "KMZ-Datei laden", + "CSVLoader" : "URL der CSV-Datei", + "loadCSV" : "CSV-Datei laden", + "localKMLLoader" : "Lokale KML-Datei", + "localCSVLoader" : "Lokale CSV-Datei", + "localStorageLoader" : "Geobrowser interner Speicher", + "localXLSXLoader" : "Lokale XLS/XLSX-Datei", + "loadExcel" : "XLS/XLSX-Datei laden", + "timeStart" : "Startzeitpunkt", + "timeUnit" :"Zeitintervalle", + "scaling" : "Skalierung", + "percentagePlot" : "In Prozent (%)", + "datedObjects" : "Datierte Treffer", + "linguaTitle" : "E. T. A. Hoffmanns Werke in aller Welt" } } diff --git a/php/proxy.php b/php/proxy.php index 2b3dc77..c826ac5 100644 --- a/php/proxy.php +++ b/php/proxy.php @@ -22,9 +22,14 @@ //Hosts that are allowed to download from in RegEx form. (e.g. "/.*dropbox\.com/") //If this array is empty, all hosts are allowed. - $validHosts = array( - "/localhost/", - ); + $validHosts = array(); + $validHosts[] = '/localhost/'; + $validHosts[] = '/b-dev20211109.pk.de/'; + +/* $strFaenger = print_r($validHosts, true); +$strConsole = ""; +echo $strConsole;*/ +//print_r($validHosts); if (isset($_REQUEST['address'])){