openc3-cosmos-tool-bucketexplorer 5.16.1 → 5.16.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"js/970.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?c4b5","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/axios.js","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/api.js","webpack://@openc3/cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?78f1","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?98c2","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?b0c6","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?92ac","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?b892","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?9d44"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"title\":_vm.title}}),_vm._v(\" \"),_c('v-card',{attrs:{\"width\":\"100%\"}},[_c('div',{staticStyle:{\"padding-left\":\"5px\",\"padding-top\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Buckets:\")]),_vm._v(\" \"),_vm._l((_vm.buckets),function(bucket,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectBucket(bucket)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-bucket\")])],1),_vm._v(\"\\n \"+_vm._s(bucket)+\"\\n \")],1)})],2),_vm._v(\" \"),(_vm.volumes.length !== 0)?_c('div',{staticStyle:{\"padding-left\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Volumes:\")]),_vm._v(\" \"),_vm._l((_vm.volumes),function(volume,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectVolume(volume)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-folder\")])],1),_vm._v(\"\\n \"+_vm._s(volume)+\"\\n \")],1)})],2):_vm._e(),_vm._v(\" \"),_c('v-card-title',{staticStyle:{\"padding-top\":\"0px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.root)+\" Files\\n \"),_c('v-spacer'),_vm._v(\" \"),_c('v-text-field',{staticClass:\"search\",attrs:{\"label\":\"Search\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.files,\"search\":_vm.search,\"items-per-page\":1000,\"footer-props\":{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"click:row\":_vm.fileClick},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-row',{staticClass:\"ma-0\",staticStyle:{\"background-color\":\"var(--color-background-surface-header)\"}},[_c('v-btn',{attrs:{\"icon\":\"\"}},[_c('v-icon',{on:{\"click\":_vm.backArrow}},[_vm._v(\"mdi-chevron-left-box-outline\")])],1),_vm._v(\" \"),_c('span',{staticClass:\".text-body-1 ma-2 font-size\",attrs:{\"data-test\":\"file-path\"}},[_vm._v(\"/\"+_vm._s(_vm.path))]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('div',{staticClass:\"pa-1 font-size\"},[_vm._v(\"\\n Folder Size: \"+_vm._s(_vm.folderTotal)+\"\\n \"),_c('span',{staticClass:\"small-font-size\"},[_vm._v(\"(not recursive)\")])]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),(_vm.mode === 'bucket')?_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('span',{staticClass:\"pa-1 font-size\"},[_vm._v(\"Upload File\")]),_vm._v(\" \"),_c('v-file-input',{staticClass:\"file-input\",attrs:{\"hide-input\":\"\",\"hide-details\":\"\",\"prepend-icon\":\"mdi-upload\",\"data-test\":\"upload-file\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1):_vm._e()],1)]},proxy:true},{key:\"item.name\",fn:function({ item }){return [_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(_vm._s(item.icon))]),_vm._v(_vm._s(item.name)+\"\\n \")]}},{key:\"item.size\",fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(item.size ? item.size.toLocaleString() : '')+\"\\n \")]}},{key:\"item.action\",fn:function({ item }){return [(item.icon === 'mdi-file')?_c('v-icon',{staticClass:\"mr-3\",attrs:{\"data-test\":\"download-file\"},on:{\"click\":function($event){return _vm.downloadFile(item.name)}}},[_vm._v(\"mdi-download-box\")]):_vm._e(),_vm._v(\" \"),(item.icon === 'mdi-file')?_c('v-icon',{attrs:{\"data-test\":\"delete-file\"},on:{\"click\":function($event){return _vm.deleteFile(item.name)}}},[_vm._v(\"mdi-delete\")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.uploadPathDialog),callback:function ($$v) {_vm.uploadPathDialog=$$v},expression:\"uploadPathDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" Upload Path \")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\"This file path can be modified. New directories will be\\n automatically created.\")]),_vm._v(\" \"),_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"File Path\",\"data-test\":\"upload-file-path\"},model:{value:(_vm.uploadFilePath),callback:function ($$v) {_vm.uploadFilePath=$$v},expression:\"uploadFilePath\"}})],1),_vm._v(\" \"),_c('v-row',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"upload-file-cancel-btn\"},on:{\"click\":function($event){_vm.uploadPathDialog = false}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"data-test\":\"upload-file-submit-btn\"},on:{\"click\":function($event){$event.preventDefault();return _vm.uploadFile.apply(null, arguments)}}},[_vm._v(\"\\n Upload\\n \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('mounting-portal',{attrs:{\"mount-to\":\"#openc3-menu\",\"append\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"align-self\":\"end\"}},[_c('span',{staticClass:\"app-title mr-2\"},[_vm._v(_vm._s(_vm.title))])])],1),_vm._v(\" \"),_c('v-row',{staticClass:\"flex-nowrap\",attrs:{\"dense\":\"\"}},_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,ref:\"topmenu\",refInFor:true,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1 menu-button\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label}`)}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_vm._v(\" \"),_c('v-icon',{staticClass:\"myicon\",attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):(option.subMenu && option.subMenu.length > 0)?_c('div',{key:j},[_c('v-menu',{key:_vm.k,attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({key:j,attrs:{\"disabled\":option.disabled}},'v-list-item',attrs,false),on),[(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' +\n (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('v-icon',[_vm._v(\" mdi-chevron-right \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',_vm._l((option.subMenu),function(submenu,k){return _c('v-list-item',{key:k,on:{\"click\":function($event){return _vm.subMenuClick(submenu)}}},[(submenu.icon)?_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(submenu.icon))])],1):_vm._e(),_vm._v(\" \"),_c('v-list-item-title',[_vm._v(_vm._s(submenu.label))])],1)}),1)],1)],1):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label} ${option.label}`)},on:{\"click\":function($event){return option.command(option)}}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),_vm._v(\" \"),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label},model:{value:(option.checked),callback:function ($$v) {_vm.$set(option, \"checked\", $$v)},expression:\"option.checked\"}})],1):_vm._e(),_vm._v(\" \"),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label))]):_vm._e()],1)]})],2)],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=57d4fdd2&scoped=true\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=57d4fdd2&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57d4fdd2\",\n null\n \n)\n\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n },\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // headers: {\n // 'Ignore-Errors': '404',\n // },\n // })\n if (\n error.response.config.headers['Ignore-Errors'] &&\n error.response.config.headers['Ignore-Errors'].includes(\n error.response.status.toString(),\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n },\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","<!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" />\n <v-card width=\"100%\">\n <div style=\"padding-left: 5px; padding-top: 5px\">\n <span class=\"ma-2 font-size\">Buckets:</span>\n <v-chip\n v-for=\"(bucket, index) in buckets\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectBucket(bucket)\"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style=\"padding-left: 5px\" v-if=\"volumes.length !== 0\">\n <span class=\"ma-2 font-size\">Volumes:</span>\n <v-chip\n v-for=\"(volume, index) in volumes\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectVolume(volume)\"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style=\"padding-top: 0px\">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n outlined\n dense\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"files\"\n :search=\"search\"\n :items-per-page=\"1000\"\n :footer-props=\"{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n }\"\n @click:row=\"fileClick\"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class=\"ma-0\"\n style=\"background-color: var(--color-background-surface-header)\"\n >\n <v-btn icon>\n <v-icon @click=\"backArrow\">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=\".text-body-1 ma-2 font-size\" data-test=\"file-path\"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class=\"pa-1 font-size\">\n Folder Size: {{ folderTotal }}\n <span class=\"small-font-size\">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style=\"display: flex\" v-if=\"mode === 'bucket'\">\n <span class=\"pa-1 font-size\">Upload File</span>\n <v-file-input\n v-model=\"file\"\n hide-input\n hide-details\n class=\"file-input\"\n prepend-icon=\"mdi-upload\"\n data-test=\"upload-file\"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name=\"{ item }\">\n <v-icon class=\"mr-2\">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size=\"{ item }\">\n {{ item.size ? item.size.toLocaleString() : '' }}\n </template>\n <template v-slot:item.action=\"{ item }\">\n <v-icon\n class=\"mr-3\"\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"downloadFile(item.name)\"\n data-test=\"download-file\"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"deleteFile(item.name)\"\n data-test=\"delete-file\"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model=\"uploadPathDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model=\"uploadFilePath\"\n hide-details\n label=\"File Path\"\n data-test=\"upload-file-path\"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"uploadPathDialog = false\"\n outlined\n class=\"mx-2\"\n data-test=\"upload-file-cancel-btn\"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent=\"uploadFile\"\n class=\"mx-2\"\n color=\"primary\"\n type=\"submit\"\n data-test=\"upload-file-submit-btn\"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport Api from '@openc3/tool-common/src/services/api'\nimport axios from 'axios'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: 'Bucket Explorer',\n search: '',\n root: '',\n mode: 'bucket',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n path: '',\n file: null,\n files: [],\n headers: [\n { text: 'Name', value: 'name' },\n { text: 'Size', value: 'size' },\n { text: 'Modified Date', value: 'modified' },\n { text: 'Action', value: 'action' },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get('/openc3-api/storage/buckets').then((response) => {\n this.buckets = response.data\n })\n Api.get('/openc3-api/storage/volumes').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split('/')\n if (parts[0] === '') {\n this.mode = 'volume'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join('/')\n } else {\n this.mode = 'bucket'\n this.root = parts[0]\n this.path = parts.slice(1).join('/')\n }\n this.updateFiles()\n }\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: 'Bucket Explorer',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = 'bucket'\n this.root = bucket\n this.path = ''\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = 'volume'\n this.root = volume\n this.path = ''\n this.update()\n },\n backArrow() {\n // Nothing to do if we're at the root so return\n if (this.path === '') return\n let parts = this.path.split('/')\n this.path = parts.slice(0, parts.length - 2).join('/')\n // Only append the last slash if we're not at the root\n // The root is 2 because it's the path before clicking back\n if (parts.length > 2) {\n this.path += '/'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === 'mdi-folder') {\n if (this.root === '') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = 'download'\n if (this.mode === 'volume') {\n api = 'download_file'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === 'bucket') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = href\n link.setAttribute('download', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn't slap a '/' at the beginning\n if (this.uploadFilePath.startsWith('/')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split('/').slice(0, -1).join('/') + '/'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: 'mdi-folder' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: 'mdi-file',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BucketExplorer.vue?vue&type=template&id=2ae0d14e&scoped=true\"\nimport script from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nexport * from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nimport style0 from \"./BucketExplorer.vue?vue&type=style&index=0&id=2ae0d14e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ae0d14e\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.font-size[data-v-2ae0d14e]{font-size:1rem}.small-font-size[data-v-2ae0d14e]{font-size:.8rem}.file-input[data-v-2ae0d14e]{padding-top:0;margin-top:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-title[data-v-57d4fdd2]{font-size:2rem}.menu-button[data-v-57d4fdd2]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-57d4fdd2]{padding-right:5px}.myicon[data-v-57d4fdd2]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-57d4fdd2] .v-label{margin-left:5px}.v-list-item__icon[data-v-57d4fdd2]{margin-right:15px!important}.v-list-item__title[data-v-57d4fdd2]{color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=style&index=0&id=2ae0d14e&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2b6de4e2\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=57d4fdd2&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7de62207\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_uucdexesw","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","title","_v","staticStyle","staticClass","_l","buckets","bucket","index","key","on","$event","stopPropagation","selectBucket","_s","volumes","length","b","volume","selectVolume","_e","root","model","value","search","callback","$$v","expression","headers","files","showFirstLastPage","itemsPerPageOptions","firstIcon","lastIcon","prevIcon","nextIcon","fileClick","scopedSlots","_u","fn","backArrow","path","folderTotal","mode","file","proxy","item","icon","name","size","toLocaleString","downloadFile","deleteFile","uploadPathDialog","uploadFilePath","preventDefault","uploadFile","apply","arguments","staticRenderFns","menus","menu","i","ref","refInFor","_g","_b","formatDT","label","domProps","radioGroup","items","option","j","divider","subMenu","k","disabled","radio","checkbox","style","submenu","subMenuClick","command","checked","$set","props","type","Array","default","String","methods","string","replaceAll","toLowerCase","$refs","topmenu","isActive","mounted","document","component","vueInstance","Vue","axiosInstance","axios","create","baseURL","location","origin","timeout","params","interceptors","response","use","error","_error$response","_error$response2","_error$response3","_error$response4","_error$response5","status","OpenC3Auth","updateToken","defaultMinValidity","then","refreshed","setTokens","config","includes","toString","Promise","reject","body","statusText","data","message","exception","class","_error$response6","$notify","serious","request","async","method","url","noAuth","noScope","login","localStorage","openc3Token","window","openc3Scope","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","put","post","delete","components","TopBar","text","computed","reduce","a","created","Api","$route","parts","split","slice","join","updateFiles","watch","update","$router","push","event","filename","toUpperCase","api","encodeURIComponent","href","decodedData","atob","contents","uInt8Array","Uint8Array","charCodeAt","blob","Blob","URL","createObjectURL","link","createElement","setAttribute","click","catch","caution","startsWith","presignedRequest","$dialog","confirm","okText","cancelText","dialog","map","concat","modified","___CSS_LOADER_EXPORT___","module","id","content","__esModule","locals","exports","add"],"sourceRoot":""}
1
+ {"version":3,"file":"js/970.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?c4b5","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/axios.js","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/api.js","webpack://@openc3/cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?78f1","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?98c2","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?b0c6","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?92ac","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?b892","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?9d44"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"title\":_vm.title}}),_vm._v(\" \"),_c('v-card',{attrs:{\"width\":\"100%\"}},[_c('div',{staticStyle:{\"padding-left\":\"5px\",\"padding-top\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Buckets:\")]),_vm._v(\" \"),_vm._l((_vm.buckets),function(bucket,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectBucket(bucket)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-bucket\")])],1),_vm._v(\"\\n \"+_vm._s(bucket)+\"\\n \")],1)})],2),_vm._v(\" \"),(_vm.volumes.length !== 0)?_c('div',{staticStyle:{\"padding-left\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Volumes:\")]),_vm._v(\" \"),_vm._l((_vm.volumes),function(volume,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectVolume(volume)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-folder\")])],1),_vm._v(\"\\n \"+_vm._s(volume)+\"\\n \")],1)})],2):_vm._e(),_vm._v(\" \"),_c('v-card-title',{staticStyle:{\"padding-top\":\"0px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.root)+\" Files\\n \"),_c('v-spacer'),_vm._v(\" \"),_c('v-text-field',{staticClass:\"search\",attrs:{\"label\":\"Search\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.files,\"search\":_vm.search,\"items-per-page\":1000,\"footer-props\":{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"click:row\":_vm.fileClick},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-row',{staticClass:\"ma-0\",staticStyle:{\"background-color\":\"var(--color-background-surface-header)\"}},[_c('v-btn',{attrs:{\"icon\":\"\"}},[_c('v-icon',{on:{\"click\":_vm.backArrow}},[_vm._v(\"mdi-chevron-left-box-outline\")])],1),_vm._v(\" \"),_c('span',{staticClass:\".text-body-1 ma-2 font-size\",attrs:{\"data-test\":\"file-path\"}},[_vm._v(\"/\"+_vm._s(_vm.path))]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('div',{staticClass:\"pa-1 font-size\"},[_vm._v(\"\\n Folder Size: \"+_vm._s(_vm.folderTotal)+\"\\n \"),_c('span',{staticClass:\"small-font-size\"},[_vm._v(\"(not recursive)\")])]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),(_vm.mode === 'bucket')?_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('span',{staticClass:\"pa-1 font-size\"},[_vm._v(\"Upload File\")]),_vm._v(\" \"),_c('v-file-input',{staticClass:\"file-input\",attrs:{\"hide-input\":\"\",\"hide-details\":\"\",\"prepend-icon\":\"mdi-upload\",\"data-test\":\"upload-file\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1):_vm._e()],1)]},proxy:true},{key:\"item.name\",fn:function({ item }){return [_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(_vm._s(item.icon))]),_vm._v(_vm._s(item.name)+\"\\n \")]}},{key:\"item.size\",fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(item.size ? item.size.toLocaleString() : '')+\"\\n \")]}},{key:\"item.action\",fn:function({ item }){return [(item.icon === 'mdi-file')?_c('v-icon',{staticClass:\"mr-3\",attrs:{\"data-test\":\"download-file\"},on:{\"click\":function($event){return _vm.downloadFile(item.name)}}},[_vm._v(\"mdi-download-box\")]):_vm._e(),_vm._v(\" \"),(item.icon === 'mdi-file')?_c('v-icon',{attrs:{\"data-test\":\"delete-file\"},on:{\"click\":function($event){return _vm.deleteFile(item.name)}}},[_vm._v(\"mdi-delete\")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.uploadPathDialog),callback:function ($$v) {_vm.uploadPathDialog=$$v},expression:\"uploadPathDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" Upload Path \")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\"This file path can be modified. New directories will be\\n automatically created.\")]),_vm._v(\" \"),_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"File Path\",\"data-test\":\"upload-file-path\"},model:{value:(_vm.uploadFilePath),callback:function ($$v) {_vm.uploadFilePath=$$v},expression:\"uploadFilePath\"}})],1),_vm._v(\" \"),_c('v-row',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"upload-file-cancel-btn\"},on:{\"click\":function($event){_vm.uploadPathDialog = false}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"data-test\":\"upload-file-submit-btn\"},on:{\"click\":function($event){$event.preventDefault();return _vm.uploadFile.apply(null, arguments)}}},[_vm._v(\"\\n Upload\\n \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('mounting-portal',{attrs:{\"mount-to\":\"#openc3-menu\",\"append\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"align-self\":\"end\"}},[_c('span',{staticClass:\"app-title mr-2\"},[_vm._v(_vm._s(_vm.title))])])],1),_vm._v(\" \"),_c('v-row',{staticClass:\"flex-nowrap\",attrs:{\"dense\":\"\"}},_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,ref:\"topmenu\",refInFor:true,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1 menu-button\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label}`)}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_vm._v(\" \"),_c('v-icon',{staticClass:\"myicon\",attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):(option.subMenu && option.subMenu.length > 0)?_c('div',{key:j},[_c('v-menu',{key:_vm.k,attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({key:j,attrs:{\"disabled\":option.disabled}},'v-list-item',attrs,false),on),[(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' +\n (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('v-icon',[_vm._v(\" mdi-chevron-right \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',_vm._l((option.subMenu),function(submenu,k){return _c('v-list-item',{key:k,on:{\"click\":function($event){return _vm.subMenuClick(submenu)}}},[(submenu.icon)?_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(submenu.icon))])],1):_vm._e(),_vm._v(\" \"),_c('v-list-item-title',[_vm._v(_vm._s(submenu.label))])],1)}),1)],1)],1):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label} ${option.label}`)},on:{\"click\":function($event){return option.command(option)}}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),_vm._v(\" \"),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label},model:{value:(option.checked),callback:function ($$v) {_vm.$set(option, \"checked\", $$v)},expression:\"option.checked\"}})],1):_vm._e(),_vm._v(\" \"),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label))]):_vm._e()],1)]})],2)],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=57d4fdd2&scoped=true\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=57d4fdd2&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57d4fdd2\",\n null\n \n)\n\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n },\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // headers: {\n // 'Ignore-Errors': '404',\n // },\n // })\n if (\n error.response.config.headers['Ignore-Errors'] &&\n error.response.config.headers['Ignore-Errors'].includes(\n error.response.status.toString(),\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n },\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n {\n data,\n params = {},\n headers,\n noAuth = false,\n noScope = false,\n onUploadProgress = {},\n } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n onUploadProgress,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n {\n params,\n headers = acceptOnlyDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('get', path, {\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n put: function (\n path,\n {\n data,\n params,\n headers = fullDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('put', path, {\n data,\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n post: function (\n path,\n {\n data,\n params,\n headers = fullDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('post', path, {\n data,\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n delete: function (\n path,\n {\n params,\n headers = acceptOnlyDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('delete', path, {\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n}\n","<!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" />\n <v-card width=\"100%\">\n <div style=\"padding-left: 5px; padding-top: 5px\">\n <span class=\"ma-2 font-size\">Buckets:</span>\n <v-chip\n v-for=\"(bucket, index) in buckets\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectBucket(bucket)\"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style=\"padding-left: 5px\" v-if=\"volumes.length !== 0\">\n <span class=\"ma-2 font-size\">Volumes:</span>\n <v-chip\n v-for=\"(volume, index) in volumes\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectVolume(volume)\"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style=\"padding-top: 0px\">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n outlined\n dense\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"files\"\n :search=\"search\"\n :items-per-page=\"1000\"\n :footer-props=\"{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n }\"\n @click:row=\"fileClick\"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class=\"ma-0\"\n style=\"background-color: var(--color-background-surface-header)\"\n >\n <v-btn icon>\n <v-icon @click=\"backArrow\">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=\".text-body-1 ma-2 font-size\" data-test=\"file-path\"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class=\"pa-1 font-size\">\n Folder Size: {{ folderTotal }}\n <span class=\"small-font-size\">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style=\"display: flex\" v-if=\"mode === 'bucket'\">\n <span class=\"pa-1 font-size\">Upload File</span>\n <v-file-input\n v-model=\"file\"\n hide-input\n hide-details\n class=\"file-input\"\n prepend-icon=\"mdi-upload\"\n data-test=\"upload-file\"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name=\"{ item }\">\n <v-icon class=\"mr-2\">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size=\"{ item }\">\n {{ item.size ? item.size.toLocaleString() : '' }}\n </template>\n <template v-slot:item.action=\"{ item }\">\n <v-icon\n class=\"mr-3\"\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"downloadFile(item.name)\"\n data-test=\"download-file\"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"deleteFile(item.name)\"\n data-test=\"delete-file\"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model=\"uploadPathDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model=\"uploadFilePath\"\n hide-details\n label=\"File Path\"\n data-test=\"upload-file-path\"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"uploadPathDialog = false\"\n outlined\n class=\"mx-2\"\n data-test=\"upload-file-cancel-btn\"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent=\"uploadFile\"\n class=\"mx-2\"\n color=\"primary\"\n type=\"submit\"\n data-test=\"upload-file-submit-btn\"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport Api from '@openc3/tool-common/src/services/api'\nimport axios from 'axios'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: 'Bucket Explorer',\n search: '',\n root: '',\n mode: 'bucket',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n path: '',\n file: null,\n files: [],\n headers: [\n { text: 'Name', value: 'name' },\n { text: 'Size', value: 'size' },\n { text: 'Modified Date', value: 'modified' },\n { text: 'Action', value: 'action' },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get('/openc3-api/storage/buckets').then((response) => {\n this.buckets = response.data\n })\n Api.get('/openc3-api/storage/volumes').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split('/')\n if (parts[0] === '') {\n this.mode = 'volume'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join('/')\n } else {\n this.mode = 'bucket'\n this.root = parts[0]\n this.path = parts.slice(1).join('/')\n }\n this.updateFiles()\n }\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: 'Bucket Explorer',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = 'bucket'\n this.root = bucket\n this.path = ''\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = 'volume'\n this.root = volume\n this.path = ''\n this.update()\n },\n backArrow() {\n // Nothing to do if we're at the root so return\n if (this.path === '') return\n let parts = this.path.split('/')\n this.path = parts.slice(0, parts.length - 2).join('/')\n // Only append the last slash if we're not at the root\n // The root is 2 because it's the path before clicking back\n if (parts.length > 2) {\n this.path += '/'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === 'mdi-folder') {\n if (this.root === '') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = 'download'\n if (this.mode === 'volume') {\n api = 'download_file'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === 'bucket') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = href\n link.setAttribute('download', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn't slap a '/' at the beginning\n if (this.uploadFilePath.startsWith('/')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split('/').slice(0, -1).join('/') + '/'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: 'mdi-folder' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: 'mdi-file',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BucketExplorer.vue?vue&type=template&id=2ae0d14e&scoped=true\"\nimport script from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nexport * from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nimport style0 from \"./BucketExplorer.vue?vue&type=style&index=0&id=2ae0d14e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ae0d14e\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.font-size[data-v-2ae0d14e]{font-size:1rem}.small-font-size[data-v-2ae0d14e]{font-size:.8rem}.file-input[data-v-2ae0d14e]{padding-top:0;margin-top:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-title[data-v-57d4fdd2]{font-size:2rem}.menu-button[data-v-57d4fdd2]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-57d4fdd2]{padding-right:5px}.myicon[data-v-57d4fdd2]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-57d4fdd2] .v-label{margin-left:5px}.v-list-item__icon[data-v-57d4fdd2]{margin-right:15px!important}.v-list-item__title[data-v-57d4fdd2]{color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=style&index=0&id=2ae0d14e&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2b6de4e2\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=57d4fdd2&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7de62207\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_uucdexesw","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","title","_v","staticStyle","staticClass","_l","buckets","bucket","index","key","on","$event","stopPropagation","selectBucket","_s","volumes","length","b","volume","selectVolume","_e","root","model","value","search","callback","$$v","expression","headers","files","showFirstLastPage","itemsPerPageOptions","firstIcon","lastIcon","prevIcon","nextIcon","fileClick","scopedSlots","_u","fn","backArrow","path","folderTotal","mode","file","proxy","item","icon","name","size","toLocaleString","downloadFile","deleteFile","uploadPathDialog","uploadFilePath","preventDefault","uploadFile","apply","arguments","staticRenderFns","menus","menu","i","ref","refInFor","_g","_b","formatDT","label","domProps","radioGroup","items","option","j","divider","subMenu","k","disabled","radio","checkbox","style","submenu","subMenuClick","command","checked","$set","props","type","Array","default","String","methods","string","replaceAll","toLowerCase","$refs","topmenu","isActive","mounted","document","component","vueInstance","Vue","axiosInstance","axios","create","baseURL","location","origin","timeout","params","interceptors","response","use","error","_error$response","_error$response2","_error$response3","_error$response4","_error$response5","status","OpenC3Auth","updateToken","defaultMinValidity","then","refreshed","setTokens","config","includes","toString","Promise","reject","body","statusText","data","message","exception","class","_error$response6","$notify","serious","request","async","method","url","noAuth","noScope","onUploadProgress","login","localStorage","openc3Token","window","openc3Scope","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","put","post","delete","components","TopBar","text","computed","reduce","a","created","Api","$route","parts","split","slice","join","updateFiles","watch","update","$router","push","event","filename","toUpperCase","api","encodeURIComponent","href","decodedData","atob","contents","uInt8Array","Uint8Array","charCodeAt","blob","Blob","URL","createObjectURL","link","createElement","setAttribute","click","catch","caution","startsWith","presignedRequest","$dialog","confirm","okText","cancelText","dialog","map","concat","modified","___CSS_LOADER_EXPORT___","module","id","content","__esModule","locals","exports","add"],"sourceRoot":""}