{"version":3,"sources":["webpack:///./src/views/vessel/Fouling.vue?36a6","webpack:///./src/components/Fouling/SpeedLossChartCard.vue?e506","webpack:///./src/components/Fouling/SpeedLossCard.vue?46e6","webpack:///./src/components/Fouling/OperationalProfileCard.vue?8bae","webpack:///./src/components/Fouling/GraphCard.vue?edb9","webpack:///./src/components/Fouling/modals/BenchmarkSettingsModal.vue?364a","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/BenchmarkCard.vue?85e8","webpack:///./src/views/vessel/Fouling.vue?11ff","webpack:///./src/components/Fouling/FoulingContentLoader.vue?e50d","webpack:///./src/components/Fouling/FoulingContentLoader.vue","webpack:///./src/components/Fouling/FoulingContentLoader.vue?f963","webpack:///./src/components/Fouling/FoulingContentLoader.vue?9ecb","webpack:///./src/components/Fouling/modals/EventImpactModal.vue?b830","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?588e","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?656d","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?b684","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?b949","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?6534","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?9659","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?7052","webpack:///./src/components/Fouling/OperationalProfileCard.vue","webpack:///./src/components/Fouling/OperationalProfileCard.vue?3669","webpack:///./src/components/Fouling/OperationalProfileCard.vue?1960","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?271f","webpack:///./src/components/Fouling/GraphCard.vue?6bc5","webpack:///./src/components/Fouling/GraphCard.vue","webpack:///./src/components/Fouling/GraphCard.vue?23e3","webpack:///./src/components/Fouling/GraphCard.vue?6cc8","webpack:///./src/components/Fouling/BenchmarkCard.vue?ed3a","webpack:///./src/components/Fouling/BenchmarkCard.vue","webpack:///./src/components/Fouling/BenchmarkCard.vue?b12d","webpack:///./src/components/Fouling/BenchmarkCard.vue?51f3","webpack:///./src/components/Fouling/StatisticsCard.vue?4c43","webpack:///./src/components/Fouling/StatisticsCard.vue","webpack:///./src/components/Fouling/StatisticsCard.vue?2f7d","webpack:///./src/components/Fouling/StatisticsCard.vue?d72f","webpack:///./src/components/Fouling/LimitsCard.vue?8062","webpack:///./src/components/Fouling/LimitsCard.vue","webpack:///./src/components/Fouling/LimitsCard.vue?5632","webpack:///./src/components/Fouling/LimitsCard.vue?514b","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?6f97","webpack:///./src/components/Fouling/modals/SpeedLossTrendDetailsModal.vue?9460","webpack:///./src/views/vessel/Fouling.vue","webpack:///./src/views/vessel/Fouling.vue?c62b","webpack:///./src/views/vessel/Fouling.vue?8637","webpack:///./src/components/Fouling/modals/MCRModal.vue?6fb0","webpack:///./src/components/Fouling/PropulsionEfficencyCard.vue?5b54"],"names":["render","_vm","this","_h","$createElement","_c","_self","loader","staticClass","attrs","latestSpeedLossStatistics","latestTrendEvent","latestAddedConsumption","isBenchmarking","ref","speedLossHistory","speedLossStatistics","isDataLoading","isDerivedStwFeatureEnabled","on","openSpeedLossTrendDetailsModal","onShipSpeedLogChartSelection","$event","speedMeasurementModal","setHullCoating","scopedSlots","_u","key","fn","_g","_b","_v","openManageEventsModal","setMCRSettings","_e","setBenchmarkSettings","_s","benchmarkType","icon","tooltip","proxy","staticStyle","createEvent","setEventImpact","operationalProfileDateRange","markerClicked","trackClicked","syncSpeedLossChartDates","onExpandMap","slot","CreateEventModalActive","EventImpactModalActive","BenchmarkSettingsModalActive","fetchData","HullCoatingModalActive","MCRModalActive","onFilteringSettingsUpdated","onTrendPeriodChanged","type","indexOf","_k","keyCode","closeOperationalProfileModal","apply","arguments","model","value","callback","$$v","OperationalProfileModal","expression","closeSpeedMeasurementSettingsModal","speedMeasurementItems","derivedStwHint","tempUseDerivedStw","onUseDerivedStwChanged","stopPropagation","preventDefault","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","getFoulingChartConfig","useManualBenchmark","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","formatedLatestTrendEventDate","formatColorLegendValue","greenZoneEnds","yellowZoneEnds","SpeedLossCard","Math","abs","trendEndValue","level","state","isManual","dateHelper","getFormatedDateString","end","addedFuelConsumption","Number","periodEndAddedConsumptionRate","fromDate","roundedNumber","round","cumulativeAddedConsumption","toLocaleString","adjustedValue","precision","multiplier","pow","chartTitleTooltipText","_t","onEditSpeedSource","speedMeasurementSource","onEditHullSource","hullCoatingVessel","manufacturerName","typeName","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","parse","speedLossPercent","trendLines","filteredStatistics","forEach","push","utc","trendLine","b","toDate","filter","s","firstSpeedLossDate","lastStatistics","benchmarkingData","dashStyle","visible","lastSpeedLossDate","lineWidth","speedLossPoints","benchmarkLine","baseline","vesselEvents","html","getPlotLineLabels","getVesselEventsOnSameDate","Object","assign","JSON","stringify","DefaultVesselEventPlotline","eventColor","valueOf","label","rotation","x","period","index","from","to","className","click","getTrendPeriodMeta","mouseover","attributes","getNamedItem","mouseout","allEvents","update","eventTimestamp","vesselEvent","vesselEventsOnSameDate","eventIcon","join","trendPeriod","currentTrendPeriod","i","nextPeriodStartDate","getTrendPeriod","previousPeriodStartDate","timestampFrom","timestampTo","zoomedOut","zoom","redraw","showResetZoom","eventType","$cookies","set","datetime","split","endsWith","get","Chart","VProgressCircular","propulsionEfficiencyToolTooltipText","expandWidget","firstPeriodFromDate","isFirstPeriodFromDateModalActive","vesselLogDataMinDate","currentDate","onPeriodDateChanged","firstPeriodToDate","isFirstPeriodToDateModalActive","secondPeriodFromDate","isSecondPeriodFromDateModalActive","secondPeriodToDate","isSecondPeriodToDateModalActive","filterMenu","conditionsList","condition","intervalList","isDataIntervalAllowedForDataSize","granularity","speed","applyFilter","closeFilterMenu","averageKPI","avgChangeShaftPowerTooltipText","expandChart","isFirstPeriodFromDateModalExpandedActive","isFirstPeriodToDateModalExpandedActive","isSecondPeriodFromDateModalExpandedActive","isSecondPeriodToDateModalExpandedActive","filterMenuModal","PropulsionEfficencyCard","isToDateModalActive","foulingConfig","peMinSpeed","peMaxSpeed","peGranularity","peCondition","pePeriodOneFromDate","pePeriodOneToDate","firstPeriodData","filtredFirstPeriodData","pePeriodTwoFromDate","pePeriodTwoToDate","secondPeriodData","filtredSecondPeriodData","intervalLimit","Raw","daysToMinutes","Minute","QuarterHour","Hour","speedRange","logDataMinDate","ballastDraftHigh","ballastDraftLow","ladenDraftHigh","ladenDraftLow","firstPeriodSelectedTimeInMinutes","minutesDiff","secondPeriodSelectedTimeInMinutes","selectedTimeInMinutes","secondPeriodMap","Map","roundedSpeed","diffs","power1","roundedSpeed1","has","power2","diff","averageDiff","reduce","sum","averageDiffPercentage","chartSettings","stwLegend","area","threshold","showInLegend","dataLabels","formatter","dateSpan","pointDate","point","seriesData","spacingBottom","spacingLeft","_","isEmpty","propulsionCurve","xValues","yValues","v","benchmarkPercentFactor","remove","scatterPointsSerie","stickyTracking","radius","scatterPointsSerie2","benchmarkCurve","theoreticalLine","theoreticalCurve","days","duration","asMinutes","datepickerRef","$refs","save","fetchPropulsionEfficency","autoGranularity","firstPeriodResponse","keys","replace","secondPeriodResponse","fetchPropulsionEfficencyCurve","applySpeedFilter","points","concat","find","p","getTime","$parent","$on","mixins","VInput","Loadable","extend","directives","ClickOutside","props","disabled","inverseLabel","String","step","thumbColor","thumbLabel","undefined","validator","thumbSize","tickLabels","Array","ticks","tickSize","trackColor","trackFillColor","vertical","app","oldValue","thumbPressed","mouseTimeout","isFocused","isActive","noClick","startOffset","computed","call","internalValue","lazyValue","val","isNaN","minValue","roundValue","maxValue","trackTransition","showTicks","stepNumeric","parseFloat","inputWidth","trackFillStyles","startDir","endDir","valueDir","start","$vuetify","rtl","isDisabled","transition","trackStyles","numTicks","ceil","showThumbLabel","$scopedSlots","computedTrackColor","isDark","validationState","computedTrackFillColor","computedColor","computedThumbColor","watch","parsed","handler","beforeMount","mounted","document","querySelector","consoleWarn","methods","genDefaultSlot","children","genLabel","slider","genSlider","unshift","genProgress","isReadonly","themeClasses","onBlur","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","computedId","readonly","tabindex","$attrs","setBackgroundColor","range","createRange","direction","offsetDirection","reverse","filled","valueWidth","genThumb","thumbLabelContent","genThumbLabelContent","genThumbLabel","setTextColor","getThumbContainerStyles","role","focus","blur","keydown","onKeyDown","content","size","convertToUnit","transform","VScaleTransition","_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","periodStartDate","getTrendPeriodByFromDate","updatePeriod","featureEnabled","CLEAR_SEA_SURFACE_TEMPERATURE","FeatureNotAvailable","DiagnosticCard","EditVesselEvent","ConfirmDialog","DiagnosticsDetails"],"mappings":"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","file":"js/chunk-47f38118.240ba1ea.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!./Fouling.vue?vue&type=style&index=0&id=a696b23c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossChartCard.vue?vue&type=style&index=0&id=4cec7783&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=7d1f0848&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=style&index=0&id=614d6178&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=style&index=0&id=5a2632f5&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkSettingsModal.vue?vue&type=style&index=0&id=5652f01f&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!./BenchmarkCard.vue?vue&type=style&index=0&id=bf3e2b28&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featureEnabled)?_c('div',[(!_vm.loader)?_c('div',{staticClass:\"fouling-content\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"4\",\"sm\":\"12\"}},[_c('SpeedLossCard',{attrs:{\"latestSpeedLossStatistics\":_vm.latestSpeedLossStatistics,\"latestTrendEvent\":_vm.latestTrendEvent,\"addedFuelConsumption\":_vm.latestAddedConsumption,\"isBenchmarking\":_vm.isBenchmarking}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\",\"sm\":\"12\"}},[_c('SpeedLossChartCard',{ref:\"SpeedLossChartCard\",attrs:{\"speedLossHistory\":_vm.speedLossHistory,\"speedLossStatistics\":_vm.speedLossStatistics,\"isBenchmarking\":_vm.isBenchmarking,\"isDataLoading\":_vm.isDataLoading,\"isDerivedStwEnabled\":_vm.isDerivedStwFeatureEnabled},on:{\"plotBandClicked\":_vm.openSpeedLossTrendDetailsModal,\"onShipSpeedLogChartSelection\":_vm.onShipSpeedLogChartSelection,\"onEditSpeedSource\":function($event){_vm.speedMeasurementModal = true},\"onEditHullSource\":function($event){return _vm.setHullCoating()}},scopedSlots:_vm._u([{key:\"external-actions\",fn:function(){return [_c('div',{staticClass:\"external-actions ml-auto d-flex flex-row align-center\"},[_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-cog\")])],1)]}}],null,false,1952843081)},[_c('v-list',{staticClass:\"ship-speed-loss-settings-list\"},[_c('v-list-item',{on:{\"click\":function($event){return _vm.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 // @Watchers\n @Watch(\"foulingChartConfig\")\n onFoulingChartConfigChanged(): void {\n this.foulingChartConfig = this.getFoulingChartConfig;\n }\n\n // @Getters\n get disableSaveBenchmarkLevelSettings(): boolean {\n return this.foulingChartConfig.benchmark > 40 || this.foulingChartConfig.benchmark < -40;\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n // @Methods\n benchmarkLevelInputRules(value: any): boolean | string {\n if (!!!value && this.foulingChartConfig.useManualBenchmark) return \"Required\";\n else return (-40 <= value && value <= 40) || \"Benchmark level must be a number between -40 and 40.\";\n }\n\n open(): void {\n this.dialog = true;\n }\n\n resetManualBenchmarkLevel(): void {\n if (!!!this.foulingChartConfig.benchmark) {\n this.foulingChartConfig.benchmark = 0;\n }\n }\n\n cancel(): void {\n this.dialog = false;\n }\n\n async updateBenchmarkLevelSettings(): Promise {\n try {\n await Fouling.updateFoulingChartConfig(this.foulingChartConfig);\n await Fouling.fetchFoulingChartConfig(this.vessel!.id);\n Snackbar.showSnackbar({ text: \"Benchmark settings successfully updated\", color: \"success\" });\n this.$emit(\"benchmarkUpdated\");\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update benchmark settings\" });\n } finally {\n this.dialog = false;\n }\n }\n\n async created(): Promise {\n if (!this.vessel) return;\n this.foulingChartConfig = await Fouling.fetchFoulingChartConfig(this.vessel.id);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkSettingsModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BenchmarkSettingsModal.vue?vue&type=template&id=5652f01f&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=5652f01f&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 \"5652f01f\",\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 // @Methods\n open(): void {\n this.dialog = true;\n }\n\n cancel(): void {\n this.dialog = false;\n }\n\n @Watch(\"getFoulingChartConfig\")\n fetchConfig(): void {\n this.foulingChartConfig = Fouling.foulingChartConfig;\n }\n\n async updateFoulingChartConfig(): Promise {\n try {\n await Fouling.updateFoulingChartConfig(this.foulingChartConfig);\n await Fouling.fetchFoulingChartConfig(this.vessel!.id);\n this.$emit(\"filteringUpdated\");\n Snackbar.showSnackbar({ text: \"Filter settings successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update Filter settings\" });\n } finally {\n this.dialog = false;\n }\n }\n\n async created(): Promise {\n if (!this.vessel) return;\n this.foulingChartConfig = await Fouling.fetchFoulingChartConfig(this.vessel.id);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MCRModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MCRModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MCRModal.vue?vue&type=template&id=6351e485&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=6351e485&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 \"6351e485\",\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.formatedLatestTrendEventDate)+\" \"+_vm._s(_vm.latestTrendEvent.name)+\" \")])]),_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 formatedLatestTrendEventDate(): string | undefined {\n if (!this.latestTrendEvent.timestamp || this.latestSpeedLossStatistics?.benchmark.isManual) return;\n return dateHelper.getFormatedDateString(this.latestTrendEvent.timestamp);\n }\n\n get benchmarkFormatedEndDate(): string | undefined {\n if (!this.latestSpeedLossStatistics?.benchmark.end) return;\n return dateHelper.getFormatedDateString(this.latestSpeedLossStatistics.benchmark.end);\n }\n\n get addedFuelConsumptionRate(): number | undefined {\n if (!this.addedFuelConsumption) return;\n return Number(Number(this.addedFuelConsumption.periodEndAddedConsumptionRate).toFixed(2));\n }\n\n get cumulativeAddedFuelConsumption(): string | undefined {\n if (!this.addedFuelConsumption || !this.latestTrendEvent || this.isBenchmarking) return;\n if (this.addedFuelConsumption.fromDate !== this.latestTrendEvent.timestamp) {\n return \"N/A\";\n }\n const roundedNumber = Math.round(Number(this.addedFuelConsumption.cumulativeAddedConsumption));\n return roundedNumber.toLocaleString();\n }\n\n formatColorLegendValue(value: number): string {\n // Showing \"opposite\" sign because \"speed loss\" already indicates a negative number.\n const adjustedValue = -value;\n return adjustedValue.toFixed(1);\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedLossCard.vue?vue&type=template&id=7d1f0848&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=7d1f0848&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 \"7d1f0848\",\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\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=4cec7783&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=4cec7783&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 \"4cec7783\",\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.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodFromDate', _vm.firstPeriodFromDate)}},model:{value:(_vm.firstPeriodFromDate),callback:function ($$v) {_vm.firstPeriodFromDate=$$v},expression:\"firstPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuFirstPeriodToDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.firstPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.firstPeriodToDate=$event},\"update:return-value\":function($event){_vm.firstPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.firstPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isFirstPeriodToDateModalActive),callback:function ($$v) {_vm.isFirstPeriodToDateModalActive=$$v},expression:\"isFirstPeriodToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.firstPeriodFromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodToDate', _vm.firstPeriodToDate)}},model:{value:(_vm.firstPeriodToDate),callback:function ($$v) {_vm.firstPeriodToDate=$$v},expression:\"firstPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1),_c('div',{staticClass:\"date-time input d-inline-flex\"},[_c('label',{staticClass:\"period-2\"},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-calendar-range\")]),_vm._v(\" Period #2\")],1),_c('v-menu',{ref:\"menuSecondPeriodFromDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodFromDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodFromDate=$event},\"update:return-value\":function($event){_vm.secondPeriodFromDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodFromDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodFromDateModalActive),callback:function ($$v) {_vm.isSecondPeriodFromDateModalActive=$$v},expression:\"isSecondPeriodFromDateModalActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodFromDate', _vm.secondPeriodFromDate)}},model:{value:(_vm.secondPeriodFromDate),callback:function ($$v) {_vm.secondPeriodFromDate=$$v},expression:\"secondPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuSecondPeriodToDate\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodToDate=$event},\"update:return-value\":function($event){_vm.secondPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodToDateModalActive),callback:function ($$v) {_vm.isSecondPeriodToDateModalActive=$$v},expression:\"isSecondPeriodToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.secondPeriodFromDate,\"color\":\"primary lighten-2\",\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodToDate', _vm.secondPeriodToDate)}},model:{value:(_vm.secondPeriodToDate),callback:function ($$v) {_vm.secondPeriodToDate=$$v},expression:\"secondPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1)]),_c('v-menu',{staticClass:\"filter-menu\",attrs:{\"close-on-content-click\":false,\"max-width\":\"312px\",\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"filter-btn ml-auto\",attrs:{\"color\":\"primary\",\"text\":\"\",\"medium\":\"\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-filter\")])],1)]}}]),model:{value:(_vm.filterMenu),callback:function ($$v) {_vm.filterMenu=$$v},expression:\"filterMenu\"}},[_c('v-card',[_c('v-card-title',{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(),_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)]}}]),model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range (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.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodFromDateExpanded', _vm.firstPeriodFromDate)}},model:{value:(_vm.firstPeriodFromDate),callback:function ($$v) {_vm.firstPeriodFromDate=$$v},expression:\"firstPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuFirstPeriodToDateExpanded\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.firstPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.firstPeriodToDate=$event},\"update:return-value\":function($event){_vm.firstPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.firstPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isFirstPeriodToDateModalExpandedActive),callback:function ($$v) {_vm.isFirstPeriodToDateModalExpandedActive=$$v},expression:\"isFirstPeriodToDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.firstPeriodFromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuFirstPeriodToDateExpanded', _vm.firstPeriodToDate)}},model:{value:(_vm.firstPeriodToDate),callback:function ($$v) {_vm.firstPeriodToDate=$$v},expression:\"firstPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1),_c('div',{staticClass:\"date-time input d-inline-flex\"},[_c('label',{staticClass:\"period-2\"},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-calendar-range\")]),_vm._v(\" Period #2\")],1),_c('v-menu',{ref:\"menuSecondPeriodFromDateExpanded\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodFromDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodFromDate=$event},\"update:return-value\":function($event){_vm.secondPeriodFromDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodFromDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodFromDateModalExpandedActive),callback:function ($$v) {_vm.isSecondPeriodFromDateModalExpandedActive=$$v},expression:\"isSecondPeriodFromDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.vesselLogDataMinDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodFromDateExpanded', _vm.secondPeriodFromDate)}},model:{value:(_vm.secondPeriodFromDate),callback:function ($$v) {_vm.secondPeriodFromDate=$$v},expression:\"secondPeriodFromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuSecondPeriodToDateExpanded\",staticStyle:{\"z-index\":\"60\"},attrs:{\"close-on-content-click\":false,\"return-value\":_vm.secondPeriodToDate,\"transition\":\"slide-x-transition\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.secondPeriodToDate=$event},\"update:return-value\":function($event){_vm.secondPeriodToDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.secondPeriodToDate)+\" \")])]}}]),model:{value:(_vm.isSecondPeriodToDateModalExpandedActive),callback:function ($$v) {_vm.isSecondPeriodToDateModalExpandedActive=$$v},expression:\"isSecondPeriodToDateModalExpandedActive\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.secondPeriodFromDate,\"color\":\"primary lighten-2\",\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onPeriodDateChanged('menuSecondPeriodToDateExpanded', _vm.secondPeriodToDate)}},model:{value:(_vm.secondPeriodToDate),callback:function ($$v) {_vm.secondPeriodToDate=$$v},expression:\"secondPeriodToDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1)]),_c('v-menu',{staticClass:\"filter-menu\",attrs:{\"close-on-content-click\":false,\"max-width\":\"312px\",\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"filter-btn ml-auto\",attrs:{\"color\":\"primary\",\"text\":\"\",\"medium\":\"\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-filter\")])],1)]}}]),model:{value:(_vm.filterMenuModal),callback:function ($$v) {_vm.filterMenuModal=$$v},expression:\"filterMenuModal\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Filter settings\")])]),_c('v-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(),_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)]}}]),model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-list-item',{staticClass:\"flex-column align-start\"},[_c('span',{staticClass:\"speed-range-label d-flex\"},[_vm._v(\"Speed Range (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().format(\"YYYY-MM-DD\");\n firstPeriodFromDate: string = moment(this.foulingConfig.pePeriodOneFromDate).format(\"YYYY-MM-DD\");\n firstPeriodToDate: string = moment(this.foulingConfig.pePeriodOneToDate).format(\"YYYY-MM-DD\");\n firstPeriodData: number[][] = [];\n filtredFirstPeriodData: number[][] = [];\n secondPeriodFromDate: string = moment(this.foulingConfig.pePeriodTwoFromDate).format(\"YYYY-MM-DD\");\n secondPeriodToDate: string = moment(this.foulingConfig.pePeriodTwoToDate).format(\"YYYY-MM-DD\");\n secondPeriodData: number[][] = [];\n filtredSecondPeriodData: number[][] = [];\n conditionsList: { text: string }[] = [\n {\n text: \"Laden\",\n },\n {\n text: \"Ballast\",\n },\n ];\n intervalList: { text: string; value: string }[] = [\n {\n text: \"Auto\",\n value: \"Auto\",\n },\n {\n text: \"Day\",\n value: \"Day\",\n },\n {\n text: \"Hour\",\n value: \"Hour\",\n },\n {\n text: \"Quarter (Every 15 minutes)\",\n value: \"QuarterHour\",\n },\n {\n text: \"Minute\",\n value: \"Minute\",\n },\n {\n text: \"Raw\",\n value: \"Raw\",\n },\n ];\n intervalLimit: { [key: string]: number } = {\n Raw: this.daysToMinutes(1),\n Minute: this.daysToMinutes(2),\n QuarterHour: this.daysToMinutes(14),\n Hour: this.daysToMinutes(90),\n };\n speedRange: { text: string } = {\n text: \"Speed Range\",\n };\n\n // @Getters\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get vesselLogDataMinDate(): string {\n if (!Vessels.currentVessel) return \"2000-01-01\";\n return Vessels.currentVessel.logDataMinDate;\n }\n\n get hasDraftConditionRanges(): boolean {\n if ((this.vessel?.ballastDraftHigh || this.vessel?.ballastDraftLow || this.vessel?.ladenDraftHigh || this.vessel?.ladenDraftLow) == null) return false;\n else return true;\n }\n\n get autoGranularity(): string {\n const firstPeriodSelectedTimeInMinutes = this.minutesDiff(new Date(this.firstPeriodFromDate), new Date(this.firstPeriodToDate));\n const secondPeriodSelectedTimeInMinutes = this.minutesDiff(new Date(this.secondPeriodFromDate), new Date(this.secondPeriodToDate));\n const selectedTimeInMinutes = Math.max(firstPeriodSelectedTimeInMinutes, secondPeriodSelectedTimeInMinutes);\n if (selectedTimeInMinutes <= 1440) {\n return \"Raw\";\n } else if (selectedTimeInMinutes <= 2880) {\n return \"Minute\";\n } else if (selectedTimeInMinutes <= 20160) {\n return \"QuarterHour\";\n } else if (selectedTimeInMinutes <= 129600) {\n return \"Hour\";\n }\n\n return \"Day\";\n }\n\n get averageKPI(): string {\n if (!this.filtredFirstPeriodData.length || !this.filtredSecondPeriodData.length) return \"\";\n const secondPeriodMap = new Map();\n for (const [speed, power] of this.filtredSecondPeriodData) {\n const roundedSpeed = Math.round(speed);\n secondPeriodMap.set(roundedSpeed, power);\n }\n const diffs = [];\n for (const [speed, power1] of this.filtredFirstPeriodData) {\n const roundedSpeed1 = Math.round(speed);\n if (secondPeriodMap.has(roundedSpeed1)) {\n const power2 = secondPeriodMap.get(roundedSpeed1);\n const diff = power2 / power1;\n diffs.push(diff);\n }\n }\n if (diffs.length === 0) return \"\";\n const averageDiff = diffs.reduce((sum, value) => sum + value, 0) / diffs.length;\n const averageDiffPercentage = (averageDiff - 1) * 100;\n return averageDiffPercentage.toFixed(1);\n }\n\n get foulingConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get stwLegend(): string {\n return this.foulingConfig.useDerivedStw ? \"Derived STW\" : \"Speed Log\";\n }\n\n get ChartOptions(): any {\n if (!this.chartLoaded || !Highcharts) return {};\n const ctx = this;\n const options = {\n chart: ctx.chartSettings,\n title: { text: \"\" },\n legend: {\n // enabled: false,\n },\n yAxis: {\n min: 0,\n max: 30000,\n title: {\n text: \"Shaft Power\",\n style: { color: \"#331714\" },\n },\n labels: {\n format: \"{value} kW\",\n style: { color: \"#331714\" },\n },\n },\n xAxis: {\n min: 0,\n max: 25,\n labels: {\n format: \"{value} knots\",\n style: { color: \"#331714\" },\n },\n title: {\n text: this.stwLegend,\n style: { color: \"#331714\" },\n },\n },\n plotOptions: {\n area: {\n threshold: 0,\n marker: {\n enabled: false,\n },\n },\n series: {\n showInLegend: true,\n dataLabels: { enabled: false },\n },\n },\n tooltip: {\n formatter: function () {\n const $this: any = this;\n const dateSpan = ctx.pointDate($this.point.x, $this.point.y) ? `Date: ${ctx.pointDate($this.point.x, $this.point.y)}
` : \"\";\n return `${dateSpan}Shaft Power: ${Number($this.point.y.toFixed(2))} kW
STW: ${$this.point.x.toFixed(1)} knots`;\n },\n },\n series: this.seriesData,\n credits: { enabled: false },\n exporting: { enabled: false },\n };\n\n return options;\n }\n\n get chartSettings(): any {\n if (!this.chartLoaded) return {};\n const ctx = this;\n return {\n zoomType: \"x\",\n spacingTop: 30,\n spacingBottom: 0,\n spacingLeft: 0,\n spacingRight: 0,\n style: { fontFamily: \"Helvetica Neue\" },\n events: {\n selection: function (event: any) {\n // trigger onChartZoom event on zoom\n ctx.$emit(\"onEventChartZoom\", event);\n },\n },\n };\n }\n\n get theoreticalCurve(): number[][] {\n if (_.isEmpty(Fouling.propulsionCurve)) return [];\n const xValues = Fouling.propulsionCurve.xValues;\n const yValues = Fouling.propulsionCurve.yValues;\n\n const series: number[][] = [];\n\n yValues.forEach((v, i) => series.push([xValues[i], v]));\n\n return series;\n }\n\n get benchmarkCurve(): number[][] {\n if (_.isEmpty(Fouling.propulsionCurve) || this.latestSpeedLossStatistics == null || this.latestSpeedLossStatistics.benchmark.level === 0) return [];\n const xValues = Fouling.propulsionCurve.xValues;\n const yValues = Fouling.propulsionCurve.yValues;\n\n const series: number[][] = [];\n const benchmarkPercentFactor = 1 + this.latestSpeedLossStatistics!.benchmark.level / 100;\n yValues.forEach((v, i) => series.push([xValues[i] * benchmarkPercentFactor, v]));\n\n return series;\n }\n\n get latestSpeedLossStatistics(): SpeedLossStatistic | null {\n return Fouling.speedLossStatistics[Fouling.speedLossStatistics.length - 1] ?? null;\n }\n\n get seriesData(): any {\n // bugfix < >\n if (this.chart.series.length) {\n /* IMPORTANT: There is also a bug in Highcharts when it has more than 2 series and they are updated dynamically it \"loses\" correct indexes of the series and displays data in a weird manner so the solution is to clear the series array before it will be updated */\n while (this.chart.series.length) {\n this.chart.series[0].remove();\n }\n }\n // bugfix \n const scatterPointsSerie = {\n name: \"Period #1\",\n type: \"scatter\",\n data: this.filtredFirstPeriodData,\n stickyTracking: false,\n /* IMPORTANT: https://www.highcharts.com/forum/viewtopic.php?f=9&t=44589 Turns out scatter points have a bug. When they get updated they can be displayed as line-through-dots with property lineWidth: 2 so here we need to set the lineWidth: 0, otherwise it should be set always through chart.series.forEach loop in serie.options.lineWidth*/\n lineWidth: 0,\n color: \"#0600FE\",\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0600FE\",\n },\n };\n\n const scatterPointsSerie2 = {\n name: \"Period #2\",\n type: \"scatter\",\n data: this.filtredSecondPeriodData,\n stickyTracking: false,\n color: \"orange\",\n /* IMPORTANT: https://www.highcharts.com/forum/viewtopic.php?f=9&t=44589 Turns out scatter points have a bug. When they get updated they can be displayed as line-through-dots with property lineWidth: 2 so here we need to set the lineWidth: 0, otherwise it should be set always through chart.series.forEach loop in serie.options.lineWidth */\n lineWidth: 0,\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n color: \"orange\",\n },\n };\n\n const benchmarkLine = {\n name: \"Benchmark Curve\",\n type: \"spline\",\n data: this.benchmarkCurve,\n stickyTracking: false,\n lineWidth: 2,\n color: \"#0de40d\",\n marker: {\n enabled: false,\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0de40d\",\n },\n };\n\n const theoreticalLine = {\n name: \"Theoretical Curve\",\n type: \"spline\",\n data: this.theoreticalCurve,\n stickyTracking: false,\n lineWidth: 2,\n dashStyle: \"ShortDot\",\n color: \"#0de40d\",\n marker: {\n enabled: false,\n radius: 2.5,\n symbol: \"circle\",\n color: \"#0de40d\",\n },\n };\n\n const series = [scatterPointsSerie, scatterPointsSerie2, benchmarkLine, theoreticalLine];\n\n return series;\n }\n\n get propulsionEfficiencyToolTooltipText(): string {\n return \"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 // @Methods\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n }\n\n daysToMinutes(days: number): number {\n return days * 24 * 60;\n }\n\n isDataIntervalAllowedForDataSize(value: string): boolean {\n if (!this.intervalLimit[value]) return true;\n return (\n moment.duration(moment(this.firstPeriodToDate).diff(this.firstPeriodFromDate)).asMinutes() <= this.intervalLimit[value] &&\n moment.duration(moment(this.secondPeriodToDate).diff(this.secondPeriodFromDate)).asMinutes() <= this.intervalLimit[value]\n );\n }\n\n async onPeriodDateChanged(datepickerRef: string, date: string): Promise {\n (this.$refs[datepickerRef] as any).save(date);\n this.isDataLoading = true;\n this.foulingConfig.pePeriodOneFromDate = this.firstPeriodFromDate;\n this.foulingConfig.pePeriodOneToDate = this.firstPeriodToDate;\n this.foulingConfig.pePeriodTwoFromDate = this.secondPeriodFromDate;\n this.foulingConfig.pePeriodTwoToDate = this.secondPeriodToDate;\n\n try {\n await Fouling.updateFoulingChartConfig(this.foulingConfig);\n\n if (\n datepickerRef === \"menuFirstPeriodFromDate\" ||\n datepickerRef === \"menuFirstPeriodToDate\" ||\n datepickerRef === \"menuFirstPeriodFromDateExpanded\" ||\n datepickerRef === \"menuFirstPeriodToDateExpanded\"\n ) {\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\n });\n this.firstPeriodData = Object.keys(firstPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), firstPeriodResponse[key]];\n });\n this.filtredFirstPeriodData = this.firstPeriodData;\n } else if (\n datepickerRef === \"menuSecondPeriodFromDate\" ||\n datepickerRef === \"menuSecondPeriodToDate\" ||\n datepickerRef === \"menuSecondPeriodFromDateExpanded\" ||\n datepickerRef === \"menuSecondPeriodToDateExpanded\"\n ) {\n const secondPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel!.id,\n fromDate: this.secondPeriodFromDate,\n toDate: this.secondPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\n });\n this.secondPeriodData = Object.keys(secondPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), secondPeriodResponse[key]];\n });\n this.filtredSecondPeriodData = this.secondPeriodData;\n }\n await Fouling.fetchPropulsionEfficencyCurve({ vesselId: this.vessel!.id, condition: this.foulingConfig.peCondition });\n this.applySpeedFilter();\n } finally {\n this.isDataLoading = false;\n }\n }\n\n async applyFilter(): Promise {\n this.filterMenu = false;\n this.filterMenuModal = false;\n this.foulingConfig.peMinSpeed = this.speed[0];\n this.foulingConfig.peMaxSpeed = this.speed[1];\n if (this.foulingConfig.peCondition !== this.condition || this.foulingConfig.peGranularity !== this.granularity) {\n this.foulingConfig.peGranularity = this.granularity;\n this.foulingConfig.peCondition = this.condition;\n await this.fetchData();\n } else {\n this.applySpeedFilter();\n }\n await Fouling.updateFoulingChartConfig(this.foulingConfig);\n }\n\n applySpeedFilter(): void {\n this.filtredFirstPeriodData = this.firstPeriodData.filter(item => item[0] >= this.foulingConfig.peMinSpeed && item[0] <= this.foulingConfig.peMaxSpeed);\n this.filtredSecondPeriodData = this.secondPeriodData.filter(item => item[0] >= this.foulingConfig.peMinSpeed && item[0] <= this.foulingConfig.peMaxSpeed);\n }\n\n pointDate(x: number, y: number): string | null {\n const points: any[][] = this.firstPeriodData.concat(this.secondPeriodData);\n const period = points.find(p => p[0] === x && p[1] === y);\n if (!period) return null;\n return moment(period[2]).format(\"DD. MMM, YYYY HH:mm\");\n }\n\n async fetchData(): Promise {\n if (!this.vessel || this.isDataLoading) return;\n this.isDataLoading = true;\n try {\n const firstPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel.id,\n fromDate: this.firstPeriodFromDate,\n toDate: this.firstPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\n });\n this.firstPeriodData = Object.keys(firstPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), firstPeriodResponse[key]];\n });\n this.filtredFirstPeriodData = this.firstPeriodData;\n const secondPeriodResponse = await Fouling.fetchPropulsionEfficency({\n vesselId: this.vessel.id,\n fromDate: this.secondPeriodFromDate,\n toDate: this.secondPeriodToDate,\n condition: this.foulingConfig.peCondition,\n granularity: this.foulingConfig.peGranularity === \"Auto\" ? this.autoGranularity : this.foulingConfig.peGranularity,\n });\n this.secondPeriodData = Object.keys(secondPeriodResponse).map(key => {\n return [...key.split(\",\").map(item => Number(item.replace(/\\(|\\)/g, \"\"))), secondPeriodResponse[key]];\n });\n this.filtredSecondPeriodData = this.secondPeriodData;\n this.applySpeedFilter();\n await Fouling.fetchPropulsionEfficencyCurve({ vesselId: this.vessel.id, condition: this.foulingConfig.peCondition });\n } finally {\n this.isDataLoading = false;\n }\n }\n\n expandWidget(): void {\n this.expandChart = true;\n }\n\n minutesDiff(fromDate: Date, toDate: Date): number {\n const diff = (fromDate.getTime() - toDate.getTime()) / 1000 / 60;\n\n return Math.abs(Math.round(diff));\n }\n\n closeFilterMenu(): void {\n this.filterMenu = false;\n this.filterMenuModal = false;\n this.speed = [this.foulingConfig.peMinSpeed, this.foulingConfig.peMaxSpeed];\n this.granularity = this.foulingConfig.peGranularity;\n this.condition = this.foulingConfig.peCondition;\n }\n\n async created(): Promise {\n await this.fetchData();\n this.$parent.$on(\"refetchPropulsionEfficiencyData\", this.fetchData);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropulsionEfficencyCard.vue?vue&type=script&lang=ts&\"","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n },\n },\n\n // If done in as immediate in\n // value watcher, causes issues\n // with vue-test-utils\n beforeMount () {\n this.internalValue = this.value\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","import VSlider from './VSlider'\n\nexport { VSlider }\nexport default VSlider\n","// Styles\nimport './VRangeSlider.sass'\n\n// Components\nimport VSlider from '../VSlider'\n\n// Helpers\nimport {\n addOnceEventListener,\n createRange,\n deepEqual,\n passiveSupported,\n} from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VSlider.extend({\n name: 'v-range-slider',\n\n props: {\n value: {\n type: Array,\n default: () => ([0, 0]),\n } as unknown as PropValidator<[number, number]>,\n },\n\n data () {\n return {\n activeThumb: null as null | number,\n lazyValue: this.value,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true,\n }\n },\n internalValue: {\n get (): number[] {\n return this.lazyValue\n },\n set (val: number[]) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue)))\n\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1\n const el = this.$refs[`thumb_${toFocus}`] as HTMLElement\n el.focus()\n }\n value = [value[1], value[0]]\n }\n\n this.lazyValue = value\n if (!deepEqual(value, this.value)) this.$emit('input', value)\n\n this.validate()\n },\n },\n inputWidth (): number[] {\n return this.internalValue.map((v: number) => (\n this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100\n )\n },\n },\n\n methods: {\n getTrackStyle (startLength: number, endLength: number, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = `calc(${startLength}% + ${startPadding}px)`\n const end = `calc(${endLength}% + ${endPadding}px)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n getIndexOfClosestValue (arr: number[], v: number) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0\n else return 1\n },\n genInput () {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this)\n\n input.data = input.data || {}\n input.data.attrs = input.data.attrs || {}\n input.data.attrs.value = this.internalValue[i]\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`\n\n return input\n })\n },\n genTrackContainer () {\n const children = []\n\n const padding = this.isDisabled ? 10 : 0\n const sections: { class: string, color: string | undefined, styles: [number, number, number, number] }[] = [\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding],\n },\n {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2],\n },\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding],\n },\n ]\n\n if (this.$vuetify.rtl) sections.reverse()\n\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles),\n }))))\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genChildren () {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n createRange(2).map(index => {\n const value = this.internalValue[index]\n const onFocus = (e: Event) => {\n this.isFocused = true\n this.activeThumb = index\n\n this.$emit('focus', e)\n }\n\n const onBlur = (e: Event) => {\n this.isFocused = false\n this.activeThumb = null\n\n this.$emit('blur', e)\n }\n\n const valueWidth = this.inputWidth[index]\n const isActive = this.isActive && this.activeThumb === index\n const isFocused = this.isFocused && this.activeThumb === index\n\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`)\n }),\n ]\n },\n reevaluateSelected (value: number) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n const refName = `thumb_${this.activeThumb}`\n const thumbRef = this.$refs[refName] as HTMLElement\n thumbRef.focus()\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderClick (e: MouseEvent) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.setInternalValue(value)\n\n this.$emit('change', this.internalValue)\n }\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n\n if (this.activeThumb === null) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n }\n\n this.setInternalValue(value)\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.activeThumb === null) return\n\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb])\n\n if (value == null) return\n\n this.setInternalValue(value)\n this.$emit('change', this.internalValue)\n },\n setInternalValue (value: number) {\n this.internalValue = this.internalValue.map((v: number, i: number) => {\n if (i === this.activeThumb) return value\n else return Number(v)\n })\n },\n },\n})\n","import { render, staticRenderFns } from \"./PropulsionEfficencyCard.vue?vue&type=template&id=199866bb&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=199866bb&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 \"199866bb\",\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.currentDate},on:{\"input\":function($event){return _vm.onDateRangeChanged('menuFromDate', _vm.fromDate)}},model:{value:(_vm.fromDate),callback:function ($$v) {_vm.fromDate=$$v},expression:\"fromDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"Start date\")])]],2)],1),_c('span',{staticClass:\"mx-1 d-flex align-center\",staticStyle:{\"color\":\"#666\",\"opacity\":\"0.8\"}},[_vm._v(\"–\")]),_c('v-menu',{ref:\"menuToDate\",attrs:{\"close-on-content-click\":false,\"return-value\":_vm.toDate,\"transition\":\"slide-x-transition\",\"nudge-left\":220,\"offset-y\":\"\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.toDate=$event},\"update:return-value\":function($event){_vm.toDate=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"date-selection d-flex align-center\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.toDate)+\" \")])]}}]),model:{value:(_vm.isToDateModalActive),callback:function ($$v) {_vm.isToDateModalActive=$$v},expression:\"isToDateModalActive\"}},[_c('v-date-picker',{attrs:{\"color\":\"primary lighten-2\",\"min\":_vm.fromDate,\"max\":_vm.currentDate},on:{\"input\":function($event){return _vm.onDateRangeChanged('menuToDate', _vm.toDate)}},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}},[[_c('div',{staticClass:\"datepicker-fake-title\"},[_vm._v(\"End date\")])]],2)],1)],1),(_vm.invalidRange)?_c('div',{staticClass:\"error-text-container\"},[_c('p',{staticClass:\"date-range-error-text\"},[_vm._v(\" Please select a period shorter than 5 years. \")])]):_vm._e()]),(!_vm.isModal)?_c('v-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().format(\"YYYY-MM-DD\");\n fromDate: string = moment().startOf(\"year\").format(\"YYYY-MM-DD\");\n toDate: string = moment().format(\"YYYY-MM-DD\");\n min = moment(moment().year(this.speedHistoryStartYear).startOf(\"year\").format(\"YYYY-MM-DD\")).valueOf();\n max = moment(moment().format(\"YYYY-MM-DD\")).valueOf();\n interval: any = moment.duration(1, \"days\").asMilliseconds();\n seaTemperatureDateRange!: { from: string; to: string };\n\n @Watch(\"syncDateRange\", { deep: true })\n onSeaTemperatureDateRangeChanged() {\n this.seaTemperatureDateRange = { from: this.syncDateRange[0], to: this.syncDateRange[1] };\n this.fromDate = moment(this.seaTemperatureDateRange.from).format(\"YYYY-MM-DD\");\n this.toDate = moment(this.seaTemperatureDateRange.to).format(\"YYYY-MM-DD\");\n }\n // @Getters\n get vessel(): ExtendedVessel | null {\n return Vessels.currentVessel;\n }\n\n get getSeaTemperatureDateRange(): { from: string; to: string } {\n return this.seaTemperatureDateRange;\n }\n\n get getSeaTemperaturePoints(): TempPoint[] {\n return Fouling.seaSurfaceTemperature;\n }\n\n get hoursInWarmWater(): string {\n if (!this.getSeaTemperaturePoints.length) return \"N/A\";\n\n var total = 0;\n this.getSeaTemperaturePoints.forEach((point, i) => {\n if (point.temperature >= 25 && point.timeSpent) {\n total += point.timeSpent;\n }\n });\n\n return `${Math.round(total)} hours`;\n }\n\n get speedHistoryStartYear(): number {\n return Number(moment(Fouling.speedHistoryStartYear).format(\"YYYY\"));\n }\n\n get formattedSelectedDateRange(): { from: string; to: string } {\n return {\n from: moment(this.syncDateRange[0]).format(\"DD. MMM, YYYY\"),\n to: moment(this.syncDateRange[1]).format(\"DD. MMM, YYYY\"),\n };\n }\n\n get mapHeight(): string {\n return this.isModal ? \"height: 708px;\" : \"height: 508px\";\n }\n\n get isUsingDerivedStw(): boolean {\n return Fouling.foulingChartConfig.useDerivedStw;\n }\n\n // @Methods\n onDateRangeChanged(datepickerRef: string, date: string): void {\n (this.$refs[datepickerRef] as any).save(date);\n Vue.set(this.syncDateRange, 0, this.fromDate);\n Vue.set(this.syncDateRange, 1, this.toDate);\n const fromDate = moment(this.fromDate);\n const toDate = moment(this.toDate);\n const rangeYears = toDate.diff(fromDate, \"years\", true);\n if (rangeYears > 5) {\n this.invalidRange = true;\n return;\n }\n this.invalidRange = false;\n Vue.set(this.seaTemperatureDateRange, \"from\", fromDate.format(\"YYYY-MM-DD\"));\n Vue.set(this.seaTemperatureDateRange, \"to\", toDate.format(\"YYYY-MM-DD\"));\n\n const config = Fouling.foulingChartConfig;\n config.opFromDate = this.fromDate;\n config.opToDate = this.toDate;\n Fouling.updateFoulingChartConfig(config);\n\n this.Map.updateWeatherData(this.seaTemperatureDateRange);\n }\n\n onMarkerClicked(marker: MapMarker): void {\n if (this.syncSpeedLog) {\n this.$emit(\"markerClicked\", marker);\n this.Map.map.fitBounds([[marker.position.lat, marker.position.lng]]);\n }\n }\n\n onTrackClicked(marker: MapMarker): void {\n if (this.syncSpeedLog) this.$emit(\"trackClicked\", { trackDateStart: marker.trackHistory.prevMarkers.slice(-1)[0].lastExportDate, trackDateEnd: marker.trackHistory.prevMarkers[0].lastExportDate });\n }\n\n onMapZoom(minMaxDateRange: { min: number; max: number; zoomedOut: boolean }): void {\n if (this.syncSpeedLog) this.$emit(\"onOperationalProfileZoom\", minMaxDateRange);\n }\n\n setDateRange(datesRange: { min: number; max: number }): void {\n this.fromDate = moment(datesRange.min).format(\"YYYY-MM-DD\");\n this.toDate = moment(datesRange.max).format(\"YYYY-MM-DD\");\n this.syncDateRange = [this.fromDate, this.toDate];\n Vue.set(this.seaTemperatureDateRange, \"from\", moment(this.fromDate).format(\"YYYY-MM-DD\"));\n Vue.set(this.seaTemperatureDateRange, \"to\", moment(this.toDate).format(\"YYYY-MM-DD\"));\n\n this.Map.$refs.mapRef.setZoom(1);\n this.Map.updateWeatherData(this.seaTemperatureDateRange);\n }\n\n expandMap(): void {\n this.$emit(\"onExpandMap\", true);\n }\n\n created(): void {\n this.seaTemperatureDateRange = { from: this.syncDateRange[0], to: this.syncDateRange[1] };\n this.fromDate = moment(this.seaTemperatureDateRange.from).format(\"YYYY-MM-DD\");\n this.toDate = moment(this.seaTemperatureDateRange.to).format(\"YYYY-MM-DD\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OperationalProfileCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OperationalProfileCard.vue?vue&type=template&id=614d6178&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=614d6178&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 \"614d6178\",\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 benchmarkZone.to = moment(this.trendPeriodMeta.benchmark.end).valueOf();\n return benchmarkZone;\n }\n\n get ChartOptions(): unknown {\n if (!this.chartLoaded) return {};\n\n const options = {\n time: {\n useUTC: false,\n },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n marginTop: 55, //to fit tooltip\n animation: false,\n spacingTop: 20,\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: true,\n },\n title: {\n text: null,\n },\n\n xAxis: {\n type: \"datetime\",\n gridLineWidth: 1,\n plotBands: [\n {\n id: \"benchmarkPeriod\",\n from: this.benchmarkingZone.from,\n to: this.benchmarkingZone.to,\n color: \"rgba(0,0,255,0.2)\",\n zIndex: 1,\n label: {\n text: \"Benchmark period\",\n },\n },\n ],\n plotLines: [\n {\n id: \"benchmarkPeriodEnd\",\n value: this.benchmarkingZone.to,\n color: \"rgb(0,0,255)\",\n zIndex: 2,\n width: 2,\n },\n ...this.eventPlotLines,\n ],\n events: {\n setExtremes: (e: any) => {\n var cmax = 50;\n var cmin = -50;\n\n setTimeout(() => {\n //the documented recommended way of determining if reset zoom was clicked does not work\n //(e.min and e.max are supposed to be undefined, but aren't, so we use\n //this other way where we check if zoom button exists or not)\n if (this.chart.resetZoomButton) {\n this.chart.yAxis[0].setExtremes();\n } else {\n this.chart.yAxis[0].update({ min: cmin, max: cmax });\n }\n }, 0);\n },\n },\n title: {\n text: null,\n },\n labels: {\n y: 35,\n },\n },\n yAxis: {\n title: {\n text: \"Percent (%)\",\n },\n gridLineColor: \"#aaaaaa\",\n tickPixelInterval: 10,\n min: -50,\n max: 50,\n plotBands: this.plotBands,\n // plotLines: this.plotLines,\n },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n },\n plotOptions: {\n series: {\n zIndex: 1,\n marker: {\n enabled: true,\n symbol: \"circle\",\n radius: 2,\n lineWidth: 0,\n lineColor: \"#000000\",\n fillColor: \"#e60000\",\n },\n },\n },\n exporting: {\n enabled: false,\n filename: this.vessel?.name,\n chartOptions: {\n title: {\n text: `Ship speed loss - ${this.vessel?.name}`,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n series: this.series,\n };\n\n return options;\n }\n\n get series(): IDataSerie[] {\n if (!this.trendPeriodMeta.speedLossHistory.length) return [] as IDataSerie[];\n\n const series: IDataSerie[] = [this.speedLossPoints, this.trendLine, this.benchmarkLine, this.baseline];\n\n return series;\n }\n\n get speedLossPoints(): IDataSerie {\n return {\n name: \"Long trend\",\n type: \"scatter\",\n zIndex: 1,\n enableMouseTracking: true,\n marker: {\n symbol: \"circle\",\n },\n // tooltip: {\n // valueDecimals: 1,\n // valueSuffix: \"%\",\n // },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n },\n data: this.trendPeriodMeta.speedLossHistory.map(item => [new Date(this.formatDatetimeToUTC(item.timestamp)).getTime(), item.speedLossPercent]),\n };\n }\n\n get trendLine(): IDataSerie {\n return {\n name: `Trendline (${moment(this.trendPeriodMeta.fromDate).format(\"DD.MMM YYYY\")})`,\n type: \"line\",\n color: \"#008000\",\n lineWidth: 3,\n zIndex: 3,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), this.trendPeriodMeta.trendLine.b],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), this.trendPeriodMeta.trendEndValue],\n ],\n };\n }\n\n get benchmarkLine(): IDataSerie {\n return {\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n enableMouseTracking: false,\n zIndex: 2,\n marker: {\n enabled: false,\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), this.trendPeriodMeta.benchmark.level],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), this.trendPeriodMeta.benchmark.level],\n ],\n };\n }\n\n get baseline(): IDataSerie {\n return {\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [Date.parse(`${this.trendPeriodMeta.fromDate}`), 0],\n [Date.parse(`${this.trendPeriodMeta.toDate}`), 0],\n ],\n };\n }\n\n get plotBands(): any {\n return [\n {\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: this.greenZoneEnds,\n to: 100,\n },\n {\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.greenZoneEnds,\n to: this.yellowZoneEnds,\n },\n {\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: -100,\n to: this.yellowZoneEnds,\n },\n ];\n }\n\n get greenZoneEnds(): number {\n return this.trendPeriodMeta.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n get infoEvents(): any[] {\n return VesselEvents.infoEvents;\n }\n\n // @Methods\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.chartLoaded = true;\n this.chart.update(this.ChartOptions, true);\n setTimeout(() => this.chart.yAxis[0].setExtremes(-50, 50));\n }\n\n formatDatetimeToUTC(datetime: any): any {\n datetime = datetime.split(\"+\");\n return datetime[0].endsWith(\"z\") || datetime[0].endsWith(\"Z\") ? datetime[0] : datetime[0] + \"Z\";\n }\n\n convertTimestamp(timestamp: number): string {\n return dateHelper.getFormatedDateTimeString(timestamp);\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\n }\n\n addEventLabels(): void {\n this.infoEvents.forEach(event => {\n const html = `\n \n
\n

${this.convertTimestamp(event.timestamp)}

\n

${event.name}

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

${this.convertTimestamp(event.timestamp)}

\n

${event.name}

\n
\n `;\n plotLines.push({\n value: new Date(this.formatDatetimeToUTC(event.timestamp)).getTime(),\n color: \"#0060fe\",\n width: 2,\n id: \"plot-line-\" + event.id,\n label: {\n rotation: 0,\n style: {\n color: \"#0060fe\",\n },\n text: html,\n useHTML: true,\n y: -14,\n x: -11,\n },\n });\n });\n return plotLines;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GraphCard.vue?vue&type=template&id=5a2632f5&scoped=true&\"\nimport script from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GraphCard.vue?vue&type=style&index=0&id=5a2632f5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a2632f5\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCard,VCardText,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-gauge\")]),_c('span',[_vm._v(\"Benchmark\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, actions, list-item-three-line\"}}):_c('v-card-text',[_c('ul',[_c('li',[_c('strong',[_vm._v(\"Level:\")]),_vm._v(\" \"+_vm._s(_vm.round(_vm.trendPeriodMeta.benchmark.level))+\"% compared to baseline \")])]),_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('span',{staticClass:\"color-square green\"}),_c('strong',[_vm._v(\"Green zone:\")]),_vm._v(\" down to 5% below benchmark level (\"+_vm._s(_vm.round(_vm.greenZoneEnds))+\"%) \")]),_c('li',[_c('span',{staticClass:\"color-square yellow\"}),_c('strong',[_vm._v(\"Yellow zone:\")]),_vm._v(\" 5% - 10% below benchmark level (\"+_vm._s(_vm.round(_vm.greenZoneEnds))+\"% to \"+_vm._s(_vm.round(_vm.yellowZoneEnds))+\"%) \")]),_c('li',[_c('span',{staticClass:\"color-square red\"}),_c('strong',[_vm._v(\"Red zone:\")]),_vm._v(\" more than 10% below benchmark level (\"+_vm._s(_vm.round(_vm.yellowZoneEnds))+\"%) \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\n\n@Component\nexport default class BenchmarkCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n @Prop({ required: true }) readonly trendPeriodMeta!: TrendPeriodMeta;\n\n tooltip =\n \"The Baseline is the value, derived from the design or shop-test data, which shows the original expected performance of the vessel. It is used as the zero level when displaying actual performance. The Benchmark Period is the period, immediately after a trend event, during which data is collected to provide an initial performance level so that any subsequent changes in performance can be evaluated.\";\n\n get greenZoneEnds(): number {\n return this.trendPeriodMeta.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BenchmarkCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BenchmarkCard.vue?vue&type=template&id=bf3e2b28&scoped=true&\"\nimport script from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BenchmarkCard.vue?vue&type=style&index=0&id=bf3e2b28&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bf3e2b28\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticStyle:{\"height\":\"100%\"},attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-chart-bar\")]),_c('span',[_vm._v(\"Statistics\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[(true)?_c('ul',[_c('li',[_c('strong',[_vm._v(\"Number of Points:\")]),_vm._v(\" \"+_vm._s(_vm.pointCount)+\" Long Trend Points\")]),_c('li',[_c('strong',[_vm._v(\"Trend Function:\")]),_vm._v(\" \"+_vm._s(_vm.trendFunction))])]):_c('p',[_vm._v(\"Statistics not available before the benchmark period is completed\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { TrendPeriodMeta } from \"@/types/TrendPeriodMeta\";\n\n@Component\nexport default class StatisticsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n @Prop({ required: true }) readonly trendPeriodMeta!: TrendPeriodMeta;\n\n tooltip = \"The number of long trend points shows the number of days where the conditions were suitable for a data point to be included.\";\n\n get pointCount(): number | undefined {\n return this.trendPeriodMeta.speedLossHistory.length;\n }\n\n get trendFunction(): string | undefined {\n return `${this.trendPeriodMeta?.trendLine.a.toFixed(4)}x ${this.trendPeriodMeta?.trendLine.b.toFixed(4)}`;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatisticsCard.vue?vue&type=template&id=097b76bf&\"\nimport script from \"./StatisticsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatisticsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticStyle:{\"height\":\"100%\"},attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-ferry\")]),_c('span',[_vm._v(\"Collection limits\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[_c('p',[_vm._v(\"Calculations are performed using 1-hour average data and \\\"Filter settings\\\"\")]),_c('ul',[_c('li',[_vm._v(\"Minimum power in % of MCR\")]),_c('li',[_vm._v(\"Wind speed less than Beaufort value\")])]),_c('table',{staticClass:\"table-kyma\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Power (% MCR)\")]),_c('th',[_vm._v(\"Wind (BF)\")])])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.getFoulingChartConfig.minPercentMcr ? _vm.round(_vm.getFoulingChartConfig.minPercentMcr, 0) : '0'))]),_c('td',[_vm._v(_vm._s(_vm.getFoulingChartConfig.maxBeaufortWind ? _vm.round(_vm.getFoulingChartConfig.maxBeaufortWind, 0) : ''))])]),(false)?_c('tfoot',[_c('tr',[_c('td',{attrs:{\"colspan\":\"4\"}},[_c('i',[_vm._v(\" Please wait for the next data export from vessel to be received, before long-trend limits are visible here. \")])])])]):_vm._e()])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\n\n@Component\nexport default class LimitsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n\n tooltip = \"The on board data collection limits met for valid long trend points\";\n\n limits = [\n {\n id: 1,\n exportedAt: \"\",\n minPower: 30,\n windSpeed: 6,\n minTime: null,\n },\n {\n id: 1,\n exportedAt: \"2019-09-03\",\n minPower: 30,\n windSpeed: 6,\n minTime: 3600,\n },\n ];\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LimitsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LimitsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LimitsCard.vue?vue&type=template&id=3782a842&\"\nimport script from \"./LimitsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./LimitsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { SpeedLossHistory } from \"@/types/SpeedLossHistory\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n// components\nimport GraphCard from \"@/components/Fouling/GraphCard.vue\";\nimport BenchmarkCard from \"@/components/Fouling/BenchmarkCard.vue\";\nimport StatisticsCard from \"@/components/Fouling/StatisticsCard.vue\";\nimport LimitsCard from \"@/components/Fouling/LimitsCard.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingModule from \"@/store/clients/Fouling.module\";\n\nconst Fouling = getModule(FoulingModule, store);\n\ninterface TrendPeriodMeta {\n vesselId: number;\n fromDate: string;\n toDate: string;\n benchmark: number;\n trendEndValue: number;\n trendLine: { a: number; b: number };\n speedLossHistory: SpeedLossHistory[];\n}\n\n@Component({\n components: {\n GraphCard,\n BenchmarkCard,\n StatisticsCard,\n LimitsCard,\n // ResultCard,\n },\n})\nexport default class SpeedLossTrendDetailsModal extends Vue {\n dialog = false;\n loading = true;\n periodMeta: any = null;\n\n get hasNextPeriod(): boolean {\n return Boolean(this.periodMeta?.nextPeriodStartDate);\n }\n\n get hasPreviousPeriod(): boolean {\n return Boolean(this.periodMeta?.previousPeriodStartDate);\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get speedMeasurementSource(): string {\n return this.getFoulingChartConfig.useDerivedStw ? \"Derived STW\" : \"Speed Log\";\n }\n\n exportExcel(): void {\n // LongTrendExportClient.exportExcelPeriod(this.meta?.vesselId, this.meta?.longTrendId, this.meta?.startDate, this.meta?.endDate);\n }\n\n nextPeriod(): void {\n if (this.hasNextPeriod) this.$emit(\"onTrendPeriodChanged\", this.periodMeta.nextPeriodStartDate);\n }\n\n previousPeriod(): void {\n if (this.hasPreviousPeriod) this.$emit(\"onTrendPeriodChanged\", this.periodMeta.previousPeriodStartDate);\n }\n\n updatePeriod(data: TrendPeriodMeta): void {\n this.periodMeta = data;\n }\n\n open(data: TrendPeriodMeta): void {\n this.periodMeta = data;\n this.loading = false;\n this.dialog = true;\n }\n\n close(): void {\n this.dialog = false;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedLossTrendDetailsModal.vue?vue&type=template&id=0be7a10b&scoped=true&\"\nimport script from \"./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpeedLossTrendDetailsModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpeedLossTrendDetailsModal.vue?vue&type=style&index=0&id=0be7a10b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0be7a10b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardText,VCol,VDialog,VDivider,VIcon,VRow,VSpacer,VToolbar,VToolbarTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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(c => c.usingDerivedStw === this.foulingChartConfig.useDerivedStw);\n return filteredFuelConsumptions[filteredFuelConsumptions.length - 1];\n }\n\n get latestTrendEvent(): VesselEvent {\n return VesselEvents.trendEvents[0];\n }\n\n get latestSpeedLossHistory(): SpeedLossHistory[] {\n if (!this.latestSpeedLossStatistics) return [];\n return this.speedLossHistory.filter(\n item =>\n moment.utc(item.timestamp).valueOf() >= moment.utc(this.latestSpeedLossStatistics?.fromDate).valueOf() &&\n moment.utc(item.timestamp).valueOf() <= moment.utc(this.latestSpeedLossStatistics?.toDate).valueOf()\n );\n }\n\n get isBenchmarking(): boolean {\n if (!this.foulingChartConfig) return false;\n return !this.latestSpeedLossStatistics?.benchmark.end && !this.foulingChartConfig.useManualBenchmark;\n }\n\n get getFoulingChartConfig(): FoulingChartConfig {\n return Fouling.foulingChartConfig;\n }\n\n get benchmarkType(): { tooltip: string; icon: string } {\n if (this.foulingChartConfig.useManualBenchmark) {\n return {\n tooltip: `Using manual benchmark level: ${this.foulingChartConfig.benchmark}%`,\n icon: \"mdi-alpha-m-circle\",\n };\n } else {\n return {\n tooltip: \"Using automatic calculated benchmark level\",\n icon: \"mdi-alpha-a-circle\",\n };\n }\n }\n\n get derivedStwHint(): string {\n return this.tempUseDerivedStw\n ? \"The derived Speed Through Water (STW) is calculated from the Speed Over Ground (SOG) and the ocean current’s speed and direction by resolving them into their components.\"\n : \"\";\n }\n\n 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(marker.lastExportDate).valueOf(), moment(marker.lastExportDate).valueOf());\n }\n\n trackClicked(dates: { trackDateStart: string; trackDateEnd: string }): void {\n this.SpeedLossChartCard.zoomIn(moment(dates.trackDateStart).valueOf(), moment(dates.trackDateEnd).valueOf());\n }\n\n onShipSpeedLogChartSelection(datesRange: { min: number; max: number }): void {\n // Chart -> Operational Profile sync is disabled for now:\n // this.OperationalProfileCard.setDateRange(datesRange);\n }\n\n syncSpeedLossChartDates(datesRange: { min: number; max: number; zoomedOut: boolean }): void {\n this.SpeedLossChartCard.zoomIn(datesRange.min, datesRange.max, datesRange.zoomedOut);\n }\n\n getTrendPeriodByFromDate(fromDate: string): SpeedLossStatistic | null {\n return this.speedLossStatistics.find((item, i) => item.fromDate === fromDate) ?? null;\n }\n\n getTrendPeriod(trendPeriod: SpeedLossStatistic, type: string): SpeedLossStatistic | null {\n if (!type) return trendPeriod;\n let currentTrendPeriod = null;\n this.speedLossStatistics.forEach((item, i) => {\n if (item.fromDate === trendPeriod.fromDate) {\n currentTrendPeriod = this.speedLossStatistics[type === \"next\" ? i + 1 : i - 1];\n }\n });\n return currentTrendPeriod;\n }\n\n getTrendPeriodMeta(trendPeriod: SpeedLossStatistic): TrendPeriodMeta {\n return {\n vesselId: this.vessel?.id ?? null,\n fromDate: trendPeriod.fromDate,\n toDate: trendPeriod.toDate,\n nextPeriodStartDate: this.getTrendPeriod(trendPeriod, \"next\")?.fromDate ?? null,\n previousPeriodStartDate: this.getTrendPeriod(trendPeriod, \"previous\")?.fromDate ?? null,\n benchmark: trendPeriod.benchmark,\n trendEndValue: trendPeriod.trendEndValue,\n trendLine: trendPeriod.trendLine,\n speedLossHistory: this.speedLossHistory.filter(\n item => moment.utc(item.timestamp).valueOf() >= moment.utc(trendPeriod.fromDate).valueOf() && moment.utc(item.timestamp).valueOf() <= moment.utc(trendPeriod.toDate).valueOf()\n ),\n };\n }\n\n onTrendPeriodChanged(periodStartDate: string): void {\n const trendPeriod = this.getTrendPeriodByFromDate(periodStartDate);\n if (!trendPeriod) return;\n this.SpeedLossTrendDetailsModal.updatePeriod(this.getTrendPeriodMeta(trendPeriod));\n }\n\n // @Hooks\n async created(): Promise {\n if (!this.vessel || !this.featureEnabled) return;\n await this.fetchData();\n }\n\n beforeDestroy(): void {\n Fouling.CLEAR_SEA_SURFACE_TEMPERATURE();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fouling.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fouling.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Fouling.vue?vue&type=template&id=a696b23c&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=a696b23c&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 \"a696b23c\",\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!./MCRModal.vue?vue&type=style&index=0&id=6351e485&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=199866bb&lang=scss&scoped=true&\""],"sourceRoot":""}