{"version":3,"sources":["webpack:///./src/components/DiagnosticCard.vue?cf51","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?45db","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?4662","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?7652","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?d263","webpack:///./node_modules/highcharts/modules/no-data-to-display.js","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?a542","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?4b4d","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?c085","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?2af4","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?a0d0","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?4248","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?bdb0","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?36d8","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?e42f","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?ba8d","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?e14a","webpack:///./src/components/diagnosticsDetails/ResultCard.vue","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?2515","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?59dc","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?b740","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?50e6","webpack:///./src/Scripts/clients/long-trend-export-client.js","webpack:///./src/components/LoadingTextWave.vue?b4c3","webpack:///./src/types/highcharts/plotLine.ts","webpack:///./src/components/LoadingTextWave.vue?f7fc","webpack:///src/components/LoadingTextWave.vue","webpack:///./src/components/LoadingTextWave.vue?640c","webpack:///./src/components/LoadingTextWave.vue?fc23","webpack:///./src/components/EditVesselEvent.vue?8bfc","webpack:///./src/components/EditVesselEvent.vue?3693","webpack:///./src/components/EditVesselEvent.vue","webpack:///./src/components/EditVesselEvent.vue?308f","webpack:///./src/components/EditVesselEvent.vue?78b9","webpack:///./src/components/DiagnosticCard.vue?03c8","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?b3dd","webpack:///./src/components/diagnostics/TrendEventBenefit.vue","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?d906","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?b565","webpack:///./src/components/DiagnosticCard.vue","webpack:///./src/components/DiagnosticCard.vue?c304","webpack:///./src/components/DiagnosticCard.vue?e02a","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?9b94","webpack:///./src/components/diagnosticsDetails/GraphCard.vue","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?3bea","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?1ca1"],"names":["a","module","exports","b","Highcharts","e","d","hasOwnProperty","apply","_modules","f","getOptions","addEvent","g","extend","prototype","lang","noData","attr","zIndex","position","x","y","align","verticalAlign","style","fontWeight","fontSize","color","showNoData","c","this","options","renderer","noDataLabel","label","useHTML","add","styledMode","filterUserAttributes","css","getBBox","hideNoData","destroy","hasData","series","length","isInternal","loadingShown","render","_vm","_h","$createElement","_c","_self","attrs","on","$event","type","indexOf","_k","keyCode","key","close","arguments","model","value","callback","$$v","dialog","expression","staticClass","directives","name","rawName","_v","_s","title","loading","preventDefault","exportExcel","hasPreviousPeriod","previousPeriod","customBenchmarkPeriod","benchmarkPeriod","_e","hasNextPeriod","nextPeriod","updateData","customPeriod","staticRenderFns","scopedSlots","_u","fn","ref","_g","_b","domProps","tooltip","pointCount","outlierPointsCount","remainingPointsCount","benchmarkPoint","round","isManualBenchmark","_f","periodStart","periodEnd","periodMenu","updateBenchmarkPeriod","isBenchmarkFormValid","benchmarkPeriodRules","required","valid","points","submittingBenchmarkPeriod","stopPropagation","resetBenchmarkPeriod","isBenchmarking","redLine","yellowLine","Math","abs","yellowOffset","redOffset","LongTrendPeriod","getModule","LongTrendPeriodModule","store","BenchmarkCard","val","$emit","longTrendPeriod","longTrendPeriods","longTrendData","filteredLongTrendData","requireBenchmarkPoints","start","precision","multiplier","pow","Vue","__decorate","Prop","default","Watch","immediate","Component","component","VBtn","VCard","VCardText","VForm","VIcon","VList","VListItem","VListItemContent","VMenu","VSkeletonLoader","VSpacer","VSystemBar","VTextField","VTooltip","diffPerMonth","diffPerYear","correlation","standardDeviation","averageMean","trendFunction","StatisticsCard","statistics","_l","limit","i","$options","filters","dateDMY","exportedAt","minPower","windSpeed","minTime","limits","LimitsCard","trendLimits","endDate","performanceStatusVSBenchmark","draft","staticStyle","draftMenu","handleUpdateDraft","isDraftFormValid","draftRules","$data","$set","_n","draftLoading","hasConsequenceResults","consequences","consequence","headerName","mcrDisplay","result","displayValue","proxy","diagnosticTypeName","yellowPrediction","redPrediction","Vessels","VesselsModule","ResultCard","_draft","consequencesLoading","getConsequences","meta","data","vesselId","updateVesselDraft","ConsequencesClient","find","currentVessel","id","longTrendId","startDate","then","Boolean","results","toLowerCase","trendline","end","isCurrent","showYellowPrediction","showRedPrediction","redLineReached","yellowLineReached","Date","getTime","now","reachedDate","verb","VAlert","VSimpleTable","Snackbar","SnackbarModule","DiagnosticsDetails","description","moment","utc","nextPeriodStartDate","valueOf","toISOString","nextPeriodEndDate","previousPeriodStartDate","previousPeriodEndDate","LongTrendExportClient","exportExcelPeriod","nextPeriodStart","nextPeriodEnd","periodMeta","prevPeriodStart","prevPeriodEnd","Promise","all","updateMeta","updateLongTrendPeriod","updateStatistics","updateTrendLimits","showSnackbar","text","clonedMeta","Object","assign","DELETE_DATA","components","GraphCard","VCol","VDialog","VDivider","VRow","VToolbar","VToolbarTitle","filter","net","fileDownload","DefaultVesselEventPlotline","width","rotation","_m","LoadingTextWave","cancel","submitting","handleSubmit","isFormValid","nameValidation","typeSelectValidation","trendEventTypes","selectTrendEventType","selectedType","dateValidation","timeStamp","dateMenu","VesselEvents","VesselEventsModule","EditVesselEvent","isNewEvent","source","typeId","trendEventTypeId","$nextTick","typeSelect","reset","trendEventType","trendEventTypeName","vesselEvent","setFieldData","resolve","reject","payload","timestamp","createEvent","editEvent","confirm","resetFieldData","setTimeout","split","Ref","PropSync","VCardActions","VCardTitle","VDatePicker","VRadio","VRadioGroup","VSelect","statusIcon","longTrend","descriptionLong","tooltipText","isLongTrendsLoading","showError","performanceStatusColor","performanceStatusIcon","chartOptions","benchmarkType","icon","useManualBenchmarkLevel","benchmarkLevelInputRules","resetManualBenchmarkLevel","manualBenchmarkLevel","isBenchmarkLevelSettingsLoading","disableSaveBenchmarkLevelSettings","updateBenchmarkLevelSettings","trendEvents","fetchBenefitData","formatDateForDisplay","item","selectedTrendEvent","errorText","benefitData","benefitDate","prevEndValue","toFixed","nextBenchmarkValue","tableHeaders","tableItems","benefitText","TrendEventBenefits","BenefitsModule","TrendEventBenefit","isBenefitLoading","loadBenefitError","fetchBenefit","trendEventId","diagnosticTypesHelper","getBenefitText","diagnosticType","headers","push","forEach","items","MCR","date","format","VDataTable","HighchartsNoData","LongTrends","LongTrendsModule","DiagnosticCard","vessel","fetchVesselLongTrendPeriods","console","warn","vesselLongTrendByName","longTrendName","allEvents","DiagnosticTypesHelper","getHelpText","performanceStatus","eventTimestamp","vesselEvents","vesselEventsOnSameDate","event","eventIcon","map","index","join","plotLines","html","getPlotLineLabels","getVesselEventsOnSameDate","JSON","parse","stringify","eventColor","plotBands","period","from","to","className","events","click","getLongTrendPeriodMeta","mouseover","target","attributes","getNamedItem","mouseout","benchmarkingData","dataPoint","formatDatetimeToUTC","marker","enabled","valueDecimals","valueSuffix","enableMouseTracking","symbol","dashStyle","visible","firstLongTrendPeriod","lineWidth","time","useUTC","chart","zoomType","spacingRight","animation","height","spacingTop","credits","legend","yAxis","unitName","unitCaption","min","isRpmDiagnostic","max","tickPixelInterval","xAxis","vesselEventPlotLines","vesselEventPlotBands","labels","dataSeries","backgroundColor","borderWidth","plotOptions","exporting","filename","toString","updatedLongTrend","updateVesselLongTrend","updateCurrentVesselById","datetime","endsWith","eventType","Chart","VCheckbox","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VSheet","chartReady","addEventLabels","cmax","isRpm","cmin","setExtremes","infoEvents","addPlotLine","benchmarkZone","trialPoints","vesselName","marginTop","gridLineWidth","benchmarkingZone","resetZoomButton","update","yAxisLabel","gridLineColor","headerFormat","pointFormat","xDateFormat","radius","lineColor","fillColor","exportName","exportTitle","j","highcharts"],"mappings":"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","file":"js/chunk-ec909d5e.8997a38f.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!./DiagnosticCard.vue?vue&type=style&index=0&id=a49ba308&scoped=true&lang=scss&\"","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=6d8a5ff8&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!./ResultCard.vue?vue&type=style&index=0&id=3196c23f&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=5e4d8f9b&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!./DiagnosticsDetails.vue?vue&type=style&index=0&id=f1416762&lang=scss&scoped=true&\"","/*\n Highcharts JS v9.3.3 (2022-02-01)\n\n Plugin for displaying a message when there is no data visible in chart.\n\n (c) 2010-2021 Highsoft AS\n Author: Oystein Moseng\n\n License: www.highcharts.com/license\n*/\n'use strict';(function(a){\"object\"===typeof module&&module.exports?(a[\"default\"]=a,module.exports=a):\"function\"===typeof define&&define.amd?define(\"highcharts/modules/no-data-to-display\",[\"highcharts\"],function(b){a(b);a.Highcharts=b;return a}):a(\"undefined\"!==typeof Highcharts?Highcharts:void 0)})(function(a){function b(a,b,e,d){a.hasOwnProperty(b)||(a[b]=d.apply(null,e))}a=a?a._modules:{};b(a,\"Extensions/NoDataToDisplay.js\",[a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Chart/Chart.js\"],a[\"Core/DefaultOptions.js\"],\na[\"Core/Utilities.js\"]],function(a,b,e,d){var f=e.getOptions;e=d.addEvent;var g=d.extend;d=b.prototype;f=f();g(f.lang,{noData:\"No data to display\"});f.noData={attr:{zIndex:1},position:{x:0,y:0,align:\"center\",verticalAlign:\"middle\"},style:{fontWeight:\"bold\",fontSize:\"12px\",color:\"#666666\"}};d.showNoData=function(b){var c=this.options;b=b||c&&c.lang.noData||\"\";c=c&&(c.noData||{});this.renderer&&(this.noDataLabel||(this.noDataLabel=this.renderer.label(b,0,0,void 0,void 0,void 0,c.useHTML,void 0,\"no-data\").add()),\nthis.styledMode||this.noDataLabel.attr(a.filterUserAttributes(c.attr||{})).css(c.style||{}),this.noDataLabel.align(g(this.noDataLabel.getBBox(),c.position||{}),!1,\"plotBox\"))};d.hideNoData=function(){this.noDataLabel&&(this.noDataLabel=this.noDataLabel.destroy())};d.hasData=function(){for(var a=this.series||[],b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0;return this.loadingShown};e(b,\"render\",function(){this.hasData()?this.hideNoData():this.showNoData()})});b(a,\"masters/modules/no-data-to-display.src.js\",\n[],function(){})});\n//# sourceMappingURL=no-data-to-display.js.map","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',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.title),expression:\"title\"}]},[_vm._v(_vm._s(_vm.title))]),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"text\":\"\",\"disabled\":_vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.exportExcel()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-excel\")]),_vm._v(\" Export to excel \")],1),_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'),(_vm.customBenchmarkPeriod && !_vm.loading)?_c('v-alert',{attrs:{\"outlined\":\"\",\"type\":\"info\",\"dense\":\"\",\"border\":\"left\"}},[_vm._v(\"Provisional result based on a benchmark period of \"+_vm._s(_vm.benchmarkPeriod)+\" points\")]):_vm._e(),_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('GraphCard',{attrs:{\"loading\":_vm.loading}})],1)])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('ResultCard',{attrs:{\"loading\":_vm.loading},on:{\"update\":_vm.updateData}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\"}},[_c('BenchmarkCard',{attrs:{\"loading\":_vm.loading},on:{\"customPeriod\":_vm.customPeriod}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('StatisticsCard',{attrs:{\"loading\":_vm.loading}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\"}},[_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\":\"\"}},[_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',[(_vm.isBenchmarking)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.pointCount)+\" long trend \"+_vm._s(_vm.pointCount == 1 ? \"point\" : \"points\")+\" collected, where \"+_vm._s(_vm.outlierPointsCount)+\" \"+_vm._s(_vm.outlierPointsCount == 1 ? \"is an outlier\" : \"are outliers\")+\". \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.remainingPointsCount)+\" more good \"+_vm._s(_vm.remainingPointsCount == 1 ? \"point\" : \"points\")+\" required for completion of benchmark period.\")])]):_c('ul',[(_vm.benchmarkPoint != null)?_c('li',[_vm._v(\" Level: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.benchmarkPoint.y))+\"% compared to baseline\")])]):_vm._e(),(!_vm.isManualBenchmark)?_c('li',[_vm._v(\" Period: \"),_c('strong',[_vm._v(_vm._s(_vm.benchmarkPeriod)+\" points\"),_c('br'),_vm._v(_vm._s(_vm._f(\"dateDMY\")(_vm.periodStart))+\" to \"+_vm._s(_vm._f(\"dateDMY\")(_vm.periodEnd)))])]):_c('li',[_vm._v(\" Period: \"),_c('strong',[_vm._v(\"Manual benchmark level\")])])]),(!_vm.isManualBenchmark)?_c('v-menu',{attrs:{\"top\":\"\",\"offset-y\":true,\"close-on-content-click\":false},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:\"font-weight-semibold\",attrs:{\"text\":\"\",\"outlined\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Edit benchmark period \")])]}}],null,false,3899671836),model:{value:(_vm.periodMenu),callback:function ($$v) {_vm.periodMenu=$$v},expression:\"periodMenu\"}},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-form',{attrs:{\"id\":\"update-benchmark-period\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateBenchmarkPeriod.apply(null, arguments)}},model:{value:(_vm.isBenchmarkFormValid),callback:function ($$v) {_vm.isBenchmarkFormValid=$$v},expression:\"isBenchmarkFormValid\"}},[_c('div',{staticClass:\"mt-2 edit-benchmark-row\"},[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"30\",\"max\":\"1000\",\"label\":\"Points\",\"rules\":[_vm.benchmarkPeriodRules.required, _vm.benchmarkPeriodRules.valid]},model:{value:(_vm.points),callback:function ($$v) {_vm.points=$$v},expression:\"points\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"type\":\"submit\",\"form\":\"update-benchmark-period\",\"color\":\"accent\",\"loading\":_vm.submittingBenchmarkPeriod,\"disabled\":!_vm.isBenchmarkFormValid}},[_vm._v(\"Update\")]),_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.resetBenchmarkPeriod.apply(null, arguments)}}},[_vm._v(\" Reset \")])],1)])],1)],1)],1)],1):_vm._e(),(!_vm.isBenchmarking && (_vm.redLine !=null) && (_vm.yellowLine !=null))?_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('span',{staticClass:\"color-square green\"}),_vm._v(\" Green zone: \"),_c('strong',[_vm._v(_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"up to\" : \"down to\")+\" \"+_vm._s(Math.abs(_vm.round(_vm.yellowOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round(_vm.yellowLine.y))+\"%)\")])]),_c('li',[_c('span',{staticClass:\"color-square yellow\"}),_vm._v(\" Yellow zone: \"),_c('strong',[_vm._v(_vm._s(Math.abs(_vm.round(_vm.yellowOffset)))+\"% - \"+_vm._s(Math.abs(_vm.round(_vm.redOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round( _vm.yellowLine.y))+\"% to \"+_vm._s(_vm.round( _vm.redLine.y))+\"%)\")])]),_c('li',[_c('span',{staticClass:\"color-square red\"}),_vm._v(\" Red zone: \"),_c('strong',[_vm._v(\"more than \"+_vm._s(Math.abs(_vm.round(_vm.redOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round( _vm.redLine.y))+\"%)\")])])]):_vm._e()],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\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { GraphPoint } from \"@/types/graphPoint\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\n\n@Component\nexport default class BenchmarkCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n points = 0;\n periodMenu = false;\n isBenchmarkFormValid = true;\n submittingBenchmarkPeriod = false;\n\n benchmarkPeriodRules = {\n required: (value: number) => !!value || \"Value required\",\n valid: (value: number) => (value >= 30 && value <= 1000) || \"Value must be between 30 and 1000\",\n };\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 @Watch(\"loading\", { immediate: true })\n onLoaded(val: boolean): void {\n if (!val) {\n if (this.benchmarkPeriod) {\n this.points = this.benchmarkPeriod;\n }\n }\n }\n\n updateBenchmarkPeriod(): void {\n this.$emit(\"customPeriod\", this.points);\n this.periodMenu = false;\n }\n\n resetBenchmarkPeriod(): void {\n this.$emit(\"customPeriod\", -1);\n this.periodMenu = false;\n }\n\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n get isManualBenchmark(): boolean | undefined {\n return this.longTrendPeriods?.isManualBenchmark;\n }\n get benchmarkPeriod(): number | undefined {\n return this.longTrendPeriods?.benchmarkPeriod;\n }\n get benchmarkPoint(): GraphPoint | undefined {\n return this.longTrendPeriods?.benchmarkPoint;\n }\n get pointCount(): number | undefined {\n return this.longTrendPeriods?.longTrendData.length;\n }\n get outlierPointsCount(): number | undefined {\n if (this.pointCount && this.longTrendPeriods) {\n return this.pointCount - this.longTrendPeriods.filteredLongTrendData.length;\n }\n }\n get requireBenchmarkPoints(): number | undefined {\n return this.isManualBenchmark ? 2 : this.longTrendPeriods?.benchmarkPeriod;\n }\n get remainingPointsCount(): number | undefined {\n if (this.requireBenchmarkPoints && this.longTrendPeriods) {\n return this.requireBenchmarkPoints - this.longTrendPeriods.filteredLongTrendData.length;\n }\n }\n get periodStart(): string | undefined {\n return this.longTrendPeriods?.start;\n }\n get periodEnd(): string | undefined {\n return this.benchmarkPoint?.x;\n }\n get yellowLine(): GraphPoint | undefined {\n return this.longTrendPeriods?.yellowLine;\n }\n get yellowOffset(): number | undefined {\n return this.longTrendPeriods?.yellowOffset;\n }\n get redLine(): GraphPoint | undefined {\n return this.longTrendPeriods?.redLine;\n }\n get redOffset(): number | undefined {\n return this.longTrendPeriods?.redOffset;\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=5e4d8f9b&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=5e4d8f9b&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 \"5e4d8f9b\",\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 { VForm } from 'vuetify/lib/components/VForm';\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 { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VForm,VIcon,VList,VListItem,VListItemContent,VMenu,VSkeletonLoader,VSpacer,VSystemBar,VTextField,VTooltip})\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-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',[(!_vm.isBenchmarking)?_c('ul',[_c('li',[_vm._v(\"Number of points: \"),_c('strong',[_vm._v(_vm._s(_vm.pointCount)+\" Long trend points\")])]),_c('li',[_vm._v(\"Loss per month: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.diffPerMonth, 2))+\"%\")])]),_c('li',[_vm._v(\"Loss per year: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.diffPerYear, 2))+\"%\")])]),_c('li',[_vm._v(\"Correlation: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.correlation, 2)))])]),_c('li',[_vm._v(\"Standard Deviation:\"),_c('strong',[_vm._v(\" +/-\"+_vm._s(_vm.round(_vm.standardDeviation, 2))+\"%\")])]),_c('li',[_vm._v(\"Average(Mean): \"),_c('strong',[_vm._v(_vm._s(_vm.averageMean ? _vm.round(_vm.averageMean, 2) : 0)+\"% deviation from benchmark\")])]),_c('li',[_vm._v(\"Trend Function: \"),_c('strong',[_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\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { LongTrendPeriodStatistics } from \"@/types/longTrendPeriodStatistics\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\n\n@Component\nexport default class StatisticsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\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 statistics(): LongTrendPeriodStatistics | null {\n return LongTrendPeriod.statistics;\n }\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get pointCount(): number | undefined {\n return this.longTrendPeriods?.longTrendData?.length;\n }\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n get averageMean(): number | undefined {\n return this.statistics?.averageMean;\n }\n get correlation(): number | undefined {\n return this.statistics?.correlation;\n }\n get diffPerMonth(): number | undefined {\n return this.statistics?.diffPerMonth;\n }\n get diffPerYear(): number | undefined {\n return this.statistics?.diffPerYear;\n }\n get standardDeviation(): number | undefined {\n return this.statistics?.standardDeviation;\n }\n get trendFunction(): string | undefined {\n return this.statistics?.trendFunction;\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=15ac3070&\"\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',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-ferry\")]),_c('span',[_vm._v(\"On board data 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(\"The on board data collection system creates 1 long trend point per day while the following long-time trend limits are met:\")]),_c('ul',[_c('li',[_vm._v(\"Minimum power in % of MCR\")]),_c('li',[_vm._v(\"Wind speed less than Beaufort value\")]),_c('li',[_vm._v(\"Minimum continuous trend condition in hours\")])]),_c('table',{staticClass:\"table-kyma\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Updated\")]),_c('th',[_vm._v(\"Power (% MCR)\")]),_c('th',[_vm._v(\"Wind (BF)\")]),_c('th',[_vm._v(\"Time (hours)\")])])]),_vm._l((_vm.limits),function(limit,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s((i > 0) ? _vm.$options.filters.dateDMY(limit.exportedAt) : '—'))]),_c('td',[_vm._v(_vm._s(limit.minPower ? _vm.round(limit.minPower, 0) : '0'))]),_c('td',[_vm._v(_vm._s(limit.windSpeed ? _vm.round(limit.windSpeed, 0) : ''))]),_c('td',[_vm._v(_vm._s(limit.minTime ? _vm.round(limit.minTime/3600, 1) : ''))])])}),(!_vm.limits.length)?_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()],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\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { TrendLimit } from \"@/types/trendLimit\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, 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 get limits(): TrendLimit | null {\n return LongTrendPeriod.trendLimits;\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!./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=3d9c84f2&\"\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","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-clipboard-list-outline\")]),_c('span',[_vm._v(\"Result\")])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[(!_vm.isBenchmarking)?_c('div',[_c('p',[_vm._v(\"Performance status at \"+_vm._s(_vm._f(\"dateDMY\")(_vm.endDate))+\" is \"+_vm._s(_vm.performanceStatusVSBenchmark)+\"% compared to the benchmark level.\")]),_c('h4',[_vm._v(\"Consequence\")]),_c('p',[_vm._v(\"Based on the trend data and with an assumed draft of \"),_c('strong',[_vm._v(_vm._s(_vm.draft)+\" m\")]),_vm._v(\" ( \"),_c('v-menu',{attrs:{\"top\":\"\",\"offset-y\":true,\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('a',_vm._g(_vm._b({attrs:{\"role\":\"button\",\"href\":\"#\"}},'a',attrs,false),on),[_c('v-icon',{staticStyle:{\"vertical-align\":\"baseline\"},attrs:{\"small\":\"\"}},[_vm._v(\"mdi-pencil\")]),_vm._v(\" EDIT \")],1)]}}],null,false,1542973882),model:{value:(_vm.draftMenu),callback:function ($$v) {_vm.draftMenu=$$v},expression:\"draftMenu\"}},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-form',{attrs:{\"id\":\"update-draft\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.handleUpdateDraft.apply(null, arguments)}},model:{value:(_vm.isDraftFormValid),callback:function ($$v) {_vm.isDraftFormValid=$$v},expression:\"isDraftFormValid\"}},[_c('div',{staticClass:\"draft-row\"},[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"0\",\"max\":\"25\",\"label\":\"meter\",\"rules\":[_vm.draftRules.required, _vm.draftRules.valid]},model:{value:(_vm.$data._draft),callback:function ($$v) {_vm.$set(_vm.$data, \"_draft\", _vm._n($$v))},expression:\"$data._draft\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"type\":\"submit\",\"form\":\"update-draft\",\"color\":\"accent\",\"disabled\":!_vm.isDraftFormValid,\"loading\":_vm.draftLoading}},[_vm._v(\"Save\")])],1)])],1)],1)],1)],1),_vm._v(\" ) \"),_c('br'),_vm._v(\"the following deviations from benchmark performance can be expected: \")],1),(_vm.consequencesLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item@5\"}}):(!_vm.hasConsequenceResults)?_c('v-alert',{attrs:{\"border\":\"left\",\"colored-border\":\"\",\"color\":\"warning\",\"elevation\":\"2\"}},[_c('p',{staticClass:\"caption\"},[_vm._v(\"Consequences cannot be calculated because the vessel-specific code was not found. \"),_c('br'),_vm._v(\" Please contact Danelec at \"),_c('a',{attrs:{\"href\":\"mailto:support@danelec.com\"}},[_vm._v(\"support@danelec.com\")]),_vm._v(\" for assistance.\")])]):_c('v-simple-table',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(\"MCR\")]),_vm._l((_vm.consequences[0].results),function(consequence){return _c('th',{key:consequence.headerName,staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(consequence.headerName)+\" \")])})],2)]),_c('tbody',_vm._l((_vm.consequences),function(consequence){return _c('tr',{key:consequence.mcrDisplay},[_c('td',[_vm._v(_vm._s(consequence.mcrDisplay))]),_vm._l((consequence.results),function(result){return _c('td',{key:result.displayValue},[_vm._v(_vm._s(result.displayValue)+\" \")])})],2)}),0)]},proxy:true}],null,false,2485445652)}),(_vm.showAsteriskText)?_c('p',[_c('em',[_vm._v(\"* Estimated additional fuel oil required due to \"+_vm._s(_vm.diagnosticTypeName)+\" change, based on ISO corrected Calorific Value.\")])]):_vm._e(),(_vm.showPrediction)?_c('div',[_c('h4',[_vm._v(\"Prediction\")]),(_vm.showYellowPrediction)?_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.yellowPrediction))]):_vm._e(),(_vm.showRedPrediction)?_c('p',[_vm._v(_vm._s(_vm.redPrediction))]):_vm._e()]):_vm._e()],1):_c('p',[_vm._v(\"Result 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Watch, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport ConsequencesClient from \"@/Scripts/clients/consequences-client\";\nimport { Consequence } from \"@/types/consequence\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component\nexport default class ResultCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n _draft = 0;\n consequences: Consequence[] = [];\n consequencesLoading = true;\n isDraftFormValid = true;\n draftMenu = false;\n draftLoading = false;\n draftRules = {\n required: (value: number) => !!value || \"Value required\",\n valid: (value: number) => (value >= 2 && value <= 25) || \"Value must be between 2 and 25\",\n };\n\n @Watch(\"loading\", { immediate: true })\n onLoaded(val: boolean): void {\n if (!val) {\n if (this.draft) {\n this.$data._draft = this.draft;\n }\n this.getConsequences();\n }\n }\n\n async handleUpdateDraft(): Promise {\n if (this.meta) {\n this.draftLoading = true;\n const data = {\n vesselId: this.meta?.vesselId,\n draft: this.$data._draft,\n };\n await Vessels.updateVesselDraft(data);\n this.draftMenu = false;\n this.draftLoading = false;\n this.$emit(\"update\");\n }\n }\n\n async getConsequences(): Promise {\n await ConsequencesClient.find(Vessels.currentVessel?.id, this.longTrendPeriods?.longTrendId, this.startDate, this.endDate, this.longTrendPeriods?.benchmarkPeriod).then(data => {\n this.consequences = data;\n this.consequencesLoading = false;\n });\n }\n\n get hasConsequenceResults(): boolean {\n if (!this.consequences?.length) return false;\n return Boolean(this.consequences[0].results.length);\n }\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n\n get draft(): number | null | undefined {\n return this.longTrendPeriods?.draft;\n }\n\n get showAsteriskText(): boolean {\n const type = this.diagnosticTypeName?.toLowerCase();\n return type === \"speed\" || type === \"sfr\";\n }\n get diagnosticTypeName(): string | undefined {\n return this.longTrendPeriods?.diagnosticTypeName;\n }\n\n get startDate(): string | undefined {\n return this.meta?.startDate;\n }\n\n get endDate(): string | undefined {\n return this.meta?.endDate;\n }\n\n get performanceStatusVSBenchmark(): number | string {\n if (!this.longTrendPeriods?.trendline || !this.longTrendPeriods.benchmarkPoint) return \"\";\n return this.round(this.longTrendPeriods.trendline.end.y - this.longTrendPeriods.benchmarkPoint.y);\n }\n\n get showPrediction(): boolean {\n if (!this.longTrendPeriods?.isCurrent) return false;\n if (this.showYellowPrediction || this.showRedPrediction) return true;\n return false;\n }\n\n get redLineReached(): string | null | undefined {\n return this.longTrendPeriods?.redLineReached;\n }\n\n get yellowLineReached(): string | null | undefined {\n return this.longTrendPeriods?.yellowLineReached;\n }\n\n get showYellowPrediction(): boolean {\n if (!this.redLineReached) return true;\n const redLineReached = new Date(this.redLineReached).getTime();\n if (redLineReached > Date.now()) return true;\n return false;\n }\n\n get showRedPrediction(): boolean {\n if (!this.yellowLineReached) return true;\n const yellowLineReached = new Date(this.yellowLineReached).getTime();\n if (yellowLineReached > Date.now() || yellowLineReached < new Date(this.startDate!).getTime()) return true;\n return false;\n }\n\n get yellowPrediction(): string {\n if (!this.yellowLineReached) return \"Yellow zone will not be reached in the foreseeable future\";\n const reachedDate = new Date(this.yellowLineReached).getTime();\n if (reachedDate < new Date(this.startDate!).getTime()) return \"Yellow zone was reached before trend period start.\";\n const verb = reachedDate < Date.now() ? \"was\" : \"will be\";\n return `Yellow zone ${verb} reached on ${this.$options.filters?.dateDMY(this.yellowLineReached)}.`;\n }\n\n get redPrediction(): string {\n if (!this.redLineReached) return \"Red zone will not be reached in the foreseeable future\";\n const reachedDate = new Date(this.redLineReached).getTime();\n if (reachedDate < new Date(this.startDate!).getTime()) return \"Red zone was reached before trend period start.\";\n const verb = reachedDate < Date.now() ? \"was\" : \"will be\";\n return `Red zone ${verb} reached on ${this.$options.filters?.dateDMY(this.redLineReached)}.`;\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!./ResultCard.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!./ResultCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResultCard.vue?vue&type=template&id=3196c23f&scoped=true&\"\nimport script from \"./ResultCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResultCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResultCard.vue?vue&type=style&index=0&id=3196c23f&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 \"3196c23f\",\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 { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VForm } from 'vuetify/lib/components/VForm';\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 { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VForm,VIcon,VList,VListItem,VListItemContent,VMenu,VSimpleTable,VSkeletonLoader,VSystemBar,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 moment from \"moment\";\nimport GraphCard from \"@/components/diagnosticsDetails/GraphCard.vue\";\nimport BenchmarkCard from \"@/components/diagnosticsDetails/BenchmarkCard.vue\";\nimport StatisticsCard from \"@/components/diagnosticsDetails/StatisticsCard.vue\";\nimport LimitsCard from \"@/components/diagnosticsDetails/LimitsCard.vue\";\nimport ResultCard from \"@/components/diagnosticsDetails/ResultCard.vue\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport LongTrendExportClient from \"@/Scripts/clients/long-trend-export-client\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\n@Component({\n components: {\n GraphCard,\n BenchmarkCard,\n StatisticsCard,\n LimitsCard,\n ResultCard,\n },\n})\nexport default class DiagnosticsDetails extends Vue {\n dialog = false;\n loading = true;\n periodMeta!: LongTrendPeriodMeta;\n customBenchmarkPeriod = false;\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n get longTrendPeriod(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get title(): string | undefined {\n return this.meta?.description;\n }\n get hasNextPeriod(): boolean | undefined {\n return this.meta?.hasNextPeriod;\n }\n get hasPreviousPeriod(): boolean | undefined {\n return this.meta?.hasPreviousPeriod;\n }\n get nextPeriodStart(): string | undefined {\n return new Date(moment.utc(this.meta?.nextPeriodStartDate).valueOf()).toISOString();\n }\n get nextPeriodEnd(): string | undefined {\n return new Date(moment.utc(this.meta?.nextPeriodEndDate).valueOf()).toISOString();\n }\n get prevPeriodStart(): string | undefined {\n return new Date(moment.utc(this.meta?.previousPeriodStartDate).valueOf()).toISOString();\n }\n get prevPeriodEnd(): string | undefined {\n return new Date(moment.utc(this.meta?.previousPeriodEndDate).valueOf()).toISOString();\n }\n get benchmarkPeriod(): number | undefined {\n return this.longTrendPeriod?.benchmarkPeriod;\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.nextPeriodStart && this.nextPeriodEnd) {\n this.periodMeta.startDate = this.nextPeriodStart;\n this.periodMeta.endDate = this.nextPeriodEnd;\n }\n this.updateData();\n }\n\n previousPeriod(): void {\n if (this.prevPeriodStart && this.prevPeriodEnd) {\n this.periodMeta.startDate = this.prevPeriodStart;\n this.periodMeta.endDate = this.prevPeriodEnd;\n }\n this.updateData();\n }\n\n open(data: LongTrendPeriodMeta): void {\n this.periodMeta = data;\n this.dialog = true;\n this.updateData();\n }\n\n async updateData(): Promise {\n this.customBenchmarkPeriod = false;\n this.loading = true;\n try {\n await Promise.all([\n LongTrendPeriod.updateMeta(this.periodMeta),\n LongTrendPeriod.updateLongTrendPeriod(this.periodMeta),\n LongTrendPeriod.updateStatistics(this.periodMeta),\n LongTrendPeriod.updateTrendLimits(this.periodMeta.vesselId),\n ]);\n } catch (error) {\n this.close();\n Snackbar.showSnackbar({ text: \"Could not load trend period details\" });\n } finally {\n this.loading = false;\n }\n }\n\n async customPeriod(points: number): Promise {\n const clonedMeta = Object.assign({}, this.periodMeta);\n const customPeriod = {\n customBenchmarkPeriod: points,\n };\n const data = Object.assign(clonedMeta, customPeriod);\n this.loading = true;\n await LongTrendPeriod.updateLongTrendPeriod(data);\n if (points !== -1) {\n this.customBenchmarkPeriod = true;\n } else {\n this.customBenchmarkPeriod = false;\n }\n this.loading = false;\n }\n\n close(): void {\n this.dialog = false;\n LongTrendPeriod.DELETE_DATA();\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!./DiagnosticsDetails.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!./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticsDetails.vue?vue&type=template&id=f1416762&scoped=true&\"\nimport script from \"./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DiagnosticsDetails.vue?vue&type=style&index=0&id=f1416762&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 \"f1416762\",\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 { VAlert } from 'vuetify/lib/components/VAlert';\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, {VAlert,VBtn,VCard,VCardText,VCol,VDialog,VDivider,VIcon,VRow,VSpacer,VToolbar,VToolbarTitle})\n","import net from \"App/net\";\r\n\r\nvar LongTrendExportClient = function () {\r\n\r\n};\r\n\r\nLongTrendExportClient.prototype.exportExcel = function(vesselId) {\r\n var filter = {\r\n vesselId: vesselId,\r\n };\r\n return net.fileDownload(\"/LongTrend/Excel\", \"GET\", filter);\r\n};\r\n\r\nLongTrendExportClient.prototype.exportExcelPeriod = function(vesselId, longTrendId, startDate, endDate) {\r\n var filter = {\r\n vesselId: vesselId,\r\n longTrendId: longTrendId,\r\n startDate: startDate,\r\n endDate: endDate,\r\n };\r\n\r\n return net.fileDownload(\"/LongTrend/Excel\", \"GET\", filter);\r\n};\r\n\r\nexport default new LongTrendExportClient();\r\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!./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"","//Not complete. More options can be added from Highcharts API as needed.\r\nexport interface IPlotLine {\r\n value: number,\r\n color: string,\r\n width: number,\r\n zIndex?: number,\r\n id: string,\r\n label: {\r\n rotation: number,\r\n style: {\r\n color: string,\r\n },\r\n text: string,\r\n useHTML: boolean,\r\n y: number,\r\n x: number,\r\n },\r\n}\r\n\r\nexport const DefaultVesselEventPlotline: IPlotLine = {\r\n value: 0,\r\n color: \"#000000\",\r\n width: 2,\r\n id: \"plotline\",\r\n zIndex: 5,\r\n label: {\r\n rotation: 0,\r\n style: {\r\n color: \"#000000\",\r\n },\r\n text: \"\",\r\n useHTML: true,\r\n y: -10,\r\n x: -10,\r\n },\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-text d-flex justify-center\"},[_c('div',[_vm._v(\"L\")]),_c('div',[_vm._v(\"O\")]),_c('div',[_vm._v(\"A\")]),_c('div',[_vm._v(\"D\")]),_c('div',[_vm._v(\"I\")]),_c('div',[_vm._v(\"N\")]),_c('div',[_vm._v(\"G\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingTextWave.vue?vue&type=template&id=10fd63c9&scoped=true&\"\nimport script from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"\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 \"10fd63c9\",\n null\n \n)\n\nexport default component.exports","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!./EditVesselEvent.vue?vue&type=style&index=0&id=7c0ef87a&lang=scss&scoped=true&\"","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(_vm._s(_vm.title))]),(_vm.isNewEvent)?_c('span',{staticClass:\"sub-headline mt-2\"},[_vm._v(\"This event will not be displayed on the onboard software\")]):_vm._e()]),_c('v-form',{staticClass:\"mt-2\",attrs:{\"disabled\":_vm.submitting,\"id\":\"edit-event-form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit.apply(null, arguments)}},model:{value:(_vm.isFormValid),callback:function ($$v) {_vm.isFormValid=$$v},expression:\"isFormValid\"}},[_c('v-card-text',[(_vm.isNewEvent)?_c('v-radio-group',{attrs:{\"mandatory\":\"\",\"row\":\"\"},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}},[_c('v-radio',{attrs:{\"value\":\"InfoEvent\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"#0060fe\"}},[_vm._v(\"mdi-alpha-i-circle\")]),_vm._v(\" Info event \")],1)]},proxy:true}],null,false,3373602734)}),_c('v-radio',{attrs:{\"value\":\"TrendEvent\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"#008000\"}},[_vm._v(\"mdi-alpha-t-circle\")]),_vm._v(\" Trend event \")],1)]},proxy:true}],null,false,3780787737)})],1):_vm._e(),(_vm.type === 'InfoEvent')?_c('v-text-field',{staticClass:\"mb-2\",attrs:{\"label\":\"Event name\",\"prepend-icon\":\"mdi-pencil\",\"rules\":[_vm.nameValidation.required],\"type\":\"text\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_c('v-select',{ref:\"typeSelect\",attrs:{\"rules\":[_vm.typeSelectValidation.required],\"value\":\"trendEventTypeName\",\"label\":\"Trend event type\",\"return-object\":\"\",\"prepend-icon\":\"mdi-format-list-bulleted-type\",\"items\":_vm.trendEventTypes,\"item-text\":\"trendEventTypeName\",\"item-value\":\"trendEventTypeId\"},on:{\"change\":_vm.selectTrendEventType},model:{value:(_vm.selectedType),callback:function ($$v) {_vm.selectedType=$$v},expression:\"selectedType\"}}),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({attrs:{\"rules\":[_vm.dateValidation.required],\"label\":\"Event date\",\"prepend-icon\":\"mdi-calendar\",\"readonly\":\"\"},model:{value:(_vm.timeStamp),callback:function ($$v) {_vm.timeStamp=$$v},expression:\"timeStamp\"}},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.dateMenu),callback:function ($$v) {_vm.dateMenu=$$v},expression:\"dateMenu\"}},[_c('v-date-picker',{on:{\"input\":function($event){_vm.dateMenu = false}},model:{value:(_vm.timeStamp),callback:function ($$v) {_vm.timeStamp=$$v},expression:\"timeStamp\"}})],1)],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\",\"form\":\"edit-event-form\",\"elevation\":\"0\",\"loading\":_vm.submitting,\"disabled\":!_vm.isFormValid}},[_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)],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\nimport { Component, Watch, PropSync, Ref, Vue } from \"vue-property-decorator\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { TrendEventType } from \"@/types/trendEventType\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component\nexport default class EditVesselEvent extends Vue {\n @Ref(\"typeSelect\") typeSelect!: any;\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n resolve!: any;\n reject!: any;\n isNewEvent = true;\n isFormValid = true;\n submitting = false;\n dateMenu = false;\n selectedType: any = {};\n\n id?: number;\n name = \"\";\n source = \"Office\";\n timeStamp = \"\";\n type = \"\";\n typeId: number | null = null;\n vesselId = Vessels.currentVessel?.id;\n\n nameValidation = {\n required: (value: string) => !!value || \"Event name required\",\n };\n\n dateValidation = {\n required: (value: string) => !!value || \"Event date required\",\n };\n\n typeSelectValidation = {\n required: (value: TrendEventType) => (!!value && !!value.trendEventTypeId) || \"Type required\",\n };\n\n get title(): string {\n if (this.isNewEvent) {\n return \"Create event\";\n } else {\n return \"Edit event\";\n }\n }\n\n get trendEventTypes(): TrendEventType[] | null {\n return VesselEvents.trendEventTypes;\n }\n\n //reset the inputs when switching between type in case of new event\n @Watch(\"type\")\n typeChanged(val: string): void {\n if (!this.isNewEvent) return;\n if (val && val === \"InfoEvent\") {\n this.typeId = null;\n this.name = \"\";\n } else if (val && val === \"TrendEvent\") {\n this.$nextTick(() => {\n this.typeSelect.reset();\n });\n }\n }\n\n selectTrendEventType(trendEventType: TrendEventType): void {\n this.typeId = trendEventType.trendEventTypeId;\n this.name = trendEventType.trendEventTypeName;\n }\n\n open(vesselEvent?: VesselEvent): Promise {\n this.dialog = true;\n if (vesselEvent) {\n this.setFieldData(vesselEvent);\n }\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n async handleSubmit(): Promise {\n const payload: VesselEvent = {\n name: this.name,\n source: this.source,\n timestamp: this.timeStamp,\n type: this.type,\n vesselId: this.vesselId,\n };\n\n if (this.id) {\n payload.id = this.id;\n }\n\n if (this.typeId) {\n payload.typeId = this.typeId;\n }\n\n this.submitting = true;\n if (this.isNewEvent) {\n await VesselEvents.createEvent(payload);\n } else {\n await VesselEvents.editEvent(payload);\n }\n\n this.submitting = false;\n this.confirm();\n }\n\n confirm(): void {\n this.dialog = false;\n this.resetFieldData();\n this.resolve(true);\n }\n\n cancel(): void {\n this.dialog = false;\n this.resolve(null);\n setTimeout(() => {\n this.resetFieldData();\n }, 500);\n }\n\n resetFieldData(): void {\n this.isNewEvent = true;\n this.isFormValid = true;\n this.dateMenu = false;\n this.selectedType = {};\n this.id = 0;\n this.name = \"\";\n this.source = \"Office\";\n this.timeStamp = \"\";\n this.type = \"\";\n this.typeId = null;\n this.vesselId = Vessels.currentVessel?.id;\n this.selectedType = {};\n }\n\n setFieldData(vesselEvent: VesselEvent): void {\n this.isNewEvent = false;\n this.id = vesselEvent.id;\n this.name = vesselEvent.name;\n this.source = vesselEvent.source;\n //incoming format \"2020-03-16T00:00:00\" is not compatible with datepicker\n this.timeStamp = vesselEvent.timestamp.split(\"T\")[0];\n this.type = vesselEvent.type;\n this.vesselId = vesselEvent.vesselId;\n\n if (vesselEvent.typeId) {\n this.typeId = vesselEvent.typeId;\n this.selectedType = {\n trendEventTypeId: vesselEvent.typeId,\n trendEventTypeName: vesselEvent.name,\n };\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!./EditVesselEvent.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!./EditVesselEvent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditVesselEvent.vue?vue&type=template&id=7c0ef87a&scoped=true&\"\nimport script from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EditVesselEvent.vue?vue&type=style&index=0&id=7c0ef87a&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 \"7c0ef87a\",\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 { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\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,VDatePicker,VDialog,VForm,VIcon,VMenu,VRadio,VRadioGroup,VSelect,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('v-card',{staticClass:\"card\"},[_c('v-card-title',{staticClass:\"text-h6\"},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":_vm.statusIcon.color}},[_vm._v(_vm._s(_vm.statusIcon.name))]),_c('span',{staticClass:\"d-flex align-center diagnostic__title--text\"},[_vm._v(_vm._s(_vm.longTrend.descriptionLong))]),_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\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,false,1171182639)},[_c('span',[_vm._v(_vm._s(_vm.tooltipText))])])],1),(_vm.isLongTrendsLoading || _vm.showError)?_c('v-card-text',{staticClass:\"pa-8\"},[_c('v-sheet',{staticClass:\"d-flex justify-center align-center mx-auto\",attrs:{\"rounded\":\"\",\"outlined\":\"\",\"max-width\":\"70%\",\"height\":\"150\"}},[(_vm.isLongTrendsLoading)?_c('LoadingTextWave'):[_vm._v(\" Unable to load graph data \")]],2)],1):_c('v-card-text',[(_vm.showError)?_c('v-sheet',{staticClass:\"d-flex justify-center align-center pa-8 mb-8\",attrs:{\"rounded\":\"\",\"outlined\":\"\",\"elevation\":\"3\"}},[_vm._v(\" Unable to load graph data\"),_c('v-icon',{attrs:{\"left\":\"\",\"color\":_vm.performanceStatusColor}},[_vm._v(_vm._s(_vm.performanceStatusIcon))])],1):_c('div',{staticClass:\"mb-3 overflow-visible\"},[_c('Highcharts',{ref:\"chart\",staticClass:\"overflow-visible\",attrs:{\"options\":_vm.chartOptions,\"deepCopyOnUpdate\":true,\"width\":\"100%\"}})],1),_c('div',{staticClass:\"d-flex flex-row diagnostic__benefit-and-benchmark\"},[_c('v-expansion-panels',{staticClass:\"mb-auto\"},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"text-overline white--text\",attrs:{\"color\":\"primary\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}],null,false,621141048)},[_vm._v(\" Benefit resulting from trend event \")]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[(_vm.noTrendEvents)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" [ Minimum one trend event required to calculate benefit. ] \")]):_c('TrendEventBenefit',{attrs:{\"longTrend\":_vm.longTrend}})],1)],1)],1),_c('v-expansion-panels',{staticClass:\"mb-auto\"},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"text-overline white--text\",attrs:{\"color\":\"primary\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}],null,false,621141048)},[_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:\"mb-1 flex-grow-0\",attrs:{\"color\":\"#4D86AF\",\"left\":\"\"}},on),[_vm._v(_vm._s(_vm.benchmarkType.icon))])]}}],null,false,404548764)},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(_vm._s(_vm.benchmarkType.tooltip))])]),_c('span',[_vm._v(\" Benchmark level settings \")])],1),_c('v-expansion-panel-content',[_c('v-checkbox',{attrs:{\"label\":\"Use manual benchmark level\"},model:{value:(_vm.useManualBenchmarkLevel),callback:function ($$v) {_vm.useManualBenchmarkLevel=$$v},expression:\"useManualBenchmarkLevel\"}}),_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.manualBenchmarkLevel),callback:function ($$v) {_vm.manualBenchmarkLevel=_vm._n($$v)},expression:\"manualBenchmarkLevel\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"loading\":_vm.isBenchmarkLevelSettingsLoading,\"disabled\":_vm.disableSaveBenchmarkLevelSettings},on:{\"click\":_vm.updateBenchmarkLevelSettings}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" Save \")],1)],1)],1)],1)],1)],1)],1)],1):_vm._e()}\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-select',{attrs:{\"items\":_vm.trendEvents,\"item-value\":\"id\",\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":_vm.fetchBenefitData},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}},{key:\"item\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}}]),model:{value:(_vm.selectedTrendEvent),callback:function ($$v) {_vm.selectedTrendEvent=$$v},expression:\"selectedTrendEvent\"}}),(_vm.isBenefitLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}}):[(_vm.loadBenefitError)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" \"+_vm._s(_vm.errorText)+\" \")]):[_c('section',[_c('p',[_vm._v(\" Previous trend period ended on \"),_c('strong',[_vm._v(_vm._s(_vm.formatDateForDisplay(_vm.benefitData.benefitDate)))]),_vm._v(\" with a value \"),_c('strong',[_vm._v(_vm._s(_vm.benefitData.prevEndValue.toFixed(2))+\"%\")]),_vm._v(\" from baseline. The Benchmark level for the following trend period is \"),_c('strong',[_vm._v(_vm._s(_vm.benefitData.nextBenchmarkValue.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.benefitData.draft.toFixed(1))+\"m\")]),_vm._v(\" the following benefit was achieved: \")])]),_c('section',[(!_vm.hasConsequenceResults)?_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('v-data-table',{staticClass:\"mb-4\",attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableItems,\"dense\":\"\",\"no-data-text\":\"No data\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\",\"fixed-header\":\"\"}}),_c('em',{staticClass:\"grey--text\"},[_vm._v(_vm._s(_vm.benefitText))])]],2)]]],2)}\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\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\nimport { getModule } from \"vuex-module-decorators\";\nimport diagnosticTypesHelper from \"Utilities/diagnostic-types-helper\";\nimport { ITrendBenefit } from \"@/types/trendBenefit\";\nimport { ILongTrend } from \"@/types/longTrend\";\nimport BenefitsModule from \"@/store/clients/Benefits.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\n\nconst TrendEventBenefits = getModule(BenefitsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n@Component({})\nexport default class TrendEventBenefit extends Vue {\n @Prop() readonly longTrend!: ILongTrend;\n\n benefitData: ITrendBenefit | null = null;\n isBenefitLoading = true;\n selectedTrendEvent: any = {};\n loadBenefitError: string | boolean = false;\n\n @Watch(\"trendEvents\")\n trendEventsChanged(): void {\n this.selectedTrendEvent = this.trendEvents[0];\n }\n\n @Watch(\"longTrend\")\n longtrendchanged(): void {\n this.fetchBenefitData();\n }\n\n async created(): Promise {\n this.selectedTrendEvent = this.trendEvents[0];\n await this.fetchBenefitData();\n }\n\n async fetchBenefitData(): Promise {\n try {\n this.isBenefitLoading = true;\n this.benefitData = await TrendEventBenefits.fetchBenefit({ trendEventId: this.selectedTrendEvent.id, longTrendId: this.longTrend.id });\n this.loadBenefitError = false;\n } catch (error) {\n this.loadBenefitError = error as string;\n } finally {\n this.isBenefitLoading = false;\n }\n }\n\n get trendEvents(): VesselEvent[] {\n return VesselEvents.trendEvents;\n }\n\n get benefitText(): string {\n return diagnosticTypesHelper.getBenefitText(this.longTrend.diagnosticType);\n }\n\n get hasConsequenceResults(): boolean {\n return this.benefitData?.consequences?.length ? this.benefitData.consequences[0].results.length > 0 : false;\n }\n\n get tableHeaders(): any[] {\n const headers: any[] = [];\n\n if (!this.benefitData?.consequences[0].results.length) return headers;\n\n headers.push({ text: \"MCR\", value: \"MCR\" });\n\n this.benefitData?.consequences[0].results.forEach(result => {\n headers.push({ text: result.headerName, value: result.headerName });\n });\n\n return headers;\n }\n\n get tableItems(): any[] {\n const items: any[] = [];\n\n this.benefitData?.consequences.forEach(consequence => {\n const item: any = { MCR: consequence.mcrDisplay };\n\n consequence.results.forEach(result => {\n item[result.headerName] = result.displayValue;\n });\n items.push(item);\n });\n\n return items;\n }\n\n get errorText(): string {\n switch (this.loadBenefitError) {\n case \"Benchmarking\":\n return \"Could not calculate benefit. This might be because the trend period before or after selected trend event is benchmarking, or have no data.\";\n default:\n return \"Could not calculate benefit.\";\n }\n }\n\n formatDateForDisplay(date: any): string {\n return moment(date).format(\"DD.MMM YYYY\");\n } //use parent?\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!./TrendEventBenefit.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!./TrendEventBenefit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TrendEventBenefit.vue?vue&type=template&id=33420f22&\"\nimport script from \"./TrendEventBenefit.vue?vue&type=script&lang=ts&\"\nexport * from \"./TrendEventBenefit.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 { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VDataTable,VSelect,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 store from \"@/store\";\nimport moment from \"moment\";\nimport { Component, Prop, Vue, Ref, Watch } from \"vue-property-decorator\";\nimport DiagnosticTypesHelper from \"Utilities/diagnostic-types-helper\";\n//modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport LongTrendsModule from \"@/store/clients/LongTrends.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n//types\nimport { ILongTrend } from \"@/types/longTrend\";\nimport { Vessel } from \"@/types/Vessel\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { IPlotLine, DefaultVesselEventPlotline } from \"@/types/highcharts/plotLine\";\nimport { IPlotBand } from \"@/types/highcharts/plotBand\";\nimport { IDataSerie } from \"@/types/highcharts/dataSerie\";\n//components\nimport GraphCard from \"@/components/diagnosticsDetails/GraphCard.vue\";\nimport { Chart } from \"highcharts-vue\";\nimport HighchartsNoData from \"highcharts/modules/no-data-to-display\";\nimport Highcharts from \"highcharts\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\nimport TrendEventBenefit from \"@/components/diagnostics/TrendEventBenefit.vue\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\n\nHighchartsNoData(Highcharts);\n\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst LongTrends = getModule(LongTrendsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\ninterface StatusIcon {\n name: string;\n color: string;\n}\n\n@Component({\n components: {\n LoadingTextWave,\n GraphCard,\n Highcharts: Chart,\n TrendEventBenefit,\n },\n})\nexport default class DiagnosticCard extends Vue {\n @Prop() readonly longTrendName!: string;\n @Prop() readonly visible!: boolean;\n @Ref() readonly chart!: any;\n\n showError = false;\n\n useManualBenchmarkLevel = false;\n manualBenchmarkLevel = 0;\n\n isLongTrendsLoading = true;\n isBenchmarkLevelSettingsLoading = false;\n\n async created(): Promise {\n if (!this.vessel || !this.longTrend) {\n this.showError = true;\n this.isLongTrendsLoading = false;\n } else {\n try {\n await Promise.all([LongTrends.fetchVesselLongTrendPeriods({ vesselId: this.vessel.id, longTrend: this.longTrend })]);\n this.manualBenchmarkLevel = this.longTrend.manualBenchmarkLevel;\n this.useManualBenchmarkLevel = this.longTrend.useManualBenchmarkLevel;\n } catch (error) {\n this.showError = true;\n console.warn(error);\n } finally {\n this.isLongTrendsLoading = false;\n }\n }\n }\n\n @Watch(\"vesselEvents\")\n onVesselEventsChanged(): void {\n if (!this.vessel) return;\n\n LongTrends.fetchVesselLongTrendPeriods({ vesselId: this.vessel.id, longTrend: this.longTrend });\n }\n\n get longTrend(): ILongTrend {\n return LongTrends.vesselLongTrendByName(this.longTrendName).longTrend;\n }\n\n get longTrendPeriods(): ILongTrendPeriod[] {\n return this.longTrend ? LongTrends.vesselLongTrendByName(this.longTrendName).longTrendPeriods : [];\n }\n\n get vesselEvents(): VesselEvent[] {\n return VesselEvents.allEvents;\n }\n\n get firstLongTrendPeriod(): ILongTrendPeriod {\n return this.longTrendPeriods[0];\n }\n\n get tooltipText(): string {\n return DiagnosticTypesHelper.getHelpText(this.longTrend.diagnosticType);\n }\n\n get noTrendEvents(): any {\n return !VesselEvents.trendEvents?.length;\n }\n\n get vessel(): Vessel | null {\n return Vessels.currentVessel;\n }\n\n get statusIcon(): StatusIcon {\n switch (this.longTrend.performanceStatus) {\n case \"Ok\":\n return { name: \"mdi-check-circle\", color: \"success\" };\n case \"NotOk\":\n return { name: \"mdi-alert-circle\", color: \"error\" };\n case \"Observe\":\n return { name: \"mdi-alert-circle\", color: \"warning\" };\n case \"BenchMarking\":\n return { name: \"mdi-gauge\", color: \"info darken-4\" };\n default:\n return { name: \"mdi-minus-circle\", color: \"grey\" };\n }\n }\n\n get benchmarkType(): { tooltip: string; icon: string } {\n if (this.longTrend.useManualBenchmarkLevel) {\n return {\n tooltip: \"Using manual benchmark level: \" + this.longTrend.manualBenchmarkLevel + \"%\",\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 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 ${this.formatDateForDisplay(vesselEvent.timestamp)}\n

\n

${vesselEvent.name}

\n
\n `\n )\n .join(\"\")}\n
\n `;\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.longTrendPeriods.forEach(period => {\n plotBands.push({\n from: moment.utc(period.start).valueOf(),\n to: moment.utc(period.end).valueOf(),\n id: period.longTrendId,\n className: \"diagnotic-graph__plot-bands\",\n color: \"rgba(0,0,0,0.0)\",\n zIndex: 4,\n events: {\n click: () => {\n this.$emit(\"plotBandClicked\", this.getLongTrendPeriodMeta(period));\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 dataSeries(): IDataSerie[] {\n if (!this.longTrend) {\n this.showError = true;\n return [];\n } else {\n const series: IDataSerie[] = [];\n const longTrendData: [number, number][] = [];\n const benchmarkingData: any[] = [];\n\n this.longTrendPeriods.forEach(period => {\n //graph points for long trend data\n period.longTrendData.forEach(dataPoint => {\n longTrendData.push([new Date(this.formatDatetimeToUTC(dataPoint.x)).getTime(), dataPoint.y]);\n });\n\n //graph points for benchmark data\n if (!this.longTrend.useManualBenchmarkLevel && period.benchmarkPoint) {\n benchmarkingData.push(\n [new Date(this.formatDatetimeToUTC(period.benchmarkPoint.x)).getTime(), period.benchmarkPoint.y],\n [new Date(this.formatDatetimeToUTC(period.end)).getTime(), period.benchmarkPoint.y]\n );\n }\n\n if (period.trendline) {\n series.push({\n name: `Trendline (${this.formatDateForDisplay(period.trendline.start.x)})`,\n type: \"line\",\n color: \"#008000\",\n zIndex: 2,\n marker: {\n enabled: false,\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: [\n [new Date(this.formatDatetimeToUTC(period.trendline.start.x)).getTime(), period.trendline.start.y],\n [new Date(this.formatDatetimeToUTC(period.trendline.end.x)).getTime(), period.trendline.end.y],\n ],\n });\n }\n });\n\n series.push({\n name: \"Deviation from baseline\",\n type: \"line\",\n color: \"#800000\",\n zIndex: 1,\n enableMouseTracking: true,\n marker: {\n symbol: \"circle\",\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: longTrendData,\n });\n\n series.push({\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n zIndex: 4,\n visible: false,\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: this.longTrend.useManualBenchmarkLevel\n ? [\n [new Date(this.formatDatetimeToUTC(this.firstLongTrendPeriod.start)).getTime(), this.longTrend.manualBenchmarkLevel],\n [new Date().getTime(), this.longTrend.manualBenchmarkLevel],\n ]\n : benchmarkingData,\n });\n\n series.push({\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.firstLongTrendPeriod.start)).getTime(), 0],\n [new Date().getTime(), 0],\n ],\n });\n\n return series;\n }\n }\n\n get chartOptions(): any {\n if (!this.longTrendPeriods?.length) return {};\n\n const options = {\n time: {\n useUTC: false,\n },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n animation: false,\n height: 300,\n spacingTop: 40,\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 },\n min: this.firstLongTrendPeriod.isRpmDiagnostic ? -25 : -50,\n max: this.firstLongTrendPeriod.isRpmDiagnostic ? 25 : 50,\n tickPixelInterval: 20,\n },\n xAxis: {\n title: {\n text: null,\n },\n type: \"datetime\",\n plotLines: this.vesselEventPlotLines,\n plotBands: this.vesselEventPlotBands,\n labels: {\n y: 35,\n },\n },\n series: this.dataSeries,\n tooltip: {\n backgroundColor: \"rgba(0, 0, 0, .85)\",\n borderWidth: 2,\n style: {\n color: \"#EBEBEB\",\n },\n },\n plotOptions: {\n series: {\n zIndex: 1,\n },\n },\n exporting: {\n filename: `${this.vessel?.name}_${this.longTrend.descriptionLong}`,\n chartOptions: {\n legend: {\n enabled: false,\n },\n title: {\n text: `${this.vessel?.name} [${this.longTrend.descriptionLong}]`,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n };\n\n return options;\n }\n\n get disableSaveBenchmarkLevelSettings(): boolean {\n return (\n (!this.longTrend.useManualBenchmarkLevel === !this.useManualBenchmarkLevel && this.longTrend.manualBenchmarkLevel.toString() === this.manualBenchmarkLevel.toString()) ||\n this.manualBenchmarkLevel > 40 ||\n this.manualBenchmarkLevel < -40\n );\n }\n\n benchmarkLevelInputRules(value: any): boolean | string {\n if (!!!value) return \"Required\";\n else return (-40 <= value && value <= 40) || \"Benchmark level must be a number between -40 and 40.\";\n }\n\n resetManualBenchmarkLevel(): void {\n if (!!!this.manualBenchmarkLevel) {\n this.manualBenchmarkLevel = this.longTrend ? this.longTrend.manualBenchmarkLevel : 0;\n }\n }\n\n async updateBenchmarkLevelSettings(): Promise {\n this.isBenchmarkLevelSettingsLoading = true;\n const updatedLongTrend: ILongTrend = JSON.parse(JSON.stringify(this.longTrend));\n updatedLongTrend.useManualBenchmarkLevel = this.useManualBenchmarkLevel;\n updatedLongTrend.manualBenchmarkLevel = this.manualBenchmarkLevel;\n\n try {\n await LongTrends.updateVesselLongTrend({ vesselId: this.vessel!.id, longTrend: updatedLongTrend });\n await Vessels.updateCurrentVesselById(this.vessel!.id);\n Snackbar.showSnackbar({ text: \"Benchmark settings successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update benchmark settings\" });\n } finally {\n this.isBenchmarkLevelSettingsLoading = false;\n }\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 formatDateForDisplay(date: any): string {\n return moment.utc(date).format(\"DD.MMM YYYY\");\n }\n\n getLongTrendPeriodMeta(longTrendPeriod: ILongTrendPeriod): Partial {\n return {\n longTrendId: longTrendPeriod.longTrendId,\n vesselId: longTrendPeriod.vesselId,\n startDate: moment.utc(longTrendPeriod.start).toISOString(),\n endDate: moment.utc(longTrendPeriod.end).toISOString(),\n };\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\n }\n\n eventColor(eventType: string): string {\n return eventType === \"InfoEvent\" ? \"#0060fe\" : \"#008000\";\n }\n}\n","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!./DiagnosticCard.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!./DiagnosticCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticCard.vue?vue&type=template&id=a49ba308&scoped=true&\"\nimport script from \"./DiagnosticCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DiagnosticCard.vue?vue&type=style&index=0&id=a49ba308&scoped=true&lang=scss&\"\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 \"a49ba308\",\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 { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCheckbox,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSheet,VTextField,VTooltip})\n","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,\"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\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Chart } from \"highcharts-vue\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// types\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { GraphPoint } from \"@/types/graphPoint\";\nimport { TrendLine } from \"@/types/trendLine\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n//How it was made in old solution:\n//KspOfficeWeb.WebApplication\\Views\\Diagnostics\\DetailsGraph.cshtml\n//sendt data here for final assembly:\n//src\\Scripts\\misc\\chart.js\n\n//TODOS\n//tooltip on vesselevents in chart: graph is overflow hidden, so added marginTop to fit.\n//v-tooltip doesn't render, so i just made a simple css-only tooltip for now.\n//Issue: clips at the ends but maybe not a big deal, if you want tooltip to always be fully visible,\n//can use title attribute, but this can not be styled obviously\n\n@Component({\n components: {\n highcharts: Chart,\n },\n})\nexport default class GraphCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n chart!: any;\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.addEventLabels();\n const cmax = this.isRpm ? 25 : 50;\n const cmin = this.isRpm ? -25 : -50;\n this.chart.yAxis[0].setExtremes(cmin, cmax);\n }\n\n //just copying this from chart.js. Original comment:\n //Adds \"Z\" to datetime strings and, optionally, removes already existing\n //UTC/timezone difference suffix (like '+01:00')\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 addEventLabels(): void {\n this.infoEvents.forEach(event => {\n const html = `\n \n
\n

${this.formatDateForDisplay(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 longTrendPeriod(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n\n //it looks like we don't need to filter these to the graph range,\n //as only the ones inside the range of the graph are shown anyway\n get infoEvents(): any[] {\n return VesselEvents.infoEvents;\n }\n\n get longTrendData(): GraphPoint[] | undefined {\n return this.longTrendPeriod?.longTrendData;\n }\n\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriod?.isBenchmarking;\n }\n\n get isManualBenchmark(): boolean | undefined {\n return this.longTrendPeriod?.isManualBenchmark;\n }\n\n get benchmarkPoint(): GraphPoint | undefined {\n return this.longTrendPeriod?.benchmarkPoint;\n }\n\n get benchmarkingZone(): any {\n const benchmarkZone: any = {\n from: null,\n to: null,\n };\n if (!this.isBenchmarking && !this.isManualBenchmark) {\n benchmarkZone.from = new Date(this.formatDatetimeToUTC(this.longTrendPeriod?.longTrendData[0].x)).getTime();\n benchmarkZone.to = new Date(this.formatDatetimeToUTC(this.benchmarkPoint?.x)).getTime();\n }\n return benchmarkZone;\n }\n\n get isRpm(): boolean | undefined {\n return this.longTrendPeriod?.isRpmDiagnostic;\n }\n\n get redOffset(): number | undefined {\n return this.longTrendPeriod?.redOffset;\n }\n\n get yellowOffset(): number | undefined {\n return this.longTrendPeriod?.yellowOffset;\n }\n\n get yellowLine(): GraphPoint | undefined {\n return this.longTrendPeriod?.yellowLine;\n }\n\n get redLine(): GraphPoint | undefined {\n return this.longTrendPeriod?.redLine;\n }\n\n get startDate(): string | undefined {\n return this.longTrendPeriod?.start;\n }\n\n get endDate(): string | undefined {\n return this.longTrendPeriod?.end;\n }\n\n get trendline(): TrendLine | undefined {\n return this.longTrendPeriod?.trendline;\n }\n\n get trialPoints(): GraphPoint[] | undefined {\n return this.longTrendPeriod?.trialPoints;\n }\n\n get exportName(): string | undefined {\n if (this.meta) {\n return `${this.meta.vesselName} _ ${this.meta.description}`;\n }\n return;\n }\n\n get exportTitle(): string | undefined {\n if (this.meta) {\n return `${this.meta.vesselName} - ${this.meta.description}`;\n }\n return;\n }\n\n get chartOptions(): unknown {\n if (!this.longTrendPeriod || !this.meta) return {};\n\n return {\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 ],\n events: {\n setExtremes: (e: any) => {\n var cmax = this.isRpm ? 25 : 50;\n var cmin = this.isRpm ? -25 : -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: this.yAxisLabel,\n },\n gridLineColor: \"#aaaaaa\",\n tickPixelInterval: 20,\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.exportName,\n chartOptions: {\n title: {\n text: this.exportTitle,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n series: this.series,\n };\n }\n\n get yAxisLabel(): string {\n return `${this.longTrendPeriod?.unitName} (${this.longTrendPeriod?.unitCaption})`;\n }\n\n get plotBands(): any {\n if (this.isBenchmarking) return [];\n\n const plotBands: any = [];\n if (this.redOffset && this.yellowOffset && this.redOffset < this.yellowOffset) {\n plotBands.push({\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: this.yellowLine?.y,\n to: 100,\n });\n plotBands.push({\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.redLine?.y,\n to: this.yellowLine?.y,\n });\n plotBands.push({\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: -100,\n to: this.redLine?.y,\n });\n } else {\n // Red at the top, green at the bottom\n plotBands.push({\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: this.redLine?.y,\n to: 100,\n });\n plotBands.push({\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.yellowLine?.y,\n to: this.redLine?.y,\n });\n plotBands.push({\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: -100,\n to: this.yellowLine?.y,\n });\n }\n return plotBands;\n }\n\n get plotLines(): any {\n if (this.isBenchmarking) return [];\n\n const plotLines: any = [];\n if (this.redOffset && this.yellowOffset && this.redOffset < this.yellowOffset) {\n plotLines.push({\n id: \"red-yellow-line\",\n value: this.redLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n plotLines.push({\n id: \"yellow-green-line\",\n value: this.yellowLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n } else {\n plotLines.push({\n id: \"red-yellow-line\",\n value: this.yellowLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n plotLines.push({\n id: \"yellow-green-line\",\n value: this.redLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n }\n return plotLines;\n }\n\n get series(): any {\n const series: any = [];\n if (!this.isBenchmarking) {\n series.push({\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.startDate)).getTime(), 0],\n [new Date(this.formatDatetimeToUTC(this.endDate)).getTime(), 0],\n ],\n });\n\n series.push({\n name: \"Trendline\",\n type: \"line\",\n lineWidth: 3,\n color: \"#008000\",\n zIndex: 3,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.trendline?.start.x)).getTime(), this.trendline?.start.y],\n [new Date(this.formatDatetimeToUTC(this.trendline?.end.x)).getTime(), this.trendline?.end.y],\n ],\n });\n\n series.push({\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n zIndex: 2,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.benchmarkPoint?.x)).getTime(), this.benchmarkPoint?.y],\n [new Date(this.formatDatetimeToUTC(this.endDate)).getTime(), this.benchmarkPoint?.y],\n ],\n });\n }\n\n const longTrendData = [];\n if (this.longTrendData) {\n for (var j = 0; j < this.longTrendData.length; j++) {\n longTrendData.push([new Date(this.formatDatetimeToUTC(this.longTrendData[j].x)).getTime(), this.longTrendData[j].y]);\n }\n }\n series.push({\n name: \"Long trend\",\n type: \"scatter\",\n enableMouseTracking: true,\n data: longTrendData,\n });\n\n if (this.trialPoints && this.trialPoints.length > 0) {\n const trialPoints = [];\n for (var j = 0; j < this.trialPoints.length; j++) {\n trialPoints.push([new Date(this.formatDatetimeToUTC(this.trialPoints[j].x)).getTime(), this.trialPoints[j].y]);\n }\n\n series.push({\n name: \"Trials\",\n type: \"scatter\",\n color: \"#0000FF\",\n enableMouseTracking: true,\n zIndex: 1,\n marker: {\n enabled: true,\n symbol: \"diamond\",\n radius: 3,\n fillColor: \"#8989ff\",\n },\n data: trialPoints,\n });\n }\n return series;\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 formatDateForDisplay(date: any): string {\n return moment(date).format(\"DD.MMM YYYY\");\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\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=6d8a5ff8&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=6d8a5ff8&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 \"6d8a5ff8\",\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"],"sourceRoot":""}