openc3-tool-admin 5.0.6 → 5.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5f47666b527c00830e9819f96a38c653ee2d90b401d0aa9e9b2dff3d5322231
4
- data.tar.gz: defb2c16c3290119757e5162cd9a5888caef368bd9603cdbd5843000d1e3059e
3
+ metadata.gz: 6bc955e8c6680931a769640e4e8ce3a8f38b0838f3308bb43471cd8593beb9f6
4
+ data.tar.gz: cd08f6fc2dcc147f5c609fb12224221266d5396b343bc6e754dadbadd3650c5d
5
5
  SHA512:
6
- metadata.gz: 466270e70269ac7dd5ed23f89c5f55c5587c5202171cc391945749991a203e1a67ccde57af05045fb0841a9c3ad2a7843f738fc1e8fc45680e0934df9407ded1
7
- data.tar.gz: 95203175344cb84738403415ae5e61d321bbcf43c1bce3c8e4510ab428bfefb3c1fca4b2afed726861ffd062aa2e4b9383b83b0a2df9d4553b0b7d2ee4fd6c6c
6
+ metadata.gz: ce882081eb640dfc5e2000469ee087469540526a2f94f3d097c17beaeac89ee93a00516ab0cf514d2dafdc6047e1e17b344d832e3b8bd139123d186663fb57e1
7
+ data.tar.gz: 993075815e3064a40deeacfbd4428f760b2a28d36e27ed01bb0c2d0c54dd6d48d41fd5d47d8cb8dcda7b7784a55fc829c423e8e7adcb2ef312351769a2d0cb90
@@ -0,0 +1,2 @@
1
+ "use strict";(self["webpackChunk_openc3_tool_admin"]=self["webpackChunk_openc3_tool_admin"]||[]).push([[179],{1261:function(e,n,t){var o=t(8378),a=t(6625),s=t(5627),i=t(3093),r=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n,t){var o,s,r,d,l,c,u,p,m,A=arguments;return(0,a.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(o=A.length>2&&void 0!==A[2]?A[2]:{},s=o.data,r=o.params,d=void 0===r?{}:r,l=o.headers,c=o.noAuth,u=void 0!==c&&c,p=o.noScope,m=void 0!==p&&p,u){e.next=11;break}return e.prev=2,e.next=5,OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity);case 5:e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](2),OpenC3Auth.login();case 10:l["Authorization"]=localStorage.openc3Token;case 11:return m||d["scope"]||(d["scope"]=localStorage.scope),e.abrupt("return",(0,i.Z)({method:n,url:t,data:s,params:d,headers:l}));case 13:case"end":return e.stop()}}),e,null,[[2,7]])})));return function(n,t){return e.apply(this,arguments)}}(),d={Accept:"application/json"},l=(0,o.Z)((0,o.Z)({},d),{},{"Content-Type":"application/json"});n["Z"]={get:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.params,o=n.headers,a=void 0===o?d:o,s=n.noScope,i=n.noAuth;return r("get",e,{params:t,headers:a,noScope:s,noAuth:i})},put:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.data,o=n.params,a=n.headers,s=void 0===a?l:a,i=n.noScope,d=n.noAuth;return r("put",e,{data:t,params:o,headers:s,noScope:i,noAuth:d})},post:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.data,o=n.params,a=n.headers,s=void 0===a?l:a,i=n.noScope,d=n.noAuth;return r("post",e,{data:t,params:o,headers:s,noScope:i,noAuth:d})},delete:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.params,o=n.headers,a=void 0===o?d:o,s=n.noScope,i=n.noAuth;return r("delete",e,{params:t,headers:a,noScope:s,noAuth:i})}}},3093:function(e,n,t){t(8188),t(8233);var o=t(9644),a=t.n(o),s=t(4091),i=new s["default"],r=a().create({baseURL:location.origin,timeout:6e4,params:{}});r.interceptors.response.use((function(e){return e}),(function(e){if(e.response){if(401===e.response.status)delete localStorage.openc3Token,OpenC3Auth.login(location.href);else{var n,t,o,a,s,r,d,l,c,u;if(localStorage.axiosIgnoreResponse===e.response.status.toString())return Promise.reject(e);var p="HTTP ".concat(e.response.status," - ");if(null!==(n=e.response)&&void 0!==n&&n.statusText&&(p+="".concat(e.response.statusText," ")),null!==(t=e.response)&&void 0!==t&&null!==(o=t.config)&&void 0!==o&&o.data&&(p+="".concat(e.response.config.data," ")),null!==(a=e.response)&&void 0!==a&&null!==(s=a.data)&&void 0!==s&&s.message)p+="".concat(e.response.data.message);else if(null!==(r=e.response)&&void 0!==r&&null!==(d=r.data)&&void 0!==d&&d.exception)p+="".concat(e.response.data.exception);else if(null!==(l=e.response)&&void 0!==l&&null!==(c=l.data)&&void 0!==c&&null!==(u=c.error)&&void 0!==u&&u.message)e.response.data.error.class&&(p+="".concat(e.response.data.error.class," ")),p+="".concat(e.response.data.error.message);else{var m;p+="".concat(null===(m=e.response)||void 0===m?void 0:m.data)}i.$notify.serious({title:"Network error",body:p})}throw e}throw e})),n["Z"]=r},7179:function(e,n,t){t.r(n),t.d(n,{default:function(){return u}});var o=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",[t("v-card",[t("v-card-title",[e._v(" Send Raw Redis Commands ")]),t("v-card-subtitle",[e._v(" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. "),t("br"),t("br"),e._v(" Enter commands like you would at the Redis cli prompt: "),t("code",[e._v("ping")]),e._v(" or "),t("code",[e._v("hget openc3__settings version")])]),t("v-card-text",{staticClass:"pb-0 ml-2"},[t("v-text-field",{attrs:{label:"Redis command"},on:{keydown:e.commandKeydown},model:{value:e.redisCommandText,callback:function(n){e.redisCommandText=n},expression:"redisCommandText"}}),e.redisResponse?t("span",[e._v(" Response: "+e._s(e.redisResponse)+" ")]):e._e()],1),t("v-card-actions",[t("v-btn",{staticClass:"ml-2",attrs:{disabled:!e.redisCommandText.length,color:"success",text:""},on:{click:e.executeRaw}},[e._v(" Execute ")]),t("v-radio-group",{staticClass:"mt-0",attrs:{row:"","hide-details":""},model:{value:e.redisEndpoint,callback:function(n){e.redisEndpoint=n},expression:"redisEndpoint"}},[t("v-radio",{attrs:{label:"Persistent",value:"/openc3-api/redis/exec","data-test":"persistent-radio"}}),t("v-radio",{attrs:{label:"Ephemeral",value:"/openc3-api/redis/exec?ephemeral=1","data-test":"ephemeral-radio"}})],1)],1)],1)],1)},a=[],s=t(1261);function i(){var e="/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/RedisTab.vue",n="5a9a2bbf5f1c9c4295c02785fffea6c920dd1283",t=new Function("return this")(),o="__coverage__",a={path:"/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/RedisTab.vue",statementMap:{0:{start:{line:72,column:4},end:{line:76,column:5}},1:{start:{line:80,column:6},end:{line:80,column:49}},2:{start:{line:83,column:6},end:{line:83,column:31}},3:{start:{line:84,column:6},end:{line:92,column:8}},4:{start:{line:91,column:8},end:{line:91,column:49}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:71,column:2},end:{line:71,column:3}},loc:{start:{line:71,column:9},end:{line:77,column:3}},line:71},1:{name:"(anonymous_1)",decl:{start:{line:79,column:20},end:{line:79,column:21}},loc:{start:{line:79,column:38},end:{line:81,column:5}},line:79},2:{name:"(anonymous_2)",decl:{start:{line:82,column:16},end:{line:82,column:17}},loc:{start:{line:82,column:28},end:{line:93,column:5}},line:82},3:{name:"(anonymous_3)",decl:{start:{line:90,column:14},end:{line:90,column:15}},loc:{start:{line:90,column:28},end:{line:92,column:7}},line:90}},branchMap:{0:{loc:{start:{line:80,column:6},end:{line:80,column:49}},type:"binary-expr",locations:[{start:{line:80,column:6},end:{line:80,column:28}},{start:{line:80,column:32},end:{line:80,column:49}}],line:80}},s:{0:0,1:0,2:0,3:0,4:0},f:{0:0,1:0,2:0,3:0},b:{0:[0,0]},inputSourceMap:{version:3,sources:["RedisTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"RedisTab.vue",sourceRoot:"src/tools/OpenC3Admin/tabs",sourcesContent:['\x3c!--\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--\x3e\n\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class="pb-0 ml-2">\n <v-text-field\n label="Redis command"\n v-model="redisCommandText"\n @keydown="commandKeydown"\n />\n <span v-if="redisResponse"> Response: {{ redisResponse }} </span>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled="!redisCommandText.length"\n @click="executeRaw"\n color="success"\n text\n class="ml-2"\n >\n Execute\n </v-btn>\n <v-radio-group v-model="redisEndpoint" row hide-details class="mt-0">\n <v-radio\n label="Persistent"\n value="/openc3-api/redis/exec"\n data-test="persistent-radio"\n />\n <v-radio\n label="Ephemeral"\n value="/openc3-api/redis/exec?ephemeral=1"\n data-test="ephemeral-radio"\n />\n </v-radio-group>\n </v-card-actions>\n </v-card>\n </div>\n</template>\n\n<script>\nimport Api from \'@openc3/tool-common/src/services/api\'\n\nexport default {\n data() {\n return {\n redisCommandText: \'\',\n redisResponse: null,\n redisEndpoint: \'/openc3-api/redis/exec\',\n }\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === \'Enter\' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: \'application/json\',\n \'Content-Type\': \'plain/text\',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n })\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"5a9a2bbf5f1c9c4295c02785fffea6c920dd1283"},s=t[o]||(t[o]={});s[e]&&s[e].hash===n||(s[e]=a);var r=s[e];return i=function(){return r},r}i();var r={data:function(){return i().f[0]++,i().s[0]++,{redisCommandText:"",redisResponse:null,redisEndpoint:"/openc3-api/redis/exec"}},methods:{commandKeydown:function(e){i().f[1]++,i().s[1]++,i().b[0][0]++,"Enter"===e.key&&(i().b[0][1]++,this.executeRaw())},executeRaw:function(){var e=this;i().f[2]++,i().s[2]++,this.redisResponse=null,i().s[3]++,s.Z.post(this.redisEndpoint,{data:this.redisCommandText,headers:{Accept:"application/json","Content-Type":"plain/text"}}).then((function(n){i().f[3]++,i().s[4]++,e.redisResponse=n.data.result}))}}},d=r,l=t(3287),c=(0,l.Z)(d,o,a,!1,null,null,null),u=c.exports}}]);
2
+ //# sourceMappingURL=179.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"js/967.js","mappings":"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","sources":["webpack://@openc3/tool-admin/../openc3-tool-common/src/services/api.js","webpack://@openc3/tool-admin/../openc3-tool-common/src/services/axios.js","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue?b8d8","webpack://@openc3/tool-admin/src/tools/OpenC3Admin/tabs/RedisTab.vue","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue?5849","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue"],"sourcesContent":["/*\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\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 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\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 delete localStorage.openc3Token\n OpenC3Auth.login(location.href)\n } else {\n // Individual tools can set axiosIgnoreResponse to an error code\n // they potentially expect, e.g. '404', in which case we ignore it\n // Since localStorage only supports strings call toString on the status\n if (\n localStorage.axiosIgnoreResponse === error.response.status.toString()\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 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-card-title',[_vm._v(\" Send Raw Redis Commands \")]),_c('v-card-subtitle',[_vm._v(\" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. \"),_c('br'),_c('br'),_vm._v(\" Enter commands like you would at the Redis cli prompt: \"),_c('code',[_vm._v(\"ping\")]),_vm._v(\" or \"),_c('code',[_vm._v(\"hget openc3__settings version\")])]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[_c('v-text-field',{attrs:{\"label\":\"Redis command\"},on:{\"keydown\":_vm.commandKeydown},model:{value:(_vm.redisCommandText),callback:function ($$v) {_vm.redisCommandText=$$v},expression:\"redisCommandText\"}}),(_vm.redisResponse)?_c('span',[_vm._v(\" Response: \"+_vm._s(_vm.redisResponse)+\" \")]):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"disabled\":!_vm.redisCommandText.length,\"color\":\"success\",\"text\":\"\"},on:{\"click\":_vm.executeRaw}},[_vm._v(\" Execute \")]),_c('v-radio-group',{staticClass:\"mt-0\",attrs:{\"row\":\"\",\"hide-details\":\"\"},model:{value:(_vm.redisEndpoint),callback:function ($$v) {_vm.redisEndpoint=$$v},expression:\"redisEndpoint\"}},[_c('v-radio',{attrs:{\"label\":\"Persistent\",\"value\":\"/openc3-api/redis/exec\",\"data-test\":\"persistent-radio\"}}),_c('v-radio',{attrs:{\"label\":\"Ephemeral\",\"value\":\"/openc3-api/redis/exec?ephemeral=1\",\"data-test\":\"ephemeral-radio\"}})],1)],1)],1)],1)}\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\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n label=\"Redis command\"\n v-model=\"redisCommandText\"\n @keydown=\"commandKeydown\"\n />\n <span v-if=\"redisResponse\"> Response: {{ redisResponse }} </span>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled=\"!redisCommandText.length\"\n @click=\"executeRaw\"\n color=\"success\"\n text\n class=\"ml-2\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" row hide-details class=\"mt-0\">\n <v-radio label=\"Persistent\" value=\"/openc3-api/redis/exec\" data-test=\"persistent-radio\" />\n <v-radio label=\"Ephemeral\" value=\"/openc3-api/redis/exec?ephemeral=1\" data-test=\"ephemeral-radio\" />\n </v-radio-group>\n </v-card-actions>\n </v-card>\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec'\n }\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RedisTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RedisTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RedisTab.vue?vue&type=template&id=7e52ae6d&\"\nimport script from \"./RedisTab.vue?vue&type=script&lang=js&\"\nexport * from \"./RedisTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/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"],"names":["request","method","url","data","params","headers","noAuth","noScope","OpenC3Auth","updateToken","defaultMinValidity","login","localStorage","openc3Token","scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","response","use","error","status","href","axiosIgnoreResponse","toString","Promise","reject","body","statusText","config","message","exception","class","$notify","serious","title","render","_vm","this","_h","$createElement","_c","_self","_v","staticClass","attrs","on","commandKeydown","model","value","callback","$$v","redisCommandText","expression","_s","redisResponse","_e","length","executeRaw","redisEndpoint","staticRenderFns","methods","Api","then","component"],"sourceRoot":""}
1
+ {"version":3,"file":"js/179.js","mappings":"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","sources":["webpack://@openc3/tool-admin/../openc3-tool-common/src/services/api.js","webpack://@openc3/tool-admin/../openc3-tool-common/src/services/axios.js","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue?7113","webpack://@openc3/tool-admin/src/tools/OpenC3Admin/tabs/RedisTab.vue","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue?5849","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/RedisTab.vue"],"sourcesContent":["/*\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\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 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\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 delete localStorage.openc3Token\n OpenC3Auth.login(location.href)\n } else {\n // Individual tools can set axiosIgnoreResponse to an error code\n // they potentially expect, e.g. '404', in which case we ignore it\n // Since localStorage only supports strings call toString on the status\n if (\n localStorage.axiosIgnoreResponse === error.response.status.toString()\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 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-card-title',[_vm._v(\" Send Raw Redis Commands \")]),_c('v-card-subtitle',[_vm._v(\" THIS IS DANGEROUS. This allows you to interact directly with the underlying Redis database, making it easy to modify or delete data. \"),_c('br'),_c('br'),_vm._v(\" Enter commands like you would at the Redis cli prompt: \"),_c('code',[_vm._v(\"ping\")]),_vm._v(\" or \"),_c('code',[_vm._v(\"hget openc3__settings version\")])]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[_c('v-text-field',{attrs:{\"label\":\"Redis command\"},on:{\"keydown\":_vm.commandKeydown},model:{value:(_vm.redisCommandText),callback:function ($$v) {_vm.redisCommandText=$$v},expression:\"redisCommandText\"}}),(_vm.redisResponse)?_c('span',[_vm._v(\" Response: \"+_vm._s(_vm.redisResponse)+\" \")]):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"disabled\":!_vm.redisCommandText.length,\"color\":\"success\",\"text\":\"\"},on:{\"click\":_vm.executeRaw}},[_vm._v(\" Execute \")]),_c('v-radio-group',{staticClass:\"mt-0\",attrs:{\"row\":\"\",\"hide-details\":\"\"},model:{value:(_vm.redisEndpoint),callback:function ($$v) {_vm.redisEndpoint=$$v},expression:\"redisEndpoint\"}},[_c('v-radio',{attrs:{\"label\":\"Persistent\",\"value\":\"/openc3-api/redis/exec\",\"data-test\":\"persistent-radio\"}}),_c('v-radio',{attrs:{\"label\":\"Ephemeral\",\"value\":\"/openc3-api/redis/exec?ephemeral=1\",\"data-test\":\"ephemeral-radio\"}})],1)],1)],1)],1)}\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\n<template>\n <div>\n <v-card>\n <v-card-title> Send Raw Redis Commands </v-card-title>\n <v-card-subtitle>\n THIS IS DANGEROUS. This allows you to interact directly with the\n underlying Redis database, making it easy to modify or delete data.\n <br /><br />\n Enter commands like you would at the Redis cli prompt:\n <code>ping</code> or\n <code>hget openc3__settings version</code>\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n label=\"Redis command\"\n v-model=\"redisCommandText\"\n @keydown=\"commandKeydown\"\n />\n <span v-if=\"redisResponse\"> Response: {{ redisResponse }} </span>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled=\"!redisCommandText.length\"\n @click=\"executeRaw\"\n color=\"success\"\n text\n class=\"ml-2\"\n >\n Execute\n </v-btn>\n <v-radio-group v-model=\"redisEndpoint\" row hide-details class=\"mt-0\">\n <v-radio\n label=\"Persistent\"\n value=\"/openc3-api/redis/exec\"\n data-test=\"persistent-radio\"\n />\n <v-radio\n label=\"Ephemeral\"\n value=\"/openc3-api/redis/exec?ephemeral=1\"\n data-test=\"ephemeral-radio\"\n />\n </v-radio-group>\n </v-card-actions>\n </v-card>\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\n\nexport default {\n data() {\n return {\n redisCommandText: '',\n redisResponse: null,\n redisEndpoint: '/openc3-api/redis/exec',\n }\n },\n methods: {\n commandKeydown: function ($event) {\n $event.key === 'Enter' && this.executeRaw()\n },\n executeRaw: function () {\n this.redisResponse = null\n Api.post(this.redisEndpoint, {\n data: this.redisCommandText,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'plain/text',\n },\n }).then((response) => {\n this.redisResponse = response.data.result\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RedisTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RedisTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RedisTab.vue?vue&type=template&id=3222c599&\"\nimport script from \"./RedisTab.vue?vue&type=script&lang=js&\"\nexport * from \"./RedisTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/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"],"names":["request","method","url","data","params","headers","noAuth","noScope","OpenC3Auth","updateToken","defaultMinValidity","login","localStorage","openc3Token","scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","response","use","error","status","href","axiosIgnoreResponse","toString","Promise","reject","body","statusText","config","message","exception","class","$notify","serious","title","render","_vm","this","_h","$createElement","_c","_self","_v","staticClass","attrs","on","commandKeydown","model","value","callback","$$v","redisCommandText","expression","_s","redisResponse","_e","length","executeRaw","redisEndpoint","staticRenderFns","methods","Api","then","component"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self["webpackChunk_openc3_tool_admin"]=self["webpackChunk_openc3_tool_admin"]||[]).push([[217],{6217:function(n,e,t){t.r(e),t.d(e,{default:function(){return A}});var i=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",[t("v-list",{attrs:{"data-test":"interfaceList"}},n._l(n.interfaces,(function(e,i){return t("div",{key:e},[t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[n._v(n._s(e))])],1),t("v-list-item-icon",[t("v-tooltip",{attrs:{bottom:""},scopedSlots:n._u([{key:"activator",fn:function(i){var o=i.on,l=i.attrs;return[t("v-icon",n._g(n._b({on:{click:function(t){return n.showInterface(e)}}},"v-icon",l,!1),o),[n._v(" mdi-eye ")])]}}],null,!0)},[t("span",[n._v("Show Interface Details")])])],1)],1),i<n.interfaces.length-1?t("v-divider",{key:i}):n._e()],1)})),0),n.showDialog?t("edit-dialog",{attrs:{content:n.jsonContent,title:"Interface: "+n.dialogTitle,readonly:""},on:{submit:n.dialogCallback},model:{value:n.showDialog,callback:function(e){n.showDialog=e},expression:"showDialog"}}):n._e()],1)},o=[],l=(t(6710),t(1261)),a=t(4463);function s(){var n="/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/InterfacesTab.vue",e="b034dfb4d79039ef511343eaca736bbcdea81e03",t=new Function("return this")(),i="__coverage__",o={path:"/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/InterfacesTab.vue",statementMap:{0:{start:{line:66,column:4},end:{line:71,column:5}},1:{start:{line:74,column:4},end:{line:74,column:17}},2:{start:{line:78,column:6},end:{line:80,column:8}},3:{start:{line:79,column:8},end:{line:79,column:39}},4:{start:{line:83,column:6},end:{line:87,column:8}},5:{start:{line:84,column:8},end:{line:84,column:68}},6:{start:{line:85,column:8},end:{line:85,column:31}},7:{start:{line:86,column:8},end:{line:86,column:30}},8:{start:{line:90,column:6},end:{line:90,column:29}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:65,column:2},end:{line:65,column:3}},loc:{start:{line:65,column:9},end:{line:72,column:3}},line:65},1:{name:"(anonymous_1)",decl:{start:{line:73,column:2},end:{line:73,column:3}},loc:{start:{line:73,column:12},end:{line:75,column:3}},line:73},2:{name:"(anonymous_2)",decl:{start:{line:77,column:4},end:{line:77,column:5}},loc:{start:{line:77,column:13},end:{line:81,column:5}},line:77},3:{name:"(anonymous_3)",decl:{start:{line:78,column:45},end:{line:78,column:46}},loc:{start:{line:78,column:59},end:{line:80,column:7}},line:78},4:{name:"(anonymous_4)",decl:{start:{line:82,column:4},end:{line:82,column:5}},loc:{start:{line:82,column:24},end:{line:88,column:5}},line:82},5:{name:"(anonymous_5)",decl:{start:{line:83,column:53},end:{line:83,column:54}},loc:{start:{line:83,column:67},end:{line:87,column:7}},line:83},6:{name:"(anonymous_6)",decl:{start:{line:89,column:4},end:{line:89,column:5}},loc:{start:{line:89,column:28},end:{line:91,column:5}},line:89}},branchMap:{},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0},b:{},inputSourceMap:{version:3,sources:["InterfacesTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"InterfacesTab.vue",sourceRoot:"src/tools/OpenC3Admin/tabs",sourcesContent:['\x3c!--\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--\x3e\n\n<template>\n <div>\n <v-list data-test="interfaceList">\n <div\n v-for="(openc3_interface, index) in interfaces"\n :key="openc3_interface"\n >\n <v-list-item>\n <v-list-item-content>\n <v-list-item-title>{{ openc3_interface }}</v-list-item-title>\n </v-list-item-content>\n <v-list-item-icon>\n <v-tooltip bottom>\n <template v-slot:activator="{ on, attrs }">\n <v-icon\n @click="showInterface(openc3_interface)"\n v-bind="attrs"\n v-on="on"\n >\n mdi-eye\n </v-icon>\n </template>\n <span>Show Interface Details</span>\n </v-tooltip>\n </v-list-item-icon>\n </v-list-item>\n <v-divider v-if="index < interfaces.length - 1" :key="index" />\n </div>\n </v-list>\n <edit-dialog\n :content="jsonContent"\n :title="`Interface: ${dialogTitle}`"\n readonly\n v-model="showDialog"\n v-if="showDialog"\n @submit="dialogCallback"\n />\n </div>\n</template>\n\n<script>\nimport Api from \'@openc3/tool-common/src/services/api\'\nimport EditDialog from \'@/tools/OpenC3Admin/EditDialog\'\nexport default {\n components: { EditDialog },\n data() {\n return {\n interfaces: [],\n jsonContent: \'\',\n dialogTitle: \'\',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get(\'/openc3-api/interfaces\').then((response) => {\n this.interfaces = response.data\n })\n },\n showInterface(name) {\n Api.get(`/openc3-api/interfaces/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, \'\\t\')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"b034dfb4d79039ef511343eaca736bbcdea81e03"},l=t[i]||(t[i]={});l[n]&&l[n].hash===e||(l[n]=o);var a=l[n];return s=function(){return a},a}s();var c={components:{EditDialog:a.Z},data:function(){return s().f[0]++,s().s[0]++,{interfaces:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted:function(){s().f[1]++,s().s[1]++,this.update()},methods:{update:function(){var n=this;s().f[2]++,s().s[2]++,l.Z.get("/openc3-api/interfaces").then((function(e){s().f[3]++,s().s[3]++,n.interfaces=e.data}))},showInterface:function(n){var e=this;s().f[4]++,s().s[4]++,l.Z.get("/openc3-api/interfaces/".concat(n)).then((function(t){s().f[5]++,s().s[5]++,e.jsonContent=JSON.stringify(t.data,null,"\t"),s().s[6]++,e.dialogTitle=n,s().s[7]++,e.showDialog=!0}))},dialogCallback:function(n){s().f[6]++,s().s[8]++,this.showDialog=!1}}},r=c,u=t(3287),d=(0,u.Z)(r,i,o,!1,null,null,null),A=d.exports}}]);
1
+ "use strict";(self["webpackChunk_openc3_tool_admin"]=self["webpackChunk_openc3_tool_admin"]||[]).push([[217],{6217:function(n,e,t){t.r(e),t.d(e,{default:function(){return A}});var i=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",[t("v-list",{attrs:{"data-test":"interfaceList"}},n._l(n.interfaces,(function(e,i){return t("div",{key:e},[t("v-list-item",[t("v-list-item-content",[t("v-list-item-title",[n._v(n._s(e))])],1),t("v-list-item-icon",[t("v-tooltip",{attrs:{bottom:""},scopedSlots:n._u([{key:"activator",fn:function(i){var o=i.on,l=i.attrs;return[t("v-icon",n._g(n._b({on:{click:function(t){return n.showInterface(e)}}},"v-icon",l,!1),o),[n._v(" mdi-eye ")])]}}],null,!0)},[t("span",[n._v("Show Interface Details")])])],1)],1),i<n.interfaces.length-1?t("v-divider",{key:i}):n._e()],1)})),0),n.showDialog?t("edit-dialog",{attrs:{content:n.jsonContent,title:"Interface: "+n.dialogTitle,readonly:""},on:{submit:n.dialogCallback},model:{value:n.showDialog,callback:function(e){n.showDialog=e},expression:"showDialog"}}):n._e()],1)},o=[],l=(t(6710),t(1261)),a=t(8221);function s(){var n="/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/InterfacesTab.vue",e="b034dfb4d79039ef511343eaca736bbcdea81e03",t=new Function("return this")(),i="__coverage__",o={path:"/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/InterfacesTab.vue",statementMap:{0:{start:{line:66,column:4},end:{line:71,column:5}},1:{start:{line:74,column:4},end:{line:74,column:17}},2:{start:{line:78,column:6},end:{line:80,column:8}},3:{start:{line:79,column:8},end:{line:79,column:39}},4:{start:{line:83,column:6},end:{line:87,column:8}},5:{start:{line:84,column:8},end:{line:84,column:68}},6:{start:{line:85,column:8},end:{line:85,column:31}},7:{start:{line:86,column:8},end:{line:86,column:30}},8:{start:{line:90,column:6},end:{line:90,column:29}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:65,column:2},end:{line:65,column:3}},loc:{start:{line:65,column:9},end:{line:72,column:3}},line:65},1:{name:"(anonymous_1)",decl:{start:{line:73,column:2},end:{line:73,column:3}},loc:{start:{line:73,column:12},end:{line:75,column:3}},line:73},2:{name:"(anonymous_2)",decl:{start:{line:77,column:4},end:{line:77,column:5}},loc:{start:{line:77,column:13},end:{line:81,column:5}},line:77},3:{name:"(anonymous_3)",decl:{start:{line:78,column:45},end:{line:78,column:46}},loc:{start:{line:78,column:59},end:{line:80,column:7}},line:78},4:{name:"(anonymous_4)",decl:{start:{line:82,column:4},end:{line:82,column:5}},loc:{start:{line:82,column:24},end:{line:88,column:5}},line:82},5:{name:"(anonymous_5)",decl:{start:{line:83,column:53},end:{line:83,column:54}},loc:{start:{line:83,column:67},end:{line:87,column:7}},line:83},6:{name:"(anonymous_6)",decl:{start:{line:89,column:4},end:{line:89,column:5}},loc:{start:{line:89,column:28},end:{line:91,column:5}},line:89}},branchMap:{},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0},b:{},inputSourceMap:{version:3,sources:["InterfacesTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"InterfacesTab.vue",sourceRoot:"src/tools/OpenC3Admin/tabs",sourcesContent:['\x3c!--\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--\x3e\n\n<template>\n <div>\n <v-list data-test="interfaceList">\n <div\n v-for="(openc3_interface, index) in interfaces"\n :key="openc3_interface"\n >\n <v-list-item>\n <v-list-item-content>\n <v-list-item-title>{{ openc3_interface }}</v-list-item-title>\n </v-list-item-content>\n <v-list-item-icon>\n <v-tooltip bottom>\n <template v-slot:activator="{ on, attrs }">\n <v-icon\n @click="showInterface(openc3_interface)"\n v-bind="attrs"\n v-on="on"\n >\n mdi-eye\n </v-icon>\n </template>\n <span>Show Interface Details</span>\n </v-tooltip>\n </v-list-item-icon>\n </v-list-item>\n <v-divider v-if="index < interfaces.length - 1" :key="index" />\n </div>\n </v-list>\n <edit-dialog\n :content="jsonContent"\n :title="`Interface: ${dialogTitle}`"\n readonly\n v-model="showDialog"\n v-if="showDialog"\n @submit="dialogCallback"\n />\n </div>\n</template>\n\n<script>\nimport Api from \'@openc3/tool-common/src/services/api\'\nimport EditDialog from \'@/tools/OpenC3Admin/EditDialog\'\nexport default {\n components: { EditDialog },\n data() {\n return {\n interfaces: [],\n jsonContent: \'\',\n dialogTitle: \'\',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get(\'/openc3-api/interfaces\').then((response) => {\n this.interfaces = response.data\n })\n },\n showInterface(name) {\n Api.get(`/openc3-api/interfaces/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, \'\\t\')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"b034dfb4d79039ef511343eaca736bbcdea81e03"},l=t[i]||(t[i]={});l[n]&&l[n].hash===e||(l[n]=o);var a=l[n];return s=function(){return a},a}s();var c={components:{EditDialog:a.Z},data:function(){return s().f[0]++,s().s[0]++,{interfaces:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted:function(){s().f[1]++,s().s[1]++,this.update()},methods:{update:function(){var n=this;s().f[2]++,s().s[2]++,l.Z.get("/openc3-api/interfaces").then((function(e){s().f[3]++,s().s[3]++,n.interfaces=e.data}))},showInterface:function(n){var e=this;s().f[4]++,s().s[4]++,l.Z.get("/openc3-api/interfaces/".concat(n)).then((function(t){s().f[5]++,s().s[5]++,e.jsonContent=JSON.stringify(t.data,null,"\t"),s().s[6]++,e.dialogTitle=n,s().s[7]++,e.showDialog=!0}))},dialogCallback:function(n){s().f[6]++,s().s[8]++,this.showDialog=!1}}},r=c,u=t(3287),d=(0,u.Z)(r,i,o,!1,null,null,null),A=d.exports}}]);
2
2
  //# sourceMappingURL=217.js.map
@@ -0,0 +1,2 @@
1
+ (self["webpackChunk_openc3_tool_admin"]=self["webpackChunk_openc3_tool_admin"]||[]).push([[248],{3093:function(e,n,t){"use strict";t(8188),t(8233);var l=t(9644),o=t.n(l),s=t(4091),r=new s["default"],a=o().create({baseURL:location.origin,timeout:6e4,params:{}});a.interceptors.response.use((function(e){return e}),(function(e){if(e.response){if(401===e.response.status)delete localStorage.openc3Token,OpenC3Auth.login(location.href);else{var n,t,l,o,s,a,i,c,u,d;if(localStorage.axiosIgnoreResponse===e.response.status.toString())return Promise.reject(e);var m="HTTP ".concat(e.response.status," - ");if(null!==(n=e.response)&&void 0!==n&&n.statusText&&(m+="".concat(e.response.statusText," ")),null!==(t=e.response)&&void 0!==t&&null!==(l=t.config)&&void 0!==l&&l.data&&(m+="".concat(e.response.config.data," ")),null!==(o=e.response)&&void 0!==o&&null!==(s=o.data)&&void 0!==s&&s.message)m+="".concat(e.response.data.message);else if(null!==(a=e.response)&&void 0!==a&&null!==(i=a.data)&&void 0!==i&&i.exception)m+="".concat(e.response.data.exception);else if(null!==(c=e.response)&&void 0!==c&&null!==(u=c.data)&&void 0!==u&&null!==(d=u.error)&&void 0!==d&&d.message)e.response.data.error.class&&(m+="".concat(e.response.data.error.class," ")),m+="".concat(e.response.data.error.message);else{var A;m+="".concat(null===(A=e.response)||void 0===A?void 0:A.data)}r.$notify.serious({title:"Network error",body:m})}throw e}throw e})),n["Z"]=a},6748:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return L}});var l=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",[t("v-card",[t("v-card-title",[e._v(" Reset suppressed warnings ")]),t("v-card-subtitle",[e._v(' This resets "don\'t show this again" dialogs on this browser ')]),t("v-card-text",{staticClass:"pb-0 ml-2"},[e.suppressedWarnings.length?[t("v-checkbox",{staticClass:"mt-0",attrs:{label:"Select all","data-test":"select-all-suppressed-warnings"},model:{value:e.selectAllSuppressedWarnings,callback:function(n){e.selectAllSuppressedWarnings=n},expression:"selectAllSuppressedWarnings"}}),e._l(e.suppressedWarnings,(function(n){return t("v-checkbox",{key:n.key,staticClass:"mt-0",attrs:{label:n.text,value:n.key,dense:""},model:{value:e.selectedSuppressedWarnings,callback:function(n){e.selectedSuppressedWarnings=n},expression:"selectedSuppressedWarnings"}})}))]:[e._v(" No warnings to reset ")]],2),t("v-card-actions",[t("v-btn",{staticClass:"ml-2",attrs:{disabled:!e.selectedSuppressedWarnings.length,color:"warning",text:"","data-test":"reset-suppressed-warnings"},on:{click:e.resetSuppressedWarnings}},[e._v(" Reset ")])],1)],1),t("v-divider"),t("v-card",[t("v-card-title",[e._v(" Clear recent configs ")]),t("v-card-subtitle",[e._v(" This clears the most recently saved/loaded tool configs on this browser ")]),t("v-card-text",{staticClass:"pb-0 ml-2"},[e.lastConfigs.length?[t("v-checkbox",{staticClass:"mt-0",attrs:{label:"Select all","data-test":"select-all-last-configs"},model:{value:e.selectAllLastConfigs,callback:function(n){e.selectAllLastConfigs=n},expression:"selectAllLastConfigs"}}),e._l(e.lastConfigs,(function(n){return t("v-checkbox",{key:n.key,staticClass:"mt-0",attrs:{label:n.text+" ("+n.value+")",value:n.key,dense:""},model:{value:e.selectedLastConfigs,callback:function(n){e.selectedLastConfigs=n},expression:"selectedLastConfigs"}})}))]:[e._v(" No configs to clear ")]],2),t("v-card-actions",[t("v-btn",{staticClass:"ml-2",attrs:{disabled:!e.selectedLastConfigs.length,color:"warning",text:"","data-test":"clear-last-configs"},on:{click:e.clearLastConfigs}},[e._v(" Clear ")])],1)],1),t("v-divider"),t("classification-banner-settings"),t("v-divider"),t("v-card",[t("v-card-title",[e._v(" Source code URL ")]),t("v-card-subtitle",[e._v(' This sets the URL for the "Source" link in the footer. This is required under the AGPL license. ')]),t("v-card-text",{staticClass:"pb-0 ml-2"},[t("v-text-field",{attrs:{label:"Source URL","data-test":"source-url"},model:{value:e.sourceUrl,callback:function(n){e.sourceUrl=n},expression:"sourceUrl"}})],1),t("v-card-actions",[t("v-container",{staticClass:"pt-0"},[t("v-row",{attrs:{dense:""}},[t("v-col",{staticClass:"pl-0"},[t("v-btn",{attrs:{color:"success",text:"","data-test":"save-source-url"},on:{click:e.saveSourceUrl}},[e._v(" Save ")])],1)],1),t("v-alert",{attrs:{type:"error",dismissible:"",dense:""},model:{value:e.errorSaving,callback:function(n){e.errorSaving=n},expression:"errorSaving"}},[e._v(" Error saving ")]),t("v-alert",{attrs:{type:"success",dismissible:"",dense:""},model:{value:e.successSaving,callback:function(n){e.successSaving=n},expression:"successSaving"}},[e._v(" Saved! (Refresh the page to see changes) ")])],1)],1)],1),t("v-divider"),t("v-card",[t("v-card-title",[e._v(" Rubygems URL ")]),t("v-card-subtitle",[e._v(" This sets the URL for installing dependency rubygems. Also used for rubygem discovery. ")]),t("v-card-text",{staticClass:"pb-0 ml-2"},[t("v-text-field",{attrs:{label:"Rubygems URL","data-test":"rubygems-url"},model:{value:e.rubygemsUrl,callback:function(n){e.rubygemsUrl=n},expression:"rubygemsUrl"}})],1),t("v-card-actions",[t("v-container",{staticClass:"pt-0"},[t("v-row",{attrs:{dense:""}},[t("v-col",{staticClass:"pl-0"},[t("v-btn",{attrs:{color:"success",text:"","data-test":"save-rubygems-url"},on:{click:e.saveRubygemsUrl}},[e._v(" Save ")])],1)],1),t("v-alert",{attrs:{type:"error",dismissible:"",dense:""},model:{value:e.errorSaving,callback:function(n){e.errorSaving=n},expression:"errorSaving"}},[e._v(" Error saving ")]),t("v-alert",{attrs:{type:"success",dismissible:"",dense:""},model:{value:e.successSaving,callback:function(n){e.successSaving=n},expression:"successSaving"}},[e._v(" Saved! (Refresh the page to see changes) ")])],1)],1)],1)],1)},o=[],s=t(1150);t(3450),t(5342),t(8188),t(4769),t(4112),t(7950),t(5940),t(1639),t(8319),t(2501),t(1372);function r(e){throw new TypeError('"'+e+'" is read-only')}var a=t(578),i=t(6625),c=t(5627),u=t(7105),d=t(6455),m=t(1901),A=(t(1245),t(3675),t(4898),t(5825),t(7170),t(8857),t(8329),t(6279),t(427),t(1159),t(2516),t(4349),t(5273),t(6729),t(1801),t(574),t(5787),t(9271),t(3160),t(5688),t(3157),t(1700),t(315),t(556),t(9224),t(6297),t(8882),t(7233),t(8673),t(5734),t(8233),t(3093)),v=function(){function e(){(0,u.Z)(this,e),(0,m.Z)(this,"id",1)}return(0,d.Z)(e,[{key:"exec",value:function(){var e=(0,c.Z)((0,i.Z)().mark((function e(n,t){var l,o,s,r=arguments;return(0,i.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return l=r.length>2&&void 0!==r[2]?r[2]:{},e.prev=1,e.next=4,OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity);case 4:e.next=9;break;case 6:e.prev=6,e.t0=e["catch"](1),OpenC3Auth.login();case 9:return this.id=this.id+1,e.prev=10,l["scope"]=localStorage.scope,e.next=14,A.Z.post("/openc3-api/api",{jsonrpc:"2.0",method:n,params:t,id:this.id,keyword_params:l},{headers:{Authorization:localStorage.openc3Token,"Content-Type":"application/json-rpc"}});case 14:return o=e.sent,e.abrupt("return",o.data.result);case 18:throw e.prev=18,e.t1=e["catch"](10),s=new Error,e.t1.response?(s.name=e.t1.response.data.error.data.class,s.message=e.t1.response.data.error.data.message):e.t1.request?(s.name="Request error",s.message="Request error, no response received"):s.name="Unknown error",s;case 23:case"end":return e.stop()}}),e,this,[[1,6],[10,18]])})));function n(n,t){return e.apply(this,arguments)}return n}()},{key:"decode_openc3_type",value:function(e){if(null!==e&&"object"===(0,a.Z)(e)&&"Float"==e.json_class&&e.raw){if("NaN"==e.raw)return NaN;if("Infinity"==e.raw)return 1/0;if("-Infinity"==e.raw)return-1/0}return null}},{key:"encode_openc3_type",value:function(e){return Number.isNaN(e)?{json_class:"Float",raw:"NaN"}:e==Number.POSITIVE_INFINITY?{json_class:"Float",raw:"Infinity"}:e==Number.NEGATIVE_INFINITY?{json_class:"Float",raw:"-Infinity"}:null}},{key:"get_all_interface_info",value:function(){return this.exec("get_all_interface_info",[])}},{key:"connect_interface",value:function(e){return this.exec("connect_interface",[e])}},{key:"disconnect_interface",value:function(e){return this.exec("disconnect_interface",[e])}},{key:"get_all_router_info",value:function(){return this.exec("get_all_router_info",[])}},{key:"connect_router",value:function(e){return this.exec("connect_router",[e])}},{key:"disconnect_router",value:function(e){return this.exec("disconnect_router",[e])}},{key:"get_all_target_info",value:function(){return this.exec("get_all_target_info",[])}},{key:"get_tlm_cnts",value:function(e){return this.exec("get_tlm_cnts",[e])}},{key:"get_item",value:function(e,n,t){return this.exec("get_item",[e,n,t])}},{key:"get_parameter",value:function(e,n,t){return this.exec("get_parameter",[e,n,t])}},{key:"get_all_packet_logger_info",value:function(){return this.exec("get_all_packet_logger_info",[])}},{key:"start_logging",value:function(){return this.exec("start_logging",[])}},{key:"stop_logging",value:function(){return this.exec("stop_logging",[])}},{key:"start_cmd_log",value:function(e){return this.exec("start_cmd_log",[e])}},{key:"start_tlm_log",value:function(e){return this.exec("start_tlm_log",[e])}},{key:"stop_cmd_log",value:function(e){return this.exec("stop_cmd_log",[e])}},{key:"stop_tlm_log",value:function(e){return this.exec("stop_tlm_log",[e])}},{key:"get_server_status",value:function(){return this.exec("get_server_status",[])}},{key:"get_limits_sets",value:function(){return this.exec("get_limits_sets",[])}},{key:"get_limits_set",value:function(){return this.exec("get_limits_set",[])}},{key:"set_limits_set",value:function(e){return this.exec("set_limits_set",[e])}},{key:"get_background_tasks",value:function(){return this.exec("get_background_tasks",[])}},{key:"start_background_task",value:function(e){return this.exec("start_background_task",[e])}},{key:"stop_background_task",value:function(e){return this.exec("stop_background_task",[e])}},{key:"get_oldest_logfile",value:function(){return this.exec("get_oldest_logfile",[])}},{key:"get_target",value:function(e){return this.exec("get_target",[e])}},{key:"get_target_list",value:function(){return this.exec("get_target_list",[])}},{key:"get_telemetry",value:function(e,n){return this.exec("get_telemetry",[e,n])}},{key:"get_all_telemetry",value:function(e){return this.exec("get_all_telemetry",[e])}},{key:"get_all_telemetry_names",value:function(e){return this.exec("get_all_telemetry_names",[e])}},{key:"get_tlm_packet",value:function(){var e=(0,c.Z)((0,i.Z)().mark((function e(n,t,l){var o,s,r,a;return(0,i.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.exec("get_tlm_packet",[n,t],{type:l});case 2:if(o=e.sent,null!=o)for(s=o.length,r=null,a=0;a<s;a++)r=this.decode_openc3_type(o[a][1]),null!==r&&(o[a][1]=r);return e.abrupt("return",o);case 5:case"end":return e.stop()}}),e,this)})));function n(n,t,l){return e.apply(this,arguments)}return n}()},{key:"get_packet_derived_items",value:function(e,n){return this.exec("get_packet_derived_items",[e,n])}},{key:"get_tlm_buffer",value:function(e,n){return this.exec("get_tlm_buffer",[e,n])}},{key:"get_tlm_values",value:function(){var e=(0,c.Z)((0,i.Z)().mark((function e(n){var t,l,o,s;return(0,i.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.exec("get_tlm_values",[n]);case 2:for(t=e.sent,l=t[0].length,o=null,s=0;s<l;s++)o=this.decode_openc3_type(t[0][s]),null!==o&&(t[0][s]=o);return e.abrupt("return",t);case 7:case"end":return e.stop()}}),e,this)})));function n(n){return e.apply(this,arguments)}return n}()},{key:"get_limits",value:function(e,n,t){return this.exec("get_limits",[e,n,t])}},{key:"tlm",value:function(){var e=(0,c.Z)((0,i.Z)().mark((function e(n,t,l){var o,s;return(0,i.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.exec("tlm",[n,t,l]);case 2:return o=e.sent,s=this.decode_openc3_type(o),null!==s&&r("data"),e.abrupt("return",o);case 6:case"end":return e.stop()}}),e,this)})));function n(n,t,l){return e.apply(this,arguments)}return n}()},{key:"get_all_commands",value:function(e){return this.exec("get_all_commands",[e])}},{key:"get_all_command_names",value:function(e){return this.exec("get_all_command_names",[e])}},{key:"get_command",value:function(e,n){return this.exec("get_command",[e,n])}},{key:"get_cmd_cnts",value:function(e){return this.exec("get_cmd_cnts",[e])}},{key:"get_cmd_value",value:function(e,n,t){var l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"CONVERTED";return this.exec("get_cmd_value",[e,n,t,l])}},{key:"get_cmd_buffer",value:function(e,n){return this.exec("get_cmd_buffer",[e,n])}},{key:"_cmd",value:function(e,n,t,l){var o=null;for(var s in l)Object.prototype.hasOwnProperty.call(l,s)&&(o=this.encode_openc3_type(l[s]),null!==o&&(l[s]=o));return this.exec(e,[n,t,l])}},{key:"get_cmd_hazardous",value:function(e,n,t){return void 0===n?this.exec("get_cmd_hazardous",e):this._cmd("get_cmd_hazardous",e,n,t)}},{key:"cmd",value:function(e,n,t){return void 0===n?this.exec("cmd",e):this._cmd("cmd",e,n,t)}},{key:"cmd_no_range_check",value:function(e,n,t){return void 0===n?this.exec("cmd_no_range_check",e):this._cmd("cmd_no_range_check",e,n,t)}},{key:"cmd_raw",value:function(e,n,t){return void 0===n?this.exec("cmd_raw",e):this._cmd("cmd_raw",e,n,t)}},{key:"cmd_raw_no_range_check",value:function(e,n,t){return void 0===n?this.exec("cmd_raw_no_range_check",e):this._cmd("cmd_raw_no_range_check",e,n,t)}},{key:"cmd_no_hazardous_check",value:function(e,n,t){return void 0===n?this.exec("cmd_no_hazardous_check",e):this._cmd("cmd_no_hazardous_check",e,n,t)}},{key:"cmd_no_checks",value:function(e,n,t){return void 0===n?this.exec("cmd_no_checks",e):this._cmd("cmd_no_checks",e,n,t)}},{key:"cmd_raw_no_hazardous_check",value:function(e,n,t){return void 0===n?this.exec("cmd_raw_no_hazardous_check",e):this._cmd("cmd_raw_no_hazardous_check",e,n,t)}},{key:"cmd_raw_no_checks",value:function(e,n,t){return void 0===n?this.exec("cmd_raw_no_checks",e):this._cmd("cmd_raw_no_checks",e,n,t)}},{key:"get_interface_names",value:function(){return this.exec("get_interface_names",[])}},{key:"send_raw",value:function(e,n){return this.exec("send_raw",[e,n])}},{key:"list_configs",value:function(e){return this.exec("list_configs",[e])}},{key:"load_config",value:function(e,n){return this.exec("load_config",[e,n])}},{key:"save_config",value:function(e,n,t){return this.exec("save_config",[e,n,t])}},{key:"delete_config",value:function(e,n){return this.exec("delete_config",[e,n])}},{key:"get_out_of_limits",value:function(){return this.exec("get_out_of_limits",[])}},{key:"get_overall_limits_state",value:function(e){return this.exec("get_overall_limits_state",[e])}},{key:"list_settings",value:function(){return this.exec("list_settings",[])}},{key:"get_all_settings",value:function(){return this.exec("get_all_settings",[])}},{key:"get_setting",value:function(e){return this.exec("get_setting",[e])}},{key:"get_settings",value:function(e){return this.exec("get_settings",e)}},{key:"save_setting",value:function(e,n){return this.exec("save_setting",[e,n])}},{key:"hashString",value:function(){var e=(0,c.Z)((0,i.Z)().mark((function e(n){var t,l,o;return(0,i.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!window.isSecureContext){e.next=7;break}return t=(new TextEncoder).encode(n),e.next=4,crypto.subtle.digest("SHA-256",t);case 4:return l=e.sent,o=new Uint8Array(l),e.abrupt("return",Array.from(o).map((function(e){return e.toString(16).padStart(2,"0")})).join(""));case 7:case"end":return e.stop()}}),e)})));function n(n){return e.apply(this,arguments)}return n}()}]),e}(),p=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("v-card",[t("v-card-title",[e._v("Classification Banner Settings")]),t("v-card-text",{staticClass:"pb-0"},[t("v-alert",{attrs:{type:"error",dismissible:"",dense:""},model:{value:e.errorLoading,callback:function(n){e.errorLoading=n},expression:"errorLoading"}},[e._v(" Error loading previous configuration ")]),t("v-container",{staticClass:"pb-0"},[t("v-row",{attrs:{dense:""}},[t("v-col",[t("v-text-field",{attrs:{label:"Text","data-test":"classification-banner-text"},model:{value:e.text,callback:function(n){e.text=n},expression:"text"}})],1)],1),t("v-row",{attrs:{dense:""}},[t("v-col",[t("v-select",{attrs:{label:"Background color",items:e.colors,"data-test":"classification-banner-background-color"},scopedSlots:e._u([e.selectedBackgroundColor?{key:"prepend-inner",fn:function(){return[t("v-icon",{attrs:{color:e.selectedBackgroundColor}},[e._v(" mdi-square ")])]},proxy:!0}:null,{key:"item",fn:function(n){return[n.item.value?t("v-icon",{staticClass:"pr-1",attrs:{color:n.item.value}},[e._v(" mdi-square ")]):e._e(),e._v(" "+e._s(n.item.text)+" ")]}}],null,!0),model:{value:e.selectedBackgroundColor,callback:function(n){e.selectedBackgroundColor=n},expression:"selectedBackgroundColor"}})],1),t("v-col",[t("v-text-field",{attrs:{label:"Custom background color",hint:e.customColorHint,disabled:!1!==e.selectedBackgroundColor,rules:[e.rules.customColor],"data-test":"classification-banner-custom-background-color"},scopedSlots:e._u([{key:"prepend-inner",fn:function(){return[t("v-icon",{directives:[{name:"show",rawName:"v-show",value:!e.selectedBackgroundColor,expression:"!selectedBackgroundColor"}],attrs:{color:e.customBackgroundColor}},[e._v(" mdi-square ")])]},proxy:!0}]),model:{value:e.customBackgroundColor,callback:function(n){e.customBackgroundColor=n},expression:"customBackgroundColor"}})],1),t("v-col",[t("v-select",{attrs:{label:"Font color",items:e.colors,"data-test":"classification-banner-font-color"},scopedSlots:e._u([e.selectedFontColor?{key:"prepend-inner",fn:function(){return[t("v-icon",{directives:[{name:"show",rawName:"v-show",value:e.selectedFontColor,expression:"selectedFontColor"}],attrs:{color:e.selectedFontColor}},[e._v(" mdi-square ")])]},proxy:!0}:null,{key:"item",fn:function(n){return[n.item.value?t("v-icon",{staticClass:"pr-1",attrs:{color:n.item.value}},[e._v(" mdi-square ")]):e._e(),e._v(" "+e._s(n.item.text)+" ")]}}],null,!0),model:{value:e.selectedFontColor,callback:function(n){e.selectedFontColor=n},expression:"selectedFontColor"}})],1),t("v-col",[t("v-text-field",{attrs:{label:"Custom font color",hint:e.customColorHint,disabled:!1!==e.selectedFontColor,rules:[e.rules.customColor],"data-test":"classification-banner-custom-font-color"},scopedSlots:e._u([{key:"prepend-inner",fn:function(){return[t("v-icon",{directives:[{name:"show",rawName:"v-show",value:!e.selectedFontColor,expression:"!selectedFontColor"}],attrs:{color:e.customFontColor}},[e._v(" mdi-square ")])]},proxy:!0}]),model:{value:e.customFontColor,callback:function(n){e.customFontColor=n},expression:"customFontColor"}})],1)],1),t("v-row",{attrs:{dense:""}},[t("v-col",[t("v-switch",{attrs:{label:"Display top banner","data-test":"display-top-banner"},model:{value:e.displayTopBanner,callback:function(n){e.displayTopBanner=n},expression:"displayTopBanner"}})],1),t("v-col",[t("v-text-field",{attrs:{label:"Top height",disabled:!e.displayTopBanner,type:"number",suffix:"px","data-test":"classification-banner-top-height"},model:{value:e.topHeight,callback:function(n){e.topHeight=n},expression:"topHeight"}})],1),t("v-col",[t("v-switch",{attrs:{label:"Display bottom banner","data-test":"display-bottom-banner"},model:{value:e.displayBottomBanner,callback:function(n){e.displayBottomBanner=n},expression:"displayBottomBanner"}})],1),t("v-col",[t("v-text-field",{attrs:{label:"Bottom height",disabled:!e.displayBottomBanner,type:"number",suffix:"px","data-test":"classification-banner-bottom-height"},model:{value:e.bottomHeight,callback:function(n){e.bottomHeight=n},expression:"bottomHeight"}})],1)],1)],1)],1),t("v-card-actions",[t("v-container",{staticClass:"pt-0"},[t("v-row",{attrs:{dense:""}},[t("v-col",{staticClass:"pl-0"},[t("v-btn",{attrs:{disabled:!e.formValid,color:"success",text:"","data-test":"save-classification-banner"},on:{click:e.save}},[e._v(" Save ")])],1)],1),t("v-alert",{attrs:{type:"error",dismissible:"",dense:""},model:{value:e.errorSaving,callback:function(n){e.errorSaving=n},expression:"errorSaving"}},[e._v(" Error saving ")]),t("v-alert",{attrs:{type:"success",dismissible:"",dense:""},model:{value:e.successSaving,callback:function(n){e.successSaving=n},expression:"successSaving"}},[e._v(" Saved! (Refresh the page to see changes) ")])],1)],1)],1)},g=[];t(1850),t(6710),t(9644);function f(){var e="/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/ClassificationBannerSettings.vue",n="7fadd344af84d54a38982cf727ae8a17ac0d96d8",t=new Function("return this")(),l="__coverage__",o={path:"/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/ClassificationBannerSettings.vue",statementMap:{0:{start:{line:188,column:20},end:{line:188,column:43}},1:{start:{line:191,column:4},end:{line:251,column:5}},2:{start:{line:246,column:10},end:{line:248,column:11}},3:{start:{line:255,column:6},end:{line:262,column:8}},4:{start:{line:265,column:6},end:{line:270,column:7}},5:{start:{line:275,column:6},end:{line:277,column:7}},6:{start:{line:276,column:8},end:{line:276,column:40}},7:{start:{line:280,column:6},end:{line:282,column:7}},8:{start:{line:281,column:8},end:{line:281,column:46}},9:{start:{line:286,column:4},end:{line:286,column:30}},10:{start:{line:287,column:4},end:{line:287,column:15}},11:{start:{line:291,column:6},end:{line:322,column:10}},12:{start:{line:294,column:10},end:{line:294,column:35}},13:{start:{line:295,column:10},end:{line:317,column:11}},14:{start:{line:296,column:27},end:{line:296,column:47}},15:{start:{line:297,column:12},end:{line:297,column:35}},16:{start:{line:298,column:12},end:{line:298,column:45}},17:{start:{line:299,column:12},end:{line:299,column:51}},18:{start:{line:300,column:12},end:{line:300,column:58}},19:{start:{line:301,column:12},end:{line:301,column:64}},20:{start:{line:302,column:12},end:{line:310,column:13}},21:{start:{line:306,column:14},end:{line:306,column:65}},22:{start:{line:307,column:14},end:{line:307,column:50}},23:{start:{line:309,column:14},end:{line:309,column:67}},24:{start:{line:311,column:12},end:{line:316,column:13}},25:{start:{line:312,column:14},end:{line:312,column:53}},26:{start:{line:313,column:14},end:{line:313,column:44}},27:{start:{line:315,column:14},end:{line:315,column:55}},28:{start:{line:321,column:10},end:{line:321,column:34}},29:{start:{line:325,column:6},end:{line:334,column:10}},30:{start:{line:328,column:10},end:{line:328,column:34}},31:{start:{line:329,column:10},end:{line:329,column:35}},32:{start:{line:333,column:10},end:{line:333,column:33}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:190,column:2},end:{line:190,column:3}},loc:{start:{line:190,column:9},end:{line:252,column:3}},line:190},1:{name:"(anonymous_1)",decl:{start:{line:245,column:21},end:{line:245,column:22}},loc:{start:{line:245,column:32},end:{line:249,column:9}},line:245},2:{name:"(anonymous_2)",decl:{start:{line:254,column:13},end:{line:254,column:14}},loc:{start:{line:254,column:25},end:{line:263,column:5}},line:254},3:{name:"(anonymous_3)",decl:{start:{line:264,column:15},end:{line:264,column:16}},loc:{start:{line:264,column:27},end:{line:271,column:5}},line:264},4:{name:"(anonymous_4)",decl:{start:{line:274,column:21},end:{line:274,column:22}},loc:{start:{line:274,column:36},end:{line:278,column:5}},line:274},5:{name:"(anonymous_5)",decl:{start:{line:279,column:27},end:{line:279,column:28}},loc:{start:{line:279,column:42},end:{line:283,column:5}},line:279},6:{name:"(anonymous_6)",decl:{start:{line:285,column:2},end:{line:285,column:3}},loc:{start:{line:285,column:12},end:{line:288,column:3}},line:285},7:{name:"(anonymous_7)",decl:{start:{line:290,column:10},end:{line:290,column:11}},loc:{start:{line:290,column:22},end:{line:323,column:5}},line:290},8:{name:"(anonymous_8)",decl:{start:{line:293,column:14},end:{line:293,column:15}},loc:{start:{line:293,column:28},end:{line:318,column:9}},line:293},9:{name:"(anonymous_9)",decl:{start:{line:319,column:15},end:{line:319,column:16}},loc:{start:{line:319,column:26},end:{line:322,column:9}},line:319},10:{name:"(anonymous_10)",decl:{start:{line:324,column:10},end:{line:324,column:11}},loc:{start:{line:324,column:22},end:{line:335,column:5}},line:324},11:{name:"(anonymous_11)",decl:{start:{line:327,column:14},end:{line:327,column:15}},loc:{start:{line:327,column:28},end:{line:330,column:9}},line:327},12:{name:"(anonymous_12)",decl:{start:{line:331,column:15},end:{line:331,column:16}},loc:{start:{line:331,column:26},end:{line:334,column:9}},line:331}},branchMap:{0:{loc:{start:{line:247,column:12},end:{line:247,column:76}},type:"binary-expr",locations:[{start:{line:247,column:12},end:{line:247,column:52}},{start:{line:247,column:56},end:{line:247,column:76}}],line:247},1:{loc:{start:{line:257,column:19},end:{line:257,column:65}},type:"binary-expr",locations:[{start:{line:257,column:19},end:{line:257,column:41}},{start:{line:257,column:45},end:{line:257,column:65}}],line:257},2:{loc:{start:{line:259,column:10},end:{line:259,column:68}},type:"binary-expr",locations:[{start:{line:259,column:10},end:{line:259,column:38}},{start:{line:259,column:42},end:{line:259,column:68}}],line:259},3:{loc:{start:{line:260,column:19},end:{line:260,column:61}},type:"cond-expr",locations:[{start:{line:260,column:43},end:{line:260,column:57}},{start:{line:260,column:60},end:{line:260,column:61}}],line:260},4:{loc:{start:{line:261,column:22},end:{line:261,column:70}},type:"cond-expr",locations:[{start:{line:261,column:49},end:{line:261,column:66}},{start:{line:261,column:69},end:{line:261,column:70}}],line:261},5:{loc:{start:{line:266,column:8},end:{line:269,column:70}},type:"binary-expr",locations:[{start:{line:266,column:9},end:{line:266,column:31}},{start:{line:267,column:10},end:{line:267,column:63}},{start:{line:268,column:9},end:{line:268,column:37}},{start:{line:269,column:10},end:{line:269,column:69}}],line:266},6:{loc:{start:{line:275,column:6},end:{line:277,column:7}},type:"if",locations:[{start:{line:275,column:6},end:{line:277,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:275},7:{loc:{start:{line:275,column:10},end:{line:275,column:51}},type:"binary-expr",locations:[{start:{line:275,column:10},end:{line:275,column:13}},{start:{line:275,column:17},end:{line:275,column:27}},{start:{line:275,column:31},end:{line:275,column:51}}],line:275},8:{loc:{start:{line:280,column:6},end:{line:282,column:7}},type:"if",locations:[{start:{line:280,column:6},end:{line:282,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:280},9:{loc:{start:{line:280,column:10},end:{line:280,column:51}},type:"binary-expr",locations:[{start:{line:280,column:10},end:{line:280,column:13}},{start:{line:280,column:17},end:{line:280,column:27}},{start:{line:280,column:31},end:{line:280,column:51}}],line:280},10:{loc:{start:{line:295,column:10},end:{line:317,column:11}},type:"if",locations:[{start:{line:295,column:10},end:{line:317,column:11}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:295},11:{loc:{start:{line:302,column:12},end:{line:310,column:13}},type:"if",locations:[{start:{line:302,column:12},end:{line:310,column:13}},{start:{line:308,column:19},end:{line:310,column:13}}],line:302},12:{loc:{start:{line:303,column:14},end:{line:304,column:52}},type:"binary-expr",locations:[{start:{line:303,column:14},end:{line:303,column:36}},{start:{line:304,column:14},end:{line:304,column:52}}],line:303},13:{loc:{start:{line:311,column:12},end:{line:316,column:13}},type:"if",locations:[{start:{line:311,column:12},end:{line:316,column:13}},{start:{line:314,column:19},end:{line:316,column:13}}],line:311},14:{loc:{start:{line:311,column:16},end:{line:311,column:68}},type:"binary-expr",locations:[{start:{line:311,column:16},end:{line:311,column:32}},{start:{line:311,column:36},end:{line:311,column:68}}],line:311}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0,0,0],6:[0,0],7:[0,0,0],8:[0,0],9:[0,0,0],10:[0,0],11:[0,0],12:[0,0],13:[0,0],14:[0,0]},inputSourceMap:{version:3,sources:["ClassificationBannerSettings.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"ClassificationBannerSettings.vue",sourceRoot:"src/tools/OpenC3Admin",sourcesContent:['\x3c!--\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--\x3e\n\n<template>\n <v-card>\n <v-card-title>Classification Banner Settings</v-card-title>\n <v-card-text class="pb-0">\n <v-alert v-model="errorLoading" type="error" dismissible dense>\n Error loading previous configuration\n </v-alert>\n <v-container class="pb-0">\n <v-row dense>\n <v-col>\n <v-text-field\n label="Text"\n v-model="text"\n data-test="classification-banner-text"\n />\n </v-col>\n </v-row>\n <v-row dense>\n <v-col>\n <v-select\n label="Background color"\n :items="colors"\n v-model="selectedBackgroundColor"\n data-test="classification-banner-background-color"\n >\n <template v-slot:prepend-inner v-if="selectedBackgroundColor">\n <v-icon :color="selectedBackgroundColor"> mdi-square </v-icon>\n </template>\n <template v-slot:item="data">\n <v-icon\n :color="data.item.value"\n v-if="data.item.value"\n class="pr-1"\n >\n mdi-square\n </v-icon>\n {{ data.item.text }}\n </template>\n </v-select>\n </v-col>\n <v-col>\n <v-text-field\n label="Custom background color"\n :hint="customColorHint"\n :disabled="selectedBackgroundColor !== false"\n v-model="customBackgroundColor"\n :rules="[rules.customColor]"\n data-test="classification-banner-custom-background-color"\n >\n <template v-slot:prepend-inner>\n <v-icon\n v-show="!selectedBackgroundColor"\n :color="customBackgroundColor"\n >\n mdi-square\n </v-icon>\n </template>\n </v-text-field>\n </v-col>\n <v-col>\n <v-select\n label="Font color"\n :items="colors"\n v-model="selectedFontColor"\n data-test="classification-banner-font-color"\n >\n <template v-slot:prepend-inner v-if="selectedFontColor">\n <v-icon v-show="selectedFontColor" :color="selectedFontColor">\n mdi-square\n </v-icon>\n </template>\n <template slot="item" slot-scope="data">\n <v-icon\n v-if="data.item.value"\n :color="data.item.value"\n class="pr-1"\n >\n mdi-square\n </v-icon>\n {{ data.item.text }}\n </template>\n </v-select>\n </v-col>\n <v-col>\n <v-text-field\n label="Custom font color"\n :hint="customColorHint"\n :disabled="selectedFontColor !== false"\n v-model="customFontColor"\n :rules="[rules.customColor]"\n data-test="classification-banner-custom-font-color"\n >\n <template v-slot:prepend-inner>\n <v-icon v-show="!selectedFontColor" :color="customFontColor">\n mdi-square\n </v-icon>\n </template>\n </v-text-field>\n </v-col>\n </v-row>\n <v-row dense>\n <v-col>\n <v-switch\n label="Display top banner"\n v-model="displayTopBanner"\n data-test="display-top-banner"\n />\n </v-col>\n <v-col>\n <v-text-field\n label="Top height"\n :disabled="!displayTopBanner"\n type="number"\n suffix="px"\n v-model="topHeight"\n data-test="classification-banner-top-height"\n />\n </v-col>\n <v-col>\n <v-switch\n label="Display bottom banner"\n v-model="displayBottomBanner"\n data-test="display-bottom-banner"\n />\n </v-col>\n <v-col>\n <v-text-field\n label="Bottom height"\n :disabled="!displayBottomBanner"\n type="number"\n suffix="px"\n v-model="bottomHeight"\n data-test="classification-banner-bottom-height"\n />\n </v-col>\n </v-row>\n </v-container>\n </v-card-text>\n <v-card-actions>\n <v-container class="pt-0">\n <v-row dense>\n <v-col class="pl-0">\n <v-btn\n :disabled="!formValid"\n @click="save"\n color="success"\n text\n data-test="save-classification-banner"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model="errorSaving" type="error" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model="successSaving" type="success" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n</template>\n\n<script>\nimport axios from \'axios\'\nimport { OpenC3Api } from \'@openc3/tool-common/src/services/openc3-api\'\n\nconst settingName = \'classification_banner\'\nexport default {\n data() {\n return {\n api: null,\n errorLoading: false,\n errorSaving: false,\n successSaving: false,\n text: \'\',\n displayTopBanner: false,\n displayBottomBanner: false,\n topHeight: 0,\n bottomHeight: 0,\n selectedBackgroundColor: \'red\',\n customBackgroundColor: \'\',\n selectedFontColor: \'white\',\n customFontColor: \'\',\n customColorHint: \'Enter a 3 or 6-digit hex color code\',\n colors: [\n {\n text: \'Yellow\',\n value: \'yellow\',\n },\n {\n text: \'Orange\',\n value: \'orange\',\n },\n {\n text: \'Red\',\n value: \'red\',\n },\n {\n text: \'Purple\',\n value: \'purple\',\n },\n {\n text: \'Blue\',\n value: \'blue\',\n },\n {\n text: \'Green\',\n value: \'green\',\n },\n {\n text: \'Black\',\n value: \'black\',\n },\n {\n text: \'White\',\n value: \'white\',\n },\n {\n text: \'Custom\',\n value: false,\n },\n ],\n rules: {\n customColor: (value) => {\n return (\n /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value) || this.customColorHint\n )\n },\n },\n }\n },\n computed: {\n saveObj: function () {\n return JSON.stringify({\n text: this.text,\n fontColor: this.selectedFontColor || this.customFontColor,\n backgroundColor:\n this.selectedBackgroundColor || this.customBackgroundColor,\n topHeight: this.displayTopBanner ? this.topHeight : 0,\n bottomHeight: this.displayBottomBanner ? this.bottomHeight : 0,\n })\n },\n formValid: function () {\n return (\n (this.selectedFontColor ||\n this.rules.customColor(this.customFontColor) === true) &&\n (this.selectedBackgroundColor ||\n this.rules.customColor(this.customBackgroundColor) === true)\n )\n },\n },\n watch: {\n customFontColor: function (val) {\n if (val && val.length && !val.startsWith(\'#\')) {\n this.customFontColor = `#${val}`\n }\n },\n customBackgroundColor: function (val) {\n if (val && val.length && !val.startsWith(\'#\')) {\n this.customBackgroundColor = `#${val}`\n }\n },\n },\n created() {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting(settingName)\n .then((response) => {\n this.errorLoading = false\n if (response) {\n const parsed = JSON.parse(response)\n this.text = parsed.text\n this.topHeight = parsed.topHeight\n this.bottomHeight = parsed.bottomHeight\n this.displayTopBanner = parsed.topHeight !== 0\n this.displayBottomBanner = parsed.bottomHeight !== 0\n if (\n parsed.backgroundColor &&\n parsed.backgroundColor.startsWith(\'#\')\n ) {\n this.customBackgroundColor = parsed.backgroundColor\n this.selectedBackgroundColor = false\n } else {\n this.selectedBackgroundColor = parsed.backgroundColor\n }\n if (parsed.fontColor && parsed.fontColor.startsWith(\'#\')) {\n this.customFontColor = parsed.fontColor\n this.selectedFontColor = false\n } else {\n this.selectedFontColor = parsed.fontColor\n }\n }\n })\n .catch((error) => {\n //console.error(error)\n this.errorLoading = true\n })\n },\n save: function () {\n this.api\n .save_setting(settingName, this.saveObj)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n //console.error(error)\n this.errorSaving = true\n })\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"7fadd344af84d54a38982cf727ae8a17ac0d96d8"},s=t[l]||(t[l]={});s[e]&&s[e].hash===n||(s[e]=o);var r=s[e];return f=function(){return r},r}f();var h=(f().s[0]++,"classification_banner"),C={data:function(){var e=this;return f().f[0]++,f().s[1]++,{api:null,errorLoading:!1,errorSaving:!1,successSaving:!1,text:"",displayTopBanner:!1,displayBottomBanner:!1,topHeight:0,bottomHeight:0,selectedBackgroundColor:"red",customBackgroundColor:"",selectedFontColor:"white",customFontColor:"",customColorHint:"Enter a 3 or 6-digit hex color code",colors:[{text:"Yellow",value:"yellow"},{text:"Orange",value:"orange"},{text:"Red",value:"red"},{text:"Purple",value:"purple"},{text:"Blue",value:"blue"},{text:"Green",value:"green"},{text:"Black",value:"black"},{text:"White",value:"white"},{text:"Custom",value:!1}],rules:{customColor:function(n){return f().f[1]++,f().s[2]++,f().b[0][0]++,/^#(?:[0-9a-fA-F]{3}){1,2}$/.test(n)||(f().b[0][1]++,e.customColorHint)}}}},computed:{saveObj:function(){return f().f[2]++,f().s[3]++,JSON.stringify({text:this.text,fontColor:(f().b[1][0]++,this.selectedFontColor||(f().b[1][1]++,this.customFontColor)),backgroundColor:(f().b[2][0]++,this.selectedBackgroundColor||(f().b[2][1]++,this.customBackgroundColor)),topHeight:this.displayTopBanner?(f().b[3][0]++,this.topHeight):(f().b[3][1]++,0),bottomHeight:this.displayBottomBanner?(f().b[4][0]++,this.bottomHeight):(f().b[4][1]++,0)})},formValid:function(){return f().f[3]++,f().s[4]++,f().b[5][0]++,(this.selectedFontColor||(f().b[5][1]++,!0===this.rules.customColor(this.customFontColor)))&&(f().b[5][2]++,this.selectedBackgroundColor||(f().b[5][3]++,!0===this.rules.customColor(this.customBackgroundColor)))}},watch:{customFontColor:function(e){f().f[4]++,f().s[5]++,f().b[7][0]++,e&&(f().b[7][1]++,e.length)&&(f().b[7][2]++,!e.startsWith("#"))?(f().b[6][0]++,f().s[6]++,this.customFontColor="#".concat(e)):f().b[6][1]++},customBackgroundColor:function(e){f().f[5]++,f().s[7]++,f().b[9][0]++,e&&(f().b[9][1]++,e.length)&&(f().b[9][2]++,!e.startsWith("#"))?(f().b[8][0]++,f().s[8]++,this.customBackgroundColor="#".concat(e)):f().b[8][1]++}},created:function(){f().f[6]++,f().s[9]++,this.api=new v,f().s[10]++,this.load()},methods:{load:function(){var e=this;f().f[7]++,f().s[11]++,this.api.get_setting(h).then((function(n){if(f().f[8]++,f().s[12]++,e.errorLoading=!1,f().s[13]++,n){f().b[10][0]++;var t=(f().s[14]++,JSON.parse(n));f().s[15]++,e.text=t.text,f().s[16]++,e.topHeight=t.topHeight,f().s[17]++,e.bottomHeight=t.bottomHeight,f().s[18]++,e.displayTopBanner=0!==t.topHeight,f().s[19]++,e.displayBottomBanner=0!==t.bottomHeight,f().s[20]++,f().b[12][0]++,t.backgroundColor&&(f().b[12][1]++,t.backgroundColor.startsWith("#"))?(f().b[11][0]++,f().s[21]++,e.customBackgroundColor=t.backgroundColor,f().s[22]++,e.selectedBackgroundColor=!1):(f().b[11][1]++,f().s[23]++,e.selectedBackgroundColor=t.backgroundColor),f().s[24]++,f().b[14][0]++,t.fontColor&&(f().b[14][1]++,t.fontColor.startsWith("#"))?(f().b[13][0]++,f().s[25]++,e.customFontColor=t.fontColor,f().s[26]++,e.selectedFontColor=!1):(f().b[13][1]++,f().s[27]++,e.selectedFontColor=t.fontColor)}else f().b[10][1]++})).catch((function(n){f().f[9]++,f().s[28]++,e.errorLoading=!0}))},save:function(){var e=this;f().f[10]++,f().s[29]++,this.api.save_setting(h,this.saveObj).then((function(n){f().f[11]++,f().s[30]++,e.errorSaving=!1,f().s[31]++,e.successSaving=!0})).catch((function(n){f().f[12]++,f().s[32]++,e.errorSaving=!0}))}}},_=C,b=t(3287),y=(0,b.Z)(_,p,g,!1,null,null,null),k=y.exports;function x(){var e="/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/SettingsTab.vue",n="4277da6b2ba0b1ac1b2d7692bad3a6f6e2c228a3",t=new Function("return this")(),l="__coverage__",o={path:"/openc3/plugins/packages/openc3-tool-admin/src/tools/OpenC3Admin/tabs/SettingsTab.vue",statementMap:{0:{start:{line:187,column:4},end:{line:199,column:5}},1:{start:{line:203,column:6},end:{line:209,column:7}},2:{start:{line:204,column:8},end:{line:206,column:9}},3:{start:{line:205,column:23},end:{line:205,column:34}},4:{start:{line:208,column:8},end:{line:208,column:44}},5:{start:{line:212,column:6},end:{line:216,column:7}},6:{start:{line:213,column:8},end:{line:213,column:79}},7:{start:{line:213,column:68},end:{line:213,column:78}},8:{start:{line:215,column:8},end:{line:215,column:37}},9:{start:{line:220,column:4},end:{line:220,column:33}},10:{start:{line:221,column:4},end:{line:221,column:26}},11:{start:{line:222,column:4},end:{line:222,column:24}},12:{start:{line:223,column:4},end:{line:223,column:26}},13:{start:{line:227,column:6},end:{line:231,column:49}},14:{start:{line:229,column:10},end:{line:229,column:52}},15:{start:{line:232,column:6},end:{line:232,column:42}},16:{start:{line:235,column:6},end:{line:235,column:66}},17:{start:{line:236,column:6},end:{line:236,column:35}},18:{start:{line:239,column:6},end:{line:243,column:49}},19:{start:{line:241,column:10},end:{line:241,column:47}},20:{start:{line:244,column:6},end:{line:244,column:35}},21:{start:{line:247,column:6},end:{line:247,column:59}},22:{start:{line:248,column:6},end:{line:248,column:28}},23:{start:{line:251,column:6},end:{line:253,column:7}},24:{start:{line:252,column:8},end:{line:252,column:32}},25:{start:{line:256,column:19},end:{line:256,column:58}},26:{start:{line:257,column:6},end:{line:261,column:7}},27:{start:{line:264,column:6},end:{line:271,column:10}},28:{start:{line:267,column:10},end:{line:267,column:35}},29:{start:{line:270,column:10},end:{line:270,column:61}},30:{start:{line:274,column:6},end:{line:282,column:10}},31:{start:{line:277,column:10},end:{line:277,column:34}},32:{start:{line:278,column:10},end:{line:278,column:35}},33:{start:{line:281,column:10},end:{line:281,column:33}},34:{start:{line:285,column:6},end:{line:292,column:10}},35:{start:{line:288,column:10},end:{line:288,column:37}},36:{start:{line:291,column:10},end:{line:291,column:51}},37:{start:{line:295,column:6},end:{line:303,column:10}},38:{start:{line:298,column:10},end:{line:298,column:34}},39:{start:{line:299,column:10},end:{line:299,column:35}},40:{start:{line:302,column:10},end:{line:302,column:33}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:186,column:2},end:{line:186,column:3}},loc:{start:{line:186,column:9},end:{line:200,column:3}},line:186},1:{name:"(anonymous_1)",decl:{start:{line:202,column:33},end:{line:202,column:34}},loc:{start:{line:202,column:48},end:{line:210,column:5}},line:202},2:{name:"(anonymous_2)",decl:{start:{line:205,column:10},end:{line:205,column:11}},loc:{start:{line:205,column:23},end:{line:205,column:34}},line:205},3:{name:"(anonymous_3)",decl:{start:{line:211,column:26},end:{line:211,column:27}},loc:{start:{line:211,column:41},end:{line:217,column:5}},line:211},4:{name:"(anonymous_4)",decl:{start:{line:213,column:56},end:{line:213,column:57}},loc:{start:{line:213,column:68},end:{line:213,column:78}},line:213},5:{name:"(anonymous_5)",decl:{start:{line:219,column:2},end:{line:219,column:3}},loc:{start:{line:219,column:12},end:{line:224,column:3}},line:219},6:{name:"(anonymous_6)",decl:{start:{line:226,column:28},end:{line:226,column:29}},loc:{start:{line:226,column:40},end:{line:233,column:5}},line:226},7:{name:"(anonymous_7)",decl:{start:{line:228,column:16},end:{line:228,column:17}},loc:{start:{line:228,column:25},end:{line:230,column:9}},line:228},8:{name:"(anonymous_8)",decl:{start:{line:234,column:29},end:{line:234,column:30}},loc:{start:{line:234,column:41},end:{line:237,column:5}},line:234},9:{name:"(anonymous_9)",decl:{start:{line:238,column:21},end:{line:238,column:22}},loc:{start:{line:238,column:33},end:{line:245,column:5}},line:238},10:{name:"(anonymous_10)",decl:{start:{line:240,column:16},end:{line:240,column:17}},loc:{start:{line:240,column:25},end:{line:242,column:9}},line:240},11:{name:"(anonymous_11)",decl:{start:{line:246,column:22},end:{line:246,column:23}},loc:{start:{line:246,column:34},end:{line:249,column:5}},line:246},12:{name:"(anonymous_12)",decl:{start:{line:250,column:28},end:{line:250,column:29}},loc:{start:{line:250,column:44},end:{line:254,column:5}},line:250},13:{name:"(anonymous_13)",decl:{start:{line:255,column:36},end:{line:255,column:37}},loc:{start:{line:255,column:51},end:{line:262,column:5}},line:255},14:{name:"(anonymous_14)",decl:{start:{line:263,column:19},end:{line:263,column:20}},loc:{start:{line:263,column:31},end:{line:272,column:5}},line:263},15:{name:"(anonymous_15)",decl:{start:{line:266,column:14},end:{line:266,column:15}},loc:{start:{line:266,column:28},end:{line:268,column:9}},line:266},16:{name:"(anonymous_16)",decl:{start:{line:269,column:15},end:{line:269,column:16}},loc:{start:{line:269,column:21},end:{line:271,column:9}},line:269},17:{name:"(anonymous_17)",decl:{start:{line:273,column:19},end:{line:273,column:20}},loc:{start:{line:273,column:31},end:{line:283,column:5}},line:273},18:{name:"(anonymous_18)",decl:{start:{line:276,column:14},end:{line:276,column:15}},loc:{start:{line:276,column:28},end:{line:279,column:9}},line:276},19:{name:"(anonymous_19)",decl:{start:{line:280,column:15},end:{line:280,column:16}},loc:{start:{line:280,column:26},end:{line:282,column:9}},line:280},20:{name:"(anonymous_20)",decl:{start:{line:284,column:21},end:{line:284,column:22}},loc:{start:{line:284,column:33},end:{line:293,column:5}},line:284},21:{name:"(anonymous_21)",decl:{start:{line:287,column:14},end:{line:287,column:15}},loc:{start:{line:287,column:28},end:{line:289,column:9}},line:287},22:{name:"(anonymous_22)",decl:{start:{line:290,column:15},end:{line:290,column:16}},loc:{start:{line:290,column:21},end:{line:292,column:9}},line:290},23:{name:"(anonymous_23)",decl:{start:{line:294,column:21},end:{line:294,column:22}},loc:{start:{line:294,column:33},end:{line:304,column:5}},line:294},24:{name:"(anonymous_24)",decl:{start:{line:297,column:14},end:{line:297,column:15}},loc:{start:{line:297,column:28},end:{line:300,column:9}},line:297},25:{name:"(anonymous_25)",decl:{start:{line:301,column:15},end:{line:301,column:16}},loc:{start:{line:301,column:26},end:{line:303,column:9}},line:301}},branchMap:{0:{loc:{start:{line:203,column:6},end:{line:209,column:7}},type:"if",locations:[{start:{line:203,column:6},end:{line:209,column:7}},{start:{line:207,column:13},end:{line:209,column:7}}],line:203},1:{loc:{start:{line:212,column:6},end:{line:216,column:7}},type:"if",locations:[{start:{line:212,column:6},end:{line:216,column:7}},{start:{line:214,column:13},end:{line:216,column:7}}],line:212}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0},b:{0:[0,0],1:[0,0]},inputSourceMap:{version:3,sources:["SettingsTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"SettingsTab.vue",sourceRoot:"src/tools/OpenC3Admin/tabs",sourcesContent:['\x3c!--\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--\x3e\n\n<template>\n <div>\n <v-card>\n <v-card-title> Reset suppressed warnings </v-card-title>\n <v-card-subtitle>\n This resets "don\'t show this again" dialogs on this browser\n </v-card-subtitle>\n <v-card-text class="pb-0 ml-2">\n <template v-if="suppressedWarnings.length">\n <v-checkbox\n v-model="selectAllSuppressedWarnings"\n label="Select all"\n class="mt-0"\n data-test="select-all-suppressed-warnings"\n />\n <v-checkbox\n v-for="warning in suppressedWarnings"\n :key="warning.key"\n v-model="selectedSuppressedWarnings"\n :label="warning.text"\n :value="warning.key"\n class="mt-0"\n dense\n />\n </template>\n <template v-else> No warnings to reset </template>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled="!selectedSuppressedWarnings.length"\n @click="resetSuppressedWarnings"\n color="warning"\n text\n class="ml-2"\n data-test="reset-suppressed-warnings"\n >\n Reset\n </v-btn>\n </v-card-actions>\n </v-card>\n <v-divider />\n <v-card>\n <v-card-title> Clear recent configs </v-card-title>\n <v-card-subtitle>\n This clears the most recently saved/loaded tool configs on this browser\n </v-card-subtitle>\n <v-card-text class="pb-0 ml-2">\n <template v-if="lastConfigs.length">\n <v-checkbox\n v-model="selectAllLastConfigs"\n label="Select all"\n class="mt-0"\n data-test="select-all-last-configs"\n />\n <v-checkbox\n v-for="config in lastConfigs"\n :key="config.key"\n v-model="selectedLastConfigs"\n :label="`${config.text} (${config.value})`"\n :value="config.key"\n class="mt-0"\n dense\n />\n </template>\n <template v-else> No configs to clear </template>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled="!selectedLastConfigs.length"\n @click="clearLastConfigs"\n color="warning"\n text\n class="ml-2"\n data-test="clear-last-configs"\n >\n Clear\n </v-btn>\n </v-card-actions>\n </v-card>\n <v-divider />\n <classification-banner-settings />\n <v-divider />\n <v-card>\n <v-card-title> Source code URL </v-card-title>\n <v-card-subtitle>\n This sets the URL for the "Source" link in the footer. This is required\n under the AGPL license.\n </v-card-subtitle>\n <v-card-text class="pb-0 ml-2">\n <v-text-field\n label="Source URL"\n v-model="sourceUrl"\n data-test="source-url"\n />\n </v-card-text>\n <v-card-actions>\n <v-container class="pt-0">\n <v-row dense>\n <v-col class="pl-0">\n <v-btn\n @click="saveSourceUrl"\n color="success"\n text\n data-test="save-source-url"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model="errorSaving" type="error" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model="successSaving" type="success" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n <v-divider />\n <v-card>\n <v-card-title> Rubygems URL </v-card-title>\n <v-card-subtitle>\n This sets the URL for installing dependency rubygems. Also used for\n rubygem discovery.\n </v-card-subtitle>\n <v-card-text class="pb-0 ml-2">\n <v-text-field\n label="Rubygems URL"\n v-model="rubygemsUrl"\n data-test="rubygems-url"\n />\n </v-card-text>\n <v-card-actions>\n <v-container class="pt-0">\n <v-row dense>\n <v-col class="pl-0">\n <v-btn\n @click="saveRubygemsUrl"\n color="success"\n text\n data-test="save-rubygems-url"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model="errorSaving" type="error" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model="successSaving" type="success" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from \'@openc3/tool-common/src/services/openc3-api\'\nimport ClassificationBannerSettings from \'@/tools/OpenC3Admin/ClassificationBannerSettings.vue\'\n\nexport default {\n components: {\n ClassificationBannerSettings,\n },\n data() {\n return {\n api: new OpenC3Api(),\n suppressedWarnings: [],\n selectedSuppressedWarnings: [],\n selectAllSuppressedWarnings: false,\n lastConfigs: [],\n selectedLastConfigs: [],\n selectAllLastConfigs: false,\n sourceUrl: \'\',\n rubygemsUrl: \'\',\n errorSaving: false,\n successSaving: false,\n }\n },\n watch: {\n selectAllSuppressedWarnings: function (val) {\n if (val) {\n this.selectedSuppressedWarnings = this.suppressedWarnings.map(\n (warning) => warning.key\n )\n } else {\n this.selectedSuppressedWarnings = []\n }\n },\n selectAllLastConfigs: function (val) {\n if (val) {\n this.selectedLastConfigs = this.lastConfigs.map((config) => config.key)\n } else {\n this.selectedLastConfigs = []\n }\n },\n },\n created() {\n this.loadSuppressedWarnings()\n this.loadLastConfigs()\n this.loadSourceUrl()\n this.loadRubygemsUrl()\n },\n methods: {\n loadSuppressedWarnings: function () {\n this.suppressedWarnings = Object.keys(localStorage)\n .filter((key) => {\n return key.startsWith(\'suppresswarning__\')\n })\n .map(this.localStorageKeyToDisplayObject)\n this.selectedSuppressedWarnings = []\n },\n resetSuppressedWarnings: function () {\n this.deleteLocalStorageKeys(this.selectedSuppressedWarnings)\n this.loadSuppressedWarnings()\n },\n loadLastConfigs: function () {\n this.lastConfigs = Object.keys(localStorage)\n .filter((key) => {\n return key.startsWith(\'lastconfig__\')\n })\n .map(this.localStorageKeyToDisplayObject)\n this.selectedLastConfigs = []\n },\n clearLastConfigs: function () {\n this.deleteLocalStorageKeys(this.selectedLastConfigs)\n this.loadLastConfigs()\n },\n deleteLocalStorageKeys: function (keys) {\n for (const key of keys) {\n delete localStorage[key]\n }\n },\n localStorageKeyToDisplayObject: function (key) {\n const name = key.split(\'__\')[1].replaceAll(\'_\', \' \')\n return {\n key,\n text: name.charAt(0).toUpperCase() + name.slice(1),\n value: localStorage[key],\n }\n },\n loadSourceUrl: function () {\n this.api\n .get_setting(\'source_url\')\n .then((response) => {\n this.sourceUrl = response\n })\n .catch(() => {\n this.sourceUrl = \'https://github.com/OpenC3/openc3\'\n })\n },\n saveSourceUrl: function () {\n this.api\n .save_setting(\'source_url\', this.sourceUrl)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n this.errorSaving = true\n })\n },\n loadRubygemsUrl: function () {\n this.api\n .get_setting(\'rubygems_url\')\n .then((response) => {\n this.rubygemsUrl = response\n })\n .catch(() => {\n this.rubygemsUrl = \'https://rubygems.org\'\n })\n },\n saveRubygemsUrl: function () {\n this.api\n .save_setting(\'rubygems_url\', this.rubygemsUrl)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n this.errorSaving = true\n })\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"4277da6b2ba0b1ac1b2d7692bad3a6f6e2c228a3"},s=t[l]||(t[l]={});s[e]&&s[e].hash===n||(s[e]=o);var r=s[e];return x=function(){return r},r}x();var S={components:{ClassificationBannerSettings:k},data:function(){return x().f[0]++,x().s[0]++,{api:new v,suppressedWarnings:[],selectedSuppressedWarnings:[],selectAllSuppressedWarnings:!1,lastConfigs:[],selectedLastConfigs:[],selectAllLastConfigs:!1,sourceUrl:"",rubygemsUrl:"",errorSaving:!1,successSaving:!1}},watch:{selectAllSuppressedWarnings:function(e){x().f[1]++,x().s[1]++,e?(x().b[0][0]++,x().s[2]++,this.selectedSuppressedWarnings=this.suppressedWarnings.map((function(e){return x().f[2]++,x().s[3]++,e.key}))):(x().b[0][1]++,x().s[4]++,this.selectedSuppressedWarnings=[])},selectAllLastConfigs:function(e){x().f[3]++,x().s[5]++,e?(x().b[1][0]++,x().s[6]++,this.selectedLastConfigs=this.lastConfigs.map((function(e){return x().f[4]++,x().s[7]++,e.key}))):(x().b[1][1]++,x().s[8]++,this.selectedLastConfigs=[])}},created:function(){x().f[5]++,x().s[9]++,this.loadSuppressedWarnings(),x().s[10]++,this.loadLastConfigs(),x().s[11]++,this.loadSourceUrl(),x().s[12]++,this.loadRubygemsUrl()},methods:{loadSuppressedWarnings:function(){x().f[6]++,x().s[13]++,this.suppressedWarnings=Object.keys(localStorage).filter((function(e){return x().f[7]++,x().s[14]++,e.startsWith("suppresswarning__")})).map(this.localStorageKeyToDisplayObject),x().s[15]++,this.selectedSuppressedWarnings=[]},resetSuppressedWarnings:function(){x().f[8]++,x().s[16]++,this.deleteLocalStorageKeys(this.selectedSuppressedWarnings),x().s[17]++,this.loadSuppressedWarnings()},loadLastConfigs:function(){x().f[9]++,x().s[18]++,this.lastConfigs=Object.keys(localStorage).filter((function(e){return x().f[10]++,x().s[19]++,e.startsWith("lastconfig__")})).map(this.localStorageKeyToDisplayObject),x().s[20]++,this.selectedLastConfigs=[]},clearLastConfigs:function(){x().f[11]++,x().s[21]++,this.deleteLocalStorageKeys(this.selectedLastConfigs),x().s[22]++,this.loadLastConfigs()},deleteLocalStorageKeys:function(e){x().f[12]++,x().s[23]++;var n,t=(0,s.Z)(e);try{for(t.s();!(n=t.n()).done;){var l=n.value;x().s[24]++,delete localStorage[l]}}catch(o){t.e(o)}finally{t.f()}},localStorageKeyToDisplayObject:function(e){x().f[13]++;var n=(x().s[25]++,e.split("__")[1].replaceAll("_"," "));return x().s[26]++,{key:e,text:n.charAt(0).toUpperCase()+n.slice(1),value:localStorage[e]}},loadSourceUrl:function(){var e=this;x().f[14]++,x().s[27]++,this.api.get_setting("source_url").then((function(n){x().f[15]++,x().s[28]++,e.sourceUrl=n})).catch((function(){x().f[16]++,x().s[29]++,e.sourceUrl="https://github.com/OpenC3/openc3"}))},saveSourceUrl:function(){var e=this;x().f[17]++,x().s[30]++,this.api.save_setting("source_url",this.sourceUrl).then((function(n){x().f[18]++,x().s[31]++,e.errorSaving=!1,x().s[32]++,e.successSaving=!0})).catch((function(n){x().f[19]++,x().s[33]++,e.errorSaving=!0}))},loadRubygemsUrl:function(){var e=this;x().f[20]++,x().s[34]++,this.api.get_setting("rubygems_url").then((function(n){x().f[21]++,x().s[35]++,e.rubygemsUrl=n})).catch((function(){x().f[22]++,x().s[36]++,e.rubygemsUrl="https://rubygems.org"}))},saveRubygemsUrl:function(){var e=this;x().f[23]++,x().s[37]++,this.api.save_setting("rubygems_url",this.rubygemsUrl).then((function(n){x().f[24]++,x().s[38]++,e.errorSaving=!1,x().s[39]++,e.successSaving=!0})).catch((function(n){x().f[25]++,x().s[40]++,e.errorSaving=!0}))}}},w=S,B=(0,b.Z)(w,l,o,!1,null,null,null),L=B.exports},8312:function(e,n,t){var l=t(4768);e.exports=function(e,n,t){for(var o in n)l(e,o,n[o],t);return e}},7456:function(e,n,t){var l=t(598);e.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(l)},6650:function(e,n,t){var l=t(5968),o=t(4237),s=t(3326),r=t(3124),a=t(8885),i=l(r),c=l("".slice),u=Math.ceil,d=function(e){return function(n,t,l){var r,d,m=s(a(n)),A=o(t),v=m.length,p=void 0===l?" ":s(l);return A<=v||""==p?m:(r=A-v,d=i(p,u(r/p.length)),d.length>r&&(d=c(d,0,r)),e?m+d:d+m)}};e.exports={start:d(!1),end:d(!0)}},5734:function(e,n,t){"use strict";var l=t(3103),o=t(6650).start,s=t(7456);l({target:"String",proto:!0,forced:s},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},1639:function(e,n,t){"use strict";var l=t(3103),o=t(266),s=t(5968),r=t(8885),a=t(6733),i=t(8311),c=t(3326),u=t(5300),d=t(3349),m=t(17),A=t(95),v=t(4231),p=A("replace"),g=TypeError,f=s("".indexOf),h=s("".replace),C=s("".slice),_=Math.max,b=function(e,n,t){return t>e.length?-1:""===n?t:f(e,n,t)};l({target:"String",proto:!0},{replaceAll:function(e,n){var t,l,s,A,y,k,x,S,w,B=r(this),L=0,T=0,U="";if(null!=e){if(t=i(e),t&&(l=c(r(d(e))),!~f(l,"g")))throw g("`.replaceAll` does not allow non-global regexes");if(s=u(e,p),s)return o(s,e,B,n);if(v&&t)return h(c(B),e,n)}A=c(B),y=c(e),k=a(n),k||(n=c(n)),x=y.length,S=_(1,x),L=b(A,y,0);while(-1!==L)w=k?c(n(y,L,A)):m(y,A,L,[],void 0,n),U+=C(A,T,L)+w,T=L+x,L=b(A,y,L+S);return T<A.length&&(U+=C(A,T)),U}})},1150:function(e,n,t){"use strict";t.d(n,{Z:function(){return o}});t(4115),t(634),t(8188),t(796),t(8673),t(6886),t(1372);var l=t(8709);function o(e,n){var t="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=(0,l.Z)(e))||n&&e&&"number"===typeof e.length){t&&(e=t);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return a=e.done,e},e:function(e){i=!0,r=e},f:function(){try{a||null==t["return"]||t["return"]()}finally{if(i)throw r}}}}}}]);
2
+ //# sourceMappingURL=248.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/248.js","mappings":"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","sources":["webpack://@openc3/tool-admin/../openc3-tool-common/src/services/axios.js","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/SettingsTab.vue?cd89","webpack://@openc3/tool-admin/../../node_modules/@babel/runtime/helpers/esm/readOnlyError.js","webpack://@openc3/tool-admin/../openc3-tool-common/src/services/openc3-api.js","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/ClassificationBannerSettings.vue?96ad","webpack://@openc3/tool-admin/src/tools/OpenC3Admin/ClassificationBannerSettings.vue","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/ClassificationBannerSettings.vue?3e5f","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/ClassificationBannerSettings.vue","webpack://@openc3/tool-admin/src/tools/OpenC3Admin/tabs/SettingsTab.vue","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/SettingsTab.vue?215e","webpack://@openc3/tool-admin/./src/tools/OpenC3Admin/tabs/SettingsTab.vue","webpack://@openc3/tool-admin/../../node_modules/core-js/internals/define-built-ins.js","webpack://@openc3/tool-admin/../../node_modules/core-js/internals/string-pad-webkit-bug.js","webpack://@openc3/tool-admin/../../node_modules/core-js/internals/string-pad.js","webpack://@openc3/tool-admin/../../node_modules/core-js/modules/es.string.pad-start.js","webpack://@openc3/tool-admin/../../node_modules/core-js/modules/es.string.replace-all.js","webpack://@openc3/tool-admin/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["/*\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\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 delete localStorage.openc3Token\n OpenC3Auth.login(location.href)\n } else {\n // Individual tools can set axiosIgnoreResponse to an error code\n // they potentially expect, e.g. '404', in which case we ignore it\n // Since localStorage only supports strings call toString on the status\n if (\n localStorage.axiosIgnoreResponse === error.response.status.toString()\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 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-card-title',[_vm._v(\" Reset suppressed warnings \")]),_c('v-card-subtitle',[_vm._v(\" This resets \\\"don't show this again\\\" dialogs on this browser \")]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[(_vm.suppressedWarnings.length)?[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":\"Select all\",\"data-test\":\"select-all-suppressed-warnings\"},model:{value:(_vm.selectAllSuppressedWarnings),callback:function ($$v) {_vm.selectAllSuppressedWarnings=$$v},expression:\"selectAllSuppressedWarnings\"}}),_vm._l((_vm.suppressedWarnings),function(warning){return _c('v-checkbox',{key:warning.key,staticClass:\"mt-0\",attrs:{\"label\":warning.text,\"value\":warning.key,\"dense\":\"\"},model:{value:(_vm.selectedSuppressedWarnings),callback:function ($$v) {_vm.selectedSuppressedWarnings=$$v},expression:\"selectedSuppressedWarnings\"}})})]:[_vm._v(\" No warnings to reset \")]],2),_c('v-card-actions',[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"disabled\":!_vm.selectedSuppressedWarnings.length,\"color\":\"warning\",\"text\":\"\",\"data-test\":\"reset-suppressed-warnings\"},on:{\"click\":_vm.resetSuppressedWarnings}},[_vm._v(\" Reset \")])],1)],1),_c('v-divider'),_c('v-card',[_c('v-card-title',[_vm._v(\" Clear recent configs \")]),_c('v-card-subtitle',[_vm._v(\" This clears the most recently saved/loaded tool configs on this browser \")]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[(_vm.lastConfigs.length)?[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":\"Select all\",\"data-test\":\"select-all-last-configs\"},model:{value:(_vm.selectAllLastConfigs),callback:function ($$v) {_vm.selectAllLastConfigs=$$v},expression:\"selectAllLastConfigs\"}}),_vm._l((_vm.lastConfigs),function(config){return _c('v-checkbox',{key:config.key,staticClass:\"mt-0\",attrs:{\"label\":((config.text) + \" (\" + (config.value) + \")\"),\"value\":config.key,\"dense\":\"\"},model:{value:(_vm.selectedLastConfigs),callback:function ($$v) {_vm.selectedLastConfigs=$$v},expression:\"selectedLastConfigs\"}})})]:[_vm._v(\" No configs to clear \")]],2),_c('v-card-actions',[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"disabled\":!_vm.selectedLastConfigs.length,\"color\":\"warning\",\"text\":\"\",\"data-test\":\"clear-last-configs\"},on:{\"click\":_vm.clearLastConfigs}},[_vm._v(\" Clear \")])],1)],1),_c('v-divider'),_c('classification-banner-settings'),_c('v-divider'),_c('v-card',[_c('v-card-title',[_vm._v(\" Source code URL \")]),_c('v-card-subtitle',[_vm._v(\" This sets the URL for the \\\"Source\\\" link in the footer. This is required under the AGPL license. \")]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[_c('v-text-field',{attrs:{\"label\":\"Source URL\",\"data-test\":\"source-url\"},model:{value:(_vm.sourceUrl),callback:function ($$v) {_vm.sourceUrl=$$v},expression:\"sourceUrl\"}})],1),_c('v-card-actions',[_c('v-container',{staticClass:\"pt-0\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"pl-0\"},[_c('v-btn',{attrs:{\"color\":\"success\",\"text\":\"\",\"data-test\":\"save-source-url\"},on:{\"click\":_vm.saveSourceUrl}},[_vm._v(\" Save \")])],1)],1),_c('v-alert',{attrs:{\"type\":\"error\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.errorSaving),callback:function ($$v) {_vm.errorSaving=$$v},expression:\"errorSaving\"}},[_vm._v(\" Error saving \")]),_c('v-alert',{attrs:{\"type\":\"success\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.successSaving),callback:function ($$v) {_vm.successSaving=$$v},expression:\"successSaving\"}},[_vm._v(\" Saved! (Refresh the page to see changes) \")])],1)],1)],1),_c('v-divider'),_c('v-card',[_c('v-card-title',[_vm._v(\" Rubygems URL \")]),_c('v-card-subtitle',[_vm._v(\" This sets the URL for installing dependency rubygems. Also used for rubygem discovery. \")]),_c('v-card-text',{staticClass:\"pb-0 ml-2\"},[_c('v-text-field',{attrs:{\"label\":\"Rubygems URL\",\"data-test\":\"rubygems-url\"},model:{value:(_vm.rubygemsUrl),callback:function ($$v) {_vm.rubygemsUrl=$$v},expression:\"rubygemsUrl\"}})],1),_c('v-card-actions',[_c('v-container',{staticClass:\"pt-0\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"pl-0\"},[_c('v-btn',{attrs:{\"color\":\"success\",\"text\":\"\",\"data-test\":\"save-rubygems-url\"},on:{\"click\":_vm.saveRubygemsUrl}},[_vm._v(\" Save \")])],1)],1),_c('v-alert',{attrs:{\"type\":\"error\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.errorSaving),callback:function ($$v) {_vm.errorSaving=$$v},expression:\"errorSaving\"}},[_vm._v(\" Error saving \")]),_c('v-alert',{attrs:{\"type\":\"success\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.successSaving),callback:function ($$v) {_vm.successSaving=$$v},expression:\"successSaving\"}},[_vm._v(\" Saved! (Refresh the page to see changes) \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _readOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\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\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\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 },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var 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 var 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 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 //console.log(error)\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 // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\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_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_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\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 get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n // Called by PacketViewerComponent\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var 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 // Called by PacketViewerComponent\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n // Called by CmdTlmServer Tlm Packets tab\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n // Called by OpenC3ScreenComponent\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var 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 // Called by LimitsbarWidget\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n // Called by LimitsMonitorComponent\n async tlm(target_name, packet_name, item_name) {\n const data = await this.exec('tlm', [target_name, packet_name, item_name])\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\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 // Called by CmdTlmServer Cmd Packets tab\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) {\n var converted = null\n for (var 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(method, [target_name, command_name, param_list])\n }\n\n // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\n cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name)\n } else {\n return this._cmd('cmd', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\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 // Called by CmdSenderComponent\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n // Called by CmdSenderComponent\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 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 save_setting(name, data) {\n return this.exec('save_setting', [name, data])\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(\"Classification Banner Settings\")]),_c('v-card-text',{staticClass:\"pb-0\"},[_c('v-alert',{attrs:{\"type\":\"error\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.errorLoading),callback:function ($$v) {_vm.errorLoading=$$v},expression:\"errorLoading\"}},[_vm._v(\" Error loading previous configuration \")]),_c('v-container',{staticClass:\"pb-0\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Text\",\"data-test\":\"classification-banner-text\"},model:{value:(_vm.text),callback:function ($$v) {_vm.text=$$v},expression:\"text\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-select',{attrs:{\"label\":\"Background color\",\"items\":_vm.colors,\"data-test\":\"classification-banner-background-color\"},scopedSlots:_vm._u([(_vm.selectedBackgroundColor)?{key:\"prepend-inner\",fn:function(){return [_c('v-icon',{attrs:{\"color\":_vm.selectedBackgroundColor}},[_vm._v(\" mdi-square \")])]},proxy:true}:null,{key:\"item\",fn:function(data){return [(data.item.value)?_c('v-icon',{staticClass:\"pr-1\",attrs:{\"color\":data.item.value}},[_vm._v(\" mdi-square \")]):_vm._e(),_vm._v(\" \"+_vm._s(data.item.text)+\" \")]}}],null,true),model:{value:(_vm.selectedBackgroundColor),callback:function ($$v) {_vm.selectedBackgroundColor=$$v},expression:\"selectedBackgroundColor\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Custom background color\",\"hint\":_vm.customColorHint,\"disabled\":_vm.selectedBackgroundColor !== false,\"rules\":[_vm.rules.customColor],\"data-test\":\"classification-banner-custom-background-color\"},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.selectedBackgroundColor),expression:\"!selectedBackgroundColor\"}],attrs:{\"color\":_vm.customBackgroundColor}},[_vm._v(\" mdi-square \")])]},proxy:true}]),model:{value:(_vm.customBackgroundColor),callback:function ($$v) {_vm.customBackgroundColor=$$v},expression:\"customBackgroundColor\"}})],1),_c('v-col',[_c('v-select',{attrs:{\"label\":\"Font color\",\"items\":_vm.colors,\"data-test\":\"classification-banner-font-color\"},scopedSlots:_vm._u([(_vm.selectedFontColor)?{key:\"prepend-inner\",fn:function(){return [_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedFontColor),expression:\"selectedFontColor\"}],attrs:{\"color\":_vm.selectedFontColor}},[_vm._v(\" mdi-square \")])]},proxy:true}:null,{key:\"item\",fn:function(data){return [(data.item.value)?_c('v-icon',{staticClass:\"pr-1\",attrs:{\"color\":data.item.value}},[_vm._v(\" mdi-square \")]):_vm._e(),_vm._v(\" \"+_vm._s(data.item.text)+\" \")]}}],null,true),model:{value:(_vm.selectedFontColor),callback:function ($$v) {_vm.selectedFontColor=$$v},expression:\"selectedFontColor\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Custom font color\",\"hint\":_vm.customColorHint,\"disabled\":_vm.selectedFontColor !== false,\"rules\":[_vm.rules.customColor],\"data-test\":\"classification-banner-custom-font-color\"},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.selectedFontColor),expression:\"!selectedFontColor\"}],attrs:{\"color\":_vm.customFontColor}},[_vm._v(\" mdi-square \")])]},proxy:true}]),model:{value:(_vm.customFontColor),callback:function ($$v) {_vm.customFontColor=$$v},expression:\"customFontColor\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-switch',{attrs:{\"label\":\"Display top banner\",\"data-test\":\"display-top-banner\"},model:{value:(_vm.displayTopBanner),callback:function ($$v) {_vm.displayTopBanner=$$v},expression:\"displayTopBanner\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Top height\",\"disabled\":!_vm.displayTopBanner,\"type\":\"number\",\"suffix\":\"px\",\"data-test\":\"classification-banner-top-height\"},model:{value:(_vm.topHeight),callback:function ($$v) {_vm.topHeight=$$v},expression:\"topHeight\"}})],1),_c('v-col',[_c('v-switch',{attrs:{\"label\":\"Display bottom banner\",\"data-test\":\"display-bottom-banner\"},model:{value:(_vm.displayBottomBanner),callback:function ($$v) {_vm.displayBottomBanner=$$v},expression:\"displayBottomBanner\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Bottom height\",\"disabled\":!_vm.displayBottomBanner,\"type\":\"number\",\"suffix\":\"px\",\"data-test\":\"classification-banner-bottom-height\"},model:{value:(_vm.bottomHeight),callback:function ($$v) {_vm.bottomHeight=$$v},expression:\"bottomHeight\"}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-container',{staticClass:\"pt-0\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"pl-0\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.formValid,\"color\":\"success\",\"text\":\"\",\"data-test\":\"save-classification-banner\"},on:{\"click\":_vm.save}},[_vm._v(\" Save \")])],1)],1),_c('v-alert',{attrs:{\"type\":\"error\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.errorSaving),callback:function ($$v) {_vm.errorSaving=$$v},expression:\"errorSaving\"}},[_vm._v(\" Error saving \")]),_c('v-alert',{attrs:{\"type\":\"success\",\"dismissible\":\"\",\"dense\":\"\"},model:{value:(_vm.successSaving),callback:function ($$v) {_vm.successSaving=$$v},expression:\"successSaving\"}},[_vm._v(\" Saved! (Refresh the page to see changes) \")])],1)],1)],1)}\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\n<template>\n <v-card>\n <v-card-title>Classification Banner Settings</v-card-title>\n <v-card-text class=\"pb-0\">\n <v-alert v-model=\"errorLoading\" type=\"error\" dismissible dense>\n Error loading previous configuration\n </v-alert>\n <v-container class=\"pb-0\">\n <v-row dense>\n <v-col>\n <v-text-field\n label=\"Text\"\n v-model=\"text\"\n data-test=\"classification-banner-text\"\n />\n </v-col>\n </v-row>\n <v-row dense>\n <v-col>\n <v-select\n label=\"Background color\"\n :items=\"colors\"\n v-model=\"selectedBackgroundColor\"\n data-test=\"classification-banner-background-color\"\n >\n <template v-slot:prepend-inner v-if=\"selectedBackgroundColor\">\n <v-icon :color=\"selectedBackgroundColor\"> mdi-square </v-icon>\n </template>\n <template v-slot:item=\"data\">\n <v-icon\n :color=\"data.item.value\"\n v-if=\"data.item.value\"\n class=\"pr-1\"\n >\n mdi-square\n </v-icon>\n {{ data.item.text }}\n </template>\n </v-select>\n </v-col>\n <v-col>\n <v-text-field\n label=\"Custom background color\"\n :hint=\"customColorHint\"\n :disabled=\"selectedBackgroundColor !== false\"\n v-model=\"customBackgroundColor\"\n :rules=\"[rules.customColor]\"\n data-test=\"classification-banner-custom-background-color\"\n >\n <template v-slot:prepend-inner>\n <v-icon\n v-show=\"!selectedBackgroundColor\"\n :color=\"customBackgroundColor\"\n >\n mdi-square\n </v-icon>\n </template>\n </v-text-field>\n </v-col>\n <v-col>\n <v-select\n label=\"Font color\"\n :items=\"colors\"\n v-model=\"selectedFontColor\"\n data-test=\"classification-banner-font-color\"\n >\n <template v-slot:prepend-inner v-if=\"selectedFontColor\">\n <v-icon v-show=\"selectedFontColor\" :color=\"selectedFontColor\">\n mdi-square\n </v-icon>\n </template>\n <template slot=\"item\" slot-scope=\"data\">\n <v-icon\n v-if=\"data.item.value\"\n :color=\"data.item.value\"\n class=\"pr-1\"\n >\n mdi-square\n </v-icon>\n {{ data.item.text }}\n </template>\n </v-select>\n </v-col>\n <v-col>\n <v-text-field\n label=\"Custom font color\"\n :hint=\"customColorHint\"\n :disabled=\"selectedFontColor !== false\"\n v-model=\"customFontColor\"\n :rules=\"[rules.customColor]\"\n data-test=\"classification-banner-custom-font-color\"\n >\n <template v-slot:prepend-inner>\n <v-icon v-show=\"!selectedFontColor\" :color=\"customFontColor\">\n mdi-square\n </v-icon>\n </template>\n </v-text-field>\n </v-col>\n </v-row>\n <v-row dense>\n <v-col>\n <v-switch\n label=\"Display top banner\"\n v-model=\"displayTopBanner\"\n data-test=\"display-top-banner\"\n />\n </v-col>\n <v-col>\n <v-text-field\n label=\"Top height\"\n :disabled=\"!displayTopBanner\"\n type=\"number\"\n suffix=\"px\"\n v-model=\"topHeight\"\n data-test=\"classification-banner-top-height\"\n />\n </v-col>\n <v-col>\n <v-switch\n label=\"Display bottom banner\"\n v-model=\"displayBottomBanner\"\n data-test=\"display-bottom-banner\"\n />\n </v-col>\n <v-col>\n <v-text-field\n label=\"Bottom height\"\n :disabled=\"!displayBottomBanner\"\n type=\"number\"\n suffix=\"px\"\n v-model=\"bottomHeight\"\n data-test=\"classification-banner-bottom-height\"\n />\n </v-col>\n </v-row>\n </v-container>\n </v-card-text>\n <v-card-actions>\n <v-container class=\"pt-0\">\n <v-row dense>\n <v-col class=\"pl-0\">\n <v-btn\n :disabled=\"!formValid\"\n @click=\"save\"\n color=\"success\"\n text\n data-test=\"save-classification-banner\"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"errorSaving\" type=\"error\" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model=\"successSaving\" type=\"success\" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n</template>\n\n<script>\nimport axios from 'axios'\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\n\nconst settingName = 'classification_banner'\nexport default {\n data() {\n return {\n api: null,\n errorLoading: false,\n errorSaving: false,\n successSaving: false,\n text: '',\n displayTopBanner: false,\n displayBottomBanner: false,\n topHeight: 0,\n bottomHeight: 0,\n selectedBackgroundColor: 'red',\n customBackgroundColor: '',\n selectedFontColor: 'white',\n customFontColor: '',\n customColorHint: 'Enter a 3 or 6-digit hex color code',\n colors: [\n {\n text: 'Yellow',\n value: 'yellow',\n },\n {\n text: 'Orange',\n value: 'orange',\n },\n {\n text: 'Red',\n value: 'red',\n },\n {\n text: 'Purple',\n value: 'purple',\n },\n {\n text: 'Blue',\n value: 'blue',\n },\n {\n text: 'Green',\n value: 'green',\n },\n {\n text: 'Black',\n value: 'black',\n },\n {\n text: 'White',\n value: 'white',\n },\n {\n text: 'Custom',\n value: false,\n },\n ],\n rules: {\n customColor: (value) => {\n return (\n /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value) || this.customColorHint\n )\n },\n },\n }\n },\n computed: {\n saveObj: function () {\n return JSON.stringify({\n text: this.text,\n fontColor: this.selectedFontColor || this.customFontColor,\n backgroundColor:\n this.selectedBackgroundColor || this.customBackgroundColor,\n topHeight: this.displayTopBanner ? this.topHeight : 0,\n bottomHeight: this.displayBottomBanner ? this.bottomHeight : 0,\n })\n },\n formValid: function () {\n return (\n (this.selectedFontColor ||\n this.rules.customColor(this.customFontColor) === true) &&\n (this.selectedBackgroundColor ||\n this.rules.customColor(this.customBackgroundColor) === true)\n )\n },\n },\n watch: {\n customFontColor: function (val) {\n if (val && val.length && !val.startsWith('#')) {\n this.customFontColor = `#${val}`\n }\n },\n customBackgroundColor: function (val) {\n if (val && val.length && !val.startsWith('#')) {\n this.customBackgroundColor = `#${val}`\n }\n },\n },\n created() {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting(settingName)\n .then((response) => {\n this.errorLoading = false\n if (response) {\n const parsed = JSON.parse(response)\n this.text = parsed.text\n this.topHeight = parsed.topHeight\n this.bottomHeight = parsed.bottomHeight\n this.displayTopBanner = parsed.topHeight !== 0\n this.displayBottomBanner = parsed.bottomHeight !== 0\n if (\n parsed.backgroundColor &&\n parsed.backgroundColor.startsWith('#')\n ) {\n this.customBackgroundColor = parsed.backgroundColor\n this.selectedBackgroundColor = false\n } else {\n this.selectedBackgroundColor = parsed.backgroundColor\n }\n if (parsed.fontColor && parsed.fontColor.startsWith('#')) {\n this.customFontColor = parsed.fontColor\n this.selectedFontColor = false\n } else {\n this.selectedFontColor = parsed.fontColor\n }\n }\n })\n .catch((error) => {\n //console.error(error)\n this.errorLoading = true\n })\n },\n save: function () {\n this.api\n .save_setting(settingName, this.saveObj)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n //console.error(error)\n this.errorSaving = true\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ClassificationBannerSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ClassificationBannerSettings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClassificationBannerSettings.vue?vue&type=template&id=4f08cb8c&\"\nimport script from \"./ClassificationBannerSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ClassificationBannerSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/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\n<template>\n <div>\n <v-card>\n <v-card-title> Reset suppressed warnings </v-card-title>\n <v-card-subtitle>\n This resets \"don't show this again\" dialogs on this browser\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <template v-if=\"suppressedWarnings.length\">\n <v-checkbox\n v-model=\"selectAllSuppressedWarnings\"\n label=\"Select all\"\n class=\"mt-0\"\n data-test=\"select-all-suppressed-warnings\"\n />\n <v-checkbox\n v-for=\"warning in suppressedWarnings\"\n :key=\"warning.key\"\n v-model=\"selectedSuppressedWarnings\"\n :label=\"warning.text\"\n :value=\"warning.key\"\n class=\"mt-0\"\n dense\n />\n </template>\n <template v-else> No warnings to reset </template>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled=\"!selectedSuppressedWarnings.length\"\n @click=\"resetSuppressedWarnings\"\n color=\"warning\"\n text\n class=\"ml-2\"\n data-test=\"reset-suppressed-warnings\"\n >\n Reset\n </v-btn>\n </v-card-actions>\n </v-card>\n <v-divider />\n <v-card>\n <v-card-title> Clear recent configs </v-card-title>\n <v-card-subtitle>\n This clears the most recently saved/loaded tool configs on this browser\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <template v-if=\"lastConfigs.length\">\n <v-checkbox\n v-model=\"selectAllLastConfigs\"\n label=\"Select all\"\n class=\"mt-0\"\n data-test=\"select-all-last-configs\"\n />\n <v-checkbox\n v-for=\"config in lastConfigs\"\n :key=\"config.key\"\n v-model=\"selectedLastConfigs\"\n :label=\"`${config.text} (${config.value})`\"\n :value=\"config.key\"\n class=\"mt-0\"\n dense\n />\n </template>\n <template v-else> No configs to clear </template>\n </v-card-text>\n <v-card-actions>\n <v-btn\n :disabled=\"!selectedLastConfigs.length\"\n @click=\"clearLastConfigs\"\n color=\"warning\"\n text\n class=\"ml-2\"\n data-test=\"clear-last-configs\"\n >\n Clear\n </v-btn>\n </v-card-actions>\n </v-card>\n <v-divider />\n <classification-banner-settings />\n <v-divider />\n <v-card>\n <v-card-title> Source code URL </v-card-title>\n <v-card-subtitle>\n This sets the URL for the \"Source\" link in the footer. This is required\n under the AGPL license.\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n label=\"Source URL\"\n v-model=\"sourceUrl\"\n data-test=\"source-url\"\n />\n </v-card-text>\n <v-card-actions>\n <v-container class=\"pt-0\">\n <v-row dense>\n <v-col class=\"pl-0\">\n <v-btn\n @click=\"saveSourceUrl\"\n color=\"success\"\n text\n data-test=\"save-source-url\"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"errorSaving\" type=\"error\" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model=\"successSaving\" type=\"success\" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n <v-divider />\n <v-card>\n <v-card-title> Rubygems URL </v-card-title>\n <v-card-subtitle>\n This sets the URL for installing dependency rubygems. Also used for\n rubygem discovery.\n </v-card-subtitle>\n <v-card-text class=\"pb-0 ml-2\">\n <v-text-field\n label=\"Rubygems URL\"\n v-model=\"rubygemsUrl\"\n data-test=\"rubygems-url\"\n />\n </v-card-text>\n <v-card-actions>\n <v-container class=\"pt-0\">\n <v-row dense>\n <v-col class=\"pl-0\">\n <v-btn\n @click=\"saveRubygemsUrl\"\n color=\"success\"\n text\n data-test=\"save-rubygems-url\"\n >\n Save\n </v-btn>\n </v-col>\n </v-row>\n <v-alert v-model=\"errorSaving\" type=\"error\" dismissible dense>\n Error saving\n </v-alert>\n <v-alert v-model=\"successSaving\" type=\"success\" dismissible dense>\n Saved! (Refresh the page to see changes)\n </v-alert>\n </v-container>\n </v-card-actions>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\nimport ClassificationBannerSettings from '@/tools/OpenC3Admin/ClassificationBannerSettings.vue'\n\nexport default {\n components: {\n ClassificationBannerSettings,\n },\n data() {\n return {\n api: new OpenC3Api(),\n suppressedWarnings: [],\n selectedSuppressedWarnings: [],\n selectAllSuppressedWarnings: false,\n lastConfigs: [],\n selectedLastConfigs: [],\n selectAllLastConfigs: false,\n sourceUrl: '',\n rubygemsUrl: '',\n errorSaving: false,\n successSaving: false,\n }\n },\n watch: {\n selectAllSuppressedWarnings: function (val) {\n if (val) {\n this.selectedSuppressedWarnings = this.suppressedWarnings.map(\n (warning) => warning.key\n )\n } else {\n this.selectedSuppressedWarnings = []\n }\n },\n selectAllLastConfigs: function (val) {\n if (val) {\n this.selectedLastConfigs = this.lastConfigs.map((config) => config.key)\n } else {\n this.selectedLastConfigs = []\n }\n },\n },\n created() {\n this.loadSuppressedWarnings()\n this.loadLastConfigs()\n this.loadSourceUrl()\n this.loadRubygemsUrl()\n },\n methods: {\n loadSuppressedWarnings: function () {\n this.suppressedWarnings = Object.keys(localStorage)\n .filter((key) => {\n return key.startsWith('suppresswarning__')\n })\n .map(this.localStorageKeyToDisplayObject)\n this.selectedSuppressedWarnings = []\n },\n resetSuppressedWarnings: function () {\n this.deleteLocalStorageKeys(this.selectedSuppressedWarnings)\n this.loadSuppressedWarnings()\n },\n loadLastConfigs: function () {\n this.lastConfigs = Object.keys(localStorage)\n .filter((key) => {\n return key.startsWith('lastconfig__')\n })\n .map(this.localStorageKeyToDisplayObject)\n this.selectedLastConfigs = []\n },\n clearLastConfigs: function () {\n this.deleteLocalStorageKeys(this.selectedLastConfigs)\n this.loadLastConfigs()\n },\n deleteLocalStorageKeys: function (keys) {\n for (const key of keys) {\n delete localStorage[key]\n }\n },\n localStorageKeyToDisplayObject: function (key) {\n const name = key.split('__')[1].replaceAll('_', ' ')\n return {\n key,\n text: name.charAt(0).toUpperCase() + name.slice(1),\n value: localStorage[key],\n }\n },\n loadSourceUrl: function () {\n this.api\n .get_setting('source_url')\n .then((response) => {\n this.sourceUrl = response\n })\n .catch(() => {\n this.sourceUrl = 'https://github.com/OpenC3/openc3'\n })\n },\n saveSourceUrl: function () {\n this.api\n .save_setting('source_url', this.sourceUrl)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n this.errorSaving = true\n })\n },\n loadRubygemsUrl: function () {\n this.api\n .get_setting('rubygems_url')\n .then((response) => {\n this.rubygemsUrl = response\n })\n .catch(() => {\n this.rubygemsUrl = 'https://rubygems.org'\n })\n },\n saveRubygemsUrl: function () {\n this.api\n .save_setting('rubygems_url', this.rubygemsUrl)\n .then((response) => {\n this.errorSaving = false\n this.successSaving = true\n })\n .catch((error) => {\n this.errorSaving = true\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/@vue/cli-plugin-babel/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/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SettingsTab.vue?vue&type=template&id=ea8d7ea4&\"\nimport script from \"./SettingsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SettingsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/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 defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var intMaxLength = toLength(maxLength);\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (searchValue != null) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["vueInstance","Vue","axiosInstance","axios","baseURL","location","origin","timeout","params","interceptors","response","use","error","status","localStorage","openc3Token","OpenC3Auth","login","href","axiosIgnoreResponse","toString","Promise","reject","body","statusText","config","data","message","exception","class","$notify","serious","title","render","_vm","this","_h","$createElement","_c","_self","_v","staticClass","suppressedWarnings","attrs","model","value","callback","$$v","selectAllSuppressedWarnings","expression","_l","warning","key","text","selectedSuppressedWarnings","length","on","resetSuppressedWarnings","lastConfigs","selectAllLastConfigs","selectedLastConfigs","clearLastConfigs","sourceUrl","saveSourceUrl","errorSaving","successSaving","rubygemsUrl","saveRubygemsUrl","staticRenderFns","_readOnlyError","name","TypeError","OpenC3Api","method","kwparams","updateToken","defaultMinValidity","id","scope","jsonrpc","keyword_params","headers","Authorization","result","err","Error","request","val","json_class","raw","NaN","Infinity","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","target_commands","target","packet","item","log_writer_name","limits_set","target_name","packet_name","value_type","type","len","converted","i","decode_openc3_type","items","item_name","command_name","parameter_name","param_list","Object","prototype","hasOwnProperty","call","encode_openc3_type","undefined","_cmd","tool","ignored","array","string","window","isSecureContext","arrayBuffer","TextEncoder","encode","crypto","subtle","digest","hashAsArrayBuffer","uint8ViewOfHash","Uint8Array","Array","from","map","b","padStart","join","errorLoading","colors","scopedSlots","_u","fn","selectedBackgroundColor","proxy","_e","_s","customColorHint","rules","customColor","directives","rawName","customBackgroundColor","selectedFontColor","customFontColor","displayTopBanner","topHeight","displayBottomBanner","bottomHeight","formValid","save","api","computed","saveObj","fontColor","backgroundColor","watch","created","methods","load","get_setting","settingName","then","parsed","catch","save_setting","component","components","ClassificationBannerSettings","loadSuppressedWarnings","filter","loadLastConfigs","deleteLocalStorageKeys","keys","localStorageKeyToDisplayObject","loadSourceUrl","loadRubygemsUrl","defineBuiltIn","module","exports","src","options","userAgent","test","uncurryThis","toLength","$repeat","requireObjectCoercible","repeat","stringSlice","slice","ceil","Math","createMethod","IS_END","$this","maxLength","fillString","fillLen","stringFiller","S","intMaxLength","stringLength","fillStr","start","end","$","$padStart","WEBKIT_BUG","proto","forced","arguments","isCallable","isRegExp","getMethod","getRegExpFlags","getSubstitution","wellKnownSymbol","IS_PURE","REPLACE","$TypeError","indexOf","replace","max","stringIndexOf","searchValue","fromIndex","replaceAll","replaceValue","IS_REG_EXP","flags","replacer","searchString","functionalReplace","searchLength","advanceBy","replacement","O","position","endOfLastMatch","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","isArray","unsupportedIterableToArray","F","s","n","done","e","f","normalCompletion","didErr","step","next","_e2"],"sourceRoot":""}