{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/marker-gauge-red.png","webpack:///./src/assets/linestring_arrow_grey.png","webpack:///./src/lib/http.js","webpack:///./src/assets/linestring_arrow.png","webpack:///./src/assets sync ^\\.\\/marker\\-gauge\\-.*\\.png$","webpack:///./src/store/importschedule.js","webpack:///./src/store/fairwayavailability.js","webpack:///./src/store/application.js","webpack:///./src/store/user.js","webpack:///./src/store/usermanagement.js","webpack:///./src/store/map.js","webpack:///./src/lib/geo.js","webpack:///./src/store/fairwayprofile.js","webpack:///./src/store/bottlenecks.js","webpack:///./src/store/gauges.js","webpack:///./src/store/index.js","webpack:///./src/components/ui/UISpinnerOverlay.vue?26f0","webpack:///./src/router.js","webpack:///./src/locale/languages.js","webpack:///./src/components/App.vue","webpack:///src/components/App.vue","webpack:///./src/components/App.vue?fa91","webpack:///./src/components/App.vue?0b12","webpack:///./src/components/ui/UIBoxHeader.vue","webpack:///src/components/ui/UIBoxHeader.vue","webpack:///./src/components/ui/UIBoxHeader.vue?e774","webpack:///./src/components/ui/UIBoxHeader.vue?fc8a","webpack:///./src/components/ui/UITableHeader.vue","webpack:///src/components/ui/UITableHeader.vue","webpack:///./src/components/ui/UITableHeader.vue?c395","webpack:///./src/components/ui/UITableHeader.vue?d938","webpack:///./src/components/ui/UITableBody.vue","webpack:///src/components/ui/UITableBody.vue","webpack:///./src/components/ui/UITableBody.vue?ddec","webpack:///./src/components/ui/UITableBody.vue?f690","webpack:///./src/components/ui/UISpinnerButton.vue","webpack:///src/components/ui/UISpinnerButton.vue","webpack:///./src/components/ui/UISpinnerButton.vue?c176","webpack:///./src/components/ui/UISpinnerButton.vue?ebe1","webpack:///./src/main.js","webpack:///./src/components/ui/UISpinnerOverlay.vue?f5d3","webpack:///./src/components/ui/UIBoxHeader.vue?e660","webpack:///./src/components/ui/UISpinnerOverlay.vue","webpack:///./src/assets/fa-diagram.png","webpack:///./src/assets/marker-gauge-blue.png","webpack:///./src/assets/marker-bottleneck-critical.png","webpack:///./src/components/ui/UITableHeader.vue?88bf","webpack:///./src/components/ui/UISpinnerOverlay.vue?7cf7","webpack:///./src/lib/session.js","webpack:///./src/lib/filters.js","webpack:///./src/components/ui/UITableBody.vue?7438","webpack:///./src/lib/errors.js","webpack:///./src/lib/classifications.js","webpack:///./src/components/layers/layers.js","webpack:///./src/assets/da-diagram.png","webpack:///./src/components/App.vue?a76a","webpack:///./src/store/imports.js","webpack:///./src/components/layers/styles.js","webpack:///./src/assets/marker-gauge-brown.png","webpack:///./src/assets/marker-gauge-white.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","UNAUTHORIZED","HTTP","axios","baseURL","process","interceptors","response","use","status","logOff","map","webpackContext","req","id","webpackContextResolve","keys","IMPORTTYPES","BOTTLENECK","WATERWAYAXIS","GAUGEMEASUREMENT","FAIRWAYAVAILABILITY","WATERWAYAREA","FAIRWAYDIMENSION","WATERWAYGAUGES","DISTANCEMARKSVIRTUAL","DISTANCEMARKSASHORE","SOUNDINGRESULTS","APPROVEDGAUGEMEASUREMENTS","WATERWAYPROFILES","FAIRWAYMARKS","REPORT","STATSUPDATE","KINDIMPORTTYPE","bn","fa","fm","gm","wx","wa","fd","wg","dmv","dma","report","statsupdate","IMPORTTYPEKIND","bottleneck","fairwayavailability","fairwaymarks","gaugemeasurement","waterwayaxis","waterwayarea","fairwaydimension","waterwaygauges","distancemarksvirtual","distancemarksashore","FAIRWAYMARKKINDS","fm_bcnisd","fm_bcnlat_hydro","fm_bcnlat_ienc","fm_boycar","fm_boyisd","fm_boylat_hydro","fm_boylat_ienc","fm_boysaw","fm_boyspp","fm_daymar_hydro","fm_daymar_ienc","fm_lights","fm_rtpbcn","fm_topmar","fm_notmrk","initializeCurrentSchedule","importType","schedule","importSource","eMailNotification","scheduled","easyCron","cronString","cronMode","minutes","month","hour","day","dayOfMonth","simple","url","insecure","triggerActive","featureType","sortBy","tolerance","username","password","LOS","minWidth","maxWidth","depth","sourceOrganization","trys","waitRetry","selectedMark","statsUpdate","reportName","MODES","LIST","EDIT","init","schedules","availableReports","importScheduleDetailVisible","currentSchedule","importschedule","namespaced","state","mutations","setAvailableReports","setEditMode","setListMode","setImportType","Vue","set","clearCurrentSchedule","setImportScheduleDetailInvisible","setImportScheduleDetailVisible","setSchedules","unmarshallCurrentSchedule","payload","kind","config","cron","test","cronConf","match","field","Number","user","los","actions","loadAvailableReports","_ref","commit","headers","localStorage","getItem","reports","catch","loadSchedule","_ref2","updateCurrentSchedule","_ref3","patch","saveCurrentSchedule","_ref4","post","loadSchedules","_ref5","deleteSchedule","_ref6","delete","triggerImport","_ref7","_ref8","LIMITINGFACTORS","WIDTH","DEPTH","TYPES","SECTION","STRETCH","FREQUENCIES","MONTHLY","QUARTERLY","YEARLY","getIntervallBorders","start","end","frequency","isoFormat","startOfMonth","endOfMonth","startOfYear","endOfYear","startOfQuarter","endOfQuarter","date","format","selectedFairwayAvailabilityFeature","to","from","limitingFactor","depthlimit1","depthlimit2","widthlimit1","widthlimit2","csv","fwData","fwLNWLData","fwLNWLOverviewData","legendLNWL","legend","transformAFD","label","ldc","lower","middle","highestLevel","levelsWithSum","split","_result","_slicedToArray","height","translateY","_result2","lowerLevels","getters","feature","find","setLOS","setFrequency","setFrom","setTo","setDepthlimit1","setDepthlimit2","setWidthlimit1","setWidthlimit2","setSelectedFairwayAvailability","addFwLNWLOverviewData","existingIndex","findIndex","setLegendLNWL","headerLNWL","setAvailableFairwayDepthData","lines","header","rest","replace","x","concat","_toConsumableArray","join","filter","headerEntries","entry","trim","setAvailableFairwayDepthLNWLData","columns","below","between","above","loadAvailableFairwayDepth","options","depthLimit1","depthLimit2","widthLimit1","widthLimit2","properties","bottleneck_id","_getIntervallBorders","_getIntervallBorders2","additionalParams","endpoint","encodeURIComponent","URL","loadAvailableFairwayDepthLNWL","context","_getIntervallBorders3","_getIntervallBorders4","loadAvailableFairwayDepthLNWLDiagram","dispatch","loadAvailableFairwayDepthLNWLForMap","userManualUrl","appTitle","secondaryLogo","logoForPDF","popup","backendError","paneSetup","paneRotate","showSidebar","showUsermenu","showSearchbar","showSearchbarLastState","showIdentify","showLayers","showPdfTool","showContextBox","showProfiles","showGauges","showFairwayDepth","showFairwayDepthLNWL","showTimeSlider","contextBoxContent","expandToolbar","countries","searchQuery","selectedTime","Date","currentVisibleTime","refreshLayersTime","storedTime","version","tempRoute","ongoingPDFExport","versionStr","VUE_APP_HGREV","includes","setOngoingPDFExport","setCurrentVisibleTime","setLayerRefreshedTime","setStoredTime","setTempRoute","setup","rotate","setSelectedTime","time","show","setBackendErrorFlag","removeBackendErrorFlag","reportBackendError","TWOMINUTES","loadConfig","saveConfig","put","displayInfo","_error$response","displayError","title","isAuthenticated","expires","roles","isWaterwayAdmin","isSysAdmin","authSuccess","token","setItem","authenticated","clearAuth","removeItem","setUser","setRoles","setExpires","setIsAuthenticate","login","handleResponse","renew","toMillisFromString","root","users","currentUser","userDetailsVisible","newUser","email","country","role","isNew","roleLabel","active","userCountries","reduce","isUserDetailsVisible","getUserByName","setUserDetailsInvisible","setUserDetailsVisible","usersLoaded","resolveLabel","labels","waterway_user","waterway_admin","sys_admin","u","setCurrentUser","clearCurrentUser","deleteUser","saveCurrentUser","path","loadUsers","oldLayerVisibility","singleLayerVisible","openLayersMaps","syncedMaps","syncedView","mapPopup","mapPopupEnabled","initialLoad","extent","lat","lon","zoom","identifiedFeatures","identifiedCoordinates","currentMeasurement","lineToolEnabled","polygonToolEnabled","cutToolEnabled","isolinesLegendImgDataURL","differencesLegendImgDataURL","ongoingRefresh","ongoingTimeSlide","reviewActive","openLayersMap","getTarget","filteredIdentifiedFeatures","f","getId","viewSingleLayer","layerId","current","getLayers","forEach","getVisible","setVisible","layers","getArray","visible","index","startRefreshLayers","finishRefreshLayers","startTimeSlide","finishTimeSlide","addOpenLayersMap","removeOpenLayersMap","ids","view","enabled","setIdentifiedFeatures","addIdentifiedFeatures","coordinates","setCurrentMeasurement","measurement","tool","getInteractions","setActive","drawVectorSrc","getLayer","getSource","cutVectorSrc","lineTool","Draw","source","maxPoints","stopClick","on","clear","quantity","app","$gettext","unitSymbol","Math","round","getLength","getGeometry","polygonTool","areaSize","getArea","cutTool","style","Style","stroke","Stroke","color","width","lineDash","image","Circle","fill","Fill","radius","addInteraction","getTargetElement","addEventListener","initIdentifyTool","rootState","toLonLat","coordinate","getView","getProjection","setPosition","features","getFeaturesAtPixel","pixel","hitTolerance","_step","bottlenecks","gauges","stretches","sections","_iterator","_createForOfIteratorHelper","_loop","done","setMap","imports","selectedStretchId","selectedSectionId","currentResolution","getResolution","waterwayAxisSource","waxisUrl","getGetFeatureInfoUrl","INFO_FORMAT","feat","Feature","geometry","Point","setId","setProperties","waterwayAreaSource","wareaUrl","dmSource","dmUrl","dmaSource","dmaUrl","srSource","srUrl","fmSource","fmURL","TIME","application","toISOString","refreshLayers","layer","VectorLayer","refresh","refreshTimebasedLayers","updateParams","moveToBoundingBox","boundingBox","preventZoomOut","duration","transformExtent","currentZoom","getZoom","fit","maxZoom","max","moveToFeauture","bbox","clone","transform","getExtent","moveMap","_ref9","_ref10","animate","center","fromLonLat","EARTHRADIUS","deg2rad","PI","distanceBetween","P1","P2","dLat","dLng","abs","cos","sqrt","coords","alt","geoJSON","startPoint","endPoint","lineSegments","segmentPoints","lengthPolyLine","referencePoint","minAlt","maxAlt","currentPoint","_step2","segment","points","_iterator2","coordinateTriplet","y","prepareProfile","_transform","generateFeatureRequest","profileLine","date_info","GeoJSON","geometryName","writeFeature","calculateFairwayCoordinates","fairwayGeometry","fairwayCoordinates","line","turfLineString","getCoordinates","polygon","turfMultiPolygon","intersects","lineIntersect","opts","units","pStartPoint","line1","lineSlice","distance","booleanContains","turfPoint","lineSplit","_step3","_iterator3","featureToFairwayCoordinates","intersectingPolygon","additionalSurvey","currentProfile","selectedWaterLevel","fairwayData","previousCuts","profileLoading","selectedCut","differencesLoading","currentDifference","useCustomDepth","totalLength","setDepth","setUseCustomDepth","flag","setSelectedWaterLevel","level","setDifferencesLoading","setCurrentDifference","profileLoaded","answer","surveyDate","setStartPoint","setEndPoint","addFairwayData","clearFairwayData","clearCurrentProfile","loading","cut","loadProfile","survey","LineString","rootGetters","selectedSurvey","inputLineString","_inputLineString$getC","coord","parseFloat","toFixed","_inputLineString$getC2","profileLoaders","los3","forEachFeatureIntersectingExtent","los2","los1","finally","JSON","parse","bottleneckId","selectedBottleneck","sort","a","b","timestamp","bottlenecksList","surveys","surveysLoading","bottleneckForPrint","soundingInfo","limitingFactorsPerBottleneck","limiting","bottlenecksForDisplay","names","doubleNames","objnam","displayName","orderedBottlenecks","groupedBottlenecks","orderedGroups","cc","responsible_country","setSoundingInfo","setBottleneckForPrint","setBottlenecks","setBottlenecksList","setSelectedBottleneck","setSurveys","setSelectedSurveyByDate","setFirstSurveySelected","loadBottlenecksList","bottleneckFeatureCollectionRequest","WFS","writeGetFeature","srsName","featureNS","featurePrefix","featureTypes","outputFormat","XMLSerializer","serializeToString","loadBottlenecks","propertyNames","btnIds","filteredBottlenceks","btn","btnName","indexOf","btnToCompare","compareAsc","dateFrom","setDate","getDate","dateTo","selectedGaugeISRS","waterlevels","waterlevelsCSV","longtermWaterlevels","longtermInterval","yearWaterlevels","nashSutcliffe","nashSutcliffeCache","yearCompare","getFullYear","selectedGauge","g","isrs_code","addNSCtoCache","isrsCode","nsc","isrs","interval","deleteNashSutcliffeCache","year","getNashSutcliffeForISRS","now","_nashSutcliffe","isRecent","isBefore","addMinutes","setSelectedGaugeISRS","loadGauges","gaugesFeatureCollectionRequest","loadWaterlevels","startOfDay","endOfDay","wl","waterlevel","min","predicted","isPast","loadLongtermWaterlevels","dayAndMonth","mean","median","q25","q75","loadYearWaterlevels","loadNashSutcliffe","loadNashSutcliffeForOverview","Vuex","Store","reset","this","replaceState","fairwayprofile","usermanagement","component","Login","Main","Router","router","routes","meta","requiresAuth","beforeEnter","next","isSysadmin","store","beforeEach","expiresFromPastSession","sessionStillActive","matched","some","record","redirectToLogin","supportedLanguages","en_GB","de_AT","sk_SK","hu_HU","hr_HR","bg_BG","ro_RO","isAvailableLanguage","language","browserLanguage","substr","defaultLanguage","render","_vm","_c","_self","staticClass","staticStyle","attrs","class","searchContainer","isMapVisible","_e","staticRenderFns","computed","_objectSpread","mapState","$route","wide","components","Profiles","Gauges","Pdftool","Identify","Layers","Sidebar","Search","TimeSlider","Contextbox","Toolbar","Popup","AvailableFairwayDepthDialogue","MapPopup","KeyboardHandler","watch","showProgressBar","closeOnClick","pauseOnHover","oneAtTime","bodyMaxLength","small","icon","_v","_s","checkBox","domProps","callback","_l","action","closeCallback","props","String","Function","Array","Boolean","sortable","column","disableSorting","sortColumn","$event","preventDefault","sortTable","sortIcon","extraColumnForButtons","default","sortDirection","methods","$parent","maxHeight","item","isActive","_t","classesString","$emit","iconString","icons","classes","isArray","library","add","faAdn","faAngleDown","faAngleLeft","faAngleRight","faAngleUp","faAngleDoubleRight","faBars","faBook","faCaretUp","faCaretDown","faChartArea","faChartBar","faChartLine","faCheck","faCity","faClipboardCheck","faClock","faCloudUploadAlt","faCopy","faDownload","faDrawPolygon","faExclamationTriangle","faEye","faEyeSlash","faFilePdf","faFolderPlus","faFrownOpen","faInfo","faLayerGroup","faLink","faMapMarkedAlt","faMinus","faObjectGroup","faPaintBrush","faPaperPlane","faPencilAlt","faPlay","faPlus","faPowerOff","faRoad","faRuler","faRulerVertical","faSearch","faShip","faSort","faSortDown","faSortUp","faSortAmountDown","faSortAmountUp","faSpinner","faStar","faTasks","faTimes","faTint","faTrash","faUnlink","faUpload","faUser","faUsersCog","faWater","faWrench","faRedo","faUndo","faSync","faWindowMinimize","faWindowMaximize","faCrosshairs","GetTextPlugin","translations","availableLanguages","silent","Snotify","toast","position","SnotifyPosition","centerBottom","ToggleButton","VTooltip","VueClipboard","FontAwesomeIcon","UIBoxHeader","UITableHeader","UITableBody","UISpinnerOverlay","UISpinnerButton","filters","productionTip","h","App","$mount","_setupProxy","hasToken","_this","$snotify","$store","$router","unsetLayerConfigs","stillActive","timestring","toLocaleDateString","locale2","dateTime","hideTime","dateString","toLocaleTimeString","hour12","page","pageSize","sortedData","valB","valA","toLocaleString","minimumFractionDigits","maximumFractionDigits","displayOptions","mergedOptions","info","getGauge","GaugeProxy","gauge","propName","calcForecastVsRealityForNSC","hasSamples","coeffs","sum","coeff","samples","_nsc$coeffs","nsc24h","nsc72h","gm_forecast_vs_reality_nsc_24h","gm_forecast_vs_reality_nsc_72h","surveyRecency","revTime","latest","diff","floor","revTimeMultiplier","bn_revtime_multiplier","gmAvailability","gmDate","gmN","gm_latest_hours","valuesAtLeast","gm_min_values_14d","forecastAccuracy","fa3d","fa1d","gm_forecast_offset_24h","gm_forecast_offset_72h","forecastVsReality","buildVectorLoader","featureRequestOptions","vectorSource","bboxStrategyDisabled","featurePostProcessor","resolution","projection","getCode","conditions","condition","propertyName","expression","readFeatures","stringify","addFeatures","removeLoadedExtent","DRAWLAYER","VectorSource","wrapX","styles","getType","forEachSegment","dx","dy","rotation","atan2","Icon","require","anchor","rotateWithView","CUTLAYER","layerConfigs","layerFactory","mapId","styleFactory","FDREVIEWLAYER","bottlenecksSource","strategy","bboxStrategy","setLoader","andFilter","lessThanOrEqualTo","greaterThanOrEqualTo","_asyncToGenerator","regeneratorRuntime","mark","_callee","wrap","_context","prev","getTime","createdAt","sent","abrupt","stop","_x","_x2","arguments","TileLayer","OSM","ImageLayer","maxResolution","minResolution","ImageSource","location","origin","params","LAYERS","VERSION","TILED","imageLoadFunction","tile","responseType","getImage","createObjectURL","TileWMS","preload","tileLoadFunction","CQL_FILTER","equalTo","fwd1","fwd2","fwd3","forLegendStyle","point","zIndex","bottleneckStatus","bottleneckFairwayAvailability","_callee2","_context2","_x3","_x4","_x5","dataAvailability","STATES","NEEDSAPPROVAL","APPROVED","REJECTED","failed","pending","accepted","declined","warning","reviewed","showAdditional","showLogs","showMeta","details","startDate","startOfHour","endDate","endOfHour","stagingNotifications","metadata","getFromWFS","featureCollectionRequest","clearFilterCriteria","successful","setStagingNotifications","setPrev","setNext","setStartDate","setEndDate","setCurrentDetails","toggleFilter","allSet","clearFilters","setStretches","setSections","setReviewed","setImports","lookUp","reviewState","showDetailsFor","hideDetails","showAdditionalInfoFor","hideAdditionalInfo","showAdditionalLogsFor","hideAdditionalLogs","showMetaFor","hideMeta","toggleApprove","change","newStatus","stagedResult","enqueued","loadStagingNotifications","loadStretch","equalToFilter","loadStretches","saveStretch","stretch","loadSection","loadSections","saveSection","section","getImports","query","queryParams","hasWarning","_response$data","confirmReview","reviewResults","blue1","lineCap","blue2","blue3","yellow1","yellow2","yellow3","orange1","orange2","red1","circleBlue","textFW1","text","Text","font","placement","textFW2","textFW3","recencyColorCodes","OK","WARNING","DANGER","NEUTRAL","gmAvailabilityColorCodes","forecastAccuracyColorCodes","forecastVsRealityColorCodes","isLegend","bnCenter","getCenter","scale","heightInPixel","relativeHeightInPercent","lnwlHeight","belowThresholdHeight","betweenThresholdHeight","aboveThresholdHeight","lnwl","frame","svg","colorWaterlevel","classifications","colorComparison","colorAccuracy","geom","accuracy","comparison","colorUniformTriangle","setText","offsetY","toString","iconColor","refWaterlevels","HDC","LDC","backgroundFill","padding"],"mappings":"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","file":"js/app.28840f96.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0fbafe09\":\"577a1411\",\"chunk-23ae9146\":\"d3c3746f\",\"chunk-25b9fadf\":\"c91d80aa\",\"chunk-2acce5f9\":\"23aae128\",\"chunk-2d0c0c92\":\"46d2609f\",\"chunk-2d0c8a76\":\"f9bb6e21\",\"chunk-5318b5c8\":\"e044d4e4\",\"chunk-18761338\":\"d47ebbf8\",\"chunk-23249a0a\":\"3fcb5935\",\"chunk-3b383522\":\"c54465f6\",\"chunk-3d6cbd37\":\"2ffdba8a\",\"chunk-7bf19cb2\":\"37b9cd4d\",\"chunk-2d2263a3\":\"290b2f48\",\"chunk-45b102c0\":\"8f2c16a1\",\"chunk-5608ee0a\":\"bdf3c8fb\",\"chunk-64264b3e\":\"7f1bb88b\",\"chunk-68ff5dee\":\"cbf3aec4\",\"chunk-7d1510ae\":\"d31a6afd\",\"chunk-a9b70caa\":\"e95de834\",\"chunk-d42c2a78\":\"1512d2ce\",\"chunk-da020eea\":\"84ce77c5\",\"chunk-e88b1bd4\":\"95188c57\",\"chunk-f00005fa\":\"2942aba5\",\"chunk-66abfe07\":\"a23a330c\",\"chunk-09f633ec\":\"ad2eca06\",\"chunk-2d210a0b\":\"5b5828ed\",\"chunk-2d2261b2\":\"ba170e28\",\"chunk-7fc62d3c\":\"faf6ad0c\",\"chunk-d6d4d978\":\"cb059d20\",\"chunk-6950733e\":\"39bdacf9\",\"chunk-a91e5e00\":\"9ef305f2\",\"chunk-2d0b688f\":\"7406e587\",\"chunk-4ca39845\":\"d309419a\",\"chunk-51c2e51f\":\"3ca89454\",\"chunk-5958af23\":\"b4ab54c4\",\"chunk-5b85510f\":\"9afe561b\",\"chunk-82e6e96c\":\"91b83329\",\"chunk-a7ece600\":\"4b454cb0\",\"chunk-03465510\":\"52e0e04a\",\"chunk-2d0ab336\":\"60c37517\",\"chunk-2d0c1c7b\":\"84bedac6\",\"chunk-2d0ddfde\":\"54baaea8\",\"chunk-2d0e9cf8\":\"f7031f20\",\"chunk-2d213338\":\"a0cc09fe\",\"chunk-2d21a356\":\"2e01891c\",\"chunk-2d2219f9\":\"4f90845a\",\"chunk-2d221fd6\":\"d5ed7b36\",\"chunk-2d0e6145\":\"d626b7f3\",\"chunk-290e8206\":\"85ed96d4\",\"chunk-2d2080f6\":\"917b0222\",\"chunk-2d213ec6\":\"adc508d7\",\"chunk-2d2227c4\":\"ebcb5a5a\",\"chunk-2d0b8a82\":\"86b253e2\",\"chunk-4d6aac27\":\"ccc6efbb\",\"chunk-0d7c40ce\":\"e3a33223\",\"chunk-78eb3276\":\"ff354c75\",\"chunk-63b7b764\":\"f1e256d2\",\"chunk-47ec679b\":\"3b83f764\",\"chunk-6e357607\":\"9fc25707\",\"chunk-6ea81264\":\"cc39e527\",\"chunk-b880643c\":\"ca6f0710\",\"chunk-c0ee46a4\":\"e8d6cc1e\",\"chunk-243b259c\":\"2812c9b0\",\"chunk-24f6440c\":\"76adb3ce\",\"chunk-2d0da313\":\"6cc9aa25\",\"chunk-2d226368\":\"b7684c93\",\"chunk-320a20ea\":\"09ded7f8\",\"chunk-4468888f\":\"6ce2900d\",\"chunk-4651a751\":\"29a8d331\",\"chunk-7b5dbb92\":\"66239fb6\",\"chunk-2d0b62fa\":\"84de6c6c\",\"chunk-2d0c18f7\":\"e685cbab\",\"chunk-2d216b49\":\"2cd9b1d3\",\"chunk-c1828f82\":\"18b083aa\",\"chunk-332d73c9\":\"6363af2c\",\"chunk-4b0dd422\":\"74c1d83c\",\"chunk-842d98b2\":\"b3ae0820\",\"chunk-2d0a3748\":\"440ed41a\",\"chunk-2d0afa3f\":\"c597a10a\",\"chunk-2d0c04d4\":\"ce82a9e8\",\"chunk-2d0d5c8a\":\"4b1349ca\",\"chunk-2d0deca7\":\"f0ab2c07\",\"chunk-2d0e19b3\":\"3af9bd23\",\"chunk-2d0e547f\":\"02bd50f6\",\"chunk-2d207b93\":\"dc640643\",\"chunk-2d210bdc\":\"2e2112bd\",\"chunk-2d225f2f\":\"e118cd27\",\"chunk-2d228ca3\":\"201945a7\",\"chunk-2d22a1b5\":\"669e0bc5\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-0fbafe09\":1,\"chunk-23ae9146\":1,\"chunk-25b9fadf\":1,\"chunk-2acce5f9\":1,\"chunk-18761338\":1,\"chunk-23249a0a\":1,\"chunk-3b383522\":1,\"chunk-7bf19cb2\":1,\"chunk-45b102c0\":1,\"chunk-5608ee0a\":1,\"chunk-64264b3e\":1,\"chunk-68ff5dee\":1,\"chunk-7d1510ae\":1,\"chunk-a9b70caa\":1,\"chunk-d42c2a78\":1,\"chunk-da020eea\":1,\"chunk-e88b1bd4\":1,\"chunk-f00005fa\":1,\"chunk-66abfe07\":1,\"chunk-09f633ec\":1,\"chunk-7fc62d3c\":1,\"chunk-d6d4d978\":1,\"chunk-6950733e\":1,\"chunk-a91e5e00\":1,\"chunk-4ca39845\":1,\"chunk-5b85510f\":1,\"chunk-82e6e96c\":1,\"chunk-a7ece600\":1,\"chunk-03465510\":1,\"chunk-290e8206\":1,\"chunk-4d6aac27\":1,\"chunk-0d7c40ce\":1,\"chunk-63b7b764\":1,\"chunk-47ec679b\":1,\"chunk-6ea81264\":1,\"chunk-243b259c\":1,\"chunk-24f6440c\":1,\"chunk-320a20ea\":1,\"chunk-4468888f\":1,\"chunk-4651a751\":1,\"chunk-7b5dbb92\":1,\"chunk-c1828f82\":1,\"chunk-332d73c9\":1,\"chunk-4b0dd422\":1,\"chunk-842d98b2\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0fbafe09\":\"505f254d\",\"chunk-23ae9146\":\"2b01a496\",\"chunk-25b9fadf\":\"fdbd63a0\",\"chunk-2acce5f9\":\"3d70e80d\",\"chunk-2d0c0c92\":\"31d6cfe0\",\"chunk-2d0c8a76\":\"31d6cfe0\",\"chunk-5318b5c8\":\"31d6cfe0\",\"chunk-18761338\":\"5c9440fa\",\"chunk-23249a0a\":\"151e2ec5\",\"chunk-3b383522\":\"3a7bf216\",\"chunk-3d6cbd37\":\"31d6cfe0\",\"chunk-7bf19cb2\":\"ff3d810d\",\"chunk-2d2263a3\":\"31d6cfe0\",\"chunk-45b102c0\":\"ee094c5c\",\"chunk-5608ee0a\":\"035b63a3\",\"chunk-64264b3e\":\"f37173a8\",\"chunk-68ff5dee\":\"28d65e95\",\"chunk-7d1510ae\":\"895d0f70\",\"chunk-a9b70caa\":\"46cd2aa3\",\"chunk-d42c2a78\":\"f399eed0\",\"chunk-da020eea\":\"16b5aef5\",\"chunk-e88b1bd4\":\"99ed95e1\",\"chunk-f00005fa\":\"d54db2c0\",\"chunk-66abfe07\":\"66659980\",\"chunk-09f633ec\":\"19366749\",\"chunk-2d210a0b\":\"31d6cfe0\",\"chunk-2d2261b2\":\"31d6cfe0\",\"chunk-7fc62d3c\":\"0788f65c\",\"chunk-d6d4d978\":\"8382d2bf\",\"chunk-6950733e\":\"84ee9451\",\"chunk-a91e5e00\":\"49e37e1c\",\"chunk-2d0b688f\":\"31d6cfe0\",\"chunk-4ca39845\":\"b3210ae7\",\"chunk-51c2e51f\":\"31d6cfe0\",\"chunk-5958af23\":\"31d6cfe0\",\"chunk-5b85510f\":\"59a917c6\",\"chunk-82e6e96c\":\"507cb885\",\"chunk-a7ece600\":\"8a29f070\",\"chunk-03465510\":\"71c9f455\",\"chunk-2d0ab336\":\"31d6cfe0\",\"chunk-2d0c1c7b\":\"31d6cfe0\",\"chunk-2d0ddfde\":\"31d6cfe0\",\"chunk-2d0e9cf8\":\"31d6cfe0\",\"chunk-2d213338\":\"31d6cfe0\",\"chunk-2d21a356\":\"31d6cfe0\",\"chunk-2d2219f9\":\"31d6cfe0\",\"chunk-2d221fd6\":\"31d6cfe0\",\"chunk-2d0e6145\":\"31d6cfe0\",\"chunk-290e8206\":\"dc3fa98b\",\"chunk-2d2080f6\":\"31d6cfe0\",\"chunk-2d213ec6\":\"31d6cfe0\",\"chunk-2d2227c4\":\"31d6cfe0\",\"chunk-2d0b8a82\":\"31d6cfe0\",\"chunk-4d6aac27\":\"6ef75aab\",\"chunk-0d7c40ce\":\"55b71d39\",\"chunk-78eb3276\":\"31d6cfe0\",\"chunk-63b7b764\":\"4df273f2\",\"chunk-47ec679b\":\"39905566\",\"chunk-6e357607\":\"31d6cfe0\",\"chunk-6ea81264\":\"10dd5a9d\",\"chunk-b880643c\":\"31d6cfe0\",\"chunk-c0ee46a4\":\"31d6cfe0\",\"chunk-243b259c\":\"0e3d44ae\",\"chunk-24f6440c\":\"25d6ad86\",\"chunk-2d0da313\":\"31d6cfe0\",\"chunk-2d226368\":\"31d6cfe0\",\"chunk-320a20ea\":\"b0f12cb3\",\"chunk-4468888f\":\"fd62b0c7\",\"chunk-4651a751\":\"d45def04\",\"chunk-7b5dbb92\":\"32fde03d\",\"chunk-2d0b62fa\":\"31d6cfe0\",\"chunk-2d0c18f7\":\"31d6cfe0\",\"chunk-2d216b49\":\"31d6cfe0\",\"chunk-c1828f82\":\"3b5ef833\",\"chunk-332d73c9\":\"f2cb7b0f\",\"chunk-4b0dd422\":\"36ed8553\",\"chunk-842d98b2\":\"3e2e27fc\",\"chunk-2d0a3748\":\"31d6cfe0\",\"chunk-2d0afa3f\":\"31d6cfe0\",\"chunk-2d0c04d4\":\"31d6cfe0\",\"chunk-2d0d5c8a\":\"31d6cfe0\",\"chunk-2d0deca7\":\"31d6cfe0\",\"chunk-2d0e19b3\":\"31d6cfe0\",\"chunk-2d0e547f\":\"31d6cfe0\",\"chunk-2d207b93\":\"31d6cfe0\",\"chunk-2d210bdc\":\"31d6cfe0\",\"chunk-2d225f2f\":\"31d6cfe0\",\"chunk-2d228ca3\":\"31d6cfe0\",\"chunk-2d22a1b5\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA8CAYAAABvnTosAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAG2SURBVEiJ7ZaxSgNBEIa/1fOEJJV6CFGEiNjZ2AraWIlV6oiINinSWSk+gNgFK19ABS1ttFBBAhEJNjaCbUAUbS54LtGx8DyzMYkeBES5gSmG3f/bf3eHZeG3QwEI2MBYSG1JgeADhgQkZHYDWLXIHeCipu60baZXV41lew8OGD8/N718OJh7txRkIpGQ+jjK5QwHHSH3/SUiQBsARh84qRQTyeTnoGVRKBQMgVsuf6V89MFhPm/cueu6Rl8Asl7Xib9/BhGgDQDgsw8WbFvi8XiQjuNIpVIx8nh5ufmLVNWaitZBrZQiFouZlm27vVuIAO1+UKYWF0nPzga153mk02lDMHN1xWQ9JXpQ/jrA6IPrszNuurqCWmtNNps1BP3FIpRKJiXMB+N0ZeW/9kEV8ELonvH/iBaAgrLAxhKsTdXSPY+TTMZQDlxeCpBXoI0BAUfg6QcfTC2QpFEIbH4jfhXYaroxgWGBqj+xkfhFYLTl6Qhst3Cw11LsAwYFHutcvAq4AiPfAnxIpsHq8z8S10B2/Vt5EtgPJfYBPQK3AncCfc3mWc0GFDwIZIBOBfehHUTxl+INHoNcVpOXbS8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAATCAYAAACk9eypAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wYMDiMkEaY3LgAAARRJREFUKM/VkT1Lw2AUhZ83BFzcnTN1KaW4dy64dMreOhdBOpSQ3dFAwEHQpdD+AzcR0t0lZO+QbqWuhrZ5j0tTRG3t4uAz3cs9h/sFf44kR5JzrN5ZLBaJtfZZ0ouk018dk8lEnU5HaZpqy6Okk70dJDGfz+n1enS7XWaz2SVQSAp+GtWRtEuyLMP3fQaDAcvl8gYoJV3sNVQkSUK73SaOY4qieJK0lnS+11AxGo1otVqMx2N3s9m8Srp1jjg7URTR7/dZrVaOW5blQUO9XicIAmq1GoB1jxQ+AFfGmHf36w6NRoPhcPhNWNVday0AzWaTMAzxPA/gHrj+LNwxnU6V53n15btDXwYwks628ZsxZs3/4wOfmKMLaJUcKwAAAABJRU5ErkJggg==\"","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\nimport { logOff } from \"@/lib/session\";\n\nimport axios from \"axios\";\n\nconst UNAUTHORIZED = 401;\n\nconst HTTP = axios.create({\n baseURL: process.env.VUE_APP_API_URL || \"/api\"\n /* headers: {\n Authorization: 'Bearer {token}'\n }*/\n});\n\nHTTP.interceptors.response.use(\n response => response,\n error => {\n if (error.response) {\n const { status } = error.response;\n if (status === UNAUTHORIZED) {\n logOff();\n }\n }\n return Promise.reject(error);\n }\n);\n\nexport { HTTP };\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAATCAYAAACk9eypAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4goJETQjpEkMwAAAASxJREFUKM/Nkr1LQlEYxn/n3GuDnTFoCfEikh5raMia+wea+6ChQYhWl8qECoIImpqcInFvbY+SOxnkVQhSmvoD7ua9nqY+ULu5BD3r+/7eh/fhgb+WAMiVqpgwRMYmeDpejwRkvuJOTSZmBYAJAnKHtWgA2ACelaOXjeljwgBdqkYCAkgBD8rRdZXMZgn76P3rSOBDS4CnnOyNSmam9d4Vc+XaECBHHFoF3pSjz+Iz6bg++HIT+YpbBM4j/uwDReDSf2335BjRS+ACuFWJjC0B6xegDiz43faKW8gH9sDTg4s7frfVENLCO90CYBRwD+z63VYDY1DpHO724ufQ/pbSHVDwO14LIRCWRfNkc8jWBh6BlN/xXgCElGDHaB6t/Vy++XKNsNcbq3z/UO8Fl1Wf8CmgAwAAAABJRU5ErkJggg==\"","var map = {\n\t\"./marker-gauge-blue.png\": \"7be3\",\n\t\"./marker-gauge-brown.png\": \"e9dc\",\n\t\"./marker-gauge-red.png\": \"1573\",\n\t\"./marker-gauge-white.png\": \"fcab\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"36db\";","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\nimport { HTTP } from \"@/lib/http\";\nimport Vue from \"vue\";\n\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-unreachable */\n\nconst IMPORTTYPES = {\n BOTTLENECK: \"bottleneck\",\n WATERWAYAXIS: \"waterwayaxis\",\n GAUGEMEASUREMENT: \"gaugemeasurement\",\n FAIRWAYAVAILABILITY: \"fairwayavailability\",\n WATERWAYAREA: \"waterwayarea\",\n FAIRWAYDIMENSION: \"fairwaydimension\",\n WATERWAYGAUGES: \"waterwaygauges\",\n DISTANCEMARKSVIRTUAL: \"distancemarksvirtual\",\n DISTANCEMARKSASHORE: \"distancemarksashore\",\n SOUNDINGRESULTS: \"soundingresults\",\n APPROVEDGAUGEMEASUREMENTS: \"approvedgaugemeasurements\",\n WATERWAYPROFILES: \"waterwayprofiles\",\n FAIRWAYMARKS: \"fairwaymarks\",\n REPORT: \"report\",\n STATSUPDATE: \"statsupdate\"\n};\n\nconst KINDIMPORTTYPE = {\n bn: \"bottleneck\",\n fa: \"fairwayavailability\",\n fm: \"fairwaymarks\",\n gm: \"gaugemeasurement\",\n wx: \"waterwayaxis\",\n wa: \"waterwayarea\",\n fd: \"fairwaydimension\",\n wg: \"waterwaygauges\",\n dmv: \"distancemarksvirtual\",\n dma: \"distancemarksashore\",\n report: \"report\",\n statsupdate: \"statsupdate\"\n};\n\nconst IMPORTTYPEKIND = {\n bottleneck: \"bn\",\n fairwayavailability: \"fa\",\n fairwaymarks: \"fm\",\n gaugemeasurement: \"gm\",\n waterwayaxis: \"wx\",\n waterwayarea: \"wa\",\n fairwaydimension: \"fd\",\n waterwaygauges: \"wg\",\n distancemarksvirtual: \"dmv\",\n distancemarksashore: \"dma\",\n report: \"report\",\n statsupdate: \"statsupdate\"\n};\n\nconst FAIRWAYMARKKINDS = {\n fm_bcnisd: \"BCNISD\",\n fm_bcnlat_hydro: \"BCNLAT_hydro\",\n fm_bcnlat_ienc: \"bcnlat_ienc\",\n fm_boycar: \"BOYCAR\",\n fm_boyisd: \"BOYISD\",\n fm_boylat_hydro: \"BOYLAT_hydro\",\n fm_boylat_ienc: \"boylat_ienc\",\n fm_boysaw: \"BOYSAW\",\n fm_boyspp: \"BOYSPP\",\n fm_daymar_hydro: \"DAYMAR_hydro\",\n fm_daymar_ienc: \"daymar_ienc\",\n fm_lights: \"LIGHTS\",\n fm_rtpbcn: \"RTPBCN\",\n fm_topmar: \"TOPMAR\",\n fm_notmrk: \"notmrk\"\n};\n\nconst initializeCurrentSchedule = () => {\n return {\n id: null,\n importType: null,\n schedule: null,\n importSource: null,\n eMailNotification: false,\n scheduled: false,\n easyCron: true,\n cronString: \"0 */15 * * * *\",\n cronMode: \"15minutes\",\n minutes: 0,\n month: 1,\n hour: 0,\n day: 0,\n dayOfMonth: 1,\n simple: null,\n url: null,\n insecure: false,\n triggerActive: true,\n featureType: null,\n sortBy: \"\",\n tolerance: 5,\n username: \"\",\n password: \"\",\n LOS: 3,\n minWidth: null,\n maxWidth: null,\n depth: null,\n sourceOrganization: null,\n trys: null,\n waitRetry: null,\n selectedMark: null,\n statsUpdate: null,\n reportName: null\n };\n};\n\nconst MODES = {\n LIST: \"list\",\n EDIT: \"edit\"\n};\n\n// initial state\nconst init = () => {\n return {\n schedules: [],\n availableReports: null,\n importScheduleDetailVisible: false,\n currentSchedule: initializeCurrentSchedule(),\n mode: MODES.LIST\n };\n};\n\nconst importschedule = {\n init,\n namespaced: true,\n state: init(),\n mutations: {\n setAvailableReports: (state, value) => {\n state.availableReports = value;\n },\n setEditMode: state => {\n state.mode = MODES.EDIT;\n },\n setListMode: state => {\n state.currentSchedule = initializeCurrentSchedule();\n state.mode = MODES.LIST;\n },\n setImportType: (state, type) => {\n Vue.set(state.currentSchedule, \"importType\", type);\n },\n clearCurrentSchedule: state => {\n state.currentSchedule = initializeCurrentSchedule();\n },\n setImportScheduleDetailInvisible: state => {\n state.importScheduleDetailVisible = false;\n },\n setImportScheduleDetailVisible: state => {\n state.importScheduleDetailVisible = true;\n },\n setSchedules: (state, schedules) => {\n state.schedules = schedules;\n },\n unmarshallCurrentSchedule: (state, payload) => {\n const { kind, config, id } = payload;\n const eMailNotification = config[\"send-email\"];\n const { cron, url } = config;\n if (FAIRWAYMARKKINDS[kind]) {\n Vue.set(state.currentSchedule, \"importType\", \"fairwaymarks\");\n Vue.set(state.currentSchedule, \"selectedMark\", FAIRWAYMARKKINDS[kind]);\n } else {\n Vue.set(state.currentSchedule, \"importType\", KINDIMPORTTYPE[kind]);\n }\n\n Vue.set(state.currentSchedule, \"id\", id);\n Vue.set(state.currentSchedule, \"trys\", config[\"trys\"]);\n Vue.set(state.currentSchedule, \"waitRetry\", config[\"wait-retry\"]);\n if (cron) {\n Vue.set(state.currentSchedule, \"scheduled\", true);\n Vue.set(state.currentSchedule, \"cronString\", cron);\n // simple weekly or monthly?\n if (cron === \"0 0 0 * * 0\") {\n Vue.set(state.currentSchedule, \"simple\", \"weekly\");\n Vue.set(state.currentSchedule, \"easyCron\", true);\n } else if (cron === \"0 0 0 1 * *\") {\n Vue.set(state.currentSchedule, \"simple\", \"monthly\");\n Vue.set(state.currentSchedule, \"easyCron\", true);\n } else {\n Vue.set(state.currentSchedule, \"easyCron\", false);\n }\n\n // set cronMode from cronString\n Vue.set(state.currentSchedule, \"cronMode\", null);\n if (cron === \"0 */15 * * * *\")\n Vue.set(state.currentSchedule, \"cronMode\", \"15minutes\");\n else if (/^0 \\d{1,2} \\* \\* \\* \\*$/.test(cron))\n Vue.set(state.currentSchedule, \"cronMode\", \"hour\");\n else if (/^0 \\d{1,2} \\d{1,2} \\* \\* \\*$/.test(cron))\n Vue.set(state.currentSchedule, \"cronMode\", \"day\");\n else if (/^0 \\d{1,2} \\d{1,2} \\* \\* \\d{1}$/.test(cron))\n Vue.set(state.currentSchedule, \"cronMode\", \"week\");\n else if (/^0 \\d{1,2} \\d{1,2} \\d{1,2} \\* \\*$/.test(cron))\n Vue.set(state.currentSchedule, \"cronMode\", \"month\");\n else if (/^0 \\d{1,2} \\d{1,2} \\d{1,2} \\d{1,2} \\*$/.test(cron))\n Vue.set(state.currentSchedule, \"cronMode\", \"year\");\n\n // set minute, hour, etc from cronString\n let cronConf = cron.match(\n /0 (\\d{1,2}|\\*) (\\d{1,2}|\\*) (\\d{1,2}|\\*) (\\d{1,2}|\\*) (\\d{1}|\\*)/\n );\n\n // if cronString could not be parsed/matched (cronConf is null),\n // skip prefilling those values\n if (cronConf) {\n // remove first element which is the whole matched string\n cronConf.shift();\n cronConf = cronConf.map(field =>\n field === \"*\" ? null : Number(field)\n );\n Vue.set(state.currentSchedule, \"minutes\", cronConf[0]);\n Vue.set(state.currentSchedule, \"hour\", cronConf[1]);\n Vue.set(state.currentSchedule, \"dayOfMonth\", cronConf[2]);\n Vue.set(state.currentSchedule, \"month\", cronConf[3]);\n Vue.set(state.currentSchedule, \"day\", cronConf[4]);\n }\n }\n if (eMailNotification) {\n Vue.set(state.currentSchedule, \"eMailNotification\", eMailNotification);\n }\n if (url) {\n Vue.set(state.currentSchedule, \"url\", url);\n }\n let { insecure, user, password, los, depth } = config;\n let sortBy = config[\"sort-by\"];\n let minWidth = config[\"min-width\"];\n let maxWidth = config[\"max-width\"];\n let sourceOrganization = config[\"source-organization\"];\n const featureType = config[\"feature-type\"];\n const tolerance = config[\"tolerance\"];\n insecure = insecure == \"true\";\n if (insecure) {\n Vue.set(state.currentSchedule, \"insecure\", insecure);\n }\n if (featureType) {\n Vue.set(state.currentSchedule, \"featureType\", featureType);\n }\n if (sortBy) {\n Vue.set(state.currentSchedule, \"sortBy\", sortBy);\n }\n if (tolerance) {\n Vue.set(state.currentSchedule, \"tolerance\", tolerance);\n }\n if (user) {\n Vue.set(state.currentSchedule, \"username\", user);\n }\n if (password) {\n Vue.set(state.currentSchedule, \"password\", password);\n }\n if (los) {\n Vue.set(state.currentSchedule, \"LOS\", los);\n }\n if (minWidth) {\n Vue.set(state.currentSchedule, \"minWidth\", minWidth);\n }\n if (maxWidth) {\n Vue.set(state.currentSchedule, \"maxWidth\", maxWidth);\n }\n if (depth) {\n Vue.set(state.currentSchedule, \"depth\", depth);\n }\n if (sourceOrganization) {\n Vue.set(\n state.currentSchedule,\n \"sourceOrganization\",\n sourceOrganization\n );\n }\n if (kind === IMPORTTYPES.STATSUPDATE) {\n const { name } = config;\n Vue.set(state.currentSchedule, \"statsUpdate\", name);\n }\n if (kind === IMPORTTYPES.REPORT) {\n const { name } = config;\n Vue.set(state.currentSchedule, \"reportName\", name);\n }\n }\n },\n actions: {\n loadAvailableReports({ commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\"/data/reports\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n commit(\"setAvailableReports\", response.data.reports);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadSchedule({ commit }, id) {\n return new Promise((resolve, reject) => {\n HTTP.get(\"/imports/config/\" + id, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"unmarshallCurrentSchedule\", response.data);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n updateCurrentSchedule({ commit }, payload) {\n const { data, id } = payload;\n return new Promise((resolve, reject) => {\n HTTP.patch(\"imports/config/\" + id, data, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n saveCurrentSchedule({ commit }, data) {\n return new Promise((resolve, reject) => {\n HTTP.post(\"imports/config\", data, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadSchedules({ commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\"/imports/config\", {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"setSchedules\", response.data);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n deleteSchedule({ commit }, id) {\n return new Promise((resolve, reject) => {\n HTTP.delete(\"imports/config/\" + id, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n triggerImport({ commit }, { type, data }) {\n return new Promise((resolve, reject) => {\n HTTP.post(\"imports/\" + type, data, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n }\n};\n\nexport {\n importschedule,\n initializeCurrentSchedule,\n IMPORTTYPES,\n IMPORTTYPEKIND,\n MODES\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018, 2019 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\n/*eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"_\" }]*/\n\nimport {\n endOfMonth,\n endOfQuarter,\n endOfYear,\n format,\n startOfMonth,\n startOfQuarter,\n startOfYear\n} from \"date-fns\";\n\nimport { HTTP } from \"@/lib/http\";\n\nconst LIMITINGFACTORS = {\n WIDTH: \"width\",\n DEPTH: \"depth\"\n};\n\nconst TYPES = {\n BOTTLENECK: \"bottleneck\",\n SECTION: \"section\",\n STRETCH: \"stretch\"\n};\n\nconst FREQUENCIES = {\n MONTHLY: \"monthly\",\n QUARTERLY: \"quarterly\",\n YEARLY: \"yearly\"\n};\n\nconst getIntervallBorders = (start, end, frequency) => {\n switch (frequency) {\n case FREQUENCIES.MONTHLY:\n return [isoFormat(startOfMonth(start)), isoFormat(endOfMonth(end))];\n case FREQUENCIES.YEARLY:\n return [isoFormat(startOfYear(start)), isoFormat(endOfYear(end))];\n case FREQUENCIES.QUARTERLY:\n return [isoFormat(startOfQuarter(start)), isoFormat(endOfQuarter(end))];\n default:\n throw new Error(\"Boom!\");\n }\n};\n\nconst isoFormat = date => {\n return format(date, \"YYYY-MM-DD\");\n};\n\nconst init = () => {\n return {\n type: TYPES.BOTTLENECK,\n selectedFairwayAvailabilityFeature: null,\n to: null,\n from: null,\n frequency: FREQUENCIES.MONTHLY,\n limitingFactor: null,\n depthlimit1: 230,\n depthlimit2: 250,\n widthlimit1: 80,\n widthlimit2: 150,\n csv: null,\n fwData: null,\n fwLNWLData: null,\n fwLNWLOverviewData: [],\n legendLNWL: null,\n legend: null,\n LOS: 3\n };\n};\n\n/**\n * transformAFD\n * @param {string} csv\n *\n * takes the afd csv and transforms it to an intermediary format\n * for display of diagrams\n *\n * Incoming csv Format\n * #label,# = LDC [h],# < 230.00 [h],# >= 230.00 [h],# >= 250.00 [h]\n * 05-2019,215.500,0.000,0.000,215.500\n *\n * Format:\n * $LABEL, $LDC, $BELOWLIMIT1, $BETWEENLIMIT12, $ABOVELIMIT2^\n *\n * This format is assumed to be fix\n *\n */\nconst transformAFD = csv => {\n return csv.map(e => {\n const result = e.split(\",\");\n let label, _, ldc, lower, middle, highestLevel;\n let levelsWithSum;\n if (result.length == 6) {\n [label, _, ldc, lower, middle, highestLevel] = result;\n levelsWithSum = [\n {\n height: Number(lower),\n translateY: Number(middle)\n },\n {\n height: Number(middle),\n translateY: 0\n }\n ];\n } else {\n {\n [label, _, ldc, middle, highestLevel] = result;\n levelsWithSum = [\n {\n height: Number(middle),\n translateY: 0\n }\n ];\n }\n }\n return {\n label: label,\n ldc: ldc,\n highestLevel: highestLevel,\n lowerLevels: levelsWithSum\n };\n });\n};\n\nconst fairwayavailability = {\n init,\n namespaced: true,\n state: init(),\n getters: {\n fwLNWLOverviewData: state => feature => {\n return state.fwLNWLOverviewData.find(\n d => d.feature.get(\"id\") === feature.get(\"id\")\n );\n }\n },\n mutations: {\n type: (state, type) => {\n state.type = type;\n },\n setLOS: (state, LOS) => {\n state.LOS = LOS;\n },\n setFrequency: (state, frequency) => {\n state.frequency = frequency;\n },\n setFrom: (state, from) => {\n state.from = from;\n },\n setTo: (state, to) => {\n state.to = to;\n },\n setDepthlimit1: (state, depthlimit1) => {\n state.depthlimit1 = depthlimit1;\n },\n setDepthlimit2: (state, depthlimit2) => {\n state.depthlimit2 = depthlimit2;\n },\n setWidthlimit1: (state, widthlimit1) => {\n state.widthlimit1 = widthlimit1;\n },\n setWidthlimit2: (state, widthlimit2) => {\n state.widthlimit2 = widthlimit2;\n },\n setSelectedFairwayAvailability: (state, feature) => {\n state.selectedFairwayAvailabilityFeature = feature;\n },\n addFwLNWLOverviewData: (state, data) => {\n let existingIndex = state.fwLNWLOverviewData.findIndex(\n d => d.feature.get(\"id\") === data.feature.get(\"id\")\n );\n if (existingIndex !== -1)\n state.fwLNWLOverviewData.splice(existingIndex, 1);\n state.fwLNWLOverviewData.push(data);\n },\n setLegendLNWL: (state, headerLNWL) => {\n state.headerLNWL = headerLNWL;\n },\n // See docs/developers.md for an example how to directly\n // call this method for testing.\n setAvailableFairwayDepthData: (state, data) => {\n const lines = data.split(\"\\n\");\n let [header, rest] = [lines.shift(), lines];\n // convert values to meter in the csv header\n state.csv = [\n header.replace(/\\d+\\.?\\d*/g, x => `${x / 100}m`),\n ...rest\n ].join(\"\\n\");\n const csv = [header, ...rest].filter(x => x !== \"\"); //omit empty lines\n\n // setLegend\n const headerEntries = csv.shift().split(\",\");\n headerEntries.shift();\n headerEntries.shift();\n state.legend = headerEntries.map(x => {\n let entry = x.split(\"#\")[1]; // split leading #\n entry = entry.replace(\"[h]\", \"\").trim(); // omit unit\n return entry;\n });\n\n state.fwData = transformAFD(csv);\n },\n // See docs/developers.md for an example how to directly\n // call this method for testing.\n setAvailableFairwayDepthLNWLData: (state, data) => {\n state.csv = data;\n\n data = data.split(\"\\n\").filter(d => d);\n data.shift(); // remove header line\n data = data.map(d => {\n let columns = d.split(\",\");\n let result;\n if (columns.length === 6) {\n result = {\n date: columns[0],\n ldc: Number(columns[2]),\n below: Number(columns[3]),\n between: Number(columns[4]),\n above: Number(columns[5])\n };\n } else {\n result = {\n date: columns[0],\n ldc: Number(columns[2]),\n below: Number(columns[3]),\n between: null,\n above: Number(columns[4])\n };\n }\n return result;\n });\n state.fwLNWLData = data;\n }\n },\n actions: {\n loadAvailableFairwayDepth: ({ commit }, options) => {\n return new Promise((resolve, reject) => {\n const {\n feature,\n frequency,\n LOS,\n depthLimit1,\n depthLimit2,\n widthLimit1,\n widthLimit2,\n limitingFactor,\n type\n } = options;\n let { from, to } = options;\n let name = \"\";\n if (type === TYPES.BOTTLENECK) {\n name = feature.hasOwnProperty(\"properties\")\n ? feature.properties.bottleneck_id\n : feature.get(\"bottleneck_id\");\n } else {\n name = feature.hasOwnProperty(\"properties\")\n ? feature.properties.name\n : feature.get(\"objnam\");\n }\n [from, to] = getIntervallBorders(from, to, frequency);\n let additionalParams = \"\";\n let endpoint = type;\n if (type === TYPES.BOTTLENECK) {\n if (limitingFactor === LIMITINGFACTORS.DEPTH)\n additionalParams = `&breaks=${depthLimit1},${depthLimit2}`;\n if (limitingFactor === LIMITINGFACTORS.WIDTH)\n additionalParams = `&breaks=${widthLimit1},${widthLimit2}`;\n } else if (type == TYPES.SECTION || type == TYPES.STRETCH) {\n additionalParams = `&depthbreaks=${depthLimit1},${depthLimit2}&widthbreaks=${widthLimit1},${widthLimit2}`;\n }\n const start = encodeURIComponent(\"00:00:00+00:00\");\n const end = encodeURIComponent(\"23:59:59+00:00\");\n const URL = `data/fairway/${endpoint}/${encodeURIComponent(\n name\n )}?from=${from}T${start}&to=${to}T${end}&mode=${frequency}&los=${LOS}${additionalParams}`;\n HTTP.get(URL, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"setAvailableFairwayDepthData\", response.data);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadAvailableFairwayDepthLNWL: (context, options) => {\n return new Promise((resolve, reject) => {\n const {\n feature,\n frequency,\n LOS,\n depthLimit1,\n depthLimit2,\n widthLimit1,\n widthLimit2,\n limitingFactor,\n type\n } = options;\n let { from, to } = options;\n let name = \"\";\n if (type === TYPES.BOTTLENECK) {\n name = feature.hasOwnProperty(\"properties\")\n ? feature.properties.bottleneck_id\n : feature.get(\"bottleneck_id\");\n } else {\n name = feature.hasOwnProperty(\"properties\")\n ? feature.properties.name\n : feature.get(\"objnam\");\n }\n [from, to] = getIntervallBorders(from, to, frequency);\n const start = encodeURIComponent(\"00:00:00+00:00\");\n const end = encodeURIComponent(\"23:59:59+00:00\");\n let additionalParams = \"\";\n let endpoint = type || TYPES.BOTTLENECK;\n if (type === TYPES.BOTTLENECK) {\n if (limitingFactor === LIMITINGFACTORS.DEPTH)\n additionalParams = `&breaks=${depthLimit1},${depthLimit2}`;\n if (limitingFactor === LIMITINGFACTORS.WIDTH)\n additionalParams = `&breaks=${widthLimit1},${widthLimit2}`;\n } else if (type == TYPES.SECTION || type == TYPES.STRETCH) {\n additionalParams = `&depthbreaks=${depthLimit1},${depthLimit2}&widthbreaks=${widthLimit1},${widthLimit2}`;\n }\n const URL = `data/availability/${endpoint}/${encodeURIComponent(\n name\n )}?from=${from}T${start}&to=${to}T${end}&mode=${frequency}&los=${LOS}${additionalParams}`;\n HTTP.get(URL, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n const { data } = response;\n resolve(data);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadAvailableFairwayDepthLNWLDiagram: ({ commit, dispatch }, options) => {\n dispatch(\"loadAvailableFairwayDepthLNWL\", options).then(data => {\n commit(\"setAvailableFairwayDepthLNWLData\", data);\n });\n },\n loadAvailableFairwayDepthLNWLForMap: ({ dispatch }, options) => {\n return dispatch(\"loadAvailableFairwayDepthLNWL\", options).then(\n response => {\n let data = response.split(\"\\n\").filter(d => d);\n data.shift(); // remove header line\n data = data.map(d => {\n let columns = d.split(\",\");\n return {\n ldc: Number(columns[2]),\n below: Number(columns[3]),\n between: Number(columns[4]),\n above: Number(columns[5])\n };\n });\n return data[0];\n }\n );\n }\n }\n};\n\nexport { LIMITINGFACTORS, FREQUENCIES, TYPES, fairwayavailability };\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n * Bernhard E. Reiter \n */\n\nimport { displayError, displayInfo } from \"@/lib/errors\";\n\nimport { HTTP } from \"@/lib/http\";\nimport { version } from \"../../package.json\";\n\n// initial state\nconst init = () => {\n return {\n userManualUrl: process.env.VUE_APP_USER_MANUAL_URL,\n appTitle: process.env.VUE_APP_TITLE,\n secondaryLogo: process.env.VUE_APP_SECONDARY_LOGO_URL,\n logoForPDF: process.env.VUE_APP_LOGO_FOR_PDF_URL,\n popup: null,\n backendError: false,\n paneSetup: \"DEFAULT\",\n paneRotate: 1,\n showSidebar: false,\n showUsermenu: false,\n showSearchbar: false,\n showSearchbarLastState: false,\n showIdentify: false,\n showLayers: true,\n showPdfTool: false,\n showContextBox: false,\n showProfiles: false,\n showGauges: false,\n showFairwayDepth: false,\n showFairwayDepthLNWL: false,\n showTimeSlider: false,\n contextBoxContent: null, // bottlenecks, imports, staging\n expandToolbar: true,\n countries: [\"AT\", \"SK\", \"HU\", \"HR\", \"RS\", \"BG\", \"RO\"],\n searchQuery: \"\",\n selectedTime: new Date(),\n currentVisibleTime: new Date(),\n refreshLayersTime: new Date(),\n storedTime: new Date(),\n version,\n tempRoute: \"\",\n config: {},\n ongoingPDFExport: false\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n versionStr: state => {\n // version number from package.json\n let versionStr = \"v\" + state.version;\n\n // hg revision\n if (\n process.env.VUE_APP_HGREV &&\n (state.version.includes(\"dev\") ||\n state.version.includes(\"beta\") ||\n state.version.includes(\"alpha\"))\n )\n // a '+' according to semver 2.0.0 starts a build meta info section\n // which shall only have [0-9A-Za-z-] chars\n // and is to be ignored when determining the order\n versionStr += \"+\" + process.env.VUE_APP_HGREV;\n\n return versionStr;\n }\n },\n mutations: {\n setOngoingPDFExport: (state, ongoingPDFExport) => {\n state.ongoingPDFExport = ongoingPDFExport;\n },\n setCurrentVisibleTime: (state, currentVisibleTime) => {\n state.currentVisibleTime = currentVisibleTime;\n },\n setLayerRefreshedTime: (state, refreshLayersTime) => {\n state.refreshLayersTime = refreshLayersTime;\n },\n setStoredTime: (state, storedTime) => {\n state.storedTime = storedTime;\n },\n setTempRoute: (state, tempRoute) => {\n state.tempRoute = tempRoute;\n },\n popup: (state, popup) => {\n state.popup = popup;\n },\n paneSetup: (state, setup) => {\n state.paneSetup = setup;\n },\n paneRotate: (state, rotate) => {\n if (rotate) {\n state.paneRotate = rotate;\n } else {\n state.paneRotate++;\n if (state.paneRotate === 5) state.paneRotate = 1;\n }\n },\n setSelectedTime: (state, time) => {\n state.selectedTime = time;\n },\n showTimeSlider: (state, show) => {\n state.showTimeSlider = show;\n },\n showSidebar: (state, show) => {\n state.showSidebar = show;\n },\n showUsermenu: (state, show) => {\n state.showUsermenu = show;\n },\n showSearchbar: (state, show) => {\n state.showSearchbar = show;\n },\n showIdentify: (state, show) => {\n state.showIdentify = show;\n },\n showLayers: (state, show) => {\n state.showLayers = show;\n },\n showPdfTool: (state, show) => {\n state.showPdfTool = show;\n },\n showContextBox: (state, show) => {\n state.showContextBox = show;\n },\n showProfiles: (state, show) => {\n state.showProfiles = show;\n },\n showGauges: (state, show) => {\n state.showGauges = show;\n },\n showFairwayDepth: (state, show) => {\n state.showFairwayDepth = show;\n },\n showFairwayDepthLNWL: (state, show) => {\n state.showFairwayDepthLNWL = show;\n },\n contextBoxContent: (state, context) => {\n state.contextBoxContent = context;\n if (context) {\n state.showSearchbarLastState = state.showSearchbar;\n }\n },\n expandToolbar: (state, expandToolbar) => {\n state.expandToolbar = expandToolbar;\n },\n searchQuery: (state, searchQuery) => {\n state.searchQuery = searchQuery;\n },\n config: (state, config) => {\n state.config = config;\n },\n setBackendErrorFlag: state => {\n state.backendError = true;\n },\n removeBackendErrorFlag: state => {\n state.backendError = false;\n }\n },\n actions: {\n reportBackendError({ commit }) {\n const TWOMINUTES = 2 * 60 * 1000;\n commit(\"setBackendErrorFlag\");\n setTimeout(() => {\n commit(\"removeBackendErrorFlag\");\n }, TWOMINUTES);\n },\n loadConfig({ commit }) {\n return HTTP.get(\"/system/settings\", {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n }).then(response => {\n commit(\"config\", response.data);\n });\n },\n saveConfig(context, config) {\n return HTTP.put(\"/system/settings\", config, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"application/json\"\n }\n })\n .then(() => {\n displayInfo({\n message: \"Configuration saved!\"\n });\n })\n .catch(error => {\n const { status, data } = error.response;\n displayError({\n title: \"Backend Error\",\n message: `${status}: ${data.message || data}`\n });\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\n\nimport { HTTP } from \"@/lib/http\";\nimport { toMillisFromString } from \"@/lib/session\";\n\nconst init = () => {\n return {\n isAuthenticated: false,\n expires: null,\n roles: [],\n user: \"\"\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n isWaterwayAdmin: state => {\n return state.roles.includes(\"waterway_admin\");\n },\n isSysAdmin: state => {\n return state.roles.includes(\"sys_admin\");\n }\n },\n mutations: {\n authSuccess: (state, data) => {\n const { token, user, expires, roles } = data;\n localStorage.setItem(\"expires\", expires);\n localStorage.setItem(\"roles\", roles);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"user\", user);\n state.expires = expires;\n state.roles = roles;\n state.user = user;\n state.authenticated = true;\n },\n clearAuth: () => {\n localStorage.removeItem(\"expires\");\n localStorage.removeItem(\"roles\");\n localStorage.removeItem(\"token\");\n localStorage.removeItem(\"user\");\n },\n setUser: (state, name) => {\n state.user = name;\n },\n setRoles: (state, roles) => {\n state.roles = roles;\n },\n setExpires: (state, expires) => {\n state.expires = expires;\n },\n setIsAuthenticate: state => {\n state.isAuthenticated = true;\n }\n },\n actions: {\n login({ commit }, user) {\n // using POST is a bit more secure than GET\n return new Promise((resolve, reject) => {\n const handleResponse = response => {\n const { expires } = response.data;\n const renew =\n (new Date(toMillisFromString(expires)) - new Date()) * 0.9;\n commit(\"authSuccess\", response.data);\n resolve(response);\n setTimeout(() => {\n HTTP.get(\"/renew\", {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n }).then(handleResponse);\n }, renew);\n };\n\n HTTP.post(\"/login\", user)\n .then(handleResponse)\n .catch(error => {\n commit(\"reset\", null, { root: true });\n commit(\"clearAuth\");\n reject(error);\n });\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\n\nimport { HTTP } from \"@/lib/http\";\n\n// initial state\nconst init = () => {\n return {\n users: null,\n currentUser: null,\n userDetailsVisible: false\n };\n};\n\nconst newUser = () => {\n return {\n user: \"\",\n email: \"\",\n country: null,\n role: null,\n isNew: true,\n password: \"\",\n roleLabel: \"\",\n active: true\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n userCountries: state => {\n if (!state.users) return [];\n return state.users.reduce((o, n) => {\n o[n.user] = n.role !== \"sys_admin\" ? n.country : \"global\";\n return o;\n }, {});\n },\n isUserDetailsVisible: state => {\n return state.userDetailsVisible;\n },\n currentUser: state => {\n return state.currentUser;\n },\n users: state => {\n return state.users;\n },\n getUserByName: state => name => {\n return state.users.find(user => {\n return user.user === name;\n });\n }\n },\n mutations: {\n setUserDetailsInvisible: state => {\n state.userDetailsVisible = false;\n },\n setUserDetailsVisible: state => {\n state.userDetailsVisible = true;\n },\n usersLoaded: (state, data) => {\n const resolveLabel = x => {\n const labels = {\n waterway_user: \"Waterway User\",\n waterway_admin: \"Waterway Administrator\",\n sys_admin: \"System Admininistrator\"\n };\n return labels[x];\n };\n let users = data.users.map(u => {\n u[\"roleLabel\"] = resolveLabel(u[\"role\"]);\n return u;\n });\n state.users = users;\n },\n setCurrentUser: (state, data) => {\n state.currentUser = data;\n state.userDetailsVisible = true;\n },\n clearCurrentUser: state => {\n state.currentUser = newUser();\n }\n },\n actions: {\n deleteUser({ commit }, data) {\n const { name } = data;\n return new Promise((resolve, reject) => {\n HTTP.delete(\"/users/\" + encodeURIComponent(`${name}`), {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"clearCurrentUser\");\n commit(\"setUserDetailsInvisible\");\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n saveCurrentUser({ commit }, data) {\n const { path, user } = data;\n if (user.isNew) {\n return new Promise((resolve, reject) => {\n HTTP.post(\"/users\", user, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n })\n .then(response => {\n commit(\"setUserDetailsInvisible\");\n commit(\"clearCurrentUser\");\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n } else {\n return new Promise((resolve, reject) => {\n // Reactivate User\n if (!user.active) {\n HTTP.patch(\n \"/users/\" + path,\n { active: true, email: user.email },\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }\n )\n .then(response => {\n commit(\"setUserDetailsInvisible\");\n commit(\"clearCurrentUser\");\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n } else {\n HTTP.put(\"/users/\" + path, user, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"setUserDetailsInvisible\");\n commit(\"clearCurrentUser\");\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n }\n });\n }\n },\n loadUsers({ commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\"/users\", {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"usersLoaded\", response.data);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018, 2019 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * * Bernhard Reiter \n * * Markus Kottländer \n * * Thomas Junk \n */\n\nimport { Circle, Fill, Stroke, Style } from \"ol/style\";\nimport { getArea, getLength } from \"ol/sphere\";\n\nimport Draw from \"ol/interaction/Draw\";\nimport Feature from \"ol/Feature\";\nimport { HTTP } from \"@/lib/http\";\nimport Point from \"ol/geom/Point\";\nimport { Vector as VectorLayer } from \"ol/layer\";\nimport app from \"@/main\";\nimport bbox from \"@turf/bbox\";\nimport { fromLonLat } from \"ol/proj\";\nimport { toLonLat } from \"ol/proj\";\nimport { transformExtent } from \"ol/proj\";\n\n// initial state\nconst init = () => {\n return {\n oldLayerVisibility: [],\n singleLayerVisible: false,\n openLayersMaps: [],\n syncedMaps: [],\n syncedView: null,\n mapPopup: null,\n mapPopupEnabled: true,\n initialLoad: true,\n extent: {\n lat: 6155376,\n lon: 1819178,\n zoom: 11\n },\n identifiedFeatures: [], // map features identified by clicking on the map\n identifiedCoordinates: null,\n currentMeasurement: null, // distance or area from line-/polygon-/cutTool\n lineToolEnabled: false,\n polygonToolEnabled: false,\n cutToolEnabled: false,\n isolinesLegendImgDataURL: \"\",\n differencesLegendImgDataURL: \"\",\n ongoingRefresh: false,\n ongoingTimeSlide: false,\n reviewActive: false\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n openLayersMap: state => id => {\n return state.openLayersMaps.find(\n map => map.getTarget() === \"map-\" + (id || \"main\")\n );\n },\n filteredIdentifiedFeatures: state => {\n return state.identifiedFeatures.filter(f => f.getId());\n }\n },\n mutations: {\n viewSingleLayer: (state, layerId) => {\n state.singleLayerVisible = !state.singleLayerVisible;\n if (state.singleLayerVisible) {\n state.oldLayerVisibility = state.openLayersMaps.reduce((o, m) => {\n let current = [];\n m.getLayers().forEach(l => {\n current.push(l.getVisible());\n l.setVisible(l.get(\"id\") == layerId);\n });\n o.push(current);\n return o;\n }, []);\n } else {\n state.oldLayerVisibility.forEach((m, i) => {\n let layers = state.openLayersMaps[i].getLayers().getArray();\n m.forEach((visible, index) => {\n layers[index].setVisible(visible);\n });\n });\n }\n },\n reviewActive: (state, active) => {\n state.reviewActive = active;\n },\n startRefreshLayers: state => {\n state.ongoingRefresh = true;\n },\n finishRefreshLayers: state => {\n state.ongoingRefresh = false;\n },\n startTimeSlide: state => {\n state.ongoingTimeSlide = true;\n },\n finishTimeSlide: state => {\n state.ongoingTimeSlide = false;\n },\n initialLoad: (state, initialLoad) => {\n state.initialLoad = initialLoad;\n },\n extent: (state, extent) => {\n state.extent = extent;\n },\n addOpenLayersMap: (state, map) => {\n state.openLayersMaps.push(map);\n },\n removeOpenLayersMap: (state, map) => {\n let index = state.openLayersMaps.findIndex(\n m => m.getTarget() === map.getTarget()\n );\n if (index !== -1) {\n state.openLayersMaps.splice(index, 1);\n }\n },\n syncedMaps: (state, ids) => {\n state.syncedMaps = ids;\n },\n syncedView: (state, view) => {\n state.syncedView = view;\n },\n mapPopup: (state, popup) => {\n state.mapPopup = popup;\n },\n mapPopupEnabled: (state, enabled) => {\n state.mapPopupEnabled = enabled;\n },\n setIdentifiedFeatures: (state, identifiedFeatures) => {\n state.identifiedFeatures = identifiedFeatures;\n },\n addIdentifiedFeatures: (state, identifiedFeatures) => {\n state.identifiedFeatures = state.identifiedFeatures.concat(\n identifiedFeatures\n );\n },\n identifiedCoordinates: (state, coordinates) => {\n state.identifiedCoordinates = coordinates;\n },\n setCurrentMeasurement: (state, measurement) => {\n state.currentMeasurement = measurement;\n },\n lineToolEnabled: (state, enabled) => {\n state.lineToolEnabled = enabled;\n state.openLayersMaps.forEach(m => {\n let tool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"linetool\");\n if (tool) {\n tool.setActive(enabled);\n }\n });\n },\n polygonToolEnabled: (state, enabled) => {\n state.polygonToolEnabled = enabled;\n state.openLayersMaps.forEach(m => {\n let tool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"polygontool\");\n if (tool) {\n tool.setActive(enabled);\n }\n });\n },\n cutToolEnabled: (state, enabled) => {\n state.cutToolEnabled = enabled;\n state.openLayersMaps.forEach(m => {\n let tool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"cuttool\");\n if (tool) {\n tool.setActive(enabled);\n }\n });\n },\n isolinesLegendImgDataURL: (state, isolinesLegendImgDataURL) => {\n state.isolinesLegendImgDataURL = isolinesLegendImgDataURL;\n },\n differencesLegendImgDataURL: (state, differencesLegendImgDataURL) => {\n state.differencesLegendImgDataURL = differencesLegendImgDataURL;\n }\n },\n actions: {\n openLayersMap({ state, commit, dispatch }, map) {\n const drawVectorSrc = map.getLayer(\"DRAWTOOL\").getSource();\n const cutVectorSrc = map.getLayer(\"CUTTOOL\").getSource();\n\n // init line tool\n const lineTool = new Draw({\n source: drawVectorSrc,\n type: \"LineString\",\n maxPoints: 2,\n stopClick: true\n });\n lineTool.set(\"id\", \"linetool\");\n lineTool.setActive(false);\n lineTool.on(\"drawstart\", () => {\n state.openLayersMaps.forEach(m => {\n m.getLayer(\"DRAWTOOL\")\n .getSource()\n .clear();\n });\n commit(\"setCurrentMeasurement\", null);\n });\n lineTool.on(\"drawend\", event => {\n commit(\"setCurrentMeasurement\", {\n quantity: app.$gettext(\"Length\"),\n unitSymbol: \"m\",\n value: Math.round(getLength(event.feature.getGeometry()) * 10) / 10\n });\n commit(\"application/showIdentify\", true, { root: true });\n });\n\n // init polygon tool\n const polygonTool = new Draw({\n source: drawVectorSrc,\n type: \"Polygon\",\n maxPoints: 50,\n stopClick: true\n });\n polygonTool.set(\"id\", \"polygontool\");\n polygonTool.setActive(false);\n polygonTool.on(\"drawstart\", () => {\n state.openLayersMaps.forEach(m => {\n m.getLayer(\"DRAWTOOL\")\n .getSource()\n .clear();\n });\n commit(\"setCurrentMeasurement\", null);\n });\n polygonTool.on(\"drawend\", event => {\n const areaSize = getArea(event.feature.getGeometry());\n commit(\"setCurrentMeasurement\", {\n quantity: app.$gettext(\"Area\"),\n unitSymbol: areaSize > 100000 ? \"km²\" : \"m²\",\n value:\n areaSize > 100000\n ? Math.round(areaSize / 1000) / 1000 // convert into 1 km² == 1000*1000 m² and round to 1000 m²\n : Math.round(areaSize)\n });\n commit(\"application/showIdentify\", true, { root: true });\n });\n\n // init cut tool\n const cutTool = new Draw({\n source: cutVectorSrc,\n type: \"LineString\",\n maxPoints: 2,\n stopClick: true,\n style: new Style({\n stroke: new Stroke({\n color: \"#444\",\n width: 2,\n lineDash: [7, 7]\n }),\n image: new Circle({\n fill: new Fill({ color: \"#333\" }),\n stroke: new Stroke({ color: \"#fff\", width: 1.5 }),\n radius: 6\n })\n })\n });\n cutTool.set(\"id\", \"cuttool\");\n cutTool.setActive(false);\n cutTool.on(\"drawstart\", () => {\n state.openLayersMaps.forEach(m => {\n m.getLayer(\"CUTTOOL\")\n .getSource()\n .clear();\n });\n });\n cutTool.on(\"drawend\", event => {\n commit(\"fairwayprofile/selectedCut\", null, { root: true });\n dispatch(\"fairwayprofile/cut\", event.feature, { root: true });\n });\n\n map.addInteraction(lineTool);\n map.addInteraction(cutTool);\n map.addInteraction(polygonTool);\n\n // If there are multiple maps and you enable one of the draw tools, when\n // moving the mouse to another map, the cursor for the draw tool stays\n // visible in the first map, right next to the edge where the cursor left\n // the map. So here we disable all draw layers except the ones in the map\n // that the user currently hovering with the mouse.\n map.getTargetElement().addEventListener(\"mouseenter\", () => {\n if (\n state.lineToolEnabled ||\n state.polygonToolEnabled ||\n state.cutToolEnabled\n ) {\n state.openLayersMaps.forEach(m => {\n let lineTool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"linetool\");\n let polygonTool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"polygontool\");\n let cutTool = m\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"cuttool\");\n if (lineTool) lineTool.setActive(false);\n if (polygonTool) polygonTool.setActive(false);\n if (cutTool) cutTool.setActive(false);\n });\n let lineTool = map\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"linetool\");\n let polygonTool = map\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"polygontool\");\n let cutTool = map\n .getInteractions()\n .getArray()\n .find(i => i.get(\"id\") === \"cuttool\");\n if (lineTool && state.lineToolEnabled) lineTool.setActive(true);\n if (polygonTool && state.polygonToolEnabled)\n polygonTool.setActive(true);\n if (cutTool && state.cutToolEnabled) cutTool.setActive(true);\n }\n });\n\n commit(\"addOpenLayersMap\", map);\n },\n initIdentifyTool({ state, rootState, commit, dispatch }, map) {\n map.on([\"singleclick\", \"dblclick\"], event => {\n commit(\n \"identifiedCoordinates\",\n toLonLat(event.coordinate, map.getView().getProjection())\n );\n state.mapPopup.setPosition(undefined);\n commit(\"setIdentifiedFeatures\", []);\n // checking our WFS layers\n var features = map.getFeaturesAtPixel(event.pixel, { hitTolerance: 7 });\n if (features) {\n let all = [];\n let bottlenecks = [];\n let gauges = [];\n let stretches = [];\n let sections = [];\n\n for (let feature of features) {\n // avoid identifying the same feature twice\n if (all.findIndex(f => f.getId() === feature.getId()) === -1)\n all.push(feature);\n\n let id = feature.getId();\n // RegExp.prototype.test() works with number, str and undefined\n // get selected bottleneck\n if (/^bottlenecks/.test(id)) bottlenecks.push(feature);\n // get selected gauge\n if (/^gauges/.test(id)) gauges.push(feature);\n // get selected stretch\n if (/^stretches/.test(id)) stretches.push(feature);\n // get selected section\n if (/^sections/.test(id)) sections.push(feature);\n }\n\n commit(\"setIdentifiedFeatures\", all);\n\n // Decide whether we open a related dialog immediately or show the\n // popup with possible options first.\n // The following cases require a manual decision via the popup because\n // the targeted feature is not clear.\n if (\n (bottlenecks.length ||\n gauges.length > 1 ||\n stretches.length > 1 ||\n sections.length > 1 ||\n (sections.length && stretches.length) ||\n (gauges.length && sections.length) ||\n (gauges.length && stretches.length)) &&\n state.mapPopupEnabled\n ) {\n state.mapPopup.setMap(map);\n state.mapPopup.setPosition(event.coordinate);\n }\n // The following scenarios lead to a distinct action without popup.\n if (\n gauges.length === 1 &&\n !bottlenecks.length &&\n !sections.length &&\n !stretches.length\n ) {\n commit(\"application/showGauges\", true, { root: true });\n dispatch(\"gauges/selectedGaugeISRS\", gauges[0].get(\"isrs_code\"), {\n root: true\n });\n }\n if (\n stretches.length === 1 &&\n !sections.length &&\n !bottlenecks.length &&\n !gauges.length\n ) {\n if (rootState.imports.selectedStretchId === stretches[0].getId()) {\n commit(\"imports/selectedStretchId\", null, {\n root: true\n });\n } else {\n commit(\"imports/selectedStretchId\", stretches[0].getId(), {\n root: true\n });\n commit(\"fairwayavailability/type\", \"stretches\", { root: true });\n commit(\"application/showFairwayDepth\", true, { root: true });\n dispatch(\"moveToFeauture\", { feature: stretches[0], zoom: 17 });\n }\n }\n if (\n sections.length === 1 &&\n !stretches.length &&\n !bottlenecks.length &&\n !gauges.length\n ) {\n if (rootState.imports.selectedSectionId === sections[0].getId()) {\n commit(\"imports/selectedSectionId\", null, {\n root: true\n });\n } else {\n commit(\"imports/selectedSectionId\", sections[0].getId(), {\n root: true\n });\n commit(\"fairwayavailability/type\", \"sections\", { root: true });\n commit(\"application/showFairwayDepth\", true, { root: true });\n dispatch(\"moveToFeauture\", { feature: sections[0], zoom: 17 });\n }\n }\n }\n\n let currentResolution = map.getView().getResolution();\n\n var waterwayAxisSource = map.getLayer(\"WATERWAYAXIS\").getSource();\n var waxisUrl = waterwayAxisSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution /* resolution */,\n \"EPSG:3857\",\n // { INFO_FORMAT: \"application/vnd.ogc.gml\" } // not allowed by d4d\n { INFO_FORMAT: \"application/json\" }\n );\n\n if (waxisUrl) {\n // cannot directly query here because of SOP\n HTTP.get(waxisUrl, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n var waterwayAreaSource = map.getLayer(\"WATERWAYAREA\").getSource();\n var wareaUrl = waterwayAreaSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution /* resolution */,\n \"EPSG:3857\",\n // { INFO_FORMAT: \"application/vnd.ogc.gml\" } // not allowed by d4d\n { INFO_FORMAT: \"application/json\" }\n );\n\n if (wareaUrl) {\n HTTP.get(wareaUrl, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n var dmSource = map.getLayer(\"DISTANCEMARKS\").getSource();\n var dmUrl = dmSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution /* resolution */,\n \"EPSG:3857\",\n // { INFO_FORMAT: \"application/vnd.ogc.gml\" } // not allowed by d4d\n { INFO_FORMAT: \"application/json\" }\n );\n\n if (dmUrl) {\n HTTP.get(dmUrl + \"&BUFFER=5\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n var dmaSource = map.getLayer(\"DISTANCEMARKSAXIS\").getSource();\n var dmaUrl = dmaSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution /* resolution */,\n \"EPSG:3857\",\n // { INFO_FORMAT: \"application/vnd.ogc.gml\" } // not allowed by d4d\n { INFO_FORMAT: \"application/json\" }\n );\n\n if (dmaUrl) {\n HTTP.get(dmaUrl + \"&BUFFER=5\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n var srSource = map.getLayer(\"BOTTLENECKISOLINE\").getSource();\n var srUrl = srSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution /* resolution */,\n \"EPSG:3857\",\n // { INFO_FORMAT: \"application/vnd.ogc.gml\" } // not allowed by d4d\n { INFO_FORMAT: \"application/json\" }\n );\n\n if (srUrl) {\n HTTP.get(srUrl + \"&BUFFER=5\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n\n var fmSource = map.getLayer(\"FAIRWAYMARKS\").getSource();\n var fmURL = fmSource.getGetFeatureInfoUrl(\n event.coordinate,\n currentResolution,\n \"EPSG:3857\",\n {\n INFO_FORMAT: \"application/json\",\n TIME: rootState.application.currentVisibleTime.toISOString()\n }\n );\n if (fmSource) {\n HTTP.get(fmURL, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n }\n }).then(response => {\n let features = response.data.features.map(f => {\n let feat = new Feature({\n geometry: new Point(f.geometry.coordinates)\n });\n feat.setId(f.id);\n feat.setProperties(f.properties);\n return feat;\n });\n commit(\"addIdentifiedFeatures\", features);\n });\n }\n });\n },\n refreshLayers({ state }) {\n state.openLayersMaps.forEach(map => {\n let layers = map.getLayers().getArray();\n for (let i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer instanceof VectorLayer) {\n layer.getSource().clear(true);\n } else {\n layer.getSource().refresh();\n }\n }\n });\n },\n refreshTimebasedLayers({ state, rootState }) {\n const layers = [\n \"BOTTLENECKS\",\n \"FAIRWAYDIMENSIONSLOS1\",\n \"FAIRWAYDIMENSIONSLOS2\",\n \"FAIRWAYDIMENSIONSLOS3\",\n \"WATERWAYAXIS\",\n \"FAIRWAYMARKS\"\n ];\n state.openLayersMaps.forEach(map => {\n for (let i = 0; i < layers.length; i++) {\n let layer = map.getLayer(layers[i]);\n if (layer instanceof VectorLayer) {\n layer.getSource().clear(true);\n } else {\n // Refresh layers with updated TIME value\n layer.getSource().updateParams({\n TIME: rootState.application.refreshLayersTime.toISOString()\n });\n layer.getSource().refresh();\n }\n }\n });\n },\n moveToBoundingBox(\n { state },\n { boundingBox, zoom, preventZoomOut, duration }\n ) {\n const extent = transformExtent(boundingBox, \"EPSG:4326\", \"EPSG:3857\");\n const currentZoom = state.syncedView.getZoom();\n zoom = zoom || currentZoom;\n state.syncedView.fit(extent, {\n maxZoom: preventZoomOut ? Math.max(zoom, currentZoom) : zoom,\n duration: duration || 700\n });\n },\n moveToFeauture({ dispatch }, { feature, zoom, preventZoomOut }) {\n const boundingBox = feature.hasOwnProperty(\"geometry\")\n ? bbox(feature.geometry)\n : feature\n .getGeometry()\n .clone()\n .transform(\"EPSG:3857\", \"EPSG:4326\")\n .getExtent();\n dispatch(\"moveToBoundingBox\", { boundingBox, zoom, preventZoomOut });\n },\n moveMap({ state }, { coordinates, zoom, preventZoomOut }) {\n const currentZoom = state.syncedView.getZoom();\n zoom = zoom || currentZoom;\n state.syncedView.animate({\n zoom: preventZoomOut ? Math.max(zoom, currentZoom) : zoom,\n center: fromLonLat(coordinates, state.syncedView.getProjection()),\n duration: 700\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018, 2019 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Raimund Renkert \n */\n\n/**\n *\n * Distance calculations\n * JS transposition of cross.go functions\n *\n */\n\nimport {\n lineString as turfLineString,\n point as turfPoint,\n multiPolygon as turfMultiPolygon\n} from \"@turf/helpers\";\n\nimport Feature from \"ol/Feature\";\nimport { GeoJSON } from \"ol/format\";\n// import booleanWithin from \"@turf/boolean-within\";\nimport booleanContains from \"@turf/boolean-contains\";\nimport distance from \"@turf/distance\";\nimport lineIntersect from \"@turf/line-intersect\";\nimport lineSlice from \"@turf/line-slice\";\nimport lineSplit from \"@turf/line-split\";\n\nconst EARTHRADIUS = 6378137.0;\n\n/**\n * Converts to radiant\n * @param {degree} d\n */\nconst deg2rad = d => {\n return (d * Math.PI) / 180.0;\n};\n\n/**\n * Calculates the difference between two points in m\n *\n * Points are given with {lat: $lat, lon: $lon}\n *\n * @param {object} P1\n * @param {object} P2\n */\nconst distanceBetween = (P1, P2) => {\n const dLat = deg2rad(P2.lat - P1.lat);\n let dLng = Math.abs(deg2rad(P2.lon - P1.lon));\n if (dLng > Math.PI) {\n dLng = 2 * Math.PI - dLng;\n }\n const x = dLng * Math.cos(deg2rad((P1.lat + P2.lat) / 2.0));\n return Math.sqrt(dLat * dLat + x * x) * EARTHRADIUS;\n};\n\n/**\n * Takes a triple of [lat, long, alt] and generates\n * an object with according attributes\n * {\n * lat: $lat,\n * lon: $lon,\n * alt: $alt\n * }\n *\n * @param {array} coords\n */\nconst Point = coords => {\n return {\n lon: coords[0],\n lat: coords[1],\n alt: coords[2]\n };\n};\n\n/**\n * Has geoJSON as its input and transforms\n * given coordinates into points representing\n * distance from startpoint / altitude information\n *\n * a) extracting the minimum altitude\n * b) extracting the maximum altitude\n * c) calculating the total length of the given profile\n * d) transposes the datapoints relative to a given start point\n *\n * The calculation of total equals the sum of partial distances between points\n *\n * The x-value of a point is equal to the total distance up to this point\n *\n * The distance between the last point of the last segment and the end point is added\n * to the total\n *\n * @param {object} geoJSON, startPoint, endPoint\n */\nconst transform = ({ geoJSON, startPoint, endPoint }) => {\n const lineSegments = geoJSON.geometry.coordinates;\n let segmentPoints = [];\n let lengthPolyLine = 0;\n let referencePoint = Point(startPoint);\n let minAlt = Math.abs(lineSegments[0][0][2]);\n let maxAlt = Math.abs(lineSegments[0][0][2]);\n let currentPoint = null;\n for (let segment of lineSegments) {\n let points = [];\n for (let coordinateTriplet of segment) {\n currentPoint = Point(coordinateTriplet);\n lengthPolyLine += distanceBetween(referencePoint, currentPoint);\n let y = currentPoint.alt;\n points.push({\n x: lengthPolyLine,\n y: y\n });\n if (y < minAlt) minAlt = y;\n if (y > maxAlt) maxAlt = y;\n referencePoint = currentPoint;\n }\n segmentPoints.push(points);\n }\n lengthPolyLine += distanceBetween(currentPoint, Point(endPoint));\n return { segmentPoints, lengthPolyLine, minAlt, maxAlt };\n};\n\n/**\n * Prepare profile takes geoJSON data in form of\n * a MultiLineString, e.g.\n *\n * {\n * type: \"Feature\",\n * geometry: {\n * type: \"MultiLineString\",\n * coordinates: [\n * [\n * [16.53593398, 48.14694085, -146.52392755]\n * ...\n * ]]\n *\n * and transforms it to a structure representing the number of sections\n * where data is present with according lengths and the points\n *\n * {\n * { points:\n * [\n * [ { x: 0.005798201616417183, y: -146.52419461 },\n * { x: 0, y: -146.52394016 }\n * ...\n * ]\n * ]\n * lengthPolyLine: 160.06814078495722,\n * minAlt: -146.73122231,\n * maxAlt: -145.65155866\n * }\n *\n * @param {object} geoJSON\n */\nconst prepareProfile = ({ geoJSON, startPoint, endPoint }) => {\n const { segmentPoints, lengthPolyLine, minAlt, maxAlt } = transform({\n geoJSON,\n startPoint,\n endPoint\n });\n return {\n points: segmentPoints,\n lengthPolyLine: lengthPolyLine,\n minAlt: minAlt,\n maxAlt: maxAlt\n };\n};\n\nconst generateFeatureRequest = (profileLine, bottleneck_id, date_info) => {\n const feature = new Feature({\n geometry: profileLine,\n bottleneck: bottleneck_id,\n date: date_info\n });\n return new GeoJSON({ geometryName: \"geometry\" }).writeFeature(feature);\n};\n\nconst calculateFairwayCoordinates = (profileLine, fairwayGeometry, depth) => {\n // both geometries have to be in EPSG:4326\n // uses turfjs distance() function\n let fairwayCoordinates = [];\n var line = turfLineString(profileLine.getCoordinates());\n var polygon = turfMultiPolygon(fairwayGeometry.getCoordinates());\n var intersects = lineIntersect(line, polygon);\n\n let opts = { units: \"meters\" };\n let pStartPoint = profileLine.getCoordinates()[0];\n\n if (intersects.features.length == 2) {\n let line1 = lineSlice(\n intersects.features[0].geometry,\n intersects.features[1].geometry,\n line\n );\n fairwayCoordinates.push([\n distance(pStartPoint, line1.geometry.coordinates[0], opts),\n distance(pStartPoint, line1.geometry.coordinates[1], opts),\n depth\n ]);\n } else if (\n booleanContains(polygon, turfPoint(line.geometry.coordinates[0])) &&\n booleanContains(polygon, turfPoint(line.geometry.coordinates[1]))\n ) {\n fairwayCoordinates.push([\n distance(pStartPoint, line.geometry.coordinates[0], opts),\n distance(pStartPoint, line.geometry.coordinates[1], opts),\n depth\n ]);\n } else if (lineSplit(line, polygon).features.length > 0) {\n let split = lineSplit(line, polygon);\n for (let feature of split.features) {\n if (booleanContains(polygon, feature)) {\n fairwayCoordinates.push([\n distance(pStartPoint, feature.geometry.coordinates[0], opts),\n distance(pStartPoint, feature.geometry.coordinates[1], opts),\n depth\n ]);\n }\n }\n }\n\n return fairwayCoordinates;\n};\n\nconst featureToFairwayCoordinates = (feature, profileLine) => {\n // need to use EPSG:3857 which is the proj of vectorSource\n var intersectingPolygon = feature\n .getGeometry()\n .clone()\n .transform(\"EPSG:3857\", \"EPSG:4326\");\n const fairwayCoordinates = calculateFairwayCoordinates(\n profileLine,\n intersectingPolygon,\n feature.get(\"min_depth\") ? feature.get(\"min_depth\") / 100 : 2.5\n );\n return fairwayCoordinates;\n};\n\nexport {\n generateFeatureRequest,\n prepareProfile,\n calculateFairwayCoordinates,\n featureToFairwayCoordinates\n};\n","import { HTTP } from \"@/lib/http\";\nimport LineString from \"ol/geom/LineString\";\n/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\nimport Vue from \"vue\";\nimport { displayError } from \"@/lib/errors\";\nimport { featureToFairwayCoordinates } from \"@/lib/geo\";\nimport { generateFeatureRequest } from \"@/lib/geo\";\nimport { getLength } from \"ol/sphere\";\nimport { prepareProfile } from \"@/lib/geo\";\n\n// initial state\nconst init = () => {\n return {\n additionalSurvey: null,\n minAlt: 0,\n maxAlt: 0,\n currentProfile: {},\n selectedWaterLevel: \"ref\",\n fairwayData: [],\n startPoint: null,\n endPoint: null,\n previousCuts: [],\n profileLoading: false,\n selectedCut: null,\n differencesLoading: false,\n currentDifference: null,\n depth: 2.5,\n useCustomDepth: true\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n totalLength: state => {\n const keys = Object.keys(state.currentProfile);\n return keys.length\n ? Math.max(...keys.map(x => state.currentProfile[x].length))\n : 0;\n },\n additionalSurvey: state => {\n return state.additionalSurvey;\n }\n },\n mutations: {\n setDepth: (state, value) => {\n state.depth = value;\n },\n setUseCustomDepth: (state, flag) => {\n state.useCustomDepth = flag;\n },\n additionalSurvey: (state, additionalSurvey) => {\n state.additionalSurvey = additionalSurvey;\n },\n setSelectedWaterLevel: (state, level) => {\n state.selectedWaterLevel = level;\n },\n setDifferencesLoading: (state, value) => {\n state.differencesLoading = value;\n },\n setCurrentDifference: (state, value) => {\n state.currentDifference = value;\n },\n profileLoaded: (state, answer) => {\n const { response, surveyDate } = answer;\n const { data } = response;\n const coordinates = data.geometry.coordinates;\n if (!coordinates) return;\n const startPoint = state.startPoint;\n const endPoint = state.endPoint;\n const geoJSON = data;\n const result = prepareProfile({ geoJSON, startPoint, endPoint });\n // Use Vue.set() to make new object properties rective\n // https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats\n Vue.set(state.currentProfile, surveyDate, {\n points: result.points,\n length: result.lengthPolyLine\n });\n if (!state.minAlt || state.minAlt > result.minAlt) {\n state.minAlt = result.minAlt;\n }\n if (!state.maxAlt || state.maxAlt < result.maxAlt) {\n state.maxAlt = result.maxAlt;\n }\n },\n setStartPoint: (state, start) => {\n state.startPoint = start;\n },\n setEndPoint: (state, end) => {\n state.endPoint = end;\n },\n addFairwayData: (state, coordinates) => {\n state.fairwayData.push(coordinates);\n },\n clearFairwayData: state => {\n state.fairwayData = [];\n },\n clearCurrentProfile: state => {\n state.currentProfile = {};\n state.minAlt = null;\n state.maxAlt = null;\n state.totalLength = null;\n state.fairwayData = [];\n state.startPoint = null;\n state.endPoint = null;\n state.selectedWaterLevel = \"ref\";\n },\n previousCuts: (state, previousCuts) => {\n state.previousCuts = previousCuts;\n },\n profileLoading: (state, loading) => {\n state.profileLoading = loading;\n },\n selectedCut: (state, cut) => {\n state.selectedCut = cut;\n }\n },\n actions: {\n clearCurrentProfile({ commit, rootState }) {\n commit(\"clearCurrentProfile\");\n commit(\"map/cutToolEnabled\", false, { root: true });\n rootState.map.openLayersMaps.forEach(m => {\n m.getLayer(\"CUTTOOL\")\n .getSource()\n .clear();\n });\n },\n loadProfile({ commit, state }, survey) {\n if (state.startPoint && state.endPoint) {\n return new Promise((resolve, reject) => {\n const profileLine = new LineString([\n state.startPoint,\n state.endPoint\n ]);\n const geoJSON = generateFeatureRequest(\n profileLine,\n survey.bottleneck_id,\n survey.date_info\n );\n HTTP.post(\"/cross\", geoJSON, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n if (response.data.geometry.coordinates.length) {\n commit(\"profileLoaded\", {\n response: response,\n surveyDate: survey.date_info\n });\n resolve(response);\n } else {\n commit(\"clearCurrentProfile\");\n reject({\n response: {\n status: null,\n data: \"No intersection with sounding data.\"\n }\n });\n }\n })\n .catch(error => reject(error));\n });\n }\n },\n cut({ commit, dispatch, state, rootState, rootGetters }, cut) {\n return new Promise(resolve => {\n const length = getLength(cut.getGeometry());\n commit(\n \"map/setCurrentMeasurement\",\n {\n quantity: \"Length\",\n unitSymbol: \"m\",\n value: Math.round(length * 10) / 10\n },\n { root: true }\n );\n commit(\"clearFairwayData\");\n // if a survey has been selected, request a profile\n // TODO an improvement could be to check if the line intersects\n // with the bottleneck area's polygon before trying the server request\n if (rootState.bottlenecks.selectedSurvey) {\n const inputLineString = cut.getGeometry().clone();\n inputLineString.transform(\"EPSG:3857\", \"EPSG:4326\");\n const [start, end] = inputLineString\n .getCoordinates()\n .map(coords => coords.map(coord => parseFloat(coord.toFixed(8))));\n commit(\"setStartPoint\", start);\n commit(\"setEndPoint\", end);\n const profileLine = new LineString([start, end]);\n\n const profileLoaders = [\n dispatch(\"loadProfile\", rootState.bottlenecks.selectedSurvey)\n ];\n if (state.additionalSurvey) {\n profileLoaders.push(\n dispatch(\"loadProfile\", state.additionalSurvey)\n );\n }\n\n commit(\"profileLoading\", true);\n Promise.all(profileLoaders)\n .then(() => {\n commit(\"map/cutToolEnabled\", false, { root: true });\n const los3 = rootGetters[\"map/openLayersMap\"]().getLayer(\n \"FAIRWAYDIMENSIONSLOS3\"\n );\n los3.getSource().forEachFeatureIntersectingExtent(\n profileLine\n .clone()\n .transform(\"EPSG:4326\", \"EPSG:3857\")\n .getExtent(),\n feature => {\n const fairwayCoordinates = featureToFairwayCoordinates(\n feature,\n profileLine\n );\n let fairwayData = {\n coordinates: fairwayCoordinates,\n los: 3\n };\n if (fairwayCoordinates.length > 0) {\n commit(\"addFairwayData\", fairwayData);\n }\n }\n );\n const los2 = rootGetters[\"map/openLayersMap\"]().getLayer(\n \"FAIRWAYDIMENSIONSLOS2\"\n );\n los2.getSource().forEachFeatureIntersectingExtent(\n profileLine\n .clone()\n .transform(\"EPSG:4326\", \"EPSG:3857\")\n .getExtent(),\n feature => {\n let fairwayCoordinates = featureToFairwayCoordinates(\n feature,\n profileLine\n );\n let fairwayData = {\n coordinates: fairwayCoordinates,\n los: 2\n };\n if (fairwayCoordinates.length > 0) {\n commit(\"addFairwayData\", fairwayData);\n }\n }\n );\n const los1 = rootGetters[\"map/openLayersMap\"]().getLayer(\n \"FAIRWAYDIMENSIONSLOS1\"\n );\n los1.getSource().forEachFeatureIntersectingExtent(\n profileLine\n .clone()\n .transform(\"EPSG:4326\", \"EPSG:3857\")\n .getExtent(),\n feature => {\n const fairwayCoordinates = featureToFairwayCoordinates(\n feature,\n profileLine\n );\n let fairwayData = {\n coordinates: fairwayCoordinates,\n los: 1\n };\n if (fairwayCoordinates.length > 0) {\n commit(\"addFairwayData\", fairwayData);\n }\n }\n );\n resolve();\n })\n .catch(error => {\n const { status, data } = error.response;\n displayError({\n title: \"Backend Error\",\n message: `${status ? status + \":\" : \"\"} ${data.message || data}`\n });\n })\n .finally(() => {\n commit(\"application/paneRotate\", 1, { root: true });\n if (state.additionalSurvey) {\n commit(\n \"application/paneSetup\",\n \"COMPARESURVEYS_FAIRWAYPROFILE\",\n { root: true }\n );\n } else {\n commit(\"application/paneSetup\", \"FAIRWAYPROFILE\", {\n root: true\n });\n }\n commit(\"profileLoading\", false);\n });\n }\n });\n },\n previousCuts({ commit, rootState }) {\n const previousCuts =\n JSON.parse(localStorage.getItem(\"previousCuts\")) || [];\n commit(\n \"previousCuts\",\n previousCuts\n .filter(cut => {\n return (\n cut.bottleneckId === rootState.bottlenecks.selectedBottleneck\n );\n })\n .sort((a, b) => (a.timestamp < b.timestamp ? 1 : -1))\n );\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Markus Kottländer \n * Thomas Junk \n */\nimport { HTTP } from \"@/lib/http\";\nimport { WFS } from \"ol/format\";\nimport { compareAsc } from \"date-fns\";\nimport { displayError } from \"@/lib/errors\";\n// initial state\nconst init = () => {\n return {\n bottlenecks: [],\n bottlenecksList: [],\n selectedBottleneck: null,\n surveys: [],\n selectedSurvey: null,\n surveysLoading: false,\n bottleneckForPrint: null,\n soundingInfo: null\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n limitingFactorsPerBottleneck: state => {\n if (state.bottlenecks.length === 0) return {};\n return state.bottlenecks.reduce((o, n) => {\n o[n.properties.bottleneck_id] = n.properties.limiting;\n return o;\n }, {});\n },\n bottlenecksForDisplay: state => {\n const names = {};\n const doubleNames = {};\n const bottlenecks = state.bottlenecksList.map(bn => {\n const name = bn.properties.name || bn.properties.objnam;\n if (!names[name]) {\n names[name] = name;\n } else {\n doubleNames[name] = name;\n }\n return bn;\n });\n return bottlenecks.map(bn => {\n const name = bn.properties.name || bn.properties.objnam;\n if (doubleNames[name]) {\n bn.properties.displayName = `${name} [${bn.properties.bottleneck_id}]`;\n } else {\n bn.properties.displayName = name;\n }\n return bn;\n });\n },\n orderedBottlenecks: state => {\n const groupedBottlenecks = {};\n const orderedGroups = {};\n // group bottlenecks by cc\n state.bottlenecksList.forEach(bn => {\n let cc = bn.properties.responsible_country;\n if (groupedBottlenecks.hasOwnProperty(cc)) {\n groupedBottlenecks[cc].push(bn);\n } else {\n groupedBottlenecks[cc] = [bn];\n }\n });\n\n // order groups by cc\n Object.keys(groupedBottlenecks)\n .sort()\n .forEach(cc => {\n const names = {};\n const doubleNames = {};\n groupedBottlenecks[cc].forEach(bn => {\n const name = bn.properties.name || bn.properties.objnam;\n if (!names[name]) {\n names[name] = name;\n } else {\n doubleNames[name] = name;\n }\n });\n groupedBottlenecks[cc].forEach(bn => {\n const name = bn.properties.name || bn.properties.objnam;\n if (doubleNames[name]) {\n bn.properties.displayName = `${name} [${bn.properties.bottleneck_id}]`;\n } else {\n bn.properties.displayName = name;\n }\n });\n orderedGroups[cc] = groupedBottlenecks[cc];\n });\n\n return orderedGroups;\n }\n },\n mutations: {\n setSoundingInfo: (state, data) => {\n state.soundingInfo = data;\n },\n setBottleneckForPrint: (state, bottleneck) => {\n state.bottleneckForPrint = bottleneck;\n },\n setBottlenecks: (state, bottlenecks) => {\n state.bottlenecks = bottlenecks;\n },\n setBottlenecksList: (state, bottlenecksList) => {\n state.bottlenecksList = bottlenecksList;\n },\n setSelectedBottleneck: (state, value) => {\n state.selectedBottleneck = value;\n },\n setSurveys(state, surveys) {\n state.surveys = surveys;\n },\n setSelectedSurveyByDate(state, date) {\n const survey = state.surveys.filter(x => x.date_info === date)[0];\n state.selectedSurvey = survey;\n },\n setFirstSurveySelected(state) {\n state.selectedSurvey = state.surveys[0];\n },\n selectedSurvey(state, survey) {\n state.selectedSurvey = survey;\n },\n surveysLoading: (state, loading) => {\n state.surveysLoading = loading;\n }\n },\n actions: {\n setSelectedBottleneck({ state, commit, rootState }, id) {\n return new Promise((resolve, reject) => {\n if (id !== state.selectedBottleneck) {\n commit(\"selectedSurvey\", null);\n commit(\"fairwayprofile/additionalSurvey\", null, { root: true });\n commit(\"fairwayprofile/clearCurrentProfile\", null, { root: true });\n commit(\"map/cutToolEnabled\", false, { root: true });\n rootState.map.openLayersMaps.forEach(m => {\n m.getLayer(\"CUTTOOL\")\n .getSource()\n .clear();\n });\n }\n commit(\"setSelectedBottleneck\", id);\n if (id) {\n commit(\"surveysLoading\", true);\n HTTP.get(\"/surveys?id=\" + encodeURIComponent(id), {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n })\n .then(response => {\n const surveys = response.data.surveys.sort((a, b) =>\n a.date_info < b.date_info ? 1 : -1\n );\n commit(\"setSurveys\", surveys);\n commit(\"setFirstSurveySelected\");\n resolve(response);\n })\n .catch(error => {\n commit(\"setSurveys\", []);\n commit(\"selectedSurvey\", null);\n const { status, data } = error.response;\n displayError({\n title: \"Backend Error\",\n message: `${status}: ${data.message || data}`\n });\n reject(error);\n })\n .finally(() => commit(\"surveysLoading\", false));\n } else {\n commit(\"setSurveys\", []);\n resolve();\n }\n });\n },\n loadBottlenecksList({ commit }) {\n return new Promise((resolve, reject) => {\n var bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({\n srsName: \"EPSG:4326\",\n featureNS: \"gemma\",\n featurePrefix: \"gemma\",\n featureTypes: [\"bottleneck_overview\"],\n outputFormat: \"application/json\"\n });\n HTTP.post(\n \"/internal/wfs\",\n new XMLSerializer().serializeToString(\n bottleneckFeatureCollectionRequest\n ),\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n }\n )\n .then(response => {\n commit(\"setBottlenecksList\", response.data.features);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadBottlenecks({ commit }) {\n return new Promise((resolve, reject) => {\n var bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({\n srsName: \"EPSG:4326\",\n featureNS: \"gemma\",\n featurePrefix: \"gemma\",\n featureTypes: [\"bottlenecks_geoserver\"],\n outputFormat: \"application/json\",\n propertyNames: [\n \"bottleneck_id\",\n \"objnam\",\n \"responsible_country\",\n \"limiting\",\n \"reference_water_levels\"\n ]\n });\n HTTP.post(\n \"/internal/wfs\",\n new XMLSerializer().serializeToString(\n bottleneckFeatureCollectionRequest\n ),\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n }\n )\n .then(response => {\n // Filter bottlenecks to get them unique with the latest time for each one.\n const bottlenecks = response.data.features;\n let btnIds = [],\n filteredBottlenceks = [];\n bottlenecks.forEach(btn => {\n const btnName = btn.properties.bottleneck_id;\n if (btnIds.indexOf(btnName) === -1) {\n btnIds.push(btnName);\n filteredBottlenceks.push(btn);\n } else {\n let btnToCompare = filteredBottlenceks.find(\n b => b.properties.bottleneck_id === btnName\n );\n if (\n compareAsc(\n btn.properties.date_info,\n btnToCompare.properties.date_info\n ) === 1\n ) {\n const index = filteredBottlenceks.findIndex(\n x => x.properties.bottleneck_id === btnName\n );\n filteredBottlenceks[index] = btn;\n }\n }\n });\n commit(\"setBottlenecks\", filteredBottlenceks);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Markus Kottländer \n */\nimport Vue from \"vue\";\nimport { HTTP } from \"@/lib/http\";\nimport { WFS } from \"ol/format\";\nimport {\n isPast,\n startOfDay,\n endOfDay,\n format,\n isBefore,\n addMinutes\n} from \"date-fns\";\n\nlet dateFrom = new Date();\ndateFrom.setDate(dateFrom.getDate() - 30);\nlet dateTo = new Date();\ndateTo.setDate(dateTo.getDate() + 3);\n\nconst init = () => {\n return {\n gauges: [],\n selectedGaugeISRS: null,\n waterlevels: [],\n waterlevelsCSV: \"\",\n longtermWaterlevels: [],\n longtermInterval: [],\n yearWaterlevels: [],\n nashSutcliffe: null,\n nashSutcliffeCache: {},\n dateFrom: dateFrom,\n dateTo: dateTo,\n yearCompare: new Date().getFullYear()\n };\n};\n\nexport default {\n init,\n namespaced: true,\n state: init(),\n getters: {\n selectedGauge: state => {\n return state.gauges.find(\n g => g.properties.isrs_code === state.selectedGaugeISRS\n );\n }\n },\n mutations: {\n addNSCtoCache: (state, entry) => {\n const { isrsCode, nsc, timestamp } = entry;\n Vue.set(state.nashSutcliffeCache, isrsCode, {\n nsc,\n timestamp\n });\n },\n gauges: (state, gauges) => {\n state.gauges = gauges;\n },\n selectedGaugeISRS: (state, isrs) => {\n state.selectedGaugeISRS = isrs;\n },\n waterlevels: (state, data) => {\n state.waterlevels = data;\n },\n waterlevelsCSV: (state, data) => {\n state.waterlevelsCSV = data;\n },\n longtermWaterlevels: (state, data) => {\n state.longtermWaterlevels = data;\n },\n longtermInterval: (state, interval) => {\n state.longtermInterval = interval;\n },\n yearWaterlevels: (state, data) => {\n state.yearWaterlevels = data;\n },\n nashSutcliffe: (state, data) => {\n state.nashSutcliffe = data;\n },\n deleteNashSutcliffeCache: state => {\n state.nashSutcliffeCache = {};\n },\n dateFrom: (state, dateFrom) => {\n state.dateFrom = dateFrom;\n },\n dateTo: (state, dateTo) => {\n state.dateTo = dateTo;\n },\n yearCompare: (state, year) => {\n state.yearCompare = year;\n }\n },\n actions: {\n getNashSutcliffeForISRS: ({ state, commit }, isrsCode) => {\n return new Promise((resolve, reject) => {\n const now = new Date();\n let nashSutcliffe = state.nashSutcliffeCache[isrsCode];\n if (nashSutcliffe) {\n const { timestamp, nsc } = nashSutcliffe;\n const isRecent = isBefore(now, addMinutes(timestamp, 15));\n if (isRecent) {\n resolve(nsc);\n return;\n }\n }\n HTTP.get(`/data/nash-sutcliffe/${isrsCode}`, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n nashSutcliffe = response.data;\n commit(\"addNSCtoCache\", {\n isrsCode,\n nsc: nashSutcliffe,\n timestamp: now\n });\n resolve(nashSutcliffe);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n setSelectedGaugeISRS: ({ commit, state }, isrs) => {\n if (state.selectedGaugeISRS !== isrs) {\n commit(\"selectedGaugeISRS\", isrs);\n }\n },\n selectedGaugeISRS: ({ commit, dispatch, state }, isrs) => {\n if (state.selectedGaugeISRS !== isrs) {\n commit(\"selectedGaugeISRS\", isrs);\n commit(\"application/showGauges\", true, { root: true });\n dispatch(\"loadWaterlevels\");\n dispatch(\"loadLongtermWaterlevels\");\n dispatch(\"loadYearWaterlevels\");\n dispatch(\"loadNashSutcliffe\");\n }\n },\n loadGauges: ({ commit }) => {\n return new Promise((resolve, reject) => {\n var gaugesFeatureCollectionRequest = new WFS().writeGetFeature({\n srsName: \"EPSG:4326\",\n featureNS: \"gemma\",\n featurePrefix: \"gemma\",\n featureTypes: [\"gauges_geoserver\"],\n outputFormat: \"application/json\"\n });\n HTTP.post(\n \"/internal/wfs\",\n new XMLSerializer().serializeToString(gaugesFeatureCollectionRequest),\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n }\n )\n .then(response => {\n commit(\"gauges\", response.data.features);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadWaterlevels({ state, commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\n `/data/waterlevels/${\n state.selectedGaugeISRS\n }?from=${encodeURIComponent(\n format(startOfDay(state.dateFrom), \"YYYY-MM-DDTHH:mm:ssZ\")\n )}&to=${encodeURIComponent(\n format(endOfDay(state.dateTo), \"YYYY-MM-DDTHH:mm:ssZ\")\n )}`,\n {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n }\n )\n .then(response => {\n commit(\"waterlevelsCSV\", response.data);\n let data = response.data\n .split(\"\\n\")\n // remove empty rows and rows starting with #\n .filter(wl => wl && wl[0] !== \"#\")\n .map(wl => {\n wl = wl.split(\",\");\n return {\n date: new Date(wl[0]),\n waterlevel: Number(wl[1]),\n min: Number(wl[2]),\n max: Number(wl[3]),\n predicted: wl[4] === \"f\" ? false : true\n };\n })\n .filter(wl => !(wl.predicted && isPast(wl.date)));\n data = data.sort((a, b) => a.date - b.date);\n commit(\"waterlevels\", data);\n resolve(data);\n })\n .catch(error => {\n commit(\"waterlevels\", []);\n reject(error);\n });\n });\n },\n loadLongtermWaterlevels({ state, commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(`/data/longterm-waterlevels/${state.selectedGaugeISRS}`, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n const now = new Date();\n let data = response.data.split(\"\\n\");\n // get result interval from first line\n let interval = data[0]\n .split(\",\")[0]\n .split(\" \")[1]\n .split(\"-\")\n .map(y => Number(y));\n if (interval[0] === interval[1]) interval = [interval[0]];\n commit(\"longtermInterval\", interval);\n data = data\n // remove empty rows and rows starting with #\n .filter(wl => wl && wl[0] !== \"#\")\n .map(wl => {\n wl = wl.split(\",\");\n let dayAndMonth = wl[0].split(\"-\").map(n => Number(n));\n let date = new Date(\n now.getFullYear(),\n dayAndMonth[1] - 1,\n dayAndMonth[0]\n );\n return {\n date: date,\n min: Number(wl[1]),\n max: Number(wl[2]),\n mean: Number(wl[3]),\n median: Number(wl[4]),\n q25: Number(wl[5]),\n q75: Number(wl[6])\n };\n });\n data = data.sort((a, b) => a.date - b.date);\n commit(\"longtermWaterlevels\", data);\n resolve(data);\n })\n .catch(error => {\n commit(\"longtermWaterlevels\", []);\n reject(error);\n });\n });\n },\n loadYearWaterlevels({ state, commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\n `/data/year-waterlevels/${state.selectedGaugeISRS}/${state.yearCompare}`,\n {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n }\n )\n .then(response => {\n const now = new Date();\n let data = response.data\n .split(\"\\n\")\n // remove empty rows and rows starting with #\n .filter(wl => wl && wl[0] !== \"#\")\n .map(wl => {\n wl = wl.split(\",\");\n let dayAndMonth = wl[0].split(\"-\").map(n => Number(n));\n let date = new Date(\n now.getFullYear(),\n dayAndMonth[1] - 1,\n dayAndMonth[0]\n );\n return {\n date: date,\n mean: Number(wl[1])\n };\n });\n data = data.sort((a, b) => a.date - b.date);\n commit(\"yearWaterlevels\", data);\n resolve(data);\n })\n .catch(error => {\n commit(\"yearWaterlevels\", []);\n reject(error);\n });\n });\n },\n loadNashSutcliffe({ state, commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(`/data/nash-sutcliffe/${state.selectedGaugeISRS}`, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"nashSutcliffe\", response.data);\n resolve(response.data);\n })\n .catch(error => {\n commit(\"nashSutcliffe\", null);\n reject(error);\n });\n });\n },\n loadNashSutcliffeForOverview(context, isrsCode) {\n return new Promise((resolve, reject) => {\n HTTP.get(`/data/nash-sutcliffe/${isrsCode}`, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n resolve(response.data);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n }\n};\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\n\nimport Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport application from \"./application\";\nimport user from \"./user\";\nimport usermanagement from \"./usermanagement\";\nimport map from \"./map\";\nimport { fairwayavailability } from \"./fairwayavailability\";\nimport fairwayprofile from \"./fairwayprofile\";\nimport bottlenecks from \"./bottlenecks\";\nimport { imports } from \"./imports\";\nimport { importschedule } from \"./importschedule\";\nimport gauges from \"./gauges\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n mutations: {\n reset() {\n this.replaceState({\n application: application.init(),\n fairwayavailability: fairwayavailability.init(),\n fairwayprofile: fairwayprofile.init(),\n imports: imports.init(),\n importschedule: importschedule.init(),\n bottlenecks: bottlenecks.init(),\n map: map.init(),\n user: user.init(),\n usermanagement: usermanagement.init(),\n gauges: gauges.init()\n });\n }\n },\n modules: {\n application,\n fairwayavailability,\n fairwayprofile,\n imports,\n importschedule,\n bottlenecks,\n map,\n user,\n usermanagement,\n gauges\n }\n});\n","import { render, staticRenderFns } from \"./UISpinnerOverlay.vue?vue&type=template&id=644c09ff\"\nimport script from \"./UISpinnerOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./UISpinnerOverlay.vue?vue&type=script&lang=js\"\nimport style0 from \"./UISpinnerOverlay.vue?vue&type=style&index=0&id=644c09ff&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Bernhard Reiter \n * Markus Kottländer \n */\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\nimport store from \"./store\";\nimport { sessionStillActive, toMillisFromString } from \"./lib/session\";\n\n/* facilitate codesplitting */\nconst Login = () => import(\"./components/Login\");\nconst Main = () => import(\"./components/Main\");\n\nVue.use(Router);\n\nconst router = new Router({\n routes: [\n {\n path: \"/login\",\n name: \"login\",\n component: Login\n },\n {\n path: \"/usermanagement\",\n name: \"usermanagement\",\n component: () => import(\"./components/usermanagement/Usermanagement\"),\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isSysadmin = store.getters[\"user/isSysAdmin\"];\n if (!isSysadmin) {\n next(\"/login\");\n } else {\n next();\n }\n }\n },\n {\n path: \"/logs\",\n name: \"logs\",\n component: () => import(\"./components/Logs\"),\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isSysadmin = store.getters[\"user/isSysAdmin\"];\n if (!isSysadmin) {\n next(\"/login\");\n } else {\n next();\n }\n }\n },\n {\n path: \"/systemconfiguration\",\n name: \"systemconfiguration\",\n component: () =>\n import(\"./components/systemconfiguration/Systemconfiguration\"),\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isWaterwayAdmin = store.getters[\"user/isWaterwayAdmin\"];\n if (!isWaterwayAdmin) {\n next(\"/login\");\n } else {\n next();\n }\n }\n },\n {\n path: \"/\",\n name: \"mainview\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n store.commit(\"application/searchQuery\", \"\");\n store.commit(\"application/showContextBox\", false);\n store.commit(\"application/contextBoxContent\", \"\");\n store.commit(\"application/showSearchbar\", false);\n next();\n }\n },\n {\n path: \"/bottlenecks\",\n name: \"bottlenecks\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n store.commit(\"application/searchQuery\", \"\");\n store.commit(\"application/showContextBox\", true);\n store.commit(\"application/contextBoxContent\", \"bottlenecks\");\n store.commit(\"application/showSearchbar\", true);\n next();\n }\n },\n {\n path: \"/imports/configuration\",\n name: \"importconfiguration\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isWaterwayAdmin = store.getters[\"user/isWaterwayAdmin\"];\n if (!isWaterwayAdmin) {\n next(\"/login\");\n } else {\n store.commit(\"application/searchQuery\", \"\");\n store.commit(\"application/showContextBox\", true);\n store.commit(\"application/contextBoxContent\", \"importconfiguration\");\n store.commit(\"application/showSearchbar\", true);\n next();\n }\n }\n },\n {\n path: \"/imports/overview/:id?\",\n name: \"importoverview\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isWaterwayAdmin = store.getters[\"user/isWaterwayAdmin\"];\n if (!isWaterwayAdmin) {\n next(\"/login\");\n } else {\n store.commit(\"application/showContextBox\", true);\n store.commit(\"application/contextBoxContent\", \"importoverview\");\n store.commit(\"application/showSearchbar\", true);\n next();\n }\n }\n },\n {\n path: \"/stretches\",\n name: \"stretches\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isSysadmin = store.getters[\"user/isSysAdmin\"];\n if (!isSysadmin) {\n next(\"/login\");\n } else {\n store.commit(\"application/searchQuery\", \"\");\n store.commit(\"application/showContextBox\", true);\n store.commit(\"application/contextBoxContent\", \"stretches\");\n store.commit(\"application/showSearchbar\", true);\n next();\n }\n }\n },\n {\n path: \"/sections\",\n name: \"sections\",\n component: Main,\n meta: {\n requiresAuth: true\n },\n beforeEnter: (to, from, next) => {\n const isWaterwayAdmin = store.getters[\"user/isWaterwayAdmin\"];\n if (!isWaterwayAdmin) {\n next(\"/login\");\n } else {\n store.commit(\"application/searchQuery\", \"\");\n store.commit(\"application/showContextBox\", true);\n store.commit(\"application/contextBoxContent\", \"sections\");\n store.commit(\"application/showSearchbar\", true);\n next();\n }\n }\n },\n {\n path: \"/fairwaydepth\",\n name: \"fairwaydepth\",\n component: () => import(\"./components/fairway/AvailableFairwayDepth\"),\n meta: {\n requiresAuth: true\n }\n },\n {\n path: \"*\",\n component: () => import(\"./components/PageNotFound\")\n }\n ]\n});\n\nrouter.beforeEach((to, from, next) => {\n const expiresFromPastSession = toMillisFromString(\n localStorage.getItem(\"expires\")\n );\n if (sessionStillActive(expiresFromPastSession)) {\n store.commit(\"user/setUser\", localStorage.getItem(\"user\"));\n store.commit(\"user/setExpires\", expiresFromPastSession);\n store.commit(\"user/setRoles\", localStorage.getItem(\"roles\"));\n store.commit(\"user/setIsAuthenticate\", true);\n // load settings only if not present yet\n if (Object.keys(store.state.application.config).length) {\n next();\n } else {\n store.dispatch(\"application/loadConfig\").then(() => next());\n }\n } else {\n store.commit(\"reset\");\n store.commit(\"user/clearAuth\");\n const requiresAuth = to.matched.some(record => record.meta.requiresAuth);\n const redirectToLogin = requiresAuth && !store.state.user.isAuthenticated;\n if (redirectToLogin) {\n localStorage.setItem(\"tempRoute\", to.path);\n next(\"/login\");\n } else {\n next();\n }\n }\n});\n\nexport default router;\n","import * as browserLanguage from \"locale2\";\n\n// planned also RS, BiH, UA\nconst supportedLanguages = {\n en_GB: \"British English\",\n de_AT: \"Deutsch\",\n sk_SK: \"slovenčina\",\n hu_HU: \"Magyar\",\n hr_HR: \"Hrvatska\",\n bg_BG: \"български\",\n ro_RO: \"Română\"\n};\n\nlet isAvailableLanguage = Object.keys(supportedLanguages).filter(language => {\n return browserLanguage.replace(\"-\", \"_\") === language;\n});\n\nif (isAvailableLanguage.length === 0) {\n isAvailableLanguage = Object.keys(supportedLanguages).filter(language => {\n return language.substr(0, 2) === browserLanguage.substr(0, 2);\n });\n}\n\nlet defaultLanguage =\n isAvailableLanguage.length > 0 ? isAvailableLanguage[0] : \"en_GB\";\n\nexport { supportedLanguages, defaultLanguage };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"main\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"id\":\"app\"}},[(_vm.isAuthenticated)?_c('div',{staticClass:\"d-flex flex-column userinterface\"},[_c('div',{staticClass:\"boxes d-flex p-2\"},[_c('div',{staticClass:\"d-flex\"},[_c('Sidebar'),_c('div',{class:_vm.searchContainer},[(_vm.isMapVisible)?_c('Search'):_vm._e(),(_vm.isMapVisible)?_c('Contextbox'):_vm._e()],1)],1),_c('div',{staticClass:\"ml-auto d-flex\"},[_c('div',{staticClass:\"d-flex flex-column align-items-end\"},[(_vm.isMapVisible)?_c('Profiles'):_vm._e(),(_vm.isMapVisible)?_c('Gauges'):_vm._e(),(_vm.isMapVisible)?_c('Pdftool'):_vm._e(),(_vm.isMapVisible)?_c('AvailableFairwayDepthDialogue'):_vm._e()],1),_c('div',{staticClass:\"d-flex flex-column align-items-end\"},[_c('keep-alive',[(_vm.isMapVisible)?_c('Identify'):_vm._e()],1),(_vm.isMapVisible)?_c('Layers'):_vm._e()],1),(_vm.isMapVisible)?_c('Toolbar'):_vm._e()],1)]),_c('MapPopup'),(_vm.isMapVisible)?_c('TimeSlider'):_vm._e()],1):_vm._e(),_c('router-view'),_c('vue-snotify'),_c('Popup'),_c('KeyboardHandler'),_c('div',{staticStyle:{\"position\":\"absolute\",\"z-index\":\"-1\",\"top\":\"600px\"},attrs:{\"id\":\"offScreen\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=54fd1233&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=54fd1233&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54fd1233\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('h6',{class:['box-header', { small: _vm.small }]},[_c('span',{staticClass:\"box-title\"},[(_vm.icon)?_c('font-awesome-icon',{staticClass:\"box-icon\",attrs:{\"icon\":_vm.icon,\"fixed-width\":\"\"}}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")],1),_c('div',{staticClass:\"d-flex flex-row\"},[(_vm.checkBox)?_c('span',{staticClass:\"box-control\",staticStyle:{\"cursor\":\"default\"}},[_c('input',{staticClass:\"checkbox-header\",attrs:{\"id\":\"checkboxID\",\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkBox.value},on:{\"change\":_vm.checkBox.callback}}),_c('label',{staticClass:\"ml-1 small mb-0 checkbox-header\",attrs:{\"for\":\"checkboxID\"}},[_vm._v(\"\\n \"+_vm._s(_vm.checkBox.label)+\"\\n \")])]):_vm._e(),_vm._l((_vm.actions),function(action,index){return _c('span',{key:index,staticClass:\"box-control\",on:{\"click\":action.callback}},[_c('font-awesome-icon',{attrs:{\"icon\":action.icon,\"spin\":action.icon === 'spinner'}})],1)}),(_vm.closeCallback)?_c('span',{staticClass:\"box-control\",on:{\"click\":_vm.closeCallback}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\"}})],1):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UIBoxHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UIBoxHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UIBoxHeader.vue?vue&type=template&id=154620da\"\nimport script from \"./UIBoxHeader.vue?vue&type=script&lang=js\"\nexport * from \"./UIBoxHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./UIBoxHeader.vue?vue&type=style&index=0&id=154620da&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:['table-header row no-gutters bg-light', { sortable: _vm.sortable }]},[_vm._l((_vm.columns),function(column){return _c('a',{key:column.id,class:[\n 'd-inline-block py-1 text-center truncate small ' +\n (column.class || '') +\n ' ' +\n (column.disableSorting ? ' sorting-disabled' : ''),\n { active: _vm.sortColumn === column.id }\n ],style:(`width: ${column.width};`),on:{\"click\":function($event){$event.preventDefault();!column.disableSorting && _vm.sortTable(column.id)}}},[(_vm.sortable && !column.disableSorting)?_c('span',{style:('opacity: ' + (_vm.sortColumn === column.id ? '1' : '0.3'))},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.sortIcon(column.id),\"fixed-width\":\"\"}})],1):_vm._e(),(column.icon)?_c('font-awesome-icon',{attrs:{\"icon\":column.icon,\"fixed-width\":\"\"}}):_vm._e(),(column.title)?_c('span',[_vm._v(\"\\n \"+_vm._s(column.title)+\"\\n \")]):_vm._e()],1)}),(_vm.extraColumnForButtons)?_c('div',{staticClass:\"col\"}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UITableHeader.vue?vue&type=template&id=d46da0d0\"\nimport script from \"./UITableHeader.vue?vue&type=script&lang=js\"\nexport * from \"./UITableHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./UITableHeader.vue?vue&type=style&index=0&id=d46da0d0&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.data.length)?_c('div',{staticClass:\"table-body text-left small\",style:('overflow-y: auto; max-height: ' + _vm.maxHeight)},_vm._l((_vm.data),function(item,index){return _c('div',{key:_vm.key(index),class:['row-container border-top', { active: _vm.isActive(item) }]},[_c('div',{staticClass:\"row mx-0\"},[_vm._t(\"row\",null,{\"item\":item,\"index\":index})],2),(_vm.isActive(item))?_c('div',{staticClass:\"expand\"},[_vm._t(\"expand\",null,{\"item\":item,\"index\":index})],2):_vm._e()])}),0):_c('div',{staticClass:\"small text-center py-3 border-top\"},[_c('translate',[_vm._v(\"No results.\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableBody.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableBody.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UITableBody.vue?vue&type=template&id=005c9eeb\"\nimport script from \"./UITableBody.vue?vue&type=script&lang=js\"\nexport * from \"./UITableBody.vue?vue&type=script&lang=js\"\nimport style0 from \"./UITableBody.vue?vue&type=style&index=0&id=005c9eeb&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classesString,on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.iconString,\"spin\":_vm.loading,\"fixed-width\":\"\"}}),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UISpinnerButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UISpinnerButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UISpinnerButton.vue?vue&type=template&id=08b01f3a\"\nimport script from \"./UISpinnerButton.vue?vue&type=script&lang=js\"\nexport * from \"./UISpinnerButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\n\n// 3rd-party\nimport Vue from \"vue\";\nimport VTooltip from \"v-tooltip\";\nimport GetTextPlugin from \"vue-gettext\";\nimport Snotify, { SnotifyPosition } from \"vue-snotify\";\nimport VueClipboard from \"vue-clipboard2\";\nimport ToggleButton from \"vue-js-toggle-button\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\n\n// local\nimport router from \"@/router\";\nimport store from \"@/store\";\nimport translations from \"@/locale/translations.json\";\nimport filters from \"@/lib/filters\";\nimport { supportedLanguages, defaultLanguage } from \"./locale/languages\";\nimport App from \"@/components/App\";\nimport UIBoxHeader from \"@/components/ui/UIBoxHeader\";\nimport UITableHeader from \"@/components/ui/UITableHeader\";\nimport UITableBody from \"@/components/ui/UITableBody\";\nimport UISpinnerOverlay from \"@/components/ui/UISpinnerOverlay\";\nimport UISpinnerButton from \"@/components/ui/UISpinnerButton\";\n\n// styles\nimport \"../node_modules/bootstrap/dist/css/bootstrap.min.css\";\nimport \"../node_modules/animate.css/animate.min.css\";\nimport \"../node_modules/ol/ol.css\";\nimport \"../node_modules/highlight.js/styles/paraiso-dark.css\";\nimport \"../node_modules/vue-snotify/styles/simple.css\";\nimport \"./assets/application.css\";\n\n// fontawesome5 icons\nimport {\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faAngleUp,\n faAngleDoubleRight,\n faBars,\n faBook,\n faCaretUp,\n faCaretDown,\n faChartArea,\n faChartBar,\n faChartLine,\n faCheck,\n faCity,\n faClipboardCheck,\n faClock,\n faCloudUploadAlt,\n faCopy,\n faDownload,\n faDrawPolygon,\n faExclamationTriangle,\n faEye,\n faEyeSlash,\n faFilePdf,\n faFolderPlus,\n faFrownOpen,\n faInfo,\n faLayerGroup,\n faLink,\n faMapMarkedAlt,\n faMinus,\n faObjectGroup,\n faPaintBrush,\n faPaperPlane,\n faPencilAlt,\n faPlay,\n faPlus,\n faPowerOff,\n faRoad,\n faRuler,\n faRulerVertical,\n faSearch,\n faShip,\n faSort,\n faSortAmountDown,\n faSortAmountUp,\n faSortDown,\n faSortUp,\n faSpinner,\n faStar,\n faTasks,\n faTimes,\n faTint,\n faTrash,\n faUnlink,\n faUpload,\n faUser,\n faUsersCog,\n faWater,\n faWrench,\n faRedo,\n faUndo,\n faSync,\n faCrosshairs\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n faWindowMinimize,\n faWindowMaximize\n} from \"@fortawesome/free-regular-svg-icons\";\nimport { faAdn } from \"@fortawesome/free-brands-svg-icons\";\n\nlibrary.add(\n faAdn,\n faAngleDown,\n faAngleLeft,\n faAngleRight,\n faAngleUp,\n faAngleDoubleRight,\n faBars,\n faBook,\n faCaretUp,\n faCaretDown,\n faChartArea,\n faChartBar,\n faChartLine,\n faCheck,\n faCity,\n faClipboardCheck,\n faClock,\n faCloudUploadAlt,\n faCopy,\n faDownload,\n faDrawPolygon,\n faExclamationTriangle,\n faEye,\n faEyeSlash,\n faFilePdf,\n faFolderPlus,\n faFrownOpen,\n faInfo,\n faLayerGroup,\n faLink,\n faMapMarkedAlt,\n faMinus,\n faObjectGroup,\n faPaintBrush,\n faPaperPlane,\n faPencilAlt,\n faPlay,\n faPlus,\n faPowerOff,\n faRoad,\n faRuler,\n faRulerVertical,\n faSearch,\n faShip,\n faSort,\n faSortDown,\n faSortUp,\n faSortAmountDown,\n faSortAmountUp,\n faSpinner,\n faStar,\n faTasks,\n faTimes,\n faTint,\n faTrash,\n faUnlink,\n faUpload,\n faUser,\n faUsersCog,\n faWater,\n faWrench,\n faRedo,\n faUndo,\n faSync,\n faWindowMinimize,\n faWindowMaximize,\n faCrosshairs\n);\n// register plugins\nVue.use(GetTextPlugin, {\n translations: translations,\n availableLanguages: supportedLanguages,\n defaultLanguage: defaultLanguage,\n silent: process.env.VUE_APP_SILENCE_TRANSLATIONWARNINGS\n});\nVue.use(Snotify, { toast: { position: SnotifyPosition.centerBottom } });\nVue.use(ToggleButton);\nVue.use(VTooltip);\nVue.use(VueClipboard);\n\n// register global components\nVue.component(\"font-awesome-icon\", FontAwesomeIcon);\nVue.component(\"UIBoxHeader\", UIBoxHeader);\nVue.component(\"UITableHeader\", UITableHeader);\nVue.component(\"UITableBody\", UITableBody);\nVue.component(\"UISpinnerOverlay\", UISpinnerOverlay);\nVue.component(\"UISpinnerButton\", UISpinnerButton);\n\n// register global filters\nfor (let name in filters) Vue.filter(name, filters[name]);\n\n// global vue config\nVue.config.productionTip = false;\n\nconst app = new Vue({\n router,\n store,\n render: h => h(App)\n}).$mount(\"#app\");\n\nexport default app;\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UISpinnerOverlay.vue?vue&type=style&index=0&id=644c09ff&prod&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UIBoxHeader.vue?vue&type=style&index=0&id=154620da&prod&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{staticClass:\"spinner-overlay\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"spinner\",\"spin\":\"\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQCAYAAAAiYZ4HAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wUUDx0Qohi3cQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAeUlEQVQoz2OcdvfzfwY0oLV1J4PioWMM2AATA4mA9hpYGLEIMjIwMDD8x6EBm2IWXmYGNkk24jQwMDAwsEmyMvDqsROvgZHxP9Rd1PA0Aw5PMzH+I07DfwYGhtff+RhYPsgQb8Py8zYM5zfbEa+BlekvAwcL01BJSwCMSRL+xj0eTQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA8CAYAAABvnTosAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGzSURBVEiJ7ZYxSwNBEIW/1XhCkko9hChCROxsbAVtrMQqdUREmxTprBR/gNgFK/+AClraaKGCBCISbGwE24Ao2lzwXKJjcfFkz8TkRBDlBoa7Yee9fbMzLAu/bcr7iAWMhcSWQUn9X4ZAJKR3A8RM0h3gwo8sq5PV1Wkj4+Cgl/Pz8aCadwVzAvieTCYlaPn8kaGgI2Tdnywi+AECYw7SaZtUauJjMRajWCwagErFacTjzUGhcGj03HEcYy48X4/m4P8R1M2bA8takEQi4btt21KtVg1fXj5ufiNpXUPrqh8rpYjH48ZWlmWK/v0ziAgCbVxcnGJ2NuPHruuSyWQMwNXVDDAZ5IkulL9NYMzB2dk1XV03fqy1JpfLGYBSqZ9y+RNP+w+MlZXT/zoHNcANgXvGO6f3LqgKyAYsrcGUn+W6HWSzJwby8nJAgAIoHSAVG+SpjQemBkk1USabLcCvIFtflCbDILV6YiPwC8hoi/OR7S8U7LUAA8ggyGNAxSuIAzLSBgGAZBvsPt8m2CfZrXflCWQ/JBhAekBuQe5A+pplxZotgHrwSqET1P03FET2d+wNVYxcVrrUeEkAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAfCAYAAACGVs+MAAAABmJLR0QA/wAAAAAzJ3zzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wMGCwcdHt3zfwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADr0lEQVRIx7WXT0gcVxjAfzM7o+kapykbQcwhC6lrsSsubjch5J/VU4XEk0khLXrqzVvIKdAKpedC8ZJre+ghFzGQQvyzQYNJCcExKslsD5pEQdcxYLJmV12/Hl7ctah1Z6IffOzbZea97/d7b9/jafgIefHiBKur3+G63wIQCv1JMPiHVlc357Uvw08BrK52MTT0I3fumIhAR8eXtLR8AvzEYYc4jiX9/TPS1CQSCKhsahLp758Vx7G89qd7riCXa2dq6gSzs5DPq5ydhenpGnK59kMtQBzHIp3u5uFDg0wGAgGVmQyMjhqk091eLeie6W07hm3D+jpYlsr1dZiYANuOebWge6YfHjZxXSgvh4YGlUeOQDoNw8OmVwu6Z/rxcchm4fhxaGtTGQpBLge27dmC7ps+FoOWFpWxmG8Leon03zA52YhtK/pQSA1cW6uytdW3Bb0ketftZmSkjKUlKCuDaBTOni0uwnPnfFvQS6Kfnv6KiQlYW4Njx+DMGTh5EnRd5alTvi3oJdE/eFDO/Lyir6+HCxd4Z5qkUilSqRTvdN23Bb0kettWZJYF589DXR29t28Tj8eJx+P81tv7URb23vOTyVG5dk2kslKkokKktVVkcFAkl5NEIiGAAJJIJETyeZEnT0SuXFHPBoOqPTT09/9Z0P3QY5qYpll41DRN32tB33fu5+bANNXcX7wIVVWgaVhWEarQ9vGP0P3Q772ivFvQ/dADVFdXF97Z3vZqwdiXPhTalb6zs5OZmZlCe1cL4+MwN1e0UFXVDvy+ZwHiOBbz8/vSA4TD4cLA4XD4vxBbFgYHwXWLFhobu8Vx+rRIZGV3AyXSAySTSXp6egrfu7q6fFnQvc59yVHiWjD80AM0Nzfv2vZqwfhAX8WrVzcYGCjn9WswDHXMxmKqo+XlHf2HKyvpuny5+IPr7ixic1OdnPX1sLQEi4tw/75JNHpDHOcvLRJJKwOZzA8kk02MjcH79xAMqiIePYKpKe/6t0c2q/oqK4OVFXj8GAYGGrh69aY4zi1VwMLCde7d01lYABE1BU+fwrNnHzf4VmxsKDARePMG7t7VOH36e6LRXw1xHIvJyc9wXaVM09QLb98e8I1Gip+Li5BOf0o+/7mhRSIrMjY2QltbB3196oGjR9XKPQj6rVhbU/eHfB4uXYLa2mkCgX80AHn+/AuWl3/m5cuv2dgIUFGximGsfzhuD8qATjYbZHNTo6bGJhT6BdMc0XbshJA75Otl+fad8F+8a2Jkay5vMwAAAABJRU5ErkJggg==\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableHeader.vue?vue&type=style&index=0&id=d46da0d0&prod&lang=css\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UISpinnerOverlay.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UISpinnerOverlay.vue?vue&type=script&lang=js\"","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\nimport { HTTP } from \"@/lib/http\";\nimport app from \"@/main\";\nimport { displayError } from \"@/lib/errors\";\nimport { unsetLayerConfigs } from \"@/components/layers/layers\";\n\nconst logOff = () => {\n const hasToken = localStorage.getItem(\"token\");\n if (!hasToken) return;\n HTTP.get(\"/logout\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n })\n .catch(error => {\n const { status, data } = error.response;\n displayError({\n title: this.$gettext(\"Backend Error\"),\n message: `${status}: ${data.message || data}`\n });\n })\n .finally(() => {\n app.$snotify.clear();\n app.$store.commit(\"reset\");\n app.$store.commit(\"user/clearAuth\");\n app.$router.push(\"/login\");\n unsetLayerConfigs();\n });\n};\n\n/**\n * Compares whether session is current\n * based on the expiry information and the\n * current date\n *\n * @param {number} expiresFromPastSession\n */\nfunction sessionStillActive(expiresFromPastSession) {\n if (!expiresFromPastSession) return false;\n const now = Date.now();\n const stillActive = now < expiresFromPastSession;\n return stillActive;\n}\n/**\n * Converts a given unix time to Milliseconds\n *\n * @param {string} timestring\n */\nfunction toMillisFromString(timestring) {\n return timestring * 1000;\n}\n\nexport { logOff, sessionStillActive, toMillisFromString };\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n * Markus Kottländer \n */\n\nimport locale2 from \"locale2\";\n\nexport default {\n surveyDate(date) {\n return date\n ? new Date(date).toLocaleDateString(locale2, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\"\n })\n : \"\";\n },\n dateTime(date, hideTime) {\n if (!date) return \"\";\n const d = new Date(date);\n let dateString = d.toLocaleDateString(locale2, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\"\n });\n if (!hideTime) {\n dateString +=\n \" - \" +\n d.toLocaleTimeString(locale2, {\n hour12: false\n });\n }\n return dateString;\n },\n sortTable(data, sortColumn, sortDirection, page, pageSize) {\n // clone the array and leave the original intact\n let sortedData = data.filter(d => d);\n\n if (sortColumn && sortDirection) {\n sortedData.sort((a, b) => {\n let valB = sortColumn.split(\".\").reduce((o, i) => o[i], a) || \"\";\n let valA = sortColumn.split(\".\").reduce((o, i) => o[i], b) || \"\";\n\n if (valA > valB) return sortDirection === \"ASC\" ? -1 : 1;\n if (valA < valB) return sortDirection === \"ASC\" ? 1 : -1;\n\n return 0;\n });\n }\n\n if (page && pageSize) {\n let start = page * pageSize - pageSize;\n sortedData = sortedData.slice(start, start + pageSize);\n }\n\n return sortedData;\n },\n // converts cm to m and formats based on locale\n waterlevel(n) {\n return (n / 100).toLocaleString(locale2, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n });\n }\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UITableBody.vue?vue&type=style&index=0&id=005c9eeb&prod&lang=css\"","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\nimport app from \"@/main\";\n\nlet displayOptions = {\n timeout: 2500,\n showProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n oneAtTime: true,\n bodyMaxLength: 1024\n};\n\nconst displayError = ({ title, message, options }) => {\n if (!options) options = {};\n const mergedOptions = { ...displayOptions, ...options };\n app.$snotify.error(message, title, mergedOptions);\n};\n\nconst displayInfo = ({ title, message, options }) => {\n if (!options) options = {};\n const mergedOptions = { ...displayOptions, ...options };\n app.$snotify.info(message, title, mergedOptions);\n};\n\nexport { displayError, displayInfo };\n","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Raimund Renkert \n * Markus Kottländer \n */\n\n/*eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"_\" }]*/\n\nimport store from \"@/store/index\";\n\nconst getGauge = f => {\n if (f.getId().indexOf(\"bottlenecks\") > -1) {\n const GaugeProxy = (function(feature) {\n const gauge = feature.get(\"gauge_obj\");\n const get = function(propName) {\n if (gauge) return gauge.get(propName);\n return feature.get(propName);\n };\n return {\n get: get\n };\n })(f);\n return GaugeProxy;\n }\n return f;\n};\n\nconst calcForecastVsRealityForNSC = nsc => {\n const hasSamples =\n nsc && nsc.coeffs.reduce((sum, coeff) => sum + coeff.samples, 0);\n if (hasSamples) {\n const [nsc24h, _, nsc72h] = nsc.coeffs;\n // 24h < configured value\n if (\n nsc24h.samples &&\n nsc24h.value <\n store.state.application.config.gm_forecast_vs_reality_nsc_24h\n )\n return \"DANGER\";\n // 72h < configured value\n if (\n nsc72h.samples &&\n nsc72h.value <\n store.state.application.config.gm_forecast_vs_reality_nsc_72h\n )\n return \"WARNING\";\n // both > configured value\n return \"OK\";\n }\n // no data available\n return \"NEUTRAL\";\n};\n\nexport default {\n getGauge: getGauge,\n surveyRecency(bottleneck) {\n if (\n bottleneck.get(\"revisiting_time\") === null ||\n bottleneck.get(\"revisiting_time\") === 0\n ) {\n return \"NEUTRAL\";\n }\n if (bottleneck.get(\"date_max\") === null) {\n return \"DANGER\";\n }\n let revTime = bottleneck.get(\"revisiting_time\") * 30.5;\n let latest = Date.parse(bottleneck.get(\"date_max\").replace(\"Z\", \"\"));\n var diff = Math.floor((Date.now() - latest) / 86400000);\n let revTimeMultiplier =\n store.state.application.config.bn_revtime_multiplier;\n if (diff <= revTime) {\n return \"OK\";\n } else if (revTime < diff && diff <= revTime * revTimeMultiplier) {\n return \"WARNING\";\n } else if (revTime * revTimeMultiplier < diff) {\n return \"DANGER\";\n }\n },\n gmAvailability(feature) {\n let gauge = getGauge(feature);\n let gmDate = gauge.get(\"gm_measuredate\");\n let gmN = gauge.get(\"gm_n_14d\");\n if (\n gmDate !== undefined &&\n gmDate !== null &&\n // latest measurement within configured hours\n Date.parse(gmDate) >\n Date.now() -\n store.state.application.config.gm_latest_hours * 60 * 60 * 1000\n ) {\n // at least configured amount of measurements in last 14 days\n const valuesAtLeast = store.state.application.config.gm_min_values_14d;\n if (gmN !== undefined && gmN !== null && gmN >= valuesAtLeast) {\n return \"OK\";\n }\n return \"WARNING\";\n }\n return \"DANGER\";\n },\n forecastAccuracy(feature) {\n let gauge = getGauge(feature);\n let fa3d = gauge.get(\"forecast_accuracy_3d\");\n let fa1d = gauge.get(\"forecast_accuracy_1d\");\n if (typeof fa3d == \"number\" && typeof fa1d == \"number\") {\n if (fa1d > store.state.application.config.gm_forecast_offset_24h) {\n return \"DANGER\";\n } else if (fa3d > store.state.application.config.gm_forecast_offset_72h) {\n return \"WARNING\";\n } else {\n return \"OK\";\n }\n }\n return \"NEUTRAL\";\n },\n forecastVsReality(feature) {\n let gauge = getGauge(feature);\n let nsc = gauge.get(\"nsc_data\");\n return calcForecastVsRealityForNSC(nsc);\n },\n calcForecastVsRealityForNSC: calcForecastVsRealityForNSC\n};\n","import { GeoJSON, WFS } from \"ol/format\";\nimport { Icon, Stroke, Style } from \"ol/style\";\nimport {\n Image as ImageLayer,\n Tile as TileLayer,\n Vector as VectorLayer\n} from \"ol/layer\";\nimport {\n and as andFilter,\n equalTo,\n greaterThanOrEqualTo,\n lessThanOrEqualTo\n} from \"ol/format/filter\";\n\nimport { HTTP } from \"@/lib/http\";\nimport { ImageWMS as ImageSource } from \"ol/source\";\nimport OSM from \"ol/source/OSM\";\nimport Point from \"ol/geom/Point\";\nimport TileWMS from \"ol/source/TileWMS\";\nimport VectorSource from \"ol/source/Vector\";\nimport { bbox as bboxStrategy } from \"ol/loadingstrategy\";\nimport store from \"@/store/index\";\nimport { styleFactory } from \"./styles\";\n\nexport const buildVectorLoader = (\n featureRequestOptions,\n vectorSource,\n bboxStrategyDisabled,\n featurePostProcessor\n) => {\n // build a function to be used for VectorSource.setLoader()\n // make use of WFS().writeGetFeature to build the request\n // and use our HTTP library to actually do it\n // NOTE: the geometryName has to be given in featureRequestOptions if\n // bboxStrategy (default) is used\n featureRequestOptions.featureNS = \"gemma\";\n featureRequestOptions.featurePrefix = \"gemma\";\n featureRequestOptions.outputFormat = \"application/json\";\n return (extent, resolution, projection) => {\n if (!bboxStrategyDisabled) {\n featureRequestOptions.bbox = extent;\n }\n featureRequestOptions.srsName = projection.getCode();\n HTTP.post(\n \"/internal/wfs\",\n new XMLSerializer().serializeToString(\n new WFS().writeGetFeature(\n (function() {\n if (!vectorSource.get(\"useCurrentTime\")) {\n if (featureRequestOptions.filter) {\n for (let condition of featureRequestOptions.filter.conditions) {\n if (condition.propertyName == \"valid_from\") {\n condition.expression = store.state.application.refreshLayersTime.toISOString();\n }\n if (condition.propertyName == \"valid_to\") {\n condition.expression = store.state.application.refreshLayersTime.toISOString();\n }\n }\n }\n }\n return featureRequestOptions;\n })()\n )\n ),\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n }\n )\n .then(response => {\n try {\n const features = new GeoJSON().readFeatures(\n JSON.stringify(response.data)\n );\n if (featurePostProcessor) {\n features.map(f => featurePostProcessor(f, store, features));\n }\n vectorSource.addFeatures(features);\n } catch (error) {\n vectorSource.addFeatures([]);\n }\n })\n .catch(() => {\n vectorSource.removeLoadedExtent(extent);\n store.dispatch(\"application/reportBackendError\");\n });\n };\n};\n\n// SHARED LAYERS:\n// DRAW- and CUTLAYER are shared across maps. E.g. you want to see the cross cut\n// arrow on both maps when comparing surveys. So we don't need to initialize a\n// new VectorLayer object for each map. Instead we use these two constants so\n// that all maps use the same object.\nconst DRAWLAYER = new VectorLayer({\n id: \"DRAWTOOL\",\n label: \"Draw Tool\",\n visible: true,\n source: new VectorSource({ wrapX: false }),\n style: function(feature) {\n // adapted from OpenLayer's LineString Arrow Example\n var geometry = feature.getGeometry();\n var styles = [\n // linestring\n new Style({\n stroke: new Stroke({\n color: \"#369aca\",\n width: 2\n })\n })\n ];\n\n if (geometry.getType() === \"LineString\") {\n geometry.forEachSegment(function(start, end) {\n var dx = end[0] - start[0];\n var dy = end[1] - start[1];\n var rotation = Math.atan2(dy, dx);\n // arrows\n styles.push(\n new Style({\n geometry: new Point(end),\n image: new Icon({\n // we need to make sure the image is loaded by Vue Loader\n src: require(\"@/assets/linestring_arrow.png\"),\n // fiddling with the anchor's y value does not help to\n // position the image more centered on the line ending, as the\n // default line style seems to be slightly uncentered in the\n // anti-aliasing, but the image is not placed with subpixel\n // precision\n anchor: [0.75, 0.5],\n rotateWithView: true,\n rotation: -rotation\n })\n })\n );\n });\n }\n return styles;\n }\n});\n\nconst CUTLAYER = new VectorLayer({\n id: \"CUTTOOL\",\n label: \"Cut Tool\",\n visible: true,\n source: new VectorSource({ wrapX: false }),\n style: function(feature) {\n // adapted from OpenLayer's LineString Arrow Example\n var geometry = feature.getGeometry();\n var styles = [\n // linestring\n new Style({\n stroke: new Stroke({\n color: \"#FFFFFF\",\n width: 5,\n lineDash: [7, 7]\n })\n }),\n new Style({\n stroke: new Stroke({\n color: \"#333333\",\n width: 3,\n lineDash: [7, 7]\n })\n })\n ];\n\n if (geometry.getType() === \"LineString\") {\n geometry.forEachSegment(function(start, end) {\n var dx = end[0] - start[0];\n var dy = end[1] - start[1];\n var rotation = Math.atan2(dy, dx);\n // arrows\n styles.push(\n new Style({\n geometry: new Point(end),\n image: new Icon({\n // we need to make sure the image is loaded by Vue Loader\n src: require(\"@/assets/linestring_arrow_grey.png\"),\n // fiddling with the anchor's y value does not help to\n // position the image more centered on the line ending, as the\n // default line style seems to be slightly uncentered in the\n // anti-aliasing, but the image is not placed with subpixel\n // precision\n anchor: [0.75, 0.5],\n rotateWithView: true,\n rotation: -rotation\n })\n })\n );\n });\n }\n return styles;\n }\n});\n\nlet layerConfigs = {};\n\nexport const unsetLayerConfigs = function() {\n layerConfigs = {};\n};\n\nexport const layerFactory = function(mapId) {\n const styles = styleFactory(mapId);\n // Shared feature source for layers:\n // BOTTLENECKS, BOTTLENECKSTATUS and BOTTLENECKFAIRWAYAVAILABILITY\n // Reduces bottlenecks_geoserver requests and number of stored feature objects.\n const FDREVIEWLAYER = new VectorLayer({\n id: \"FDREVIEWLAYER\",\n label: \"Review\",\n visible: true,\n source: new VectorSource({ wrapX: false }),\n style: styles.sections\n });\n const bottlenecksSource = new VectorSource({ strategy: bboxStrategy });\n bottlenecksSource.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\"bottlenecks_geoserver\"],\n geometryName: \"area\",\n filter: andFilter(\n lessThanOrEqualTo(\n \"valid_from\",\n store.state.application.refreshLayersTime.toISOString()\n ),\n greaterThanOrEqualTo(\n \"valid_to\",\n store.state.application.refreshLayersTime.toISOString()\n )\n )\n },\n bottlenecksSource,\n false,\n async (f, store) => {\n if (f.get(\"fa_critical\")) {\n // look for fairway availability data in store. If present and\n // not older than 15 min use it or fetch new data and store it.\n let data = store.getters[\"fairwayavailability/fwLNWLOverviewData\"](f);\n if (\n data &&\n new Date().getTime() - data.createdAt.getTime() < 900000\n ) {\n f.set(\"fa_data\", data.data);\n } else {\n let date = new Date();\n data = await store.dispatch(\n \"fairwayavailability/loadAvailableFairwayDepthLNWLForMap\",\n {\n feature: f,\n from: date.toISOString().split(\"T\")[0],\n to: date.toISOString().split(\"T\")[0],\n frequency: \"monthly\",\n LOS: 3\n }\n );\n if (data) {\n store.commit(\"fairwayavailability/addFwLNWLOverviewData\", {\n feature: f,\n data,\n createdAt: new Date()\n });\n f.set(\"fa_data\", data);\n }\n }\n }\n return f;\n }\n )\n );\n\n // either use existing config or create new one\n // important is only each map has its individual layer config\n // but we don't want to create new layer objects each time a store value\n // that is used here changes.\n const config = layerConfigs.hasOwnProperty(mapId)\n ? layerConfigs[mapId]\n : [\n new TileLayer({\n id: \"OPENSTREETMAP\",\n label: \"Open Streetmap\",\n visible: true,\n source: new OSM()\n }),\n new ImageLayer({\n id: \"INLANDECDIS\",\n label: \"Inland ECDIS chart Danube\",\n visible: true,\n source: null\n }),\n new ImageLayer({\n id: \"WATERWAYAREA\",\n label: \"Waterway Area\",\n maxResolution: 100,\n minResolution: 0,\n source: new ImageSource({\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"waterway_area\",\n VERSION: \"1.1.1\",\n TILED: true\n },\n imageLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n }).then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\"stretches_geoserver\"],\n geometryName: \"area\"\n },\n source,\n true,\n (f, store) => {\n if (f.getId() === store.state.imports.selectedStretchId) {\n f.set(\"highlighted\", true);\n }\n return f;\n }\n )\n );\n return new VectorLayer({\n id: \"STRETCHES\",\n label: \"Stretches\",\n visible: false,\n style: styles.stretches,\n source\n });\n })(),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\"sections_geoserver\"],\n geometryName: \"area\"\n },\n source,\n true,\n (f, store) => {\n if (f.getId() === store.state.imports.selectedSectionId) {\n f.set(\"highlighted\", true);\n }\n return f;\n }\n )\n );\n return new VectorLayer({\n id: \"SECTIONS\",\n label: \"Sections\",\n visible: false,\n style: styles.sections,\n source\n });\n })(),\n (function() {\n return new VectorLayer({\n id: \"BOTTLENECKS\",\n label: \"Bottlenecks\",\n visible: true,\n style: styles.bottleneck,\n source: bottlenecksSource\n });\n })(),\n new TileLayer({\n id: \"BOTTLENECKISOLINE\",\n label: \"Bottleneck morphology\",\n visible: false,\n source: new TileWMS({\n preload: 0,\n projection: \"EPSG:3857\",\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"sounding_results\",\n VERSION: \"1.1.1\",\n TILED: true\n },\n tileLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n })\n .then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n })\n .catch(() => {\n store.dispatch(\"application/reportBackendError\");\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n new TileLayer({\n id: \"DIFFERENCES\",\n label: \"Bottleneck Differences\",\n visible: false,\n source: new TileWMS({\n preload: 0,\n projection: \"EPSG:3857\",\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"sounding_differences\",\n VERSION: \"1.1.1\",\n TILED: true,\n CQL_FILTER: \"id=\" + store.state.fairwayprofile.currentDifference\n },\n tileLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n })\n .then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n })\n .catch(() => {\n store.dispatch(\"application/reportBackendError\");\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n geometryName: \"area\",\n featureTypes: [\"fairway_dimensions\"],\n filter: andFilter(\n equalTo(\"level_of_service\", 1),\n equalTo(\"staging_done\", true),\n lessThanOrEqualTo(\n \"valid_from\",\n store.state.application.refreshLayersTime.toISOString()\n ),\n greaterThanOrEqualTo(\n \"valid_to\",\n store.state.application.refreshLayersTime.toISOString()\n )\n )\n },\n source,\n false\n )\n );\n return new VectorLayer({\n id: \"FAIRWAYDIMENSIONSLOS1\",\n label: \"LOS 1 Fairway Dimensions\",\n visible: false,\n style: styles.fwd1,\n maxResolution: 80,\n minResolution: 0,\n source\n });\n })(),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n geometryName: \"area\",\n featureTypes: [\"fairway_dimensions\"],\n filter: andFilter(\n equalTo(\"level_of_service\", 2),\n equalTo(\"staging_done\", true),\n lessThanOrEqualTo(\n \"valid_from\",\n store.state.application.refreshLayersTime.toISOString()\n ),\n greaterThanOrEqualTo(\n \"valid_to\",\n store.state.application.refreshLayersTime.toISOString()\n )\n )\n },\n source,\n false\n )\n );\n return new VectorLayer({\n id: \"FAIRWAYDIMENSIONSLOS2\",\n label: \"LOS 2 Fairway Dimensions\",\n visible: false,\n style: styles.fwd2,\n maxResolution: 80,\n minResolution: 0,\n source\n });\n })(),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n geometryName: \"area\",\n featureTypes: [\"fairway_dimensions\"],\n filter: andFilter(\n equalTo(\"level_of_service\", 3),\n equalTo(\"staging_done\", true),\n lessThanOrEqualTo(\n \"valid_from\",\n store.state.application.refreshLayersTime.toISOString()\n ),\n greaterThanOrEqualTo(\n \"valid_to\",\n store.state.application.refreshLayersTime.toISOString()\n )\n )\n },\n source,\n false\n )\n );\n return new VectorLayer({\n id: \"FAIRWAYDIMENSIONSLOS3\",\n label: \"LOS 3 Fairway Dimensions\",\n visible: true,\n style: styles.fwd3,\n maxResolution: 80,\n minResolution: 0,\n source\n });\n })(),\n new ImageLayer({\n id: \"WATERWAYAXIS\",\n label: \"Waterway Axis\",\n source: new ImageSource({\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"waterway_axis\",\n VERSION: \"1.1.1\",\n TILED: true,\n TIME: store.state.application.refreshLayersTime.toISOString()\n },\n imageLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n })\n .then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n })\n .catch(() => {\n store.dispatch(\"application/reportBackendError\");\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\"waterway_profiles\"],\n geometryName: \"geom\"\n },\n source\n )\n );\n return new VectorLayer({\n id: \"WATERWAYPROFILES\",\n label: \"Waterway Profiles\",\n visible: true,\n style: new Style({\n stroke: new Stroke({\n color: \"rgba(0, 0, 255, .5)\",\n lineDash: [5, 5],\n width: 2\n })\n }),\n maxResolution: 2.5,\n minResolution: 0,\n source\n });\n })(),\n (function() {\n return new VectorLayer({\n id: \"BOTTLENECKSTATUS\",\n label: \"Critical Bottlenecks\",\n forLegendStyle: { point: true, resolution: 16 },\n visible: true,\n zIndex: 1,\n style: styles.bottleneckStatus,\n source: bottlenecksSource\n });\n })(),\n (function() {\n return new VectorLayer({\n id: \"BOTTLENECKFAIRWAYAVAILABILITY\",\n label: \"Bottleneck Fairway Availability\",\n forLegendStyle: { point: true, resolution: 16 },\n visible: false,\n zIndex: 1,\n style: styles.bottleneckFairwayAvailability,\n source: bottlenecksSource\n });\n })(),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\n \"bottlenecks_geoserver\",\n \"gauges_geoserver\",\n \"stretches_geoserver\",\n \"sections_geoserver\"\n ]\n },\n source,\n true,\n // since we don't use bbox strategy, features will contain all features and we can use it\n // to find reference gauges for bottlenecks, yeah!\n async (f, store, features) => {\n // attach reference gauge to bottleneck\n if (f.getId().indexOf(\"bottlenecks\") > -1) {\n f.set(\n \"gauge_obj\",\n features.find(feat => {\n return (\n feat.getId().indexOf(\"gauges\") > -1 &&\n feat.get(\"objname\") === f.get(\"gauge_objname\")\n );\n })\n );\n }\n\n // attach nsc data to gauge\n if (f.getId().indexOf(\"gauges\") > -1) {\n store\n .dispatch(\n \"gauges/getNashSutcliffeForISRS\",\n f.get(\"isrs_code\")\n )\n .then(response => {\n f.set(\"nsc_data\", response);\n });\n }\n }\n )\n );\n return new VectorLayer({\n id: \"DATAAVAILABILITY\",\n label: \"Data Availability/Accuracy\",\n forLegendStyle: { point: true, resolution: 16 },\n visible: false,\n zIndex: 1,\n style: styles.dataAvailability,\n source\n });\n })(),\n new ImageLayer({\n id: \"DISTANCEMARKS\",\n label: \"Distance Marks\",\n maxResolution: 10,\n minResolution: 0,\n source: new ImageSource({\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"distance_marks_ashore_geoserver\",\n VERSION: \"1.1.1\",\n TILED: true\n },\n imageLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n })\n .then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n })\n .catch(() => {\n store.dispatch(\"application/reportBackendError\");\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n new ImageLayer({\n id: \"DISTANCEMARKSAXIS\",\n label: \"Distance Marks, Axis\",\n source: new ImageSource({\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"distance_marks_geoserver\",\n VERSION: \"1.1.1\",\n TILED: true\n },\n imageLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n }).then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n (function() {\n const source = new VectorSource({ strategy: bboxStrategy });\n source.setLoader(\n buildVectorLoader(\n {\n featureTypes: [\"gauges_geoserver\"],\n geometryName: \"geom\"\n },\n source\n )\n );\n return new VectorLayer({\n id: \"GAUGES\",\n label: \"Gauges\",\n forLegendStyle: { point: true, resolution: 8 },\n visible: true,\n style: styles.gauge,\n maxResolution: 100,\n minResolution: 0,\n source\n });\n })(),\n new ImageLayer({\n id: \"FAIRWAYMARKS\",\n label: \"Fairway marks\",\n visible: true,\n source: new ImageSource({\n preload: 0,\n projection: \"EPSG:3857\",\n url: window.location.origin + \"/api/internal/wms\",\n params: {\n LAYERS: \"fairway_marks\",\n VERSION: \"1.1.1\",\n TILED: true,\n TIME: store.state.application.refreshLayersTime.toISOString()\n },\n imageLoadFunction: function(tile, src) {\n HTTP.get(src, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\")\n },\n responseType: \"blob\"\n })\n .then(response => {\n tile.getImage().src = URL.createObjectURL(response.data);\n })\n .catch(() => {\n store.dispatch(\"application/reportBackendError\");\n });\n } // TODO tile.setState(TileState.ERROR);\n })\n }),\n DRAWLAYER,\n CUTLAYER,\n FDREVIEWLAYER\n ];\n\n layerConfigs[mapId] = config;\n\n return {\n get(id) {\n return config.find(l => l.get(\"id\") === id);\n },\n config\n };\n};\n","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=54fd1233&prod&scoped=true&lang=css\"","/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk \n */\n\nimport { HTTP } from \"@/lib/http\";\nimport { WFS } from \"ol/format\";\nimport { equalTo as equalToFilter } from \"ol/format/filter\";\nimport { startOfHour, endOfHour } from \"date-fns\";\n\nconst STATES = {\n NEEDSAPPROVAL: \"pending\",\n APPROVED: \"accepted\",\n REJECTED: \"declined\"\n};\n\n// initial state\nconst init = () => {\n return {\n failed: false,\n pending: false,\n accepted: false,\n declined: false,\n warning: false,\n stretches: [],\n selectedStretchId: null,\n sections: [],\n selectedSectionId: null,\n imports: [],\n reviewed: [],\n show: null,\n showAdditional: null,\n showLogs: null,\n showMeta: null,\n details: [],\n startDate: startOfHour(new Date()),\n endDate: endOfHour(new Date()),\n stagingNotifications: null,\n metadata: {\n url: \"https://service.d4d-portal.info/wamos/wfs\",\n \"feature-type\": \"ws-wamos:hydro_fairwy\",\n \"sort-by\": \"hydro_scamin\",\n los: 3,\n \"min-width\": 80,\n \"max-width\": 150,\n depth: 250,\n \"source-organization\": \"D4D Portal\"\n },\n prev: null,\n next: null\n };\n};\n\nconst getFromWFS = (type, filter) => {\n return new Promise((resolve, reject) => {\n var featureCollectionRequest = new WFS().writeGetFeature({\n srsName: \"EPSG:4326\",\n featureNS: \"gemma\",\n featurePrefix: \"gemma\",\n featureTypes: [type],\n outputFormat: \"application/json\",\n filter: filter\n });\n HTTP.post(\n \"/internal/wfs\",\n new XMLSerializer().serializeToString(featureCollectionRequest),\n {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n }\n )\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n};\n\nconst clearFilterCriteria = state => {\n state.warning = false;\n state.successful = false;\n state.failed = false;\n state.pending = false;\n state.accepted = false;\n state.declined = false;\n};\n\nconst imports = {\n init,\n namespaced: true,\n state: init(),\n getters: {\n filters: state => {\n return [\"failed\", \"pending\", \"accepted\", \"declined\", \"warning\"].filter(\n x => state[x]\n );\n }\n },\n mutations: {\n setStagingNotifications: (state, stagingNotifications) => {\n state.stagingNotifications = stagingNotifications;\n },\n setPrev: (state, prev) => {\n state.prev = prev;\n },\n setNext: (state, next) => {\n state.next = next;\n },\n setStartDate: (state, start) => {\n state.startDate = start;\n },\n setEndDate: (state, end) => {\n state.endDate = end;\n },\n setCurrentDetails: (state, details) => {\n state.details = details;\n },\n toggleFilter: (state, name) => {\n state[name] = !state[name];\n const allSet =\n state.failed &&\n state.pending &&\n state.accepted &&\n state.declined &&\n state.warning;\n if (allSet) {\n clearFilterCriteria(state);\n }\n },\n clearFilters: state => {\n clearFilterCriteria(state);\n },\n setStretches: (state, stretches) => {\n state.stretches = stretches;\n },\n selectedStretchId: (state, id) => {\n state.selectedStretchId = id;\n },\n setSections: (state, sections) => {\n state.sections = sections;\n },\n selectedSectionId: (state, id) => {\n state.selectedSectionId = id;\n },\n setReviewed: (state, reviewed) => {\n state.reviewed = reviewed;\n },\n setImports: (state, imports) => {\n const lookUp = state.reviewed.reduce((o, n) => {\n const { id, status } = n;\n o[id] = status;\n return o;\n }, {});\n imports = imports.map(x => {\n if (x.state === \"pending\") {\n const reviewState = lookUp[x.id];\n if (reviewState) {\n x.status = reviewState;\n } else {\n x.status = STATES.NEEDSAPPROVAL;\n }\n }\n return x;\n });\n state.imports = imports;\n },\n showDetailsFor: (state, id) => {\n state.show = id;\n },\n hideDetails: state => {\n state.show = null;\n },\n showAdditionalInfoFor: (state, id) => {\n state.showAdditional = id;\n },\n hideAdditionalInfo: state => {\n state.showAdditional = false;\n },\n showAdditionalLogsFor: (state, id) => {\n state.showLogs = id;\n },\n hideAdditionalLogs: state => {\n state.showLogs = false;\n },\n showMetaFor: (state, id) => {\n state.showMeta = id;\n },\n hideMeta: state => {\n state.showMeta = -1;\n },\n toggleApprove: (state, change) => {\n const { id, newStatus } = change;\n const stagedResult = state.imports.find(e => {\n return e.id === id;\n });\n if (stagedResult.status === newStatus) {\n stagedResult.status = STATES.NEEDSAPPROVAL;\n state.reviewed = state.reviewed.filter(x => x.id !== stagedResult.id);\n } else {\n stagedResult.status = newStatus;\n let index = state.reviewed.findIndex(r => r.id === id);\n if (index !== -1) {\n state.reviewed[index].status = newStatus;\n } else {\n state.reviewed.push({\n id: stagedResult.id,\n status: newStatus,\n kind: stagedResult.kind,\n enqueued: stagedResult.enqueued\n });\n }\n }\n }\n },\n actions: {\n loadStagingNotifications({ commit }) {\n return new Promise((resolve, reject) => {\n HTTP.get(\"/imports?states=pending&count=true\", {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n commit(\"setStagingNotifications\", response.data);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadStretch(context, name) {\n return new Promise((resolve, reject) => {\n getFromWFS(\"stretches_geoserver\", equalToFilter(\"name\", name))\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadStretches({ commit }) {\n return new Promise((resolve, reject) => {\n getFromWFS(\"stretches_geoserver\", equalToFilter(\"staging_done\", true))\n .then(response => {\n if (response.data.features) {\n commit(\"setStretches\", response.data.features);\n } else {\n commit(\"setStretches\", []);\n }\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n saveStretch(context, stretch) {\n return new Promise((resolve, reject) => {\n HTTP.post(\"/imports/st\", stretch, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadSection(context, name) {\n return new Promise((resolve, reject) => {\n getFromWFS(\"sections_geoserver\", equalToFilter(\"name\", name))\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n loadSections({ commit }) {\n return new Promise((resolve, reject) => {\n getFromWFS(\"sections_geoserver\", equalToFilter(\"staging_done\", true))\n .then(response => {\n if (response.data.features) {\n commit(\"setSections\", response.data.features);\n } else {\n commit(\"setSections\", []);\n }\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n saveSection(context, section) {\n return new Promise((resolve, reject) => {\n HTTP.post(\"/imports/sec\", section, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n getImports({ commit }, options) {\n let { filter, from, to, query } = options;\n let queryParams = \"\";\n const hasWarning = filter.includes(\"warning\");\n filter = filter.filter(x => x != \"warning\");\n if (filter && filter.length > 0) {\n queryParams = \"?states=\" + filter.join(\",\");\n if (hasWarning) queryParams += \"&warnings=true\";\n queryParams += \"&from=\" + from;\n queryParams += \"&to=\" + to;\n queryParams += \"&query=\" + query;\n } else {\n if (hasWarning) {\n queryParams += \"?warnings=true\";\n queryParams += \"&from=\" + from;\n queryParams += \"&to=\" + to;\n queryParams += \"&query=\" + query;\n } else {\n queryParams += \"?from=\" + from;\n queryParams += \"&to=\" + to;\n queryParams += \"&query=\" + query;\n }\n }\n return new Promise((resolve, reject) => {\n HTTP.get(\"/imports\" + queryParams, {\n headers: { \"X-Gemma-Auth\": localStorage.getItem(\"token\") }\n })\n .then(response => {\n const { imports, prev, next } = response.data;\n commit(\"setPrev\", prev);\n commit(\"setNext\", next);\n commit(\"setImports\", imports);\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n confirmReview(context, reviewResults) {\n return new Promise((resolve, reject) => {\n HTTP.patch(\"/imports\", reviewResults, {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"application/json\"\n }\n })\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n }\n};\n\nexport { imports, STATES };\n","import { Icon, Stroke, Style, Fill, Text, Circle } from \"ol/style\";\nimport Point from \"ol/geom/Point\";\nimport { getCenter } from \"ol/extent\";\nimport store from \"@/store/index\";\nimport classifications from \"../../lib/classifications\";\n\nconst styles = {\n blue1: new Style({\n stroke: new Stroke({\n color: [0, 0, 255, 0.8],\n lineDash: [2, 4],\n lineCap: \"round\",\n width: 2\n }),\n fill: new Fill({\n color: [240, 230, 0, 0.2]\n })\n }),\n blue2: new Style({\n stroke: new Stroke({\n color: [0, 0, 255, 0.9],\n lineDash: [3, 6],\n lineCap: \"round\",\n width: 2\n }),\n fill: new Fill({\n color: [240, 230, 0, 0.1]\n })\n }),\n blue3: new Style({\n stroke: new Stroke({\n color: [0, 0, 255, 1.0],\n width: 2\n }),\n fill: new Fill({\n color: [255, 255, 255, 0.4]\n })\n }),\n yellow1: new Style({\n stroke: new Stroke({\n color: \"rgba(230, 230, 10, .8)\",\n width: 4\n }),\n fill: new Fill({\n color: \"rgba(230, 230, 10, .3)\"\n })\n }),\n yellow2: new Style({\n stroke: new Stroke({\n color: \"rgba(250, 200, 0, .8)\",\n width: 2\n }),\n fill: new Fill({\n color: \"rgba(250, 200, 10, .3)\"\n })\n }),\n yellow3: new Style({\n stroke: new Stroke({\n color: \"rgba(250, 240, 10, .9)\",\n width: 5\n }),\n fill: new Fill({\n color: \"rgba(250, 240, 0, .7)\"\n })\n }),\n orange1: new Style({\n stroke: new Stroke({\n color: \"rgba(255, 150, 10, .8)\",\n width: 2\n }),\n fill: new Fill({\n color: \"rgba(255, 150, 0, .3)\"\n })\n }),\n orange2: new Style({\n stroke: new Stroke({\n color: \"rgba(255, 166, 10, .9)\",\n width: 5\n }),\n fill: new Fill({\n color: \"rgba(255, 166, 0, .7)\"\n })\n }),\n red1: new Style({\n stroke: new Stroke({\n color: \"rgba(255, 0, 0, 1)\",\n width: 4\n })\n }),\n circleBlue: new Style({\n image: new Circle({\n radius: 5,\n fill: new Fill({ color: \"rgba(255, 0, 0, 0.1)\" }),\n stroke: new Stroke({ color: \"blue\", width: 1 })\n })\n }),\n textFW1: new Style({\n text: new Text({\n font: 'bold 12px \"Open Sans\", \"sans-serif\"',\n placement: \"line\",\n fill: new Fill({\n color: \"black\"\n }),\n text: \"LOS: 1\"\n //, zIndex: 10\n })\n }),\n textFW2: new Style({\n text: new Text({\n font: 'bold 12px \"Open Sans\", \"sans-serif\"',\n placement: \"line\",\n fill: new Fill({\n color: \"black\"\n }),\n text: \"LOS: 2\"\n //, zIndex: 10\n })\n }),\n textFW3: new Style({\n text: new Text({\n font: 'bold 12px \"Open Sans\", \"sans-serif\"',\n placement: \"line\",\n fill: new Fill({\n color: \"black\"\n }),\n text: \"LOS: 3\"\n //, zIndex: 10\n })\n })\n};\n\nconst styleFactory = function(mapId) {\n const recencyColorCodes = {\n OK: \"lime\",\n WARNING: \"yellow\",\n DANGER: \"red\",\n NEUTRAL: \"white\"\n };\n const gmAvailabilityColorCodes = {\n OK: \"lime\",\n WARNING: \"yellow\",\n DANGER: \"red\",\n NEUTRAL: \"white\"\n };\n const forecastAccuracyColorCodes = {\n OK: \"lime\",\n WARNING: \"yellow\",\n DANGER: \"red\",\n NEUTRAL: \"white\"\n };\n\n const forecastVsRealityColorCodes = {\n OK: \"lime\",\n WARNING: \"yellow\",\n DANGER: \"red\",\n NEUTRAL: \"white\"\n };\n return {\n recencyColorCodes: recencyColorCodes,\n gmAvailabilityColorCodes: gmAvailabilityColorCodes,\n forecastAccuracyColorCodes: forecastAccuracyColorCodes,\n forecastVsRealityColorCodes: forecastVsRealityColorCodes,\n stretches(feature) {\n let style = styles.yellow2;\n if (feature.get(\"highlighted\")) {\n style = styles.yellow3;\n }\n return style;\n },\n sections(feature) {\n let style = styles.orange1;\n if (feature.get(\"highlighted\")) {\n style = styles.orange2;\n }\n return style;\n },\n fwd1() {\n return [styles.blue1, styles.textFW1];\n },\n fwd2() {\n return [styles.blue2, styles.textFW2];\n },\n fwd3() {\n return [styles.blue3, styles.textFW3];\n },\n bottleneck() {\n return styles.yellow1;\n },\n bottleneckStatus(feature, resolution, isLegend) {\n let s = [];\n if ((feature.get(\"fa_critical\") && resolution > 15) || isLegend) {\n let bnCenter = getCenter(feature.getGeometry().getExtent());\n s.push(\n new Style({\n geometry: new Point(bnCenter),\n image: new Icon({\n src: require(\"@/assets/marker-bottleneck-critical.png\"),\n anchor: [0.5, 0.5],\n scale: isLegend ? 0.5 : 1\n })\n })\n );\n }\n if (feature.get(\"fa_critical\") && !isLegend) {\n s.push(styles.red1);\n }\n return s;\n },\n bottleneckFairwayAvailability(feature, resolution, isLegend) {\n let s = [];\n if (isLegend) {\n s.push(\n new Style({\n image: new Icon({\n src: require(\"@/assets/fa-diagram.png\"),\n anchor: [0.5, 0.5],\n scale: 1\n })\n })\n );\n }\n if (feature.get(\"fa_critical\") && feature.get(\"fa_data\")) {\n let data = feature.get(\"fa_data\");\n const heightInPixel = 80;\n const relativeHeightInPercent = heightInPixel / 100;\n let lnwlHeight = relativeHeightInPercent * data.ldc;\n let belowThresholdHeight = relativeHeightInPercent * data.below;\n let betweenThresholdHeight = relativeHeightInPercent * data.between;\n let aboveThresholdHeight = relativeHeightInPercent * data.above;\n let lnwl = ``;\n let above = ``;\n let between = ``;\n let below = ``;\n let frame = ``;\n let svg = `data:image/svg+xml,${frame}${lnwl}${above}${between}${below}`;\n let bnCenter = getCenter(feature.getGeometry().getExtent());\n s.push(\n new Style({\n geometry: new Point(bnCenter),\n image: new Icon({\n src: svg,\n anchor: [1.2, 1.2]\n })\n })\n );\n }\n return s;\n },\n dataAvailability(feature, resolution, isLegend) {\n let s = [];\n if (isLegend) {\n s.push(\n new Style({\n image: new Icon({\n src: require(\"@/assets/da-diagram.png\"),\n anchor: [0.5, 0.5],\n scale: 1\n })\n })\n );\n } else {\n // TODO: Get information from feature and check the ranges according to #423, #424, #425\n let colorWaterlevel =\n gmAvailabilityColorCodes[classifications.gmAvailability(feature)];\n let colorComparison =\n forecastVsRealityColorCodes[\n classifications.forecastVsReality(feature)\n ];\n let colorAccuracy =\n forecastAccuracyColorCodes[classifications.forecastAccuracy(feature)];\n let map = store.getters[\"map/openLayersMap\"](mapId);\n let geom = feature.getGeometry();\n if (!(geom instanceof Point)) {\n geom = new Point(getCenter(feature.getGeometry().getExtent()));\n }\n if (\n (map.getLayer(\"BOTTLENECKS\").getVisible() &&\n feature.getId().indexOf(\"bottlenecks\") > -1) ||\n (map.getLayer(\"SECTIONS\").getVisible() &&\n feature.getId().indexOf(\"sections\") > -1) ||\n (map.getLayer(\"STRETCHES\").getVisible() &&\n feature.getId().indexOf(\"stretches\") > -1) ||\n (map.getLayer(\"GAUGES\").getVisible() &&\n feature.getId().indexOf(\"gauges\") > -1)\n ) {\n let frame = ``;\n let waterlevel = ``;\n let accuracy = ``;\n let comparison = ``;\n let svg = `data:image/svg+xml,${frame}${waterlevel}${comparison}${accuracy}`;\n s.push(\n new Style({\n geometry: geom,\n image: new Icon({\n src: svg,\n anchor: [-0.5, 1]\n })\n })\n );\n }\n\n if (\n map.getLayer(\"BOTTLENECKS\").getVisible() &&\n feature.getId().indexOf(\"bottlenecks\") > -1\n ) {\n let colorUniformTriangle =\n recencyColorCodes[classifications.surveyRecency(feature)];\n let frame = ``;\n let svg = `data:image/svg+xml,${frame}`;\n s.push(\n new Style({\n geometry: geom,\n image: new Icon({\n src: svg,\n anchor: [0.5, 1]\n })\n })\n );\n }\n }\n return s;\n },\n dma(feature, resolution) {\n if (resolution < 10) {\n var s = styles.circleBlue;\n if (resolution < 6) {\n s.setText(\n new Text({\n offsetY: 12,\n font: '10px \"Open Sans\", \"sans-serif\"',\n fill: new Fill({\n color: \"black\"\n }),\n text: (feature.get(\"hectometre\") / 10).toString()\n })\n );\n }\n return s;\n }\n return [];\n },\n gauge(feature, resolution, isLegend) {\n let waterlevel = feature.get(\"gm_waterlevel\");\n let text = feature.get(\"objname\");\n let iconColor = \"white\";\n if (waterlevel) {\n text += \"\\n(\" + waterlevel + \" cm)\";\n let refWaterlevels = JSON.parse(feature.get(\"reference_water_levels\"));\n if (refWaterlevels) {\n const HDC =\n refWaterlevels[\n Object.keys(refWaterlevels).find(e => /HDC/.test(e))\n ];\n const LDC =\n refWaterlevels[\n Object.keys(refWaterlevels).find(e => /LDC/.test(e))\n ];\n if (waterlevel < LDC) iconColor = \"brown\";\n if (waterlevel > LDC && waterlevel < HDC) iconColor = \"blue\";\n if (waterlevel > HDC) iconColor = \"red\";\n }\n }\n\n return [\n new Style({\n image: new Icon({\n src: require(\"@/assets/marker-gauge-\" + iconColor + \".png\"),\n anchor: [0.5, isLegend ? 0.5 : 1],\n scale: isLegend ? 0.5 : 1\n }),\n text: new Text({\n font: '10px \"Open Sans\", \"sans-serif\"',\n offsetY: 15,\n fill: new Fill({\n color: \"black\"\n }),\n backgroundFill: new Fill({\n color: \"rgba(255, 255, 255, 0.7)\"\n }),\n padding: [2, 2, 2, 2],\n text\n })\n })\n ];\n }\n };\n};\n\nexport { styles, styleFactory };\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA8CAYAAABvnTosAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJVSURBVEiJ7ZbPaxNBFMe/s9ltQhh6KdmWQEMC9SAh/4B3iR5a0kjB3CIIkmjoyWAOQhHBSxH/AcGrFG3tQU+95iJ4MIdCCRa1mCZZY5EubHY3+zxUtzv5JSmRVsgX5vBm3/ezb/bNDgOctxgArMTjU1a9nhjFuKVpHwAQA4DFcDjis+3PowDa09OBd9VqW/ZOHhgGjmzbjZWpKeSLRcH4cWcHzUrFjQVA3TTx1TDcmEsS7pVKAuBJqyUApFHK7qcJYAwAoY3z0SgiMzOnD2UZ5XJZMDRqtcGA24UCbuXzbqzrOjjngiHOOS4Fg258/t9gAhg34HGpBM65O2KxGHRdF0Z2dVUACBvJMk3ongOFMYagZ9MAgKIo/3AJE8DZJLTxZjaLK8mkGxuGgXQ6LRjM/X14GykALicSSKVSbqzrOjKZjACYHCgXESC08X25jLZ0yjRNE7lcTjBolQqsvT2RshgOR1KqSvOBAAFwB+ecuvVsbY1SqkrXFxb8Y1nCBQEw07QJMP6W7FGb+/0E/L5oAsCSqj76YVkPjz3XPJ8sI9n1N9Z2d+l7tbr+ptEoCoCVubmQ7ThfCAgMezUjsjpE0W1N++YuAQA2Dg+bDvB8mJkAchh78ccsAABAZuwpgM5Jbq+fASQ5zrp3UgC8qtc/EdGGd2ne6gFsbmqasA172ujrdO4DOCKxCiJAd4gedOf3AF63WgcACkysgklEd7ebzWq/svoqNTv7khEtOSdJb7cajRv98gbuREVRcgB+MuC4I8t3BuUN1bKqXl0Oha6dyTzR/6Rf56jpM7eWuNMAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA8CAYAAABvnTosAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHCSURBVEiJ7ZaxihpRFIb/O0oSBqsYEeKyYIjp0tgK2ljZab2S2hdIlyadkDJVXkADyQtopYWFSB5AsUgZEpJmZF2Z3S+FOrvXUTcDgWWXOTAwZ879vzlz7s9wpbsOI0nAI0mvI2q/GWPYAk4lfY8IeGKMuUjefNLtdjWZTII8kUioWq1aqnQ6rWKxaKOAU4Bms4mk4EqlUuxGv9/f3j6WJCdi26GIAf8BYPkgk8moVCpdF5NJjUYjS+B5Xpiy9UGv17P23PM8yxeSaLfbsQ8eHsAyUqfTUb1eD3LXdbVYLCzBeDw+DPB93xIYY+S6riVwHLvpu59BDNjZxkqlokajEeTL5dLKJalWq6lcLtuU+Idy3wGWD6bTqebzeZCvViu1Wi1LkM1mw5QoB4zBYPBQfeBLWkbQXWg9p/VBU5KA98Ph8N1sNrumO47y+bylzOVyFAqFD8aYt1YByADnobGHYwU839sX8PEW8RXw6eCHAS8Af7Nwn/gSeHV0OkDnSAdfjoo3gBPgz04XV4AHvLwVsIGc7Xn7m38S34B8Zr0r58DXSOIN4CnwA/gJPDu0LnmoYIz5DZxJShhjfkXuII77FH8BBn7VDVEjyagAAAAASUVORK5CYII=\""],"sourceRoot":""}