{"version":3,"sources":["webpack:///./src/components/Fouling/SpeedLossChartCard.vue?868c","webpack:///./src/components/Fouling/SpeedLossCard.vue?0f46","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?a839","webpack:///./src/components/Fouling/FoulingContentLoader.vue?585a","webpack:///./src/components/Fouling/BenchmarkCard.vue?85e8","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue?3e83","webpack:///./src/views/vessel/Fouling.vue?e498","webpack:///./src/components/Fouling/FoulingContentLoader.vue?e50d","webpack:///./src/components/Fouling/FoulingContentLoader.vue","webpack:///./src/components/Fouling/FoulingContentLoader.vue?f963","webpack:///./src/components/Fouling/FoulingContentLoader.vue?9ecb","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?82fc","webpack:///./src/components/Fouling/modals/EventImpactModal.vue","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?7aa1","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?5521","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue?d673","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue?52fd","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue?7fff","webpack:///./src/components/Fouling/modals/MCRModal.vue?82a3","webpack:///./src/components/Fouling/modals/MCRModal.vue","webpack:///./src/components/Fouling/modals/MCRModal.vue?871f","webpack:///./src/components/Fouling/modals/MCRModal.vue?fe79","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue?acb4","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue?a6f5","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue?569f","webpack:///./src/components/Fouling/SpeedLossCard.vue?8df3","webpack:///./src/components/Fouling/SpeedLossCard.vue","webpack:///./src/components/Fouling/SpeedLossCard.vue?d4f1","webpack:///./src/components/Fouling/SpeedLossCard.vue?18b0","webpack:///./src/components/Fouling/SpeedLossChartCard.vue?5674","webpack:///./src/components/Fouling/SpeedLossChartCard.vue","webpack:///./src/components/Fouling/SpeedLossChartCard.vue?e86a","webpack:///./src/components/Fouling/SpeedLossChartCard.vue?fdef","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?61a1","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?5979","webpack:///../../../src/components/VSlider/VSlider.ts","webpack:///../../../src/components/VSlider/index.ts","webpack:///../../../src/components/VRangeSlider/VRangeSlider.ts","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?8957","webpack:///./src/components/Fouling/OperationalProfileCard.vue?16f1","webpack:///./src/components/Fouling/OperationalProfileCard.vue","webpack:///./src/components/Fouling/OperationalProfileCard.vue?3669","webpack:///./src/components/Fouling/OperationalProfileCard.vue?1960","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?a10e","webpack:///./src/components/Fouling/GraphCard.vue?069c","webpack:///./src/components/Fouling/GraphCard.vue","webpack:///./src/components/Fouling/GraphCard.vue?23e3","webpack:///./src/components/Fouling/GraphCard.vue?6cc8","webpack:///./src/components/Fouling/BenchmarkCard.vue?ed3a","webpack:///./src/components/Fouling/BenchmarkCard.vue","webpack:///./src/components/Fouling/BenchmarkCard.vue?b12d","webpack:///./src/components/Fouling/BenchmarkCard.vue?51f3","webpack:///./src/components/Fouling/StatisticsCard.vue?538a","webpack:///./src/components/Fouling/StatisticsCard.vue","webpack:///./src/components/Fouling/StatisticsCard.vue?2f7d","webpack:///./src/components/Fouling/StatisticsCard.vue?d72f","webpack:///./src/components/Fouling/LimitsCard.vue?8062","webpack:///./src/components/Fouling/LimitsCard.vue","webpack:///./src/components/Fouling/LimitsCard.vue?5632","webpack:///./src/components/Fouling/LimitsCard.vue?514b","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?6f97","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?9460","webpack:///./src/views/vessel/Fouling.vue","webpack:///./src/views/vessel/Fouling.vue?c62b","webpack:///./src/views/vessel/Fouling.vue?8637","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?1525","webpack:///./src/components/Fouling/OperationalProfileCard.vue?a4ea","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?c0de","webpack:///./src/views/vessel/Fouling.vue?f361","webpack:///./src/components/Fouling/GraphCard.vue?03a1"],"names":["render","_vm","this","_h","$createElement","_c","_self","loader","staticClass","attrs","latestSpeedLossStatistics","latestTrendEvent","latestAddedConsumption","isBenchmarking","ref","speedLossHistory","speedLossStatistics","isDataLoading","isDerivedStwFeatureEnabled","on","openSpeedLossTrendDetailsModal","onShipSpeedLogChartSelection","$event","speedMeasurementModal","setHullCoating","scopedSlots","_u","key","fn","_g","_b","_v","setMCRSettings","_e","setBenchmarkSettings","_s","benchmarkType","icon","tooltip","proxy","staticStyle","createEvent","setEventImpact","operationalProfileDateRange","markerClicked","trackClicked","syncSpeedLossChartDates","onExpandMap","slot","CreateEventModalActive","EventImpactModalActive","BenchmarkSettingsModalActive","fetchData","HullCoatingModalActive","MCRModalActive","onFilteringSettingsUpdated","onTrendPeriodChanged","type","indexOf","_k","keyCode","closeOperationalProfileModal","apply","arguments","model","value","callback","$$v","OperationalProfileModal","expression","closeSpeedMeasurementSettingsModal","speedMeasurementItems","derivedStwHint","tempUseDerivedStw","onUseDerivedStwChanged","stopPropagation","preventDefault","staticRenderFns","FoulingContentLoader","Vue","Component","component","VCol","VRow","VSkeletonLoader","close","dialog","hasTrendEvents","trendEvents","fetchEventImpact","data","formatDate","item","timestamp","name","selectedTrendEvent","hasEventImpacts","eventImpacts","previousPeriodEndValue","toFixed","currentPeriodBenchmark","vessel","draftMean","tableHeaders","mcrPercentage","power","formatValue","fuelConsumptionDiff","Fouling","getModule","FoulingModule","store","Vessels","VesselsModule","VesselEvents","VesselEventsModule","EventImpactModal","isLoading","fetchEventImpactError","text","currentVessel","length","foulingChartConfig","moment","format","vesselId","id","eventDate","__decorate","PropSync","Boolean","default","Watch","components","VBtn","VCard","VCardActions","VCardText","VCardTitle","VDataTable","VDialog","VSelect","VSpacer","cancel","$set","benchmarkLevelInputRules","resetManualBenchmarkLevel","_n","disableSaveBenchmarkLevelSettings","updateBenchmarkLevelSettings","Snackbar","SnackbarModule","BenchmarkSettingsModal","benchmark","useManualBenchmarkLevel","getFoulingChartConfig","useManualBenchmark","updateFoulingChartConfig","fetchFoulingChartConfig","showSnackbar","color","$emit","VIcon","VRadio","VRadioGroup","VTextField","VTooltip","fieldRequired","mcr","numbericFilter","windBeaufort","required","isSaveDisabled","MCRModal","payload","minPercentMcr","maxBeaufortWind","event","window","expect","target","toString","test","VCardSubtitle","hullCoatingManufacturer","hullCoatingType","submit","HullCoatingModal","manufacturers","types","manufacturerId","typeId","brand","postHullCoatingVessel","fetchHullCoatingVessel","fetchHullCoatingType","fetchHullCoatingManufacturer","response","Prop","class","classes","statecolor","stateicon","latestSpeedLossPercentage","cumulativeAddedConsumptionTooltipText","cumulativeAddedFuelConsumption","baselineTooltipText","benchmarkTooltipText","formatedLatestTrendEventDate","formatColorLegendValue","greenZoneEnds","yellowZoneEnds","SpeedLossCard","Math","abs","trendEndValue","level","state","isManual","dateHelper","getFormatedDateString","end","addedFuelConsumption","Number","periodEndAddedConsumptionRate","fromDate","roundedNumber","round","cumulativeAddedConsumption","toLocaleString","adjustedValue","precision","multiplier","pow","chartTitleTooltipText","_t","onEditSpeedSource","speedMeasurementSource","onEditHullSource","hullCoatingVessel","manufacturerName","typeName","ChartOptions","chartReady","HighchartsNoData","Highcharts","SpeedLossChartCard","chartLoaded","useDerivedStw","ctx","options","time","useUTC","chart","zoomType","spacingRight","animation","height","spacingTop","events","selection","e","$this","setTimeout","resetSelection","min","xAxis","max","credits","enabled","legend","title","yAxis","tickPixelInterval","plotLines","vesselEventPlotLines","plotBands","vesselEventPlotBands","labels","y","series","dataSeries","backgroundColor","borderWidth","style","plotOptions","zIndex","exporting","filename","chartOptions","width","enableMouseTracking","cropThreshold","marker","symbol","useHTML","headerFormat","pointFormat","valueDecimals","valueSuffix","map","Date","parse","speedLossPercent","trendLines","filteredStatistics","forEach","push","utc","trendLine","b","toDate","filter","s","firstSpeedLossDate","lastStatistics","benchmarkingData","dashStyle","visible","lastSpeedLossDate","lineWidth","speedLossPoints","benchmarkLine","baseline","vesselEvents","html","getPlotLineLabels","getVesselEventsOnSameDate","Object","assign","JSON","stringify","DefaultVesselEventPlotline","eventColor","valueOf","label","rotation","x","period","index","from","to","className","click","getTrendPeriodMeta","mouseover","attributes","getNamedItem","mouseout","allEvents","update","eventTimestamp","vesselEvent","vesselEventsOnSameDate","eventIcon","join","trendPeriod","currentTrendPeriod","i","nextPeriodStartDate","getTrendPeriod","previousPeriodStartDate","timestampFrom","timestampTo","zoomedOut","zoom","redraw","showResetZoom","eventType","datetime","split","endsWith","Chart","VProgressCircular","propulsionEfficiencyToolTooltipText","expandWidget","firstPeriodFromDate","isFirstPeriodFromDateModalActive","vesselLogDataMinDate","currentDate","onPeriodDateChanged","firstPeriodToDate","isFirstPeriodToDateModalActive","secondPeriodFromDate","isSecondPeriodFromDateModalActive","secondPeriodToDate","isSecondPeriodToDateModalActive","filterMenu","conditionsList","filterMenuConfig","intervalList","isDataIntervalAllowedForDataSize","speed","applyFilter","averageKPI","avgChangeShaftPowerTooltipText","expandChart","filterMenuModal","PropulsionEfficencyCard","isToDateModalActive","firstPeriodData","filtredFirstPeriodData","secondPeriodData","filtredSecondPeriodData","condition","granularity","initialFilterMenuConfig","interval","intervalLimit","Raw","daysToMinutes","Minute","QuarterHour","Hour","speedRange","logDataMinDate","ballastDraftHigh","ballastDraftLow","ladenDraftHigh","ladenDraftLow","firstPeriodSelectedTimeInMinutes","minutesDiff","secondPeriodSelectedTimeInMinutes","selectedTimeInMinutes","secondPeriodMap","Map","roundedSpeed","set","diffs","power1","roundedSpeed1","has","power2","get","diff","averageDiff","reduce","sum","averageDiffPercentage","foulingConfig","chartSettings","stwLegend","area","threshold","showInLegend","dataLabels","formatter","dateSpan","pointDate","point","seriesData","spacingBottom","spacingLeft","fontFamily","_","isEmpty","propulsionCurve","xValues","yValues","v","benchmarkPercentFactor","remove","scatterPointsSerie","stickyTracking","radius","scatterPointsSerie2","benchmarkCurve","theoreticalLine","theoreticalCurve","days","duration","asMinutes","datepickerRef","date","$refs","save","fetchPropulsionEfficency","autoGranularity","firstPeriodResponse","keys","replace","secondPeriodResponse","fetchPropulsionEfficencyCurve","points","concat","find","p","getTime","mixins","VInput","Loadable","extend","directives","ClickOutside","props","disabled","inverseLabel","String","step","thumbColor","thumbLabel","undefined","validator","thumbSize","tickLabels","Array","ticks","tickSize","trackColor","trackFillColor","vertical","app","oldValue","thumbPressed","mouseTimeout","isFocused","isActive","noClick","startOffset","computed","call","internalValue","lazyValue","val","isNaN","minValue","roundValue","maxValue","trackTransition","showTicks","stepNumeric","parseFloat","inputWidth","trackFillStyles","startDir","endDir","valueDir","start","$vuetify","rtl","isDisabled","transition","trackStyles","numTicks","ceil","showThumbLabel","$scopedSlots","computedTrackColor","isDark","validationState","computedTrackFillColor","computedColor","computedThumbColor","watch","parsed","handler","beforeMount","mounted","document","querySelector","consoleWarn","methods","genDefaultSlot","children","genLabel","slider","genSlider","unshift","genProgress","isReadonly","themeClasses","onBlur","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","computedId","readonly","tabindex","$attrs","setBackgroundColor","range","createRange","direction","offsetDirection","reverse","filled","valueWidth","genThumb","thumbLabelContent","genThumbLabelContent","genThumbLabel","setTextColor","getThumbContainerStyles","role","focus","blur","keydown","onKeyDown","content","size","convertToUnit","transform","VScaleTransition","origin","_e$target","matches","domRect","getBoundingClientRect","touch","touches","clientY","top","clientX","left","clearTimeout","mouseUpOptions","passiveSupported","passive","capture","mouseMoveOptions","isTouchEvent","onMouseMove","addEventListener","addOnceEventListener","onSliderMouseUp","removeEventListener","deepEqual","parseMouseMove","isInteractive","parseKeyDown","thumb","track","trackStart","trackLength","clickOffset","clickPos","pageup","keyCodes","pagedown","home","right","down","up","includes","steps","increase","shiftKey","ctrlKey","trimmedStep","trim","decimals","offset","newValue","VSlider","activeThumb","toFocus","el","validate","getTrackStyle","startLength","endLength","startPadding","endPadding","getIndexOfClosestValue","arr","input","_uid","padding","sections","styles","section","reevaluateSelected","refName","thumbRef","setInternalValue","VDatePicker","VDivider","VList","VListItem","VListItemContent","VListItemSubtitle","VListItemTitle","VMenu","VRangeSlider","VToolbar","VToolbarTitle","isFromDateModalActive","onDateRangeChanged","isModal","expandMap","hoursInWarmWater","getSeaTemperatureDateRange","syncSpeedLog","isUsingDerivedStw","onMarkerClicked","onTrackClicked","onMapZoom","OperationalProfileCard","invalidRange","startOf","year","speedHistoryStartYear","asMilliseconds","seaTemperatureDateRange","seaSurfaceTemperature","getSeaTemperaturePoints","total","temperature","timeSpent","syncDateRange","rangeYears","updateWeatherData","fitBounds","position","lat","lng","trackDateStart","trackHistory","prevMarkers","slice","lastExportDate","trackDateEnd","minMaxDateRange","datesRange","mapRef","setZoom","Ref","hasPreviousPeriod","loading","previousPeriod","hasNextPeriod","nextPeriod","periodMeta","GraphCard","marginTop","gridLineWidth","eventPlotLines","setExtremes","cmax","cmin","resetZoomButton","gridLineColor","xDateFormat","lineColor","fillColor","trendPeriodMeta","formatDatetimeToUTC","infoEvents","getFormatedDateTimeString","convertTimestamp","addPlotLine","highcharts","domProps","BenchmarkCard","VSystemBar","pointCount","trendFunction","StatisticsCard","a","LimitsCard","limits","exportedAt","minPower","windSpeed","minTime","SpeedLossTrendDetailsModal","FoulingView","addedFuelConsumptions","subtract","features","some","feature","filteredFuelConsumptions","c","usingDerivedStw","Promise","all","fetchSpeedLossStatistics","fetchSpeedLossHistory","fetchEvents","updateTrendEventTypes","fetchAddedFuelConsumption","open","CreateEventModal","success","zoomIn","dates","periodStartDate","getTrendPeriodByFromDate","updatePeriod","featureEnabled","CLEAR_SEA_SURFACE_TEMPERATURE","deep","FeatureNotAvailable","DiagnosticCard","EditVesselEvent","DiagnosticsDetails"],"mappings":"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","file":"js/chunk-a60f099a.b8602478.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossChartCard.vue?vue&type=style&index=0&id=613597c2&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossCard.vue?vue&type=style&index=0&id=39289875&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventImpactModal.vue?vue&type=style&index=0&id=7ac8a2c5&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FoulingContentLoader.vue?vue&type=style&index=0&id=06c73856&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=style&index=0&id=bf3e2b28&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HullCoatingModal.vue?vue&type=style&index=0&id=ad6a0a48&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featureEnabled)?_c('div',[(!_vm.loader)?_c('div',{staticClass:\"fouling-content\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\",\"sm\":\"12\"}},[_c('SpeedLossCard',{attrs:{\"latestSpeedLossStatistics\":_vm.latestSpeedLossStatistics,\"latestTrendEvent\":_vm.latestTrendEvent,\"addedFuelConsumption\":_vm.latestAddedConsumption,\"isBenchmarking\":_vm.isBenchmarking}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\",\"sm\":\"12\"}},[_c('SpeedLossChartCard',{ref:\"SpeedLossChartCard\",attrs:{\"speedLossHistory\":_vm.speedLossHistory,\"speedLossStatistics\":_vm.speedLossStatistics,\"isBenchmarking\":_vm.isBenchmarking,\"isDataLoading\":_vm.isDataLoading,\"isDerivedStwEnabled\":_vm.isDerivedStwFeatureEnabled},on:{\"plotBandClicked\":_vm.openSpeedLossTrendDetailsModal,\"onShipSpeedLogChartSelection\":_vm.onShipSpeedLogChartSelection,\"onEditSpeedSource\":function($event){_vm.speedMeasurementModal = true},\"onEditHullSource\":function($event){return _vm.setHullCoating()}},scopedSlots:_vm._u([{key:\"external-actions\",fn:function(){return [_c('div',{staticClass:\"external-actions ml-auto d-flex flex-row align-center\"},[_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-cog\")])],1)]}}],null,false,1952843081)},[_c('v-list',{staticClass:\"ship-speed-loss-settings-list\"},[_c('v-list-item',{on:{\"click\":function($event){return _vm.setMCRSettings()}}},[_c('v-list-item-title',[_vm._v(\"Filter settings\")])],1),(_vm.isDerivedStwFeatureEnabled)?_c('v-list-item',{on:{\"click\":function($event){_vm.speedMeasurementModal = true}}},[_c('v-list-item-title',[_vm._v(\"Speed measurement settings\")])],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.setBenchmarkSettings()}}},[_c('v-list-item-title',[_vm._v(\" Benchmark settings \"),_c('v-tooltip',{attrs:{\"top\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"mr-1 flex-grow-0\",attrs:{\"color\":\"primary\",\"left\":\"\"}},on),[_vm._v(_vm._s(_vm.benchmarkType.icon))])]}}],null,false,3578246202)},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(_vm._s(_vm.benchmarkType.tooltip))])])],1)],1)],1)],1)],1)]},proxy:true},{key:\"bottom-actions\",fn:function(){return [_c('div',{staticClass:\"bottom-actions d-flex justify-space-around\",staticStyle:{\"width\":\"100%\"}},[_c('v-btn',{staticClass:\"my-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.createEvent()}}},[_vm._v(\" Insert new event \")]),_c('v-btn',{staticClass:\"my-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setEventImpact()}}},[_vm._v(\" View event impact \")]),_c('v-btn',{staticClass:\"my-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setHullCoating()}}},[_vm._v(\" Insert Hull Coating \")])],1)]},proxy:true}],null,false,3315612063)})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\",\"sm\":\"12\"}},[_c('PropulsionEfficencyCard')],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\",\"sm\":\"12\"}},[_c('OperationalProfileCard',{ref:\"OperationalProfileCard\",attrs:{\"dateRange\":_vm.operationalProfileDateRange},on:{\"update:dateRange\":function($event){_vm.operationalProfileDateRange=$event},\"update:date-range\":function($event){_vm.operationalProfileDateRange=$event},\"markerClicked\":_vm.markerClicked,\"trackClicked\":_vm.trackClicked,\"onOperationalProfileZoom\":_vm.syncSpeedLossChartDates,\"onExpandMap\":_vm.onExpandMap}})],1)],1)],1):_c('div',[_c('FoulingContentLoader')],1)]):_c('FeatureNotAvailable',[_c('template',{slot:\"text\"},[_c('p',[_vm._v(\" We are sorry, the \"),_c('b',[_vm._v(\"Fouling\")]),_vm._v(\" is not yet available for the selected vessel.\"),_c('br')]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\"Please contact \"),_c('a',{attrs:{\"href\":\"mailto:sales@danelec.com\"}},[_vm._v(\"sales@danelec.com\")]),_vm._v(\" to discuss activating \"),_c('b',[_vm._v(\"Fouling module\")]),_vm._v(\".\")])])],2),_c('EditVesselEvent',{ref:\"CreateEventModal\",attrs:{\"is-open\":_vm.CreateEventModalActive},on:{\"update:isOpen\":function($event){_vm.CreateEventModalActive=$event},\"update:is-open\":function($event){_vm.CreateEventModalActive=$event}}}),_c('EventImpactModal',{ref:\"EventImpactModal\",attrs:{\"is-open\":_vm.EventImpactModalActive},on:{\"update:isOpen\":function($event){_vm.EventImpactModalActive=$event},\"update:is-open\":function($event){_vm.EventImpactModalActive=$event}}}),(_vm.loader === false)?_c('BenchmarkSettingsModal',{ref:\"BenchmarkSettingsModal\",attrs:{\"longTrendName\":\"ShipSpeedDev\",\"is-open\":_vm.BenchmarkSettingsModalActive},on:{\"benchmarkUpdated\":_vm.fetchData,\"update:isOpen\":function($event){_vm.BenchmarkSettingsModalActive=$event},\"update:is-open\":function($event){_vm.BenchmarkSettingsModalActive=$event}}}):_vm._e(),_c('HullCoatingModal',{ref:\"HullCoatingModal\",attrs:{\"is-open\":_vm.HullCoatingModalActive},on:{\"update:isOpen\":function($event){_vm.HullCoatingModalActive=$event},\"update:is-open\":function($event){_vm.HullCoatingModalActive=$event}}}),_c('MCRModal',{ref:\"MCRModal\",attrs:{\"is-open\":_vm.MCRModalActive},on:{\"update:isOpen\":function($event){_vm.MCRModalActive=$event},\"update:is-open\":function($event){_vm.MCRModalActive=$event},\"filteringUpdated\":_vm.onFilteringSettingsUpdated}}),_c('SpeedLossTrendDetailsModal',{ref:\"SpeedLossTrendDetailsModal\",on:{\"onTrendPeriodChanged\":_vm.onTrendPeriodChanged}}),_c('v-dialog',{attrs:{\"max-width\":\"1350px\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.closeOperationalProfileModal.apply(null, arguments)}},model:{value:(_vm.OperationalProfileModal),callback:function ($$v) {_vm.OperationalProfileModal=$$v},expression:\"OperationalProfileModal\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"primary\",\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Operational Profile\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeOperationalProfileModal}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-divider'),_c('v-card-text',{staticClass:\"pt-6\"},[_c('OperationalProfileCard',{ref:\"OperationalProfileExpanded\",attrs:{\"isModal\":true,\"dateRange\":_vm.operationalProfileDateRange},on:{\"update:dateRange\":function($event){_vm.operationalProfileDateRange=$event},\"update:date-range\":function($event){_vm.operationalProfileDateRange=$event},\"markerClicked\":_vm.markerClicked,\"trackClicked\":_vm.trackClicked,\"onOperationalProfileZoom\":_vm.syncSpeedLossChartDates}})],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"400px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.closeSpeedMeasurementSettingsModal.apply(null, arguments)},\"click:outside\":_vm.closeSpeedMeasurementSettingsModal},model:{value:(_vm.speedMeasurementModal),callback:function ($$v) {_vm.speedMeasurementModal=$$v},expression:\"speedMeasurementModal\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"mb-4\"},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Speed measurement settings\")])]),_c('v-card-text',[_c('v-select',{staticClass:\"speed-measurement-select elevation-0\",attrs:{\"items\":_vm.speedMeasurementItems,\"item-value\":\"value\",\"item-text\":\"text\",\"label\":\"Speed measurement\",\"hint\":_vm.derivedStwHint,\"persistent-placeholder\":\"\",\"persistent-hint\":\"\",\"hide-details\":\"auto\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.tempUseDerivedStw),callback:function ($$v) {_vm.tempUseDerivedStw=$$v},expression:\"tempUseDerivedStw\"}})],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\"},on:{\"click\":_vm.onUseDerivedStwChanged}},[_vm._v(\" Save \")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.closeSpeedMeasurementSettingsModal.apply(null, arguments)}}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-skeleton-loader',{staticStyle:{\"height\":\"430px\"},attrs:{\"type\":\"image\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('v-skeleton-loader',{staticStyle:{\"height\":\"430px\"},attrs:{\"type\":\"image\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-skeleton-loader',{staticStyle:{\"height\":\"500px\"},attrs:{\"type\":\"image\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-skeleton-loader',{staticStyle:{\"height\":\"500px\"},attrs:{\"type\":\"image\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({})\nexport default class FoulingContentLoader extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FoulingContentLoader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FoulingContentLoader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FoulingContentLoader.vue?vue&type=template&id=06c73856&scoped=true&\"\nimport script from \"./FoulingContentLoader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FoulingContentLoader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FoulingContentLoader.vue?vue&type=style&index=0&id=06c73856&lang=scss&scoped=true&\"\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 \"06c73856\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCol,VRow,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"490px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.close.apply(null, arguments)},\"click:outside\":_vm.close},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Impact resulting from trend event\")])]),_c('v-card-text',{staticClass:\"pt-6\"},[(!_vm.hasTrendEvents)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" [ Minimum one trend event required to calculate impact. ] \")]):_c('v-select',{attrs:{\"label\":\"Event\",\"items\":_vm.trendEvents,\"item-value\":\"id\",\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":_vm.fetchEventImpact},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDate(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}},{key:\"item\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDate(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}}]),model:{value:(_vm.selectedTrendEvent),callback:function ($$v) {_vm.selectedTrendEvent=$$v},expression:\"selectedTrendEvent\"}}),(_vm.isLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}}):[(_vm.fetchEventImpactError)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" Could not get event impact. This might be because the trend period before or after selected trend event is benchmarking, or have no data. \")]):[_c('section',[(!_vm.hasEventImpacts)?_c('p',{staticClass:\"warning--text text--darken-1 mt-2\"},[_vm._v(\" Consequences cannot be calculated because the vessel-specific code was not found. Please contact Danelec at \"),_c('a',{attrs:{\"href\":\"mailto:support@danelec.com\"}},[_vm._v(\"support@danelec.com\")]),_vm._v(\" for assistance. \")]):[_c('section',[_c('p',[_vm._v(\" Previous trend period ended on \"),_c('strong',[_vm._v(_vm._s(_vm.formatDate(_vm.selectedTrendEvent.timestamp)))]),_vm._v(\" with a value \"),_c('strong',[_vm._v(_vm._s(_vm.eventImpacts[0].previousPeriodEndValue.toFixed(2))+\"%\")]),_vm._v(\" from baseline. The Benchmark level for the following trend period is \"),_c('strong',[_vm._v(_vm._s(_vm.eventImpacts[0].currentPeriodBenchmark.toFixed(2))+\"%\")]),_vm._v(\" from baseline. \")]),_c('p',{staticClass:\"my-2\"},[_vm._v(\" Based on the trend data and with an assumed draft of \"),_c('strong',[_vm._v(_vm._s(_vm.vessel.draftMean.toFixed(1))+\"m\")]),_vm._v(\" the following benefit was achieved: \")])]),_c('v-data-table',{staticClass:\"mb-4\",attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.eventImpacts,\"dense\":\"\",\"no-data-text\":\"No data\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\",\"fixed-header\":\"\"},scopedSlots:_vm._u([{key:\"item.power\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.mcrPercentage)+\"% (\"+_vm._s(item.power)+\" kW) \")]}},{key:\"item.fuelConsumptionDiff\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm.formatValue(item.fuelConsumptionDiff))+\" \")]}}])})]],2)]]],2),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},[_vm._v(\"close\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Vue, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { FoulingEventImpact } from \"@/types/FoulingEventImpact\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n\nconst Fouling = getModule(FoulingModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n@Component({\n components: {},\n})\nexport default class EventImpactModal extends Vue {\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n\n isLoading = true;\n fetchEventImpactError = false;\n eventImpacts: FoulingEventImpact[] = [];\n selectedTrendEvent: VesselEvent | undefined;\n tableHeaders = [\n { text: \"MCR\", value: \"power\" },\n { text: \"Fuel Oil Impact\", value: \"fuelConsumptionDiff\" },\n ];\n\n @Watch(\"trendEvents\")\n @Watch(\"config\")\n async trendEventsChanged(): Promise {\n this.selectedTrendEvent = this.trendEvents[0];\n await this.fetchEventImpact();\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get hasTrendEvents(): boolean {\n return VesselEvents.trendEvents?.length > 0;\n }\n\n get trendEvents(): VesselEvent[] {\n return VesselEvents.trendEvents;\n }\n\n get config(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get hasEventImpacts(): boolean {\n return this.eventImpacts.length > 0;\n }\n\n open(): void {\n this.dialog = true;\n }\n\n close(): void {\n this.dialog = false;\n }\n\n formatDate(timestamp: string): string {\n return moment(timestamp).format(\"DD.MMM YYYY\");\n }\n\n formatValue(value: number): string {\n return `${value.toFixed(2)} MT/day`;\n }\n\n async fetchEventImpact(): Promise {\n try {\n this.isLoading = true;\n this.eventImpacts = await Fouling.fetchEventImpact({ vesselId: this.vessel!.id, eventDate: this.selectedTrendEvent!.timestamp });\n this.fetchEventImpactError = false;\n } catch (error) {\n this.fetchEventImpactError = true;\n } finally {\n this.isLoading = false;\n }\n }\n\n async created(): Promise {\n if (!this.vessel || !this.hasTrendEvents) {\n this.isLoading = false;\n } else {\n this.selectedTrendEvent = this.trendEvents[0];\n await this.fetchEventImpact();\n this.isLoading = false;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventImpactModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventImpactModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventImpactModal.vue?vue&type=template&id=7ac8a2c5&scoped=true&\"\nimport script from \"./EventImpactModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventImpactModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EventImpactModal.vue?vue&type=style&index=0&id=7ac8a2c5&lang=scss&scoped=true&\"\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 \"7ac8a2c5\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDataTable,VDialog,VSelect,VSkeletonLoader,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)},\"click:outside\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Benchmark settings\")])]),_c('v-card-text',[_c('v-radio-group',{model:{value:(_vm.foulingChartConfig.useManualBenchmark),callback:function ($$v) {_vm.$set(_vm.foulingChartConfig, \"useManualBenchmark\", $$v)},expression:\"foulingChartConfig.useManualBenchmark\"}},[_c('v-radio',{attrs:{\"value\":false},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Use automatic benchmark level \"),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"250px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(\"Automatic benchmark is calculated by taking the average value of the 120 first deviations from baseline.\")])])]},proxy:true}])}),_c('v-radio',{attrs:{\"label\":\"Use manual benchmark level\",\"value\":true}})],1),_c('span',{staticClass:\"d-flex flex-row justify-space-between align-end\"},[_c('v-text-field',{staticClass:\"shrink\",attrs:{\"suffix\":\"% from baseline\",\"label\":\"Manual benchmark is:\",\"rules\":[_vm.benchmarkLevelInputRules],\"hint\":\"Value from -40 to 40\"},on:{\"blur\":_vm.resetManualBenchmarkLevel},model:{value:(_vm.foulingChartConfig.benchmark),callback:function ($$v) {_vm.$set(_vm.foulingChartConfig, \"benchmark\", _vm._n($$v))},expression:\"foulingChartConfig.benchmark\"}})],1)],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"form\":\"edit-event-form\",\"disabled\":_vm.disableSaveBenchmarkLevelSettings},on:{\"click\":_vm.updateBenchmarkLevelSettings}},[_vm._v(\"Save\")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\"Cancel\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Vue, Component, PropSync, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\nconst Fouling = getModule(FoulingModule, store);\n\n@Component\nexport default class BenchmarkSettingsModal extends Vue {\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n\n benchmark: { vesselId: number; benchmark: number } = { vesselId: this.vessel?.id ?? 0, benchmark: 0 };\n foulingChartConfig: FoulingChartConfig = {} as FoulingChartConfig;\n useManualBenchmarkLevel = false;\n\n // @Watchers\n @Watch(\"foulingChartConfig\")\n onFoulingChartConfigChanged(): void {\n this.foulingChartConfig = this.getFoulingChartConfig;\n }\n\n // @Getters\n get disableSaveBenchmarkLevelSettings(): boolean {\n return this.foulingChartConfig.benchmark > 40 || this.foulingChartConfig.benchmark < -40;\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n // @Methods\n benchmarkLevelInputRules(value: any): boolean | string {\n if (!!!value && this.foulingChartConfig.useManualBenchmark) return \"Required\";\n else return (-40 <= value && value <= 40) || \"Benchmark level must be a number between -40 and 40.\";\n }\n\n open(): void {\n this.dialog = true;\n }\n\n resetManualBenchmarkLevel(): void {\n if (!!!this.foulingChartConfig.benchmark) {\n this.foulingChartConfig.benchmark = 0;\n }\n }\n\n cancel(): void {\n this.dialog = false;\n }\n\n async updateBenchmarkLevelSettings(): Promise {\n try {\n await Fouling.updateFoulingChartConfig(this.foulingChartConfig);\n await Fouling.fetchFoulingChartConfig(this.vessel!.id);\n Snackbar.showSnackbar({ text: \"Benchmark settings successfully updated\", color: \"success\" });\n this.$emit(\"benchmarkUpdated\");\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update benchmark settings\" });\n } finally {\n this.dialog = false;\n }\n }\n\n async created(): Promise {\n if (!this.vessel) return;\n this.foulingChartConfig = await Fouling.fetchFoulingChartConfig(this.vessel.id);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BenchmarkSettingsModal.vue?vue&type=template&id=45caea59&\"\nimport script from \"./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"\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\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VRadio,VRadioGroup,VSpacer,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)},\"click:outside\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Filter settings\")])]),_c('v-card-text',[_c('v-card-subtitle',{staticClass:\"pa-0\"},[_c('span',{staticClass:\"primary2--text\"},[_vm._v(\"Note: filters configured here will not be applied to the Diagnostics tab.\")])]),_c('v-text-field',{staticClass:\"mcr-input mt-6 mb-3\",attrs:{\"type\":\"number\",\"min\":\"1\",\"label\":\"MCR %\",\"rules\":[_vm.fieldRequired.mcr],\"hint\":\"Values when vessel power is BELOW specified percentage are not included in calculations\",\"persistent-placeholder\":\"\",\"persistent-hint\":\"\",\"flat\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numbericFilter},model:{value:(_vm.foulingChartConfig.minPercentMcr),callback:function ($$v) {_vm.$set(_vm.foulingChartConfig, \"minPercentMcr\", _vm._n($$v))},expression:\"foulingChartConfig.minPercentMcr\"}}),_c('v-select',{staticClass:\"windBeaufort-select elevation-0\",attrs:{\"items\":_vm.windBeaufort,\"item-value\":\"value\",\"item-text\":\"text\",\"label\":\"Beaufort Scale\",\"rules\":[_vm.fieldRequired.required],\"hint\":\"Values when wind speed is ABOVE specified Beaufort are not included in calculations\",\"persistent-placeholder\":\"\",\"persistent-hint\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.foulingChartConfig.maxBeaufortWind),callback:function ($$v) {_vm.$set(_vm.foulingChartConfig, \"maxBeaufortWind\", $$v)},expression:\"foulingChartConfig.maxBeaufortWind\"}})],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.updateFoulingChartConfig}},[_vm._v(\" Save \")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\" Cancel \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Vue, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\ninterface Payload {\n vesselId: number;\n mcr: number;\n windBeaufort: string;\n}\n\n@Component\nexport default class MCRModal extends Vue {\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n\n payload: Payload = { vesselId: this.vessel?.id } as Payload;\n foulingChartConfig: FoulingChartConfig = {} as FoulingChartConfig;\n windBeaufort = [\n { text: \"BF3\", value: 3 },\n { text: \"BF4\", value: 4 },\n { text: \"BF5\", value: 5 },\n { text: \"BF6\", value: 6 },\n { text: \"BF7\", value: 7 },\n { text: \"BF8\", value: 8 },\n { text: \"BF9\", value: 9 },\n { text: \"BF10\", value: 10 },\n { text: \"BF11\", value: 11 },\n { text: \"BF12\", value: 12 },\n ];\n\n // @Getters\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get isSaveDisabled(): boolean {\n return !this.foulingChartConfig.minPercentMcr || !this.foulingChartConfig.maxBeaufortWind;\n }\n\n fieldRequired = {\n required: (value: any) => !!value || \"Field is required\",\n mcr: (value: any) => {\n if (!!!value) return \"Field is required\";\n else return (1 <= value && value <= 100) || \"MCR must be a number between 1 and 100.\";\n },\n };\n\n numbericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n // @Methods\n open(): void {\n this.dialog = true;\n }\n\n cancel(): void {\n this.dialog = false;\n }\n\n @Watch(\"getFoulingChartConfig\")\n fetchConfig(): void {\n this.foulingChartConfig = Fouling.foulingChartConfig;\n }\n\n async updateFoulingChartConfig(): Promise {\n try {\n await Fouling.updateFoulingChartConfig(this.foulingChartConfig);\n await Fouling.fetchFoulingChartConfig(this.vessel!.id);\n this.$emit(\"filteringUpdated\");\n Snackbar.showSnackbar({ text: \"Filter settings successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update Filter settings\" });\n } finally {\n this.dialog = false;\n }\n }\n\n async created(): Promise {\n if (!this.vessel) return;\n this.foulingChartConfig = await Fouling.fetchFoulingChartConfig(this.vessel.id);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MCRModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MCRModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MCRModal.vue?vue&type=template&id=aafc005e&scoped=true&\"\nimport script from \"./MCRModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./MCRModal.vue?vue&type=script&lang=ts&\"\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 \"aafc005e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardText,VCardTitle,VDialog,VSelect,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)},\"click:outside\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Hull Coating\")])]),_c('v-card-text',[_c('v-select',{staticClass:\"manufacturer-select elevation-0 mt-8 mb-6\",attrs:{\"items\":_vm.hullCoatingManufacturer,\"item-text\":\"name\",\"item-value\":\"manufacturerId\",\"label\":\"Manufacturer\",\"rules\":[_vm.fieldRequired.required],\"persistent-placeholder\":\"\",\"hide-details\":\"auto\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.payload.manufacturerId),callback:function ($$v) {_vm.$set(_vm.payload, \"manufacturerId\", $$v)},expression:\"payload.manufacturerId\"}}),_c('v-select',{staticClass:\"type-select elevation-0 mb-6\",attrs:{\"items\":_vm.hullCoatingType,\"item-text\":\"name\",\"item-value\":\"typeId\",\"label\":\"Type\",\"rules\":[_vm.fieldRequired.required],\"hide-details\":\"auto\",\"persistent-placeholder\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.payload.typeId),callback:function ($$v) {_vm.$set(_vm.payload, \"typeId\", $$v)},expression:\"payload.typeId\"}}),_c('v-text-field',{staticClass:\"brand-input\",attrs:{\"label\":\"Brand\",\"placeholder\":\"SeaQuantum X200\",\"rules\":[_vm.fieldRequired.required],\"persistent-placeholder\":\"\",\"hide-details\":\"auto\",\"flat\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.payload.brand),callback:function ($$v) {_vm.$set(_vm.payload, \"brand\", $$v)},expression:\"payload.brand\"}})],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.submit}},[_vm._v(\" Save \")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\" Cancel \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { HullCoating } from \"@/types/HullCoating\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\ninterface Payload {\n vesselId: number;\n manufacturerId: number;\n typeId: number;\n brand: string;\n}\n\n@Component\nexport default class HullCoatingModal extends Vue {\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n @Prop() readonly longTrendName!: string;\n\n payload: HullCoating = { vesselId: this.vessel?.id } as HullCoating;\n manufacturers = [\"AkzoNobel\", \"Jotun\", \"Hempel\", \"PPG\", \"BASF\", \"Nipsea Group\", \"Dow\", \"Valspar\", \"Chukogu Marine Paints\", \"Sherwin-Williams Company\", \"Axalta Coating Systems\"];\n types = [\"Antifouling\", \"Copper\", \"Silcon Based\", \"TBD\"];\n\n // @Getters\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get hullCoatingManufacturer(): any[] {\n return Fouling.hullCoatingManufacturer;\n }\n\n get hullCoatingType(): any[] {\n return Fouling.hullCoatingType;\n }\n\n get isSaveDisabled(): boolean {\n return !this.payload.manufacturerId || !this.payload.typeId || !this.payload.brand;\n }\n\n fieldRequired = {\n required: (value: any) => !!value || \"Field is required\",\n };\n\n // @Methods\n open(): void {\n this.dialog = true;\n }\n\n cancel(): void {\n this.dialog = false;\n }\n\n async submit(): Promise {\n if (!this.vessel) return;\n try {\n await Fouling.postHullCoatingVessel(this.payload);\n this.payload = await Fouling.fetchHullCoatingVessel(this.vessel.id);\n this.dialog = false;\n Snackbar.showSnackbar({\n text: `Hull Coating succecfully saved`,\n color: \"success\",\n });\n } catch (err) {\n Snackbar.showSnackbar({ text: \"Failed to save Hull Coating\" });\n }\n }\n\n async created(): Promise {\n await Fouling.fetchHullCoatingType();\n await Fouling.fetchHullCoatingManufacturer();\n if (this.vessel) {\n const response = await Fouling.fetchHullCoatingVessel(this.vessel.id);\n if (!response) {\n this.payload.manufacturerId = null;\n this.payload.typeId = null;\n } else this.payload = response;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HullCoatingModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HullCoatingModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HullCoatingModal.vue?vue&type=template&id=ad6a0a48&scoped=true&\"\nimport script from \"./HullCoatingModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./HullCoatingModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HullCoatingModal.vue?vue&type=style&index=0&id=ad6a0a48&lang=scss&scoped=true&\"\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 \"ad6a0a48\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VSelect,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{class:_vm.classes,attrs:{\"height\":\"100%\"}},[_c('v-card-title',{staticClass:\"d-flex align-center justify-center\"},[_c('p',{staticClass:\"text-h4 font-weight-bold\"},[_c('v-icon',{attrs:{\"color\":_vm.statecolor,\"large\":\"\"}},[_vm._v(_vm._s(_vm.stateicon)+\" \")]),(_vm.isBenchmarking)?_c('span',{staticStyle:{\"font-size\":\"75%\"}},[_vm._v(\"Benchmarking\")]):_c('span',{staticStyle:{\"font-size\":\"75%\"}},[_vm._v(\" \"+_vm._s(_vm.latestSpeedLossPercentage)+\"% Speed \"),(_vm.isLoss)?_c('span',{staticClass:\"pa-1\"},[_vm._v(\"Loss\")]):_c('span',{staticClass:\"pa-1\"},[_vm._v(\"Gained\")])])],1)]),(_vm.cumulativeAddedFuelConsumption)?_c('v-card-subtitle',{staticClass:\"text-h6 pb-5\"},[_c('b',[_vm._v(\"Cumulative Added Consumption \"),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"300px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"ml-n1\",attrs:{\"right\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,false,3020631541)},[_c('span',[_vm._v(_vm._s(_vm.cumulativeAddedConsumptionTooltipText))])]),_vm._v(\": \")],1),_vm._v(\" \"+_vm._s(_vm.cumulativeAddedFuelConsumption)+\" ton(s) \")]):_vm._e(),_c('v-card-text',{staticClass:\"speed-loss__content text-lg-body-1\"},[_c('div',{staticClass:\"pb-2\"},[_c('p',[_c('b',[_vm._v(\"Baseline \"),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"250px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"ml-n1\",attrs:{\"right\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.baselineTooltipText))])]),_vm._v(\":\")],1),_vm._v(\" Model tank test \")]),_c('p',[_c('b',[_vm._v(\"Benchmark \"),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"300px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"ml-n1\",attrs:{\"right\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.benchmarkTooltipText))])]),_vm._v(\": \")],1),_vm._v(\" \"+_vm._s(_vm.formatedLatestTrendEventDate)+\" \"+_vm._s(_vm.latestTrendEvent.name)+\" \")])]),_c('div',[_c('v-card-subtitle',{staticClass:\"text-h6 text-center pa-0\"},[_c('b',[_vm._v(\"Color Legend\")])]),_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('span',{staticClass:\"color-square green\"}),_c('b',[_vm._v(\"Green zone:\")]),_vm._v(\" If speed loss is better than \"+_vm._s(_vm.formatColorLegendValue(_vm.greenZoneEnds))+\"% compared to the Baseline \"),_c('em',[_vm._v(\"(or no greater than 5% compared to the benchmark)\")]),_vm._v(\" the vessel's status is green. \")]),_c('li',[_c('span',{staticClass:\"color-square yellow\"}),_c('b',[_vm._v(\"Yellow zone:\")]),_vm._v(\" When speed loss is between \"+_vm._s(_vm.formatColorLegendValue(_vm.greenZoneEnds))+\"% and \"+_vm._s(_vm.formatColorLegendValue(_vm.yellowZoneEnds))+\"% compared to the Baseline \"),_c('em',[_vm._v(\"(which is between 5% and 10% below the Benchmark)\")]),_vm._v(\" the vessel's status is yellow. \")]),_c('li',[_c('span',{staticClass:\"color-square red\"}),_c('b',[_vm._v(\" Red zone:\")]),_vm._v(\" When speed loss is more than \"+_vm._s(_vm.formatColorLegendValue(_vm.yellowZoneEnds))+\"% compared to the Baseline\"),_c('em',[_vm._v(\"(which is more than 10% below the Benchmark)\")]),_vm._v(\" the vessel's status is Red. \")])])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport dateHelper from \"@/Scripts/utilities/date-helper\";\n// types\nimport { SpeedLossStatistic } from \"@/types/SpeedLossStatistic\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { FoulingAddedConsumption } from \"@/types/FoulingAddedConsumption\";\n\n@Component({})\nexport default class SpeedLossCard extends Vue {\n @Prop({ required: true }) readonly latestSpeedLossStatistics!: SpeedLossStatistic | null;\n @Prop({ required: true }) readonly latestTrendEvent!: VesselEvent;\n @Prop({ required: true }) readonly addedFuelConsumption!: FoulingAddedConsumption;\n @Prop() readonly isBenchmarking!: boolean;\n\n // @Getters\n get latestSpeedLossPercentage(): number | string {\n if (this.latestSpeedLossStatistics == null) return \"N/A\";\n return Math.abs(this.latestSpeedLossStatistics.trendEndValue * -1).toFixed(1);\n }\n\n get benchmarkLevel(): number | string {\n if (this.latestSpeedLossStatistics == null) return \"N/A\";\n return this.latestSpeedLossStatistics.benchmark.level.toFixed(1);\n }\n\n get isLoss(): boolean {\n if (!this.latestSpeedLossStatistics) return true;\n return this.latestSpeedLossStatistics.trendEndValue < 1;\n }\n\n get greenZoneEnds(): number {\n if (!this.latestSpeedLossStatistics) return 0 - 5;\n return this.latestSpeedLossStatistics.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n get state(): string {\n if (this.isBenchmarking) return \"benchmarking\";\n if (this.latestSpeedLossStatistics == null) return \"N/A\";\n if (this.latestSpeedLossStatistics.trendEndValue < this.yellowZoneEnds) return \"high\";\n if (this.latestSpeedLossStatistics.trendEndValue < this.greenZoneEnds && this.latestSpeedLossStatistics.trendEndValue > this.yellowZoneEnds) return \"medium\";\n if (this.latestSpeedLossStatistics.trendEndValue > this.greenZoneEnds) return \"normal\";\n return \"N/A\";\n }\n\n get statecolor(): string {\n switch (this.state) {\n case \"high\":\n return \"#ff5252\";\n case \"medium\":\n return \"#ffc107\";\n case \"normal\":\n return \"#4caf50\";\n case \"benchmarking\":\n return \"#003B42\";\n default:\n return \"#fff\";\n }\n }\n\n get stateicon(): string {\n switch (this.state) {\n case \"high\":\n return \"mdi-alert-circle\";\n case \"medium\":\n return \"mdi-alert-circle\";\n case \"normal\":\n return \"mdi-check-circle\";\n case \"benchmarking\":\n return \"mdi-gauge\";\n default:\n return \"mdi-check-circle\";\n }\n }\n\n get baselineTooltipText(): string {\n return \"The baseline is used to establish the 0% performance of the vessel, all of the speed loss values are calculated in relation to this baseline. The speed loss percentage you see in the top of this box in large text is relative to the Baseline.\";\n }\n\n get benchmarkTooltipText(): string {\n return \"The benchmark is used to calculate the vessel's performance against a recent trend event. The benchmark determines the status of the vessel as green, yellow, or red. A user can set an automatic benchmark based on the first 120 data points after the event, or they can manually set a benchmark relative to the baseline performance.\";\n }\n\n get cumulativeAddedConsumptionTooltipText(): string {\n return \"This metric reports the cumulative additional fuel consumption the vessel has consumed relative to its benchmark performance level over the most recent trend event period. The metric starts at 0 when a new trend event is created and it gets larger as the performance of the vessel degrades over the trend period. The cumulative additional consumption is calculated by adding up each day's additional consumption compared to the benchmark performance based on the vessel's actual measured speeds and drafts. The vessel's SFR shop curve is used to translate the power differences into additional fuel consumption.\";\n }\n\n get classes(): any[] {\n return [\"speed-loss\", this.state];\n }\n\n get formatedLatestTrendEventDate(): string | undefined {\n if (!this.latestTrendEvent.timestamp || this.latestSpeedLossStatistics?.benchmark.isManual) return;\n return dateHelper.getFormatedDateString(this.latestTrendEvent.timestamp);\n }\n\n get benchmarkFormatedEndDate(): string | undefined {\n if (!this.latestSpeedLossStatistics?.benchmark.end) return;\n return dateHelper.getFormatedDateString(this.latestSpeedLossStatistics.benchmark.end);\n }\n\n get addedFuelConsumptionRate(): number | undefined {\n if (!this.addedFuelConsumption) return;\n return Number(Number(this.addedFuelConsumption.periodEndAddedConsumptionRate).toFixed(2));\n }\n\n get cumulativeAddedFuelConsumption(): string | undefined {\n if (!this.addedFuelConsumption || !this.latestTrendEvent || this.isBenchmarking) return;\n if (this.addedFuelConsumption.fromDate !== this.latestTrendEvent.timestamp) {\n return \"N/A\";\n }\n const roundedNumber = Math.round(Number(this.addedFuelConsumption.cumulativeAddedConsumption));\n return roundedNumber.toLocaleString();\n }\n\n formatColorLegendValue(value: number): string {\n // Showing \"opposite\" sign because \"speed loss\" already indicates a negative number.\n const adjustedValue = -value;\n return adjustedValue.toFixed(1);\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedLossCard.vue?vue&type=template&id=39289875&scoped=true&\"\nimport script from \"./SpeedLossCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpeedLossCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpeedLossCard.vue?vue&type=style&index=0&id=39289875&lang=scss&scoped=true&\"\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 \"39289875\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardSubtitle,VCardText,VCardTitle,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"height\":\"100%\"}},[_c('v-card-title',[_c('v-icon',{attrs:{\"left\":\"\",\"color\":_vm.statecolor}},[_vm._v(_vm._s(_vm.stateicon))]),_c('span',{staticClass:\"d-flex align-center font-weight-bold\"},[_vm._v(\"Speed Loss Compared to Baseline\")]),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"medium\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.chartTitleTooltipText))])]),_vm._t(\"external-actions\")],2),(_vm.isDerivedStwEnabled)?_c('span',{staticClass:\"d-flex px-6 py-1\"},[_c('b',[_vm._v(\"Speed Measurement Source: \")]),_c('span',{staticClass:\"speed-source-edit ml-2\",on:{\"click\":_vm.onEditSpeedSource}},[_vm._v(\" \"+_vm._s(_vm.speedMeasurementSource)+\" \"),_c('v-icon',{staticClass:\"mb-2 ml-1\",attrs:{\"small\":\"\",\"color\":\"primary lighten-3\"}},[_vm._v(\"mdi-pencil\")])],1)]):_vm._e(),(_vm.hullCoatingVessel)?_c('span',{staticClass:\"px-6 py-1\"},[_c('b',[_vm._v(\"Hull Coating: \")]),_c('span',{staticClass:\"hull-coating-source ml-2\",on:{\"click\":_vm.onEditHullSource}},[_vm._v(\" \"+_vm._s(_vm.hullCoatingVessel.manufacturerName)+\" | \"+_vm._s(_vm.hullCoatingVessel.typeName)+\" | \"+_vm._s(_vm.hullCoatingVessel.brand)+\" \"),_c('v-icon',{staticClass:\"mb-2 ml-1\",attrs:{\"small\":\"\",\"color\":\"primary lighten-3\"}},[_vm._v(\"mdi-pencil\")])],1)]):_vm._e(),_c('v-card-text',[_c('div',{staticClass:\"chart__loader-overlay\",class:{ 'active': _vm.isDataLoading }},[_c('v-progress-circular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}})],1),_c('Highcharts',{ref:\"chart\",staticClass:\"overflow-visible\",staticStyle:{\"height\":\"100%\"},attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":true,\"width\":\"100%\",\"callback\":_vm.chartReady}})],1),_c('v-card-actions',[_vm._t(\"bottom-actions\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// highcharts\nimport { Chart } from \"highcharts-vue\";\nimport HighchartsNoData from \"highcharts/modules/no-data-to-display\";\nimport Highcharts from \"highcharts\";\nHighchartsNoData(Highcharts);\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { IDataSerie } from \"@/types/highcharts/dataSerie\";\nimport { IPlotLine, DefaultVesselEventPlotline } from \"@/types/highcharts/plotLine\";\nimport { IPlotBand } from \"@/types/highcharts/plotBand\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { SpeedLossHistory } from \"@/types/SpeedLossHistory\";\nimport { SpeedLossStatistic } from \"@/types/SpeedLossStatistic\";\nimport { HullCoating } from \"@/types/HullCoating\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst Fouling = getModule(FoulingModule, store);\n\n@Component({\n components: {\n Highcharts: Chart,\n },\n})\nexport default class SpeedLossChartCard extends Vue {\n @Prop() readonly speedLossHistory!: SpeedLossHistory[];\n @Prop() readonly speedLossStatistics!: SpeedLossStatistic[];\n @Prop() readonly isBenchmarking!: boolean;\n @Prop() readonly isDataLoading!: boolean;\n @Prop() readonly isDerivedStwEnabled!: boolean;\n\n chart!: any;\n chartLoaded = false;\n\n // @Getters\n get hullCoatingVessel(): HullCoating | null {\n return Fouling.hullCoatingVessel ?? null;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get speedMeasurementSource(): string {\n return this.getFoulingChartConfig.useDerivedStw ? \"Derived STW\" : \"Speed Log\";\n }\n\n get latestSpeedLossStatistics(): SpeedLossStatistic | null {\n return this.speedLossStatistics[this.speedLossStatistics.length - 1] ?? null;\n }\n\n get greenZoneEnds(): number {\n if (!this.latestSpeedLossStatistics) return 0 - 5;\n return this.latestSpeedLossStatistics.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n get state(): string {\n if (this.isBenchmarking) return \"benchmarking\";\n if (this.latestSpeedLossStatistics == null) return \"N/A\";\n if (this.latestSpeedLossStatistics.trendEndValue < this.yellowZoneEnds) return \"high\";\n if (this.latestSpeedLossStatistics.trendEndValue < this.greenZoneEnds && this.latestSpeedLossStatistics.trendEndValue > this.yellowZoneEnds) return \"medium\";\n if (this.latestSpeedLossStatistics.trendEndValue > this.greenZoneEnds) return \"normal\";\n return \"N/A\";\n }\n\n get stateicon(): string {\n switch (this.state) {\n case \"high\":\n return \"mdi-alert-circle\";\n case \"medium\":\n return \"mdi-alert-circle\";\n case \"normal\":\n return \"mdi-check-circle\";\n case \"benchmarking\":\n return \"mdi-gauge\";\n default:\n return \"mdi-check-circle\";\n }\n }\n\n get statecolor(): string {\n switch (this.state) {\n case \"high\":\n return \"#ff5252\";\n case \"medium\":\n return \"#ffc107\";\n case \"normal\":\n return \"#4caf50\";\n case \"benchmarking\":\n return \"#003B42\";\n default:\n return \"#fff\";\n }\n }\n\n get ChartOptions(): any {\n if (!this.chartLoaded) return {};\n const ctx: any = this;\n\n const options = {\n time: { useUTC: false },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n animation: false,\n height: 400,\n spacingTop: 40,\n // style: { fontFamily: \"Helvetica Neue\" },\n events: {\n selection: function (e: any) {\n const $this: any = this;\n setTimeout(() => {\n if (!e.resetSelection) ctx.$emit(\"onShipSpeedLogChartSelection\", { min: $this.xAxis[0].min, max: $this.xAxis[0].max });\n });\n },\n },\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: true,\n },\n title: {\n text: null,\n },\n yAxis: {\n title: {\n // text: `${this.firstLongTrendPeriod.unitName} (${this.firstLongTrendPeriod.unitCaption})`,\n text: \"Percent (%)\",\n },\n // min: this.firstLongTrendPeriod.isRpmDiagnostic ? -25 : -50,\n // max: this.firstLongTrendPeriod.isRpmDiagnostic ? 25 : 50,\n // min: Math.min(...this.speedLossHistory.map(item => item.speedLossPercent)),\n // max: Math.max(...this.speedLossHistory.map(item => item.speedLossPercent)),\n min: -50,\n max: 50,\n tickPixelInterval: 20,\n },\n xAxis: {\n title: {\n text: null,\n },\n type: \"datetime\",\n plotLines: this.vesselEventPlotLines,\n plotBands: this.vesselEventPlotBands,\n labels: {\n y: 35,\n },\n },\n series: this.dataSeries,\n tooltip: {\n backgroundColor: \"rgba(0, 0, 0, .85)\",\n borderWidth: 2,\n style: {\n color: \"#EBEBEB\",\n },\n },\n plotOptions: {\n series: {\n zIndex: 1,\n },\n },\n exporting: {\n // filename: `${this.vessel?.name}_${this.longTrend.descriptionLong}`,\n filename: `${this.vessel?.name}_`,\n chartOptions: {\n legend: {\n enabled: false,\n },\n title: {\n // text: `${this.vessel?.name} [${this.longTrend.descriptionLong}]`,\n text: `${this.vessel?.name}`,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n };\n\n return options;\n }\n\n get speedLossPoints(): IDataSerie {\n return {\n name: \"Deviation from baseline\",\n type: \"line\",\n color: \"#800000\",\n zIndex: 1,\n enableMouseTracking: true,\n cropThreshold: 9999,\n marker: {\n symbol: \"circle\",\n },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Deviation from baseline: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: this.speedLossHistory.map(item => [Date.parse(`${item.timestamp}`), item.speedLossPercent]),\n };\n }\n\n get trendLines(): IDataSerie[] {\n const trendLines: IDataSerie[] = [];\n this.filteredStatistics.forEach(item => {\n trendLines.push({\n name: `Trendline (${moment.utc(item.fromDate).format(\"DD.MMM YYYY\")})`,\n type: \"line\",\n color: \"#008000\",\n zIndex: 2,\n cropThreshold: 9999,\n marker: {\n enabled: false,\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: [\n [Date.parse(`${item.fromDate}`), item.trendLine.b],\n [Date.parse(`${item.toDate}`), item.trendEndValue],\n ],\n });\n });\n return trendLines;\n }\n\n get firstSpeedLossDate(): string {\n return this.speedLossHistory[0].timestamp;\n }\n\n get lastSpeedLossDate(): string {\n return this.speedLossHistory[this.speedLossHistory.length - 1].timestamp;\n }\n\n get filteredStatistics(): SpeedLossStatistic[] {\n const filteredStatistics = this.speedLossStatistics.filter(s => s.fromDate >= this.firstSpeedLossDate);\n if (filteredStatistics.length <= 0) {\n const lastStatistics = this.speedLossStatistics[this.speedLossStatistics.length - 1];\n if (lastStatistics) filteredStatistics.push(lastStatistics);\n }\n return filteredStatistics;\n }\n\n get benchmarkLine(): IDataSerie {\n const benchmarkingData: [number, number][] = [];\n this.filteredStatistics.forEach(item => benchmarkingData.push([Date.parse(`${item.fromDate}`), item.benchmark.level], [Date.parse(`${item.toDate}`), item.benchmark.level]));\n\n return {\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n cropThreshold: 9999,\n zIndex: 4,\n visible: false,\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: benchmarkingData,\n };\n }\n\n get baseline(): IDataSerie {\n if (!this.speedLossStatistics.length) return {} as IDataSerie;\n const fromDate = this.firstSpeedLossDate;\n const toDate = this.lastSpeedLossDate;\n return {\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n cropThreshold: 9999,\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [Date.parse(`${fromDate}`), 0],\n [Date.parse(`${toDate}`), 0],\n ],\n };\n }\n\n get dataSeries(): IDataSerie[] {\n if (!this.speedLossHistory.length) return [] as IDataSerie[];\n let series: IDataSerie[] = [];\n\n series = [this.speedLossPoints, ...this.trendLines, this.benchmarkLine, this.baseline];\n\n return series;\n }\n\n get vesselEventPlotLines(): IPlotLine[] {\n const plotLines: IPlotLine[] = [];\n\n this.vesselEvents.forEach(event => {\n const html = this.getPlotLineLabels(this.getVesselEventsOnSameDate(event.timestamp), event);\n plotLines.push(\n Object.assign(JSON.parse(JSON.stringify(DefaultVesselEventPlotline)), {\n id: `plotline-${event.id}`,\n color: this.eventColor(event.type),\n value: moment.utc(event.timestamp).valueOf(),\n width: 2,\n label: {\n rotation: 0,\n style: { color: this.eventColor(event.type) },\n text: html,\n useHTML: true,\n y: -15,\n x: -11,\n },\n })\n );\n });\n\n return plotLines;\n }\n\n get vesselEventPlotBands(): IPlotBand[] {\n const plotBands: IPlotBand[] = [];\n\n this.speedLossStatistics.forEach((period, index) => {\n plotBands.push({\n from: moment.utc(period.fromDate).valueOf(),\n to: moment.utc(period.toDate).valueOf(),\n id: index,\n className: \"speed-loss-graph__plot-bands\",\n color: \"rgba(0,0,0,0.0)\",\n zIndex: 4,\n events: {\n click: (e: any) => {\n setTimeout(() => {\n if (e.xAxis || e.yAxis) this.$emit(\"plotBandClicked\", this.getTrendPeriodMeta(period));\n });\n },\n mouseover: (e: any) => {\n e.target.attributes.getNamedItem(\"fill\").value = \"#ccd9cc4D\";\n },\n mouseout: (e: any) => {\n e.target.attributes.getNamedItem(\"fill\").value = \"rgba(0,0,0,0.0)\";\n },\n },\n });\n });\n\n return plotBands;\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get vesselEvents(): VesselEvent[] {\n return VesselEvents.allEvents;\n }\n\n get chartTitleTooltipText(): string {\n return (\n \"This graph shows a long trend history of speed loss compared to the baseline used for the vessel. The baseline for the vessel is typically the power vs. speed design curve from the model tank test. A zero (0%) speed loss means that the vessel is performing according to the design curve.\" +\n \"A normal trend line for a vessel shows decreasing speed loss over time (negative values), primarily due to hull fouling and reduced propeller efficiency. The system calculates a speed loss percentage for each day by taking an average of all the speed loss measurements calculated from the high frequency data (usually 1 or 15 second granularity) within the 24 hour period.\" +\n \"These higher frequency data points are averaged up to a single speed loss percentage for the day which is used to compute a trend line (green line) within the trend period. The system automatically adjusts the calculation for laden and ballast states. Note: the speed loss metric in the Fouling tab may have a different result than in the Diagnostics tab due to different filters applied to the data.\"\n );\n }\n\n // @Methods\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n }\n\n getVesselEventsOnSameDate(eventTimestamp: string): VesselEvent[] {\n return this.vesselEvents.filter((vesselEvent: VesselEvent) => vesselEvent.timestamp === eventTimestamp);\n }\n\n getPlotLineLabels(vesselEventsOnSameDate: VesselEvent[], event: VesselEvent): string {\n return `\n \n = 2 ? \"block\" : \"none\"}\"\n >\n ${vesselEventsOnSameDate.length}\n \n \n
\n ${vesselEventsOnSameDate\n .map(\n (vesselEvent: VesselEvent, index: number) => `\n

\n = 2 ? \"block\" : \"none\"}\"\n >\n ${moment.utc(vesselEvent.timestamp).format(\"DD.MMM YYYY\")}\n

\n

${vesselEvent.name}

\n
\n `\n )\n .join(\"\")}\n
\n `;\n }\n\n getTrendPeriod(trendPeriod: SpeedLossStatistic, type: string): SpeedLossStatistic | null {\n if (!type) return trendPeriod;\n let currentTrendPeriod = null;\n this.speedLossStatistics.forEach((item, i) => {\n if (item.fromDate === trendPeriod.fromDate) {\n currentTrendPeriod = this.speedLossStatistics[type === \"next\" ? i + 1 : i - 1];\n }\n });\n return currentTrendPeriod;\n }\n\n getTrendPeriodMeta(trendPeriod: SpeedLossStatistic): TrendPeriodMeta {\n return {\n vesselId: this.vessel?.id ?? null,\n fromDate: trendPeriod.fromDate,\n toDate: trendPeriod.toDate,\n nextPeriodStartDate: this.getTrendPeriod(trendPeriod, \"next\")?.fromDate ?? null,\n previousPeriodStartDate: this.getTrendPeriod(trendPeriod, \"previous\")?.fromDate ?? null,\n benchmark: trendPeriod.benchmark,\n trendEndValue: trendPeriod.trendEndValue,\n trendLine: trendPeriod.trendLine,\n speedLossHistory: this.speedLossHistory.filter(\n item => moment.utc(item.timestamp).valueOf() >= moment.utc(trendPeriod.fromDate).valueOf() && moment.utc(item.timestamp).valueOf() <= moment.utc(trendPeriod.toDate).valueOf()\n ),\n };\n }\n\n zoomIn(timestampFrom: string, timestampTo: string, zoomedOut: boolean): void {\n this.chart.xAxis[0].zoom(timestampFrom, timestampTo);\n this.chart.redraw();\n this.chart.showResetZoom();\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\n }\n\n eventColor(eventType: string): string {\n return eventType === \"InfoEvent\" ? \"#0060fe\" : \"#008000\";\n }\n\n formatDatetimeToUTC(datetime: any): any {\n datetime = datetime.split(\"+\");\n return datetime[0].endsWith(\"z\") || datetime[0].endsWith(\"Z\") ? datetime[0] : datetime[0] + \"Z\";\n }\n\n onEditSpeedSource(): void {\n this.$emit(\"onEditSpeedSource\");\n }\n\n onEditHullSource(): void {\n this.$emit(\"onEditHullSource\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossChartCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossChartCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedLossChartCard.vue?vue&type=template&id=613597c2&scoped=true&\"\nimport script from \"./SpeedLossChartCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpeedLossChartCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpeedLossChartCard.vue?vue&type=style&index=0&id=613597c2&lang=scss&scoped=true&\"\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 \"613597c2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardActions,VCardText,VCardTitle,VIcon,VProgressCircular,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"height\":\"100%\"}},[_c('v-card-title',{staticClass:\"font-weight-bold mb-9\",attrs:{\"color\":\"primary\"}},[_vm._v(\" Propulsion Efficiency \"),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"medium\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.propulsionEfficiencyToolTooltipText))])]),_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-auto\",attrs:{\"color\":\"primary\",\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}])},[_c('v-list',{staticClass:\"layout-action-list\"},[_c('v-list-item',{on:{\"click\":function($event){return _vm.expandWidget()}}},[_c('v-list-item-title',[_vm._v(\"Expand widget\")])],1)],1)],1)],1),_c('v-card-subtitle',[_c('div',{staticClass:\"actions d-flex mb-4\"},[_c('div',{staticClass:\"date-pickers d-inline-flex\"},[_c('div',{staticClass:\"date-time input d-inline-flex\"},[_c('label',{staticClass:\"period-1\"},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-calendar-range\")]),_vm._v(\" Period #1\")],1),_c('v-menu',{ref:\"menuFirstPeriodFromDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.firstPeriodFromDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.firstPeriodFromDate=$event},\"update:return-value\":function($event){_vm.firstPeriodFromDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.firstPeriodFromDate)+\" \")])]}}]),model:{value:(_vm.isFirstPeriodFromDateModalActive),callback:function ($$v) {_vm.isFirstPeriodFromDateModalActive=$$v},expression:\"isFirstPeriodFromDateModalActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodFromDate', _vm.firstPeriodFromDate)}},model:{value:(_vm.firstPeriodFromDate),callback:function ($$v) {_vm.firstPeriodFromDate=$$v},expression:\"firstPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuFirstPeriodToDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.firstPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.firstPeriodToDate=$event},\"update:return-value\":function($event){_vm.firstPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.firstPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isFirstPeriodToDateModalActive),callback:function ($$v) {_vm.isFirstPeriodToDateModalActive=$$v},expression:\"isFirstPeriodToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.firstPeriodFromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodToDate', _vm.firstPeriodToDate)}},model:{value:(_vm.firstPeriodToDate),callback:function ($$v) {_vm.firstPeriodToDate=$$v},expression:\"firstPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1),_c('div',{staticClass:\"date-time input d-inline-flex\"},[_c('label',{staticClass:\"period-2\"},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-calendar-range\")]),_vm._v(\" Period #2\")],1),_c('v-menu',{ref:\"menuSecondPeriodFromDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodFromDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodFromDate=$event},\"update:return-value\":function($event){_vm.secondPeriodFromDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodFromDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodFromDateModalActive),callback:function ($$v) {_vm.isSecondPeriodFromDateModalActive=$$v},expression:\"isSecondPeriodFromDateModalActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodFromDate', _vm.secondPeriodFromDate)}},model:{value:(_vm.secondPeriodFromDate),callback:function ($$v) {_vm.secondPeriodFromDate=$$v},expression:\"secondPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuSecondPeriodToDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodToDate=$event},\"update:return-value\":function($event){_vm.secondPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodToDateModalActive),callback:function ($$v) {_vm.isSecondPeriodToDateModalActive=$$v},expression:\"isSecondPeriodToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.secondPeriodFromDate,\"color\":\"primary lighten-2\",\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodToDate', _vm.secondPeriodToDate)}},model:{value:(_vm.secondPeriodToDate),callback:function ($$v) {_vm.secondPeriodToDate=$$v},expression:\"secondPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1)]),_c('v-menu',{staticClass:\"filter-menu\",attrs:{\"close-on-content-click\":false,\"max-width\":\"312px\",\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"filter-btn ml-auto\",attrs:{\"color\":\"primary\",\"text\":\"\",\"medium\":\"\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-filter\")])],1)]}}]),model:{value:(_vm.filterMenu),callback:function ($$v) {_vm.filterMenu=$$v},expression:\"filterMenu\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Filter settings\")])]),_c('v-list',[(_vm.hasDraftConditionRanges)?_c('v-list-item',[_c('v-select',{staticClass:\"conditions-select input elevation-0 d-inline-flex mb-4\",attrs:{\"items\":_vm.conditionsList,\"item-text\":\"text\",\"item-value\":\"text\",\"label\":\"Condition\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.filterMenuConfig.condition),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"condition\", $$v)},expression:\"filterMenuConfig.condition\"}})],1):_vm._e(),_c('v-list-item',[_c('v-select',{staticClass:\"interval-select input elevation-0 d-inline-flex mb-4\",attrs:{\"items\":_vm.intervalList,\"item-text\":\"text\",\"item-value\":\"value\",\"label\":\"Data interval\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar on = ref.on;\nvar item = ref.item;\nreturn [_c('v-list-item',_vm._g({attrs:{\"two-line\":\"\",\"disabled\":!_vm.isDataIntervalAllowedForDataSize(item.value)}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))]),(!_vm.isDataIntervalAllowedForDataSize(item.value))?_c('v-list-item-subtitle',[_vm._v(\" Not possible to fetch due to the date range \")]):_vm._e()],1)],1)]}}]),model:{value:(_vm.filterMenuConfig.granularity),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"granularity\", $$v)},expression:\"filterMenuConfig.granularity\"}})],1),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range \"),_c('b',{staticClass:\"value mx-1\"},[_vm._v(\"[\"+_vm._s(_vm.filterMenuConfig.speed[0])+\" knots – \"+_vm._s(_vm.filterMenuConfig.speed[1])+\" knots]\")])]),_c('v-range-slider',{staticClass:\"speed-range\",staticStyle:{\"width\":\"100%\"},attrs:{\"step\":1,\"min\":0,\"max\":25,\"hide-details\":\"auto\",\"strict\":\"\"},model:{value:(_vm.filterMenuConfig.speed),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"speed\", $$v)},expression:\"filterMenuConfig.speed\"}})],1),_c('v-list-item',[_c('div',{staticClass:\"info-text\"},[_vm._v(\"Configured Beaufort scale and MCR filters are also applied to the propulsion efficiency data.\")])])],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{on:{\"click\":function($event){_vm.filterMenu = false}}},[_vm._v(\" Cancel \")])],1)],1)],1)],1),(_vm.averageKPI)?_c('p',{staticClass:\"average-text\"},[_vm._v(\" AVG change in Shaft Power (Period #1 vs Period #2): \"),_c('b',[_vm._v(_vm._s(_vm.averageKPI))]),_vm._v(\"% \"),_c('v-tooltip',{attrs:{\"max-width\":\"350px\",\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-1\",attrs:{\"color\":\"white\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}],null,false,3408865080)},[_c('span',[_vm._v(_vm._s(_vm.avgChangeShaftPowerTooltipText))])])],1):_vm._e()]),_c('v-card-text',[_c('div',{staticClass:\"chart__loader-overlay\",class:{ 'active': _vm.isDataLoading }},[_c('v-progress-circular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}})],1),_c('Highcharts',{ref:\"chart\",staticClass:\"propulsion-efficency-chart\",attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":false,\"callback\":_vm.chartReady}})],1),_c('v-dialog',{attrs:{\"max-width\":\"1350px\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }_vm.expandChart = false}},model:{value:(_vm.expandChart),callback:function ($$v) {_vm.expandChart=$$v},expression:\"expandChart\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"primary\",\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Propulsion Efficency\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.expandChart = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-divider'),_c('v-card-title',[_c('v-menu',{staticClass:\"filter-menu\",attrs:{\"close-on-content-click\":false,\"max-width\":\"312px\",\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"filter-btn ml-auto\",attrs:{\"color\":\"primary\",\"text\":\"\",\"medium\":\"\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-filter\")])],1)]}}]),model:{value:(_vm.filterMenuModal),callback:function ($$v) {_vm.filterMenuModal=$$v},expression:\"filterMenuModal\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Filter settings\")])]),_c('v-list',[(_vm.hasDraftConditionRanges)?_c('v-list-item',[_c('v-select',{staticClass:\"conditions-select input elevation-0 d-inline-flex mb-4\",attrs:{\"items\":_vm.conditionsList,\"item-text\":\"text\",\"item-value\":\"text\",\"label\":\"Condition\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.filterMenuConfig.condition),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"condition\", $$v)},expression:\"filterMenuConfig.condition\"}})],1):_vm._e(),_c('v-list-item',[_c('v-select',{staticClass:\"interval-select input elevation-0 d-inline-flex mb-4\",attrs:{\"items\":_vm.intervalList,\"item-text\":\"text\",\"item-value\":\"value\",\"label\":\"Data interval\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar on = ref.on;\nvar item = ref.item;\nreturn [_c('v-list-item',_vm._g({attrs:{\"two-line\":\"\",\"disabled\":!_vm.isDataIntervalAllowedForDataSize(item.value)}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))]),(!_vm.isDataIntervalAllowedForDataSize(item.value))?_c('v-list-item-subtitle',[_vm._v(\" Not possible to fetch due to the date range \")]):_vm._e()],1)],1)]}}]),model:{value:(_vm.filterMenuConfig.granularity),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"granularity\", $$v)},expression:\"filterMenuConfig.granularity\"}})],1),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range \"),_c('b',{staticClass:\"value mx-1\"},[_vm._v(\"[\"+_vm._s(_vm.filterMenuConfig.speed[0])+\" knots – \"+_vm._s(_vm.filterMenuConfig.speed[1])+\" knots]\")])]),_c('v-range-slider',{staticClass:\"speed-range\",staticStyle:{\"width\":\"100%\"},attrs:{\"step\":1,\"min\":0,\"max\":25,\"hide-details\":\"auto\",\"strict\":\"\"},model:{value:(_vm.filterMenuConfig.speed),callback:function ($$v) {_vm.$set(_vm.filterMenuConfig, \"speed\", $$v)},expression:\"filterMenuConfig.speed\"}})],1),_c('v-list-item',[_c('div',{staticClass:\"info-text\"},[_vm._v(\"Configured Beaufort scale and MCR filters are also applied to the propulsion efficiency data.\")])])],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{on:{\"click\":function($event){_vm.filterMenuModal = false}}},[_vm._v(\" Cancel \")])],1)],1)],1)],1),_c('v-card-text',{staticClass:\"pt-6\"},[_c('Highcharts',{ref:\"chart\",staticClass:\"propulsion-efficency-chart\",staticStyle:{\"height\":\"700px\"},attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":false,\"callback\":_vm.chartReady}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// utilities\nimport { Chart } from \"highcharts-vue\";\nimport Highcharts from \"highcharts\";\nimport moment from \"moment\";\nimport _ from \"underscore\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { SpeedLossStatistic } from \"@/types/SpeedLossStatistic\";\n\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n\nconst Fouling = getModule(FoulingModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\ninterface FilterMenuConfig {\n condition: string;\n speed: number[];\n granularity?: string;\n}\n\n@Component({\n components: {\n Highcharts: Chart,\n },\n})\nexport default class PropulsionEfficencyCard extends Vue {\n chart!: any;\n chartLoaded = false;\n isFirstPeriodFromDateModalActive = false;\n isFirstPeriodToDateModalActive = false;\n isSecondPeriodFromDateModalActive = false;\n isSecondPeriodToDateModalActive = false;\n isToDateModalActive = false;\n isDataLoading = false;\n filterMenu = false;\n filterMenuModal = false;\n expandChart = false;\n currentDate: string = moment().format(\"YYYY-MM-DD\");\n firstPeriodFromDate: string = moment(\"2023-01-01\").format(\"YYYY-MM-DD\");\n firstPeriodToDate: string = moment(\"2023-06-30\").format(\"YYYY-MM-DD\");\n firstPeriodData: number[][] = [];\n filtredFirstPeriodData: number[][] = [];\n secondPeriodFromDate: string = moment(\"2024-01-01\").format(\"YYYY-MM-DD\");\n secondPeriodToDate: string = moment(\"2024-06-30\").format(\"YYYY-MM-DD\");\n secondPeriodData: number[][] = [];\n filtredSecondPeriodData: number[][] = [];\n condition: { text: string } = {\n text: \"Laden\",\n };\n filterMenuConfig: FilterMenuConfig = { condition: \"Laden\", speed: [0, 25], granularity: \"Day\" };\n initialFilterMenuConfig: FilterMenuConfig = JSON.parse(JSON.stringify(this.filterMenuConfig));\n interval: { text: string } = { text: \"Auto\" };\n conditionsList: { text: string }[] = [\n {\n text: \"Laden\",\n },\n {\n text: \"Ballast\",\n },\n ];\n intervalList: { text: string; value: string }[] = [\n {\n text: \"Auto\",\n value: \"Auto\",\n },\n {\n text: \"Day\",\n value: \"Day\",\n },\n {\n text: \"Hour\",\n value: \"Hour\",\n },\n {\n text: \"Quarter (Every 15 minutes)\",\n value: \"QuarterHour\",\n },\n {\n text: \"Minute\",\n value: \"Minute\",\n },\n {\n text: \"Raw\",\n value: \"Raw\",\n },\n ];\n intervalLimit: { [key: string]: number } = {\n Raw: this.daysToMinutes(1),\n Minute: this.daysToMinutes(2),\n QuarterHour: this.daysToMinutes(14),\n Hour: this.daysToMinutes(90),\n };\n speedRange: { text: string } = {\n text: \"Speed Range\",\n };\n\n // @Getters\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get vesselLogDataMinDate(): string {\n if (!Vessels.currentVessel) return \"2000-01-01\";\n return Vessels.currentVessel.logDataMinDate;\n }\n\n get hasDraftConditionRanges(): boolean {\n if ((this.vessel?.ballastDraftHigh || this.vessel?.ballastDraftLow || this.vessel?.ladenDraftHigh || this.vessel?.ladenDraftLow) == null) return false;\n else return true;\n }\n\n get autoGranularity(): string {\n const firstPeriodSelectedTimeInMinutes = this.minutesDiff(new Date(this.firstPeriodFromDate), new Date(this.firstPeriodToDate));\n const secondPeriodSelectedTimeInMinutes = this.minutesDiff(new Date(this.secondPeriodFromDate), new Date(this.secondPeriodToDate));\n const selectedTimeInMinutes = Math.max(firstPeriodSelectedTimeInMinutes, secondPeriodSelectedTimeInMinutes);\n if (selectedTimeInMinutes <= 1440) {\n return \"Raw\";\n } else if (selectedTimeInMinutes <= 2880) {\n return \"Minute\";\n } else if (selectedTimeInMinutes <= 20160) {\n return \"QuarterHour\";\n } else if (selectedTimeInMinutes <= 129600) {\n return \"Hour\";\n }\n\n return \"Day\";\n }\n\n get averageKPI(): string {\n if (!this.filtredFirstPeriodData.length || !this.filtredSecondPeriodData.length) return \"\";\n const secondPeriodMap = new Map();\n for (const [speed, power] of this.filtredSecondPeriodData) {\n const roundedSpeed = Math.round(speed);\n secondPeriodMap.set(roundedSpeed, power);\n }\n const diffs = [];\n for (const [speed, power1] of this.filtredFirstPeriodData) {\n const roundedSpeed1 = Math.round(speed);\n if (secondPeriodMap.has(roundedSpeed1)) {\n const power2 = secondPeriodMap.get(roundedSpeed1);\n const diff = power2 / power1;\n diffs.push(diff);\n }\n }\n if (diffs.length === 0) return \"\";\n const averageDiff = diffs.reduce((sum, value) => sum + value, 0) / diffs.length;\n const averageDiffPercentage = (averageDiff - 1) * 100;\n return averageDiffPercentage.toFixed(1);\n }\n\n get foulingConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get stwLegend(): string {\n return this.foulingConfig.useDerivedStw ? \"Derived STW\" : \"Speed Log\";\n }\n\n get ChartOptions(): any {\n if (!this.chartLoaded || !Highcharts) return {};\n const ctx = this;\n const options = {\n chart: ctx.chartSettings,\n title: { text: \"\" },\n legend: {\n // enabled: false,\n },\n yAxis: {\n min: 0,\n max: 30000,\n title: {\n text: \"Shaft Power\",\n style: { color: \"#001844\" },\n },\n labels: {\n format: \"{value} kW\",\n style: { color: \"#001844\" },\n },\n },\n xAxis: {\n min: 0,\n max: 25,\n labels: {\n format: \"{value} knots\",\n style: { color: \"#001844\" },\n },\n title: {\n text: this.stwLegend,\n style: { color: \"#001844\" },\n },\n },\n plotOptions: {\n area: {\n threshold: 0,\n marker: {\n enabled: false,\n },\n },\n series: {\n showInLegend: true,\n dataLabels: { enabled: false },\n },\n },\n tooltip: {\n formatter: function () {\n const $this: any = this;\n const dateSpan = ctx.pointDate($this.point.x, $this.point.y) ? `Date: ${ctx.pointDate($this.point.x, $this.point.y)}
` : \"\";\n return `${dateSpan}Shaft Power: ${Number($this.point.y.toFixed(2))} kW
STW: ${$this.point.x.toFixed(1)} knots`;\n },\n },\n series: this.seriesData,\n credits: { enabled: false },\n exporting: { enabled: false },\n };\n\n return options;\n }\n\n get chartSettings(): any {\n if (!this.chartLoaded) return {};\n const ctx = this;\n return {\n zoomType: \"x\",\n spacingTop: 30,\n spacingBottom: 0,\n spacingLeft: 0,\n spacingRight: 0,\n style: { fontFamily: \"Helvetica Neue\" },\n events: {\n selection: function (event: any) {\n // trigger onChartZoom event on zoom\n ctx.$emit(\"onEventChartZoom\", event);\n },\n },\n };\n }\n\n get theoreticalCurve(): number[][] {\n if (_.isEmpty(Fouling.propulsionCurve)) return [];\n const xValues = Fouling.propulsionCurve.xValues;\n const yValues = Fouling.propulsionCurve.yValues;\n\n const series: number[][] = [];\n\n yValues.forEach((v, i) => series.push([xValues[i], v]));\n\n return series;\n }\n\n get benchmarkCurve(): number[][] {\n if (_.isEmpty(Fouling.propulsionCurve) || this.latestSpeedLossStatistics == null || this.latestSpeedLossStatistics.benchmark.level === 0) return [];\n const xValues = Fouling.propulsionCurve.xValues;\n const yValues = Fouling.propulsionCurve.yValues;\n\n const series: number[][] = [];\n const benchmarkPercentFactor = 1 + this.latestSpeedLossStatistics!.benchmark.level / 100;\n yValues.forEach((v, i) => series.push([xValues[i] * benchmarkPercentFactor, v]));\n\n return series;\n }\n\n get latestSpeedLossStatistics(): SpeedLossStatistic | null {\n return Fouling.speedLossStatistics[Fouling.speedLossStatistics.length - 1] ?? null;\n }\n\n get seriesData(): any {\n // bugfix < >\n if (this.chart.series.length) {\n /* IMPORTANT: There is also a bug in Highcharts when it has more than 2 series and they are updated dynamically it \"loses\" correct indexes of the series and displays data in a weird manner so the solution is to clear the series array before it will be updated */\n while (this.chart.series.length) {\n this.chart.series[0].remove();\n }\n }\n // bugfix \n const scatterPointsSerie = {\n name: \"Period #1\",\n type: \"scatter\",\n data: this.filtredFirstPeriodData,\n stickyTracking: false,\n /* IMPORTANT: https://www.highcharts.com/forum/viewtopic.php?f=9&t=44589 Turns out scatter points have a bug. When they get updated they can be displayed as line-through-dots with property lineWidth: 2 so here we need to set the lineWidth: 0, otherwise it should be set always through chart.series.forEach loop in serie.options.lineWidth*/\n lineWidth: 0,\n color: \"deeppink\",\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n color: \"deeppink\",\n },\n };\n\n const scatterPointsSerie2 = {\n name: \"Period #2\",\n type: \"scatter\",\n data: this.filtredSecondPeriodData,\n stickyTracking: false,\n color: \"orange\",\n /* IMPORTANT: https://www.highcharts.com/forum/viewtopic.php?f=9&t=44589 Turns out scatter points have a bug. When they get updated they can be displayed as line-through-dots with property lineWidth: 2 so here we need to set the lineWidth: 0, otherwise it should be set always through chart.series.forEach loop in serie.options.lineWidth */\n lineWidth: 0,\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n color: \"orange\",\n },\n };\n\n const benchmarkLine = {\n name: \"Benchmark Curve\",\n type: \"spline\",\n data: this.benchmarkCurve,\n stickyTracking: false,\n lineWidth: 2,\n color: \"#0de40d\",\n marker: {\n enabled: false,\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0de40d\",\n },\n };\n\n const theoreticalLine = {\n name: \"Theoretical Curve\",\n type: \"spline\",\n data: this.theoreticalCurve,\n stickyTracking: false,\n lineWidth: 2,\n dashStyle: \"ShortDot\",\n color: \"#0de40d\",\n marker: {\n enabled: false,\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0de40d\",\n },\n };\n\n const series = [scatterPointsSerie, scatterPointsSerie2, benchmarkLine, theoreticalLine];\n\n return series;\n }\n\n get propulsionEfficiencyToolTooltipText(): string {\n return \"This chart allows you to plot two time periods to compare the speed and power relationship. It can be used to build trust in the speed loss trend by checking that the vessel's power requirement also increased if speed loss is observed. Additionally, the chart shows how each time period compares to Benchmark and Baseline used in the speed loss calculations.\";\n }\n\n get avgChangeShaftPowerTooltipText(): string {\n return \"This metric computes the % change in shaft power required given the filters selected from Period 2 compared to Period 1. For example, if the average shaft power required in Period 2 is 10,000 kW and the average shaft power required in Period 1 is 8,000 kW, the KPI will be 25%\";\n }\n\n // @Methods\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n }\n\n daysToMinutes(days: number): number {\n return days * 24 * 60;\n }\n\n isDataIntervalAllowedForDataSize(value: string): boolean {\n if (!this.intervalLimit[value]) return true;\n return (\n moment.duration(moment(this.firstPeriodToDate).diff(this.firstPeriodFromDate)).asMinutes() <= this.intervalLimit[value] &&\n moment.duration(moment(this.secondPeriodToDate).diff(this.secondPeriodFromDate)).asMinutes() <= this.intervalLimit[value]\n );\n }\n\n async onPeriodDateChanged(datepickerRef: string, date: string): Promise {\n (this.$refs[datepickerRef] as any).save(date);\n this.$emit(\"onDateChange\");\n this.isDataLoading = true;\n\n if (datepickerRef === \"menuFirstPeriodFromDate\" || datepickerRef === \"menuFirstPeriodToDate\") {\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.filterMenuConfig.condition,\n granularity: this.filterMenuConfig.granularity === \"Auto\" ? this.autoGranularity : this.filterMenuConfig.granularity,\n });\n this.firstPeriodData = Object.keys(firstPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), firstPeriodResponse[key]];\n });\n this.filtredFirstPeriodData = this.firstPeriodData;\n } else if (datepickerRef === \"menuSecondPeriodFromDate\" || datepickerRef === \"menuSecondPeriodToDate\") {\n const secondPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.secondPeriodFromDate,\n toDate: this.secondPeriodToDate,\n condition: this.filterMenuConfig.condition,\n granularity: this.filterMenuConfig.granularity === \"Auto\" ? this.autoGranularity : this.filterMenuConfig.granularity,\n });\n this.secondPeriodData = Object.keys(secondPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), secondPeriodResponse[key]];\n });\n this.filtredSecondPeriodData = this.secondPeriodData;\n }\n await Fouling.fetchPropulsionEfficencyCurve({ vesselId: this.vessel!.id, condition: this.filterMenuConfig.condition });\n this.applyFilter();\n this.isDataLoading = false;\n }\n\n async applyFilter(): Promise {\n this.filterMenu = false;\n this.filterMenuModal = false;\n if (JSON.stringify(this.initialFilterMenuConfig) === JSON.stringify(this.filterMenuConfig)) return;\n if (this.initialFilterMenuConfig.condition !== this.filterMenuConfig.condition || this.initialFilterMenuConfig.granularity !== this.filterMenuConfig.granularity) {\n this.initialFilterMenuConfig.condition = JSON.parse(JSON.stringify(this.filterMenuConfig.condition));\n this.initialFilterMenuConfig.granularity = JSON.parse(JSON.stringify(this.filterMenuConfig.granularity));\n await this.fetchData();\n }\n if (JSON.stringify(this.initialFilterMenuConfig.speed) !== JSON.stringify(this.filterMenuConfig.speed)) {\n this.filtredFirstPeriodData = this.firstPeriodData.filter(item => item[0] >= this.filterMenuConfig.speed[0] && item[0] <= this.filterMenuConfig.speed[1]);\n this.filtredSecondPeriodData = this.secondPeriodData.filter(item => item[0] >= this.filterMenuConfig.speed[0] && item[0] <= this.filterMenuConfig.speed[1]);\n this.initialFilterMenuConfig.speed = JSON.parse(JSON.stringify(this.filterMenuConfig.speed));\n }\n }\n\n pointDate(x: number, y: number): string | null {\n const points: any[][] = this.firstPeriodData.concat(this.secondPeriodData);\n const period = points.find(p => p[0] === x && p[1] === y);\n if (!period) return null;\n return moment(period[2]).format(\"DD. MMM, YYYY HH:mm\");\n }\n\n @Watch(\"foulingConfig\")\n async fetchData(): Promise {\n if (!this.vessel || this.isDataLoading) return;\n this.isDataLoading = true;\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.filterMenuConfig.condition,\n granularity: this.filterMenuConfig.granularity === \"Auto\" ? this.autoGranularity : this.filterMenuConfig.granularity,\n });\n this.firstPeriodData = Object.keys(firstPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), firstPeriodResponse[key]];\n });\n this.filtredFirstPeriodData = this.firstPeriodData;\n const secondPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel.id,\n fromDate: this.secondPeriodFromDate,\n toDate: this.secondPeriodToDate,\n condition: this.filterMenuConfig.condition,\n granularity: this.filterMenuConfig.granularity === \"Auto\" ? this.autoGranularity : this.filterMenuConfig.granularity,\n });\n this.secondPeriodData = Object.keys(secondPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), secondPeriodResponse[key]];\n });\n this.filtredSecondPeriodData = this.secondPeriodData;\n await Fouling.fetchPropulsionEfficencyCurve({ vesselId: this.vessel.id, condition: this.filterMenuConfig.condition });\n this.isDataLoading = false;\n }\n\n expandWidget(): void {\n this.expandChart = true;\n }\n\n minutesDiff(fromDate: Date, toDate: Date): number {\n const diff = (fromDate.getTime() - toDate.getTime()) / 1000 / 60;\n\n return Math.abs(Math.round(diff));\n }\n\n async created(): Promise {\n await this.fetchData();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n },\n },\n\n // If done in as immediate in\n // value watcher, causes issues\n // with vue-test-utils\n beforeMount () {\n this.internalValue = this.value\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","import VSlider from './VSlider'\n\nexport { VSlider }\nexport default VSlider\n","// Styles\nimport './VRangeSlider.sass'\n\n// Components\nimport VSlider from '../VSlider'\n\n// Helpers\nimport {\n addOnceEventListener,\n createRange,\n deepEqual,\n passiveSupported,\n} from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VSlider.extend({\n name: 'v-range-slider',\n\n props: {\n value: {\n type: Array,\n default: () => ([0, 0]),\n } as unknown as PropValidator<[number, number]>,\n },\n\n data () {\n return {\n activeThumb: null as null | number,\n lazyValue: this.value,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true,\n }\n },\n internalValue: {\n get (): number[] {\n return this.lazyValue\n },\n set (val: number[]) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue)))\n\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1\n const el = this.$refs[`thumb_${toFocus}`] as HTMLElement\n el.focus()\n }\n value = [value[1], value[0]]\n }\n\n this.lazyValue = value\n if (!deepEqual(value, this.value)) this.$emit('input', value)\n\n this.validate()\n },\n },\n inputWidth (): number[] {\n return this.internalValue.map((v: number) => (\n this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100\n )\n },\n },\n\n methods: {\n getTrackStyle (startLength: number, endLength: number, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = `calc(${startLength}% + ${startPadding}px)`\n const end = `calc(${endLength}% + ${endPadding}px)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n getIndexOfClosestValue (arr: number[], v: number) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0\n else return 1\n },\n genInput () {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this)\n\n input.data = input.data || {}\n input.data.attrs = input.data.attrs || {}\n input.data.attrs.value = this.internalValue[i]\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`\n\n return input\n })\n },\n genTrackContainer () {\n const children = []\n\n const padding = this.isDisabled ? 10 : 0\n const sections: { class: string, color: string | undefined, styles: [number, number, number, number] }[] = [\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding],\n },\n {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2],\n },\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding],\n },\n ]\n\n if (this.$vuetify.rtl) sections.reverse()\n\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles),\n }))))\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genChildren () {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n createRange(2).map(index => {\n const value = this.internalValue[index]\n const onFocus = (e: Event) => {\n this.isFocused = true\n this.activeThumb = index\n\n this.$emit('focus', e)\n }\n\n const onBlur = (e: Event) => {\n this.isFocused = false\n this.activeThumb = null\n\n this.$emit('blur', e)\n }\n\n const valueWidth = this.inputWidth[index]\n const isActive = this.isActive && this.activeThumb === index\n const isFocused = this.isFocused && this.activeThumb === index\n\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`)\n }),\n ]\n },\n reevaluateSelected (value: number) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n const refName = `thumb_${this.activeThumb}`\n const thumbRef = this.$refs[refName] as HTMLElement\n thumbRef.focus()\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderClick (e: MouseEvent) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.setInternalValue(value)\n\n this.$emit('change', this.internalValue)\n }\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n\n if (this.activeThumb === null) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n }\n\n this.setInternalValue(value)\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.activeThumb === null) return\n\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb])\n\n if (value == null) return\n\n this.setInternalValue(value)\n this.$emit('change', this.internalValue)\n },\n setInternalValue (value: number) {\n this.internalValue = this.internalValue.map((v: number, i: number) => {\n if (i === this.activeThumb) return value\n else return Number(v)\n })\n },\n },\n})\n","import { render, staticRenderFns } from \"./PropulsionEfficencyCard.vue?vue&type=template&id=616347e0&scoped=true&\"\nimport script from \"./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PropulsionEfficencyCard.vue?vue&type=style&index=0&id=616347e0&lang=scss&scoped=true&\"\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 \"616347e0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRangeSlider } from 'vuetify/lib/components/VRangeSlider';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardText,VCardTitle,VDatePicker,VDialog,VDivider,VIcon,VList,VListItem,VListItemContent,VListItemSubtitle,VListItemTitle,VMenu,VProgressCircular,VRangeSlider,VSelect,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"font-weight-bold justify-space-between align-start main-title flex-nowrap\",staticStyle:{\"min-height\":\"116px\"},attrs:{\"color\":\"primary\"}},[_c('div',{staticClass:\"title d-flex flex-column\"},[_c('div',{staticClass:\"text mb-3\"},[_c('span',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"primary\"}},[_vm._v(\"Operational Profile\")]),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"medium\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',[_vm._v(\"This chart shows the locations the vessel has sailed for the selected time period and the seawater temperature associated with each location. The longer a vessel idles in warm waters (25 degrees Celsius and above), the higher risk of fouling, which increases speed loss. You can use this feature to understand how the vessel's operational profile contributed to its speed loss over time. Click on the three small dots on the right side of the chart in order to expand the map and see it in full screen.\")])])],1)]),_c('div',{staticClass:\"actions d-inline-flex flex-column ml-auto pt-3\"},[_c('div',{staticClass:\"date-time input d-inline-flex\"},[_c('label',[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-calendar-range\")]),_vm._v(\"Date range\")],1),_c('v-menu',{ref:\"menuFromDate\",attrs:{\"close-on-content-click\":false,\"return-value\":_vm.fromDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\",\"nudge-left\":220,\"offset-y\":\"\"},on:{\"update:returnValue\":function($event){_vm.fromDate=$event},\"update:return-value\":function($event){_vm.fromDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.fromDate)+\" \")])]}}]),model:{value:(_vm.isFromDateModalActive),callback:function ($$v) {_vm.isFromDateModalActive=$$v},expression:\"isFromDateModalActive\"}},[_c('v-date-picker',{attrs:{\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onDateRangeChanged('menuFromDate', _vm.fromDate)}},model:{value:(_vm.fromDate),callback:function ($$v) {_vm.fromDate=$$v},expression:\"fromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1 d-flex align-center\",staticStyle:{\"color\":\"#666\",\"opacity\":\"0.8\"}},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuToDate\",attrs:{\"close-on-content-click\":false,\"return-value\":_vm.toDate,\"transition\":\"slide-x-transition\",\"nudge-left\":220,\"offset-y\":\"\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.toDate=$event},\"update:return-value\":function($event){_vm.toDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.toDate)+\" \")])]}}]),model:{value:(_vm.isToDateModalActive),callback:function ($$v) {_vm.isToDateModalActive=$$v},expression:\"isToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.fromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onDateRangeChanged('menuToDate', _vm.toDate)}},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1),(_vm.invalidRange)?_c('div',{staticClass:\"error-text-container\"},[_c('p',{staticClass:\"date-range-error-text\"},[_vm._v(\" Please select a period shorter than 5 years. \")])]):_vm._e()]),(!_vm.isModal)?_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,528074481)},[_c('v-list',{staticClass:\"ship-speed-loss-settings-list\"},[_c('v-list-item',{on:{\"click\":function($event){return _vm.expandMap()}}},[_c('v-list-item-title',[_vm._v(\"Expand map\")])],1)],1)],1):_vm._e()],1),_c('v-card-text',[_c('div',{staticClass:\"total-idling-hours\"},[_vm._v(\" Total time spent idling in warm water: \"),_c('b',[_vm._v(_vm._s(_vm.hoursInWarmWater))]),_c('v-tooltip',{attrs:{\"max-width\":\"350px\",\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-1\",attrs:{\"color\":\"white\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}])},[_c('span',[_vm._v(\" The KPI is computed by summing the total hours spent when the vessel was sailing below 5kts STW AND the seawater temperature was above 25 degrees Celsius.\"),_c('br'),_vm._v(\" The KPI automatically adjusts based on the time period selected. \")])])],1),_c('Map',{ref:\"Map\",staticClass:\"mt-5\",style:(_vm.mapHeight),attrs:{\"vessels\":[_vm.vessel],\"enableMinimalMode\":true,\"weather-sea-surface-temperature\":true,\"sea-temperature-date-range\":_vm.getSeaTemperatureDateRange,\"is-synchronized\":_vm.syncSpeedLog,\"isUsingDerivedStw\":_vm.isUsingDerivedStw},on:{\"onMarkerClicked\":_vm.onMarkerClicked,\"onTrackClicked\":_vm.onTrackClicked,\"onOperationalProfileZoom\":_vm.onMapZoom}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Ref, Prop, PropSync } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { MapMarker } from \"@/types/mapMarker\";\nimport { TempPoint } from \"@/types/TempPoint\";\n// components\nimport Map from \"@/components/Map.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n Map,\n },\n})\nexport default class OperationalProfileCard extends Vue {\n @Ref(\"Map\") Map!: any;\n @Prop({ default: false }) isModal!: boolean;\n @PropSync(\"dateRange\", { required: true }) syncDateRange!: number[];\n\n syncSpeedLog = false;\n isFromDateModalActive = false;\n isToDateModalActive = false;\n invalidRange = false;\n currentDate: string = moment().format(\"YYYY-MM-DD\");\n fromDate: string = moment().startOf(\"year\").format(\"YYYY-MM-DD\");\n toDate: string = moment().format(\"YYYY-MM-DD\");\n min = moment(moment().year(this.speedHistoryStartYear).startOf(\"year\").format(\"YYYY-MM-DD\")).valueOf();\n max = moment(moment().format(\"YYYY-MM-DD\")).valueOf();\n interval: any = moment.duration(1, \"days\").asMilliseconds();\n seaTemperatureDateRange!: { from: string; to: string };\n\n // @Getters\n get vessel(): ExtendedVessel | null {\n return Vessels.currentVessel;\n }\n\n get getSeaTemperatureDateRange(): { from: string; to: string } {\n return this.seaTemperatureDateRange;\n }\n\n get getSeaTemperaturePoints(): TempPoint[] {\n return Fouling.seaSurfaceTemperature;\n }\n\n get hoursInWarmWater(): string {\n if (!this.getSeaTemperaturePoints.length) return \"N/A\";\n\n var total = 0;\n this.getSeaTemperaturePoints.forEach((point, i) => {\n if (point.temperature >= 25 && point.timeSpent) {\n total += point.timeSpent;\n }\n });\n\n return `${Math.round(total)} hours`;\n }\n\n get speedHistoryStartYear(): number {\n return Number(moment(Fouling.speedHistoryStartYear).format(\"YYYY\"));\n }\n\n get formattedSelectedDateRange(): { from: string; to: string } {\n return {\n from: moment(this.syncDateRange[0]).format(\"DD. MMM, YYYY\"),\n to: moment(this.syncDateRange[1]).format(\"DD. MMM, YYYY\"),\n };\n }\n\n get mapHeight(): string {\n return this.isModal ? \"height: 708px;\" : \"height: 508px\";\n }\n\n get isUsingDerivedStw(): boolean {\n return Fouling.foulingChartConfig.useDerivedStw;\n }\n\n // @Methods\n onDateRangeChanged(datepickerRef: string, date: string): void {\n (this.$refs[datepickerRef] as any).save(date);\n this.syncDateRange = [moment(moment(this.fromDate).format(\"YYYY-MM-DD\")).valueOf(), moment(moment(this.toDate).format(\"YYYY-MM-DD\")).valueOf()];\n const fromDate = moment(this.fromDate);\n const toDate = moment(this.toDate);\n const rangeYears = toDate.diff(fromDate, \"years\", true);\n if (rangeYears > 5) {\n this.invalidRange = true;\n return;\n }\n this.invalidRange = false;\n Vue.set(this.seaTemperatureDateRange, \"from\", fromDate.format(\"YYYY-MM-DD\"));\n Vue.set(this.seaTemperatureDateRange, \"to\", toDate.format(\"YYYY-MM-DD\"));\n\n this.Map.updateWeatherData(this.seaTemperatureDateRange);\n }\n\n onMarkerClicked(marker: MapMarker): void {\n if (this.syncSpeedLog) {\n this.$emit(\"markerClicked\", marker);\n this.Map.map.fitBounds([[marker.position.lat, marker.position.lng]]);\n }\n }\n\n onTrackClicked(marker: MapMarker): void {\n if (this.syncSpeedLog) this.$emit(\"trackClicked\", { trackDateStart: marker.trackHistory.prevMarkers.slice(-1)[0].lastExportDate, trackDateEnd: marker.trackHistory.prevMarkers[0].lastExportDate });\n }\n\n onMapZoom(minMaxDateRange: { min: number; max: number; zoomedOut: boolean }): void {\n if (this.syncSpeedLog) this.$emit(\"onOperationalProfileZoom\", minMaxDateRange);\n }\n\n setDateRange(datesRange: { min: number; max: number }): void {\n this.fromDate = moment(datesRange.min).format(\"YYYY-MM-DD\");\n this.toDate = moment(datesRange.max).format(\"YYYY-MM-DD\");\n this.syncDateRange = [moment(this.fromDate).valueOf(), moment(this.toDate).valueOf()];\n Vue.set(this.seaTemperatureDateRange, \"from\", moment(this.fromDate).format(\"YYYY-MM-DD\"));\n Vue.set(this.seaTemperatureDateRange, \"to\", moment(this.toDate).format(\"YYYY-MM-DD\"));\n\n this.Map.$refs.mapRef.setZoom(1);\n this.Map.updateWeatherData(this.seaTemperatureDateRange);\n }\n\n expandMap(): void {\n this.$emit(\"onExpandMap\", true);\n }\n\n created(): void {\n this.seaTemperatureDateRange = { from: moment(this.syncDateRange[0]).format(\"YYYY-MM-DD\"), to: moment(this.syncDateRange[1]).format(\"YYYY-MM-DD\") };\n this.fromDate = JSON.parse(JSON.stringify(this.seaTemperatureDateRange.from));\n this.toDate = JSON.parse(JSON.stringify(this.seaTemperatureDateRange.to));\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OperationalProfileCard.vue?vue&type=template&id=2aee085f&scoped=true&\"\nimport script from \"./OperationalProfileCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./OperationalProfileCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OperationalProfileCard.vue?vue&type=style&index=0&id=2aee085f&lang=scss&scoped=true&\"\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 \"2aee085f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDatePicker,VIcon,VList,VListItem,VListItemTitle,VMenu,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"1350px\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.close.apply(null, arguments)}},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"primary\",\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Speed Loss Compared to Baseline - Details\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.close}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-divider'),_c('v-card-text',[_c('div',{staticClass:\"row mt-2\"},[_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":!_vm.hasPreviousPeriod || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.previousPeriod()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-chevron-left\")]),_vm._v(\"Previous period \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":!_vm.hasNextPeriod || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.nextPeriod()}}},[_vm._v(\" Next period \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"mt-5\"},[_c('span',{staticClass:\"d-flex px-6 py-1\"},[_c('b',[_vm._v(\"Speed Measurement Source: \")]),_vm._v(\" \"+_vm._s(_vm.speedMeasurementSource))]),(_vm.periodMeta)?_c('GraphCard',{attrs:{\"loading\":_vm.loading,\"trendPeriodMeta\":_vm.periodMeta}}):_vm._e()],1)])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('StatisticsCard',{attrs:{\"loading\":_vm.loading,\"trendPeriodMeta\":_vm.periodMeta}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\"}},[_c('BenchmarkCard',{attrs:{\"loading\":_vm.loading,\"trendPeriodMeta\":_vm.periodMeta}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('LimitsCard',{attrs:{\"loading\":_vm.loading}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"image@2\",\"height\":\"434px\"}}):_c('v-card-text',[_c('highcharts',{attrs:{\"id\":\"chart\",\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":true,\"callback\":_vm.chartReady}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Chart } from \"highcharts-vue\";\nimport store from \"@/store\";\nimport moment from \"moment\";\nimport dateHelper from \"Utilities/date-helper\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { IDataSerie } from \"@/types/highcharts/dataSerie\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n@Component({\n components: {\n highcharts: Chart,\n },\n})\nexport default class GraphCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n @Prop({ required: true }) readonly trendPeriodMeta!: TrendPeriodMeta;\n\n chart!: any;\n chartLoaded: boolean = false;\n\n // @Getters\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get ChartOptions(): unknown {\n if (!this.chartLoaded) return {};\n const ctx: any = this;\n\n const options = {\n time: {\n useUTC: false,\n },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n marginTop: 55, //to fit tooltip\n animation: false,\n spacingTop: 20,\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: true,\n },\n title: {\n text: null,\n },\n\n xAxis: {\n type: \"datetime\",\n gridLineWidth: 1,\n plotBands: [\n {\n id: \"benchmarkPeriod\",\n // from: this.benchmarkingZone.from,\n // to: this.benchmarkingZone.to,\n color: \"rgba(0,0,255,0.2)\",\n zIndex: 1,\n label: {\n text: \"Benchmark period\",\n },\n },\n ],\n plotLines: [\n {\n id: \"benchmarkPeriodEnd\",\n // value: this.benchmarkingZone.to,\n color: \"rgb(0,0,255)\",\n zIndex: 2,\n width: 2,\n },\n ...this.eventPlotLines,\n ],\n events: {\n setExtremes: (e: any) => {\n var cmax = 50;\n var cmin = -50;\n\n setTimeout(() => {\n //the documented recommended way of determining if reset zoom was clicked does not work\n //(e.min and e.max are supposed to be undefined, but aren't, so we use\n //this other way where we check if zoom button exists or not)\n if (this.chart.resetZoomButton) {\n this.chart.yAxis[0].setExtremes();\n } else {\n this.chart.yAxis[0].update({ min: cmin, max: cmax });\n }\n }, 0);\n },\n },\n title: {\n text: null,\n },\n labels: {\n y: 35,\n },\n },\n yAxis: {\n title: {\n text: \"Percent (%)\",\n },\n gridLineColor: \"#aaaaaa\",\n tickPixelInterval: 10,\n min: -50,\n max: 50,\n plotBands: this.plotBands,\n // plotLines: this.plotLines,\n },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n },\n plotOptions: {\n series: {\n zIndex: 1,\n marker: {\n enabled: true,\n symbol: \"circle\",\n radius: 2,\n lineWidth: 0,\n lineColor: \"#000000\",\n fillColor: \"#e60000\",\n },\n },\n },\n exporting: {\n enabled: false,\n filename: this.vessel?.name,\n chartOptions: {\n title: {\n text: `Ship speed loss - ${this.vessel?.name}`,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n series: this.series,\n };\n\n return options;\n }\n\n get series(): IDataSerie[] {\n if (!this.trendPeriodMeta.speedLossHistory.length) return [] as IDataSerie[];\n\n const series: IDataSerie[] = [this.speedLossPoints, this.trendLine, this.benchmarkLine, this.baseline];\n\n return series;\n }\n\n get speedLossPoints(): IDataSerie {\n return {\n name: \"Long trend\",\n type: \"scatter\",\n zIndex: 1,\n enableMouseTracking: true,\n marker: {\n symbol: \"circle\",\n },\n // tooltip: {\n // valueDecimals: 1,\n // valueSuffix: \"%\",\n // },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n },\n data: this.trendPeriodMeta.speedLossHistory.map(item => [new Date(this.formatDatetimeToUTC(item.timestamp)).getTime(), item.speedLossPercent]),\n };\n }\n\n get trendLine(): IDataSerie {\n return {\n name: `Trendline (${moment(this.trendPeriodMeta.fromDate).format(\"DD.MMM YYYY\")})`,\n type: \"line\",\n color: \"#008000\",\n lineWidth: 3,\n zIndex: 3,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), this.trendPeriodMeta.trendLine.b],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), this.trendPeriodMeta.trendEndValue],\n ],\n };\n }\n\n get benchmarkLine(): IDataSerie {\n return {\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n enableMouseTracking: false,\n zIndex: 2,\n marker: {\n enabled: false,\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), this.trendPeriodMeta.benchmark.level],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), this.trendPeriodMeta.benchmark.level],\n ],\n };\n }\n\n get baseline(): IDataSerie {\n return {\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), 0],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), 0],\n ],\n };\n }\n\n get plotBands(): any {\n return [\n {\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: this.greenZoneEnds,\n to: 100,\n },\n {\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.greenZoneEnds,\n to: this.yellowZoneEnds,\n },\n {\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: -100,\n to: this.yellowZoneEnds,\n },\n ];\n }\n\n get greenZoneEnds(): number {\n return this.trendPeriodMeta.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n get infoEvents(): any[] {\n return VesselEvents.infoEvents;\n }\n\n // @Methods\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.chartLoaded = true;\n this.chart.update(this.ChartOptions, true);\n setTimeout(() => this.chart.yAxis[0].setExtremes(-50, 50));\n }\n\n formatDatetimeToUTC(datetime: any): any {\n datetime = datetime.split(\"+\");\n return datetime[0].endsWith(\"z\") || datetime[0].endsWith(\"Z\") ? datetime[0] : datetime[0] + \"Z\";\n }\n\n convertTimestamp(timestamp: number): string {\n return dateHelper.getFormatedDateTimeString(timestamp);\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\n }\n\n addEventLabels(): void {\n this.infoEvents.forEach(event => {\n const html = `\n \n
\n

${this.convertTimestamp(event.timestamp)}

\n

${event.name}

\n
\n `;\n this.chart.xAxis[0].addPlotLine({\n value: new Date(this.formatDatetimeToUTC(event.timestamp)).getTime(),\n color: \"#0060fe\",\n width: 2,\n id: \"plot-line-\" + event.id,\n label: {\n rotation: 0,\n style: {\n color: \"#0060fe\",\n },\n text: html,\n useHTML: true,\n y: -14,\n x: -11,\n },\n });\n });\n }\n\n get eventPlotLines(): any {\n let plotLines: any = [];\n this.infoEvents.forEach(event => {\n const html = `\n \n
\n

${this.convertTimestamp(event.timestamp)}

\n

${event.name}

\n
\n `;\n plotLines.push({\n value: new Date(this.formatDatetimeToUTC(event.timestamp)).getTime(),\n color: \"#0060fe\",\n width: 2,\n id: \"plot-line-\" + event.id,\n label: {\n rotation: 0,\n style: {\n color: \"#0060fe\",\n },\n text: html,\n useHTML: true,\n y: -14,\n x: -11,\n },\n });\n });\n return plotLines;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GraphCard.vue?vue&type=template&id=b5527b96&scoped=true&\"\nimport script from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GraphCard.vue?vue&type=style&index=0&id=b5527b96&lang=scss&scoped=true&\"\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 \"b5527b96\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCard,VCardText,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-gauge\")]),_c('span',[_vm._v(\"Benchmark\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, actions, list-item-three-line\"}}):_c('v-card-text',[_c('ul',[_c('li',[_c('strong',[_vm._v(\"Level:\")]),_vm._v(\" \"+_vm._s(_vm.round(_vm.trendPeriodMeta.benchmark.level))+\"% compared to baseline \")])]),_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('span',{staticClass:\"color-square green\"}),_c('strong',[_vm._v(\"Green zone:\")]),_vm._v(\" down to 5% below benchmark level (\"+_vm._s(_vm.round(_vm.greenZoneEnds))+\"%) \")]),_c('li',[_c('span',{staticClass:\"color-square yellow\"}),_c('strong',[_vm._v(\"Yellow zone:\")]),_vm._v(\" 5% - 10% below benchmark level (\"+_vm._s(_vm.round(_vm.greenZoneEnds))+\"% to \"+_vm._s(_vm.round(_vm.yellowZoneEnds))+\"%) \")]),_c('li',[_c('span',{staticClass:\"color-square red\"}),_c('strong',[_vm._v(\"Red zone:\")]),_vm._v(\" more than 10% below benchmark level (\"+_vm._s(_vm.round(_vm.yellowZoneEnds))+\"%) \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\n\n@Component\nexport default class BenchmarkCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n @Prop({ required: true }) readonly trendPeriodMeta!: TrendPeriodMeta;\n\n tooltip =\n \"The Baseline is the value, derived from the design or shop-test data, which shows the original expected performance of the vessel. It is used as the zero level when displaying actual performance. The Benchmark Period is the period, immediately after a trend event, during which data is collected to provide an initial performance level so that any subsequent changes in performance can be evaluated.\";\n\n get greenZoneEnds(): number {\n return this.trendPeriodMeta.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BenchmarkCard.vue?vue&type=template&id=bf3e2b28&scoped=true&\"\nimport script from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BenchmarkCard.vue?vue&type=style&index=0&id=bf3e2b28&lang=scss&scoped=true&\"\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 \"bf3e2b28\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticStyle:{\"height\":\"100%\"},attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-chart-bar\")]),_c('span',[_vm._v(\"Statistics\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[(true)?_c('ul',[_c('li',[_c('strong',[_vm._v(\"Number of Points:\")]),_vm._v(\" \"+_vm._s(_vm.pointCount)+\" Long Trend Points\")]),_c('li',[_c('strong',[_vm._v(\"Trend Function:\")]),_vm._v(\" \"+_vm._s(_vm.trendFunction))])]):_c('p',[_vm._v(\"Statistics not available before the benchmark period is completed\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\n\n@Component\nexport default class StatisticsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n @Prop({ required: true }) readonly trendPeriodMeta!: TrendPeriodMeta;\n\n tooltip = \"The number of long trend points shows the number of days where the conditions were suitable for a data point to be included.\";\n\n get pointCount(): number | undefined {\n return this.trendPeriodMeta.speedLossHistory.length;\n }\n\n get trendFunction(): string | undefined {\n return `${this.trendPeriodMeta?.trendLine.a.toFixed(4)}x ${this.trendPeriodMeta?.trendLine.b.toFixed(4)}`;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatisticsCard.vue?vue&type=template&id=5a8a83c2&\"\nimport script from \"./StatisticsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatisticsCard.vue?vue&type=script&lang=ts&\"\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\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticStyle:{\"height\":\"100%\"},attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-ferry\")]),_c('span',[_vm._v(\"Collection limits\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[_c('p',[_vm._v(\"Calculations are performed using 1-hour average data and \\\"Filter settings\\\"\")]),_c('ul',[_c('li',[_vm._v(\"Minimum power in % of MCR\")]),_c('li',[_vm._v(\"Wind speed less than Beaufort value\")])]),_c('table',{staticClass:\"table-kyma\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Power (% MCR)\")]),_c('th',[_vm._v(\"Wind (BF)\")])])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getFoulingChartConfig.minPercentMcr ? _vm.round(_vm.getFoulingChartConfig.minPercentMcr, 0) : '0'))]),_c('td',[_vm._v(_vm._s(_vm.getFoulingChartConfig.maxBeaufortWind ? _vm.round(_vm.getFoulingChartConfig.maxBeaufortWind, 0) : ''))])]),(false)?_c('tfoot',[_c('tr',[_c('td',{attrs:{\"colspan\":\"4\"}},[_c('i',[_vm._v(\" Please wait for the next data export from vessel to be received, before long-trend limits are visible here. \")])])])]):_vm._e()])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\n\n@Component\nexport default class LimitsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n\n tooltip = \"The on board data collection limits met for valid long trend points\";\n\n limits = [\n {\n id: 1,\n exportedAt: \"\",\n minPower: 30,\n windSpeed: 6,\n minTime: null,\n },\n {\n id: 1,\n exportedAt: \"2019-09-03\",\n minPower: 30,\n windSpeed: 6,\n minTime: 3600,\n },\n ];\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LimitsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LimitsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LimitsCard.vue?vue&type=template&id=3782a842&\"\nimport script from \"./LimitsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./LimitsCard.vue?vue&type=script&lang=ts&\"\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\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { SpeedLossHistory } from \"@/types/SpeedLossHistory\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// components\nimport GraphCard from \"@/components/Fouling/GraphCard.vue\";\nimport BenchmarkCard from \"@/components/Fouling/BenchmarkCard.vue\";\nimport StatisticsCard from \"@/components/Fouling/StatisticsCard.vue\";\nimport LimitsCard from \"@/components/Fouling/LimitsCard.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\n\ninterface TrendPeriodMeta {\n vesselId: number;\n fromDate: string;\n toDate: string;\n benchmark: number;\n trendEndValue: number;\n trendLine: { a: number; b: number };\n speedLossHistory: SpeedLossHistory[];\n}\n\n@Component({\n components: {\n GraphCard,\n BenchmarkCard,\n StatisticsCard,\n LimitsCard,\n // ResultCard,\n },\n})\nexport default class SpeedLossTrendDetailsModal extends Vue {\n dialog = false;\n loading = true;\n periodMeta: any = null;\n\n get hasNextPeriod(): boolean {\n return Boolean(this.periodMeta?.nextPeriodStartDate);\n }\n\n get hasPreviousPeriod(): boolean {\n return Boolean(this.periodMeta?.previousPeriodStartDate);\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get speedMeasurementSource(): string {\n return this.getFoulingChartConfig.useDerivedStw ? \"Derived STW\" : \"Speed Log\";\n }\n\n exportExcel(): void {\n // LongTrendExportClient.exportExcelPeriod(this.meta?.vesselId, this.meta?.longTrendId, this.meta?.startDate, this.meta?.endDate);\n }\n\n nextPeriod(): void {\n if (this.hasNextPeriod) this.$emit(\"onTrendPeriodChanged\", this.periodMeta.nextPeriodStartDate);\n }\n\n previousPeriod(): void {\n if (this.hasPreviousPeriod) this.$emit(\"onTrendPeriodChanged\", this.periodMeta.previousPeriodStartDate);\n }\n\n updatePeriod(data: TrendPeriodMeta): void {\n this.periodMeta = data;\n }\n\n open(data: TrendPeriodMeta): void {\n this.periodMeta = data;\n this.loading = false;\n this.dialog = true;\n }\n\n close(): void {\n this.dialog = false;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedLossTrendDetailsModal.vue?vue&type=template&id=4cdfb0b1&scoped=true&\"\nimport script from \"./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpeedLossTrendDetailsModal.vue?vue&type=style&index=0&id=4cdfb0b1&lang=scss&scoped=true&\"\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 \"4cdfb0b1\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardText,VCol,VDialog,VDivider,VIcon,VRow,VSpacer,VToolbar,VToolbarTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Ref, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\nimport { MapMarker } from \"@/types/mapMarker\";\nimport { SpeedLossHistory } from \"@/types/SpeedLossHistory\";\nimport { SpeedLossStatistic } from \"@/types/SpeedLossStatistic\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\nimport { FoulingAddedConsumption } from \"@/types/FoulingAddedConsumption\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\n\n// components\nimport FoulingContentLoader from \"@/components/Fouling/FoulingContentLoader.vue\";\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\nimport EditVesselEvent from \"@/components/EditVesselEvent.vue\";\nimport EventImpactModal from \"@/components/Fouling/modals/EventImpactModal.vue\";\nimport BenchmarkSettingsModal from \"@/components/Fouling/modals/BenchmarkSettingsModal.vue\";\nimport MCRModal from \"@/components/Fouling/modals/MCRModal.vue\";\nimport HullCoatingModal from \"@/components/Fouling/modals/HullCoatingModal.vue\";\nimport SpeedLossCard from \"@/components/Fouling/SpeedLossCard.vue\";\nimport SpeedLossChartCard from \"@/components/Fouling/SpeedLossChartCard.vue\";\nimport DiagnosticCard from \"@/components/DiagnosticCard.vue\";\nimport PropulsionEfficencyCard from \"@/components/Fouling/PropulsionEfficencyCard.vue\";\nimport OperationalProfileCard from \"@/components/Fouling/OperationalProfileCard.vue\";\nimport DiagnosticsDetails from \"@/components/diagnosticsDetails/DiagnosticsDetails.vue\";\nimport SpeedLossTrendDetailsModal from \"@/components/Fouling/modals/SpeedLossTrendDetailsModal.vue\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Snackbar = getModule(SnackbarModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst Fouling = getModule(FoulingModule, store);\n\n@Component({\n components: {\n FoulingContentLoader,\n FeatureNotAvailable,\n SpeedLossCard,\n SpeedLossChartCard,\n DiagnosticCard,\n PropulsionEfficencyCard,\n OperationalProfileCard,\n EditVesselEvent,\n EventImpactModal,\n BenchmarkSettingsModal,\n MCRModal,\n HullCoatingModal,\n DiagnosticsDetails,\n SpeedLossTrendDetailsModal,\n },\n})\nexport default class FoulingView extends Vue {\n @Ref(\"CreateEventModal\") CreateEventModal!: any;\n @Ref(\"EventImpactModal\") EventImpactModal!: any;\n @Ref(\"BenchmarkSettingsModal\") BenchmarkSettingsModal!: any;\n @Ref(\"MCRModal\") MCRModal!: any;\n @Ref(\"HullCoatingModal\") HullCoatingModal!: any;\n @Ref(\"SpeedLossTrendDetailsModal\") SpeedLossTrendDetailsModal!: any;\n @Ref(\"ShipSpeedLogCard\") DiagnosticCard!: any;\n @Ref(\"SpeedLossChartCard\") SpeedLossChartCard!: any;\n @Ref(\"OperationalProfileCard\") OperationalProfileCard!: any;\n @Ref(\"OperationalProfileExpanded\") OperationalProfileExpanded!: any;\n\n loader = true;\n CreateEventModalActive = false;\n EventImpactModalActive = false;\n BenchmarkSettingsModalActive = false;\n MCRModalActive = false;\n HullCoatingModalActive = false;\n OperationalProfileModal = false;\n speedMeasurementModal = false;\n isDataLoading = false;\n tempUseDerivedStw = false;\n addedFuelConsumptions: FoulingAddedConsumption[] | null = null;\n foulingChartConfig: FoulingChartConfig = {} as FoulingChartConfig;\n operationalProfileDateRange: number[] = [moment(moment().subtract(12, \"months\").format(\"YYYY-MM-DD\")).valueOf(), moment(moment().format(\"YYYY-MM-DD\")).valueOf()];\n speedMeasurementItems: { text: string; value: boolean }[] = [\n {\n text: \"Speed Log\",\n value: false,\n },\n {\n text: \"Derived STW\",\n value: true,\n },\n ];\n\n // @Watchers\n @Watch(\"getFoulingChartConfig\", { deep: true })\n onFoulingChartConfigChanged(): void {\n this.foulingChartConfig = JSON.parse(JSON.stringify(this.getFoulingChartConfig));\n }\n\n // @Getters\n get featureEnabled(): boolean {\n if (!this.vessel) return false;\n\n return this.vessel.features.some(feature => feature.name === \"Fouling\");\n }\n\n get isDerivedStwFeatureEnabled(): boolean {\n if (!this.vessel) return false;\n\n return this.vessel.features.some(feature => feature.name === \"DerivedSpeedThroughWater\");\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get speedLossHistory(): SpeedLossHistory[] {\n return Fouling.speedLossHistory;\n }\n\n get speedLossStatistics(): SpeedLossStatistic[] {\n return Fouling.speedLossStatistics;\n }\n\n get latestSpeedLossStatistics(): SpeedLossStatistic | null {\n return this.speedLossStatistics[this.speedLossStatistics.length - 1] ?? null;\n }\n\n get latestAddedConsumption(): FoulingAddedConsumption | undefined {\n if (!this.addedFuelConsumptions) return;\n const filteredFuelConsumptions = this.addedFuelConsumptions.filter(c => c.usingDerivedStw === this.foulingChartConfig.useDerivedStw);\n return filteredFuelConsumptions[filteredFuelConsumptions.length - 1];\n }\n\n get latestTrendEvent(): VesselEvent {\n return VesselEvents.trendEvents[0];\n }\n\n get latestSpeedLossHistory(): SpeedLossHistory[] {\n if (!this.latestSpeedLossStatistics) return [];\n return this.speedLossHistory.filter(\n item =>\n moment.utc(item.timestamp).valueOf() >= moment.utc(this.latestSpeedLossStatistics?.fromDate).valueOf() &&\n moment.utc(item.timestamp).valueOf() <= moment.utc(this.latestSpeedLossStatistics?.toDate).valueOf()\n );\n }\n\n get isBenchmarking(): boolean {\n if (!this.foulingChartConfig) return false;\n return !this.latestSpeedLossStatistics?.benchmark.end && !this.foulingChartConfig.useManualBenchmark;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get benchmarkType(): { tooltip: string; icon: string } {\n if (this.foulingChartConfig.useManualBenchmark) {\n return {\n tooltip: `Using manual benchmark level: ${this.foulingChartConfig.benchmark}%`,\n icon: \"mdi-alpha-m-circle\",\n };\n } else {\n return {\n tooltip: \"Using automatic calculated benchmark level\",\n icon: \"mdi-alpha-a-circle\",\n };\n }\n }\n\n get derivedStwHint(): string {\n return this.tempUseDerivedStw\n ? \"The derived Speed Through Water (STW) is calculated from the Speed Over Ground (SOG) and the ocean current’s speed and direction by resolving them into their components.\"\n : \"\";\n }\n\n // @Methods\n async fetchData(): Promise {\n if (!this.vessel) return;\n\n try {\n await Promise.all([\n Fouling.fetchSpeedLossStatistics(this.vessel.id),\n Fouling.fetchSpeedLossHistory({ vesselId: this.vessel.id }),\n VesselEvents.fetchEvents(this.vessel.id),\n VesselEvents.updateTrendEventTypes(),\n ]);\n this.foulingChartConfig = await Fouling.fetchFoulingChartConfig(this.vessel.id);\n this.addedFuelConsumptions = await Fouling.fetchAddedFuelConsumption(this.vessel.id);\n this.tempUseDerivedStw = this.foulingChartConfig.useDerivedStw;\n } catch (e) {\n Snackbar.showSnackbar({ text: \"Failed to load data\" });\n } finally {\n this.loader = false;\n }\n }\n\n async onFilteringSettingsUpdated(): Promise {\n if (!this.vessel) return;\n this.isDataLoading = true;\n try {\n await Fouling.fetchSpeedLossHistory({ vesselId: this.vessel.id });\n await Fouling.fetchSpeedLossStatistics(this.vessel.id);\n this.addedFuelConsumptions = await Fouling.fetchAddedFuelConsumption(this.vessel.id);\n } catch (e) {\n Snackbar.showSnackbar({ text: \"Failed to update data\" });\n } finally {\n this.isDataLoading = false;\n }\n }\n\n openSpeedLossTrendDetailsModal(data: any): void {\n if (!data.vesselId) return;\n this.SpeedLossTrendDetailsModal.open(data);\n }\n\n async createEvent(): Promise {\n const success = await this.CreateEventModal.open();\n if (success) {\n Snackbar.showSnackbar({ text: \"Event created successfully\", color: \"success\" });\n await this.fetchData();\n } else if (success === false) {\n Snackbar.showSnackbar({ text: \"Failed to create event\" });\n }\n }\n\n async onUseDerivedStwChanged(): Promise {\n this.speedMeasurementModal = false;\n this.foulingChartConfig.useDerivedStw = this.tempUseDerivedStw;\n await Fouling.updateFoulingChartConfig(this.foulingChartConfig);\n await Fouling.fetchFoulingChartConfig(this.vessel!.id);\n await this.onFilteringSettingsUpdated();\n }\n\n closeSpeedMeasurementSettingsModal(): void {\n this.speedMeasurementModal = false;\n this.tempUseDerivedStw = this.foulingChartConfig.useDerivedStw;\n }\n\n closeOperationalProfileModal(): void {\n this.OperationalProfileModal = false;\n }\n\n onExpandMap(): void {\n this.OperationalProfileModal = true;\n }\n\n setEventImpact(): void {\n this.EventImpactModal.open();\n }\n\n async setBenchmarkSettings(): Promise {\n await this.BenchmarkSettingsModal.open();\n }\n\n async setMCRSettings(): Promise {\n await this.MCRModal.open();\n }\n\n setHullCoating(): void {\n this.HullCoatingModal.open();\n }\n\n minutesDiff(fromDate: Date, toDate: Date): number {\n const diff = (fromDate.getTime() - toDate.getTime()) / 1000 / 60;\n\n return Math.abs(Math.round(diff));\n }\n\n // TODO move to helpers\n autoGranularity(selectedTimeInMinutes: number): string {\n if (selectedTimeInMinutes <= 1440) {\n return \"Raw\";\n } else if (selectedTimeInMinutes <= 2880) {\n return \"Minute\";\n } else if (selectedTimeInMinutes <= 20160) {\n return \"QuarterHour\";\n } else if (selectedTimeInMinutes <= 129600) {\n return \"Hour\";\n }\n\n return \"Day\";\n }\n\n markerClicked(marker: MapMarker): void {\n this.SpeedLossChartCard.zoomIn(moment(marker.lastExportDate).valueOf(), moment(marker.lastExportDate).valueOf());\n }\n\n trackClicked(dates: { trackDateStart: string; trackDateEnd: string }): void {\n this.SpeedLossChartCard.zoomIn(moment(dates.trackDateStart).valueOf(), moment(dates.trackDateEnd).valueOf());\n }\n\n onShipSpeedLogChartSelection(datesRange: { min: number; max: number }): void {\n // Chart -> Operational Profile sync is disabled for now:\n // this.OperationalProfileCard.setDateRange(datesRange);\n }\n\n syncSpeedLossChartDates(datesRange: { min: number; max: number; zoomedOut: boolean }): void {\n this.SpeedLossChartCard.zoomIn(datesRange.min, datesRange.max, datesRange.zoomedOut);\n }\n\n getTrendPeriodByFromDate(fromDate: string): SpeedLossStatistic | null {\n return this.speedLossStatistics.find((item, i) => item.fromDate === fromDate) ?? null;\n }\n\n getTrendPeriod(trendPeriod: SpeedLossStatistic, type: string): SpeedLossStatistic | null {\n if (!type) return trendPeriod;\n let currentTrendPeriod = null;\n this.speedLossStatistics.forEach((item, i) => {\n if (item.fromDate === trendPeriod.fromDate) {\n currentTrendPeriod = this.speedLossStatistics[type === \"next\" ? i + 1 : i - 1];\n }\n });\n return currentTrendPeriod;\n }\n\n getTrendPeriodMeta(trendPeriod: SpeedLossStatistic): TrendPeriodMeta {\n return {\n vesselId: this.vessel?.id ?? null,\n fromDate: trendPeriod.fromDate,\n toDate: trendPeriod.toDate,\n nextPeriodStartDate: this.getTrendPeriod(trendPeriod, \"next\")?.fromDate ?? null,\n previousPeriodStartDate: this.getTrendPeriod(trendPeriod, \"previous\")?.fromDate ?? null,\n benchmark: trendPeriod.benchmark,\n trendEndValue: trendPeriod.trendEndValue,\n trendLine: trendPeriod.trendLine,\n speedLossHistory: this.speedLossHistory.filter(\n item => moment.utc(item.timestamp).valueOf() >= moment.utc(trendPeriod.fromDate).valueOf() && moment.utc(item.timestamp).valueOf() <= moment.utc(trendPeriod.toDate).valueOf()\n ),\n };\n }\n\n onTrendPeriodChanged(periodStartDate: string): void {\n const trendPeriod = this.getTrendPeriodByFromDate(periodStartDate);\n if (!trendPeriod) return;\n this.SpeedLossTrendDetailsModal.updatePeriod(this.getTrendPeriodMeta(trendPeriod));\n }\n\n // @Hooks\n async created(): Promise {\n if (!this.vessel || !this.featureEnabled) return;\n await this.fetchData();\n }\n\n beforeDestroy(): void {\n Fouling.CLEAR_SEA_SURFACE_TEMPERATURE();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fouling.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fouling.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Fouling.vue?vue&type=template&id=de18a394&scoped=true&\"\nimport script from \"./Fouling.vue?vue&type=script&lang=ts&\"\nexport * from \"./Fouling.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Fouling.vue?vue&type=style&index=0&id=de18a394&lang=scss&scoped=true&\"\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 \"de18a394\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VDialog,VDivider,VIcon,VList,VListItem,VListItemTitle,VMenu,VRow,VSelect,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossTrendDetailsModal.vue?vue&type=style&index=0&id=4cdfb0b1&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=style&index=0&id=2aee085f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=style&index=0&id=616347e0&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fouling.vue?vue&type=style&index=0&id=de18a394&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=style&index=0&id=b5527b96&lang=scss&scoped=true&\""],"sourceRoot":""}