{"version":3,"sources":["webpack:///./src/components/VesselSelect.vue?af77","webpack:///./src/components/VesselSelect.vue?c12f","webpack:///./src/components/VesselSelect.vue","webpack:///./src/components/VesselSelect.vue?9349","webpack:///./src/components/VesselSelect.vue?26fa","webpack:///./src/components/widgets/LogVariablesDialog.vue?cef5","webpack:///./src/components/widgets/LogVariablesDialog.vue","webpack:///./src/components/widgets/LogVariablesDialog.vue?9749","webpack:///../../../src/components/VTreeview/VTreeviewNode.ts","webpack:///../../../../src/components/VTreeview/util/filterTreeItems.ts","webpack:///../../../src/components/VTreeview/VTreeview.ts","webpack:///./src/components/widgets/LogVariablesDialog.vue?1ac8","webpack:///./src/components/widgets/LogVariablesDialog.vue?f214","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///../../../src/components/VGrid/VLayout.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","vesselGroups","model","value","callback","$$v","vesselGroup","expression","_t","_l","vessel","key","id","hasRequiredFeaturesEnabled","scopedSlots","_u","fn","ref","on","_g","name","$event","onVesselChange","selectedVessels","_v","_s","requiredFeaturesMissing","join","staticRenderFns","VesselGroups","getModule","VesselGroupsModule","store","VesselSelect","vesselIds","reduce","arr","push","vesselsList","find","$emit","vesselEnabledFeaturesNameList","features","map","feature","requiredFeatures","every","includes","filter","Vue","__decorate","PropSync","type","Array","default","Prop","required","Component","component","VCheckbox","VList","VListItem","VSelect","VTooltip","dialogWidth","close","isModalActive","selectedVessel","staticStyle","searchTaxonomy","_b","categorizedTaxonomyList","openCategories","setVesselFilteredVariables","selectedTaxonomyList","_e","displayTaxonomyTree","searchVariable","filteredVesselLogVariables","variable","i","preventDefault","setVesselSelectedVariable","isUnitAccAllowed","unit","caption","displayName","class","Taxonomy","TaxonomyModule","LogVariables","LogVariablesModule","LogVariablesDialog","accumulatedAllowedUnits","currentState","toLowerCase","_","pluck","syncColumn","columnFirstVariable","logVariables","vesselId","vesselLogVariables","getVesselLogVariables","uniqVesselLogVariables","filterDuplicateLogVariables","columnFirstVesselLogVariable","isColumnFirstVariableSelected","resetVariables","columnLogVariables","variableIndex","findIndex","item","set","selectedTaxonomyNames","length","firstVesselSelectedLogVariableUnit","filteredByTaxonomy","validateLogVariablesByUnit","filteredByFirstColumnLogVariableUnit","vesselsLogVariables","uniq","unitType","filteredLogVariables","forEach","taxa","taxaItem","Boolean","Watch","components","baseMixins","mixins","Colorable","RegistrableInject","VTreeviewNodeProps","activatable","activeClass","String","color","disablePerNode","expandIcon","indeterminateIcon","itemChildren","itemDisabled","itemKey","itemText","loadChildren","Function","loadingIcon","offIcon","onIcon","openOnClick","rounded","selectable","selectedColor","shaped","transition","selectionType","validator","v","VTreeviewNode","extend","inject","treeview","props","level","Number","Object","parentIsDisabled","data","hasLoaded","isActive","isIndeterminate","isLoading","isOpen","isSelected","computed","disabled","getObjectValueByPath","children","child","isExcluded","text","scopedProps","leaf","selected","indeterminate","active","open","computedIcon","hasChildren","created","register","beforeDestroy","unregister","methods","checkChildren","Promise","resolve","then","updateOpen","emitOpen","genLabel","$scopedSlots","label","slot","genPrependSlot","prepend","genAppendSlot","append","genContent","genToggle","VIcon","click","e","stopPropagation","genCheckbox","undefined","$nextTick","updateSelected","emitSelected","genLevel","createRange","genNode","unshift","setTextColor","updateActive","emitActive","genChild","genChildrenWrapper","c","genTransition","VExpandTransition","h","filterTreeItem","search","textKey","toLocaleLowerCase","indexOf","filterTreeItems","idKey","childrenKey","excluded","match","add","RegistrableProvide","Themeable","provide","dense","hoverable","items","multipleActive","openAll","returnObject","activeCache","Set","nodes","openCache","selectedCache","excludedItems","watch","handler","oldKeys","keys","k","newKeys","getKeys","diff","arrayDiff","oldSelectedCache","buildTree","deepEqual","deep","handleNodeCacheWatcher","getValue","mounted","$slots","consoleWarn","updateAll","parent","oldNode","hasOwnProperty","vnode","node","calculateState","updateVnodeState","state","counts","emitNodeCache","event","cache","updateFn","emitFn","old","getDescendants","descendants","getParents","parents","isParent","delete","isForced","changed","Map","descendant","calculated","entries","has","options","bind","themeClasses","VBtn","VCard","VCardActions","VCardText","VDialog","VLayout","VListItemGroup","VListItemTitle","VSheet","VSpacer","VTextField","VToolbar","VToolbarTitle","VTreeview","collection","collectionStrong","init","arguments","Grid"],"mappings":"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","file":"js/chunk-300cb12d.027a6275.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!./VesselSelect.vue?vue&type=style&index=0&id=4bd2468e&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vessel-select\"},[_c('div',{staticClass:\"vessel-select__header d-flex px-4 mb-4\"},[_c('v-select',{staticClass:\"vessel-group-select mr-16\",attrs:{\"return-object\":\"\",\"item-text\":\"name\",\"items\":_vm.vesselGroups,\"label\":\"Vessel group\",\"no-data-text\":\"No available vessel groups\",\"clearable\":\"\",\"hide-details\":\"\"},model:{value:(_vm.vesselGroup),callback:function ($$v) {_vm.vesselGroup=$$v},expression:\"vesselGroup\"}}),_vm._t(\"additional-inputs\")],2),_c('v-list',{staticClass:\"d-flex flex-wrap py-3\"},[_vm._l((_vm.filteredExtendedVessels),function(vessel){return _c('v-tooltip',{key:vessel.id,attrs:{\"disabled\":_vm.hasRequiredFeaturesEnabled(vessel),\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._g({staticClass:\"vessel-list__item d-flex align-center justify-space-between\"},on),[_vm._t(\"checkbox-disabled\",null,{\"vessel\":vessel}),_c('v-checkbox',{attrs:{\"value\":vessel,\"label\":vessel.name,\"indeterminate\":!_vm.hasRequiredFeaturesEnabled(vessel),\"disabled\":!_vm.hasRequiredFeaturesEnabled(vessel),\"return-object\":\"\",\"color\":\"primary\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.onVesselChange(vessel)}},model:{value:(_vm.selectedVessels),callback:function ($$v) {_vm.selectedVessels=$$v},expression:\"selectedVessels\"}}),_vm._t(\"checkbox-append-content\",null,{\"vessel\":vessel})],2)]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(_vm.requiredFeaturesMissing(vessel).join(\" ,\"))+\" is not activated for this vessel\")])])})],2),_vm._t(\"footer-content\")],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\nimport { Component, Vue, Prop, PropSync } from \"vue-property-decorator\";\nimport { getModule } from \"vuex-module-decorators\";\nimport store from \"@/store\";\n// types\nimport { VesselGroup } from \"@/types/vesselGroup\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// modules\nimport VesselGroupsModule from \"@/store/clients/VesselGroups.module\";\n\nconst VesselGroups = getModule(VesselGroupsModule, store);\n\n@Component({})\nexport default class VesselSelect extends Vue {\n @PropSync(\"selectedVesselsList\", { type: Array, default: () => [] }) selectedVessels!: ExtendedVessel[];\n @Prop({ type: Array, default: () => [], required: true }) vesselsList!: ExtendedVessel[];\n @Prop({ type: Array, default: () => [] }) requiredFeatures!: string[];\n\n vesselGroup: VesselGroup | null = null;\n\n //returns vessels, and filters by vessel group if one is selected\n get filteredExtendedVessels(): ExtendedVessel[] {\n if (this.vesselGroup) {\n return this.vesselGroup.vesselIds.reduce((arr, id) => {\n arr.push(this.vesselsList.find(vessel => vessel.id === id));\n return arr;\n }, [] as any[]);\n }\n\n return this.vesselsList;\n }\n\n get vesselGroups(): VesselGroup[] {\n return VesselGroups.vesselGroups;\n }\n\n onVesselChange(vessel: ExtendedVessel): void {\n this.$emit(\"onVesselChange\", vessel);\n }\n\n hasRequiredFeaturesEnabled(vessel: ExtendedVessel): boolean {\n const vesselEnabledFeaturesNameList = vessel.features.map(feature => feature.name);\n return this.requiredFeatures.every(feature => vesselEnabledFeaturesNameList.includes(feature));\n }\n\n requiredFeaturesMissing(vessel: ExtendedVessel): string[] {\n const vesselEnabledFeaturesNameList = vessel.features.map(feature => feature.name);\n return this.requiredFeatures.filter(feature => !vesselEnabledFeaturesNameList.includes(feature));\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!./VesselSelect.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!./VesselSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselSelect.vue?vue&type=template&id=4bd2468e&scoped=true&\"\nimport script from \"./VesselSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselSelect.vue?vue&type=style&index=0&id=4bd2468e&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 \"4bd2468e\",\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 { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCheckbox,VList,VListItem,VSelect,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth,\"content-class\":\"LogVariablesDialog\",\"scrollable\":\"\"},on:{\"click:outside\":function($event){return _vm.close()}},model:{value:(_vm.isModalActive),callback:function ($$v) {_vm.isModalActive=$$v},expression:\"isModalActive\"}},[_c('v-card',{attrs:{\"max-height\":\"960px\",\"color\":\"blue-grey lighten-5\"}},[_c('v-toolbar',{staticClass:\"font-weight-medium\",attrs:{\"dark\":\"\",\"dense\":\"\",\"color\":\"accentDarker110\"}},[_c('v-toolbar-title',[_vm._v(\" Select variable \"),_c('v-icon',[_vm._v(\"arrow_right\")]),_vm._v(\" \"+_vm._s(_vm.selectedVessel ? _vm.selectedVessel.name : '')+\" \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_c('v-icon',[_vm._v(\"close\")])],1)],1),_c('v-card-text',{staticClass:\"pa-5\",staticStyle:{\"height\":\"100%\"}},[_c('v-layout',{attrs:{\"justify-space-between\":\"\",\"fill-height\":\"\"}},[(_vm.displayTaxonomyTree)?_c('v-card',{staticClass:\"variable-tree-view\",attrs:{\"width\":\"49%\"}},[_c('v-sheet',{staticClass:\"d-flex pa-4 secondary\"},[_c('v-text-field',{attrs:{\"label\":\"Search Filters...\",\"dark\":\"\",\"flat\":\"\",\"solo-inverted\":\"\",\"hide-details\":\"\",\"clearable\":\"\",\"dense\":\"\",\"clear-icon\":\"mdi-close-circle-outline\"},model:{value:(_vm.searchTaxonomy),callback:function ($$v) {_vm.searchTaxonomy=$$v},expression:\"searchTaxonomy\"}}),_c('v-tooltip',{attrs:{\"max-width\":\"400px\",\"color\":\"primary\",\"bottom\":\"\"},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-2\",attrs:{\"color\":\"white\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}],null,false,1539172379)},[_c('span',[_c('p',[_vm._v(\" In this column you can select categories you want to filter the variables on. \")]),_c('p',[_vm._v(\" Not all variables are sorted into categories. If you can not find the variable you are looking for, we recommend using the \"),_c('b',[_vm._v(\"'Search Variables'\")]),_vm._v(\" function. \")]),_c('p',[_vm._v(\" Note: in order to search among all variables, make sure you have unchecked all filters. \")])])])],1),_c('v-card-text',{staticClass:\"variable-tree-view__list\"},[_c('v-treeview',{attrs:{\"items\":_vm.categorizedTaxonomyList,\"item-key\":\"name\",\"item-children\":\"taxons\",\"search\":_vm.searchTaxonomy,\"selected-color\":\"primary\",\"open\":_vm.openCategories,\"open-on-click\":\"\",\"return-object\":\"\",\"selectable\":\"\",\"transition\":\"\",\"hoverable\":\"\"},on:{\"input\":function($event){return _vm.setVesselFilteredVariables()},\"update:open\":function($event){_vm.openCategories=$event}},model:{value:(_vm.selectedTaxonomyList),callback:function ($$v) {_vm.selectedTaxonomyList=$$v},expression:\"selectedTaxonomyList\"}})],1)],1):_vm._e(),_c('v-card',{staticClass:\"filtred-variables\",attrs:{\"width\":_vm.displayTaxonomyTree ? '49%' : '100%'}},[_c('v-sheet',{staticClass:\"pa-4 secondary\"},[_c('v-text-field',{attrs:{\"label\":\"Search Variables...\",\"clear-icon\":\"mdi-close-circle-outline\",\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"solo-inverted\":\"\",\"hide-details\":\"\",\"clearable\":\"\"},on:{\"input\":function($event){return _vm.setVesselFilteredVariables()}},model:{value:(_vm.searchVariable),callback:function ($$v) {_vm.searchVariable=$$v},expression:\"searchVariable\"}})],1),_c('v-card-text',{staticClass:\"filtred-variables__list\"},[(_vm.filteredVesselLogVariables.length)?_c('v-list',{staticClass:\"variable-list\"},[_c('v-list-item-group',_vm._l((_vm.filteredVesselLogVariables),function(variable,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){$event.preventDefault();return _vm.setVesselSelectedVariable(variable)}}},[_c('v-list-item-title',[_c('v-tooltip',{attrs:{\"disabled\":!_vm.isUnitAccAllowed(variable.unit.caption),\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('p',_vm._g(_vm._b({staticClass:\"ma-0 d-flex justify-space-between\"},'p',attrs,false),on),[_vm._v(\" \"+_vm._s(variable.displayName)+\" \"),_c('span',{staticClass:\"unit px-2 py-1\",class:{'unit_acc-allowed': _vm.isUnitAccAllowed(variable.unit.caption)}},[_vm._v(_vm._s(variable.unit.name))])])]}}],null,true)},[_c('span',[_vm._v(\"Variable allowed for accumulated calculations\")])])],1)],1)}),1)],1):_c('p',{staticClass:\"text-subtitle-2\"},[_vm._v(\"There are no matching results\")])],1)],1)],1)],1),_c('v-card-actions',{staticClass:\"flex-column\"},[(_vm.displayTaxonomyTree)?_c('v-layout',{staticClass:\"ml-auto mr-9 mb-4 mt-n4\"},[_c('div',{staticClass:\"d-flex mr-4 align-end\"},[_c('span',{staticClass:\"color-blob color-blob--acc\"}),_c('span',[_vm._v(\"Accumulated value available\")])]),_c('div',{staticClass:\"d-flex align-end\"},[_c('span',{staticClass:\"color-blob color-blob--not-acc\",attrs:{\"dark\":\"\"}}),_c('span',[_vm._v(\"Accumulated value not available\")])])]):_vm._e(),_c('v-btn',{staticClass:\"ml-auto font-weight-semibold\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, PropSync, Watch, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport _ from \"underscore\";\n// types\nimport { VesselDataWidgetColumn } from \"@/types/VesselDataWidgetColumn\";\nimport { Category as TaxonomyCategory } from \"@/types/taxonomy/category\";\nimport { LogVariable } from \"@/types/logVariable\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { LogVariableTaxon } from \"@/types/logVariableTaxon\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport TaxonomyModule from \"@/store/clients/Taxonomy.module\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst Taxonomy = getModule(TaxonomyModule, store);\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n components: {},\n})\nexport default class LogVariablesDialog extends Vue {\n @PropSync(\"value\", { required: true }) isModalActive!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n @PropSync(\"column\", { required: true }) syncColumn!: VesselDataWidgetColumn;\n @Prop({ required: true }) selectedVessel!: ExtendedVessel;\n @Prop({ type: Boolean, default: true }) validateLogVariablesByUnit!: boolean;\n @Prop({ type: Boolean, default: true }) displayTaxonomyTree!: boolean;\n\n selectedTaxonomyList: [] = [];\n filteredVesselLogVariables: [] | any = [];\n openCategories = [];\n searchTaxonomy: string | null = null;\n searchVariable: string | null = null;\n accumulatedAllowedUnits = [\"rpm\", \"MT/hr\", \"MT/day\", \"knot\", \"kW\", \"kg/hr\", \"l/hr\"];\n\n @Watch(\"isModalActive\")\n onModalActive(currentState: boolean): void {\n if (!currentState) return;\n this.selectedTaxonomyList = [];\n this.setVesselFilteredVariables();\n }\n\n @Watch(\"searchVariable\")\n onSearchVariableInput(searchVariable: string): void {\n if (!searchVariable) return;\n this.filteredVesselLogVariables = this.filteredVesselLogVariables.filter((variable: LogVariable) => variable.displayName.toLowerCase().includes(searchVariable.toLowerCase()));\n }\n\n get categorizedTaxonomyList(): TaxonomyCategory[] {\n return Taxonomy.categorizedTaxonomyList;\n }\n\n get selectedTaxonomyNames(): string[] {\n return _.pluck(this.selectedTaxonomyList, \"fullName\");\n }\n\n get isColumnFirstVariableSelected(): boolean {\n if (!this.syncColumn) return false;\n const columnFirstVariable = this.syncColumn.logVariables[0];\n if (!columnFirstVariable) return false;\n return this.selectedVessel.id === columnFirstVariable.vesselId;\n }\n\n get filteredByFirstColumnLogVariableUnit(): LogVariable[] {\n const vesselLogVariables: any = this.getVesselLogVariables(this.selectedVessel.id);\n const uniqVesselLogVariables: LogVariable[] = this.filterDuplicateLogVariables(vesselLogVariables);\n const columnFirstVesselLogVariable = this.syncColumn?.logVariables[0];\n if (columnFirstVesselLogVariable && !this.isColumnFirstVariableSelected) {\n return uniqVesselLogVariables.filter(variable => variable.unit.caption === columnFirstVesselLogVariable?.unit?.caption);\n } else {\n return uniqVesselLogVariables;\n }\n }\n\n close(): void {\n this.isModalActive = false;\n this.resetVariables();\n }\n\n isUnitAccAllowed(unit: string): boolean {\n return this.accumulatedAllowedUnits.includes(unit);\n }\n\n resetVariables(): void {\n this.filteredVesselLogVariables = [];\n this.selectedTaxonomyList = [];\n this.openCategories = [];\n this.searchTaxonomy = null;\n this.searchVariable = null;\n }\n\n setVesselSelectedVariable(variable: LogVariable): void {\n this.isModalActive = false;\n this.openCategories = [];\n this.searchVariable = null;\n const columnLogVariables = this.syncColumn.logVariables;\n const variableIndex = columnLogVariables.findIndex(item => item.vesselId === variable.vesselId);\n if (variableIndex !== -1) {\n Vue.set(columnLogVariables, variableIndex, variable);\n } else {\n this.syncColumn.logVariables.push(variable);\n }\n }\n\n setVesselFilteredVariables(): void {\n if (this.selectedTaxonomyNames.length && !this.isColumnFirstVariableSelected) {\n const firstVesselSelectedLogVariableUnit = this.syncColumn.logVariables[0]?.unit?.caption;\n this.filteredVesselLogVariables = this.filteredByTaxonomy(this.selectedVessel.id, firstVesselSelectedLogVariableUnit);\n } else if (this.selectedTaxonomyNames.length) {\n this.filteredVesselLogVariables = this.filteredByTaxonomy(this.selectedVessel.id);\n } else if (this.validateLogVariablesByUnit) {\n this.filteredVesselLogVariables = this.filteredByFirstColumnLogVariableUnit;\n } else {\n const vesselLogVariables: any = this.getVesselLogVariables(this.selectedVessel.id);\n this.filteredVesselLogVariables = this.filterDuplicateLogVariables(vesselLogVariables);\n }\n }\n\n getVesselLogVariables(vesselId: number): LogVariable[] | undefined {\n if (!vesselId) return;\n return LogVariables.vesselsLogVariables.find(vessel => vessel.vesselId === vesselId)?.logVariables;\n }\n\n filterDuplicateLogVariables(logVariables: LogVariable[]): LogVariable[] {\n return _.uniq(logVariables, variable => variable.displayName);\n }\n\n filteredByTaxonomy(vesselId: number, unitType: string | null = null): LogVariable[] {\n const filteredLogVariables: LogVariable[] = [];\n const vesselLogVariables: any = this.getVesselLogVariables(vesselId);\n\n vesselLogVariables.forEach((variable: LogVariable) => {\n if (!variable.taxa) return;\n variable.taxa.forEach((taxaItem: LogVariableTaxon) => {\n if (unitType && this.selectedTaxonomyNames.includes(taxaItem.name) && variable.unit.caption === unitType) {\n filteredLogVariables.push(variable);\n } else if (!unitType && this.selectedTaxonomyNames.includes(taxaItem.name)) {\n filteredLogVariables.push(variable);\n }\n });\n });\n return this.filterDuplicateLogVariables(filteredLogVariables);\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!./LogVariablesDialog.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!./LogVariablesDialog.vue?vue&type=script&lang=ts&\"","// Components\nimport { VExpandTransition } from '../transitions'\nimport { VIcon } from '../VIcon'\nimport VTreeview from './VTreeview'\n\n// Mixins\nimport { inject as RegistrableInject } from '../../mixins/registrable'\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getObjectValueByPath, createRange } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ntype VTreeViewInstance = InstanceType\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject('treeview')\n)\n\ninterface options extends ExtractVue {\n treeview: VTreeViewInstance\n}\n\nexport const VTreeviewNodeProps = {\n activatable: Boolean,\n activeClass: {\n type: String,\n default: 'v-treeview-node--active',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disablePerNode: Boolean,\n expandIcon: {\n type: String,\n default: '$subgroup',\n },\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n itemChildren: {\n type: String,\n default: 'children',\n },\n itemDisabled: {\n type: String,\n default: 'disabled',\n },\n itemKey: {\n type: String,\n default: 'id',\n },\n itemText: {\n type: String,\n default: 'name',\n },\n loadChildren: Function as PropType<(item: any) => Promise>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n openOnClick: Boolean,\n rounded: Boolean,\n selectable: Boolean,\n selectedColor: {\n type: String,\n default: 'accent',\n },\n shaped: Boolean,\n transition: Boolean,\n selectionType: {\n type: String as PropType<'leaf' | 'independent'>,\n default: 'leaf',\n validator: (v: string) => ['leaf', 'independent'].includes(v),\n },\n}\n\n/* @vue/component */\nconst VTreeviewNode = baseMixins.extend().extend({\n name: 'v-treeview-node',\n\n inject: {\n treeview: {\n default: null,\n },\n },\n\n props: {\n level: Number,\n item: {\n type: Object,\n default: () => null,\n } as PropValidator | null>,\n parentIsDisabled: Boolean,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n hasLoaded: false,\n isActive: false, // Node is selected (row)\n isIndeterminate: false, // Node has at least one selected child\n isLoading: false,\n isOpen: false, // Node is open/expanded\n isSelected: false, // Node is selected (checkbox)\n }),\n\n computed: {\n disabled (): boolean {\n return (\n getObjectValueByPath(this.item, this.itemDisabled) ||\n (!this.disablePerNode && (this.parentIsDisabled && this.selectionType === 'leaf'))\n )\n },\n key (): string {\n return getObjectValueByPath(this.item, this.itemKey)\n },\n children (): any[] | null {\n const children = getObjectValueByPath(this.item, this.itemChildren)\n return children && children.filter((child: any) => !this.treeview.isExcluded(getObjectValueByPath(child, this.itemKey)))\n },\n text (): string {\n return getObjectValueByPath(this.item, this.itemText)\n },\n scopedProps (): object {\n return {\n item: this.item,\n leaf: !this.children,\n selected: this.isSelected,\n indeterminate: this.isIndeterminate,\n active: this.isActive,\n open: this.isOpen,\n }\n },\n computedIcon (): string {\n if (this.isIndeterminate) return this.indeterminateIcon\n else if (this.isSelected) return this.onIcon\n else return this.offIcon\n },\n hasChildren (): boolean {\n return !!this.children && (!!this.children.length || !!this.loadChildren)\n },\n },\n\n created () {\n this.treeview.register(this)\n },\n\n beforeDestroy () {\n this.treeview.unregister(this)\n },\n\n methods: {\n checkChildren (): Promise {\n return new Promise(resolve => {\n // TODO: Potential issue with always trying\n // to load children if response is empty?\n if (!this.children || this.children.length || !this.loadChildren || this.hasLoaded) return resolve()\n\n this.isLoading = true\n resolve(this.loadChildren(this.item))\n }).then(() => {\n this.isLoading = false\n this.hasLoaded = true\n })\n },\n open () {\n this.isOpen = !this.isOpen\n this.treeview.updateOpen(this.key, this.isOpen)\n this.treeview.emitOpen()\n },\n genLabel () {\n const children = []\n\n if (this.$scopedSlots.label) children.push(this.$scopedSlots.label(this.scopedProps))\n else children.push(this.text)\n\n return this.$createElement('div', {\n slot: 'label',\n staticClass: 'v-treeview-node__label',\n }, children)\n },\n genPrependSlot () {\n if (!this.$scopedSlots.prepend) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__prepend',\n }, this.$scopedSlots.prepend(this.scopedProps))\n },\n genAppendSlot () {\n if (!this.$scopedSlots.append) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__append',\n }, this.$scopedSlots.append(this.scopedProps))\n },\n genContent () {\n const children = [\n this.genPrependSlot(),\n this.genLabel(),\n this.genAppendSlot(),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__content',\n }, children)\n },\n genToggle () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__toggle',\n class: {\n 'v-treeview-node__toggle--open': this.isOpen,\n 'v-treeview-node__toggle--loading': this.isLoading,\n },\n slot: 'prepend',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => this.open())\n },\n },\n }, [this.isLoading ? this.loadingIcon : this.expandIcon])\n },\n genCheckbox () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__checkbox',\n props: {\n color: this.isSelected || this.isIndeterminate ? this.selectedColor : undefined,\n disabled: this.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => {\n // We nextTick here so that items watch in VTreeview has a chance to run first\n this.$nextTick(() => {\n this.isSelected = !this.isSelected\n this.isIndeterminate = false\n\n this.treeview.updateSelected(this.key, this.isSelected)\n this.treeview.emitSelected()\n })\n })\n },\n },\n }, [this.computedIcon])\n },\n genLevel (level: number) {\n return createRange(level).map(() => this.$createElement('div', {\n staticClass: 'v-treeview-node__level',\n }))\n },\n genNode () {\n const children = [this.genContent()]\n\n if (this.selectable) children.unshift(this.genCheckbox())\n\n if (this.hasChildren) {\n children.unshift(this.genToggle())\n } else {\n children.unshift(...this.genLevel(1))\n }\n\n children.unshift(...this.genLevel(this.level))\n\n return this.$createElement('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-treeview-node__root',\n class: {\n [this.activeClass]: this.isActive,\n },\n on: {\n click: () => {\n if (this.openOnClick && this.hasChildren) {\n this.checkChildren().then(this.open)\n } else if (this.activatable && !this.disabled) {\n this.isActive = !this.isActive\n this.treeview.updateActive(this.key, this.isActive)\n this.treeview.emitActive()\n }\n },\n },\n }), children)\n },\n genChild (item: any, parentIsDisabled: boolean) {\n return this.$createElement(VTreeviewNode, {\n key: getObjectValueByPath(item, this.itemKey),\n props: {\n activatable: this.activatable,\n activeClass: this.activeClass,\n item,\n selectable: this.selectable,\n selectedColor: this.selectedColor,\n color: this.color,\n disablePerNode: this.disablePerNode,\n expandIcon: this.expandIcon,\n indeterminateIcon: this.indeterminateIcon,\n offIcon: this.offIcon,\n onIcon: this.onIcon,\n loadingIcon: this.loadingIcon,\n itemKey: this.itemKey,\n itemText: this.itemText,\n itemDisabled: this.itemDisabled,\n itemChildren: this.itemChildren,\n loadChildren: this.loadChildren,\n transition: this.transition,\n openOnClick: this.openOnClick,\n rounded: this.rounded,\n shaped: this.shaped,\n level: this.level + 1,\n selectionType: this.selectionType,\n parentIsDisabled,\n },\n scopedSlots: this.$scopedSlots,\n })\n },\n genChildrenWrapper () {\n if (!this.isOpen || !this.children) return null\n\n const children = [this.children.map(c => this.genChild(c, this.disabled))]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__children',\n }, children)\n },\n genTransition () {\n return this.$createElement(VExpandTransition, [this.genChildrenWrapper()])\n },\n },\n\n render (h): VNode {\n const children: VNodeChildren = [this.genNode()]\n\n if (this.transition) children.push(this.genTransition())\n else children.push(this.genChildrenWrapper())\n\n return h('div', {\n staticClass: 'v-treeview-node',\n class: {\n 'v-treeview-node--leaf': !this.hasChildren,\n 'v-treeview-node--click': this.openOnClick,\n 'v-treeview-node--disabled': this.disabled,\n 'v-treeview-node--rounded': this.rounded,\n 'v-treeview-node--shaped': this.shaped,\n 'v-treeview-node--selected': this.isSelected,\n },\n attrs: {\n 'aria-expanded': String(this.isOpen),\n },\n }, children)\n },\n})\n\nexport default VTreeviewNode\n","import { getObjectValueByPath } from '../../../util/helpers'\nimport { TreeviewItemFunction } from 'vuetify/types'\n\nexport function filterTreeItem (item: object, search: string, textKey: string): boolean {\n const text = getObjectValueByPath(item, textKey)\n\n return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n}\n\nexport function filterTreeItems (\n filter: TreeviewItemFunction,\n item: any,\n search: string,\n idKey: string,\n textKey: string,\n childrenKey: string,\n excluded: Set\n): boolean {\n if (filter(item, search, textKey)) {\n return true\n }\n\n const children = getObjectValueByPath(item, childrenKey)\n\n if (children) {\n let match = false\n for (let i = 0; i < children.length; i++) {\n if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {\n match = true\n }\n }\n\n if (match) return true\n }\n\n excluded.add(getObjectValueByPath(item, idKey))\n\n return false\n}\n","// Styles\nimport './VTreeview.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { TreeviewItemFunction } from 'vuetify/types'\n\n// Components\nimport VTreeviewNode, { VTreeviewNodeProps } from './VTreeviewNode'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utils\nimport {\n arrayDiff,\n deepEqual,\n getObjectValueByPath,\n} from '../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport {\n filterTreeItems,\n filterTreeItem,\n} from './util/filterTreeItems'\n\ntype VTreeviewNodeInstance = InstanceType\n\ntype NodeCache = Set\ntype NodeArray = (string | number)[]\n\ntype NodeState = {\n parent: number | string | null\n children: (number | string)[]\n vnode: VTreeviewNodeInstance | null\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n isOpen: boolean\n item: any\n}\n\nexport default mixins(\n RegistrableProvide('treeview'),\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-treeview',\n\n provide (): object {\n return { treeview: this }\n },\n\n props: {\n active: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n dense: Boolean,\n disabled: Boolean,\n filter: Function as PropType,\n hoverable: Boolean,\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n multipleActive: Boolean,\n open: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n openAll: Boolean,\n returnObject: {\n type: Boolean,\n default: false, // TODO: Should be true in next major\n },\n search: String,\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n level: -1,\n activeCache: new Set() as NodeCache,\n nodes: {} as Record,\n openCache: new Set() as NodeCache,\n selectedCache: new Set() as NodeCache,\n }),\n\n computed: {\n excludedItems (): Set {\n const excluded = new Set()\n\n if (!this.search) return excluded\n\n for (let i = 0; i < this.items.length; i++) {\n filterTreeItems(\n this.filter || filterTreeItem,\n this.items[i],\n this.search,\n this.itemKey,\n this.itemText,\n this.itemChildren,\n excluded\n )\n }\n\n return excluded\n },\n },\n\n watch: {\n items: {\n handler () {\n const oldKeys = Object.keys(this.nodes).map(k => getObjectValueByPath(this.nodes[k].item, this.itemKey))\n const newKeys = this.getKeys(this.items)\n const diff = arrayDiff(newKeys, oldKeys)\n\n // We only want to do stuff if items have changed\n if (!diff.length && newKeys.length < oldKeys.length) return\n\n // If nodes are removed we need to clear them from this.nodes\n diff.forEach(k => delete this.nodes[k])\n\n const oldSelectedCache = [...this.selectedCache]\n this.selectedCache = new Set()\n this.activeCache = new Set()\n this.openCache = new Set()\n this.buildTree(this.items)\n\n // Only emit selected if selection has changed\n // as a result of items changing. This fixes a\n // potential double emit when selecting a node\n // with dynamic children\n if (!deepEqual(oldSelectedCache, [...this.selectedCache])) this.emitSelected()\n },\n deep: true,\n },\n active (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.activeCache, this.updateActive, this.emitActive)\n },\n value (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.selectedCache, this.updateSelected, this.emitSelected)\n },\n open (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.openCache, this.updateOpen, this.emitOpen)\n },\n },\n\n created () {\n const getValue = (key: string | number) => this.returnObject ? getObjectValueByPath(key, this.itemKey) : key\n\n this.buildTree(this.items)\n\n for (const value of this.value.map(getValue)) {\n this.updateSelected(value, true, true)\n }\n\n for (const active of this.active.map(getValue)) {\n this.updateActive(active, true)\n }\n },\n\n mounted () {\n // Save the developer from themselves\n if (this.$slots.prepend || this.$slots.append) {\n consoleWarn('The prepend and append slots require a slot-scope attribute', this)\n }\n\n if (this.openAll) {\n this.updateAll(true)\n } else {\n this.open.forEach(key => this.updateOpen(this.returnObject ? getObjectValueByPath(key, this.itemKey) : key, true))\n this.emitOpen()\n }\n },\n\n methods: {\n /** @public */\n updateAll (value: boolean) {\n Object.keys(this.nodes).forEach(key => this.updateOpen(getObjectValueByPath(this.nodes[key].item, this.itemKey), value))\n this.emitOpen()\n },\n getKeys (items: any[], keys: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const key = getObjectValueByPath(items[i], this.itemKey)\n keys.push(key)\n const children = getObjectValueByPath(items[i], this.itemChildren)\n if (children) {\n keys.push(...this.getKeys(children))\n }\n }\n\n return keys\n },\n buildTree (items: any[], parent: (string | number | null) = null) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = getObjectValueByPath(item, this.itemKey)\n const children = getObjectValueByPath(item, this.itemChildren) ?? []\n const oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {\n isSelected: false, isIndeterminate: false, isActive: false, isOpen: false, vnode: null,\n } as NodeState\n\n const node: any = {\n vnode: oldNode.vnode,\n parent,\n children: children.map((c: any) => getObjectValueByPath(c, this.itemKey)),\n item,\n }\n\n this.buildTree(children, key)\n\n // This fixed bug with dynamic children resetting selected parent state\n if (!this.nodes.hasOwnProperty(key) && parent !== null && this.nodes.hasOwnProperty(parent)) {\n node.isSelected = this.nodes[parent].isSelected\n } else {\n node.isSelected = oldNode.isSelected\n node.isIndeterminate = oldNode.isIndeterminate\n }\n\n node.isActive = oldNode.isActive\n node.isOpen = oldNode.isOpen\n\n this.nodes[key] = node\n\n if (children.length && this.selectionType !== 'independent') {\n const { isSelected, isIndeterminate } = this.calculateState(key, this.nodes)\n\n node.isSelected = isSelected\n node.isIndeterminate = isIndeterminate\n }\n\n // Don't forget to rebuild cache\n if (this.nodes[key].isSelected && (this.selectionType === 'independent' || node.children.length === 0)) this.selectedCache.add(key)\n if (this.nodes[key].isActive) this.activeCache.add(key)\n if (this.nodes[key].isOpen) this.openCache.add(key)\n\n this.updateVnodeState(key)\n }\n },\n calculateState (node: string | number, state: Record) {\n const children = state[node].children\n const counts = children.reduce((counts: number[], child: string | number) => {\n counts[0] += +Boolean(state[child].isSelected)\n counts[1] += +Boolean(state[child].isIndeterminate)\n\n return counts\n }, [0, 0])\n\n const isSelected = !!children.length && counts[0] === children.length\n const isIndeterminate = !isSelected && (counts[0] > 0 || counts[1] > 0)\n\n return {\n isSelected,\n isIndeterminate,\n }\n },\n emitOpen () {\n this.emitNodeCache('update:open', this.openCache)\n },\n emitSelected () {\n this.emitNodeCache('input', this.selectedCache)\n },\n emitActive () {\n this.emitNodeCache('update:active', this.activeCache)\n },\n emitNodeCache (event: string, cache: NodeCache) {\n this.$emit(event, this.returnObject ? [...cache].map(key => this.nodes[key].item) : [...cache])\n },\n handleNodeCacheWatcher (value: any[], cache: NodeCache, updateFn: Function, emitFn: Function) {\n value = this.returnObject ? value.map(v => getObjectValueByPath(v, this.itemKey)) : value\n const old = [...cache]\n if (deepEqual(old, value)) return\n\n old.forEach(key => updateFn(key, false))\n value.forEach(key => updateFn(key, true))\n\n emitFn()\n },\n getDescendants (key: string | number, descendants: NodeArray = []) {\n const children = this.nodes[key].children\n\n descendants.push(...children)\n\n for (let i = 0; i < children.length; i++) {\n descendants = this.getDescendants(children[i], descendants)\n }\n\n return descendants\n },\n getParents (key: string | number) {\n let parent = this.nodes[key].parent\n\n const parents = []\n while (parent !== null) {\n parents.push(parent)\n parent = this.nodes[parent].parent\n }\n\n return parents\n },\n register (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n this.nodes[key].vnode = node\n\n this.updateVnodeState(key)\n },\n unregister (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n if (this.nodes[key]) this.nodes[key].vnode = null\n },\n isParent (key: string | number) {\n return this.nodes[key].children && this.nodes[key].children.length\n },\n updateActive (key: string | number, isActive: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n if (!this.multipleActive) {\n this.activeCache.forEach(active => {\n this.nodes[active].isActive = false\n this.updateVnodeState(active)\n this.activeCache.delete(active)\n })\n }\n\n const node = this.nodes[key]\n if (!node) return\n\n if (isActive) this.activeCache.add(key)\n else this.activeCache.delete(key)\n\n node.isActive = isActive\n\n this.updateVnodeState(key)\n },\n updateSelected (key: string | number, isSelected: boolean, isForced = false) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const changed = new Map()\n\n if (this.selectionType !== 'independent') {\n for (const descendant of this.getDescendants(key)) {\n if (!getObjectValueByPath(this.nodes[descendant].item, this.itemDisabled) || isForced) {\n this.nodes[descendant].isSelected = isSelected\n this.nodes[descendant].isIndeterminate = false\n changed.set(descendant, isSelected)\n }\n }\n\n const calculated = this.calculateState(key, this.nodes)\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = calculated.isIndeterminate\n changed.set(key, isSelected)\n\n for (const parent of this.getParents(key)) {\n const calculated = this.calculateState(parent, this.nodes)\n this.nodes[parent].isSelected = calculated.isSelected\n this.nodes[parent].isIndeterminate = calculated.isIndeterminate\n changed.set(parent, calculated.isSelected)\n }\n } else {\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = false\n changed.set(key, isSelected)\n }\n\n for (const [key, value] of changed.entries()) {\n this.updateVnodeState(key)\n\n if (this.selectionType === 'leaf' && this.isParent(key)) continue\n\n value === true ? this.selectedCache.add(key) : this.selectedCache.delete(key)\n }\n },\n updateOpen (key: string | number, isOpen: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const node = this.nodes[key]\n const children = getObjectValueByPath(node.item, this.itemChildren)\n\n if (children && !children.length && node.vnode && !node.vnode.hasLoaded) {\n node.vnode.checkChildren().then(() => this.updateOpen(key, isOpen))\n } else if (children && children.length) {\n node.isOpen = isOpen\n\n node.isOpen ? this.openCache.add(key) : this.openCache.delete(key)\n\n this.updateVnodeState(key)\n }\n },\n updateVnodeState (key: string | number) {\n const node = this.nodes[key]\n\n if (node && node.vnode) {\n node.vnode.isSelected = node.isSelected\n node.vnode.isIndeterminate = node.isIndeterminate\n node.vnode.isActive = node.isActive\n node.vnode.isOpen = node.isOpen\n }\n },\n isExcluded (key: string | number) {\n return !!this.search && this.excludedItems.has(key)\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = this.items.length\n ? this.items.filter(item => {\n return !this.isExcluded(getObjectValueByPath(item, this.itemKey))\n }).map(item => {\n const genChild = VTreeviewNode.options.methods.genChild.bind(this)\n\n return genChild(item, this.disabled || getObjectValueByPath(item, this.itemDisabled))\n })\n /* istanbul ignore next */\n : this.$slots.default! // TODO: remove type annotation with TS 3.2\n\n return h('div', {\n staticClass: 'v-treeview',\n class: {\n 'v-treeview--hoverable': this.hoverable,\n 'v-treeview--dense': this.dense,\n ...this.themeClasses,\n },\n }, children)\n },\n})\n","import { render, staticRenderFns } from \"./LogVariablesDialog.vue?vue&type=template&id=44f41058&scoped=true&\"\nimport script from \"./LogVariablesDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./LogVariablesDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LogVariablesDialog.vue?vue&type=style&index=0&id=44f41058&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 \"44f41058\",\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 { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\nimport { VTreeview } from 'vuetify/lib/components/VTreeview';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VIcon,VLayout,VList,VListItem,VListItemGroup,VListItemTitle,VSheet,VSpacer,VTextField,VToolbar,VToolbarTitle,VTooltip,VTreeview})\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!./LogVariablesDialog.vue?vue&type=style&index=0&id=44f41058&scoped=true&lang=scss&\"","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n"],"sourceRoot":""}