{"version":3,"sources":["webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?0e1d","webpack:///./src/components/Fouling/SpeedLossChartCard.vue?bfd3","webpack:///./src/components/Fouling/GraphCard.vue?edb9","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?dabc","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?a839","webpack:///./src/components/Fouling/FoulingContentLoader.vue?585a","webpack:///./src/components/Fouling/BenchmarkCard.vue?85e8","webpack:///./src/views/vessel/Fouling.vue?5e41","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?8933","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?8501","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?1bec","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?272c","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?ee42","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?d06d","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?bdf4","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?271f","webpack:///./src/components/Fouling/GraphCard.vue?6bc5","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?4c43","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/HullCoatingModal.vue?0309","webpack:///./src/views/vessel/Fouling.vue?a88f","webpack:///./src/components/Fouling/OperationalProfileCard.vue?45bf","webpack:///./src/components/Fouling/SpeedLossCard.vue?ddf1"],"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","numericFilter","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","style","fontFamily","events","selection","e","$this","setTimeout","resetSelection","min","xAxis","max","credits","enabled","legend","title","yAxis","tickPixelInterval","minRange","plotLines","vesselEventPlotLines","plotBands","vesselEventPlotBands","labels","y","series","dataSeries","backgroundColor","borderWidth","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","condition","intervalList","isDataIntervalAllowedForDataSize","granularity","speed","applyFilter","closeFilterMenu","averageKPI","avgChangeShaftPowerTooltipText","expandChart","isFirstPeriodFromDateModalExpandedActive","isFirstPeriodToDateModalExpandedActive","isSecondPeriodFromDateModalExpandedActive","isSecondPeriodToDateModalExpandedActive","filterMenuModal","PropulsionEfficencyCard","isToDateModalActive","foulingConfig","peMinSpeed","peMaxSpeed","peGranularity","peCondition","pePeriodOneFromDate","pePeriodOneToDate","firstPeriodData","filtredFirstPeriodData","pePeriodTwoFromDate","pePeriodTwoToDate","secondPeriodData","filtredSecondPeriodData","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","chartSettings","stwLegend","area","threshold","showInLegend","dataLabels","formatter","dateSpan","pointDate","point","seriesData","spacingBottom","spacingLeft","_","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","applySpeedFilter","points","concat","find","p","getTime","$parent","$on","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","interval","asMilliseconds","seaTemperatureDateRange","seaSurfaceTemperature","getSeaTemperaturePoints","total","temperature","timeSpent","syncDateRange","rangeYears","config","opFromDate","opToDate","updateWeatherData","fitBounds","position","lat","lng","trackDateStart","trackHistory","prevMarkers","slice","lastExportDate","trackDateEnd","minMaxDateRange","datesRange","mapRef","setZoom","Ref","hasPreviousPeriod","loading","previousPeriod","hasNextPeriod","nextPeriod","periodMeta","GraphCard","benchmarkZone","trendPeriodMeta","marginTop","gridLineWidth","benchmarkingZone","eventPlotLines","setExtremes","cmax","cmin","resetZoomButton","gridLineColor","xDateFormat","lineColor","fillColor","formatDatetimeToUTC","infoEvents","getFormatedDateTimeString","convertTimestamp","addPlotLine","highcharts","domProps","BenchmarkCard","VSystemBar","pointCount","trendFunction","StatisticsCard","a","LimitsCard","limits","exportedAt","minPower","windSpeed","minTime","SpeedLossTrendDetailsModal","FoulingView","addedFuelConsumptions","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-24a4ba52.1c092df2.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!./PropulsionEfficencyCard.vue?vue&type=style&index=0&id=73bfb5dd&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!./SpeedLossChartCard.vue?vue&type=style&index=0&id=c071e1c4&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=5a2632f5&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!./SpeedLossTrendDetailsModal.vue?vue&type=style&index=0&id=0be7a10b&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&\"","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 font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){return _vm.createEvent()}}},[_vm._v(\" Insert new event \")]),_c('v-btn',{staticClass:\"my-2 font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){return _vm.setEventImpact()}}},[_vm._v(\" View event impact \")]),_c('v-btn',{staticClass:\"my-2 font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){return _vm.setHullCoating()}}},[_vm._v(\" Insert Hull Coating \")])],1)]},proxy:true}],null,false,3921031049)})],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',{staticClass:\"font-weight-medium\",attrs:{\"color\":\"accentDarker110\",\"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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\"},on:{\"click\":_vm.onUseDerivedStwChanged}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\",\"form\":\"edit-event-form\",\"disabled\":_vm.disableSaveBenchmarkLevelSettings},on:{\"click\":_vm.updateBenchmarkLevelSettings}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-semibold\",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\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=1c3325ba&\"\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.numericFilter},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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.updateFoulingChartConfig}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",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\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 numericFilter(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=473accd2&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 \"473accd2\",\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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.submit}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",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\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\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 successfully 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=524ecf55&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=524ecf55&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 \"524ecf55\",\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\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 <= 0;\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=d2c761c6&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=d2c761c6&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 \"d2c761c6\",\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-semibold\"},[_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 minRange: 1,\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=c071e1c4&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=c071e1c4&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 \"c071e1c4\",\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-semibold 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.condition),callback:function ($$v) {_vm.condition=$$v},expression:\"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.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"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.speed[0])+\" knots – \"+_vm._s(_vm.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.speed),callback:function ($$v) {_vm.speed=$$v},expression:\"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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":function($event){return _vm.closeFilterMenu()}}},[_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\":\"primary\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}],null,false,1317258515)},[_c('span',[_vm._v(_vm._s(_vm.avgChangeShaftPowerTooltipText))])])],1):_c('p',{staticClass:\"average-text font-weight-medium\"},[_vm._v(\" N/A No Overlapping Points. \"),_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\":\"primary\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.avgChangeShaftPowerTooltipText))])])],1)]),_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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accentDarker110\",\"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-subtitle',{staticClass:\"pt-10\"},[_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:\"menuFirstPeriodFromDateExpanded\",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.isFirstPeriodFromDateModalExpandedActive),callback:function ($$v) {_vm.isFirstPeriodFromDateModalExpandedActive=$$v},expression:\"isFirstPeriodFromDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodFromDateExpanded', _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:\"menuFirstPeriodToDateExpanded\",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.isFirstPeriodToDateModalExpandedActive),callback:function ($$v) {_vm.isFirstPeriodToDateModalExpandedActive=$$v},expression:\"isFirstPeriodToDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.firstPeriodFromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodToDateExpanded', _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:\"menuSecondPeriodFromDateExpanded\",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.isSecondPeriodFromDateModalExpandedActive),callback:function ($$v) {_vm.isSecondPeriodFromDateModalExpandedActive=$$v},expression:\"isSecondPeriodFromDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodFromDateExpanded', _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:\"menuSecondPeriodToDateExpanded\",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.isSecondPeriodToDateModalExpandedActive),callback:function ($$v) {_vm.isSecondPeriodToDateModalExpandedActive=$$v},expression:\"isSecondPeriodToDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.secondPeriodFromDate,\"color\":\"primary lighten-2\",\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodToDateExpanded', _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.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.condition),callback:function ($$v) {_vm.condition=$$v},expression:\"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.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"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.speed[0])+\" knots – \"+_vm._s(_vm.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.speed),callback:function ($$v) {_vm.speed=$$v},expression:\"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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":function($event){return _vm.closeFilterMenu()}}},[_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\":\"primary\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}],null,false,1317258515)},[_c('span',[_vm._v(_vm._s(_vm.avgChangeShaftPowerTooltipText))])])],1):_c('p',{staticClass:\"average-text font-weight-medium\"},[_vm._v(\" N/A No Overlapping Points. \"),_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\":\"primary\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.avgChangeShaftPowerTooltipText))])])],1)]),_c('v-card-text',{staticClass:\"pt-6\"},[_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\",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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// 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\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 isFirstPeriodFromDateModalExpandedActive = false;\n isFirstPeriodToDateModalExpandedActive = false;\n isSecondPeriodFromDateModalExpandedActive = false;\n isSecondPeriodToDateModalExpandedActive = false;\n isToDateModalActive = false;\n isDataLoading = false;\n filterMenu = false;\n filterMenuModal = false;\n expandChart = false;\n speed = [this.foulingConfig.peMinSpeed, this.foulingConfig.peMaxSpeed];\n granularity = this.foulingConfig.peGranularity;\n condition = this.foulingConfig.peCondition;\n currentDate: string = moment().format(\"YYYY-MM-DD\");\n firstPeriodFromDate: string = moment(this.foulingConfig.pePeriodOneFromDate).format(\"YYYY-MM-DD\");\n firstPeriodToDate: string = moment(this.foulingConfig.pePeriodOneToDate).format(\"YYYY-MM-DD\");\n firstPeriodData: number[][] = [];\n filtredFirstPeriodData: number[][] = [];\n secondPeriodFromDate: string = moment(this.foulingConfig.pePeriodTwoFromDate).format(\"YYYY-MM-DD\");\n secondPeriodToDate: string = moment(this.foulingConfig.pePeriodTwoToDate).format(\"YYYY-MM-DD\");\n secondPeriodData: number[][] = [];\n filtredSecondPeriodData: number[][] = [];\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: \"#331714\" },\n },\n labels: {\n format: \"{value} kW\",\n style: { color: \"#331714\" },\n },\n },\n xAxis: {\n min: 0,\n max: 25,\n labels: {\n format: \"{value} knots\",\n style: { color: \"#331714\" },\n },\n title: {\n text: this.stwLegend,\n style: { color: \"#331714\" },\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: \"#0600FE\",\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0600FE\",\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.isDataLoading = true;\n this.foulingConfig.pePeriodOneFromDate = this.firstPeriodFromDate;\n this.foulingConfig.pePeriodOneToDate = this.firstPeriodToDate;\n this.foulingConfig.pePeriodTwoFromDate = this.secondPeriodFromDate;\n this.foulingConfig.pePeriodTwoToDate = this.secondPeriodToDate;\n\n try {\n await Fouling.updateFoulingChartConfig(this.foulingConfig);\n\n if (\n datepickerRef === \"menuFirstPeriodFromDate\" ||\n datepickerRef === \"menuFirstPeriodToDate\" ||\n datepickerRef === \"menuFirstPeriodFromDateExpanded\" ||\n datepickerRef === \"menuFirstPeriodToDateExpanded\"\n ) {\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\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 (\n datepickerRef === \"menuSecondPeriodFromDate\" ||\n datepickerRef === \"menuSecondPeriodToDate\" ||\n datepickerRef === \"menuSecondPeriodFromDateExpanded\" ||\n datepickerRef === \"menuSecondPeriodToDateExpanded\"\n ) {\n const secondPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.secondPeriodFromDate,\n toDate: this.secondPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\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.foulingConfig.peCondition });\n this.applySpeedFilter();\n } finally {\n this.isDataLoading = false;\n }\n }\n\n async applyFilter(): Promise {\n this.filterMenu = false;\n this.filterMenuModal = false;\n this.foulingConfig.peMinSpeed = this.speed[0];\n this.foulingConfig.peMaxSpeed = this.speed[1];\n if (this.foulingConfig.peCondition !== this.condition || this.foulingConfig.peGranularity !== this.granularity) {\n this.foulingConfig.peGranularity = this.granularity;\n this.foulingConfig.peCondition = this.condition;\n await this.fetchData();\n } else {\n this.applySpeedFilter();\n }\n await Fouling.updateFoulingChartConfig(this.foulingConfig);\n }\n\n applySpeedFilter(): void {\n this.filtredFirstPeriodData = this.firstPeriodData.filter(item => item[0] >= this.foulingConfig.peMinSpeed && item[0] <= this.foulingConfig.peMaxSpeed);\n this.filtredSecondPeriodData = this.secondPeriodData.filter(item => item[0] >= this.foulingConfig.peMinSpeed && item[0] <= this.foulingConfig.peMaxSpeed);\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 async fetchData(): Promise {\n if (!this.vessel || this.isDataLoading) return;\n this.isDataLoading = true;\n try {\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\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.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\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 this.applySpeedFilter();\n await Fouling.fetchPropulsionEfficencyCurve({ vesselId: this.vessel.id, condition: this.foulingConfig.peCondition });\n } finally {\n this.isDataLoading = false;\n }\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 closeFilterMenu(): void {\n this.filterMenu = false;\n this.filterMenuModal = false;\n this.speed = [this.foulingConfig.peMinSpeed, this.foulingConfig.peMaxSpeed];\n this.granularity = this.foulingConfig.peGranularity;\n this.condition = this.foulingConfig.peCondition;\n }\n\n async created(): Promise {\n await this.fetchData();\n this.$parent.$on(\"refetchPropulsionEfficiencyData\", 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=73bfb5dd&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=73bfb5dd&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 \"73bfb5dd\",\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-semibold 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-semibold\",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 font-weight-medium\"},[_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\":\"primary\",\"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\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!: string[];\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 = [this.fromDate, this.toDate];\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 const config = Fouling.foulingChartConfig;\n config.opFromDate = this.fromDate;\n config.opToDate = this.toDate;\n Fouling.updateFoulingChartConfig(config);\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 = [this.fromDate, this.toDate];\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: this.syncDateRange[0], to: this.syncDateRange[1] };\n this.fromDate = moment(this.seaTemperatureDateRange.from).format(\"YYYY-MM-DD\");\n this.toDate = moment(this.seaTemperatureDateRange.to).format(\"YYYY-MM-DD\");\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=aec26f50&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=aec26f50&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 \"aec26f50\",\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',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accentDarker110\",\"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 = false;\n\n // @Getters\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get benchmarkingZone(): any {\n const benchmarkZone: any = {\n from: null,\n to: null,\n };\n if (this.trendPeriodMeta.benchmark.start == null && this.trendPeriodMeta.benchmark.end == null) return benchmarkZone;\n benchmarkZone.from = moment(this.trendPeriodMeta.benchmark.start).valueOf();\n benchmarkZone.to = moment(this.trendPeriodMeta.benchmark.end).valueOf();\n return benchmarkZone;\n }\n\n get ChartOptions(): unknown {\n if (!this.chartLoaded) return {};\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 const 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=5a2632f5&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=5a2632f5&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 \"5a2632f5\",\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 { 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=097b76bf&\"\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\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=0be7a10b&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=0be7a10b&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 \"0be7a10b\",\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\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: string[] = [];\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 this.operationalProfileDateRange = [this.getFoulingChartConfig.opFromDate, this.getFoulingChartConfig.opToDate];\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 this.$emit(\"refetchPropulsionEfficiencyData\");\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=d9699be0&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=d9699be0&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 \"d9699be0\",\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!./HullCoatingModal.vue?vue&type=style&index=0&id=524ecf55&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=d9699be0&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=aec26f50&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=d2c761c6&lang=scss&scoped=true&\""],"sourceRoot":""}