{"version":3,"sources":["webpack:///./src/pages/MapPage/Tools/Layers/LayerTable.vue?5ac4","webpack:///./src/pages/MapPage/Layout/TheBottomTabs.vue","webpack:///./src/pages/MapPage/Tools/Layers/LayerTable.vue","webpack:///src/pages/MapPage/Tools/Layers/LayerTable.vue","webpack:///./src/pages/MapPage/Tools/Layers/LayerTable.vue?7646","webpack:///./src/pages/MapPage/Tools/Layers/LayerTable.vue?5925","webpack:///src/pages/MapPage/Layout/TheBottomTabs.vue","webpack:///./src/pages/MapPage/Layout/TheBottomTabs.vue?2cd9","webpack:///./src/pages/MapPage/Layout/TheBottomTabs.vue?c121"],"names":["rawName","value","_vm","onResize","expression","ref","staticStyle","_c","attrs","model","active","callback","key","on","show","stopPropagation","_l","bottomSheet","sheetIndex","type","_e","render","staticRenderFns","directives","name","useMapExtent","zoomToSelected","fn","menu","scopedSlots","_objectSpread2","staticClass","_v","item","style","height","tableHeight","headers","loading","props","selected","component"],"mappings":"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mDACA,oBAIA,gEACA,2CACA,gBAIA,yBACA,oBACA,CACA,CACA,YACA,eAIA,CACA,CACA,YACA,cAEA,CACA,YACA,cAEA,CACA,aACA,eAEA,CACA,gBACA,kBAEA,CACA,cACA,kBAKA,qBAIA,gDACA,mCAIA,uBACA,0DAGA,yCACA,sDACA,oBACA,4DAEA,2BACA,+CACA,iDAEA,YAEA,qBACA,sCACA,qCAEA,8BACA,wDACA,mCACA,8CACA,kBACA,iCAKA,uBACA,UACA,2DACA,YACA,gDAEA,qDAGA,6LACA,yCAEA,mFAHA,gDAKA,qCACA,qCACA,yBACA,wCACA,qBAKA,GACA,iBACA,wBAEA,8BAEA,sBACA,iCACA,sBAIA,gBACA,aACA,aACA,gBACA,kBAMA,8BAGA,EAHA,OAKA,GAJA,gBAIA,cACA,SAEA,qCACA,wCACA,mBAGA,YAGA,uBAEA,0CACA,yBAEA,aAEA,GACA,4CACA,kBAGA,qBACA,wCACA,qCACA,2BAIA,kCACA,sEACA,UACA,sBACA,8BACA,qCACA,GAEA,kBAEA,gCACA,qBAEA,GACA,SACA,UAIA,4BACA,6BACA,wBAEA,WACA,uBACA,wBAGA,8BACA,qCACA,GACA,kBACA,aACA,SAEA,qCACA,aAGA,GACA,QACA,2BAIA,mBACA,YAIA,2BACA,OACA,QACA,6BACA,uBACA,MACA,gDACA,SACA,YACA,qBAUA,OANA,oBACA,oBACA,+CACA,+BAGA,KAGA,OACA,YACA,8BAEA,wCACA,mBACA,yBAIA,SAEA,6BACA,mBACA,wCACA,mBACA,yBAIA,mCACA,wCACA,mBACA,yBAGA,gCACA,GACA,wCACA,mBACA,yBAIA,sBAEA,wBAIA,mBACA,mBACA,mBACA,uBACA,MACA,iBACA,OAGA,kBACA,6BAEA,wCACA,mBACA,0BAIA,aAGA,yBACA,yCAEA,0KAiBA,GAhBA,gBACA,2DACA,6BAEA,gCACA,mCACA,wCACA,mBACA,yBAGA,eACA,mBACA,2BACA,2BAGA,+CACA,oBACA,uCACA,OAEA,4FAvBA,gDC/bgY,I,wBCQ5XqC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,QCqDf,GACA,qBACA,gBACA,OACA,YACA,YACA,IACA,OAIA,OACA,uCACA,4CACA,+BACA,+BAGA,cACA,oBACA,wBAEA,UAGA,0CACA,gFACA,qCAEA,OADA,cACA,8BAGA,YACA,aACA,2CACA,iDACA,6CACA,iDACA,4CACA,kDAEA,yCACA,gBACA,sBACA,eACA,cACA,wBACA,IACA,oBACA,4DAEA,oBACA,4DACA,0DACA,iCACA,iBAEA,gBACA,sBAEA,gBACA,4BACA,uBAEA,sBACA,cACA,0BAEA,0BAEA,2BACA,8BACA,qBACA,2BAIA,mBACA,kBCtJoX,ICOhX,EAAY,eACd,EACA,EACAnB,GACA,EACA,KACA,KACA,MAIa,e","file":"js/chunk-6394227f.2b871fdf.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerTable.vue?vue&type=style&index=0&id=da237cba&prod&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-fade-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.bottomSheets.length > 0),expression:\"bottomSheets.length > 0\"},{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}],ref:\"bottomTabs\",staticStyle:{\"max-height\":\"400px\"}},[_c('v-layout',{staticStyle:{\"margin\":\"0px\"},attrs:{\"align-start\":\"\",\"justify-start\":\"\",\"column\":\"\",\"fill-height\":\"\"}},[_c('v-tabs',{staticStyle:{\"width\":\"100%\",\"overflow-y\":\"none\",\"z-index\":\"10\"},attrs:{\"color\":\"grey darken-2\",\"dark\":\"\",\"slider-color\":\"primary\"},model:{value:(_vm.active),callback:function ($$v) {_vm.active=$$v},expression:\"active\"}},[_vm._l((_vm.bottomSheets),function(item,index){return _c('v-tab',{key:index,attrs:{\"ripple\":\"\"},on:{\"click\":_vm.show}},[_vm._v(\"\\n \"+_vm._s(item.useValueAsKey ? item.value : item.title)+\"\\n \"),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteTab(index)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"close\")])],1)],1)}),_vm._l((_vm.bottomSheets),function(bottomSheet,sheetIndex){return _c('v-tab-item',{key:sheetIndex},[(bottomSheet.type == 'featureTable')?_c('layer-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTabs),expression:\"showTabs\"}],attrs:{\"layer\":bottomSheet,\"is-table\":bottomSheet.isTable}}):_vm._e(),(bottomSheet.type == 'elevationProfile')?_c('analysis-elevation-profile',{attrs:{\"line-geometry\":bottomSheet.lineGeometry}}):_vm._e(),(bottomSheet.type == 'consequenceFactorAnalysis')?_c('analysis-consequence-factors',{attrs:{\"polygon-geometry\":bottomSheet.polygonGeometry}}):_vm._e(),(bottomSheet.type == 'arealplanAnalysis')?_c('analysis-arealplan-innspill',{attrs:{\"polygon-geometry\":bottomSheet.polygonGeometry}}):_vm._e()],1)}),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.showHide}},[_c('v-icon',[_vm._v(_vm._s(_vm.showTabs ? \"expand_more\" : \"expand_less\"))])],1)],2)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}]},[_c('v-toolbar',{attrs:{\"dense\":\"\",\"flat\":\"\",\"color\":\"secondary darken-1\"}},[_c('v-layout',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"align-center\":\"\",\"justify-start\":\"\",\"row\":\"\",\"fill-height\":\"\"}},[_c('v-switch',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isTable),expression:\"!isTable\"}],staticStyle:{\"max-width\":\"220px\"},attrs:{\"color\":\"blue\",\"label\":\"Begrens til kartutsnitt\"},model:{value:(_vm.useMapExtent),callback:function ($$v) {_vm.useMapExtent=$$v},expression:\"useMapExtent\"}}),_c('v-switch',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$vuetify.breakpoint.mdAndUp && !_vm.isTable),expression:\"$vuetify.breakpoint.mdAndUp && !isTable\"}],staticStyle:{\"max-width\":\"200px\"},attrs:{\"color\":\"blue\",\"label\":\"Panorer til valgt rad\"},model:{value:(_vm.zoomToSelected),callback:function ($$v) {_vm.zoomToSelected=$$v},expression:\"zoomToSelected\"}})],1),_c('v-spacer'),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: menu }){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: tooltip }){return [_c('v-btn',_vm._g({staticClass:\"mr-0\",attrs:{\"flat\":\"\",\"color\":\"\",\"disabled\":_vm.selected.length === 0}},{ ...tooltip, ...menu }),[_c('v-icon',{staticClass:\"pr-2\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-file-download-outline\")]),_vm._v(\"Eksporter\\n \")],1)]}}],null,true)},[_c('span',[_vm._v(\"Eksporter selekterte elementer\")])])]}}])},[_c('v-list',_vm._l((_vm.exportOptions),function(item,i){return _c('v-list-tile',{key:i,on:{\"click\":function($event){return _vm.exportData(item.format)}}},[_c('v-list-tile-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1)],1),_c('v-layout',{attrs:{\"column\":\"\",\"fill-height\":\"\"}},[_c('v-data-table',{staticClass:\"fixed-header v-table__overflow\",style:({ height: _vm.tableHeight + 'px' }),attrs:{\"select-all\":\"\",\"headers\":_vm.headers,\"items\":_vm.features,\"pagination\":_vm.pagination,\"no-data-text\":\"Ingen data tilgjengelig\",\"rows-per-page-items\":_vm.rowsPerPageItems,\"item-key\":\"attributes.OBJECTID\",\"total-items\":_vm.totalItems,\"loading\":_vm.loading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',{attrs:{\"active\":props.selected ||\n props.item.attributes.OBJECTID === _vm.currentlySelectedRowObjectId},on:{\"click\":function($event){return _vm.select(props.item)}}},[_c('td',[_c('v-checkbox',{attrs:{\"color\":\"blue\",\"primary\":\"\",\"hide-details\":\"\"},model:{value:(props.selected),callback:function ($$v) {_vm.$set(props, \"selected\", $$v)},expression:\"props.selected\"}})],1),_vm._l((_vm.headers),function(header){return _c('td',{key:header.text},[_vm._v(\"\\n \"+_vm._s(header.domain\n ? _vm.getCodedValue(\n header.domain,\n props.item.attributes[header.value]\n )\n : _vm.getItemValue(props.item.attributes,header))+\"\\n \")])})],2)]}},{key:\"pageText\",fn:function(props){return [_vm._v(\"Rader: \"+_vm._s(props.pageStart)+\" - \"+_vm._s(props.pageStop)+\" av\\n \"+_vm._s(props.itemsLength))]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div v-resize=\"onResize\">\r\n <v-toolbar dense flat color=\"secondary darken-1\">\r\n <v-layout\r\n style=\"margin-top: 20px\"\r\n align-center\r\n justify-start\r\n row\r\n fill-height\r\n >\r\n <v-switch\r\n v-show=\"!isTable\"\r\n style=\"max-width: 220px\"\r\n v-model=\"useMapExtent\"\r\n color=\"blue\"\r\n label=\"Begrens til kartutsnitt\"\r\n ></v-switch>\r\n\r\n <v-switch\r\n v-show=\"$vuetify.breakpoint.mdAndUp && !isTable\"\r\n style=\"max-width: 200px\"\r\n v-model=\"zoomToSelected\"\r\n color=\"blue\"\r\n label=\"Panorer til valgt rad\"\r\n ></v-switch>\r\n </v-layout>\r\n <v-spacer></v-spacer>\r\n\r\n <v-menu offset-y>\r\n <template #activator=\"{ on: menu }\">\r\n <v-tooltip bottom>\r\n <template #activator=\"{ on: tooltip }\">\r\n <v-btn\r\n flat\r\n color\r\n class=\"mr-0\"\r\n :disabled=\"selected.length === 0\"\r\n v-on=\"{ ...tooltip, ...menu }\"\r\n >\r\n <v-icon class=\"pr-2\" small>mdi-file-download-outline</v-icon\r\n >Eksporter\r\n </v-btn>\r\n </template>\r\n <span>Eksporter selekterte elementer</span>\r\n </v-tooltip>\r\n </template>\r\n\r\n <v-list>\r\n <v-list-tile\r\n v-for=\"(item, i) in exportOptions\"\r\n :key=\"i\"\r\n @click=\"exportData(item.format)\"\r\n >\r\n <v-list-tile-title>{{ item.title }}</v-list-tile-title>\r\n </v-list-tile>\r\n </v-list>\r\n </v-menu>\r\n </v-toolbar>\r\n <v-layout column fill-height>\r\n <v-data-table\r\n v-model=\"selected\"\r\n select-all\r\n :headers=\"headers\"\r\n :items=\"features\"\r\n :pagination.sync=\"pagination\"\r\n no-data-text=\"Ingen data tilgjengelig\"\r\n :rows-per-page-items=\"rowsPerPageItems\"\r\n item-key=\"attributes.OBJECTID\"\r\n :total-items=\"totalItems\"\r\n :loading=\"loading\"\r\n class=\"fixed-header v-table__overflow\"\r\n :style=\"{ height: tableHeight + 'px' }\"\r\n >\r\n <template v-slot:items=\"props\">\r\n <tr\r\n :active=\"\r\n props.selected ||\r\n props.item.attributes.OBJECTID === currentlySelectedRowObjectId\r\n \"\r\n @click=\"select(props.item)\"\r\n >\r\n <td>\r\n <v-checkbox\r\n color=\"blue\"\r\n v-model=\"props.selected\"\r\n primary\r\n hide-details\r\n ></v-checkbox>\r\n </td>\r\n <td v-for=\"header in headers\" :key=\"header.text\">\r\n {{\r\n header.domain\r\n ? getCodedValue(\r\n header.domain,\r\n props.item.attributes[header.value]\r\n )\r\n : getItemValue(props.item.attributes,header)\r\n }}\r\n </td>\r\n </tr>\r\n </template>\r\n\r\n <template v-slot:pageText=\"props\"\r\n >Rader: {{ props.pageStart }} - {{ props.pageStop }} av\r\n {{ props.itemsLength }}</template\r\n >\r\n </v-data-table>\r\n </v-layout>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport TableService from \"@/services/table.service\";\r\nimport { mapState, mapActions } from \"vuex\";\r\nimport MappingMixin from \"@/mixins/mappingMixin\";\r\nimport ExtractMixin from \"@/mixins/extractMixin\";\r\nexport default {\r\n name: \"LayerTable\",\r\n mixins: [MappingMixin, ExtractMixin],\r\n data: function () {\r\n return {\r\n totalItems: 0,\r\n useMapExtent: false,\r\n zoomToSelected: false,\r\n rowsPerPageItems: [10, 25, 50, 100, 200, 500, 1000],\r\n features: [],\r\n currentlySelectedRowObjectId: null,\r\n loading: true,\r\n selected: [],\r\n windowSize: {\r\n x: 0,\r\n y: 0,\r\n },\r\n pagination: {\r\n rowsPerPage: 50,\r\n },\r\n headers: [],\r\n restAdress: \"\",\r\n restIndex: \"\",\r\n };\r\n },\r\n props: {\r\n layer: Object,\r\n isTable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n computed: {\r\n ...mapState([\"extent\", \"bottomTabsHeight\"]),\r\n metadata() {\r\n // if (this.isTable) {\r\n // return null;\r\n // } else {\r\n return this.$store.getters[\"getLayerMetadataByAddressAndIndex\"](\r\n this.layer.url.replace(/(^\\w+:|^)\\/\\//, \"\"),\r\n this.layer.id\r\n );\r\n // }\r\n },\r\n exportOptions() {\r\n if (this.isTable) {\r\n return [\r\n {\r\n title: \"CSV\",\r\n format: \"csv\",\r\n },\r\n ];\r\n } else {\r\n return [\r\n {\r\n title: \"CSV\",\r\n format: \"csv\",\r\n },\r\n {\r\n title: \"KMZ\",\r\n format: \"kmz\",\r\n },\r\n {\r\n title: \"JSON\",\r\n format: \"json\",\r\n },\r\n {\r\n title: \"GeoJSON\",\r\n format: \"geojson\",\r\n },\r\n {\r\n title: \"Shape\",\r\n format: \"shape\",\r\n },\r\n ];\r\n }\r\n },\r\n layerInfo() {\r\n // if (this.isTable) {\r\n // return null;\r\n // } else {\r\n return this.$store.getters[\"getLayerInfoByUrl\"](\r\n this.layer.url + \"/\" + this.layer.id\r\n );\r\n // }\r\n },\r\n tableHeight() {\r\n return (this.windowSize.y / 100) * this.bottomTabsHeight - 100;\r\n },\r\n },\r\n methods: {\r\n ...mapActions([\"setSnack\", \"setSelectedExtent\"]),\r\n onResize() {\r\n this.windowSize = { x: window.innerWidth, y: window.innerHeight };\r\n },\r\n getItemValue(attributes,header) {\r\n if (header.type === \"esriFieldTypeDate\" && attributes[header.value]) {\r\n return new Date(attributes[header.value]).toLocaleDateString(\"nb-NO\");\r\n }\r\n return attributes[header.value];\r\n },\r\n toggleAll() {\r\n if (this.selected.length) this.selected = [];\r\n else this.selected = this.features.slice();\r\n },\r\n select(selectedItem) {\r\n this.currentlySelectedRowObjectId = selectedItem.attributes.OBJECTID;\r\n this.features.forEach((item) => {\r\n if (item.attributes.OBJECTID == selectedItem.attributes.OBJECTID) {\r\n if (this.zoomToSelected) {\r\n this.zoomToGeometry(item.geometry);\r\n }\r\n }\r\n });\r\n },\r\n exportData(format) {\r\n if (format === \"csv\") {\r\n this.downloadGraphicsAsCSVFile(this.headers, this.selected);\r\n } else if (format === \"shape\") {\r\n this.downloadGraphicsAsShapeFile(this.selected);\r\n } else {\r\n this.downloadGraphicsAsOtherFormat(this.selected, format);\r\n }\r\n },\r\n async zoomToGeometry(geometryJson) {\r\n let geometry = await this.getValidGeometry(geometryJson);\r\n\r\n this.setSelectedExtent(geometry);\r\n },\r\n updateHeaders(layerInfo) {\r\n if (this.layer.hasOwnProperty(\"columns\")) {\r\n if (this.headers.length === 0) {\r\n this.layer.columns.forEach((column) => {\r\n this.headers.push(column);\r\n });\r\n }\r\n } else {\r\n if (\r\n layerInfo &&\r\n layerInfo.fields !== null &&\r\n this.headers.length == 0\r\n ) {\r\n layerInfo.fields.forEach((felt) => {\r\n if (\r\n felt.alias === \"OBJECTID\" ||\r\n felt.alias.toLowerCase() === \"shape\" ||\r\n felt.alias === \"GlobalID\"\r\n ) {\r\n return;\r\n }\r\n this.headers.push({\r\n text: felt.alias,\r\n value: felt.name,\r\n domain: felt.domain,\r\n type: felt.type,\r\n });\r\n });\r\n }\r\n }\r\n },\r\n getDataFromApi() {\r\n this.loading = true;\r\n\r\n let theMapLayer;\r\n\r\n if (this.isTable) {\r\n let outFields = [];\r\n\r\n if (this.layer.hasOwnProperty(\"columns\")) {\r\n this.layer.columns.forEach((column) => {\r\n outFields.push(column.value);\r\n });\r\n } else {\r\n outFields.push(\"*\");\r\n }\r\n\r\n let expressionValue = this.layer.value;\r\n if (\r\n this.layer.hasOwnProperty(\"keyIsString\") &&\r\n this.layer.keyIsString\r\n ) {\r\n expressionValue = \"'\" + expressionValue + \"'\";\r\n }\r\n theMapLayer = {\r\n definitionExpression: this.layer.key + \" = \" + expressionValue,\r\n outFields: outFields,\r\n };\r\n } else {\r\n theMapLayer = this.$theMapObject\r\n .findLayerById(this.layer.parentLayerID) // HER\r\n .allSublayers.items.find((sl) => {\r\n return sl.id == this.layer.id;\r\n });\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const { sortBy, descending, page, rowsPerPage } = this.pagination;\r\n let resultOffset = (page - 1) * rowsPerPage;\r\n let params = this.getQueryParams(theMapLayer);\r\n TableService.queryArcGISServerLayer(\r\n this.layer.url + \"/\" + this.layer.id + \"/query?\",\r\n params\r\n )\r\n .then((responseCount) => {\r\n if (\r\n responseCount.data.hasOwnProperty(\"error\") &&\r\n responseCount.data.error !== null\r\n ) {\r\n resolve({\r\n items: [],\r\n total: 0,\r\n });\r\n }\r\n\r\n params.params.returnCountOnly = false;\r\n params.params.resultRecordCount = rowsPerPage;\r\n params.params.resultOffset = resultOffset;\r\n\r\n if (sortBy !== null) {\r\n params.params.orderByFields =\r\n sortBy + \" \" + (descending ? \"DESC\" : \"ASC\");\r\n }\r\n\r\n TableService.queryArcGISServerLayer(\r\n this.layer.url + \"/\" + this.layer.id + \"/query?\",\r\n params\r\n ).then((response) => {\r\n this.loading = false;\r\n let items = [];\r\n\r\n response.data.features.forEach((element) => {\r\n items.push(element);\r\n });\r\n\r\n resolve({\r\n items,\r\n total: responseCount.data.count,\r\n });\r\n });\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n getQueryParams(layer) {\r\n let params = {\r\n params: {\r\n where: layer.definitionExpression\r\n ? layer.definitionExpression\r\n : \"1=1\",\r\n outFields: layer.outFields ? layer.outFields.join(\",\") : \"*\",\r\n f: \"json\",\r\n outSR: 25833,\r\n returnCountOnly: true,\r\n },\r\n };\r\n\r\n if (this.useMapExtent) {\r\n params.params.inSR = 25833;\r\n params.params.spatialRel = \"esriSpatialRelIntersects\";\r\n params.params.geometry = this.extent;\r\n }\r\n\r\n return params;\r\n },\r\n },\r\n watch: {\r\n pagination: {\r\n handler() {\r\n // if (!this.isTable) {\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n // }\r\n },\r\n deep: true,\r\n },\r\n extent: function () {\r\n if (this.useMapExtent) {\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n }\r\n },\r\n useMapExtent: function () {\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n },\r\n metadata: function (val) {\r\n if (val) {\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n }\r\n },\r\n layerInfo: function (val) {\r\n // if (!this.isTable) {\r\n this.updateHeaders(val);\r\n // }\r\n },\r\n },\r\n created() {\r\n this.$eventHub.$on(\r\n \"layer-filter-set\",\r\n function (layer) {\r\n if (layer) {\r\n let parentLayerID = layer.layer.id;\r\n let layerId = layer.id;\r\n\r\n if (\r\n this.layer.id == layerId &&\r\n this.layer.parentLayerID == parentLayerID // HER\r\n ) {\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n }\r\n }\r\n }.bind(this)\r\n );\r\n },\r\n beforeDestroy() {\r\n this.$eventHub.$off(\"layer-filter-set\");\r\n },\r\n async mounted() {\r\n this.onResize();\r\n this.restAdress = this.layer.url.replace(/(^\\w+:|^)\\/\\//, \"\");\r\n this.restIndex = this.layer.id;\r\n\r\n if (this.metadata && this.layerInfo) {\r\n this.updateHeaders(this.layerInfo);\r\n this.getDataFromApi().then((data) => {\r\n this.features = data.items;\r\n this.totalItems = data.total;\r\n });\r\n }\r\n if (!this.metadata) {\r\n this.loadMetadata({\r\n restAdress: this.restAdress,\r\n restIndex: this.restIndex,\r\n });\r\n }\r\n if (!this.layerInfo) {\r\n await this.loadLayerInfo({\r\n url: this.layer.url + \"/\" + this.layer.id,\r\n });\r\n }\r\n this.updateHeaders(this.layerInfo);\r\n },\r\n};\r\n</script>\r\n\r\n<style>\r\n.theme--dark.v-table thead th {\r\n background-color: #424242;\r\n}\r\n.theme--light.v-table thead th {\r\n background-color: #fff;\r\n}\r\n/* Theme */\r\n.fixed-header {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n}\r\n\r\n.fixed-header th {\r\n position: sticky;\r\n top: 0;\r\n z-index: 5;\r\n}\r\n.fixed-header th:after {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n}\r\n.fixed-header tr.v-datatable__progress th {\r\n height: 1px;\r\n}\r\n.fixed-header .v-table__overflow {\r\n flex-grow: 1;\r\n flex-shrink: 1;\r\n overflow-x: auto;\r\n overflow-y: auto;\r\n}\r\n.fixed-header .v-datatable.v-table {\r\n flex-grow: 0;\r\n flex-shrink: 1;\r\n}\r\n.fixed-header .v-datatable.v-table .v-datatable__actions {\r\n flex-wrap: nowrap;\r\n}\r\n.fixed-header\r\n .v-datatable.v-table\r\n .v-datatable__actions\r\n .v-datatable__actions__pagination {\r\n white-space: nowrap;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayerTable.vue?vue&type=template&id=da237cba\"\nimport script from \"./LayerTable.vue?vue&type=script&lang=js\"\nexport * from \"./LayerTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./LayerTable.vue?vue&type=style&index=0&id=da237cba&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <v-fade-transition>\r\n <div\r\n v-show=\"bottomSheets.length > 0\"\r\n style=\"max-height: 400px;\"\r\n v-resize=\"onResize\"\r\n ref=\"bottomTabs\"\r\n >\r\n <v-layout\r\n align-start\r\n justify-start\r\n column\r\n fill-height\r\n style=\"margin: 0px;\"\r\n >\r\n <v-tabs\r\n style=\"width: 100%; overflow-y: none; z-index: 10\"\r\n v-model=\"active\"\r\n color=\"grey darken-2\"\r\n dark\r\n slider-color=\"primary\"\r\n >\r\n <v-tab\r\n v-for=\"(item, index) in bottomSheets\"\r\n :key=\"index\"\r\n ripple\r\n @click=\"show\"\r\n >\r\n {{ item.useValueAsKey ? item.value : item.title }}\r\n <v-btn @click.stop=\"deleteTab(index)\" icon>\r\n <v-icon small>close</v-icon>\r\n </v-btn>\r\n </v-tab>\r\n <v-tab-item\r\n v-for=\"(bottomSheet, sheetIndex) in bottomSheets\"\r\n :key=\"sheetIndex\"\r\n >\r\n <layer-table\r\n v-if=\"bottomSheet.type == 'featureTable'\"\r\n v-show=\"showTabs\"\r\n :layer=\"bottomSheet\"\r\n :is-table=\"bottomSheet.isTable\"\r\n ></layer-table>\r\n\r\n <analysis-elevation-profile\r\n v-if=\"bottomSheet.type == 'elevationProfile'\"\r\n :line-geometry=\"bottomSheet.lineGeometry\"\r\n />\r\n\r\n <analysis-consequence-factors\r\n v-if=\"bottomSheet.type == 'consequenceFactorAnalysis'\"\r\n :polygon-geometry=\"bottomSheet.polygonGeometry\"\r\n />\r\n\r\n <analysis-arealplan-innspill\r\n v-if=\"bottomSheet.type == 'arealplanAnalysis'\"\r\n :polygon-geometry=\"bottomSheet.polygonGeometry\"\r\n />\r\n </v-tab-item>\r\n <v-spacer></v-spacer>\r\n <v-btn @click=\"showHide\" icon>\r\n <v-icon>{{ showTabs ? \"expand_more\" : \"expand_less\" }}</v-icon>\r\n </v-btn>\r\n </v-tabs>\r\n </v-layout>\r\n </div>\r\n </v-fade-transition>\r\n</template>\r\n\r\n<script>\r\nimport LayerTable from \"@/pages/MapPage/Tools/Layers/LayerTable\";\r\nimport { mapState, mapActions } from \"vuex\";\r\nexport default {\r\n name: \"TheBottomTabs\",\r\n data() {\r\n return {\r\n active: null,\r\n windowSize: {\r\n x: 0,\r\n y: 0\r\n }\r\n };\r\n },\r\n watch: {\r\n tabsHiddenSplitPaneHeight: function(newVal) {\r\n if (!this.showTabs && this.bottomSheets.length > 0) {\r\n this.setBottomTabsHeight(newVal + 0.5);\r\n this.setMapHeight(100 - (newVal + 0.0));\r\n }\r\n },\r\n bottomSheets: {\r\n handler: function(newVal) {\r\n this.active = newVal.length - 1;\r\n },\r\n deep: true\r\n }\r\n },\r\n computed: {\r\n ...mapState([\"showTabs\", \"bottomTabsHeight\", \"mapHeight\", \"bottomSheets\"]),\r\n tabsHiddenSplitPaneHeight() {\r\n this.showTabs;\r\n return 48 / (this.windowSize.y / 100);\r\n }\r\n },\r\n components: {\r\n LayerTable,\r\n AnalysisElevationProfile: () =>\r\n import(\"@/pages/MapPage/Tools/Analysis/AnalysisElevationProfile.vue\"),\r\n AnalysisConsequenceFactors: () =>\r\n import(\"@/pages/MapPage/Tools/Analysis/AnalysisConsequenceFactors\"),\r\n AnalysisArealplanInnspill: () =>\r\n import(\"@/pages/MapPage/Tools/Analysis/AnalysisArealplanInnspill\")\r\n },\r\n methods: {\r\n ...mapActions([\r\n \"setBottomTabsHeight\",\r\n \"setMapHeight\",\r\n \"setShowTabs\",\r\n \"removeFeatureTable\"\r\n ]),\r\n onResize() {\r\n this.windowSize = { x: window.innerWidth, y: window.innerHeight };\r\n },\r\n showHide() {\r\n this.setBottomTabsHeight(this.tabsHiddenSplitPaneHeight + 0.5);\r\n this.setMapHeight(100 - (this.tabsHiddenSplitPaneHeight + 0.0));\r\n this.setShowTabs(!this.showTabs);\r\n this.onResize();\r\n },\r\n show() {\r\n this.setShowTabs(true);\r\n },\r\n next() {\r\n const active = parseInt(this.active);\r\n this.active = active < 2 ? active + 1 : 0;\r\n },\r\n deleteTab(index) {\r\n if (this.active > 0) {\r\n this.active = this.active - 1;\r\n } else {\r\n this.active = this.active + 1;\r\n }\r\n this.removeFeatureTable(index);\r\n if (this.bottomSheets.length == 0) {\r\n this.setShowTabs(false);\r\n this.setMapHeight(100);\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.onResize();\r\n }\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheBottomTabs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheBottomTabs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TheBottomTabs.vue?vue&type=template&id=32f9d6ac\"\nimport script from \"./TheBottomTabs.vue?vue&type=script&lang=js\"\nexport * from \"./TheBottomTabs.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}