{"version":3,"sources":["webpack:///./src/components/EmmisionsCompliance/RegulationCard.vue?594f","webpack:///../../../src/components/VTextField/index.ts","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/DataCell.vue?a0db","webpack:///../../../src/components/VSkeletonLoader/VSkeletonLoader.ts","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/index.vue?e91d","webpack:///./src/components/FeatureNotAvailable.vue?3b30","webpack:///./src/components/FeatureNotAvailable.vue","webpack:///./src/components/FeatureNotAvailable.vue?2435","webpack:///./src/components/FeatureNotAvailable.vue?5d99","webpack:///./src/views/vessel/EmissionsCompliance.vue?7e29","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/index.vue?0902","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/DataCell.vue?10f8","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/DataCell.vue","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/DataCell.vue?f230","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/DataCell.vue?228a","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/index.vue","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/index.vue?e981","webpack:///./src/components/EmmisionsCompliance/VoyageSummaryTable/index.vue?7efd","webpack:///./src/components/EmmisionsCompliance/RegulationCard.vue?ccd7","webpack:///./src/components/EmmisionsCompliance/RegulationCard.vue","webpack:///./src/components/EmmisionsCompliance/RegulationCard.vue?8d03","webpack:///./src/components/EmmisionsCompliance/RegulationCard.vue?2323","webpack:///./src/views/vessel/EmissionsCompliance.vue","webpack:///./src/views/vessel/EmissionsCompliance.vue?cd26","webpack:///../../../src/components/VFileInput/VFileInput.ts","webpack:///./src/views/vessel/EmissionsCompliance.vue?ed09","webpack:///./src/views/vessel/EmissionsCompliance.vue?a9c7"],"names":["VTextField","mixins","Elevatable","Measurable","Themeable","extend","name","props","boilerplate","Boolean","loading","tile","transition","String","type","types","Object","default","computed","attrs","this","isLoading","role","$attrs","classes","themeClasses","elevationClasses","$scopedSlots","rootTypes","actions","article","avatar","button","card","chip","heading","image","paragraph","sentences","table","text","methods","genBone","children","$createElement","staticClass","genBones","bone","split","length","generator","genStructure","Array","from","map","indexOf","mapBones","push","genSkeleton","getSlot","on","afterEnter","resetStyles","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","leaveCancelled","bones","replace","el","_initialStyle","display","style","setProperty","render","h","$listeners","class","measurableStyles","undefined","_vm","_h","_c","_self","_v","_t","_s","$route","meta","subTitle","vesselName","_m","staticRenderFns","Vessels","getModule","VesselsModule","store","FeatureNotAvailable","vessel","currentVessel","$slots","Vue","Component","component","years","top","offsetY","model","value","callback","$$v","currentYear","expression","loadingEmissionSummaryState","emissionSummary","uploadFiles","files","uploadingFiles","_e","headers","rows","requiredGhgIntensity","loadingState","downloadReport","slot","sortedRows","pageLimit","isLessThanLimit","scopedSlots","_u","key","fn","ref","_l","header","headerClasses","headerStyles","$event","sort","domProps","tooltip","_g","_b","sortBy","sortDesc","subtitle","item","index","cellData","skeletonStructure","proxy","data","align","splitStringByComma","staticStyle","stringifyDate","isValueHighlighted","isNormalValue","DataCell","isActualGhcIntensity","Number","isDqIssues","column","$emit","string","trim","date","moment","utc","format","__decorate","Prop","components","VBtn","VIcon","VoyageSummaryTable","slice","a","b","sortA","sortB","row","columnName","rowIndex","filename","datatag","variable","sortable","width","VDataTable","VSkeletonLoader","VTooltip","title","dataType","unit","RegulationCard","options","totalEmittedCo2","toFixed","totalEmittedN2O","totalEmittedCh4","totalEuas","avgGhgIntensity","totalComplianceBalance","totalPenalty","VDivider","Snackbar","SnackbarModule","Emissions","EmissionsComplianceModule","User","UserModule","EmissionsCompliance","isSuperOrAdmin","features","some","feature","voyageList","voyageId","ports","portOfDeparture","portOfArrival","departure","arrival","condition","voyageType","voyageTimeframe","departureTime","arrivalTime","distanceTravelled","actualGhcIntensity","euAs","complianceBalance","penalty","dqIssues","report","fetchVoyageList","id","fetchEmissionSummary","showSnackbar","vesselId","formData","FormData","file","append","toString","response","displaySnackbarMessages","fetchData","skippedFiles","color","join","timeout","setTimeout","prop","event","chips","clearable","counterSizeString","counterString","hideInput","multiple","placeholder","prependIcon","readonly","showSize","validator","v","includes","smallChips","truncateLength","val","wrapInArray","every","call","computedCounterValue","fileCount","lazyValue","File","$vuetify","lang","t","bytes","internalArrayValue","reduce","size","humanReadableFileSize","base","internalValue","get","set","isDirty","isLabelActive","persistentPlaceholder","isFocused","hasLabel","truncatedText","truncateText","hasChips","watch","handler","consoleError","immediate","deepEqual","$refs","input","clearableCallback","genChips","VChip","small","splice","genControl","mergeStyles","genInput","change","onInput","genSelections","genPrependSlot","icon","genIcon","click","genSlot","genSelectionText","counter","selection","forEach","genTextFieldSlot","node","e","target","initialValue","onKeyDown","str","charsKeepOneSide","Math","floor","VCol","VFileInput","VProgressLinear","VRow","VSelect","VSpacer"],"mappings":"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","file":"js/chunk-6a8f30a4.0180707f.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!./RegulationCard.vue?vue&type=style&index=0&id=2d3f316c&lang=scss&scoped=true&\"","import VTextField from './VTextField'\n\nexport { VTextField }\nexport default VTextField\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!./DataCell.vue?vue&type=style&index=0&id=2a0786a3&lang=scss&scoped=true&\"","// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\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!./index.vue?vue&type=style&index=0&id=acdd202c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert alert-info\"},[_c('h1',[_vm._v(\"Feature not available\")]),(_vm.hasSlotData)?_vm._t(\"text\"):_c('div',[_c('p',[_vm._v(\" We are sorry, the \"),_c('strong',[_vm._v(_vm._s(_vm.$route.meta.subTitle))]),_vm._v(\" module is not activated for \"),_c('span',[_vm._v(_vm._s(_vm.vesselName))]),_vm._v(\".\"),_c('br'),_vm._v(\" This module is available as part of the \"),_c('b',[_vm._v(\"«Danelec Fleet Insights Plus»\")]),_vm._v(\" subscription.\"),_c('br'),_vm._v(\" More information is available at \"),_c('a',{attrs:{\"href\":\"https://www.danelec.com/products/ship-performance-monitoring/\",\"target\":\"_blank\"}},[_vm._v(\"www.danelec.com\")]),_vm._v(\". \")]),_vm._m(0)])],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"mb-0\"},[_vm._v(\"Please contact \"),_c('a',{attrs:{\"href\":\"mailto:sales@danelec.com\"}},[_vm._v(\"sales@danelec.com\")]),_vm._v(\" for a quotation to activate a subscription.\")])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Vessels = getModule(VesselsModule, store);\n\n@Component\nexport default class FeatureNotAvailable extends Vue {\n vessel = Vessels.currentVessel;\n get vesselName(): string | boolean {\n if (!this.vessel) return false;\n return this.vessel.name;\n }\n\n get hasSlotData(): boolean {\n return Boolean(this.$slots.text);\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!./FeatureNotAvailable.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!./FeatureNotAvailable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FeatureNotAvailable.vue?vue&type=template&id=37c9e46a&scoped=true&\"\nimport script from \"./FeatureNotAvailable.vue?vue&type=script&lang=ts&\"\nexport * from \"./FeatureNotAvailable.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 \"37c9e46a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isEmissionComplianceFeatureEnabled)?_c('div',{staticClass:\"emissions-compliance pa-2\"},[_c('div',{staticClass:\"compliance-summary\"},[_c('p',{staticClass:\"emissions-compliance__title mb-1\"},[_vm._v(\"Compliance Summary\")]),_c('p',{staticClass:\"emissions-compliance__subtitle mb-4\"},[_vm._v(\"YTD compliance summary for your vessel under EU regulations\")]),_c('v-select',{staticClass:\"year-select\",attrs:{\"items\":_vm.years,\"menu-props\":{ top: false, offsetY: true },\"item-text\":\"text\",\"hide-details\":\"auto\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.currentYear),callback:function ($$v) {_vm.currentYear=$$v},expression:\"currentYear\"}}),_c('div',{staticClass:\"topline compliance-summary d-flex align-center mb-10\"},[_c('v-row',[_c('v-col',{staticClass:\"pr-2\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('RegulationCard',{attrs:{\"title\":\"EU MRV\",\"type\":\"mrv\",\"loading\":_vm.loadingEmissionSummaryState,\"options\":_vm.emissionSummary}})],1),_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"12\",\"md\":\"1\"}},[_c('RegulationCard',{attrs:{\"title\":\"EU ETS\",\"type\":\"ets\",\"loading\":_vm.loadingEmissionSummaryState,\"options\":_vm.emissionSummary}})],1),_c('v-col',{staticClass:\"pl-2\",attrs:{\"cols\":\"12\",\"md\":\"7\"}},[_c('RegulationCard',{attrs:{\"title\":\"FuelEU\",\"type\":\"fuel\",\"loading\":_vm.loadingEmissionSummaryState,\"options\":_vm.emissionSummary}})],1)],1)],1)],1),_c('div',{staticClass:\"voyage-summary\"},[_c('div',{staticClass:\"topline d-flex align-end pb-4\"},[_vm._m(0),_c('v-spacer'),(_vm.isSuperOrAdmin)?_c('div',{staticClass:\"file-upload ml-auto text-center\"},[_c('v-file-input',{staticClass:\"file-input\",attrs:{\"label\":\"File input\",\"multiple\":\"\"},on:{\"change\":_vm.uploadFiles},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}}),(!_vm.uploadingFiles)?_c('v-btn',{staticClass:\"fake-upload-btn primary--text\",attrs:{\"color\":\"lightGrey100\",\"elevation\":\"0\",\"large\":\"\"}},[_vm._v(\" Upload Voyage(-s) \")]):_vm._e(),(_vm.uploadingFiles)?_c('div',{staticClass:\"file-loader\"},[_c('v-progress-linear',{staticClass:\"loading-progress mt-3 mb-1\",attrs:{\"color\":\"primary primaryLighten80\",\"indeterminate\":\"\",\"rounded\":\"\",\"height\":\"6\"}}),_vm._v(\" Uploading... \")],1):_vm._e()],1):_vm._e()],1)]),_c('VoyageSummaryTable',{attrs:{\"headers\":_vm.headers,\"rows\":_vm.rows,\"requiredGhgIntensity\":_vm.requiredGhgIntensity,\"loading\":_vm.loadingState},on:{\"onDownloadReport\":_vm.downloadReport}})],1):_c('FeatureNotAvailable',[_c('template',{slot:\"text\"},[_c('p',[_vm._v(\" We are sorry, the \"),_c('b',[_vm._v(\"Emission Compliance\")]),_vm._v(\" module is not activated for \"+_vm._s(_vm.vessel.name)+\".\"),_c('br')]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\"Please contact \"),_c('a',{attrs:{\"href\":\"mailto:sales@danelec.com\"}},[_vm._v(\"sales@danelec.com\")]),_vm._v(\" for more information about \"),_c('b',[_vm._v(\"Emission Compliance\")])])])],2)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"emissions-compliance__title mb-1\"},[_vm._v(\"Voyage Summary\")]),_c('p',{staticClass:\"emissions-compliance__subtitle mb-0\"},[_vm._v(\"Summary of relevant EU voyages with an option to download the report\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"voyage-summary\"},[_c('v-data-table',{staticClass:\"data-quality-table voyage-summary-table\",attrs:{\"loading\":_vm.loading,\"items\":_vm.sortedRows,\"headers\":_vm.headers,\"item-key\":\"key\",\"items-per-page\":_vm.pageLimit,\"hide-default-footer\":_vm.isLessThanLimit,\"hide-default-header\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){return [_c('thead',{staticClass:\"v-data-table-header\"},[_c('tr',_vm._l((_vm.headers),function(header){return _c('th',{key:header.text,class:_vm.headerClasses(header),style:(_vm.headerStyles(header)),on:{\"click\":function($event){return _vm.sort(header.value)}}},[_c('span',{domProps:{\"innerHTML\":_vm._s(header.text)}}),(header.tooltip !== undefined)?_c('v-tooltip',{attrs:{\"bottom\":\"\",\"color\":\"black\",\"content-class\":\"with-triangle\",\"max-width\":\"280\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-1\",attrs:{\"color\":\"darkGrey75\",\"size\":\"medium\"}},'v-icon',attrs,false),on),[_vm._v(\"mdi-information-outline\")])]}}],null,true)},[_c('span',{staticClass:\"tooltip-text\"},[_vm._v(_vm._s(header.tooltip))])]):_vm._e(),(header.sortable)?_c('span',[(_vm.sortBy === header.value)?_c('v-icon',{class:{'rotate-icon': _vm.sortDesc},attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up \")]):_c('v-icon',{staticClass:\"sort-icon v-data-table-header__icon\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up \")])],1):_vm._e(),_c('br'),(header.subtitle)?_c('span',{staticClass:\"subtitle\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(header.subtitle)}})]):_vm._e()],1)}),0)])]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [(!_vm.loading)?_c('tr',_vm._l((_vm.headers),function(header,index){return _c('td',{key:index},[(item[header.value])?_c('DataCell',{attrs:{\"data\":_vm.cellData(item, header, index)},on:{\"downloadReport\":_vm.downloadReport}}):_vm._e()],1)}),0):_vm._e()]}},{key:\"progress\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"type\":\"table-tbody\",\"types\":_vm.skeletonStructure}})]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['data-cell', 'd-flex', _vm.data.align]},[(_vm.isReport)?_c('div',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.downloadReport}},[_c('v-icon',{attrs:{\"color\":\"darkGrey75\",\"size\":\"20\"}},[_vm._v(\"mdi-tray-arrow-down\")])],1)],1):(_vm.isPorts)?_c('div',[_c('div',{staticClass:\"ports\"},[_c('span',[_vm._v(_vm._s(_vm.splitStringByComma(_vm.data.value)[0]))]),_vm._v(\" /\"),_c('br'),_c('span',[_vm._v(_vm._s(_vm.splitStringByComma(_vm.data.value)[1]))])])]):(_vm.isVoyageTimeframe)?_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('div',{staticClass:\"timeframe\"},[_c('span',{staticClass:\"d-flex align-center justify-space-between\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"Start\")]),_vm._v(_vm._s(_vm.stringifyDate(_vm.splitStringByComma(_vm.data.value)[0])))]),_c('span',{staticClass:\"d-flex align-center justify-space-between\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"End\")]),_vm._v(_vm._s(_vm.stringifyDate(_vm.splitStringByComma(_vm.data.value)[1])))])])]):_c('div',[_c('span',{class:{ 'highlight-value': _vm.isValueHighlighted, 'normal-value': _vm.isNormalValue }},[_vm._v(_vm._s(_vm.data.value))])])])}\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\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport moment from \"moment\";\n// types\nimport { CellData } from \"@/types/dataQuality/dataQualityTable\";\n\n@Component({\n components: {},\n})\nexport default class DataCell extends Vue {\n @Prop({ type: Object }) data!: CellData;\n\n // @Getters\n get isIndicator(): boolean {\n if (!this.data) return false;\n return this.data.type === \"dataIndicator\";\n }\n\n get isValueHighlighted(): boolean {\n if (!this.data || !this.data.requiredGhgIntensity) return false;\n if (this.isActualGhcIntensity) return Number(this.data.value) > this.data.requiredGhgIntensity;\n if (this.isDqIssues) return Number(this.data.value) > 0;\n return false;\n }\n\n get isNormalValue(): boolean {\n if (!this.data || !this.data.requiredGhgIntensity) return false;\n if (this.isActualGhcIntensity) return Number(this.data.value) <= this.data.requiredGhgIntensity;\n if (this.isDqIssues) return Number(this.data.value) === 0;\n return false;\n }\n\n get isReport(): boolean {\n if (!this.data) return false;\n return this.data.column === \"report\";\n }\n\n get isPorts(): boolean {\n if (!this.data) return false;\n return this.data.column === \"ports\";\n }\n\n get isVoyageTimeframe(): boolean {\n if (!this.data) return false;\n return this.data.column === \"voyageTimeframe\";\n }\n\n get isActualGhcIntensity(): boolean {\n if (!this.data) return false;\n return this.data.column === \"actualGhcIntensity\";\n }\n\n get isDqIssues(): boolean {\n if (!this.data) return false;\n return this.data.column === \"dqIssues\";\n }\n\n // @Methods\n async downloadReport() {\n this.$emit(\"downloadReport\", this.data.value);\n }\n\n splitStringByComma(string: string | number): string[] | string {\n if (typeof string === \"string\") return string.trim().split(/\\s*,\\s*/);\n return \"N/A\";\n }\n\n stringifyDate(date: string): string {\n return moment.utc(date).format(\"DD. MMM, YYYY HH:mm\");\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!./DataCell.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!./DataCell.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DataCell.vue?vue&type=template&id=2a0786a3&scoped=true&\"\nimport script from \"./DataCell.vue?vue&type=script&lang=ts&\"\nexport * from \"./DataCell.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DataCell.vue?vue&type=style&index=0&id=2a0786a3&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 \"2a0786a3\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\";\n// types\nimport { DataQualityHeader, DataQualityRow } from \"@/types/dataQuality/dataQualityTable\";\n// components\nimport DataCell from \"./DataCell.vue\";\n\n@Component({\n components: {\n DataCell,\n },\n})\nexport default class VoyageSummaryTable extends Vue {\n @Prop({ type: Boolean, default: false }) loading!: Boolean;\n @Prop({ type: Array, default: () => [] }) headers!: DataQualityHeader[];\n @Prop({ type: Array, default: () => [] }) rows!: DataQualityRow[];\n @Prop({ type: Number }) requiredGhgIntensity!: number;\n\n sortBy: string | null = \"feature.value\";\n sortDesc: boolean | null = false;\n pageLimit = 10;\n\n // @Getters\n get isLessThanLimit(): boolean {\n return this.rows.length <= this.pageLimit;\n }\n\n get skeletonStructure(): object {\n return { \"table-row\": `table-cell@10` };\n }\n\n get sortedRows() {\n if (this.sortBy === null) {\n return this.rows;\n }\n\n return this.rows.slice().sort((a, b) => {\n const sortA = a[this.sortBy as any]?.value || \"\";\n const sortB = b[this.sortBy as any]?.value || \"\";\n if (this.sortDesc) {\n return sortA < sortB ? 1 : -1;\n } else {\n return sortA > sortB ? 1 : -1;\n }\n });\n }\n\n // @Methods\n cellData(row: DataQualityRow, header: DataQualityHeader, index: number): any {\n return {\n column: header.value,\n columnName: header.text,\n index: index,\n rowIndex: row.key,\n type: header.type === \"string\" ? \"string\" : row[header.value].type,\n align: header.align,\n value: row[header.value].value,\n requiredGhgIntensity: this.requiredGhgIntensity,\n };\n }\n\n async downloadReport(filename: string) {\n this.$emit(\"onDownloadReport\", filename);\n }\n\n sort(value: string) {\n if (this.sortBy === value) {\n if (this.sortDesc === null) {\n this.sortDesc = false;\n } else if (this.sortDesc === false) {\n this.sortDesc = true;\n } else {\n this.sortBy = null;\n this.sortDesc = null;\n }\n } else {\n this.sortBy = value;\n this.sortDesc = false;\n }\n }\n\n isDataTagORVariableMultiple(item: DataQualityRow): boolean {\n return item.datatag.type === \"multiple\" || item.variable.type === \"multiple\";\n }\n\n headerClasses(header: any): string[] {\n return [\n header.class,\n {\n sortable: header.sortable,\n \"no-sort\": this.sortBy !== header.value,\n },\n ];\n }\n\n headerStyles(header: any): any {\n return {\n width: header.width ? header.width : \"auto\",\n \"min-width\": header.width ? header.width : \"auto\",\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!./index.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!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=acdd202c&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=acdd202c&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 \"acdd202c\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VDataTable,VIcon,VSkeletonLoader,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"regulation-card\"},[_c('span',{staticClass:\"regulation-card__title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(false)?_c('v-tooltip',{attrs:{\"bottom\":\"\",\"color\":\"black\",\"content-class\":\"with-triangle\",\"max-width\":\"234\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-1\",attrs:{\"color\":\"darkGrey75\",\"size\":\"16\"}},'v-icon',attrs,false),on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,180721462)},[_c('span',{staticClass:\"tooltip-text\"},[_vm._v(\"Tooltip text placeholder\")])]):_vm._e()],1),_c('v-divider',{staticClass:\"my-3 px-3\"}),(!_vm.loading)?_c('div',{staticClass:\"content\"},[(_vm.CardData)?_c('div',{staticClass:\"option-item-list\"},_vm._l((_vm.CardData),function(data){return _c('p',{key:data.text,staticClass:\"regulation-card__text ma-0 d-flex align-start flex-column\"},[_c('span',{staticClass:\"regulation-card__subtitle\",domProps:{\"innerHTML\":_vm._s(data.text)}}),_c('span',{staticClass:\"regulation-card__amount\",class:{ 'highlight-value': _vm.isValueHighlighted(data.dataType) }},[_vm._v(\" \"+_vm._s(data.value)+\" \"),(data.unit)?_c('span',{staticClass:\"regulation-card__unit\",domProps:{\"innerHTML\":_vm._s(data.unit)}}):_vm._e()])])}),0):_c('div',{staticClass:\"no-data\"},[_vm._v(\" N/A \")])]):_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\n\ninterface RegulationOptions {\n vesselId: number;\n year: number;\n totalComplianceBalance: number;\n totalEmittedCo2: number;\n totalEmittedN2O: number;\n totalEmittedCh4: number;\n totalEuas: number;\n totalPenalty: number;\n avgGhgIntensity: number;\n requiredGhgIntensity: number;\n diffinGhgIntensity: number;\n}\n\n@Component({})\nexport default class RegulationCard extends Vue {\n @Prop() options!: RegulationOptions;\n @Prop({ type: Boolean, default: false }) loading!: Boolean;\n @Prop() title!: string;\n @Prop() type!: string;\n\n // @Getters\n get CardData(): any[] | undefined {\n if (!this.options) return;\n switch (this.type) {\n case \"mrv\":\n return [\n {\n text: \"CO2 Emissions\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalEmittedCo2.toFixed(1),\n unit: \"t\",\n },\n {\n text: \"N20 Emissions\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalEmittedN2O.toFixed(1),\n unit: \"t\",\n },\n {\n text: \"CH4 Emissions\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalEmittedCh4.toFixed(1),\n unit: \"t\",\n },\n ];\n case \"ets\":\n return [\n {\n text: \"EUAs\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalEuas.toFixed(1),\n },\n ];\n case \"fuel\":\n return [\n {\n text: \"Avg. GHG Intensity\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.avgGhgIntensity.toFixed(2),\n dataType: \"avgGhgIntensity\",\n unit: \"gCO2 e/MJ\",\n },\n {\n text: \"Required GHG Intensity\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.requiredGhgIntensity.toFixed(2),\n unit: \"gCO2 e/MJ\",\n },\n {\n text: \"Compliance Balance\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalComplianceBalance.toFixed(2),\n unit: \"gCO2e\",\n },\n {\n text: \"Penalty\",\n tooltip: \"Tooltip text placeholder\",\n value: this.options.totalPenalty.toFixed(2),\n unit: \"€\",\n },\n ];\n default:\n return [];\n }\n }\n\n isValueHighlighted(dataType: string): boolean {\n if (!dataType) return false;\n if (this.type === \"fuel\" && dataType === \"avgGhgIntensity\") return this.options.avgGhgIntensity > this.options.requiredGhgIntensity;\n return false;\n }\n\n get skeletonStructure(): object {\n return { \"table-row\": `table-cell@1` };\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!./RegulationCard.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!./RegulationCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegulationCard.vue?vue&type=template&id=2d3f316c&scoped=true&\"\nimport script from \"./RegulationCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegulationCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RegulationCard.vue?vue&type=style&index=0&id=2d3f316c&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 \"2d3f316c\",\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 { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VDivider,VIcon,VSkeletonLoader,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// components\nimport VoyageSummaryTable from \"@/components/EmmisionsCompliance/VoyageSummaryTable/index.vue\";\nimport RegulationCard from \"@/components/EmmisionsCompliance/RegulationCard.vue\";\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport EmissionsComplianceModule from \"@/store/clients/EmissionsCompliance.module\";\nimport UserModule from \"@/store/clients/User.module\";\n\nconst Snackbar = getModule(SnackbarModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst Emissions = getModule(EmissionsComplianceModule, store);\nconst User = getModule(UserModule, store);\n\n@Component({\n components: {\n VoyageSummaryTable,\n RegulationCard,\n FeatureNotAvailable,\n },\n})\nexport default class EmissionsCompliance extends Vue {\n headers = [\n {\n text: \"Voyage Id\",\n type: \"string\",\n align: \"left\",\n value: \"voyageId\",\n width: \"110px\",\n sortable: true,\n },\n {\n text: \"Departure / Arrival Port\",\n type: \"string\",\n align: \"left\",\n value: \"ports\",\n width: \"180px\",\n sortable: true,\n },\n {\n text: \"Condition\",\n type: \"string\",\n align: \"left\",\n value: \"condition\",\n width: \"110px\",\n sortable: true,\n },\n {\n text: \"Type\",\n type: \"string\",\n align: \"left\",\n value: \"voyageType\",\n width: \"110px\",\n sortable: true,\n },\n {\n text: \"Voyage Timeframe\",\n subtitle: \"(UTC)\",\n type: \"string\",\n align: \"left\",\n value: \"voyageTimeframe\",\n width: \"200px\",\n sortable: true,\n },\n {\n text: \"Distance Traveled\",\n subtitle: \"(NM)\",\n type: \"string\",\n align: \"left\",\n value: \"distanceTravelled\",\n width: \"150px\",\n sortable: true,\n },\n {\n text: \"GHG Intensity\",\n subtitle: \"(gCO2 e/MJ)\",\n type: \"string\",\n align: \"left\",\n value: \"actualGhcIntensity\",\n width: \"130px\",\n sortable: true,\n },\n {\n text: \"EUAs\",\n type: \"string\",\n align: \"left\",\n value: \"euAs\",\n width: \"100px\",\n sortable: true,\n },\n {\n text: \"Compliance Balance\",\n subtitle: \"(gCO2 e/MJ)\",\n type: \"string\",\n align: \"left\",\n value: \"complianceBalance\",\n width: \"164px\",\n sortable: true,\n },\n {\n text: \"Penalty\",\n subtitle: \"(Euros)\",\n type: \"string\",\n align: \"left\",\n value: \"penalty\",\n width: \"100px\",\n sortable: true,\n },\n {\n text: \"#DQ Issues\",\n type: \"string\",\n align: \"left\",\n value: \"dqIssues\",\n width: \"115px\",\n sortable: true,\n },\n {\n text: \"Report\",\n type: \"string\",\n align: \"left\",\n value: \"report\",\n width: \"70px\",\n sortable: false,\n },\n ];\n files: any[] = [];\n uploadingFiles = false;\n currentYear: { text: string; value: number } | null = { text: \"2025 (YTD)\", value: 2025 };\n years: { text: string; value: number }[] = [{ text: \"2025 (YTD)\", value: 2025 }];\n\n // @Getters\n get isSuperOrAdmin(): boolean {\n return User.isSuperOrAdmin;\n }\n\n get isEmissionComplianceFeatureEnabled(): boolean {\n if (!this.vessel) return false;\n\n return this.vessel.features.some(feature => feature.name === \"EmissionCompliance\");\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get loadingState(): boolean {\n return Emissions.loadingState;\n }\n\n get loadingEmissionSummaryState(): boolean {\n return Emissions.loadingEmissionSummaryState;\n }\n\n get voyageList(): any[] {\n return Emissions.voyageList;\n }\n\n get emissionSummary(): any[] {\n return Emissions.emissionSummary[Emissions.emissionSummary.length - 1];\n }\n get requiredGhgIntensity(): number {\n return Emissions.emissionSummary[Emissions.emissionSummary.length - 1]?.requiredGhgIntensity ?? 0;\n }\n\n get rows(): any {\n if (!this.voyageList) return [];\n const rows = this.voyageList.map((item, index) => ({\n key: index,\n voyageId: {\n value: item.voyageId,\n },\n ports: {\n value: `${item.portOfDeparture}, ${item.portOfArrival}`,\n departure: item.portOfDeparture,\n arrival: item.portOfArrival,\n },\n condition: {\n value: item.condition,\n },\n voyageType: {\n value: item.voyageType,\n },\n voyageTimeframe: {\n value: `${item.departureTime}, ${item.arrivalTime}`,\n departure: moment(item.departureTime).format(\"MMMM Do YYYY, h:mm a\"),\n arrival: moment(item.arrivalTime).format(\"MMMM Do YYYY, h:mm a\"),\n },\n departureTime: {\n value: moment(item.departureTime).format(\"MMMM Do YYYY, h:mm a\"),\n },\n arrivalTime: {\n value: moment(item.arrivalTime).format(\"MMMM Do YYYY, h:mm a\"),\n },\n distanceTravelled: {\n value: item.distanceTravelled,\n },\n actualGhcIntensity: {\n value: item.actualGhcIntensity,\n },\n euAs: {\n value: item.euAs,\n },\n complianceBalance: {\n value: item.complianceBalance ?? 0,\n },\n penalty: {\n value: item.penalty ?? 0,\n },\n dqIssues: {\n value: item.dqIssues,\n },\n report: {\n value: item.filename ?? \"N/A\",\n },\n }));\n\n return rows;\n }\n\n // @Methods\n async fetchData(): Promise {\n if (!this.vessel) return;\n\n try {\n await Emissions.fetchVoyageList(this.vessel?.id);\n await Emissions.fetchEmissionSummary(this.vessel?.id);\n } catch (e) {\n Snackbar.showSnackbar({ text: \"Failed to load voyage and emission data\" });\n }\n }\n\n async downloadReport(filename: string): Promise {\n if (!this.vessel) return;\n try {\n await Emissions.downloadReport({ vesselId: this.vessel.id, filename: filename });\n } catch (e) {\n Snackbar.showSnackbar({ text: \"Failed to download report. File not found\" });\n }\n }\n\n async uploadFiles(): Promise {\n if (this.files.length > 0) {\n const formData = new FormData();\n\n // files\n for (const file of this.files) {\n formData.append(\"files\", file, file.name);\n }\n if (!this.vessel) return;\n formData.append(\"vesselId\", this.vessel.id.toString());\n try {\n this.uploadingFiles = true;\n const response = await Emissions.uploadFiles(formData);\n this.displaySnackbarMessages(response);\n await this.fetchData();\n } catch (err) {\n Snackbar.showSnackbar({ text: \"An error occurred while uploading\" });\n } finally {\n this.files = [];\n this.uploadingFiles = false;\n }\n }\n }\n\n displaySnackbarMessages(response: { files: []; skippedFiles: [] }): void {\n if (response.files.length && response.skippedFiles.length === 0) Snackbar.showSnackbar({ text: \"All file(s) uploaded successfully\", color: \"success\" });\n else if (response.files.length && response.skippedFiles.length) {\n Snackbar.showSnackbar({ text: `File(s) uploaded successfully:
${response.files.join(\"
\")}`, color: \"success\", timeout: 5000 });\n setTimeout(() => {\n Snackbar.showSnackbar({ text: `File(s) were skipped
${response.skippedFiles.join(\"
\")}`, color: \"warning100\", timeout: 7000 });\n }, 5000);\n } else if (response.files.length === 0 && response.skippedFiles.length > 0) {\n Snackbar.showSnackbar({ text: `File(s) were skipped:
${response.skippedFiles.join(\"
\")}`, color: \"warning100\", timeout: 7000 });\n } else Snackbar.showSnackbar({ text: \"No file(s) uploaded\" });\n }\n\n // @Hooks\n async created(): Promise {\n await this.fetchData();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmissionsCompliance.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!./EmissionsCompliance.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data!.attrs!.multiple = this.multiple\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import { render, staticRenderFns } from \"./EmissionsCompliance.vue?vue&type=template&id=dd738b14&scoped=true&\"\nimport script from \"./EmissionsCompliance.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmissionsCompliance.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EmissionsCompliance.vue?vue&type=style&index=0&id=dd738b14&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 \"dd738b14\",\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 { VCol } from 'vuetify/lib/components/VGrid';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VFileInput,VProgressLinear,VRow,VSelect,VSpacer})\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!./EmissionsCompliance.vue?vue&type=style&index=0&id=dd738b14&lang=scss&scoped=true&\""],"sourceRoot":""}