openc3-cosmos-tool-tablemanager 5.19.0 → 5.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/tools/tablemanager/js/173.js +1 -1
- data/tools/tablemanager/js/173.js.map +1 -1
- data/tools/tablemanager/js/{409.js → 746.js} +2 -2
- data/tools/tablemanager/js/746.js.map +1 -0
- data/tools/tablemanager/js/app.js +1 -1
- data/tools/tablemanager/js/app.js.map +1 -1
- metadata +4 -4
- data/tools/tablemanager/js/409.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/173.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/axios.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/api.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/openc3-api.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?c4b5","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/tools/base/util/timeFilters.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/config-parser.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/widgets/Widget.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/widgets/VWidget.js","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableItem.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue?e706","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue?f5aa","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableRow.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue?5117","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue?1698","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/tools/base/util/fileIcon.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue?ab62","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue?07a6","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue?abaa","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue?5fff","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableManager.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?eb42","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?b261","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?9d27","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?e2ab","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?c71f","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?ca18"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_vm._v(\" \"),_c('v-snackbar',{attrs:{\"top\":\"\",\"timeout\":-1,\"color\":\"orange\"},scopedSlots:_vm._u([{key:\"action\",fn:function({ attrs }){return [_c('v-btn',_vm._b({attrs:{\"text\":\"\",\"color\":\"danger\",\"data-test\":\"unlock-button\"},on:{\"click\":_vm.confirmLocalUnlock}},'v-btn',attrs,false),[_vm._v(\"\\n Unlock\\n \")]),_vm._v(\" \"),_c('v-btn',_vm._b({attrs:{\"text\":\"\"},on:{\"click\":() => {\n _vm.showReadOnlyToast = false\n }}},'v-btn',attrs,false),[_vm._v(\"\\n dismiss\\n \")])]}}]),model:{value:(_vm.showReadOnlyToast),callback:function ($$v) {_vm.showReadOnlyToast=$$v},expression:\"showReadOnlyToast\"}},[_c('v-icon',[_vm._v(\" mdi-pencil-off \")]),_vm._v(\"\\n \"+_vm._s(_vm.lockedBy)+\" is editing this script. Editor is in read-only mode\\n \")],1),_vm._v(\" \"),_c('v-file-input',{ref:\"fileInput\",staticStyle:{\"position\":\"fixed\",\"top\":\"-100%\"},attrs:{\"show-size\":\"\",\"accept\":\".bin\",\"data-test\":\"file-input\"},model:{value:(_vm.fileInput),callback:function ($$v) {_vm.fileInput=$$v},expression:\"fileInput\"}}),_vm._v(\" \"),_c('v-card',[_c('v-card-text',[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"filename\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Filename\",\"id\":\"filename\",\"data-test\":\"filename\"},model:{value:(_vm.fullFilename),callback:function ($$v) {_vm.fullFilename=$$v},expression:\"fullFilename\"}})],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"filename\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Definition\",\"id\":\"definition-filename\",\"data-test\":\"definition-filename\"},model:{value:(_vm.definitionFilename),callback:function ($$v) {_vm.definitionFilename=$$v},expression:\"definitionFilename\"}})],1)],1),_vm._v(\" \"),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"mr-auto\",attrs:{\"cols\":\"auto\"}},[_c('span',{staticClass:\"text-body-1 ma-2\"},[_vm._v(\"File Download:\")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-binary\"},on:{\"click\":function($event){return _vm.downloadBinary(null)}}},[_vm._v(\"\\n Binary\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-code \")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-definition\"},on:{\"click\":function($event){return _vm.downloadDefinition(null)}}},[_vm._v(\"\\n Definition\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document-edit \")])],1),_vm._v(\" \"),_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-report\"},on:{\"click\":function($event){return _vm.downloadReport(null)}}},[_vm._v(\"\\n Report\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":!_vm.uploadScript,\"data-test\":\"upload-file\"},on:{\"click\":function($event){return _vm.upload()}}},[_vm._v(\"\\n Upload\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-upload \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":!_vm.downloadScript,\"data-test\":\"download-file\"},on:{\"click\":function($event){return _vm.download()}}},[_vm._v(\"\\n Download\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-download \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({},'span',attrs,false),on),[_c('v-checkbox',{staticClass:\"shrink mt-0\",attrs:{\"label\":\"B/G\",\"data-test\":\"upload-background\"},model:{value:(_vm.scriptBackground),callback:function ($$v) {_vm.scriptBackground=$$v},expression:\"scriptBackground\"}})],1)]}}])},[_vm._v(\" \"),_c('span',[_vm._v(\"Run upload download scripts in the background\")])])],1)],1)],1),_vm._v(\" \"),_c('v-card-title',{staticStyle:{\"padding-top\":\"0px\"}},[_vm._v(\"\\n Items\\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-tabs',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.tables),function(table,index){return _c('v-tab',{key:index},[_vm._v(\"\\n \"+_vm._s(table.name)+\"\\n \")])}),1),_vm._v(\" \"),_c('v-tabs-items',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.tables),function(table,index){return _c('v-tab-item',{key:`${_vm.filename}${index}`},[_c('v-data-table',{attrs:{\"headers\":table.headers,\"items\":table.rows,\"search\":_vm.search,\"items-per-page\":20,\"footer-props\":{\n itemsPerPageOptions: [10, 20, 50, 100, -1],\n },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"dense\":\"\",\"data-test\":table.name},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('table-row',{key:item[0].name,attrs:{\"items\":item},on:{\"change\":function($event){return _vm.onChange(item, $event)}}})]}},(_vm.tables.length > 1)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"ma-3\",staticStyle:{\"position\":\"absolute\"}},[_c('span',{staticClass:\"text-body-1 mr-3\"},[_vm._v(\"Table Download:\")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-binary\"},on:{\"click\":function($event){return _vm.downloadBinary(table.name)}}},[_vm._v(\"\\n Binary\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-code \")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-definition\"},on:{\"click\":function($event){return _vm.downloadDefinition(table.name)}}},[_vm._v(\"\\n Definition\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document-edit \")])],1),_vm._v(\" \"),_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-report\"},on:{\"click\":function($event){return _vm.downloadReport(table.name)}}},[_vm._v(\"\\n Report\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document \")])],1)],1)]},proxy:true}:null],null,true)})],1)}),1)],1),_vm._v(\" \"),(_vm.fileOpen)?_c('file-open-save-dialog',{attrs:{\"type\":\"open\",\"api-url\":\"/openc3-api/tables\"},on:{\"file\":function($event){return _vm.setFile($event)},\"error\":function($event){return _vm.setError($event)}},model:{value:(_vm.fileOpen),callback:function ($$v) {_vm.fileOpen=$$v},expression:\"fileOpen\"}}):_vm._e(),_vm._v(\" \"),(_vm.showSaveAs)?_c('file-open-save-dialog',{attrs:{\"type\":\"save\",\"require-target-parent-dir\":\"\",\"api-url\":\"/openc3-api/tables\",\"input-filename\":_vm.filename},on:{\"filename\":function($event){return _vm.saveAsFilename($event)},\"error\":function($event){return _vm.setError($event)}},model:{value:(_vm.showSaveAs),callback:function ($$v) {_vm.showSaveAs=$$v},expression:\"showSaveAs\"}}):_vm._e(),_vm._v(\" \"),_c('simple-text-dialog',{attrs:{\"title\":_vm.errorTitle,\"text\":_vm.errorText},model:{value:(_vm.showError),callback:function ($$v) {_vm.showError=$$v},expression:\"showError\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\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 = false,\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 // Everything from the front-end is manual by default\n // The various api methods decide whether to pass the manual\n // flag to the authorize routine\n headers['manual'] = true\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 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 2024, 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\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(\n method,\n params,\n kwparams = {},\n headerOptions = {},\n timeout = 60000\n ) {\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 this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n // Everything from the front-end is manual by default\n // The various api methods decide whether to pass the manual\n // flag to the authorize routine\n headerOptions['manual'] = true\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n timeout: timeout,\n }\n )\n // let data = response.data\n // if (data.error) {\n // let err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n let err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n // NOTE: Openc3Screen.vue uses this specific message to determine\n // if the CmdTlmApi server is down. Don't change unless also changing there.\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n interface_cmd(interface_name, command_name, ...command_params) {\n return this.exec('interface_cmd', [\n interface_name,\n command_name,\n ...command_params,\n ])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_param(target, packet, item) {\n return this.exec('get_param', [target, packet, item])\n }\n // DEPRECATED for get_param\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_names() {\n return this.exec('get_target_names', [])\n }\n // DEPRECATED\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_tlm(target_name, packet_name) {\n return this.exec('get_tlm', [target_name, packet_name])\n }\n // DEPRECATED\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_tlm(target_name) {\n return this.exec('get_all_tlm', [target_name])\n }\n // DEPRECATED\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_tlm_names(target_name, hidden = false) {\n return this.exec('get_all_tlm_names', [target_name], { hidden: hidden })\n }\n // DEPRECATED\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n let len = data.length\n let converted = null\n for (let i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30, cache_timeout = null) {\n let kw_args = {\n stale_time: stale_time,\n }\n if (cache_timeout !== null) {\n kw_args['cache_timeout'] = cache_timeout\n }\n const data = await this.exec(\n 'get_tlm_values',\n [items],\n kw_args,\n {},\n 10000 // 10s timeout ... should never be this long\n )\n let len = data[0].length\n let converted = null\n for (let i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n let err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n let converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED'\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n }\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_cmds(target_name) {\n return this.exec('get_all_cmds', [target_name])\n }\n // DEPRECATED for get_all_cmds\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_cmd_names(target_name, hidden = false) {\n return this.exec('get_all_cmd_names', [target_name], { hidden: hidden })\n }\n // DEPRECATED for get_all_cmd_names\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_cmd(target_name, command_name) {\n return this.exec('get_cmd', [target_name, command_name])\n }\n // DEPRECATED for get_cmd\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n let converted = null\n for (let key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n build_cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_cmd', target_name)\n } else {\n return this._cmd('build_cmd', target_name, command_name, param_list)\n }\n }\n // DEPRECATED for build_cmd\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n set_setting(name, data) {\n return this.exec('set_setting', [name, data])\n }\n\n // DEPRECATED\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","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',{staticClass:\"list-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',{staticClass:\"list-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=0af23388&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=0af23388&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 \"0af23388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('td',{staticClass:\"text-start\"},[_vm._v(_vm._s(_vm.dataItems[0].index))]),_vm._v(\" \"),(_vm.oneDimensional)?_c('td',{staticClass:\"text-start\"},[_vm._v(_vm._s(_vm.dataItems[0].name))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.dataItems),function(item,index){return _c('table-item',{key:item.name,attrs:{\"item\":item},on:{\"change\":function($event){return _vm.onChange(item, index, $event)}}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('td',[(_vm.isCheckbox)?_c('v-checkbox',{attrs:{\"dense\":\"\",\"hide-details\":\"\",\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-checkbox\"},on:{\"change\":_vm.checkboxChange},model:{value:(_vm.checkValue),callback:function ($$v) {_vm.checkValue=$$v},expression:\"checkValue\"}}):(_vm.dataItem.states)?_c('v-select',{attrs:{\"dense\":\"\",\"hide-details\":\"\",\"items\":_vm.itemStates,\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-select\"},on:{\"change\":_vm.stateChange},model:{value:(_vm.stateValue),callback:function ($$v) {_vm.stateValue=$$v},expression:\"stateValue\"}}):_c('v-text-field',{attrs:{\"solo\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"value\":_vm.format(_vm.dataItem.value),\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-text-field\"},on:{\"change\":_vm.textChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n# Copyright 2024 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\nimport { format, parseISO, subMinutes } from 'date-fns'\nimport { formatInTimeZone } from 'date-fns-tz'\n\nconst dateFormat = 'yyyy-MM-dd'\nconst timeFormat = 'HH:mm:ss.SSS'\nconst timeFormatHMS = 'HH:mm:ss'\nconst dateTimeFormat = `${dateFormat} ${timeFormat}`\nexport default {\n methods: {\n // Convert a UTC stamp into a local time\n formatUtcToLocal(date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n // subtrack off the timezone offset to get it back to local time\n return format(\n subMinutes(date, date.getTimezoneOffset()),\n dateTimeFormat\n )\n } else {\n return format(date, dateTimeFormat)\n }\n },\n formatDateTime(date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, dateTimeFormat)\n } else {\n return formatInTimeZone(date, timeZone, dateTimeFormat)\n }\n },\n formatDate: function (date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, dateFormat)\n } else {\n return formatInTimeZone(date, this.timeZone, dateFormat)\n }\n },\n formatTime: function (date, timeZone, formatString = timeFormat) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, formatString)\n } else {\n return formatInTimeZone(date, this.timeZone, formatString)\n }\n },\n formatTimeHMS: function (date, timeZone) {\n return this.formatTime(date, timeZone, timeFormatHMS)\n },\n formatTimestamp(timestamp, timeZone) {\n return this.formatDateTime(parseISO(timestamp), timeZone)\n },\n formatSeconds(secs, timeZone) {\n return this.formatDateTime(new Date(secs * 1000), timeZone)\n },\n formatNanoseconds(nanoSecs, timeZone) {\n return this.formatDateTime(\n new Date(parseInt(nanoSecs) / 1_000_000),\n timeZone\n )\n },\n },\n}\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\nexport class ConfigParserError {\n constructor(config_parser, message, usage = '', url = '') {\n this.keyword = config_parser.keyword\n this.parameters = config_parser.parameters\n this.filename = config_parser.filename\n this.line = config_parser.line\n this.lineNumber = config_parser.lineNumber\n this.message = message\n this.usage = usage\n this.url = url\n }\n}\n\nexport class ConfigParserService {\n keyword = null\n parameters = []\n filename = ''\n line = ''\n lineNumber = 0\n url = 'https://docs.openc3.com/docs/configuration'\n\n constructor() {}\n\n verify_num_parameters(min_num_params, max_num_params, usage = '') {\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (let index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n this,\n `Not enough parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params && this.parameters[max_num_params] !== undefined) {\n throw new ConfigParserError(\n this,\n `Too many parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n\n remove_quotes(string) {\n if (string.length < 2) {\n return string\n }\n let first_char = string.charAt(0)\n if (first_char !== '\"' && first_char !== \"'\") {\n return string\n }\n let last_char = string.charAt(string.length - 1)\n if (first_char !== last_char) {\n return string\n }\n return string.substring(1, string.length - 1)\n }\n\n scan_string(string, rx) {\n if (!rx.global) throw \"rx must have 'global' flag set\"\n let r = []\n string.replace(rx, function (match) {\n r.push(match)\n return match\n })\n return r\n }\n\n parse_string(\n input_string,\n original_filename,\n yield_non_keyword_lines,\n remove_quotes,\n handler\n ) {\n let string_concat = false\n this.line = ''\n this.keyword = null\n this.parameters = []\n this.filename = original_filename\n\n // Break string into lines\n let lines = input_string.split('\\n')\n let numLines = lines.length\n\n for (let i = 0; i < numLines; i++) {\n this.lineNumber = i + 1\n let line = lines[i].trim()\n // Ensure the line length is not 0\n if (line.length === 0) {\n continue\n }\n\n if (string_concat === true) {\n // Skip comment lines after a string concatenation\n if (line[0] === '#') {\n continue\n }\n // Remove the opening quote if we're continuing the line\n line = line.substring(1, line.length)\n }\n\n // Check for string continuation\n let last_char = line.charAt(line.length - 1)\n let newline = false\n switch (last_char) {\n case '+': // String concatenation with newlines\n newline = true\n // Deliberate fall through\n case '\\\\': // String concatenation\n // Trim off the concat character plus any spaces, e.g. \"line\" \\\n let trim = line.substring(0, line.length - 1).trim()\n // Now trim off the last quote so it will flow into the next line\n this.line += trim.substring(0, trim.length - 1)\n if (newline) {\n this.line += '\\n'\n }\n string_concat = true\n continue\n case '&': // Line continuation\n this.line += line.substring(0, line.length - 1)\n continue\n default:\n this.line += line\n }\n string_concat = false\n\n let rx = /(\"([^\\\\\"]|\\\\.)*\")|('([^\\\\']|\\\\.)*')|\\S+/g\n let data = this.scan_string(this.line, rx)\n let first_item = ''\n if (data.length > 0) {\n first_item = first_item + data[0]\n }\n\n if (first_item.length === 0 || first_item.charAt(0) === '#') {\n this.keyword = null\n } else {\n this.keyword = first_item.toUpperCase()\n }\n this.parameters = []\n\n // Ignore lines without keywords: comments and blank lines\n if (this.keyword === null) {\n if (yield_non_keyword_lines) {\n handler(this.keyword, this.parameters, this.line, this.lineNumber)\n }\n this.line = ''\n continue\n }\n\n let length = data.length\n if (length > 1) {\n for (let index = 1; index < length; index++) {\n let string = data[index]\n\n // Don't process trailing comments such as:\n // KEYWORD PARAM #This is a comment\n if (string.length > 0 && string.charAt(0) === '#') {\n break\n }\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(string))\n } else {\n this.parameters.push(string)\n }\n }\n }\n handler(this.keyword, this.parameters, this.line, this.lineNumber)\n this.line = ''\n } // for all the lines\n } // parse_string\n} // class ConfigParserService\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 { ConfigParserError } from '@openc3/tool-common/src/services/config-parser'\n\nexport default {\n props: {\n widgetIndex: {\n type: Number,\n default: null,\n },\n parameters: {\n type: Array,\n default: () => [],\n },\n settings: {\n type: Array,\n default: () => [],\n },\n line: {\n type: String,\n default: '',\n },\n lineNumber: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n screen: null,\n // We make style a data attribute so as we recurse through nested\n // widgets we can check to see if style attributes have been applied\n // at any level of the widget, i.e. if LABELVALUE applies a style\n // to the VALUE component then we don't want the VALUE widget to think\n // it doesn't have a style when it renders.\n style: {},\n }\n },\n computed: {\n computedStyle() {\n this.settings.forEach((setting) => {\n const index = parseInt(setting[0])\n if (this.widgetIndex !== null) {\n if (this.widgetIndex === index) {\n setting = setting.slice(1)\n } else {\n return\n }\n }\n this.applySetting(this.style, setting)\n })\n // If nothing has yet defined a width then we add flex to the style\n if (this.style['width'] === undefined) {\n // This flex allows for alignment in our widgets\n // The value of '0 10 100%' was achieved through trial and error\n // The larger flex-shrink value was critical for success\n this.style['flex'] = '0 10 100%' // flex-grow, flex-shrink, flex-basis\n }\n return this.style\n },\n },\n created() {\n // Look through the settings and get a reference to the screen\n this.settings.forEach((setting) => {\n if (setting[0] === '__SCREEN__') {\n this.screen = setting[1]\n }\n })\n // Figure out any subsettings that apply\n this.settings = this.settings\n .map((setting) => {\n const index = parseInt(setting[0])\n // If the first value isn't a number or if there isn't a widgetIndex\n // then it's not a subsetting so just return the setting\n if (isNaN(index) || this.widgetIndex === null) {\n return setting\n }\n // This is our setting so slice off the index and return\n // this effectively promotes'the subsetting to a setting\n // on the current widget\n if (this.widgetIndex === index) {\n return setting.slice(1)\n }\n })\n // Remove any settings that we filtered out with null\n .filter((setting) => setting !== undefined)\n },\n methods: {\n applySetting(style, setting) {\n switch (setting[0]) {\n case 'TEXTALIGN':\n style['text-align'] = setting[1].toLowerCase() + ' !important'\n style['--text-align'] = setting[1].toLowerCase()\n break\n case 'PADDING':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['padding'] = setting[1] + ' !important'\n break\n case 'MARGIN':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['margin'] = setting[1] + ' !important'\n break\n case 'BACKCOLOR':\n style['background-color'] =\n this.getColor(setting.slice(1)) + ' !important'\n break\n case 'TEXTCOLOR':\n style['color'] = this.getColor(setting.slice(1)) + ' !important'\n break\n case 'BORDERCOLOR':\n style['border-width'] = '1px!important'\n style['border-style'] = 'solid!important'\n style['border-color'] =\n this.getColor(setting.slice(1)) + ' !important'\n break\n case 'WIDTH':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['width'] = setting[1] + ' !important'\n break\n case 'HEIGHT':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['height'] = setting[1] + ' !important'\n break\n case 'RAW':\n style[setting[1].toLowerCase()] = setting[2] + ' !important'\n break\n }\n },\n verifyNumParams(keyword, min_num_params, max_num_params, usage = '') {\n let parser = {\n line: this.line,\n lineNumber: this.lineNumber,\n keyword: keyword,\n parameters: this.parameters,\n }\n\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (let index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n parser,\n `Not enough parameters for ${keyword}.`,\n usage,\n 'https://docs.openc3.com/docs/configuration'\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params !== null && this.parameters.length > max_num_params) {\n throw new ConfigParserError(\n parser,\n `Too many parameters for ${keyword}.`,\n usage,\n 'https://docs.openc3.com/docs/configuration'\n )\n }\n },\n setWidth(width, units = 'px', defaultWidth = '120') {\n // Don't set the width if someone has already set it\n // This is important in PacketViewer which uses the value-widget\n // and passes an explicit width setting to use\n let foundSetting = null\n if (this.widgetIndex !== null) {\n foundSetting = this.settings.find(\n (setting) =>\n parseInt(setting[0]) === this.widgetIndex && setting[1] === 'WIDTH'\n )\n } else {\n foundSetting = this.settings.find((setting) => setting[0] === 'WIDTH')\n }\n if (foundSetting) {\n return foundSetting['WIDTH']\n } else {\n if (width) {\n let setting = ['WIDTH', `${width}${units}`]\n // If we have a widgetIndex apply that so we apply the width to ourselves\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(width)\n } else {\n let setting = ['WIDTH', `${defaultWidth}${units}`]\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(defaultWidth)\n }\n }\n },\n setHeight(height, units = 'px', defaultHeight = '20') {\n // Don't set the height if someone has already set it\n let foundSetting = null\n if (this.widgetIndex !== null) {\n foundSetting = this.settings.find(\n (setting) =>\n parseInt(setting[0]) === this.widgetIndex && setting[1] === 'HEIGHT'\n )\n } else {\n foundSetting = this.settings.find((setting) => setting[0] === 'HEIGHT')\n }\n if (foundSetting) {\n return foundSetting['HEIGHT']\n } else {\n if (height) {\n let setting = ['HEIGHT', `${height}${units}`]\n // If we have a widgetIndex apply that so we apply the height to ourselves\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(height)\n } else {\n let setting = ['HEIGHT', `${defaultHeight}${units}`]\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(defaultHeight)\n }\n }\n },\n // Expects an array, can either be a single color or 3 rgb values\n getColor(setting) {\n switch (setting.length) {\n case 1:\n return setting[0].toLowerCase()\n case 3:\n return `rgb(${setting[0]},${setting[1]},${setting[2]})`\n }\n },\n },\n}\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 2024, 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 TimeFilters from '../../tools/base/util/timeFilters.js'\nimport Widget from './Widget'\nimport 'sprintf-js'\nexport default {\n mixins: [Widget, TimeFilters],\n // ValueWidget can either get it's value and limitsState directly through props\n // or it will register itself in the Vuex store and be updated asynchronously\n props: {\n value: {\n default: null,\n },\n limitsState: {\n type: String,\n default: null,\n },\n counter: {\n default: null,\n },\n formatString: null,\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n curValue: null,\n prevValue: null,\n grayLevel: 80,\n grayRate: 5,\n valueId: null,\n arrayIndex: null,\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n this.parameters[0] +\n '/' +\n this.parameters[1] +\n '/' +\n this.parameters[2],\n '_blank'\n )\n },\n },\n ],\n }\n },\n watch: {\n // eslint-disable-next-line no-unused-vars\n _counter: function (newVal, oldVal) {\n if (this.curValue !== this.prevValue) {\n this.grayLevel = 80\n } else {\n this.grayLevel -= this.grayRate\n if (this.grayLevel < 30) {\n this.grayLevel = 30\n }\n }\n this.prevValue = this.curValue\n },\n },\n computed: {\n _value: function () {\n this.curValue = this.value\n if (this.curValue === null) {\n // See store.js for how this is set\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n if (\n this.arrayIndex !== null &&\n this.screen.screenValues[this.valueId][0]\n ) {\n this.curValue =\n this.screen.screenValues[this.valueId][0][this.arrayIndex]\n } else {\n this.curValue = this.screen.screenValues[this.valueId][0]\n }\n }\n } else {\n this.curValue = null\n }\n }\n this.curValue = this.formatValue(this.curValue)\n return this.curValue\n },\n _limitsState: function () {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n limitsState = this.screen.screenValues[this.valueId][1]\n }\n } else {\n limitsState = null\n }\n }\n return limitsState\n },\n _counter: function () {\n let counter = this.counter\n if (counter === null) {\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n counter = this.screen.screenValues[this.valueId][2]\n }\n } else {\n counter = null\n }\n }\n return counter\n },\n valueClass: function () {\n return 'value shrink pa-1 ' + 'openc3-' + this.limitsColor\n },\n astroIcon() {\n switch (this.limitsColor) {\n case 'green':\n return '$vuetify.icons.astro-status-normal'\n case 'yellow':\n return '$vuetify.icons.astro-status-caution'\n case 'red':\n return '$vuetify.icons.astro-status-critical'\n case 'blue':\n // This one is a little weird but it matches our color scheme\n return '$vuetify.icons.astro-status-standby'\n default:\n return null\n }\n },\n limitsColor() {\n let limitsState = this._limitsState\n if (limitsState != null) {\n switch (limitsState) {\n case 'GREEN':\n case 'GREEN_HIGH':\n case 'GREEN_LOW':\n return 'green'\n case 'YELLOW':\n case 'YELLOW_HIGH':\n case 'YELLOW_LOW':\n return 'yellow'\n case 'RED':\n case 'RED_HIGH':\n case 'RED_LOW':\n return 'red'\n case 'BLUE':\n return 'blue'\n case 'STALE':\n return 'purple'\n default:\n return 'white'\n }\n }\n return ''\n },\n limitsLetter() {\n let limitsState = this._limitsState\n if (limitsState != null) {\n let c = limitsState.charAt(0)\n if (limitsState.endsWith('_LOW')) {\n c = c.toLowerCase()\n }\n return c\n }\n return ''\n },\n },\n created() {\n // If they're not passing us the value and limitsState we have to register\n if (this.value === null || this.limitsState === null) {\n // Remove double bracket escaping. This means they actually have an item\n // with a bracket in the name, not an array index.\n if (this.parameters[2].includes('[[')) {\n this.parameters[2] = this.parameters[2]\n .replace('[[', '[')\n .replace(']]', ']')\n } else if (this.parameters[2].includes('[')) {\n // Brackets mean array indexes (normally, but see above)\n let match = this.parameters[2].match(/\\[(\\d+)\\]/)\n this.arrayIndex = parseInt(match[1])\n this.parameters[2] = this.parameters[2].replace(match[0], '')\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.getType()}`\n\n if (this.screen) {\n this.screen.addItem(this.valueId)\n this.timeZone = this.screen.timeZone\n }\n }\n },\n destroyed() {\n if (this.value === null || this.limitsState === null) {\n if (this.screen) {\n this.screen.deleteItem(this.valueId)\n }\n }\n },\n methods: {\n getType() {\n let type = 'WITH_UNITS'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n formatValue(value) {\n if (\n value &&\n this.valueId &&\n (this.valueId.includes('PACKET_TIMEFORMATTED') ||\n this.valueId.includes('RECEIVED_TIMEFORMATTED'))\n ) {\n // Our dates have / rather than - which results in an invalid date on old browsers\n // when they call new Date(value)\n value = value.replaceAll('/', '-')\n return this.formatUtcToLocal(new Date(value), this.timeZone)\n }\n // Convert json raw strings into the raw bytes\n // Only convert the first 32 bytes before adding an ellipse\n // TODO: Handle units on a BLOCK item\n // TODO: Render data in a BLOCK item as bytes (instead of ASCII)\n if (\n value &&\n value['json_class'] === 'String' &&\n value['raw'] !== undefined\n ) {\n let result = Array.from(value['raw'].slice(0, 32), function (byte) {\n return ('0' + (byte & 0xff).toString(16)).slice(-2)\n })\n .join(' ')\n .toUpperCase()\n if (value['raw'].length > 32) {\n result += '...'\n }\n return result\n }\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n let result = '['\n for (let i = 0; i < value.length; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n result += '\"' + value[i] + '\"'\n } else {\n result += value[i]\n }\n if (i != value.length - 1) {\n result += ', '\n }\n }\n result += ']'\n return result\n }\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Object') {\n return ''\n }\n if (this.formatString && value) {\n return sprintf(this.formatString, value)\n }\n return '' + value\n },\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\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\n<template>\n <td>\n <v-checkbox\n v-if=\"isCheckbox\"\n dense\n hide-details\n v-model=\"checkValue\"\n @change=\"checkboxChange\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-checkbox\"\n />\n <v-select\n v-else-if=\"dataItem.states\"\n dense\n hide-details\n v-model=\"stateValue\"\n @change=\"stateChange\"\n :items=\"itemStates\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-select\"\n />\n <v-text-field\n v-else\n solo\n dense\n single-line\n hide-no-data\n hide-details\n @change=\"textChange\"\n :value=\"format(dataItem.value)\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-text-field\"\n />\n </td>\n</template>\n\n<script>\nimport VWidget from '@openc3/tool-common/src/components/widgets/VWidget'\n\nexport default {\n mixins: [VWidget],\n props: {\n item: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n dataItem: this.item,\n stateValue: null,\n checkValue: false,\n }\n },\n created() {\n if (this.dataItem.states) {\n this.stateValue = this.dataItem.states[this.dataItem.value]\n }\n if (this.isCheckbox) {\n this.checkValue = this.stateValue === 1\n }\n },\n computed: {\n isCheckbox: function () {\n let result = true\n if (this.dataItem.states) {\n for (const state of Object.keys(this.dataItem.states)) {\n if (state !== 'CHECKED' && state !== 'UNCHECKED') {\n result = false\n }\n }\n } else {\n result = false\n }\n return result\n },\n itemStates: function () {\n let result = []\n for (const [text, value] of Object.entries(this.dataItem.states)) {\n result.push({ text: text, value: value })\n }\n return result\n },\n },\n methods: {\n checkboxChange: function () {\n if (this.checkValue) {\n this.$emit('change', 'CHECKED')\n } else {\n this.$emit('change', 'UNCHECKED')\n }\n },\n stateChange: function () {\n // Lookup the state key that corresponds to the value\n let state = Object.keys(this.dataItem.states).find(\n (key) => this.dataItem.states[key] === this.stateValue,\n )\n this.$emit('change', state)\n },\n textChange: function (value) {\n // Set the value since we're not using v-model on the textfield\n this.dataItem.value = value\n this.$emit('change', this.dataItem.value)\n },\n format: function (value) {\n if (\n value &&\n value['json_class'] === 'String' &&\n value['raw'] !== undefined\n ) {\n this.dataItem.editable = false\n }\n return this.formatValue(value)\n },\n },\n}\n</script>\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!./TableItem.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!./TableItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableItem.vue?vue&type=template&id=91f5fe22\"\nimport script from \"./TableItem.vue?vue&type=script&lang=js\"\nexport * from \"./TableItem.vue?vue&type=script&lang=js\"\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 null,\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\n<template>\n <tr>\n <td class=\"text-start\">{{ dataItems[0].index }}</td>\n <td class=\"text-start\" v-if=\"oneDimensional\">{{ dataItems[0].name }}</td>\n <table-item\n v-for=\"(item, index) in dataItems\"\n :key=\"item.name\"\n :item=\"item\"\n @change=\"onChange(item, index, $event)\"\n />\n </tr>\n</template>\n\n<script>\nimport TableItem from '@/tools/TableManager/TableItem'\n\nexport default {\n components: {\n TableItem,\n },\n props: {\n items: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n dataItems: this.items,\n }\n },\n computed: {\n oneDimensional() {\n if (this.dataItems.length === 1) {\n return true\n } else {\n return false\n }\n },\n },\n methods: {\n onChange: function (item, index, event) {\n this.$emit('change', { index: index, event: event })\n },\n },\n}\n</script>\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!./TableRow.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!./TableRow.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableRow.vue?vue&type=template&id=0cf65978\"\nimport script from \"./TableRow.vue?vue&type=script&lang=js\"\nexport * from \"./TableRow.vue?vue&type=script&lang=js\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"600\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.success()}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-overlay',{attrs:{\"value\":_vm.loading}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"absolute\":\"\",\"size\":\"64\"}})],1),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',[_vm._v(_vm._s(_vm.helpText)+\" \")]),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-5\",attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"flat\":\"\",\"autofocus\":\"\",\"solo-inverted\":\"\",\"hide-details\":\"\",\"clearable\":\"\",\"label\":\"Search\",\"prepend-inner-icon\":\"mdi-magnify\",\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"file-open-save-search\"},on:{\"input\":_vm.handleSearch},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-2\",attrs:{\"dense\":\"\"}},[_c('v-treeview',{ref:\"tree\",staticStyle:{\"width\":\"100%\",\"max-height\":\"60vh\",\"overflow\":\"auto\"},attrs:{\"dense\":\"\",\"activatable\":\"\",\"return-object\":\"\",\"items\":_vm.items,\"search\":_vm.search,\"open-on-click\":_vm.type === 'open'},on:{\"update:active\":_vm.activeFile},scopedSlots:_vm._u([{key:\"prepend\",fn:function({ item, open }){return [(!item.file)?_c('v-icon',[_vm._v(\"\\n \"+_vm._s(open ? 'mdi-folder-open' : 'mdi-folder')+\"\\n \")]):_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.calcIcon(item.name))+\" \")])]}},{key:\"append\",fn:function({ item }){return [(item.name === '__TEMP__')?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deleteTemp}},[_c('v-icon',[_vm._v(\" mdi-delete \")])],1):_vm._e()]}}]),model:{value:(_vm.tree),callback:function ($$v) {_vm.tree=$$v},expression:\"tree\"}})],1),_vm._v(\" \"),_c('v-row',{staticClass:\"my-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Filename\",\"data-test\":\"file-open-save-filename\",\"disabled\":_vm.type === 'open'},model:{value:(_vm.selectedFile),callback:function ($$v) {_vm.selectedFile=$$v},expression:\"selectedFile\"}})],1),_vm._v(\" \"),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"my-2 red--text\",staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-2\"},[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"file-open-save-cancel-btn\",\"disabled\":_vm.disableButtons},on:{\"click\":function($event){_vm.show = false}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"type\":\"submit\",\"color\":\"primary\",\"data-test\":\"file-open-save-submit-btn\",\"disabled\":_vm.disableButtons || !!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.submit)+\"\\n \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n# Copyright 2022 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\nconst fileIcon = function (filename) {\n if (filename && filename.includes('.')) {\n let ext = filename.split('.').pop()\n if (ext === 'py') {\n return 'mdi-language-python'\n } else if (ext === 'rb') {\n return 'mdi-language-ruby'\n } else if (ext === 'js') {\n return 'mdi-language-javascript'\n } else if (ext === 'csv') {\n return 'mdi-file-delimited'\n } else if (ext === 'txt') {\n return 'mdi-file-document'\n } else if (ext === 'png' || ext === 'gif' || ext === 'jpg') {\n return 'mdi-file-image'\n }\n }\n return 'mdi-file'\n}\n\nexport { fileIcon }\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!./FileOpenSaveDialog.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!./FileOpenSaveDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileOpenSaveDialog.vue?vue&type=template&id=a3b20bcc\"\nimport script from \"./FileOpenSaveDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileOpenSaveDialog.vue?vue&type=script&lang=js\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":_vm.width},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('div',{staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"downloadIcon\"},on:{\"click\":_vm.download}},[_vm._v(\"\\n mdi-download\\n \")])],1)]}}])},[_vm._v(\" \"),_c('span',[_vm._v(\" Download \")])])],1)],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('span',{staticStyle:{\"white-space\":\"pre-wrap\"}},[_vm._v(_vm._s(_vm.text))])])]),_vm._v(\" \"),_c('v-card-actions',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.show = !_vm.show}}},[_vm._v(\" Ok \")])],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!./SimpleTextDialog.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!./SimpleTextDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SimpleTextDialog.vue?vue&type=template&id=4cd697cc\"\nimport script from \"./SimpleTextDialog.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleTextDialog.vue?vue&type=script&lang=js\"\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 null,\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 2023, 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\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n <v-snackbar v-model=\"showReadOnlyToast\" top :timeout=\"-1\" color=\"orange\">\n <v-icon> mdi-pencil-off </v-icon>\n {{ lockedBy }} is editing this script. Editor is in read-only mode\n <template v-slot:action=\"{ attrs }\">\n <v-btn\n text\n v-bind=\"attrs\"\n color=\"danger\"\n @click=\"confirmLocalUnlock\"\n data-test=\"unlock-button\"\n >\n Unlock\n </v-btn>\n <v-btn\n text\n v-bind=\"attrs\"\n @click=\"\n () => {\n showReadOnlyToast = false\n }\n \"\n >\n dismiss\n </v-btn>\n </template>\n </v-snackbar>\n <v-file-input\n show-size\n v-model=\"fileInput\"\n ref=\"fileInput\"\n accept=\".bin\"\n data-test=\"file-input\"\n style=\"position: fixed; top: -100%\"\n />\n <v-card>\n <v-card-text>\n <v-row dense>\n <v-col cols=\"6\">\n <v-text-field\n outlined\n dense\n readonly\n hide-details\n label=\"Filename\"\n v-model=\"fullFilename\"\n id=\"filename\"\n class=\"filename\"\n data-test=\"filename\"\n />\n </v-col>\n <v-col cols=\"6\">\n <v-text-field\n outlined\n dense\n readonly\n hide-details\n label=\"Definition\"\n v-model=\"definitionFilename\"\n id=\"definition-filename\"\n class=\"filename\"\n data-test=\"definition-filename\"\n />\n </v-col>\n </v-row>\n <v-row dense>\n <v-col cols=\"auto\" class=\"mr-auto\">\n <span class=\"text-body-1 ma-2\">File Download:</span>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadBinary(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-binary\"\n >\n Binary\n <v-icon right dark> mdi-file-code </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadDefinition(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-definition\"\n >\n Definition\n <v-icon right dark> mdi-file-document-edit </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n @click=\"downloadReport(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-report\"\n >\n Report\n <v-icon right dark> mdi-file-document </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-btn\n dense\n color=\"primary\"\n @click=\"upload()\"\n :disabled=\"!uploadScript\"\n data-test=\"upload-file\"\n >\n Upload\n <v-icon right dark> mdi-file-upload </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-btn\n dense\n color=\"primary\"\n @click=\"download()\"\n :disabled=\"!downloadScript\"\n data-test=\"download-file\"\n >\n Download\n <v-icon right dark> mdi-file-download </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <span v-bind=\"attrs\" v-on=\"on\">\n <v-checkbox\n v-model=\"scriptBackground\"\n label=\"B/G\"\n class=\"shrink mt-0\"\n data-test=\"upload-background\"\n />\n </span>\n </template>\n <span>Run upload download scripts in the background</span>\n </v-tooltip>\n </v-col>\n </v-row>\n </v-card-text>\n <v-card-title style=\"padding-top: 0px\">\n Items\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-tabs v-model=\"curTab\">\n <v-tab v-for=\"(table, index) in tables\" :key=\"index\">\n {{ table.name }}\n </v-tab>\n </v-tabs>\n <v-tabs-items v-model=\"curTab\">\n <v-tab-item\n v-for=\"(table, index) in tables\"\n :key=\"`${filename}${index}`\"\n >\n <v-data-table\n :headers=\"table.headers\"\n :items=\"table.rows\"\n :search=\"search\"\n :items-per-page=\"20\"\n :footer-props=\"{\n itemsPerPageOptions: [10, 20, 50, 100, -1],\n }\"\n calculate-widths\n multi-sort\n dense\n :data-test=\"table.name\"\n >\n <template v-slot:item=\"{ item }\">\n <table-row\n :items=\"item\"\n :key=\"item[0].name\"\n @change=\"onChange(item, $event)\"\n />\n </template>\n <template v-slot:footer v-if=\"tables.length > 1\">\n <div style=\"position: absolute\" class=\"ma-3\">\n <span class=\"text-body-1 mr-3\">Table Download:</span>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadBinary(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-binary\"\n >\n Binary\n <v-icon right dark> mdi-file-code </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadDefinition(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-definition\"\n >\n Definition\n <v-icon right dark> mdi-file-document-edit </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n @click=\"downloadReport(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-report\"\n >\n Report\n <v-icon right dark> mdi-file-document </v-icon>\n </v-btn>\n </div>\n </template>\n </v-data-table>\n </v-tab-item>\n </v-tabs-items>\n </v-card>\n <file-open-save-dialog\n v-if=\"fileOpen\"\n v-model=\"fileOpen\"\n type=\"open\"\n api-url=\"/openc3-api/tables\"\n @file=\"setFile($event)\"\n @error=\"setError($event)\"\n />\n <file-open-save-dialog\n v-if=\"showSaveAs\"\n v-model=\"showSaveAs\"\n type=\"save\"\n require-target-parent-dir\n api-url=\"/openc3-api/tables\"\n :input-filename=\"filename\"\n @filename=\"saveAsFilename($event)\"\n @error=\"setError($event)\"\n />\n <simple-text-dialog\n v-model=\"showError\"\n :title=\"errorTitle\"\n :text=\"errorText\"\n />\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport TableRow from '@/tools/TableManager/TableRow'\nimport FileOpenSaveDialog from '@openc3/tool-common/src/components/FileOpenSaveDialog'\nimport SimpleTextDialog from '@openc3/tool-common/src/components/SimpleTextDialog'\n\nexport default {\n components: {\n TopBar,\n TableRow,\n FileOpenSaveDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n title: 'Table Manager',\n search: '',\n curTab: null,\n tables: [],\n api: null,\n definition: null,\n fileInput: '',\n definitionFilename: '',\n fileNew: false,\n filename: '',\n fileModified: '',\n lockedBy: null,\n fileOpen: false,\n showSave: false,\n showSaveAs: false,\n showError: false,\n errorTitle: '',\n errorText: '',\n uploadScript: null,\n downloadScript: null,\n scriptBackground: true,\n }\n },\n computed: {\n readOnly: function () {\n return !!this.lockedBy\n },\n fullFilename() {\n return `${this.filename} ${this.fileModified}`.trim()\n },\n menus: function () {\n return [\n {\n label: 'File',\n items: [\n {\n label: 'New File',\n icon: 'mdi-file-plus',\n command: () => {\n this.newFile()\n },\n },\n {\n label: 'Open File',\n icon: 'mdi-folder-open',\n command: () => {\n this.openFile()\n },\n },\n {\n divider: true,\n },\n {\n label: 'Save File',\n icon: 'mdi-content-save',\n command: () => {\n this.saveFile()\n },\n },\n {\n label: 'Save As...',\n icon: 'mdi-content-save',\n command: () => {\n this.saveAs()\n },\n },\n {\n divider: true,\n },\n // {\n // label: 'Load Binary',\n // icon: 'mdi-cloud-upload',\n // command: () => {\n // this.loadBinary()\n // },\n // },\n // {\n // divider: true,\n // },\n {\n label: 'Delete File',\n icon: 'mdi-delete',\n command: () => {\n this.delete()\n },\n },\n ],\n },\n ]\n },\n },\n watch: {\n // Every time the filename changes we figure out if there is an associated upload & download script\n filename: function (val) {\n let upload =\n this.filename.split('/').slice(0, 2).join('/') + '/procedures/upload'\n let download =\n this.filename.split('/').slice(0, 2).join('/') + '/procedures/download'\n // First try Ruby\n Api.get(`/openc3-api/tables/${upload}.rb`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.uploadScript = `${upload}.rb`\n })\n .catch((error) => {\n // Now try python\n Api.get(`/openc3-api/tables/${upload}.py`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.uploadScript = `${upload}.py`\n })\n .catch((error) => {\n this.uploadScript = null\n })\n })\n // First check Ruby\n Api.get(`/openc3-api/tables/${download}.rb`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.downloadScript = `${download}.rb`\n })\n .catch((error) => {\n // Now try python\n Api.get(`/openc3-api/tables/${download}.py`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.downloadScript = `${download}.py`\n })\n .catch((error) => {\n this.downloadScript = null\n })\n })\n },\n },\n created() {\n // Ensure Offline Access Is Setup For the Current User\n this.api = new OpenC3Api()\n this.api.ensure_offline_access()\n },\n methods: {\n // File menu actions\n newFile: function () {\n this.fileModified = ''\n this.fileNew = true\n this.fileOpen = true\n },\n openFile: function () {\n this.fileOpen = true\n },\n // Called by the FileOpenDialog to set the file contents\n setFile: function ({ file, locked }) {\n // They opened a definition file so create a new binary\n if (file.name.includes('.txt')) {\n if (this.fileNew) {\n this.buildNewBinary(file.name)\n this.fileNew = false\n } else {\n this.getDefinition(file.name)\n }\n } else {\n this.unlockFile() // first unlock what was just being edited\n // Split off the ' *' which indicates a file is modified on the server\n this.filename = file.name.split('*')[0]\n this.fileModified = ''\n this.lockedBy = locked\n this.getDefinition()\n }\n },\n // Called by the FileOpenSaveDialog on error\n setError(event) {\n this.errorTitle = 'Error'\n this.errorText = `Error: ${event}`\n this.errorText = response.data.message\n this.showError = true\n },\n saveFile: function () {\n // Save a file by posting the new contents\n this.showSave = true\n\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n formData.append('tables', JSON.stringify(this.tables))\n Api.post(`/openc3-api/tables/${this.filename}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n .then((response) => {\n this.fileModified = ''\n setTimeout(() => {\n this.showSave = false\n }, 2000)\n })\n .catch(({ response }) => {\n this.showSave = false\n this.errorTitle = 'Save Error'\n this.errorText = response.data.message\n this.showError = true\n })\n this.lockFile() // Ensure this file is locked for editing\n },\n saveAs: function () {\n this.showSaveAs = true\n },\n saveAsFilename: function (filename) {\n Api.put(`/openc3-api/tables/${this.filename}/save-as/${filename}`).then(\n (response) => {\n this.filename = filename\n this.getDefinition(this.definitionFilename)\n },\n )\n },\n delete: function () {\n if (this.filename !== '') {\n this.$dialog\n .confirm(`Permanently delete file: ${this.filename}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/tables/${this.filename}`, {\n data: {},\n })\n })\n .then((response) => {\n this.tables = []\n this.filename = ''\n this.definitionFilename = ''\n })\n .catch((error) => {\n // TODO: It returns true on cancel?\n })\n }\n },\n downloadBinary: function (tableName = null) {\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/binary`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\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 // Return BLOB image after conversion\n const blob = new Blob([uInt8Array], {\n type: 'application/octet-stream',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadDefinition: function (tableName = null) {\n const formData = new FormData()\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/definition`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n const blob = new Blob([response.data.contents], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadReport: function (tableName = null) {\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/report`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n const header =\n `Binary: ${this.filename}\\n` +\n `Definition: ${this.definitionFilename}\\n\\n`\n const blob = new Blob([header, response.data.contents], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n upload() {\n Api.post(`/script-api/scripts/${this.uploadScript}/run`, {\n data: {\n environment: [{ key: 'TBL_FILENAME', value: this.filename }],\n },\n }).then((response) => {\n if (this.scriptBackground !== true) {\n window.open(`/tools/scriptrunner/${response.data}`, '_blank')\n }\n })\n },\n download() {\n this.$dialog\n .confirm(\n `Are you sure you want to overwrite ${this.filename}? ` +\n 'You can Save As to create a new file and then Download to preserve the existing file. ' +\n 'Note: Once the download completes you will need to re-open the file to see changes.',\n {\n okText: 'Download (Overwrite!)',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n Api.post(`/script-api/scripts/${this.downloadScript}/run`, {\n data: {\n environment: [{ key: 'TBL_FILENAME', value: this.filename }],\n },\n }).then((response) => {\n if (this.scriptBackground !== true) {\n window.open(`/tools/scriptrunner/${response.data}`, '_blank')\n }\n })\n })\n .catch((error) => {}) // Cancel, do nothing\n },\n // TODO: Need to load to tmp dir or something before we can saveAs to rename\n // async loadBinary() {\n // this.fileInput = ''\n // this.$refs.fileInput.$refs.input.click()\n // // Wait for the file to be set by the dialog so upload works\n // while (this.fileInput === '') {\n // await new Promise((resolve) => setTimeout(resolve, 500))\n // }\n // this.filename = this.fileInput.name\n // this.saveAs()\n // },\n confirmLocalUnlock: function () {\n this.$dialog\n .confirm(\n 'Are you sure you want to unlock this file for editing? ' +\n 'If another user is editing this file, your changes might conflict with each other.',\n {\n okText: 'Force Unlock',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.lockedBy = null\n return this.lockFile() // Re-lock it as this user so it's locked for anyone else who opens it\n })\n },\n lockFile: function () {\n return Api.post(`/openc3-api/tables/${this.filename}/lock`)\n },\n unlockFile: function () {\n if (this.filename !== '' && !this.readOnly) {\n Api.post(`/openc3-api/tables/${this.filename}/unlock`)\n }\n },\n getDefinition: function (definitionFilename = null) {\n if (!definitionFilename) {\n // Create a notional definition filename based on the binary\n definitionFilename = this.filename\n .replace('/bin/', '/config/')\n .replace('.bin', '_def.txt')\n }\n this.tables = [] // Clear so table is re-rendered\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', definitionFilename)\n Api.post(`/openc3-api/tables/load`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n .then((response) => {\n // Set the definition as actually loaded. The backend\n // checks what we sent and does a lookup to return\n // something close if it can't find an exact match.\n this.definitionFilename = response.data.definition\n this.tables = response.data.tables.map((table) => {\n return {\n ...table,\n // Build up the headers for proper searching\n headers: table.headers.map((text, i) => {\n const header = {\n text,\n filterable: text !== 'INDEX',\n }\n if (table.numColumns === 1) {\n // In the 1D table the searchable value is the first value in the row\n // Note the names in 1D are INDEX, NAME, VALUE\n return {\n ...header,\n value: `[0].${text.toLowerCase()}`,\n }\n } else {\n // In the 2D table the searchable value is always in the value attribute\n // of the current column item\n return {\n ...header,\n value: `[${i}].value`,\n }\n }\n }),\n }\n })\n\n if (response.data['errors']) {\n this.$notify.caution({\n title: 'Warning',\n body: response.data['errors'],\n })\n }\n })\n .catch((error) => {\n if (error.response.status == 404) {\n this.$notify.normal({\n title: 'Definition File Not Found',\n body: `Definition file ${definitionFilename} not found. Please select definition file.`,\n })\n this.fileOpen = true\n } else {\n this.$notify.serious({\n title: 'Error',\n body: `Error loading due to ${error.response.statusText}. Status: ${error.response.status}`,\n })\n }\n })\n },\n buildNewBinary: function (filename) {\n const formData = new FormData()\n formData.append('definition', filename)\n Api.post(`/openc3-api/tables/generate`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n this.filename = response.data.filename\n this.getDefinition(filename)\n })\n },\n onChange: function (item, { index, event }) {\n this.fileModified = '*'\n item[index].value = event\n },\n },\n}\n</script>\n<style scoped>\n.filename {\n background-color: var(--color-background-base-default);\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!./TableManager.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!./TableManager.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableManager.vue?vue&type=template&id=4e8e2697&scoped=true\"\nimport script from \"./TableManager.vue?vue&type=script&lang=js\"\nexport * from \"./TableManager.vue?vue&type=script&lang=js\"\nimport style0 from \"./TableManager.vue?vue&type=style&index=0&id=4e8e2697&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 \"4e8e2697\",\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, `.filename[data-v-4e8e2697]{background-color:var(--color-background-base-default)}`, \"\"]);\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-0af23388]{font-size:2rem}.menu-button[data-v-0af23388]{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-0af23388]{padding-right:5px}.list-action[data-v-0af23388] label{color:#fff;padding-left:10px}.myicon[data-v-0af23388]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-0af23388] .v-label{margin-left:5px}.v-list-item__icon[data-v-0af23388]{margin-right:15px!important}.v-list-item__title[data-v-0af23388]{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!./TableManager.vue?vue&type=style&index=0&id=4e8e2697&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(\"370d98b4\", 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=0af23388&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(\"7f447726\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_4ln9awyf1","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","menus","title","_v","scopedSlots","_u","key","fn","_b","on","confirmLocalUnlock","click","showReadOnlyToast","model","value","callback","$$v","expression","_s","lockedBy","ref","staticStyle","fileInput","staticClass","fullFilename","definitionFilename","filename","$event","downloadBinary","downloadDefinition","downloadReport","uploadScript","upload","downloadScript","download","_g","scriptBackground","search","curTab","_l","tables","table","index","name","headers","rows","itemsPerPageOptions","item","onChange","length","b","proxy","fileOpen","setFile","setError","_e","showSaveAs","saveAsFilename","errorTitle","errorText","showError","staticRenderFns","vueInstance","Vue","axiosInstance","axios","create","baseURL","location","origin","timeout","params","interceptors","response","use","error","status","OpenC3Auth","updateToken","defaultMinValidity","then","refreshed","setTokens","config","includes","toString","Promise","reject","body","statusText","data","message","exception","class","$notify","serious","request","async","method","url","noAuth","noScope","onUploadProgress","login","localStorage","openc3Token","window","openc3Scope","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","OpenC3Api","constructor","_defineProperty","exec","kwparams","headerOptions","id","jsonrpc","keyword_params","Authorization","result","err","Error","decode_openc3_type","val","json_class","raw","NaN","Infinity","encode_openc3_type","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","ensure_offline_access","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","get_all_interface_info","map_target_to_interface","target_name","interface_name","connect_interface","interface_params","disconnect_interface","interface_cmd","command_name","command_params","get_all_router_info","connect_router","router_name","disconnect_router","get_target_interfaces","get_all_target_info","get_tlm_cnts","target_commands","get_item","target","packet","get_param","get_parameter","get_limits_sets","get_limits_set","set_limits_set","limits_set","get_target","get_target_names","get_target_list","get_tlm","packet_name","get_telemetry","get_all_tlm","get_all_telemetry","get_all_tlm_names","hidden","get_all_telemetry_names","get_tlm_packet","value_type","stale_time","type","len","converted","i","get_packet_derived_items","get_tlm_buffer","get_tlm_values","items","cache_timeout","kw_args","get_limits","item_name","tlm","undefined","inject_tlm","item_hash","set_tlm","override_tlm","get_overrides","normalize_tlm","get_all_cmds","get_all_commands","get_all_cmd_names","get_all_command_names","get_cmd","get_command","get_cmd_cnts","get_cmd_value","parameter_name","get_cmd_buffer","_cmd","param_list","Object","prototype","hasOwnProperty","call","get_cmd_hazardous","cmd","cmd_no_range_check","cmd_raw","cmd_raw_no_range_check","cmd_no_hazardous_check","cmd_no_checks","cmd_raw_no_hazardous_check","cmd_raw_no_checks","build_cmd","build_command","get_interface_names","send_raw","list_configs","tool","load_config","save_config","delete_config","enable_limits","disable_limits","get_out_of_limits","get_overall_limits_state","ignored","list_settings","get_all_settings","get_setting","get_settings","array","set_setting","save_setting","get_metrics","hashString","string","isSecureContext","arrayBuffer","TextEncoder","encode","hashAsArrayBuffer","crypto","subtle","digest","uint8ViewOfHash","Uint8Array","Array","from","map","padStart","join","menu","refInFor","formatDT","label","domProps","radioGroup","option","j","divider","subMenu","k","disabled","icon","radio","checkbox","style","submenu","subMenuClick","command","checked","$set","props","default","String","methods","replaceAll","toLowerCase","$refs","topmenu","isActive","mounted","document","component","cov_1t2k5qkr64","dataItems","oneDimensional","cov_2rpg3mh9u7","isCheckbox","dataItem","editable","checkboxChange","checkValue","states","itemStates","stateChange","stateValue","format","textChange","dateFormat","timeFormat","timeFormatHMS","dateTimeFormat","formatUtcToLocal","date","timeZone","subMinutes","getTimezoneOffset","formatDateTime","formatInTimeZone","formatDate","formatTime","formatString","formatTimeHMS","formatTimestamp","timestamp","parseISO","formatSeconds","secs","Date","formatNanoseconds","nanoSecs","parseInt","ConfigParserError","config_parser","usage","keyword","parameters","line","lineNumber","widgetIndex","settings","screen","computed","computedStyle","forEach","setting","slice","applySetting","created","filter","getColor","verifyNumParams","min_num_params","max_num_params","parser","setWidth","width","units","defaultWidth","foundSetting","find","unshift","push","setHeight","height","defaultHeight","mixins","Widget","TimeFilters","limitsState","counter","curValue","prevValue","grayLevel","grayRate","valueId","arrayIndex","viewDetails","contextMenuShown","x","y","contextMenuOptions","action","open","watch","_counter","newVal","oldVal","_value","screenValues","formatValue","_limitsState","valueClass","limitsColor","astroIcon","limitsLetter","c","charAt","endsWith","replace","match","getType","addItem","destroyed","deleteItem","byte","toUpperCase","sprintf","showContextMenu","e","preventDefault","clientX","clientY","$nextTick","VWidget","required","state","keys","text","entries","$emit","components","TableItem","event","indexOf","_k","keyCode","success","show","loading","apply","arguments","helpText","handleSearch","activeFile","file","calcIcon","deleteTemp","tree","selectedFile","directives","rawName","disableButtons","submit","fileIcon","ext","split","pop","validator","apiUrl","requireTargetParentDir","Boolean","inputFilename","targets","set","validFilenameRegex","alphanumeric","charset","RegExp","loadFiles","Api","filepath","insertFile","catch","clear","overwrite","input","updateAll","exists","root","found","children","openSuccess","saveSuccess","$dialog","confirm","okText","cancelText","dialog","contents","suites","JSON","parse","locked","breakpoints","level","parts","findIndex","blob","Blob","link","createElement","href","URL","createObjectURL","setAttribute","TopBar","TableRow","FileOpenSaveDialog","SimpleTextDialog","api","definition","fileNew","fileModified","showSave","readOnly","trim","newFile","openFile","saveFile","saveAs","buildNewBinary","getDefinition","unlockFile","formData","FormData","append","stringify","setTimeout","lockFile","tableName","decodedData","atob","uInt8Array","charCodeAt","header","environment","filterable","numColumns","caution","normal","___CSS_LOADER_EXPORT___","module","content","__esModule","locals","exports","add"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/173.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/axios.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/api.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/openc3-api.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?c4b5","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/tools/base/util/timeFilters.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/services/config-parser.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/widgets/Widget.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/widgets/VWidget.js","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableItem.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue?e706","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableItem.vue?f5aa","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableRow.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue?5117","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableRow.vue?1698","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/tools/base/util/fileIcon.js","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue?ab62","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/FileOpenSaveDialog.vue?07a6","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue?abaa","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/SimpleTextDialog.vue?5fff","webpack://@openc3/cosmos-tool-tablemanager/src/tools/TableManager/TableManager.vue","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?eb42","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?b261","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?9d27","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?e2ab","webpack://@openc3/cosmos-tool-tablemanager/./src/tools/TableManager/TableManager.vue?c71f","webpack://@openc3/cosmos-tool-tablemanager/../openc3-tool-common/src/components/TopBar.vue?ca18"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_vm._v(\" \"),_c('v-snackbar',{attrs:{\"top\":\"\",\"timeout\":-1,\"color\":\"orange\"},scopedSlots:_vm._u([{key:\"action\",fn:function({ attrs }){return [_c('v-btn',_vm._b({attrs:{\"text\":\"\",\"color\":\"danger\",\"data-test\":\"unlock-button\"},on:{\"click\":_vm.confirmLocalUnlock}},'v-btn',attrs,false),[_vm._v(\"\\n Unlock\\n \")]),_vm._v(\" \"),_c('v-btn',_vm._b({attrs:{\"text\":\"\"},on:{\"click\":() => {\n _vm.showReadOnlyToast = false\n }}},'v-btn',attrs,false),[_vm._v(\"\\n dismiss\\n \")])]}}]),model:{value:(_vm.showReadOnlyToast),callback:function ($$v) {_vm.showReadOnlyToast=$$v},expression:\"showReadOnlyToast\"}},[_c('v-icon',[_vm._v(\" mdi-pencil-off \")]),_vm._v(\"\\n \"+_vm._s(_vm.lockedBy)+\" is editing this script. Editor is in read-only mode\\n \")],1),_vm._v(\" \"),_c('v-file-input',{ref:\"fileInput\",staticStyle:{\"position\":\"fixed\",\"top\":\"-100%\"},attrs:{\"show-size\":\"\",\"accept\":\".bin\",\"data-test\":\"file-input\"},model:{value:(_vm.fileInput),callback:function ($$v) {_vm.fileInput=$$v},expression:\"fileInput\"}}),_vm._v(\" \"),_c('v-card',[_c('v-card-text',[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"filename\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Filename\",\"id\":\"filename\",\"data-test\":\"filename\"},model:{value:(_vm.fullFilename),callback:function ($$v) {_vm.fullFilename=$$v},expression:\"fullFilename\"}})],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"filename\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"label\":\"Definition\",\"id\":\"definition-filename\",\"data-test\":\"definition-filename\"},model:{value:(_vm.definitionFilename),callback:function ($$v) {_vm.definitionFilename=$$v},expression:\"definitionFilename\"}})],1)],1),_vm._v(\" \"),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"mr-auto\",attrs:{\"cols\":\"auto\"}},[_c('span',{staticClass:\"text-body-1 ma-2\"},[_vm._v(\"File Download:\")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-binary\"},on:{\"click\":function($event){return _vm.downloadBinary(null)}}},[_vm._v(\"\\n Binary\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-code \")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-definition\"},on:{\"click\":function($event){return _vm.downloadDefinition(null)}}},[_vm._v(\"\\n Definition\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document-edit \")])],1),_vm._v(\" \"),_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-file-report\"},on:{\"click\":function($event){return _vm.downloadReport(null)}}},[_vm._v(\"\\n Report\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":!_vm.uploadScript,\"data-test\":\"upload-file\"},on:{\"click\":function($event){return _vm.upload()}}},[_vm._v(\"\\n Upload\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-upload \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":!_vm.downloadScript,\"data-test\":\"download-file\"},on:{\"click\":function($event){return _vm.download()}}},[_vm._v(\"\\n Download\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-download \")])],1)],1),_vm._v(\" \"),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({},'span',attrs,false),on),[_c('v-checkbox',{staticClass:\"shrink mt-0\",attrs:{\"label\":\"B/G\",\"data-test\":\"upload-background\"},model:{value:(_vm.scriptBackground),callback:function ($$v) {_vm.scriptBackground=$$v},expression:\"scriptBackground\"}})],1)]}}])},[_vm._v(\" \"),_c('span',[_vm._v(\"Run upload download scripts in the background\")])])],1)],1)],1),_vm._v(\" \"),_c('v-card-title',{staticStyle:{\"padding-top\":\"0px\"}},[_vm._v(\"\\n Items\\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-tabs',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.tables),function(table,index){return _c('v-tab',{key:index},[_vm._v(\"\\n \"+_vm._s(table.name)+\"\\n \")])}),1),_vm._v(\" \"),_c('v-tabs-items',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.tables),function(table,index){return _c('v-tab-item',{key:`${_vm.filename}${index}`},[_c('v-data-table',{attrs:{\"headers\":table.headers,\"items\":table.rows,\"search\":_vm.search,\"items-per-page\":20,\"footer-props\":{\n itemsPerPageOptions: [10, 20, 50, 100, -1],\n },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"dense\":\"\",\"data-test\":table.name},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('table-row',{key:item[0].name,attrs:{\"items\":item},on:{\"change\":function($event){return _vm.onChange(item, $event)}}})]}},(_vm.tables.length > 1)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"ma-3\",staticStyle:{\"position\":\"absolute\"}},[_c('span',{staticClass:\"text-body-1 mr-3\"},[_vm._v(\"Table Download:\")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-binary\"},on:{\"click\":function($event){return _vm.downloadBinary(table.name)}}},[_vm._v(\"\\n Binary\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-code \")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-definition\"},on:{\"click\":function($event){return _vm.downloadDefinition(table.name)}}},[_vm._v(\"\\n Definition\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document-edit \")])],1),_vm._v(\" \"),_c('v-btn',{attrs:{\"dense\":\"\",\"color\":\"primary\",\"disabled\":_vm.filename == '',\"data-test\":\"download-table-report\"},on:{\"click\":function($event){return _vm.downloadReport(table.name)}}},[_vm._v(\"\\n Report\\n \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-file-document \")])],1)],1)]},proxy:true}:null],null,true)})],1)}),1)],1),_vm._v(\" \"),(_vm.fileOpen)?_c('file-open-save-dialog',{attrs:{\"type\":\"open\",\"api-url\":\"/openc3-api/tables\"},on:{\"file\":function($event){return _vm.setFile($event)},\"error\":function($event){return _vm.setError($event)}},model:{value:(_vm.fileOpen),callback:function ($$v) {_vm.fileOpen=$$v},expression:\"fileOpen\"}}):_vm._e(),_vm._v(\" \"),(_vm.showSaveAs)?_c('file-open-save-dialog',{attrs:{\"type\":\"save\",\"require-target-parent-dir\":\"\",\"api-url\":\"/openc3-api/tables\",\"input-filename\":_vm.filename},on:{\"filename\":function($event){return _vm.saveAsFilename($event)},\"error\":function($event){return _vm.setError($event)}},model:{value:(_vm.showSaveAs),callback:function ($$v) {_vm.showSaveAs=$$v},expression:\"showSaveAs\"}}):_vm._e(),_vm._v(\" \"),_c('simple-text-dialog',{attrs:{\"title\":_vm.errorTitle,\"text\":_vm.errorText},model:{value:(_vm.showError),callback:function ($$v) {_vm.showError=$$v},expression:\"showError\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\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 = false,\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 // Everything from the front-end is manual by default\n // The various api methods decide whether to pass the manual\n // flag to the authorize routine\n headers['manual'] = true\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 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 2024, 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\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(\n method,\n params,\n kwparams = {},\n headerOptions = {},\n timeout = 60000,\n ) {\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 this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n // Everything from the front-end is manual by default\n // The various api methods decide whether to pass the manual\n // flag to the authorize routine\n headerOptions['manual'] = true\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n timeout: timeout,\n },\n )\n // let data = response.data\n // if (data.error) {\n // let err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n let err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n err.object = error.response.data.error\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n // NOTE: Openc3Screen.vue uses this specific message to determine\n // if the CmdTlmApi server is down. Don't change unless also changing there.\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n interface_cmd(interface_name, command_name, ...command_params) {\n return this.exec('interface_cmd', [\n interface_name,\n command_name,\n ...command_params,\n ])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_param(target, packet, item) {\n return this.exec('get_param', [target, packet, item])\n }\n // DEPRECATED for get_param\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_names() {\n return this.exec('get_target_names', [])\n }\n // DEPRECATED\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_tlm(target_name, packet_name) {\n return this.exec('get_tlm', [target_name, packet_name])\n }\n // DEPRECATED\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_tlm(target_name) {\n return this.exec('get_all_tlm', [target_name])\n }\n // DEPRECATED\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_tlm_names(target_name, hidden = false) {\n return this.exec('get_all_tlm_names', [target_name], { hidden: hidden })\n }\n // DEPRECATED\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n let len = data.length\n let converted = null\n for (let i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30, cache_timeout = null) {\n let kw_args = {\n stale_time: stale_time,\n }\n if (cache_timeout !== null) {\n kw_args['cache_timeout'] = cache_timeout\n }\n const data = await this.exec(\n 'get_tlm_values',\n [items],\n kw_args,\n {},\n 10000, // 10s timeout ... should never be this long\n )\n let len = data[0].length\n let converted = null\n for (let i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n let err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n let converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED',\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n },\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_cmds(target_name) {\n return this.exec('get_all_cmds', [target_name])\n }\n // DEPRECATED for get_all_cmds\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_cmd_names(target_name, hidden = false) {\n return this.exec('get_all_cmd_names', [target_name], { hidden: hidden })\n }\n // DEPRECATED for get_all_cmd_names\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_cmd(target_name, command_name) {\n return this.exec('get_cmd', [target_name, command_name])\n }\n // DEPRECATED for get_cmd\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED',\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n let converted = null\n for (let key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions,\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_no_range_check(\n target_name,\n command_name,\n param_list,\n headerOptions = {},\n ) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_raw',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_raw_no_range_check(\n target_name,\n command_name,\n param_list,\n headerOptions = {},\n ) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_no_hazardous_check(\n target_name,\n command_name,\n param_list,\n headerOptions = {},\n ) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_no_checks',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_raw_no_hazardous_check(\n target_name,\n command_name,\n param_list,\n headerOptions = {},\n ) {\n if (command_name === undefined) {\n return this.exec(\n 'cmd_raw_no_hazardous_check',\n target_name,\n {},\n headerOptions,\n )\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list,\n headerOptions,\n )\n }\n }\n\n build_cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_cmd', target_name)\n } else {\n return this._cmd('build_cmd', target_name, command_name, param_list)\n }\n }\n // DEPRECATED for build_cmd\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n set_setting(name, data) {\n return this.exec('set_setting', [name, data])\n }\n\n // DEPRECATED\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer,\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","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',{staticClass:\"list-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',{staticClass:\"list-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=0af23388&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=0af23388&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 \"0af23388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('td',{staticClass:\"text-start\"},[_vm._v(_vm._s(_vm.dataItems[0].index))]),_vm._v(\" \"),(_vm.oneDimensional)?_c('td',{staticClass:\"text-start\"},[_vm._v(_vm._s(_vm.dataItems[0].name))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.dataItems),function(item,index){return _c('table-item',{key:item.name,attrs:{\"item\":item},on:{\"change\":function($event){return _vm.onChange(item, index, $event)}}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('td',[(_vm.isCheckbox)?_c('v-checkbox',{attrs:{\"dense\":\"\",\"hide-details\":\"\",\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-checkbox\"},on:{\"change\":_vm.checkboxChange},model:{value:(_vm.checkValue),callback:function ($$v) {_vm.checkValue=$$v},expression:\"checkValue\"}}):(_vm.dataItem.states)?_c('v-select',{attrs:{\"dense\":\"\",\"hide-details\":\"\",\"items\":_vm.itemStates,\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-select\"},on:{\"change\":_vm.stateChange},model:{value:(_vm.stateValue),callback:function ($$v) {_vm.stateValue=$$v},expression:\"stateValue\"}}):_c('v-text-field',{attrs:{\"solo\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"value\":_vm.format(_vm.dataItem.value),\"disabled\":!_vm.dataItem.editable,\"data-test\":\"table-item-text-field\"},on:{\"change\":_vm.textChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n# Copyright 2024 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\nimport { format, parseISO, subMinutes } from 'date-fns'\nimport { formatInTimeZone } from 'date-fns-tz'\n\nconst dateFormat = 'yyyy-MM-dd'\nconst timeFormat = 'HH:mm:ss.SSS'\nconst timeFormatHMS = 'HH:mm:ss'\nconst dateTimeFormat = `${dateFormat} ${timeFormat}`\nexport default {\n methods: {\n parseDateTime(dateString, timeZone) {\n if (dateString.includes(' ')) {\n dateString = dateString.replace(' ', 'T')\n }\n if (timeZone && timeZone === 'UTC') {\n dateString += 'Z'\n }\n return Date.parse(dateString)\n },\n // Convert a UTC stamp into a local time\n formatUtcToLocal(date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n // subtrack off the timezone offset to get it back to local time\n return format(\n subMinutes(date, date.getTimezoneOffset()),\n dateTimeFormat,\n )\n } else {\n return format(date, dateTimeFormat)\n }\n },\n formatDateTime(date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, dateTimeFormat)\n } else {\n return formatInTimeZone(date, timeZone, dateTimeFormat)\n }\n },\n formatDate: function (date, timeZone) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, dateFormat)\n } else {\n return formatInTimeZone(date, this.timeZone, dateFormat)\n }\n },\n formatTime: function (date, timeZone, formatString = timeFormat) {\n // Default to local time if the timezone isn't set\n if (!timeZone || timeZone === 'local') {\n return format(date, formatString)\n } else {\n return formatInTimeZone(date, this.timeZone, formatString)\n }\n },\n formatTimeHMS: function (date, timeZone) {\n return this.formatTime(date, timeZone, timeFormatHMS)\n },\n formatTimestamp(timestamp, timeZone) {\n return this.formatDateTime(parseISO(timestamp), timeZone)\n },\n formatSeconds(secs, timeZone) {\n return this.formatDateTime(new Date(secs * 1000), timeZone)\n },\n formatNanoseconds(nanoSecs, timeZone) {\n return this.formatDateTime(\n new Date(parseInt(nanoSecs) / 1_000_000),\n timeZone,\n )\n },\n },\n}\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\nexport class ConfigParserError {\n constructor(config_parser, message, usage = '', url = '') {\n this.keyword = config_parser.keyword\n this.parameters = config_parser.parameters\n this.filename = config_parser.filename\n this.line = config_parser.line\n this.lineNumber = config_parser.lineNumber\n this.message = message\n this.usage = usage\n this.url = url\n }\n}\n\nexport class ConfigParserService {\n keyword = null\n parameters = []\n filename = ''\n line = ''\n lineNumber = 0\n url = 'https://docs.openc3.com/docs/configuration'\n\n constructor() {}\n\n verify_num_parameters(min_num_params, max_num_params, usage = '') {\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (let index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n this,\n `Not enough parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params && this.parameters[max_num_params] !== undefined) {\n throw new ConfigParserError(\n this,\n `Too many parameters for ${this.keyword}.`,\n usage,\n this.url\n )\n }\n }\n\n remove_quotes(string) {\n if (string.length < 2) {\n return string\n }\n let first_char = string.charAt(0)\n if (first_char !== '\"' && first_char !== \"'\") {\n return string\n }\n let last_char = string.charAt(string.length - 1)\n if (first_char !== last_char) {\n return string\n }\n return string.substring(1, string.length - 1)\n }\n\n scan_string(string, rx) {\n if (!rx.global) throw \"rx must have 'global' flag set\"\n let r = []\n string.replace(rx, function (match) {\n r.push(match)\n return match\n })\n return r\n }\n\n parse_string(\n input_string,\n original_filename,\n yield_non_keyword_lines,\n remove_quotes,\n handler\n ) {\n let string_concat = false\n this.line = ''\n this.keyword = null\n this.parameters = []\n this.filename = original_filename\n\n // Break string into lines\n let lines = input_string.split('\\n')\n let numLines = lines.length\n\n for (let i = 0; i < numLines; i++) {\n this.lineNumber = i + 1\n let line = lines[i].trim()\n // Ensure the line length is not 0\n if (line.length === 0) {\n continue\n }\n\n if (string_concat === true) {\n // Skip comment lines after a string concatenation\n if (line[0] === '#') {\n continue\n }\n // Remove the opening quote if we're continuing the line\n line = line.substring(1, line.length)\n }\n\n // Check for string continuation\n let last_char = line.charAt(line.length - 1)\n let newline = false\n switch (last_char) {\n case '+': // String concatenation with newlines\n newline = true\n // Deliberate fall through\n case '\\\\': // String concatenation\n // Trim off the concat character plus any spaces, e.g. \"line\" \\\n let trim = line.substring(0, line.length - 1).trim()\n // Now trim off the last quote so it will flow into the next line\n this.line += trim.substring(0, trim.length - 1)\n if (newline) {\n this.line += '\\n'\n }\n string_concat = true\n continue\n case '&': // Line continuation\n this.line += line.substring(0, line.length - 1)\n continue\n default:\n this.line += line\n }\n string_concat = false\n\n let rx = /(\"([^\\\\\"]|\\\\.)*\")|('([^\\\\']|\\\\.)*')|\\S+/g\n let data = this.scan_string(this.line, rx)\n let first_item = ''\n if (data.length > 0) {\n first_item = first_item + data[0]\n }\n\n if (first_item.length === 0 || first_item.charAt(0) === '#') {\n this.keyword = null\n } else {\n this.keyword = first_item.toUpperCase()\n }\n this.parameters = []\n\n // Ignore lines without keywords: comments and blank lines\n if (this.keyword === null) {\n if (yield_non_keyword_lines) {\n handler(this.keyword, this.parameters, this.line, this.lineNumber)\n }\n this.line = ''\n continue\n }\n\n let length = data.length\n if (length > 1) {\n for (let index = 1; index < length; index++) {\n let string = data[index]\n\n // Don't process trailing comments such as:\n // KEYWORD PARAM #This is a comment\n if (string.length > 0 && string.charAt(0) === '#') {\n break\n }\n if (remove_quotes) {\n this.parameters.push(this.remove_quotes(string))\n } else {\n this.parameters.push(string)\n }\n }\n }\n handler(this.keyword, this.parameters, this.line, this.lineNumber)\n this.line = ''\n } // for all the lines\n } // parse_string\n} // class ConfigParserService\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 { ConfigParserError } from '@openc3/tool-common/src/services/config-parser'\n\nexport default {\n props: {\n widgetIndex: {\n type: Number,\n default: null,\n },\n parameters: {\n type: Array,\n default: () => [],\n },\n settings: {\n type: Array,\n default: () => [],\n },\n line: {\n type: String,\n default: '',\n },\n lineNumber: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n screen: null,\n // We make style a data attribute so as we recurse through nested\n // widgets we can check to see if style attributes have been applied\n // at any level of the widget, i.e. if LABELVALUE applies a style\n // to the VALUE component then we don't want the VALUE widget to think\n // it doesn't have a style when it renders.\n style: {},\n }\n },\n computed: {\n computedStyle() {\n this.settings.forEach((setting) => {\n const index = parseInt(setting[0])\n if (this.widgetIndex !== null) {\n if (this.widgetIndex === index) {\n setting = setting.slice(1)\n } else {\n return\n }\n }\n this.applySetting(this.style, setting)\n })\n // If nothing has yet defined a width then we add flex to the style\n if (this.style['width'] === undefined) {\n // This flex allows for alignment in our widgets\n // The value of '0 10 100%' was achieved through trial and error\n // The larger flex-shrink value was critical for success\n this.style['flex'] = '0 10 100%' // flex-grow, flex-shrink, flex-basis\n }\n return this.style\n },\n },\n created() {\n // Look through the settings and get a reference to the screen\n this.settings.forEach((setting) => {\n if (setting[0] === '__SCREEN__') {\n this.screen = setting[1]\n }\n })\n // Figure out any subsettings that apply\n this.settings = this.settings\n .map((setting) => {\n const index = parseInt(setting[0])\n // If the first value isn't a number or if there isn't a widgetIndex\n // then it's not a subsetting so just return the setting\n if (isNaN(index) || this.widgetIndex === null) {\n return setting\n }\n // This is our setting so slice off the index and return\n // this effectively promotes'the subsetting to a setting\n // on the current widget\n if (this.widgetIndex === index) {\n return setting.slice(1)\n }\n })\n // Remove any settings that we filtered out with null\n .filter((setting) => setting !== undefined)\n },\n methods: {\n applySetting(style, setting) {\n switch (setting[0]) {\n case 'TEXTALIGN':\n style['text-align'] = setting[1].toLowerCase() + ' !important'\n style['--text-align'] = setting[1].toLowerCase()\n break\n case 'PADDING':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['padding'] = setting[1] + ' !important'\n break\n case 'MARGIN':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['margin'] = setting[1] + ' !important'\n break\n case 'BACKCOLOR':\n style['background-color'] =\n this.getColor(setting.slice(1)) + ' !important'\n break\n case 'TEXTCOLOR':\n style['color'] = this.getColor(setting.slice(1)) + ' !important'\n break\n case 'BORDERCOLOR':\n style['border-width'] = '1px!important'\n style['border-style'] = 'solid!important'\n style['border-color'] =\n this.getColor(setting.slice(1)) + ' !important'\n break\n case 'WIDTH':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['width'] = setting[1] + ' !important'\n break\n case 'HEIGHT':\n if (!isNaN(Number(setting[1]))) {\n setting[1] += 'px'\n }\n style['height'] = setting[1] + ' !important'\n break\n case 'RAW':\n style[setting[1].toLowerCase()] = setting[2] + ' !important'\n break\n }\n },\n verifyNumParams(keyword, min_num_params, max_num_params, usage = '') {\n let parser = {\n line: this.line,\n lineNumber: this.lineNumber,\n keyword: keyword,\n parameters: this.parameters,\n }\n\n // This syntax works with 0 because each doesn't return any values\n // for a backwards range\n for (let index = 1; index <= min_num_params; index++) {\n // If the parameter is nil (0 based) then we have a problem\n if (this.parameters[index - 1] === undefined) {\n throw new ConfigParserError(\n parser,\n `Not enough parameters for ${keyword}.`,\n usage,\n 'https://docs.openc3.com/docs/configuration'\n )\n }\n }\n // If they pass null for max_params we don't check for a maximum number\n if (max_num_params !== null && this.parameters.length > max_num_params) {\n throw new ConfigParserError(\n parser,\n `Too many parameters for ${keyword}.`,\n usage,\n 'https://docs.openc3.com/docs/configuration'\n )\n }\n },\n setWidth(width, units = 'px', defaultWidth = '120') {\n // Don't set the width if someone has already set it\n // This is important in PacketViewer which uses the value-widget\n // and passes an explicit width setting to use\n let foundSetting = null\n if (this.widgetIndex !== null) {\n foundSetting = this.settings.find(\n (setting) =>\n parseInt(setting[0]) === this.widgetIndex && setting[1] === 'WIDTH'\n )\n } else {\n foundSetting = this.settings.find((setting) => setting[0] === 'WIDTH')\n }\n if (foundSetting) {\n return foundSetting['WIDTH']\n } else {\n if (width) {\n let setting = ['WIDTH', `${width}${units}`]\n // If we have a widgetIndex apply that so we apply the width to ourselves\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(width)\n } else {\n let setting = ['WIDTH', `${defaultWidth}${units}`]\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(defaultWidth)\n }\n }\n },\n setHeight(height, units = 'px', defaultHeight = '20') {\n // Don't set the height if someone has already set it\n let foundSetting = null\n if (this.widgetIndex !== null) {\n foundSetting = this.settings.find(\n (setting) =>\n parseInt(setting[0]) === this.widgetIndex && setting[1] === 'HEIGHT'\n )\n } else {\n foundSetting = this.settings.find((setting) => setting[0] === 'HEIGHT')\n }\n if (foundSetting) {\n return foundSetting['HEIGHT']\n } else {\n if (height) {\n let setting = ['HEIGHT', `${height}${units}`]\n // If we have a widgetIndex apply that so we apply the height to ourselves\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(height)\n } else {\n let setting = ['HEIGHT', `${defaultHeight}${units}`]\n if (this.widgetIndex !== null) {\n setting.unshift(this.widgetIndex)\n }\n this.settings.push(setting)\n return parseInt(defaultHeight)\n }\n }\n },\n // Expects an array, can either be a single color or 3 rgb values\n getColor(setting) {\n switch (setting.length) {\n case 1:\n return setting[0].toLowerCase()\n case 3:\n return `rgb(${setting[0]},${setting[1]},${setting[2]})`\n }\n },\n },\n}\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 2024, 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 TimeFilters from '../../tools/base/util/timeFilters.js'\nimport Widget from './Widget'\nimport 'sprintf-js'\nexport default {\n mixins: [Widget, TimeFilters],\n // ValueWidget can either get it's value and limitsState directly through props\n // or it will register itself in the Vuex store and be updated asynchronously\n props: {\n value: {\n default: null,\n },\n limitsState: {\n type: String,\n default: null,\n },\n counter: {\n default: null,\n },\n formatString: null,\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n curValue: null,\n prevValue: null,\n grayLevel: 80,\n grayRate: 5,\n valueId: null,\n arrayIndex: null,\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n this.parameters[0] +\n '/' +\n this.parameters[1] +\n '/' +\n this.parameters[2],\n '_blank'\n )\n },\n },\n ],\n }\n },\n watch: {\n // eslint-disable-next-line no-unused-vars\n _counter: function (newVal, oldVal) {\n if (this.curValue !== this.prevValue) {\n this.grayLevel = 80\n } else {\n this.grayLevel -= this.grayRate\n if (this.grayLevel < 30) {\n this.grayLevel = 30\n }\n }\n this.prevValue = this.curValue\n },\n },\n computed: {\n _value: function () {\n this.curValue = this.value\n if (this.curValue === null) {\n // See store.js for how this is set\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n if (\n this.arrayIndex !== null &&\n this.screen.screenValues[this.valueId][0]\n ) {\n this.curValue =\n this.screen.screenValues[this.valueId][0][this.arrayIndex]\n } else {\n this.curValue = this.screen.screenValues[this.valueId][0]\n }\n }\n } else {\n this.curValue = null\n }\n }\n this.curValue = this.formatValue(this.curValue)\n return this.curValue\n },\n _limitsState: function () {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n limitsState = this.screen.screenValues[this.valueId][1]\n }\n } else {\n limitsState = null\n }\n }\n return limitsState\n },\n _counter: function () {\n let counter = this.counter\n if (counter === null) {\n if (this.screen) {\n if (this.screen.screenValues[this.valueId]) {\n counter = this.screen.screenValues[this.valueId][2]\n }\n } else {\n counter = null\n }\n }\n return counter\n },\n valueClass: function () {\n return 'value shrink pa-1 ' + 'openc3-' + this.limitsColor\n },\n astroIcon() {\n switch (this.limitsColor) {\n case 'green':\n return '$vuetify.icons.astro-status-normal'\n case 'yellow':\n return '$vuetify.icons.astro-status-caution'\n case 'red':\n return '$vuetify.icons.astro-status-critical'\n case 'blue':\n // This one is a little weird but it matches our color scheme\n return '$vuetify.icons.astro-status-standby'\n default:\n return null\n }\n },\n limitsColor() {\n let limitsState = this._limitsState\n if (limitsState != null) {\n switch (limitsState) {\n case 'GREEN':\n case 'GREEN_HIGH':\n case 'GREEN_LOW':\n return 'green'\n case 'YELLOW':\n case 'YELLOW_HIGH':\n case 'YELLOW_LOW':\n return 'yellow'\n case 'RED':\n case 'RED_HIGH':\n case 'RED_LOW':\n return 'red'\n case 'BLUE':\n return 'blue'\n case 'STALE':\n return 'purple'\n default:\n return 'white'\n }\n }\n return ''\n },\n limitsLetter() {\n let limitsState = this._limitsState\n if (limitsState != null) {\n let c = limitsState.charAt(0)\n if (limitsState.endsWith('_LOW')) {\n c = c.toLowerCase()\n }\n return c\n }\n return ''\n },\n },\n created() {\n // If they're not passing us the value and limitsState we have to register\n if (this.value === null || this.limitsState === null) {\n // Remove double bracket escaping. This means they actually have an item\n // with a bracket in the name, not an array index.\n if (this.parameters[2].includes('[[')) {\n this.parameters[2] = this.parameters[2]\n .replace('[[', '[')\n .replace(']]', ']')\n } else if (this.parameters[2].includes('[')) {\n // Brackets mean array indexes (normally, but see above)\n let match = this.parameters[2].match(/\\[(\\d+)\\]/)\n this.arrayIndex = parseInt(match[1])\n this.parameters[2] = this.parameters[2].replace(match[0], '')\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.getType()}`\n\n if (this.screen) {\n this.screen.addItem(this.valueId)\n this.timeZone = this.screen.timeZone\n }\n }\n },\n destroyed() {\n if (this.value === null || this.limitsState === null) {\n if (this.screen) {\n this.screen.deleteItem(this.valueId)\n }\n }\n },\n methods: {\n getType() {\n let type = 'WITH_UNITS'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n formatValue(value) {\n if (\n value &&\n this.valueId &&\n (this.valueId.includes('PACKET_TIMEFORMATTED') ||\n this.valueId.includes('RECEIVED_TIMEFORMATTED'))\n ) {\n // Our dates have / rather than - which results in an invalid date on old browsers\n // when they call new Date(value)\n value = value.replaceAll('/', '-')\n return this.formatUtcToLocal(new Date(value), this.timeZone)\n }\n // Convert json raw strings into the raw bytes\n // Only convert the first 32 bytes before adding an ellipse\n // TODO: Handle units on a BLOCK item\n // TODO: Render data in a BLOCK item as bytes (instead of ASCII)\n if (\n value &&\n value['json_class'] === 'String' &&\n value['raw'] !== undefined\n ) {\n let result = Array.from(value['raw'].slice(0, 32), function (byte) {\n return ('0' + (byte & 0xff).toString(16)).slice(-2)\n })\n .join(' ')\n .toUpperCase()\n if (value['raw'].length > 32) {\n result += '...'\n }\n return result\n }\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n let result = '['\n for (let i = 0; i < value.length; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n result += '\"' + value[i] + '\"'\n } else {\n result += value[i]\n }\n if (i != value.length - 1) {\n result += ', '\n }\n }\n result += ']'\n return result\n }\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Object') {\n return ''\n }\n if (this.formatString && value) {\n return sprintf(this.formatString, value)\n }\n return '' + value\n },\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\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\n<template>\n <td>\n <v-checkbox\n v-if=\"isCheckbox\"\n dense\n hide-details\n v-model=\"checkValue\"\n @change=\"checkboxChange\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-checkbox\"\n />\n <v-select\n v-else-if=\"dataItem.states\"\n dense\n hide-details\n v-model=\"stateValue\"\n @change=\"stateChange\"\n :items=\"itemStates\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-select\"\n />\n <v-text-field\n v-else\n solo\n dense\n single-line\n hide-no-data\n hide-details\n @change=\"textChange\"\n :value=\"format(dataItem.value)\"\n :disabled=\"!dataItem.editable\"\n data-test=\"table-item-text-field\"\n />\n </td>\n</template>\n\n<script>\nimport VWidget from '@openc3/tool-common/src/components/widgets/VWidget'\n\nexport default {\n mixins: [VWidget],\n props: {\n item: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n dataItem: this.item,\n stateValue: null,\n checkValue: false,\n }\n },\n created() {\n if (this.dataItem.states) {\n this.stateValue = this.dataItem.states[this.dataItem.value]\n }\n if (this.isCheckbox) {\n this.checkValue = this.stateValue === 1\n }\n },\n computed: {\n isCheckbox: function () {\n let result = true\n if (this.dataItem.states) {\n for (const state of Object.keys(this.dataItem.states)) {\n if (state !== 'CHECKED' && state !== 'UNCHECKED') {\n result = false\n }\n }\n } else {\n result = false\n }\n return result\n },\n itemStates: function () {\n let result = []\n for (const [text, value] of Object.entries(this.dataItem.states)) {\n result.push({ text: text, value: value })\n }\n return result\n },\n },\n methods: {\n checkboxChange: function () {\n if (this.checkValue) {\n this.$emit('change', 'CHECKED')\n } else {\n this.$emit('change', 'UNCHECKED')\n }\n },\n stateChange: function () {\n // Lookup the state key that corresponds to the value\n let state = Object.keys(this.dataItem.states).find(\n (key) => this.dataItem.states[key] === this.stateValue,\n )\n this.$emit('change', state)\n },\n textChange: function (value) {\n // Set the value since we're not using v-model on the textfield\n this.dataItem.value = value\n this.$emit('change', this.dataItem.value)\n },\n format: function (value) {\n if (\n value &&\n value['json_class'] === 'String' &&\n value['raw'] !== undefined\n ) {\n this.dataItem.editable = false\n }\n return this.formatValue(value)\n },\n },\n}\n</script>\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!./TableItem.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!./TableItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableItem.vue?vue&type=template&id=91f5fe22\"\nimport script from \"./TableItem.vue?vue&type=script&lang=js\"\nexport * from \"./TableItem.vue?vue&type=script&lang=js\"\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 null,\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\n<template>\n <tr>\n <td class=\"text-start\">{{ dataItems[0].index }}</td>\n <td class=\"text-start\" v-if=\"oneDimensional\">{{ dataItems[0].name }}</td>\n <table-item\n v-for=\"(item, index) in dataItems\"\n :key=\"item.name\"\n :item=\"item\"\n @change=\"onChange(item, index, $event)\"\n />\n </tr>\n</template>\n\n<script>\nimport TableItem from '@/tools/TableManager/TableItem'\n\nexport default {\n components: {\n TableItem,\n },\n props: {\n items: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n dataItems: this.items,\n }\n },\n computed: {\n oneDimensional() {\n if (this.dataItems.length === 1) {\n return true\n } else {\n return false\n }\n },\n },\n methods: {\n onChange: function (item, index, event) {\n this.$emit('change', { index: index, event: event })\n },\n },\n}\n</script>\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!./TableRow.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!./TableRow.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableRow.vue?vue&type=template&id=0cf65978\"\nimport script from \"./TableRow.vue?vue&type=script&lang=js\"\nexport * from \"./TableRow.vue?vue&type=script&lang=js\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"600\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.success()}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-overlay',{attrs:{\"value\":_vm.loading}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"absolute\":\"\",\"size\":\"64\"}})],1),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',[_vm._v(_vm._s(_vm.helpText)+\" \")]),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-5\",attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"flat\":\"\",\"autofocus\":\"\",\"solo-inverted\":\"\",\"hide-details\":\"\",\"clearable\":\"\",\"label\":\"Search\",\"prepend-inner-icon\":\"mdi-magnify\",\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"file-open-save-search\"},on:{\"input\":_vm.handleSearch},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-2\",attrs:{\"dense\":\"\"}},[_c('v-treeview',{ref:\"tree\",staticStyle:{\"width\":\"100%\",\"max-height\":\"60vh\",\"overflow\":\"auto\"},attrs:{\"dense\":\"\",\"activatable\":\"\",\"return-object\":\"\",\"items\":_vm.items,\"search\":_vm.search,\"open-on-click\":_vm.type === 'open'},on:{\"update:active\":_vm.activeFile},scopedSlots:_vm._u([{key:\"prepend\",fn:function({ item, open }){return [(!item.file)?_c('v-icon',[_vm._v(\"\\n \"+_vm._s(open ? 'mdi-folder-open' : 'mdi-folder')+\"\\n \")]):_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.calcIcon(item.name))+\" \")])]}},{key:\"append\",fn:function({ item }){return [(item.name === '__TEMP__')?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deleteTemp}},[_c('v-icon',[_vm._v(\" mdi-delete \")])],1):_vm._e()]}}]),model:{value:(_vm.tree),callback:function ($$v) {_vm.tree=$$v},expression:\"tree\"}})],1),_vm._v(\" \"),_c('v-row',{staticClass:\"my-2\"},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"Filename\",\"data-test\":\"file-open-save-filename\",\"disabled\":_vm.type === 'open'},model:{value:(_vm.selectedFile),callback:function ($$v) {_vm.selectedFile=$$v},expression:\"selectedFile\"}})],1),_vm._v(\" \"),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"my-2 red--text\",staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]),_vm._v(\" \"),_c('v-row',{staticClass:\"mt-2\"},[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"file-open-save-cancel-btn\",\"disabled\":_vm.disableButtons},on:{\"click\":function($event){_vm.show = false}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"type\":\"submit\",\"color\":\"primary\",\"data-test\":\"file-open-save-submit-btn\",\"disabled\":_vm.disableButtons || !!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\"\\n \"+_vm._s(_vm.submit)+\"\\n \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n# Copyright 2022 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\nconst fileIcon = function (filename) {\n if (filename && filename.includes('.')) {\n let ext = filename.split('.').pop()\n if (ext === 'py') {\n return 'mdi-language-python'\n } else if (ext === 'rb') {\n return 'mdi-language-ruby'\n } else if (ext === 'js') {\n return 'mdi-language-javascript'\n } else if (ext === 'csv') {\n return 'mdi-file-delimited'\n } else if (ext === 'txt') {\n return 'mdi-file-document'\n } else if (ext === 'png' || ext === 'gif' || ext === 'jpg') {\n return 'mdi-file-image'\n }\n }\n return 'mdi-file'\n}\n\nexport { fileIcon }\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!./FileOpenSaveDialog.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!./FileOpenSaveDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileOpenSaveDialog.vue?vue&type=template&id=a3b20bcc\"\nimport script from \"./FileOpenSaveDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileOpenSaveDialog.vue?vue&type=script&lang=js\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":_vm.width},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('div',{staticClass:\"mx-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"downloadIcon\"},on:{\"click\":_vm.download}},[_vm._v(\"\\n mdi-download\\n \")])],1)]}}])},[_vm._v(\" \"),_c('span',[_vm._v(\" Download \")])])],1)],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('span',{staticStyle:{\"white-space\":\"pre-wrap\"}},[_vm._v(_vm._s(_vm.text))])])]),_vm._v(\" \"),_c('v-card-actions',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.show = !_vm.show}}},[_vm._v(\" Ok \")])],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!./SimpleTextDialog.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!./SimpleTextDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SimpleTextDialog.vue?vue&type=template&id=4cd697cc\"\nimport script from \"./SimpleTextDialog.vue?vue&type=script&lang=js\"\nexport * from \"./SimpleTextDialog.vue?vue&type=script&lang=js\"\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 null,\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 2023, 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\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n <v-snackbar v-model=\"showReadOnlyToast\" top :timeout=\"-1\" color=\"orange\">\n <v-icon> mdi-pencil-off </v-icon>\n {{ lockedBy }} is editing this script. Editor is in read-only mode\n <template v-slot:action=\"{ attrs }\">\n <v-btn\n text\n v-bind=\"attrs\"\n color=\"danger\"\n @click=\"confirmLocalUnlock\"\n data-test=\"unlock-button\"\n >\n Unlock\n </v-btn>\n <v-btn\n text\n v-bind=\"attrs\"\n @click=\"\n () => {\n showReadOnlyToast = false\n }\n \"\n >\n dismiss\n </v-btn>\n </template>\n </v-snackbar>\n <v-file-input\n show-size\n v-model=\"fileInput\"\n ref=\"fileInput\"\n accept=\".bin\"\n data-test=\"file-input\"\n style=\"position: fixed; top: -100%\"\n />\n <v-card>\n <v-card-text>\n <v-row dense>\n <v-col cols=\"6\">\n <v-text-field\n outlined\n dense\n readonly\n hide-details\n label=\"Filename\"\n v-model=\"fullFilename\"\n id=\"filename\"\n class=\"filename\"\n data-test=\"filename\"\n />\n </v-col>\n <v-col cols=\"6\">\n <v-text-field\n outlined\n dense\n readonly\n hide-details\n label=\"Definition\"\n v-model=\"definitionFilename\"\n id=\"definition-filename\"\n class=\"filename\"\n data-test=\"definition-filename\"\n />\n </v-col>\n </v-row>\n <v-row dense>\n <v-col cols=\"auto\" class=\"mr-auto\">\n <span class=\"text-body-1 ma-2\">File Download:</span>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadBinary(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-binary\"\n >\n Binary\n <v-icon right dark> mdi-file-code </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadDefinition(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-definition\"\n >\n Definition\n <v-icon right dark> mdi-file-document-edit </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n @click=\"downloadReport(null)\"\n :disabled=\"filename == ''\"\n data-test=\"download-file-report\"\n >\n Report\n <v-icon right dark> mdi-file-document </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-btn\n dense\n color=\"primary\"\n @click=\"upload()\"\n :disabled=\"!uploadScript\"\n data-test=\"upload-file\"\n >\n Upload\n <v-icon right dark> mdi-file-upload </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-btn\n dense\n color=\"primary\"\n @click=\"download()\"\n :disabled=\"!downloadScript\"\n data-test=\"download-file\"\n >\n Download\n <v-icon right dark> mdi-file-download </v-icon>\n </v-btn>\n </v-col>\n <v-col cols=\"auto\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <span v-bind=\"attrs\" v-on=\"on\">\n <v-checkbox\n v-model=\"scriptBackground\"\n label=\"B/G\"\n class=\"shrink mt-0\"\n data-test=\"upload-background\"\n />\n </span>\n </template>\n <span>Run upload download scripts in the background</span>\n </v-tooltip>\n </v-col>\n </v-row>\n </v-card-text>\n <v-card-title style=\"padding-top: 0px\">\n Items\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-tabs v-model=\"curTab\">\n <v-tab v-for=\"(table, index) in tables\" :key=\"index\">\n {{ table.name }}\n </v-tab>\n </v-tabs>\n <v-tabs-items v-model=\"curTab\">\n <v-tab-item\n v-for=\"(table, index) in tables\"\n :key=\"`${filename}${index}`\"\n >\n <v-data-table\n :headers=\"table.headers\"\n :items=\"table.rows\"\n :search=\"search\"\n :items-per-page=\"20\"\n :footer-props=\"{\n itemsPerPageOptions: [10, 20, 50, 100, -1],\n }\"\n calculate-widths\n multi-sort\n dense\n :data-test=\"table.name\"\n >\n <template v-slot:item=\"{ item }\">\n <table-row\n :items=\"item\"\n :key=\"item[0].name\"\n @change=\"onChange(item, $event)\"\n />\n </template>\n <template v-slot:footer v-if=\"tables.length > 1\">\n <div style=\"position: absolute\" class=\"ma-3\">\n <span class=\"text-body-1 mr-3\">Table Download:</span>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadBinary(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-binary\"\n >\n Binary\n <v-icon right dark> mdi-file-code </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n class=\"mr-3\"\n @click=\"downloadDefinition(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-definition\"\n >\n Definition\n <v-icon right dark> mdi-file-document-edit </v-icon>\n </v-btn>\n <v-btn\n dense\n color=\"primary\"\n @click=\"downloadReport(table.name)\"\n :disabled=\"filename == ''\"\n data-test=\"download-table-report\"\n >\n Report\n <v-icon right dark> mdi-file-document </v-icon>\n </v-btn>\n </div>\n </template>\n </v-data-table>\n </v-tab-item>\n </v-tabs-items>\n </v-card>\n <file-open-save-dialog\n v-if=\"fileOpen\"\n v-model=\"fileOpen\"\n type=\"open\"\n api-url=\"/openc3-api/tables\"\n @file=\"setFile($event)\"\n @error=\"setError($event)\"\n />\n <file-open-save-dialog\n v-if=\"showSaveAs\"\n v-model=\"showSaveAs\"\n type=\"save\"\n require-target-parent-dir\n api-url=\"/openc3-api/tables\"\n :input-filename=\"filename\"\n @filename=\"saveAsFilename($event)\"\n @error=\"setError($event)\"\n />\n <simple-text-dialog\n v-model=\"showError\"\n :title=\"errorTitle\"\n :text=\"errorText\"\n />\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport TableRow from '@/tools/TableManager/TableRow'\nimport FileOpenSaveDialog from '@openc3/tool-common/src/components/FileOpenSaveDialog'\nimport SimpleTextDialog from '@openc3/tool-common/src/components/SimpleTextDialog'\n\nexport default {\n components: {\n TopBar,\n TableRow,\n FileOpenSaveDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n title: 'Table Manager',\n search: '',\n curTab: null,\n tables: [],\n api: null,\n definition: null,\n fileInput: '',\n definitionFilename: '',\n fileNew: false,\n filename: '',\n fileModified: '',\n lockedBy: null,\n fileOpen: false,\n showSave: false,\n showSaveAs: false,\n showError: false,\n errorTitle: '',\n errorText: '',\n uploadScript: null,\n downloadScript: null,\n scriptBackground: true,\n }\n },\n computed: {\n readOnly: function () {\n return !!this.lockedBy\n },\n fullFilename() {\n return `${this.filename} ${this.fileModified}`.trim()\n },\n menus: function () {\n return [\n {\n label: 'File',\n items: [\n {\n label: 'New File',\n icon: 'mdi-file-plus',\n command: () => {\n this.newFile()\n },\n },\n {\n label: 'Open File',\n icon: 'mdi-folder-open',\n command: () => {\n this.openFile()\n },\n },\n {\n divider: true,\n },\n {\n label: 'Save File',\n icon: 'mdi-content-save',\n command: () => {\n this.saveFile()\n },\n },\n {\n label: 'Save As...',\n icon: 'mdi-content-save',\n command: () => {\n this.saveAs()\n },\n },\n {\n divider: true,\n },\n // {\n // label: 'Load Binary',\n // icon: 'mdi-cloud-upload',\n // command: () => {\n // this.loadBinary()\n // },\n // },\n // {\n // divider: true,\n // },\n {\n label: 'Delete File',\n icon: 'mdi-delete',\n command: () => {\n this.delete()\n },\n },\n ],\n },\n ]\n },\n },\n watch: {\n // Every time the filename changes we figure out if there is an associated upload & download script\n filename: function (val) {\n let upload =\n this.filename.split('/').slice(0, 2).join('/') + '/procedures/upload'\n let download =\n this.filename.split('/').slice(0, 2).join('/') + '/procedures/download'\n // First try Ruby\n Api.get(`/openc3-api/tables/${upload}.rb`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.uploadScript = `${upload}.rb`\n })\n .catch((error) => {\n // Now try python\n Api.get(`/openc3-api/tables/${upload}.py`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.uploadScript = `${upload}.py`\n })\n .catch((error) => {\n this.uploadScript = null\n })\n })\n // First check Ruby\n Api.get(`/openc3-api/tables/${download}.rb`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.downloadScript = `${download}.rb`\n })\n .catch((error) => {\n // Now try python\n Api.get(`/openc3-api/tables/${download}.py`, {\n headers: {\n Accept: 'application/json',\n // Since we're just checking for existence, 404 is possible so ignore it\n 'Ignore-Errors': '404',\n },\n })\n .then((response) => {\n this.downloadScript = `${download}.py`\n })\n .catch((error) => {\n this.downloadScript = null\n })\n })\n },\n },\n created() {\n // Ensure Offline Access Is Setup For the Current User\n this.api = new OpenC3Api()\n this.api.ensure_offline_access()\n },\n methods: {\n // File menu actions\n newFile: function () {\n this.fileModified = ''\n this.fileNew = true\n this.fileOpen = true\n },\n openFile: function () {\n this.fileOpen = true\n },\n // Called by the FileOpenDialog to set the file contents\n setFile: function ({ file, locked }) {\n // They opened a definition file so create a new binary\n if (file.name.includes('.txt')) {\n if (this.fileNew) {\n this.buildNewBinary(file.name)\n this.fileNew = false\n } else {\n this.getDefinition(file.name)\n }\n } else {\n this.unlockFile() // first unlock what was just being edited\n // Split off the ' *' which indicates a file is modified on the server\n this.filename = file.name.split('*')[0]\n this.fileModified = ''\n this.lockedBy = locked\n this.getDefinition()\n }\n },\n // Called by the FileOpenSaveDialog on error\n setError(event) {\n this.errorTitle = 'Error'\n this.errorText = `Error: ${event}`\n this.errorText = response.data.message\n this.showError = true\n },\n saveFile: function () {\n // Save a file by posting the new contents\n this.showSave = true\n\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n formData.append('tables', JSON.stringify(this.tables))\n Api.post(`/openc3-api/tables/${this.filename}`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n .then((response) => {\n this.fileModified = ''\n setTimeout(() => {\n this.showSave = false\n }, 2000)\n })\n .catch(({ response }) => {\n this.showSave = false\n this.errorTitle = 'Save Error'\n this.errorText = response.data.message\n this.showError = true\n })\n this.lockFile() // Ensure this file is locked for editing\n },\n saveAs: function () {\n this.showSaveAs = true\n },\n saveAsFilename: function (filename) {\n Api.put(`/openc3-api/tables/${this.filename}/save-as/${filename}`).then(\n (response) => {\n this.filename = filename\n this.getDefinition(this.definitionFilename)\n },\n )\n },\n delete: function () {\n if (this.filename !== '') {\n this.$dialog\n .confirm(`Permanently delete file: ${this.filename}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/tables/${this.filename}`, {\n data: {},\n })\n })\n .then((response) => {\n this.tables = []\n this.filename = ''\n this.definitionFilename = ''\n })\n .catch((error) => {\n // TODO: It returns true on cancel?\n })\n }\n },\n downloadBinary: function (tableName = null) {\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/binary`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\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 // Return BLOB image after conversion\n const blob = new Blob([uInt8Array], {\n type: 'application/octet-stream',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadDefinition: function (tableName = null) {\n const formData = new FormData()\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/definition`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n const blob = new Blob([response.data.contents], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n downloadReport: function (tableName = null) {\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', this.definitionFilename)\n if (tableName !== null) {\n formData.append('table', tableName)\n }\n Api.post(`/openc3-api/tables/report`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n const header =\n `Binary: ${this.filename}\\n` +\n `Definition: ${this.definitionFilename}\\n\\n`\n const blob = new Blob([header, response.data.contents], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n upload() {\n Api.post(`/script-api/scripts/${this.uploadScript}/run`, {\n data: {\n environment: [{ key: 'TBL_FILENAME', value: this.filename }],\n },\n }).then((response) => {\n if (this.scriptBackground !== true) {\n window.open(`/tools/scriptrunner/${response.data}`, '_blank')\n }\n })\n },\n download() {\n this.$dialog\n .confirm(\n `Are you sure you want to overwrite ${this.filename}? ` +\n 'You can Save As to create a new file and then Download to preserve the existing file. ' +\n 'Note: Once the download completes you will need to re-open the file to see changes.',\n {\n okText: 'Download (Overwrite!)',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n Api.post(`/script-api/scripts/${this.downloadScript}/run`, {\n data: {\n environment: [{ key: 'TBL_FILENAME', value: this.filename }],\n },\n }).then((response) => {\n if (this.scriptBackground !== true) {\n window.open(`/tools/scriptrunner/${response.data}`, '_blank')\n }\n })\n })\n .catch((error) => {}) // Cancel, do nothing\n },\n // TODO: Need to load to tmp dir or something before we can saveAs to rename\n // async loadBinary() {\n // this.fileInput = ''\n // this.$refs.fileInput.$refs.input.click()\n // // Wait for the file to be set by the dialog so upload works\n // while (this.fileInput === '') {\n // await new Promise((resolve) => setTimeout(resolve, 500))\n // }\n // this.filename = this.fileInput.name\n // this.saveAs()\n // },\n confirmLocalUnlock: function () {\n this.$dialog\n .confirm(\n 'Are you sure you want to unlock this file for editing? ' +\n 'If another user is editing this file, your changes might conflict with each other.',\n {\n okText: 'Force Unlock',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.lockedBy = null\n return this.lockFile() // Re-lock it as this user so it's locked for anyone else who opens it\n })\n },\n lockFile: function () {\n return Api.post(`/openc3-api/tables/${this.filename}/lock`)\n },\n unlockFile: function () {\n if (this.filename !== '' && !this.readOnly) {\n Api.post(`/openc3-api/tables/${this.filename}/unlock`)\n }\n },\n getDefinition: function (definitionFilename = null) {\n if (!definitionFilename) {\n // Create a notional definition filename based on the binary\n definitionFilename = this.filename\n .replace('/bin/', '/config/')\n .replace('.bin', '_def.txt')\n }\n this.tables = [] // Clear so table is re-rendered\n const formData = new FormData()\n formData.append('binary', this.filename)\n formData.append('definition', definitionFilename)\n Api.post(`/openc3-api/tables/load`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n })\n .then((response) => {\n // Set the definition as actually loaded. The backend\n // checks what we sent and does a lookup to return\n // something close if it can't find an exact match.\n this.definitionFilename = response.data.definition\n this.tables = response.data.tables.map((table) => {\n return {\n ...table,\n // Build up the headers for proper searching\n headers: table.headers.map((text, i) => {\n const header = {\n text,\n filterable: text !== 'INDEX',\n }\n if (table.numColumns === 1) {\n // In the 1D table the searchable value is the first value in the row\n // Note the names in 1D are INDEX, NAME, VALUE\n return {\n ...header,\n value: `[0].${text.toLowerCase()}`,\n }\n } else {\n // In the 2D table the searchable value is always in the value attribute\n // of the current column item\n return {\n ...header,\n value: `[${i}].value`,\n }\n }\n }),\n }\n })\n\n if (response.data['errors']) {\n this.$notify.caution({\n title: 'Warning',\n body: response.data['errors'],\n })\n }\n })\n .catch((error) => {\n if (error.response.status == 404) {\n this.$notify.normal({\n title: 'Definition File Not Found',\n body: `Definition file ${definitionFilename} not found. Please select definition file.`,\n })\n this.fileOpen = true\n } else {\n this.$notify.serious({\n title: 'Error',\n body: `Error loading due to ${error.response.statusText}. Status: ${error.response.status}`,\n })\n }\n })\n },\n buildNewBinary: function (filename) {\n const formData = new FormData()\n formData.append('definition', filename)\n Api.post(`/openc3-api/tables/generate`, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response) => {\n this.filename = response.data.filename\n this.getDefinition(filename)\n })\n },\n onChange: function (item, { index, event }) {\n this.fileModified = '*'\n item[index].value = event\n },\n },\n}\n</script>\n<style scoped>\n.filename {\n background-color: var(--color-background-base-default);\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!./TableManager.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!./TableManager.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TableManager.vue?vue&type=template&id=4e8e2697&scoped=true\"\nimport script from \"./TableManager.vue?vue&type=script&lang=js\"\nexport * from \"./TableManager.vue?vue&type=script&lang=js\"\nimport style0 from \"./TableManager.vue?vue&type=style&index=0&id=4e8e2697&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 \"4e8e2697\",\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, `.filename[data-v-4e8e2697]{background-color:var(--color-background-base-default)}`, \"\"]);\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-0af23388]{font-size:2rem}.menu-button[data-v-0af23388]{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-0af23388]{padding-right:5px}.list-action[data-v-0af23388] label{color:#fff;padding-left:10px}.myicon[data-v-0af23388]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-0af23388] .v-label{margin-left:5px}.v-list-item__icon[data-v-0af23388]{margin-right:15px!important}.v-list-item__title[data-v-0af23388]{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!./TableManager.vue?vue&type=style&index=0&id=4e8e2697&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(\"370d98b4\", 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=0af23388&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(\"7f447726\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_4ln9awyf1","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","menus","title","_v","scopedSlots","_u","key","fn","_b","on","confirmLocalUnlock","click","showReadOnlyToast","model","value","callback","$$v","expression","_s","lockedBy","ref","staticStyle","fileInput","staticClass","fullFilename","definitionFilename","filename","$event","downloadBinary","downloadDefinition","downloadReport","uploadScript","upload","downloadScript","download","_g","scriptBackground","search","curTab","_l","tables","table","index","name","headers","rows","itemsPerPageOptions","item","onChange","length","b","proxy","fileOpen","setFile","setError","_e","showSaveAs","saveAsFilename","errorTitle","errorText","showError","staticRenderFns","vueInstance","Vue","axiosInstance","axios","create","baseURL","location","origin","timeout","params","interceptors","response","use","error","status","OpenC3Auth","updateToken","defaultMinValidity","then","refreshed","setTokens","config","includes","toString","Promise","reject","body","statusText","data","message","exception","class","$notify","serious","request","async","method","url","noAuth","noScope","onUploadProgress","login","localStorage","openc3Token","window","openc3Scope","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","OpenC3Api","constructor","_defineProperty","exec","kwparams","headerOptions","id","jsonrpc","keyword_params","Authorization","result","err","Error","object","decode_openc3_type","val","json_class","raw","NaN","Infinity","encode_openc3_type","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","ensure_offline_access","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","get_all_interface_info","map_target_to_interface","target_name","interface_name","connect_interface","interface_params","disconnect_interface","interface_cmd","command_name","command_params","get_all_router_info","connect_router","router_name","disconnect_router","get_target_interfaces","get_all_target_info","get_tlm_cnts","target_commands","get_item","target","packet","get_param","get_parameter","get_limits_sets","get_limits_set","set_limits_set","limits_set","get_target","get_target_names","get_target_list","get_tlm","packet_name","get_telemetry","get_all_tlm","get_all_telemetry","get_all_tlm_names","hidden","get_all_telemetry_names","get_tlm_packet","value_type","stale_time","type","len","converted","i","get_packet_derived_items","get_tlm_buffer","get_tlm_values","items","cache_timeout","kw_args","get_limits","item_name","tlm","undefined","inject_tlm","item_hash","set_tlm","override_tlm","get_overrides","normalize_tlm","get_all_cmds","get_all_commands","get_all_cmd_names","get_all_command_names","get_cmd","get_command","get_cmd_cnts","get_cmd_value","parameter_name","get_cmd_buffer","_cmd","param_list","Object","prototype","hasOwnProperty","call","get_cmd_hazardous","cmd","cmd_no_range_check","cmd_raw","cmd_raw_no_range_check","cmd_no_hazardous_check","cmd_no_checks","cmd_raw_no_hazardous_check","cmd_raw_no_checks","build_cmd","build_command","get_interface_names","send_raw","list_configs","tool","load_config","save_config","delete_config","enable_limits","disable_limits","get_out_of_limits","get_overall_limits_state","ignored","list_settings","get_all_settings","get_setting","get_settings","array","set_setting","save_setting","get_metrics","hashString","string","isSecureContext","arrayBuffer","TextEncoder","encode","hashAsArrayBuffer","crypto","subtle","digest","uint8ViewOfHash","Uint8Array","Array","from","map","padStart","join","menu","refInFor","formatDT","label","domProps","radioGroup","option","j","divider","subMenu","k","disabled","icon","radio","checkbox","style","submenu","subMenuClick","command","checked","$set","props","default","String","methods","replaceAll","toLowerCase","$refs","topmenu","isActive","mounted","document","component","cov_1t2k5qkr64","dataItems","oneDimensional","cov_2rpg3mh9u7","isCheckbox","dataItem","editable","checkboxChange","checkValue","states","itemStates","stateChange","stateValue","format","textChange","dateFormat","timeFormat","timeFormatHMS","dateTimeFormat","parseDateTime","dateString","timeZone","replace","Date","parse","formatUtcToLocal","date","subMinutes","getTimezoneOffset","formatDateTime","formatInTimeZone","formatDate","formatTime","formatString","formatTimeHMS","formatTimestamp","timestamp","parseISO","formatSeconds","secs","formatNanoseconds","nanoSecs","parseInt","ConfigParserError","config_parser","usage","keyword","parameters","line","lineNumber","widgetIndex","settings","screen","computed","computedStyle","forEach","setting","slice","applySetting","created","filter","getColor","verifyNumParams","min_num_params","max_num_params","parser","setWidth","width","units","defaultWidth","foundSetting","find","unshift","push","setHeight","height","defaultHeight","mixins","Widget","TimeFilters","limitsState","counter","curValue","prevValue","grayLevel","grayRate","valueId","arrayIndex","viewDetails","contextMenuShown","x","y","contextMenuOptions","action","open","watch","_counter","newVal","oldVal","_value","screenValues","formatValue","_limitsState","valueClass","limitsColor","astroIcon","limitsLetter","c","charAt","endsWith","match","getType","addItem","destroyed","deleteItem","byte","toUpperCase","sprintf","showContextMenu","e","preventDefault","clientX","clientY","$nextTick","VWidget","required","state","keys","text","entries","$emit","components","TableItem","event","indexOf","_k","keyCode","success","show","loading","apply","arguments","helpText","handleSearch","activeFile","file","calcIcon","deleteTemp","tree","selectedFile","directives","rawName","disableButtons","submit","fileIcon","ext","split","pop","validator","apiUrl","requireTargetParentDir","Boolean","inputFilename","targets","set","validFilenameRegex","alphanumeric","charset","RegExp","loadFiles","Api","filepath","insertFile","catch","clear","overwrite","input","updateAll","exists","root","found","children","openSuccess","saveSuccess","$dialog","confirm","okText","cancelText","dialog","contents","suites","JSON","locked","breakpoints","level","parts","findIndex","blob","Blob","link","createElement","href","URL","createObjectURL","setAttribute","TopBar","TableRow","FileOpenSaveDialog","SimpleTextDialog","api","definition","fileNew","fileModified","showSave","readOnly","trim","newFile","openFile","saveFile","saveAs","buildNewBinary","getDefinition","unlockFile","formData","FormData","append","stringify","setTimeout","lockFile","tableName","decodedData","atob","uInt8Array","charCodeAt","header","environment","filterable","numColumns","caution","normal","___CSS_LOADER_EXPORT___","module","content","__esModule","locals","exports","add"],"sourceRoot":""}
|