cosmosc2-tool-limitsmonitor 5.0.2.pre.beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/508.js","mappings":"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","sources":["webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsMonitor.vue?d0ab","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsControl.vue?0899","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/services/axios.js","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/services/cosmos-api.js","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?cd0d","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/Widget.js","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?f72a","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?1e32","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?800c","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?26e5","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/VWidget.js","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue?88c8","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue?7eb0","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue?fdbd","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?5139","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?0a72","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?4fd8","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvalueWidget.vue?19fc","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?00b3","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?2de4","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?584c","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?56ec","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?cc59","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelvaluelimitsbarWidget.vue?495e","webpack://@cosmosc2/tool-limitsmonitor/src/tools/LimitsMonitor/LimitsControl.vue","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsControl.vue?24af","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsControl.vue","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsEvents.vue?0d0a","webpack://@cosmosc2/tool-limitsmonitor/src/tools/LimitsMonitor/LimitsEvents.vue","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsEvents.vue?ced5","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsEvents.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue?228d","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue?adab","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue?dfc0","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/services/cable.js","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?d129","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?b667","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/OpenConfigDialog.vue?6158","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?36c2","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?e52f","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/SaveConfigDialog.vue?65b7","webpack://@cosmosc2/tool-limitsmonitor/src/tools/LimitsMonitor/LimitsMonitor.vue","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsMonitor.vue?0b10","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsMonitor.vue","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue?82b3","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue?b2db","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?6b70","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsControl.vue?8476","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?cdf2","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?9001","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsEvents.vue?a2c4","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/DetailsDialog.vue?dfc1","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/TopBar.vue?5429","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LabelWidget.vue?b8ed","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsControl.vue?fee4","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/LimitsbarWidget.vue?30f4","webpack://@cosmosc2/tool-limitsmonitor/../cosmosc2-tool-common/src/components/widgets/ValueWidget.vue?2dbb","webpack://@cosmosc2/tool-limitsmonitor/./src/tools/LimitsMonitor/LimitsEvents.vue?dd36"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_c('v-card',[_c('v-tabs',{attrs:{\"fixed-tabs\":\"\"},model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},_vm._l((_vm.tabs),function(tab,index){return _c('v-tab',{key:index},[_vm._v(_vm._s(tab))])}),1),_c('v-tabs-items',{model:{value:(_vm.curTab),callback:function ($$v) {_vm.curTab=$$v},expression:\"curTab\"}},[_c('v-tab-item',{attrs:{\"eager\":\"\"}},[_c('keep-alive',[_c('limits-control',{key:_vm.renderKey,ref:\"control\",model:{value:(_vm.ignored),callback:function ($$v) {_vm.ignored=$$v},expression:\"ignored\"}})],1)],1),_c('v-tab-item',{attrs:{\"eager\":\"\"}},[_c('keep-alive',[_c('limits-events',{ref:\"events\"})],1)],1)],1)],1),(_vm.openConfig)?_c('open-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":_vm.openConfiguration},model:{value:(_vm.openConfig),callback:function ($$v) {_vm.openConfig=$$v},expression:\"openConfig\"}}):_vm._e(),(_vm.saveConfig)?_c('save-config-dialog',{attrs:{\"tool\":_vm.toolName},on:{\"success\":_vm.saveConfiguration},model:{value:(_vm.saveConfig),callback:function ($$v) {_vm.saveConfig=$$v},expression:\"saveConfig\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-text-field',{class:_vm.textFieldClass,attrs:{\"width\":\"200\",\"dense\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"label\":\"Overall Limits State\",\"value\":_vm.overallStateFormatted,\"data-test\":\"overall-state\"}})],1),_vm._l((_vm.items),function(item,index){return _c('div',{key:item.key},[_c('v-row',{staticClass:\"my-0\",attrs:{\"data-test\":\"limits-row\"}},[_c('v-col',{staticClass:\"py-1\"},[(item.limits)?_c('labelvaluelimitsbar-widget',{attrs:{\"parameters\":item.parameters,\"settings\":[\n ['0', 'WIDTH', '150'],\n ['1', 'WIDTH', '200'],\n ['2', 'WIDTH', '200'] ]}}):_c('labelvalue-widget',{attrs:{\"parameters\":item.parameters,\"settings\":[\n ['0', 'WIDTH', '150'],\n ['1', 'WIDTH', '200'] ]}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"2\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-2\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.ignorePacket(item.key)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\" mdi-close-circle-multiple \")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Ignore Entire Packet\")])]),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-2\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.ignoreItem(item.key)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\" mdi-close-circle \")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Ignore Item\")])]),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-2\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.removeItem(item.key)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\" mdi-eye-off \")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Temporarily Hide Item\")])])],1)],1),(index < _vm.items.length - 1)?_c('v-divider',{key:index}):_vm._e()],1)})],2),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.ignoredItemsDialog),callback:function ($$v) {_vm.ignoredItemsDialog=$$v},expression:\"ignoredItemsDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Ignored Items\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"my-2\"},[_vm._l((_vm.ignoredFormatted),function(item,index){return _c('div',{key:index},[_c('v-row',{staticClass:\"ma-1\"},[_c('span',{staticClass:\"font-weight-black\"},[_vm._v(\" \"+_vm._s(item)+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"small\":\"\",\"icon\":\"\",\"data-test\":(\"remove-ignore-\" + index)},on:{\"click\":function($event){return _vm.restoreItem(item, index)}}},[_c('v-icon',[_vm._v(\" mdi-delete \")])],1)],1),(index < _vm.ignoredFormatted.length - 1)?_c('v-divider',{key:index}):_vm._e()],1)}),_c('v-row',{staticClass:\"mt-2\"},[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.ignoredItemsDialog = false}}},[_vm._v(\" Ok \")])],1),(_vm.index < _vm.items.length - 1)?_c('v-divider',{key:_vm.index}):_vm._e()],2)])],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\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: 10000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response.status === 401) {\n delete localStorage.cosmosToken\n CosmosAuth.login(location.href)\n } else {\n let body = `HTTP ${error.response.status} - `\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 }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nexport class CosmosApi {\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 CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\n const response = await axios.post(\n '/cosmos-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.cosmosToken,\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_cosmos_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_cosmos_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_all_cmd_info() {\n return this.exec('get_all_cmd_info', [])\n }\n\n get_all_tlm_info() {\n return this.exec('get_all_tlm_info', [])\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 // 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_cosmos_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 CosmosScreenComponent\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_cosmos_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_cosmos_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_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\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_cosmos_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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\"},[_c('label-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.labelName,\"settings\":_vm.settings,\"widget-index\":0}}),_c('value-widget',{style:(_vm.computedStyle),attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings,\"widget-index\":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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nexport default {\n props: {\n widgetIndex: {\n type: Number,\n default: null,\n },\n parameters: {\n type: Array,\n default: () => [],\n },\n settings: {\n type: Array,\n default: () => [],\n },\n },\n computed: {\n computedStyle() {\n let style = {}\n this.settings.forEach((setting) => {\n const index = parseInt(setting[0])\n if (this.widgetIndex !== null) {\n if (this.widgetIndex === index) {\n setting = setting.slice(1)\n } else {\n return\n }\n }\n switch (setting[0]) {\n case 'TEXTALIGN':\n style['text-align'] = setting[1].toLowerCase()\n break\n case 'PADDING':\n style['padding'] = setting[1] + 'px !important'\n break\n case 'MARGIN':\n style['margin'] = setting[1] + 'px !important'\n break\n case 'BACKCOLOR':\n style['background-color'] = this.getColor(setting.slice(1))\n break\n case 'TEXTCOLOR':\n style['color'] = this.getColor(setting.slice(1))\n break\n case 'BORDERCOLOR':\n style['border-width'] = '1px'\n style['border-style'] = 'solid'\n style['border-color'] = this.getColor(setting.slice(1))\n break\n case 'WIDTH':\n style['width'] = setting[1] + 'px !important'\n break\n case 'HEIGHT':\n style['height'] = setting[1] + 'px !important'\n break\n case 'RAW':\n style[setting[1].toLowerCase()] = setting[2]\n break\n }\n })\n return style\n },\n },\n methods: {\n // Expects an array, can either be a single color or 3 rgb values\n getColor(setting) {\n switch (setting.length) {\n case 1:\n return setting[0].toLowerCase()\n case 3:\n return `rgb(${setting[0]},${setting[1]},${setting[2]})`\n }\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"pa-1 mt-1 label\",style:([_vm.cssProps, _vm.computedStyle]),attrs:{\"data-test\":\"label\"}},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])}\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <span\n data-test=\"label\"\n class=\"pa-1 mt-1 label\"\n :style=\"[cssProps, computedStyle]\"\n >\n {{ labelText }}\n </span>\n</template>\n\n<script>\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n fontFamily: null,\n fontSize: null,\n fontWeight: 'normal',\n fontStyle: 'normal',\n }\n },\n computed: {\n labelText() {\n return this.parameters[0]\n },\n cssProps() {\n var size = null\n if (this.fontSize) {\n size = this.fontSize + 'px'\n }\n return {\n '--font-family': this.fontFamily,\n '--font-size': size,\n '--font-weight': this.fontWeight,\n '--font-style': this.fontStyle,\n }\n },\n },\n created() {\n if (this.parameters[1]) {\n this.fontFamily = this.parameters[1]\n }\n if (this.parameters[2]) {\n this.fontSize = this.parameters[2]\n }\n if (this.parameters[3]) {\n this.fontWeight = this.parameters[3]\n }\n if (this.parameters[4]) {\n this.fontStyle = this.parameters[4]\n }\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-family: var(--font-family);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n font-style: var(--font-style);\n}\n</style>\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelWidget.vue?vue&type=template&id=1ff40000&scoped=true&\"\nimport script from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\"\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 \"1ff40000\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"value-widget-container\"},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({class:_vm.valueClass,style:(_vm.computedStyle),attrs:{\"solo\":\"\",\"dense\":\"\",\"readonly\":\"\",\"single-line\":\"\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"placeholder\":\"Value\",\"value\":_vm._value,\"data-test\":\"value\"},on:{\"contextmenu\":_vm.showContextMenu}},'v-text-field',attrs,false),on))]}}])},[_c('span',[_vm._v(_vm._s(_vm.fullName))])]),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.parameters[0],\"packet-name\":_vm.parameters[1],\"item-name\":_vm.parameters[2]},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}})],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport Widget from './Widget'\nimport 'sprintf-js'\nexport default {\n mixins: [Widget],\n // ValueWidget can either get it's value and limitsState directly through props\n // or it will register itself in the Vuex store and be updated asyncronously\n props: {\n value: {\n default: null,\n },\n limitsState: {\n type: String,\n default: null,\n },\n formatString: null,\n },\n data() {\n return {\n valueId: null,\n colorBlind: false,\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n this.parameters[0] +\n '/' +\n this.parameters[1] +\n '/' +\n this.parameters[2],\n '_blank'\n )\n },\n },\n ],\n }\n },\n computed: {\n _value: function () {\n let value = this.value\n if (value === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n value = this.$store.state.tlmViewerValues[this.valueId][0]\n } else {\n value = null\n }\n }\n const formatted = this.formatValue(value)\n if (localStorage.colorblindMode === 'true' && this.limitsLetter !== '') {\n return `${formatted} (${this.limitsLetter})`\n }\n return formatted\n },\n valueClass: function () {\n return 'value shrink pa-1 ' + 'cosmos-' + this.limitsColor\n },\n limitsColor() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n switch (limitsState) {\n case 'GREEN':\n case 'GREEN_HIGH':\n case 'GREEN_LOW':\n return 'green'\n case 'YELLOW':\n case 'YELLOW_HIGH':\n case 'YELLOW_LOW':\n return 'yellow'\n case 'RED':\n case 'RED_HIGH':\n case 'RED_LOW':\n return 'red'\n case 'BLUE':\n return 'blue'\n case 'STALE':\n return 'purple'\n default:\n return 'white'\n }\n }\n return ''\n },\n limitsLetter() {\n let limitsState = this.limitsState\n if (limitsState === null) {\n if (this.$store.state.tlmViewerValues[this.valueId]) {\n limitsState = this.$store.state.tlmViewerValues[this.valueId][1]\n } else {\n limitsState = null\n }\n }\n if (limitsState != null) {\n let c = limitsState.charAt(0)\n if (limitsState.endsWith('_LOW')) {\n c = c.toLowerCase()\n }\n return c\n }\n return ''\n },\n },\n created() {\n // If they're not passing us the value and limitsState we have to register\n if (this.value === null || this.limitsState === null) {\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${\n this.parameters[2]\n }__${this.getType()}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n }\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n },\n methods: {\n getType() {\n var type = 'WITH_UNITS'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n return type\n },\n formatValue(value) {\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n let result = '['\n for (let i = 0; i < value.length; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n result += '\"' + value[i] + '\"'\n } else {\n result += value[i]\n }\n if (i != value.length - 1) {\n result += ', '\n }\n }\n result += ']'\n return result\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n return ''\n } else {\n if (this.formatString && value) {\n return sprintf(this.formatString, value)\n } else {\n return '' + value\n }\n }\n },\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Details </span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-title>\n {{ targetName }} {{ packetName }} {{ itemName }}\n </v-card-title>\n <v-card-subtitle>{{ details.description }}</v-card-subtitle>\n <v-card-text>\n <v-container fluid>\n <v-row no-gutters v-if=\"type === 'tlm'\">\n <v-col cols=\"3\" class=\"label\">Item Values</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Raw Value</v-col>\n <v-col>{{ rawValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Converted Value</v-col>\n <v-col>{{ convertedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Formatted Value</v-col>\n <v-col>{{ formattedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">With Units Value</v-col>\n <v-col>{{ unitsValue }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Offset</v-col>\n <v-col>{{ details.bit_offset }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Size</v-col>\n <v-col>{{ details.bit_size }}</v-col>\n </v-row>\n <v-row v-if=\"details.array_size\" no-gutters>\n <v-col cols=\"3\" class=\"label\">Array Size</v-col>\n <v-col>{{ details.array_size }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Data Type</v-col>\n <v-col>{{ details.data_type }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Minimum</v-col>\n <v-col>{{ details.minimum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Maximum</v-col>\n <v-col>{{ details.maximum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Default</v-col>\n <v-col>{{ details.default }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Format String</v-col>\n <v-col>{{ details.format_string }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Read Conversion</v-col>\n <v-col v-if=\"details.read_conversion\">\n Class: {{ details.read_conversion.class }}\n <br />\n Params:\n {{ details.read_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Write Conversion</v-col>\n <v-col v-if=\"details.write_conversion\">\n Class: {{ details.write_conversion.class }}\n <br />\n Params:\n {{ details.write_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Id Value</v-col>\n <v-col>{{ details.id_value }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Full</v-col>\n <v-col>{{ details.units_full }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Abbr</v-col>\n <v-col>{{ details.units }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Endianness</v-col>\n <v-col>{{ details.endianness }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.states\">\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(state, key) in details.states\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ state.value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.limits\">\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(limit, key) in details.limits\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n {{ formatLimit(limit) }}\n <v-col></v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.meta\">\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters v-for=\"(value, key) in details.meta\" :key=\"key\">\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row v-else no-gutters>\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col>None</v-col>\n </v-row>\n </v-container>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n type: {\n default: 'tlm',\n validator: function (value) {\n // The value must match one of these strings\n return ['cmd', 'tlm'].indexOf(value) !== -1\n },\n },\n targetName: String,\n packetName: String,\n itemName: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n details: Object,\n updater: null,\n rawValue: null,\n convertedValue: null,\n formattedValue: null,\n unitsValue: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n created() {\n this.api = new CosmosApi()\n },\n beforeDestroy() {\n clearInterval(this.updater)\n this.updater = null\n },\n watch: {\n // Create a watcher on value which is the indicator to display the dialog\n // If value is true we request the details from the server\n // If this is a tlm dialog we setup an interval to get the telemetry values\n value: function (newValue, oldValue) {\n if (newValue) {\n this.requestDetails()\n if (this.type === 'tlm') {\n this.updater = setInterval(() => {\n this.api\n .get_tlm_values([\n `${this.targetName}__${this.packetName}__${this.itemName}__RAW`,\n `${this.targetName}__${this.packetName}__${this.itemName}__CONVERTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__FORMATTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__WITH_UNITS`,\n ])\n .then((values) => {\n this.rawValue = values[0][0]\n this.convertedValue = values[1][0]\n this.formattedValue = values[2][0]\n this.unitsValue = values[3][0]\n })\n }, 1000)\n }\n } else {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n },\n methods: {\n requestDetails() {\n if (this.type === 'tlm') {\n this.api\n .get_item(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n } else {\n this.api\n .get_parameter(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n }\n },\n formatLimit(limit) {\n if (limit.green_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high +\n ' GL/' +\n limit.green_low +\n ' GH/' +\n limit.green_high\n )\n } else if (limit.red_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high\n )\n } else {\n return limit\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-weight: bold;\n text-transform: capitalize;\n}\n</style>\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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=3eb9665d&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\"\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 \"3eb9665d\",\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"value-widget-container\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-text-field\n solo\n dense\n readonly\n single-line\n hide-no-data\n hide-details\n placeholder=\"Value\"\n :value=\"_value\"\n :class=\"valueClass\"\n :style=\"computedStyle\"\n data-test=\"value\"\n @contextmenu=\"showContextMenu\"\n v-bind=\"attrs\"\n v-on=\"on\"\n />\n </template>\n <span>{{ fullName }}</span>\n </v-tooltip>\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport VWidget from './VWidget'\nimport DetailsDialog from '../../components/DetailsDialog'\nexport default {\n components: {\n DetailsDialog,\n },\n mixins: [VWidget],\n computed: {\n fullName() {\n return (\n this.parameters[0] + ' ' + this.parameters[1] + ' ' + this.parameters[2]\n )\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.value-widget-container {\n min-height: 34px;\n}\n.value ::v-deep div {\n min-height: 24px !important;\n display: flex !important;\n align-items: center !important;\n}\n// TODO: These cosmos styles are also defined in assets/stylesheets/layout/_overrides.scss\n// Can they somehow be reused here? We need to force the style down into the input\n.cosmos-green ::v-deep input {\n color: rgb(0, 150, 0);\n}\n.cosmos-yellow ::v-deep input {\n color: rgb(190, 135, 0);\n}\n.cosmos-red ::v-deep input {\n color: red;\n}\n.cosmos-blue ::v-deep input {\n color: rgb(0, 100, 255);\n}\n.cosmos-purple ::v-deep input {\n color: rgb(200, 0, 200);\n}\n.cosmos-black ::v-deep input {\n color: black;\n}\n.cosmos-white ::v-deep input {\n color: white;\n}\n</style>\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValueWidget.vue?vue&type=template&id=d1470e40&scoped=true&\"\nimport script from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ValueWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\"\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 \"d1470e40\",\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div ref=\"container\" class=\"d-flex flex-row\">\n <label-widget\n :parameters=\"labelName\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"0\"\n />\n <value-widget\n :parameters=\"parameters\"\n :settings=\"settings\"\n :style=\"computedStyle\"\n :widget-index=\"1\"\n />\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport LabelWidget from './LabelWidget.vue'\nimport ValueWidget from './ValueWidget.vue'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelWidget,\n ValueWidget,\n },\n computed: {\n labelName() {\n // LabelWidget uses index 0 from the parameters prop\n // so create an array with the label text in the first position\n return [this.parameters[2] + ':']\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvalueWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvalueWidget.vue?vue&type=template&id=13602869&\"\nimport script from \"./LabelvalueWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvalueWidget.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 render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"d-flex flex-row\",style:([_vm.defaultStyle, _vm.computedStyle])},[_c('labelvalue-widget',{attrs:{\"parameters\":_vm.parameters,\"settings\":_vm.settings}}),_c('limitsbar-widget',{attrs:{\"parameters\":_vm.limitsBarParameters,\"settings\":_vm.settings.filter(function (x) { return x[0] == 1; }).map(function (x) { return x.slice(1); }),\"widget-index\":3}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar\",style:([_vm.cssProps, _vm.computedStyle])},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limitsbar__container\"},[_c('div',{staticClass:\"limitsbar__redlow\"}),_c('div',{staticClass:\"limitsbar__redhigh\"}),_c('div',{staticClass:\"limitsbar__yellowlow\"}),_c('div',{staticClass:\"limitsbar__yellowhigh\"}),_c('div',{staticClass:\"limitsbar__greenlow\"}),_c('div',{staticClass:\"limitsbar__greenhigh\"}),_c('div',{staticClass:\"limitsbar__blue\"}),_c('div',{staticClass:\"limitsbar__line\"}),_c('div',{staticClass:\"limitsbar__arrow\"})])}]\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Widget from './Widget'\nimport { CosmosApi } from '../../services/cosmos-api.js'\n\nconst DEFAULT_LIMITS_SET = 'DEFAULT'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n width: '100%', // users will override with px\n height: 20, // px\n minValue: null,\n maxValue: null,\n scale: 0,\n redLow: 0,\n yellowLow: 0,\n greenLow: 0,\n greenHigh: 0,\n yellowHigh: 0,\n redHigh: 0,\n blue: 0,\n api: null,\n limitsSettings: {\n DEFAULT: [],\n },\n currentLimitsSet: DEFAULT_LIMITS_SET,\n currentSetRefreshInterval: null,\n }\n },\n computed: {\n cssProps: function () {\n const value = this.$store.state.tlmViewerValues[this.valueId][0]\n let limits = this.modifyLimits(\n this.limitsSettings[this.selectedLimitsSet]\n )\n this.calcLimits(limits)\n return {\n '--height': this.height + 'px',\n '--width': this.width,\n '--container-height': this.height - 5 + 'px',\n '--position': this.calcPosition(value, limits) + '%',\n '--redlow-width': this.redLow + '%',\n '--redhigh-width': this.redHigh + '%',\n '--yellowlow-width': this.yellowLow + '%',\n '--yellowhigh-width': this.yellowHigh + '%',\n '--greenlow-width': this.greenLow + '%',\n '--greenhigh-width': this.greenHigh + '%',\n '--blue-width': this.blue + '%',\n }\n },\n selectedLimitsSet: function () {\n return this.limitsSettings.hasOwnProperty(this.currentLimitsSet)\n ? this.currentLimitsSet\n : DEFAULT_LIMITS_SET\n },\n },\n created() {\n this.api = new CosmosApi()\n this.api\n .get_limits(this.parameters[0], this.parameters[1], this.parameters[2])\n .then((data) => {\n this.limitsSettings = data\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n\n this.settings.forEach((setting) => {\n if (setting[0] === 'MIN_VALUE') {\n this.minValue = parseInt(setting[1])\n }\n if (setting[0] === 'MAX_VALUE') {\n this.maxValue = parseInt(setting[1])\n }\n })\n\n let type = 'CONVERTED'\n if (this.parameters[3]) {\n type = this.parameters[3]\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${type}`\n\n this.$store.commit('tlmViewerAddItem', this.valueId)\n },\n destroyed() {\n this.$store.commit('tlmViewerDeleteItem', this.valueId)\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n modifyLimits(limitsSettings) {\n // By default the red bars take 10% of the display\n this.redLow = 10\n this.redHigh = 10\n\n // Modify values to respect the user defined minimum\n if (this.minValue) {\n if (limitsSettings[0] <= this.minValue) {\n limitsSettings[0] = this.minValue\n // No red low will be displayed\n this.redLow = 0\n }\n if (limitsSettings[1] <= this.minValue) {\n limitsSettings[1] = this.minValue\n }\n if (limitsSettings[2] <= this.minValue) {\n limitsSettings[2] = this.minValue\n }\n if (limitsSettings[3] <= this.minValue) {\n limitsSettings[3] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[4] <= this.minValue) {\n limitsSettings[4] = this.minValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] <= this.minValue) {\n limitsSettings[5] = this.minValue\n }\n }\n if (this.maxValue) {\n if (limitsSettings[0] >= this.maxValue) {\n limitsSettings[0] = this.maxValue\n }\n if (limitsSettings[1] >= this.maxValue) {\n limitsSettings[1] = this.maxValue\n }\n if (limitsSettings[2] >= this.maxValue) {\n limitsSettings[2] = this.maxValue\n }\n if (limitsSettings[3] >= this.maxValue) {\n limitsSettings[3] = this.maxValue\n // No red high will be displayed\n this.redHigh = 0\n }\n if (limitsSettings.length > 4 && limitsSettings[4] >= this.maxValue) {\n limitsSettings[4] = this.maxValue\n }\n if (limitsSettings.length > 4 && limitsSettings[5] >= this.maxValue) {\n limitsSettings[5] = this.maxValue\n }\n }\n // If the red low matches yellow low there is no red low\n if (limitsSettings[0] == limitsSettings[1]) {\n this.redLow = 0\n }\n // If the red high matches yellow high there is no red high\n if (limitsSettings[2] == limitsSettings[3]) {\n this.redHigh = 0\n }\n\n let divisor = 80\n if (this.redLow == 0) {\n divisor += 10\n }\n if (this.redHigh == 0) {\n divisor += 10\n }\n this.scale = (limitsSettings[3] - limitsSettings[0]) / divisor\n\n return limitsSettings\n },\n calcPosition(value, limitsSettings) {\n if (!value || !limitsSettings) {\n return\n }\n let lowValue = limitsSettings[0] - 10 * this.scale\n if (this.minValue && this.minValue == limitsSettings[0]) {\n lowValue = limitsSettings[0]\n }\n let highValue = limitsSettings[3] - 10 * this.scale\n if (this.maxValue && this.maxValue == limitsSettings[3]) {\n highValue = limitsSettings[3]\n }\n\n if (value.raw) {\n if (value.raw === '-Infinity') {\n return 0\n } else {\n // NaN and Infinity\n return 100\n }\n }\n if (value < this.min) {\n return 0\n } else if (value > this.max) {\n return 100\n } else {\n const result = parseInt((value - lowValue) / this.scale)\n if (result > 100) {\n return 100\n } else if (result < 0) {\n return 0\n } else {\n return result\n }\n }\n },\n calcLimits(limitsSettings) {\n if (!limitsSettings) {\n return\n }\n\n this.yellowLow = Math.round(\n (limitsSettings[1] - limitsSettings[0]) / this.scale\n )\n this.yellowHigh = Math.round(\n (limitsSettings[3] - limitsSettings[2]) / this.scale\n )\n if (limitsSettings.length > 4) {\n this.greenLow = Math.round(\n (limitsSettings[4] - limitsSettings[1]) / this.scale\n )\n this.greenHigh = Math.round(\n (limitsSettings[2] - limitsSettings[5]) / this.scale\n )\n this.blue = Math.round(\n 100 -\n this.redLow -\n this.yellowLow -\n this.greenLow -\n this.greenHigh -\n this.yellowHigh -\n this.redHigh\n )\n } else {\n this.greenLow = Math.round(\n 100 - this.redLow - this.yellowLow - this.yellowHigh - this.redHigh\n )\n this.greenHigh = 0\n this.blue = 0\n }\n },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px;\n width: var(--width);\n}\n.limitsbar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n.limitsbar__redlow {\n position: absolute;\n top: -1px;\n left: 0px;\n width: var(--redlow-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__redhigh {\n position: absolute;\n top: -1px;\n right: 0px;\n width: var(--redhigh-width);\n height: var(--container-height);\n background-color: red;\n}\n.limitsbar__yellowlow {\n position: absolute;\n top: -1px;\n left: var(--redlow-width);\n width: var(--yellowlow-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: -1px;\n right: var(--redhigh-width);\n width: var(--yellowhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n top: -1px;\n left: calc(var(--redlow-width) + var(--yellowlow-width));\n width: var(--greenlow-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: -1px;\n right: calc(var(--redhigh-width) + var(--yellowhigh-width));\n width: var(--greenhigh-width);\n height: var(--container-height);\n background-color: green;\n}\n.limitsbar__blue {\n position: absolute;\n top: -1px;\n left: calc(\n var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width)\n );\n width: var(--blue-width);\n height: var(--container-height);\n background-color: blue;\n}\n.limitsbar__line {\n position: absolute;\n left: var(--position);\n width: 1px;\n height: var(--container-height);\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.limitsbar__arrow {\n position: absolute;\n top: -$arrow-size;\n left: var(--position);\n width: 0;\n height: 0;\n transform: translateX(-$arrow-size); // Transform so it sits over the line\n border-left: $arrow-size solid transparent;\n border-right: $arrow-size solid transparent;\n border-top: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsbarWidget.vue?vue&type=template&id=4d506ea0&scoped=true&\"\nimport script from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsbarWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\"\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 \"4d506ea0\",\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div\n ref=\"container\"\n class=\"d-flex flex-row\"\n :style=\"[defaultStyle, computedStyle]\"\n >\n <labelvalue-widget :parameters=\"parameters\" :settings=\"settings\" />\n <limitsbar-widget\n :parameters=\"limitsBarParameters\"\n :settings=\"settings.filter((x) => x[0] == 1).map((x) => x.slice(1))\"\n :widget-index=\"3\"\n />\n </div>\n</template>\n\n<script>\nimport LabelvalueWidget from './LabelvalueWidget.vue'\nimport LimitsbarWidget from './LimitsbarWidget.vue'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n components: {\n LabelvalueWidget,\n LimitsbarWidget,\n },\n data() {\n return {\n overallWidth: '300px',\n }\n },\n created() {\n // Determine if any sub-setting widths have been given\n // If so calculate the overall width, if not the default will be used\n let width = 0\n this.settings.forEach((setting) => {\n if (setting[1] === 'WIDTH') {\n width += parseInt(setting[2])\n }\n })\n if (width != 0) {\n this.overallWidth = width + 'px'\n }\n },\n computed: {\n limitsBarParameters() {\n return [\n this.parameters[0],\n this.parameters[1],\n this.parameters[2],\n 'CONVERTED',\n ]\n },\n defaultStyle() {\n return {\n width: this.overallWidth,\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabelvaluelimitsbarWidget.vue?vue&type=template&id=272e68bc&\"\nimport script from \"./LabelvaluelimitsbarWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./LabelvaluelimitsbarWidget.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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-container>\n <v-row no-gutters>\n <v-text-field\n width=\"200\"\n dense\n outlined\n readonly\n label=\"Overall Limits State\"\n :value=\"overallStateFormatted\"\n :class=\"textFieldClass\"\n data-test=\"overall-state\"\n />\n </v-row>\n\n <div v-for=\"(item, index) in items\" :key=\"item.key\">\n <v-row data-test=\"limits-row\" class=\"my-0\">\n <v-col class=\"py-1\">\n <labelvaluelimitsbar-widget\n v-if=\"item.limits\"\n :parameters=\"item.parameters\"\n :settings=\"[\n ['0', 'WIDTH', '150'],\n ['1', 'WIDTH', '200'],\n ['2', 'WIDTH', '200'],\n ]\"\n />\n <labelvalue-widget\n v-else\n :parameters=\"item.parameters\"\n :settings=\"[\n ['0', 'WIDTH', '150'],\n ['1', 'WIDTH', '200'],\n ]\"\n />\n </v-col>\n <v-col cols=\"2\" class=\"py-1\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n class=\"mr-2\"\n @click=\"ignorePacket(item.key)\"\n v-bind=\"attrs\"\n v-on=\"on\"\n >\n <v-icon> mdi-close-circle-multiple </v-icon>\n </v-btn>\n </template>\n <span>Ignore Entire Packet</span>\n </v-tooltip>\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n class=\"mr-2\"\n @click=\"ignoreItem(item.key)\"\n v-bind=\"attrs\"\n v-on=\"on\"\n >\n <v-icon> mdi-close-circle </v-icon>\n </v-btn>\n </template>\n <span>Ignore Item</span>\n </v-tooltip>\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n class=\"mr-2\"\n @click=\"removeItem(item.key)\"\n v-bind=\"attrs\"\n v-on=\"on\"\n >\n <v-icon> mdi-eye-off </v-icon>\n </v-btn>\n </template>\n <span>Temporarily Hide Item</span>\n </v-tooltip>\n </v-col>\n </v-row>\n <v-divider v-if=\"index < items.length - 1\" :key=\"index\" />\n </div>\n </v-container>\n <v-dialog v-model=\"ignoredItemsDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span>Ignored Items</span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"my-2\">\n <div v-for=\"(item, index) in ignoredFormatted\" :key=\"index\">\n <v-row class=\"ma-1\">\n <span class=\"font-weight-black\"> {{ item }} </span>\n <v-spacer />\n <v-btn\n @click=\"restoreItem(item, index)\"\n small\n icon\n :data-test=\"`remove-ignore-${index}`\"\n >\n <v-icon> mdi-delete </v-icon>\n </v-btn>\n </v-row>\n <v-divider\n v-if=\"index < ignoredFormatted.length - 1\"\n :key=\"index\"\n />\n </div>\n <v-row class=\"mt-2\">\n <v-spacer />\n <v-btn\n @click=\"ignoredItemsDialog = false\"\n class=\"mx-2\"\n color=\"primary\"\n >\n Ok\n </v-btn>\n </v-row>\n <v-divider v-if=\"index < items.length - 1\" :key=\"index\" />\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport LabelvalueWidget from '@cosmosc2/tool-common/src/components/widgets/LabelvalueWidget'\nimport LabelvaluelimitsbarWidget from '@cosmosc2/tool-common/src/components/widgets/LabelvaluelimitsbarWidget'\n\nexport default {\n components: {\n LabelvalueWidget,\n LabelvaluelimitsbarWidget,\n },\n props: {\n value: {\n type: Array,\n default: () => [],\n },\n },\n data() {\n return {\n api: null,\n ignored: [],\n ignoredItemsDialog: false,\n overallState: 'GREEN',\n items: [],\n itemList: [],\n }\n },\n computed: {\n textFieldClass() {\n if (this.overallState) {\n return `textfield-${this.overallState.toLowerCase()}`\n } else {\n return ''\n }\n },\n overallStateFormatted() {\n if (this.ignored.length === 0) {\n return this.overallState\n } else {\n return `${this.overallState} (Some items ignored)`\n }\n },\n ignoredFormatted() {\n return this.ignored.map((x) => x.split('__').join(' '))\n },\n },\n created() {\n this.api = new CosmosApi()\n for (let item of this.value) {\n if (item.match(/.+__.+__.+/)) {\n // TARGET__PACKET__ITEM\n this.ignoreItem(item, true)\n } else {\n // TARGET__PACKET\n this.ignorePacket(item, true)\n }\n }\n this.updateOutOfLimits()\n },\n mounted() {\n this.updater = setInterval(() => {\n this.update()\n }, 1000)\n },\n destroyed() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n methods: {\n updateOutOfLimits() {\n this.api.get_out_of_limits().then((items) => {\n for (const item of items) {\n let itemName = item.join('__')\n // Skip ignored and existing items\n if (\n this.itemList.includes(itemName) ||\n this.ignored.find((ignored) => itemName.includes(ignored))\n ) {\n continue\n }\n\n this.itemList.push(itemName)\n let itemInfo = {\n key: item.slice(0, 3).join('__'),\n parameters: item.slice(0, 3),\n }\n if (item[3].includes('YELLOW') && this.overallState !== 'RED') {\n this.overallState = 'YELLOW'\n }\n if (item[3].includes('RED')) {\n this.overallState = 'RED'\n }\n if (item[3] == 'YELLOW' || item[3] == 'RED') {\n itemInfo['limits'] = false\n } else {\n itemInfo['limits'] = true\n }\n this.items.push(itemInfo)\n }\n this.calcOverallState()\n })\n },\n calcOverallState() {\n let overall = 'GREEN'\n for (let item of this.itemList) {\n if (this.ignored.find((ignored) => item.includes(ignored))) {\n continue\n }\n\n if (item.includes('YELLOW') && overall !== 'RED') {\n overall = 'YELLOW'\n }\n if (item.includes('RED')) {\n overall = 'RED'\n break\n }\n }\n this.overallState = overall\n },\n ignorePacket(item, noUpdate) {\n let [target_name, packet_name, item_name] = item.split('__')\n let newIgnored = `${target_name}__${packet_name}`\n this.ignored.push(newIgnored)\n noUpdate || this.updateIgnored()\n\n while (true) {\n let index = this.itemList.findIndex((item) => item.includes(newIgnored))\n if (index === -1) {\n break\n } else {\n let underIndex = this.itemList[index].lastIndexOf('__')\n this.removeItem(this.itemList[index].substring(0, underIndex))\n }\n }\n this.calcOverallState()\n },\n ignoreItem(item, noUpdate) {\n this.ignored.push(item)\n noUpdate || this.updateIgnored()\n this.removeItem(item)\n this.calcOverallState()\n },\n restoreItem(item, index) {\n this.ignored.splice(index, 1)\n this.updateIgnored()\n this.updateOutOfLimits()\n },\n removeItem(item) {\n const index = this.itemList.findIndex((arrayItem) =>\n arrayItem.includes(item)\n )\n this.items.splice(index, 1)\n this.itemList.splice(index, 1)\n },\n updateIgnored() {\n this.$emit('input', this.ignored)\n },\n update() {\n if (this.$store.state.tlmViewerItems.length !== 0) {\n this.api\n .get_tlm_values(this.$store.state.tlmViewerItems)\n .then((data) => {\n this.$store.commit('tlmViewerUpdateValues', data)\n })\n }\n },\n handleMessages(messages) {\n for (let message of messages) {\n // We only want to handle LIMITS_CHANGE messages\n // NOTE: The channel also sends LIMITS_SETTINGS and LIMITS_SET messages\n if (message.type != 'LIMITS_CHANGE') {\n continue\n }\n\n let itemName = `${message.target_name}__${message.packet_name}__${message.item_name}`\n const index = this.itemList.findIndex((arrayItem) =>\n arrayItem.includes(itemName)\n )\n // If we find an existing item we update the state and re-calc overall state\n if (index !== -1) {\n this.itemList[index] = `${itemName}__${message.new_limits_state}`\n this.calcOverallState()\n continue\n }\n // Skip ignored items\n if (this.ignored.find((ignored) => itemName.includes(ignored))) {\n continue\n }\n // Only process items who have gone out of limits\n if (\n message.new_limits_state &&\n !(\n message.new_limits_state.includes('YELLOW') ||\n message.new_limits_state.includes('RED')\n )\n ) {\n continue\n }\n let itemInfo = {\n key: itemName,\n parameters: [\n message.target_name,\n message.packet_name,\n message.item_name,\n ],\n }\n if (\n message.new_limits_state == 'YELLOW' ||\n message.new_limits_state == 'RED'\n ) {\n itemInfo['limits'] = false\n } else {\n itemInfo['limits'] = true\n }\n this.itemList.push(`${itemName}__${message.new_limits_state}`)\n this.items.push(itemInfo)\n this.calcOverallState()\n }\n },\n\n // Menu options\n showIgnored() {\n this.ignoredItemsDialog = true\n },\n },\n}\n</script>\n\n<style scoped>\n/* TODO: Color the border */\n.textfield-green >>> .v-text-field__slot input,\n.textfield-green >>> .v-text-field__slot label {\n color: green;\n}\n.textfield-yellow >>> .v-text-field__slot input,\n.textfield-yellow >>> .v-text-field__slot label {\n color: yellow;\n}\n.textfield-red >>> .v-text-field__slot input,\n.textfield-red >>> .v-text-field__slot label {\n color: red;\n}\n</style>\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsControl.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsControl.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsControl.vue?vue&type=template&id=62d2bb56&scoped=true&\"\nimport script from \"./LimitsControl.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitsControl.vue?vue&type=style&index=0&id=62d2bb56&scoped=true&lang=css&\"\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 \"62d2bb56\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"card-height\"},[_c('v-card-title',[_vm._v(\" Limits Events \"),_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.data,\"search\":_vm.search,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"dense\":\"\",\"height\":_vm.calcTableHeight()},scopedSlots:_vm._u([{key:\"item.time_nsec\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',[_vm._v(_vm._s(_vm.formatDate(item.time_nsec)))])]}},{key:\"item.message\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{class:_vm.getColorClass(item.message)},[_vm._v(_vm._s(item.message))])]}}])})],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-card class=\"card-height\">\n <v-card-title>\n Limits Events\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n append-icon=\"mdi-magnify\"\n label=\"Search\"\n single-line\n hide-details\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"data\"\n :search=\"search\"\n calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n dense\n :height=\"calcTableHeight()\"\n >\n <template v-slot:item.time_nsec=\"{ item }\">\n <span>{{ formatDate(item.time_nsec) }}</span>\n </template>\n <template v-slot:item.message=\"{ item }\">\n <span :class=\"getColorClass(item.message)\">{{ item.message }}</span>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\n\nexport default {\n props: {\n history_count: {\n type: Number,\n default: 1000,\n },\n },\n data() {\n return {\n data: [],\n search: '',\n headers: [\n { text: 'Time', value: 'time_nsec', width: 250 },\n { text: 'Message', value: 'message' },\n ],\n }\n },\n methods: {\n handleMessages(messages) {\n for (let i = 0; i < messages.length; i++) {\n this.data.unshift(messages[i])\n }\n if (this.data.length > this.history_count) {\n this.data.length = this.history_count\n }\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1_000_000),\n 'yyyy-MM-dd HH:mm:ss.SSS'\n )\n },\n getColorClass(message) {\n if (message.includes('GREEN')) {\n return 'cosmos-green'\n } else if (message.includes('YELLOW')) {\n return 'cosmos-yellow'\n } else if (message.includes('RED')) {\n return 'cosmos-red'\n } else if (message.includes('BLUE')) {\n return 'cosmos-blue'\n }\n if (this.$vuetify.theme.dark) {\n return 'cosmos-white'\n } else {\n return 'cosmos-black'\n }\n },\n calcTableHeight() {\n // TODO: 250 is a magic number but seems to work well\n return window.innerHeight - 250\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.card-height {\n // TODO: 150 is a magic number but seems to work well\n // Can this be calculated by the size of the table search box?\n height: calc(100vh - 150px);\n}\n</style>\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsEvents.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsEvents.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsEvents.vue?vue&type=template&id=e10911ac&scoped=true&\"\nimport script from \"./LimitsEvents.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsEvents.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LimitsEvents.vue?vue&type=style&index=0&id=e10911ac&lang=scss&scoped=true&\"\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 \"e10911ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('mounting-portal',{attrs:{\"mount-to\":\"#cosmos-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label)))}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label) + \" \" + (option.label)))},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled},domProps:{\"textContent\":_vm._s(option.icon)}})],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')),domProps:{\"textContent\":_vm._s(option.label)}}):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('v-spacer')],2)])}\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <mounting-portal mount-to=\"#cosmos-menu\" append>\n <div class=\"v-toolbar__content\">\n <v-menu offset-y v-for=\"(menu, i) in menus\" :key=\"i\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n outlined\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"mx-1\"\n :data-test=\"formatDT(`${title} ${menu.label}`)\"\n >\n <span v-text=\"menu.label\" />\n <v-icon right> mdi-menu-down </v-icon>\n </v-btn>\n </template>\n <v-list>\n <!-- The radio-group is necessary in case the application wants radio buttons -->\n <v-radio-group\n :value=\"menu.radioGroup\"\n hide-details\n dense\n class=\"ma-0 pa-0\"\n >\n <template v-for=\"(option, j) in menu.items\">\n <v-divider v-if=\"option.divider\" :key=\"j\" />\n <v-list-item\n v-else\n @click=\"option.command\"\n :key=\"j\"\n :disabled=\"option.disabled\"\n :data-test=\"formatDT(`${title} ${menu.label} ${option.label}`)\"\n >\n <v-list-item-action\n v-if=\"option.radio\"\n >\n <v-radio\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-action\n v-if=\"option.checkbox\"\n >\n <v-checkbox\n v-model=\"checked\"\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-icon v-if=\"option.icon\">\n <v-icon v-text=\"option.icon\" :disabled=\"option.disabled\" />\n </v-list-item-icon>\n <v-list-item-title\n v-if=\"!option.radio && !option.checkbox\"\n :style=\"\n 'cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')\n \"\n v-text=\"option.label\"\n />\n </v-list-item>\n </template>\n </v-radio-group>\n </v-list>\n </v-menu>\n <v-spacer />\n <v-toolbar-title v-text=\"title\" />\n <v-spacer />\n </div>\n </mounting-portal>\n</template>\n\n<script>\nexport default {\n props: {\n menus: {\n type: Array,\n default: function () {\n return []\n },\n },\n title: {\n type: String,\n default: '',\n },\n },\n methods: {\n // Convert the string to a standard data-test format\n formatDT: function(string) {\n return string.replaceAll(' ', '-').toLowerCase()\n },\n }\n}\n</script>\n\n<style scoped>\n.v-list >>> .v-label {\n margin-left: 5px;\n}\n.v-list-item__icon {\n /* For some reason the default margin-right is huge */\n margin-right: 15px !important;\n}\n.v-list-item__title {\n color: white;\n}\n</style>\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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=e3bb7458&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\"\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 \"e3bb7458\",\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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport * as ActionCable from 'actioncable'\n\nexport default class Cable {\n constructor(url = '/cosmos-api/cable') {\n this._cable = ActionCable.createConsumer(url)\n }\n disconnect() {\n this._cable.disconnect()\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return CosmosAuth.updateToken(CosmosAuth.defaultMinValidity).then(() => {\n return this._cable.subscriptions.create(\n {\n channel,\n scope,\n token: localStorage.cosmosToken,\n ...additionalOptions,\n },\n callbacks\n )\n })\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Open Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"autofocus\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"data-test\":\"item-delete\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"success\",\"data-test\":\"open-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"open-config-cancel-btn\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")])],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n autofocus\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n data-test=\"item-delete\"\n icon\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"success\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n <v-spacer />\n <v-btn\n @click=\"cancel\"\n color=\"primary\"\n data-test=\"open-config-cancel-btn\"\n >\n Cancel\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n } else {\n this.selectedItem = null\n }\n },\n success: function () {\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem.config === item.config) {\n this.selectedItem = null\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\n })\n },\n },\n}\n</script>\n\n<style scoped></style>\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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpenConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OpenConfigDialog.vue?vue&type=template&id=4f9dd098&scoped=true&\"\nimport script from \"./OpenConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./OpenConfigDialog.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 \"4f9dd098\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\"Save Configuration\")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"search\",\"type\":\"text\",\"data-test\":\"search\",\"prepend-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle-outline\",\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"show-select\":\"\",\"single-select\":\"\",\"item-key\":\"configId\",\"search\":_vm.search,\"headers\":_vm.headers,\"items\":_vm.configs,\"items-per-page\":5,\"footer-props\":{ 'items-per-page-options': [5] }},on:{\"item-selected\":_vm.itemSelected,\"click:row\":function (item, slot) { return slot.select(item); }},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mt-1\",attrs:{\"icon\":\"\",\"data-test\":\"item-delete\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]}}])}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-text-field',{attrs:{\"hide-details\":\"\",\"autofocus\":\"\",\"disabled\":!!_vm.selectedItem,\"label\":\"Configuration Name\",\"data-test\":\"name-input-save-config-dialog\"},model:{value:(_vm.configName),callback:function ($$v) {_vm.configName=$$v},expression:\"configName\"}})],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"ma-2 red--text\",domProps:{\"textContent\":_vm._s(_vm.error)}})]),_c('v-row',[_c('v-spacer'),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"type\":\"submit\",\"color\":\"primary\",\"data-test\":\"save-config-submit-btn\",\"disabled\":!!_vm.error},on:{\"click\":function($event){$event.preventDefault();return _vm.success.apply(null, arguments)}}},[_vm._v(\" Ok \")])],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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" @keydown.esc=\"cancel\" width=\"600\">\n <v-card>\n <form v-on:submit.prevent=\"success\">\n <v-system-bar>\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <v-row dense>\n <v-text-field\n label=\"search\"\n v-model=\"search\"\n type=\"text\"\n data-test=\"search\"\n prepend-icon=\"mdi-magnify\"\n clear-icon=\"mdi-close-circle-outline\"\n clearable\n single-line\n hide-details\n />\n </v-row>\n <v-data-table\n show-select\n single-select\n item-key=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :footer-props=\"{ 'items-per-page-options': [5] }\"\n @item-selected=\"itemSelected\"\n @click:row=\"(item, slot) => slot.select(item)\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-btn\n icon\n class=\"mt-1\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n >\n <v-icon>mdi-delete</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span class=\"ma-2 red--text\" v-show=\"error\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn outlined class=\"mx-2\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n @click.prevent=\"success\"\n type=\"submit\"\n color=\"primary\"\n class=\"mx-2\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n tool: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n text: 'Configuration',\n value: 'config',\n },\n {\n text: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedItem: null,\n }\n },\n computed: {\n error: function () {\n if (this.configName === '') {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new CosmosApi()\n .list_configs(this.tool)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to Cosmos. ${error}`)\n })\n },\n methods: {\n itemSelected: function (item) {\n if (item.value) {\n this.selectedItem = item.item\n this.configName = item.item.config\n } else {\n this.selectedItem = null\n this.configName = ''\n }\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedItem = null\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.configName === item.config) {\n this.selectedItem = null\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item.config), 1)\n new CosmosApi().delete_config(this.tool, item.config)\n })\n .catch((error) => {\n if (error) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`\n )\n }\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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.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[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SaveConfigDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SaveConfigDialog.vue?vue&type=template&id=7685694e&\"\nimport script from \"./SaveConfigDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SaveConfigDialog.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# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n <v-card>\n <v-tabs v-model=\"curTab\" fixed-tabs>\n <v-tab v-for=\"(tab, index) in tabs\" :key=\"index\">{{ tab }}</v-tab>\n </v-tabs>\n <v-tabs-items v-model=\"curTab\">\n <v-tab-item eager>\n <keep-alive>\n <limits-control ref=\"control\" v-model=\"ignored\" :key=\"renderKey\" />\n </keep-alive>\n </v-tab-item>\n <v-tab-item eager>\n <keep-alive>\n <limits-events ref=\"events\" />\n </keep-alive>\n </v-tab-item>\n </v-tabs-items>\n </v-card>\n <!-- Note we're using v-if here so it gets re-created each time and refreshes the list -->\n <open-config-dialog\n v-if=\"openConfig\"\n v-model=\"openConfig\"\n :tool=\"toolName\"\n @success=\"openConfiguration\"\n />\n <!-- Note we're using v-if here so it gets re-created each time and refreshes the list -->\n <save-config-dialog\n v-if=\"saveConfig\"\n v-model=\"saveConfig\"\n :tool=\"toolName\"\n @success=\"saveConfiguration\"\n />\n </div>\n</template>\n\n<script>\nimport LimitsControl from '@/tools/LimitsMonitor/LimitsControl'\nimport LimitsEvents from '@/tools/LimitsMonitor/LimitsEvents'\nimport TopBar from '@cosmosc2/tool-common/src/components/TopBar'\nimport Cable from '@cosmosc2/tool-common/src/services/cable.js'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport OpenConfigDialog from '@cosmosc2/tool-common/src/components/OpenConfigDialog'\nimport SaveConfigDialog from '@cosmosc2/tool-common/src/components/SaveConfigDialog'\n\nexport default {\n components: {\n LimitsControl,\n LimitsEvents,\n TopBar,\n OpenConfigDialog,\n SaveConfigDialog,\n },\n data() {\n return {\n title: 'Limits Monitor',\n toolName: 'limits-monitor',\n curTab: null,\n tabs: ['Limits', 'Log'],\n api: new CosmosApi(),\n cable: new Cable(),\n subscription: null,\n renderKey: 0,\n ignored: [],\n openConfig: false,\n saveConfig: false,\n menus: [\n {\n label: 'File',\n items: [\n {\n label: 'Show Ignored',\n command: () => {\n this.$refs.control.showIgnored()\n },\n },\n {\n divider: true,\n },\n {\n label: 'Open Configuration',\n command: () => {\n this.openConfig = true\n },\n },\n {\n label: 'Save Configuration',\n command: () => {\n this.saveConfig = true\n },\n },\n ],\n },\n ],\n }\n },\n created() {\n this.cable\n .createSubscription(\n 'LimitsEventsChannel',\n localStorage.scope,\n {\n received: (data) => {\n const parsed = JSON.parse(data)\n this.$refs.control.handleMessages(parsed)\n this.$refs.events.handleMessages(parsed)\n },\n },\n {\n history_count: 1000,\n }\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n destroyed() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n async openConfiguration(name) {\n const response = await this.api.load_config(this.toolName, name)\n this.ignored = JSON.parse(response)\n this.renderKey++ // Trigger re-render\n },\n saveConfiguration(name) {\n this.api.save_config(this.toolName, name, JSON.stringify(this.ignored))\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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsMonitor.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[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsMonitor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LimitsMonitor.vue?vue&type=template&id=558b68e6&\"\nimport script from \"./LimitsMonitor.vue?vue&type=script&lang=js&\"\nexport * from \"./LimitsMonitor.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","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-3eb9665d]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-e3bb7458] .v-label{margin-left:5px}.v-list-item__icon[data-v-e3bb7458]{margin-right:15px!important}.v-list-item__title[data-v-e3bb7458]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-1ff40000]{font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);font-style:var(--font-style)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".textfield-green[data-v-62d2bb56] .v-text-field__slot input,.textfield-green[data-v-62d2bb56] .v-text-field__slot label{color:green}.textfield-yellow[data-v-62d2bb56] .v-text-field__slot input,.textfield-yellow[data-v-62d2bb56] .v-text-field__slot label{color:#ff0}.textfield-red[data-v-62d2bb56] .v-text-field__slot input,.textfield-red[data-v-62d2bb56] .v-text-field__slot label{color:red}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".limitsbar[data-v-4d506ea0]{cursor:default;display:flex;justify-content:center;align-items:center;padding:5px;width:var(--width)}.limitsbar__container[data-v-4d506ea0]{position:relative;flex:1;height:var(--container-height);border:1px solid #000;background-color:#fff}.limitsbar__redlow[data-v-4d506ea0]{left:0;width:var(--redlow-width)}.limitsbar__redhigh[data-v-4d506ea0],.limitsbar__redlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:red}.limitsbar__redhigh[data-v-4d506ea0]{right:0;width:var(--redhigh-width)}.limitsbar__yellowlow[data-v-4d506ea0]{left:var(--redlow-width);width:var(--yellowlow-width)}.limitsbar__yellowhigh[data-v-4d506ea0],.limitsbar__yellowlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:#ffdc00}.limitsbar__yellowhigh[data-v-4d506ea0]{right:var(--redhigh-width);width:var(--yellowhigh-width)}.limitsbar__greenlow[data-v-4d506ea0]{left:calc(var(--redlow-width) + var(--yellowlow-width));width:var(--greenlow-width)}.limitsbar__greenhigh[data-v-4d506ea0],.limitsbar__greenlow[data-v-4d506ea0]{position:absolute;top:-1px;height:var(--container-height);background-color:green}.limitsbar__greenhigh[data-v-4d506ea0]{right:calc(var(--redhigh-width) + var(--yellowhigh-width));width:var(--greenhigh-width)}.limitsbar__blue[data-v-4d506ea0]{top:-1px;left:calc(var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width));width:var(--blue-width);background-color:blue}.limitsbar__blue[data-v-4d506ea0],.limitsbar__line[data-v-4d506ea0]{position:absolute;height:var(--container-height)}.limitsbar__line[data-v-4d506ea0]{left:var(--position);width:1px;background-color:gray}.limitsbar__arrow[data-v-4d506ea0]{position:absolute;top:-5px;left:var(--position);width:0;height:0;-webkit-transform:translateX(-5px);transform:translateX(-5px);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid gray}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".value-widget-container[data-v-d1470e40]{min-height:34px}.value[data-v-d1470e40] div{min-height:24px!important;display:flex!important;align-items:center!important}.cosmos-green[data-v-d1470e40] input{color:#009600}.cosmos-yellow[data-v-d1470e40] input{color:#be8700}.cosmos-red[data-v-d1470e40] input{color:red}.cosmos-blue[data-v-d1470e40] input{color:#0064ff}.cosmos-purple[data-v-d1470e40] input{color:#c800c8}.cosmos-black[data-v-d1470e40] input{color:#000}.cosmos-white[data-v-d1470e40] input{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".card-height[data-v-e10911ac]{height:calc(100vh - 150px)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7c1e213a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a2f2c426\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LabelWidget.vue?vue&type=style&index=0&id=1ff40000&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"27aab41a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsControl.vue?vue&type=style&index=0&id=62d2bb56&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"9ea19714\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsbarWidget.vue?vue&type=style&index=0&id=4d506ea0&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fbeb2792\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValueWidget.vue?vue&type=style&index=0&id=d1470e40&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10f1e48f\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[3]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22[0].rules[0].use[4]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LimitsEvents.vue?vue&type=style&index=0&id=e10911ac&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ccf8824\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","menus","title","model","value","callback","$$v","curTab","expression","_l","tab","index","key","_v","_s","renderKey","ref","ignored","toolName","on","openConfiguration","openConfig","_e","saveConfiguration","saveConfig","staticRenderFns","class","textFieldClass","overallStateFormatted","item","staticClass","parameters","scopedSlots","_u","fn","_g","_b","$event","ignorePacket","ignoreItem","removeItem","items","length","ignoredItemsDialog","restoreItem","ignoredFormatted","vueInstance","Vue","axiosInstance","axios","baseURL","location","origin","timeout","params","interceptors","response","use","error","status","localStorage","cosmosToken","CosmosAuth","login","href","body","data","message","exception","$notify","serious","CosmosApi","method","kwparams","updateToken","defaultMinValidity","id","scope","jsonrpc","keyword_params","headers","Authorization","result","err","Error","name","request","val","json_class","raw","NaN","Infinity","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","target","packet","log_writer_name","limits_set","target_name","packet_name","value_type","type","len","converted","i","decode_cosmos_type","item_name","command_name","parameter_name","param_list","Object","prototype","hasOwnProperty","call","encode_cosmos_type","undefined","_cmd","tool","array","style","labelName","settings","props","widgetIndex","default","Array","computed","computedStyle","forEach","setting","parseInt","slice","toLowerCase","getColor","methods","cssProps","labelText","mixins","fontFamily","fontSize","fontWeight","fontStyle","size","created","component","valueClass","_value","showContextMenu","fullName","x","y","contextMenuShown","stopPropagation","action","apply","arguments","viewDetails","Widget","limitsState","String","formatString","valueId","colorBlind","contextMenuOptions","window","open","$store","state","tlmViewerValues","formatted","formatValue","colorblindMode","limitsLetter","limitsColor","c","charAt","endsWith","getType","commit","destroyed","toString","sprintf","e","preventDefault","clientX","clientY","$nextTick","show","targetName","packetName","itemName","details","description","rawValue","convertedValue","formattedValue","unitsValue","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","units","endianness","limit","formatLimit","validator","indexOf","Boolean","updater","get","set","$emit","api","beforeDestroy","clearInterval","watch","newValue","requestDetails","setInterval","get_tlm_values","then","get_item","get_parameter","green_low","components","DetailsDialog","LabelWidget","ValueWidget","defaultStyle","limitsBarParameters","filter","map","_m","width","height","minValue","maxValue","scale","redLow","yellowLow","greenLow","greenHigh","yellowHigh","redHigh","blue","limitsSettings","DEFAULT","currentLimitsSet","DEFAULT_LIMITS_SET","currentSetRefreshInterval","calcLimits","limits","calcPosition","selectedLimitsSet","get_limits","getCurrentLimitsSet","modifyLimits","divisor","lowValue","min","Math","round","get_limits_set","LabelvalueWidget","LimitsbarWidget","overallWidth","LabelvaluelimitsbarWidget","overallState","itemList","updateOutOfLimits","mounted","get_out_of_limits","itemInfo","calcOverallState","overall","noUpdate","push","newIgnored","substring","underIndex","splice","updateIgnored","update","tlmViewerItems","handleMessages","messages","showIgnored","search","calcTableHeight","formatDate","time_nsec","getColorClass","history_count","text","unshift","nanoSecs","format","toDate","includes","$vuetify","theme","dark","innerHeight","menu","formatDT","domProps","label","radioGroup","option","j","disabled","command","checked","icon","radio","checkbox","string","replaceAll","Cable","url","_cable","ActionCable","disconnect","channel","callbacks","additionalOptions","subscriptions","create","token","_k","keyCode","cancel","success","configs","itemSelected","slot","select","deleteConfig","directives","rawName","align","sortable","selectedItem","list_configs","configId","config","catch","$dialog","confirm","okText","cancelText","configName","LimitsControl","LimitsEvents","TopBar","OpenConfigDialog","SaveConfigDialog","tabs","cable","subscription","divider","createSubscription","received","unsubscribe","save_config","JSON","stringify","___CSS_LOADER_EXPORT___","module","content","__esModule","locals","exports","add"],"sourceRoot":""}