{"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":""}