{"version":3,"sources":["webpack:///./src/components/Fouling/OperationalProfileCard.vue?eb37","webpack:///./src/components/Fouling/modals/MCRModal.vue?b43a","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?dabc","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?756b","webpack:///./src/components/Fouling/FoulingContentLoader.vue?585a","webpack:///./src/components/Fouling/modals/HullCoatingModal.vue?dd5e","webpack:///./src/components/Fouling/SpeedLossCard.vue?2439","webpack:///./src/components/Fouling/BenchmarkCard.vue?85e8","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?16f0","webpack:///./src/views/vessel/Fouling.vue?d8c7","webpack:///./src/components/Fouling/FoulingContentLoader.vue?ab50","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?7306","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?7fbd","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?176a","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?1035","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?97d9","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?3cdc","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?398e","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?ec76","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?6cd4","webpack:///./src/components/Fouling/GraphCard.vue?cf5e","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?e430","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?650c","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?ad2a","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/SpeedLossChartCard.vue?5150","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue?7bad","webpack:///./src/views/vessel/Fouling.vue?0383","webpack:///./src/components/Fouling/GraphCard.vue?ec68"],"names":["render","_vm","this","_h","$createElement","_c","_self","loader","staticClass","attrs","latestSpeedLossStatistics","latestTrendEvent","latestAddedConsumption","isBenchmarking","_e","ref","speedLossHistory","speedLossStatistics","isDataLoading","isDerivedStwFeatureEnabled","on","openSpeedLossTrendDetailsModal","onShipSpeedLogChartSelection","$event","speedMeasurementModal","setHullCoating","scopedSlots","_u","key","fn","_g","_b","_v","openManageEventsModal","setMCRSettings","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","closeManageEventsModal","manageEventsModal","eventTableHeaders","eventTableRows","header","text","item","formatEventDate","date","origin","editEvent","event","deleteEvent","staticRenderFns","FoulingContentLoader","Vue","Component","component","VCol","VRow","VSkeletonLoader","close","dialog","hasTrendEvents","trendEvents","fetchEventImpact","data","formatDate","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","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","JSON","parse","stringify","getFoulingChartConfig","useManualBenchmark","cloneConfig","updateFoulingChartConfig","fetchFoulingChartConfig","showSnackbar","color","$emit","VCardSubtitle","VIcon","VRadio","VRadioGroup","VTextField","VTooltip","fieldRequired","mcr","numericFilter","windBeaufort","required","isSaveDisabled","MCRModal","payload","minPercentMcr","maxBeaufortWind","window","expect","target","toString","test","hullCoatingManufacturer","hullCoatingType","submit","HullCoatingModal","manufacturers","types","manufacturerId","typeId","brand","postHullCoatingVessel","fetchHullCoatingVessel","fetchHullCoatingType","fetchHullCoatingManufacturer","response","Prop","class","classes","statecolor","stateicon","latestSpeedLossPercentage","cumulativeAddedConsumptionTooltipText","cumulativeAddedFuelConsumption","baselineTooltipText","benchmarkTooltipText","benchmarkInfo","formatColorLegendValue","greenZoneEnds","yellowZoneEnds","SpeedLossCard","Math","abs","trendEndValue","level","state","isManual","benchmarkLevel","dateHelper","getFormatedDateString","addedFuelConsumption","fromDate","roundedNumber","round","Number","cumulativeAddedConsumption","toLocaleString","adjustedValue","precision","multiplier","pow","chartTitleTooltipText","_t","onEditSpeedSource","speedMeasurementSource","onEditHullSource","hullCoatingVessel","manufacturerName","typeName","closeHint","ChartOptions","chartReady","HighchartsNoData","Highcharts","SpeedLossChartCard","chartLoaded","dragHint","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","speedLossPercent","trendLines","filteredStatistics","forEach","push","utc","trendLine","b","toDate","filter","s","firstSpeedLossDate","lastStatistics","benchmarkingData","dashStyle","visible","lastSpeedLossDate","lineWidth","speedLossPoints","benchmarkLine","baseline","console","log","vesselEvents","html","getPlotLineLabels","getVesselEventsOnSameDate","Object","assign","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","$cookies","set","datetime","split","endsWith","get","Chart","VProgressCircular","propulsionEfficiencyToolTooltipText","expandWidget","firstPeriodFromDate","isFirstPeriodFromDateModalActive","vesselLogDataMinDate","firstPeriodToDate","onPeriodDateChanged","isFirstPeriodToDateModalActive","currentDate","secondPeriodFromDate","isSecondPeriodFromDateModalActive","secondPeriodToDate","isSecondPeriodToDateModalActive","filterMenu","conditionsList","condition","isNautilusVessel","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","diffs","power1","roundedSpeed1","has","power2","diff","averageDiff","reduce","sum","averageDiffPercentage","chartSettings","stwLegend","area","threshold","showInLegend","dataLabels","formatter","dateSpan","point","seriesData","spacingBottom","spacingLeft","_","isEmpty","propulsionCurve","xValues","yValues","v","benchmarkPercentFactor","remove","scatterPointsSerie","keys","stickyTracking","radius","scatterPointsSerie2","benchmarkCurve","theoreticalLine","theoreticalCurve","onboardSystem","days","duration","asMinutes","datepickerRef","$refs","save","fetchPropulsionEfficency","autoGranularity","firstPeriodResponse","replace","secondPeriodResponse","fetchPropulsionEfficencyCurve","applySpeedFilter","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","end","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","_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","syncDateRange","seaSurfaceTemperature","getSeaTemperaturePoints","total","temperature","timeSpent","rangeYears","config","opFromDate","opToDate","updateWeatherData","fitBounds","position","lat","lng","trackDateStart","trackHistory","prevMarkers","slice","lastExportDate","trackDateEnd","minMaxDateRange","datesRange","mapRef","setZoom","Ref","deep","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","align","sortable","features","some","feature","filteredFuelConsumptions","c","usingDerivedStw","tableRows","source","actions","Promise","all","fetchSpeedLossStatistics","fetchSpeedLossHistory","fetchEvents","updateTrendEventTypes","fetchAddedFuelConsumption","open","CreateEventModal","success","confirmDelete","confirmed","zoomIn","dates","find","periodStartDate","getTrendPeriodByFromDate","updatePeriod","featureEnabled","CLEAR_SEA_SURFACE_TEMPERATURE","FeatureNotAvailable","DiagnosticCard","EditVesselEvent","ConfirmDialog","DiagnosticsDetails"],"mappings":"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","file":"js/chunk-7b4c29e8.5fb14e8a.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!./OperationalProfileCard.vue?vue&type=style&index=0&id=074f1c00&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!./MCRModal.vue?vue&type=style&index=0&id=3abc59c0&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=52a70334&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!./HullCoatingModal.vue?vue&type=style&index=0&id=e6904b0c&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=90b044fa&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=style&index=0&id=bf3e2b28&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=style&index=0&id=0181485c&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',[(_vm.latestTrendEvent)?_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):_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":_vm.latestTrendEvent ? 8 : 12,\"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.openManageEventsModal()}}},[_c('v-list-item-title',[_vm._v(\"Manage events\")])],1),_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\",staticStyle:{\"width\":\"100%\"}},[_c('v-btn',{staticClass:\"my-2 font-weight-semibold\",attrs:{\"color\":\"neutralLighten100\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.createEvent()}}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" Add new event \")],1),_c('v-btn',{staticClass:\"my-2 font-weight-semibold\",attrs:{\"color\":\"neutralLighten100\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.setHullCoating()}}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" Add Hull Coating \")],1),_c('v-btn',{staticClass:\"my-2 font-weight-semibold\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.setEventImpact()}}},[_vm._v(\" View event impact \")])],1)]},proxy:true}],null,false,1315600272)})],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('ConfirmDialog',{ref:\"confirmDelete\"}),_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),_c('v-dialog',{attrs:{\"max-width\":\"887px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.closeManageEventsModal.apply(null, arguments)},\"click:outside\":_vm.closeManageEventsModal},model:{value:(_vm.manageEventsModal),callback:function ($$v) {_vm.manageEventsModal=$$v},expression:\"manageEventsModal\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"mb-4\"},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Manage events\")]),_c('v-btn',{staticClass:\"ml-auto\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeManageEventsModal}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('v-data-table',{attrs:{\"headers\":_vm.eventTableHeaders,\"items\":_vm.eventTableRows,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"No events\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\",\"fixed-header\":\"\",\"sort-by\":\"date\",\"sort-desc\":true},scopedSlots:_vm._u([{key:\"header.date\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.name\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.type\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Event can be either 'Trend event' or 'Info event'\")])])]}},{key:\"header.origin\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Where was the event created\")])])]}},{key:\"header.actions\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"item.date\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',[_vm._v(\" \"+_vm._s(_vm.formatEventDate(item.date))+\" \")])]}},{key:\"item.type\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":item.type === 'TrendEvent' ? 'success' : 'info'}},on),[_vm._v(\" \"+_vm._s(item.type === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\")+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.type))])])]}},{key:\"item.origin\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({},on),[_vm._v(_vm._s(item.origin === \"Office\" ? \"mdi-home\" : \"mdi-ferry\"))])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.origin))])])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"mr-4\",attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.editEvent(item.event)}}},on),[_c('v-icon',[_vm._v(\"mdi-pencil\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit event\")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteEvent(item.event)}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete event\")])])]}}],null,true)})],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\":\"primary-lighten-90\",\"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=52a70334&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=52a70334&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 \"52a70334\",\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-card-subtitle',{staticClass:\"pa-0\"},[_c('span',{staticClass:\"warning-box\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"warning110\",\"small\":\"\"}},[_vm._v(\"mdi-alert-circle-outline \")]),_vm._v(\"These settings will not be applied in the Diagnostics tab.\")],1)]),_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),(_vm.foulingChartConfig.useManualBenchmark)?_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):_vm._e()],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\",\"elevation\":\"0\",\"disabled\":_vm.disableSaveBenchmarkLevelSettings},on:{\"click\":_vm.updateBenchmarkLevelSettings}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"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\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 cloneConfig(): void {\n this.foulingChartConfig = JSON.parse(JSON.stringify(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: number): boolean | string {\n if (value !== 0 && !!!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.cloneConfig();\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 this.cloneConfig();\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=382fe9da&scoped=true&\"\nimport script from \"./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BenchmarkSettingsModal.vue?vue&type=style&index=0&id=382fe9da&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 \"382fe9da\",\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 { 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,VCardSubtitle,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:\"warning-box\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"warning110\",\"small\":\"\"}},[_vm._v(\"mdi-alert-circle-outline \")]),_vm._v(\"These filters will not be applied in the Diagnostics tab.\")],1)]),_c('v-text-field',{staticClass:\"mcr-input mt-6 mb-3\",attrs:{\"type\":\"number\",\"min\":\"1\",\"label\":\"MCR %\",\"rules\":[_vm.fieldRequired.mcr],\"hint\":\"Values are excluded from calculations if vessel power is below the % chosen above\",\"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 are excluded from calculations if wind speed is above the Beaufort scale chosen above\",\"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\",\"elevation\":\"0\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.updateFoulingChartConfig}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"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\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 cloneConfig(): void {\n this.foulingChartConfig = JSON.parse(JSON.stringify(this.getFoulingChartConfig));\n }\n\n open(): void {\n this.cloneConfig();\n this.dialog = true;\n }\n\n cancel(): void {\n this.dialog = false;\n this.cloneConfig();\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=3abc59c0&scoped=true&\"\nimport script from \"./MCRModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./MCRModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MCRModal.vue?vue&type=style&index=0&id=3abc59c0&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 \"3abc59c0\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\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,VIcon,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\",\"elevation\":\"0\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.submit}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"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\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=e6904b0c&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=e6904b0c&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 \"e6904b0c\",\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-start mb-4 flex-column\"},[_c('div',{staticClass:\"text-h4 font-weight-bold mb-0 d-flex flex-row\"},[_c('v-icon',{attrs:{\"color\":_vm.statecolor,\"large\":\"\"}},[_vm._v(_vm._s(_vm.stateicon)+\" \")]),_c('div',{staticClass:\"d-flex flex-column ml-3\"},[(_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\")])]),_c('span',{staticClass:\"card-subtitle\"},[_vm._v(\"compared to baseline\")])])],1)]),_c('v-card-subtitle',{staticClass:\"mb-5 cumulative-title\"},[_c('b',{staticClass:\"title-hint cumulative\"},[_vm._v(\"Cumulative Added Consumption \"),_c('v-icon',{staticClass:\"tooltip-icon\",attrs:{\"size\":\"16\",\"right\":\"\"}},[_vm._v(\" mdi-help-circle-outline \")]),_c('div',{staticClass:\"hint-text\"},[_vm._v(\" \"+_vm._s(_vm.cumulativeAddedConsumptionTooltipText)),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"/Help/Fouling\"}},[_vm._v(\"Learn more at the Help Center\")])])],1),_c('span',{staticClass:\"cumulative-value d-flex ml-1\"},[_vm._v(_vm._s(_vm.cumulativeAddedFuelConsumption)+\" ton(s)\")])]),_c('v-card-text',{staticClass:\"speed-loss__content text-lg-body-1\"},[_c('div',{staticClass:\"pb-2 tags\"},[_c('p',{staticClass:\"mb-1\"},[_c('b',{staticClass:\"title-hint baseline\"},[_vm._v(\"Baseline \"),_c('v-icon',{staticClass:\"tooltip-icon\",attrs:{\"right\":\"\",\"small\":\"\"}},[_vm._v(\" mdi-help-circle-outline \")]),_c('div',{staticClass:\"hint-text\"},[_vm._v(\" \"+_vm._s(_vm.baselineTooltipText)),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"/Help/Fouling\"}},[_vm._v(\"Learn more at the Help Center\")])]),_vm._v(\" : \")],1),_vm._v(\" Model tank test \")]),_c('p',{staticClass:\"mb-6\"},[_c('b',{staticClass:\"title-hint baseline\"},[_vm._v(\"Benchmark \"),_c('v-icon',{staticClass:\"tooltip-icon\",attrs:{\"right\":\"\",\"small\":\"\"}},[_vm._v(\" mdi-help-circle-outline \")]),_c('div',{staticClass:\"hint-text\"},[_vm._v(\" \"+_vm._s(_vm.benchmarkTooltipText)),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"/Help/Fouling\"}},[_vm._v(\"Learn more at the Help Center\")])]),_vm._v(\" : \")],1),_vm._v(\" \"+_vm._s(_vm.benchmarkInfo)+\" \")])]),_c('div',{staticClass:\"legends\"},[_c('v-card-subtitle',{staticClass:\"legend-title pa-0\"},[_c('b',[_vm._v(\"Legend:\")])]),_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('v-icon',{staticClass:\"color-icon\",attrs:{\"color\":\"#17B26A\",\"medium\":\"\"}},[_vm._v(\"mdi-check-circle \")]),_vm._v(\" Speed loss: ≤ \"+_vm._s(_vm.formatColorLegendValue(_vm.greenZoneEnds))+\"% compared to Baseline \")],1),_c('li',[_c('v-icon',{staticClass:\"color-icon\",attrs:{\"color\":\"#FDB022\",\"medium\":\"\"}},[_vm._v(\"mdi-alert-circle \")]),_vm._v(\" Speed loss: \"+_vm._s(_vm.formatColorLegendValue(_vm.greenZoneEnds))+\"% - \"+_vm._s(_vm.formatColorLegendValue(_vm.yellowZoneEnds))+\"% compared to Baseline \")],1),_c('li',[_c('v-icon',{staticClass:\"color-icon\",attrs:{\"color\":\"#F04438\",\"medium\":\"\"}},[_vm._v(\"mdi-alert-circle \")]),_vm._v(\" Speed loss: \"+_vm._s(_vm.formatColorLegendValue(_vm.yellowZoneEnds))+\"% compared to Baseline \")],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\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 \"#F04438\";\n case \"medium\":\n return \"#FDB022\";\n case \"normal\":\n return \"#17B26A\";\n case \"benchmarking\":\n return \"#2970FF\";\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 \"Vessel's 0% performance, speed loss value is calculated in relation to it.\";\n }\n\n get benchmarkTooltipText(): string {\n return \"Vessel performance during recent trend event, determines its status as green, yellow, or red.\";\n }\n\n get cumulativeAddedConsumptionTooltipText(): string {\n return \"Total extra fuel consumed due to speed loss during the latest trend period.\";\n }\n\n get classes(): any[] {\n return [\"speed-loss\", this.state];\n } \n\n get benchmarkInfo(): string | undefined {\n if (this.latestSpeedLossStatistics?.benchmark.isManual) {\n return `${this.benchmarkLevel}% from baseline`;\n }\n return this.latestTrendEvent.timestamp \n ? `${dateHelper.getFormatedDateString(this.latestTrendEvent.timestamp)} ${this.latestTrendEvent.name}`\n : this.latestTrendEvent.name;\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=90b044fa&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=90b044fa&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 \"90b044fa\",\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';\ninstallComponents(component, {VCard,VCardSubtitle,VCardText,VCardTitle,VIcon})\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:\" chart-title d-flex align-center font-weight-semibold\"},[_vm._v(\" Speed Loss Compared to Baseline \"),_c('v-icon',{staticClass:\"tooltip-icon\",attrs:{\"right\":\"\"}},[_vm._v(\" mdi-help-circle-outline \")]),_c('div',{staticClass:\"hint-text\"},[_vm._v(\" \"+_vm._s(_vm.chartTitleTooltipText)),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"/Help/Fouling\"}},[_vm._v(\"Learn more at the Help Center\")])])],1),_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(),(_vm.dragHint)?_c('div',{staticClass:\"info-box-container\"},[_c('span',{staticClass:\"info-box\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-alert-circle-outline \")]),_vm._v(\" Drag across the chart to zoom in on a specific date range \"),_c('v-btn',{staticClass:\"ml-1\",attrs:{\"color\":\"#00000066\",\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.closeHint()}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-close\")])],1)],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\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 dragHint = true;\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 console.log(\"series:\", series);\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 \"Long trend history of speed loss compared to vessel’s baseline. Note: Speed loss metric in the Fouling and Diagnostics tabs may differ due to different filter settings applied to data.\";\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 closeHint(): void {\n this.dragHint = false;\n Vue.$cookies.set(\"dragHint\", \"false\");\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 created(): void {\n this.dragHint = Vue.$cookies.get(\"dragHint\") === null ? true : Vue.$cookies.get(\"dragHint\") === \"true\";\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=0237b048&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=0237b048&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 \"0237b048\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VIcon,VProgressCircular})\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-btn',{staticClass:\"ml-auto\",attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.expandWidget()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-expand\")])],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.firstPeriodToDate},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.secondPeriodToDate},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',{staticClass:\"mb-2\"},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Filter settings\")])]),_c('v-card-subtitle',[_c('div',{staticClass:\"info-text\"},[_vm._v(\"Configured Beaufort scale and MCR filters are also applied to the propulsion efficiency data.\")])]),_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\":\"Cargo condition\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.condition),callback:function ($$v) {_vm.condition=$$v},expression:\"condition\"}})],1):_vm._e(),(!_vm.isNautilusVessel)?_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',[(item.value === 'Hour')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 6 months\")]):_vm._e(),(item.value === 'QuarterHour')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 15 days\")]):_vm._e(),(item.value === 'Minute')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 3 days\")]):_vm._e(),(item.value === 'Raw')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 2 days\")]):_vm._e()]):_vm._e()],1)],1)]}}],null,false,1763846494),model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1):_vm._e(),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range (knots)\")]),_c('div',{staticClass:\"speed-range-container\"},[_c('span',{staticClass:\"min-range\"},[_vm._v(_vm._s(_vm.speed[0]))]),_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\"}}),_c('span',{staticClass:\"max-range\"},[_vm._v(_vm._s(_vm.speed[1]))])],1)])],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"text\":\"\"},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.firstPeriodToDate},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.secondPeriodToDate},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-card-subtitle',[_c('div',{staticClass:\"info-text\"},[_vm._v(\"Configured Beaufort scale and MCR filters are also applied to the propulsion efficiency data.\")])]),_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\":\"Cargo condition\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.condition),callback:function ($$v) {_vm.condition=$$v},expression:\"condition\"}})],1):_vm._e(),(!_vm.isNautilusVessel)?_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',[(item.value === 'Hour')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 6 months\")]):_vm._e(),(item.value === 'QuarterHour')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 15 days\")]):_vm._e(),(item.value === 'Minute')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 3 days\")]):_vm._e(),(item.value === 'Raw')?_c('span',[_vm._v(\"Filter unavailable: date range exceeds 2 days\")]):_vm._e()]):_vm._e()],1)],1)]}}],null,false,1763846494),model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1):_vm._e(),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range (knots)\")]),_c('div',{staticClass:\"speed-range-container\"},[_c('span',{staticClass:\"min-range\"},[_vm._v(_vm._s(_vm.speed[0]))]),_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\"}}),_c('span',{staticClass:\"max-range\"},[_vm._v(_vm._s(_vm.speed[1]))])],1)])],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.applyFilter()}}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"text\":\"\"},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\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.utc().format(\"YYYY-MM-DD\");\n firstPeriodFromDate: string = moment.utc(this.foulingConfig.pePeriodOneFromDate).format(\"YYYY-MM-DD\");\n firstPeriodToDate: string = moment.utc(this.foulingConfig.pePeriodOneToDate).format(\"YYYY-MM-DD\");\n firstPeriodData: number[][] = [];\n filtredFirstPeriodData: number[][] = [];\n secondPeriodFromDate: string = moment.utc(this.foulingConfig.pePeriodTwoFromDate).format(\"YYYY-MM-DD\");\n secondPeriodToDate: string = moment.utc(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 = $this.point.date ? `Date: ${moment.utc($this.point.date).format(\"DD. MMM, YYYY HH:mm\")}
` : \"\";\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 keys: [\"x\", \"y\", \"date\"],\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 keys: [\"x\", \"y\", \"date\"],\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 \"Compares speed and power between two periods, helping verify if increased power requirements align with observed speed loss, and shows how each period compares to the Benchmark and Baseline.\";\n }\n\n get avgChangeShaftPowerTooltipText(): string {\n return \"For instance, if the average shaft power in Period 2 is 10,000 kW and in Period 1 is 8,000 kW, the average change will be 25%.\";\n }\n\n get isNautilusVessel(): boolean {\n return this.vessel?.onboardSystem === \"Nautilus\";\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.utc(this.firstPeriodToDate).diff(this.firstPeriodFromDate)).asMinutes() <= this.intervalLimit[value] &&\n moment.duration(moment.utc(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 [...firstPeriodResponse[key].split(\",\").map((item: string) => Number(item.replace(/\\(|\\)/g, \"\"))), 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 [...secondPeriodResponse[key].split(\",\").map((item: string) => Number(item.replace(/\\(|\\)/g, \"\"))), 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 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 [...firstPeriodResponse[key].split(\",\").map((item: string) => Number(item.replace(/\\(|\\)/g, \"\"))), 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 [...secondPeriodResponse[key].split(\",\").map((item: string) => Number(item.replace(/\\(|\\)/g, \"\"))), 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=0181485c&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=0181485c&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 \"0181485c\",\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(\"Locations where the vessel sailed and seawater temperatures during a selected period. Longer idling in warm waters (25°C and above) increases risk of fouling, leading to speed loss.\")])])],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.toDate},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-btn',{staticClass:\"ml-1\",attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.expandMap()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-expand\")])],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(\" Hours vessel sailed below 5 kts STW in seawater above 25°C. \")])])],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\nimport { Component, Vue, Ref, Prop, PropSync, Watch } 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.utc().format(\"YYYY-MM-DD\");\n fromDate: string = moment.utc().startOf(\"year\").format(\"YYYY-MM-DD\");\n toDate: string = moment.utc().format(\"YYYY-MM-DD\");\n min = moment.utc(moment.utc().year(this.speedHistoryStartYear).startOf(\"year\").format(\"YYYY-MM-DD\")).valueOf();\n max = moment.utc(moment.utc().format(\"YYYY-MM-DD\")).valueOf();\n interval: any = moment.duration(1, \"days\").asMilliseconds();\n seaTemperatureDateRange!: { from: string; to: string };\n\n @Watch(\"syncDateRange\", { deep: true })\n onSeaTemperatureDateRangeChanged() {\n this.seaTemperatureDateRange = { from: this.syncDateRange[0], to: this.syncDateRange[1] };\n this.fromDate = moment.utc(this.seaTemperatureDateRange.from).format(\"YYYY-MM-DD\");\n this.toDate = moment.utc(this.seaTemperatureDateRange.to).format(\"YYYY-MM-DD\");\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.utc(Fouling.speedHistoryStartYear).format(\"YYYY\"));\n }\n\n get formattedSelectedDateRange(): { from: string; to: string } {\n return {\n from: moment.utc(this.syncDateRange[0]).format(\"DD. MMM, YYYY\"),\n to: moment.utc(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 Vue.set(this.syncDateRange, 0, this.fromDate);\n Vue.set(this.syncDateRange, 1, this.toDate);\n const fromDate = moment.utc(this.fromDate);\n const toDate = moment.utc(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.utc(datesRange.min).format(\"YYYY-MM-DD\");\n this.toDate = moment.utc(datesRange.max).format(\"YYYY-MM-DD\");\n this.syncDateRange = [this.fromDate, this.toDate];\n Vue.set(this.seaTemperatureDateRange, \"from\", moment.utc(this.fromDate).format(\"YYYY-MM-DD\"));\n Vue.set(this.seaTemperatureDateRange, \"to\", moment.utc(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.utc(this.seaTemperatureDateRange.from).format(\"YYYY-MM-DD\");\n this.toDate = moment.utc(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=074f1c00&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=074f1c00&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 \"074f1c00\",\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 { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDatePicker,VIcon,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 if (!this.trendPeriodMeta.benchmark.end) {\n benchmarkZone.to = moment.utc();\n } else {\n benchmarkZone.to = moment(this.trendPeriodMeta.benchmark.end).valueOf();\n }\n\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=17606822&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=17606822&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 \"17606822\",\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.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 ConfirmDialog,\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 @Ref(\"confirmDelete\") confirmDelete!: 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 manageEventsModal = 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 eventTableHeaders = [\n { text: \"Date\", align: \"start\", sortable: false, value: \"date\" },\n { text: \"Name\", align: \"start\", sortable: false, value: \"name\" },\n { text: \"Type\", align: \"start\", sortable: false, value: \"type\" },\n { text: \"Origin\", align: \"start\", sortable: false, value: \"origin\" },\n { text: \"Actions\", align: \"start\", sortable: false, value: \"actions\" },\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(\n c => c.usingDerivedStw === this.foulingChartConfig.useDerivedStw && c.benchmarkLevel === this.latestSpeedLossStatistics?.benchmark.level\n );\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 get eventTableRows(): any[] {\n const tableRows: any[] = [];\n\n this.events.forEach(event => {\n tableRows.push({\n event,\n date: event.timestamp,\n name: event.name,\n type: event.type,\n origin: event.source,\n actions: [\"edit\", \"delete\"],\n });\n });\n\n return tableRows;\n }\n\n get events(): VesselEvent[] {\n return VesselEvents.allEvents;\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 editEvent(vesselEvent: VesselEvent): Promise {\n const success = await this.CreateEventModal.open(vesselEvent);\n if (success) {\n Snackbar.showSnackbar({ text: \"Event edited successfully\", color: \"success\" });\n } else if (success === false) {\n Snackbar.showSnackbar({ text: \"Failed to edit event\" });\n }\n }\n\n async deleteEvent(vesselEvent: VesselEvent): Promise {\n const confirmed = await this.confirmDelete.open(`Delete ${vesselEvent.name}`, \"Are you sure you want to delete this event?\");\n if (confirmed) {\n await VesselEvents.deleteEvent(vesselEvent);\n Snackbar.showSnackbar({ text: \"Event deleted successfully\", color: \"success\" });\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 closeManageEventsModal(): void {\n this.manageEventsModal = false;\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 openManageEventsModal(): void {\n this.manageEventsModal = 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 formatEventDate(date: string): string {\n return moment.utc(date).format(\"DD.MMM YYYY\");\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.utc(marker.lastExportDate).valueOf(), moment.utc(marker.lastExportDate).valueOf());\n }\n\n trackClicked(dates: { trackDateStart: string; trackDateEnd: string }): void {\n this.SpeedLossChartCard.zoomIn(moment.utc(dates.trackDateStart).valueOf(), moment.utc(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=15f2d790&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=15f2d790&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 \"15f2d790\",\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 { VDataTable } from 'vuetify/lib/components/VDataTable';\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,VDataTable,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!./SpeedLossChartCard.vue?vue&type=style&index=0&id=0237b048&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!./BenchmarkSettingsModal.vue?vue&type=style&index=0&id=382fe9da&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=15f2d790&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=17606822&lang=scss&scoped=true&\""],"sourceRoot":""}