openc3-cosmos-tool-cmdtlmserver 5.5.0.pre.beta0.20230217010436 → 5.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fbf8cf5fb64f5ff8245e0798f709ec57dc575b098b21ffead5d77d161434d3cd
4
- data.tar.gz: dfa5aec5cf1cd2eb2edb4599ad04ba72b920f5b724f6a256ade4f2145c9da5b0
3
+ metadata.gz: a88e8f5f039a3ae9d4587de2ddf6b21aa7a516edff809918201aa7b7cd3ee58f
4
+ data.tar.gz: 761b59190cdcd24e525d837ded0f054f23d0803ec405718511d8f792dd70df6b
5
5
  SHA512:
6
- metadata.gz: ebcbea0f5cd95c8f85d02d8f4080b3f66f92783330b5289ca245f4ebead6114416b255fb86cf26c871f494468cd5105182bcaddcd298a808e163b05567e34cfa
7
- data.tar.gz: 00654e399c31832cfac2c4406d2287aea7af847229015f268d50408213d355297d0d2f3f8427d09fe5d7c0e9e6f4dcb12fc0569080fb56a020c6282d52ea941c
6
+ metadata.gz: 894de5e93ba4abf65500fd3d6a52394a2c220d019b820b9e115878713826d40e678114c96fa58fb413ad019b1db60ae4317a8cacd40dd0c331105c0f3e310b79
7
+ data.tar.gz: 46d563a32b346099a33244e1d4f546e6600ce792a48fd77528101273a0780e32cd34f54615b54ae24c15b01f503a724fb3bb94cbba1d676effdab5f5e9d04977
@@ -1 +1 @@
1
- {"version":3,"file":"js/264.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?61cb","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?cd05","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Interfaces \"),_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,\"custom-sort\":_vm.sortTable,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"interfaces-table\"},scopedSlots:_vm._u([{key:\"item.connect\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":_vm.buttonsDisabled},on:{\"click\":function($event){return _vm.connectDisconnect(item)}}},[_vm._v(\" \"+_vm._s(item.connect)+\" \")])]}},{key:\"item.connected\",fn:function({ item }){return [_c('span',{class:item.connectedClass},[_vm._v(\" \"+_vm._s(item.connected)+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Interfaces\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 :custom-sort=\"sortTable\"\n :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"interfaces-table\"\n >\n <template v-slot:item.connect=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"buttonsDisabled\"\n @click=\"connectDisconnect(item)\"\n >\n {{ item.connect }}\n </v-btn>\n </template>\n <template v-slot:item.connected=\"{ item }\">\n <span :class=\"item.connectedClass\">\n {{ item.connected }}\n </span>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n buttonsDisabled: false,\n headers: [\n { text: 'Name', value: 'name' },\n {\n text: 'Connect / Disconnect',\n value: 'connect',\n sortable: false,\n filterable: false,\n },\n { text: 'Connected', value: 'connected' },\n { text: 'Clients', value: 'clients' },\n { text: 'Tx Q Size', value: 'tx_q_size' },\n { text: 'Rx Q Size', value: 'rx_q_size' },\n { text: 'Tx Bytes', value: 'tx_bytes' },\n { text: 'Rx Bytes', value: 'rx_bytes' },\n { text: 'Cmd Pkts', value: 'cmd_pkts' },\n { text: 'Tlm Pkts', value: 'tlm_pkts' },\n ],\n }\n },\n methods: {\n // Custom sort algorithm to allow the connected column to be sorted by CONNECTED first\n sortTable(items, index, isDesc) {\n items.sort((a, b) => {\n for (let i = 0; i < index.length; i++) {\n let column = index[i]\n let desc = isDesc[i]\n\n if (column === 'connected') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n if (a[column] === 'CONNECTED') {\n return -1\n } else {\n return 1\n }\n } else {\n if (a[column] === 'CONNECTED') {\n return 1\n } else {\n return -1\n }\n }\n } else if (column === 'name') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // Strings so use localeCompare to sort\n return a[column].localeCompare(b[column])\n } else {\n return b[column].localeCompare(a[column])\n }\n } else {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // The rest of the columns are numbers so just subtract to sort\n return a[column] - b[column]\n } else {\n return b[column] - a[column]\n }\n }\n }\n })\n return items\n },\n connectDisconnect(item) {\n this.buttonsDisabled = true\n if (item.connected === 'DISCONNECTED') {\n this.api.connect_interface(item.name)\n } else {\n this.api.disconnect_interface(item.name)\n }\n },\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_interface_info().then((info) => {\n this.data = [] // Clear the old data\n for (let int of info) {\n let connect = null\n let connectedClass = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connectedClass = 'openc3-white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connectedClass = 'openc3-green'\n } else {\n connect = 'Cancel'\n connectedClass = 'openc3-red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connectedClass: connectedClass,\n connected: int[1],\n clients: int[2],\n tx_q_size: int[3],\n rx_q_size: int[4],\n tx_bytes: int[5],\n rx_bytes: int[6],\n cmd_pkts: int[7],\n tlm_pkts: int[8],\n })\n }\n this.buttonsDisabled = false\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InterfacesTab.vue?vue&type=template&id=d28db9be&\"\nimport script from \"./InterfacesTab.vue?vue&type=script&lang=js&\"\nexport * from \"./InterfacesTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["render","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","sortTable","itemsPerPageOptions","scopedSlots","_u","key","fn","item","buttonsDisabled","on","$event","connectDisconnect","connect","class","connectedClass","connected","staticRenderFns","mixins","props","tabId","curTab","text","sortable","filterable","methods","items","update","info","name","clients","tx_q_size","rx_q_size","tx_bytes","rx_bytes","cmd_pkts","tlm_pkts","component","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","i","F","s","n","done","e","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
1
+ {"version":3,"file":"js/264.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?61cb","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?cd05","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Interfaces \"),_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,\"custom-sort\":_vm.sortTable,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"interfaces-table\"},scopedSlots:_vm._u([{key:\"item.connect\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":_vm.buttonsDisabled},on:{\"click\":function($event){return _vm.connectDisconnect(item)}}},[_vm._v(\" \"+_vm._s(item.connect)+\" \")])]}},{key:\"item.connected\",fn:function({ item }){return [_c('span',{class:item.connectedClass},[_vm._v(\" \"+_vm._s(item.connected)+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Interfaces\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 :custom-sort=\"sortTable\"\n :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"interfaces-table\"\n >\n <template v-slot:item.connect=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"buttonsDisabled\"\n @click=\"connectDisconnect(item)\"\n >\n {{ item.connect }}\n </v-btn>\n </template>\n <template v-slot:item.connected=\"{ item }\">\n <span :class=\"item.connectedClass\">\n {{ item.connected }}\n </span>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n buttonsDisabled: false,\n headers: [\n { text: 'Name', value: 'name' },\n {\n text: 'Connect / Disconnect',\n value: 'connect',\n sortable: false,\n filterable: false,\n },\n { text: 'Connected', value: 'connected' },\n { text: 'Clients', value: 'clients' },\n { text: 'Tx Q Size', value: 'tx_q_size' },\n { text: 'Rx Q Size', value: 'rx_q_size' },\n { text: 'Tx Bytes', value: 'tx_bytes' },\n { text: 'Rx Bytes', value: 'rx_bytes' },\n { text: 'Cmd Pkts', value: 'cmd_pkts' },\n { text: 'Tlm Pkts', value: 'tlm_pkts' },\n ],\n }\n },\n methods: {\n // Custom sort algorithm to allow the connected column to be sorted by CONNECTED first\n sortTable(items, index, isDesc) {\n items.sort((a, b) => {\n for (let i = 0; i < index.length; i++) {\n let column = index[i]\n let desc = isDesc[i]\n\n if (column === 'connected') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n if (a[column] === 'CONNECTED') {\n return -1\n } else {\n return 1\n }\n } else {\n if (a[column] === 'CONNECTED') {\n return 1\n } else {\n return -1\n }\n }\n } else if (column === 'name') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // Strings so use localeCompare to sort\n return a[column].localeCompare(b[column])\n } else {\n return b[column].localeCompare(a[column])\n }\n } else {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // The rest of the columns are numbers so just subtract to sort\n return a[column] - b[column]\n } else {\n return b[column] - a[column]\n }\n }\n }\n })\n return items\n },\n connectDisconnect(item) {\n this.buttonsDisabled = true\n if (item.connected === 'DISCONNECTED') {\n this.api.connect_interface(item.name)\n } else {\n this.api.disconnect_interface(item.name)\n }\n },\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_interface_info().then((info) => {\n this.data = [] // Clear the old data\n for (let int of info) {\n let connect = null\n let connectedClass = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connectedClass = 'openc3-white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connectedClass = 'openc3-green'\n } else {\n connect = 'Cancel'\n connectedClass = 'openc3-red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connectedClass: connectedClass,\n connected: int[1],\n clients: int[2],\n tx_q_size: int[3],\n rx_q_size: int[4],\n tx_bytes: int[5],\n rx_bytes: int[6],\n cmd_pkts: int[7],\n tlm_pkts: int[8],\n })\n }\n this.buttonsDisabled = false\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InterfacesTab.vue?vue&type=template&id=d28db9be&\"\nimport script from \"./InterfacesTab.vue?vue&type=script&lang=js&\"\nexport * from \"./InterfacesTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["cov_z1n112vt","actualCoverage","s","render","f","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","sortTable","itemsPerPageOptions","scopedSlots","_u","key","fn","_ref","item","buttonsDisabled","on","$event","connectDisconnect","connect","_ref2","class","connectedClass","connected","staticRenderFns","mixins","Updater","props","tabId","Number","curTab","text","sortable","filterable","methods","items","index","isDesc","sort","a","b","i","column","desc","localeCompare","api","connect_interface","name","disconnect_interface","update","_this","get_all_interface_info","then","info","_step","_iterator","_createForOfIteratorHelper","n","done","int","push","clients","tx_q_size","rx_q_size","tx_bytes","rx_bytes","cmd_pkts","tlm_pkts","err","e","component","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","F","_e","TypeError","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"js/320.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/RawDialog.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?82a1","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?b7f3","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?8e5d","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?fab9"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"790px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.isVisible = false}},model:{value:(_vm.isVisible),callback:function ($$v) {_vm.isVisible=$$v},expression:\"isVisible\"}},[_c('v-card',[_c('v-system-bar',[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"copy-icon\"},on:{\"click\":_vm.copyRawData}},[_vm._v(\" mdi-content-copy \")])],1)]}}])},[_c('span',[_vm._v(\" Copy \")])]),_c('v-spacer'),_c('span',[_vm._v(\" \"+_vm._s(_vm.type)+\" \")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"download\"},on:{\"click\":_vm.downloadRawData}},[_vm._v(\" mdi-download \")])],1)]}}])},[_c('span',[_vm._v(\" Download \")])])],1),_c('v-card-title',[_c('span',[_vm._v(\" \"+_vm._s(_vm.header)+\" \")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-btn',{attrs:{\"icon\":\"\",\"data-test\":\"pause\"},on:{\"click\":_vm.pause}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.buttonIcon)+\" \")])],1)],1)]}}])},[_c('span',[_vm._v(\" \"+_vm._s(_vm.buttonLabel)+\" \")])])],1),_c('v-card-text',[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('span',[_vm._v(\" Received Time: \")])]),_c('v-col',{staticClass:\"text-right\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.receivedTime)+\" \")])])],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('span',[_vm._v(\" Count: \")])]),_c('v-col',{staticClass:\"text-right\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.receivedCount)+\" \")])])],1),_c('v-textarea',{staticClass:\"pa-0 ma-0\",attrs:{\"auto-grow\":\"\",\"readonly\":\"\"},model:{value:(_vm.rawData),callback:function ($$v) {_vm.rawData=$$v},expression:\"rawData\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"isVisible\" @keydown.esc=\"isVisible = false\" width=\"790px\">\n <v-card>\n <v-system-bar>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"copy-icon\" @click=\"copyRawData\">\n mdi-content-copy\n </v-icon>\n </div>\n </template>\n <span> Copy </span>\n </v-tooltip>\n <v-spacer />\n <span> {{ type }} </span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"download\" @click=\"downloadRawData\">\n mdi-download\n </v-icon>\n </div>\n </template>\n <span> Download </span>\n </v-tooltip>\n </v-system-bar>\n <v-card-title>\n <span> {{ header }} </span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-btn icon data-test=\"pause\" @click=\"pause\">\n <v-icon> {{ buttonIcon }} </v-icon>\n </v-btn>\n </div>\n </template>\n <span> {{ buttonLabel }} </span>\n </v-tooltip>\n </v-card-title>\n <v-card-text>\n <v-row dense>\n <v-col cols=\"4\">\n <span> Received Time: </span>\n </v-col>\n <v-col class=\"text-right\">\n <span> {{ receivedTime }} </span>\n </v-col>\n </v-row>\n <v-row dense>\n <v-col cols=\"4\">\n <span> Count: </span>\n </v-col>\n <v-col class=\"text-right\">\n <span> {{ receivedCount }} </span>\n </v-col>\n </v-row>\n <v-textarea v-model=\"rawData\" class=\"pa-0 ma-0\" auto-grow readonly />\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n type: String,\n visible: Boolean,\n targetName: String,\n packetName: String,\n },\n data() {\n return {\n header: '',\n receivedTime: '',\n rawData: '',\n paused: false,\n receivedCount: '',\n }\n },\n computed: {\n buttonLabel: function () {\n if (this.paused) {\n return 'Resume'\n } else {\n return 'Pause'\n }\n },\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n isVisible: {\n get: function () {\n return this.visible\n },\n // Reset all the data to defaults\n set: function (bool) {\n this.header = ''\n this.receivedTime = ''\n this.rawData = ''\n this.receivedCount = ''\n this.paused = false\n this.buttonLabel = 'Pause'\n this.$emit('display', bool)\n },\n },\n },\n methods: {\n buildRawData: function () {\n return `${this.header}\\nReceived Time: ${this.receivedTime}\\nCount: ${this.receivedCount}\\n${this.rawData}`\n },\n copyRawData: function () {\n navigator.clipboard.writeText(this.buildRawData())\n },\n downloadRawData: function () {\n const blob = new Blob([this.buildRawData()], {\n type: 'plain/text',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n const dt = format(Date.now(), 'yyyy_MM_dd_HH_mm_ss')\n link.setAttribute(\n 'download',\n `${dt}_${this.targetName}_${this.packetName}.txt`\n )\n link.click()\n },\n pause: function () {\n this.paused = !this.paused\n },\n update: function () {\n if (!this.isVisible || this.paused) return\n this.header = `Raw ${this.type} Packet: ${this.targetName} ${this.packetName}`\n\n if (this.type === 'Telemetry') {\n this.updateTelemetry()\n } else {\n this.updateCommand()\n }\n },\n updateTelemetry: function () {\n this.api\n .get_tlm_buffer(this.targetName, this.packetName)\n .then((result) => {\n let buffer_data = result.buffer\n if (buffer_data.raw !== undefined) {\n buffer_data = buffer_data.raw\n } else {\n let utf8Encode = new TextEncoder()\n buffer_data = utf8Encode.encode(buffer_data)\n }\n this.receivedTime = new Date(result.time / 1000000)\n this.receivedCount = result.received_count\n this.rawData =\n 'Address Data Ascii\\n' +\n '---------------------------------------------------------------------------\\n' +\n this.formatBuffer(buffer_data)\n })\n },\n updateCommand: function () {\n this.api\n .get_cmd_buffer(this.targetName, this.packetName)\n .then((result) => {\n let buffer_data = result.buffer\n if (buffer_data.raw !== undefined) {\n buffer_data = buffer_data.raw\n } else {\n let utf8Encode = new TextEncoder()\n buffer_data = utf8Encode.encode(buffer_data)\n }\n this.receivedTime = new Date(result.time / 1000000)\n this.receivedCount = result.received_count\n this.rawData =\n 'Address Data Ascii\\n' +\n '---------------------------------------------------------------------------\\n' +\n this.formatBuffer(buffer_data)\n })\n },\n // TODO: Perhaps move this to a utility library\n formatBuffer: function (buffer) {\n var string = ''\n var index = 0\n var ascii = ''\n buffer.forEach((byte) => {\n if (index % 16 === 0) {\n string += this.numHex(index, 8) + ': '\n }\n string += this.numHex(byte)\n\n // Create the ASCII representation if printable\n if (byte >= 32 && byte <= 126) {\n ascii += String.fromCharCode(byte)\n } else {\n ascii += ' '\n }\n\n index++\n\n if (index % 16 === 0) {\n string += ' ' + ascii + '\\n'\n ascii = ''\n } else {\n string += ' '\n }\n })\n\n // We're done printing all the bytes. Now check to see if we ended in the\n // middle of a line. If so we have to print out the final ASCII if\n // requested.\n if (index % 16 != 0) {\n var existing_length = (index % 16) - 1 + (index % 16) * 2\n // 47 is (16 * 2) + 15 separator spaces\n var filler = ' '.repeat(47 - existing_length)\n var ascii_filler = ' '.repeat(16 - ascii.length)\n string += filler + ' ' + ascii + ascii_filler\n }\n return string\n },\n numHex(num, width = 2) {\n var hex = num.toString(16)\n return '0'.repeat(width - hex.length) + hex\n },\n },\n}\n</script>\n<style scoped>\n.v-textarea :deep(textarea) {\n margin-top: 10px;\n font-family: 'Courier New', Courier, monospace;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RawDialog.vue?vue&type=template&id=7b88fb20&scoped=true&\"\nimport script from \"./RawDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./RawDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RawDialog.vue?vue&type=style&index=0&id=7b88fb20&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b88fb20\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-textarea[data-v-7b88fb20] textarea{margin-top:10px;font-family:Courier New,Courier,monospace}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=style&index=0&id=7b88fb20&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0af063f9\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["render","_vm","this","_c","_self","attrs","on","$event","type","indexOf","_k","keyCode","key","isVisible","model","value","callback","$$v","expression","scopedSlots","_u","fn","_g","_b","copyRawData","_v","_s","downloadRawData","header","pause","buttonIcon","buttonLabel","staticClass","receivedTime","receivedCount","rawData","staticRenderFns","mixins","props","visible","targetName","packetName","data","paused","computed","get","set","methods","buildRawData","navigator","link","dt","update","updateTelemetry","get_tlm_buffer","then","buffer_data","updateCommand","get_cmd_buffer","formatBuffer","buffer","string","ascii","index","numHex","component","___CSS_LOADER_EXPORT___","push","module","id","content","__esModule","default","locals","exports","add"],"sourceRoot":""}
1
+ {"version":3,"file":"js/320.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/RawDialog.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?82a1","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?b7f3","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?8e5d","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?fab9"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"790px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.isVisible = false}},model:{value:(_vm.isVisible),callback:function ($$v) {_vm.isVisible=$$v},expression:\"isVisible\"}},[_c('v-card',[_c('v-system-bar',[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"copy-icon\"},on:{\"click\":_vm.copyRawData}},[_vm._v(\" mdi-content-copy \")])],1)]}}])},[_c('span',[_vm._v(\" Copy \")])]),_c('v-spacer'),_c('span',[_vm._v(\" \"+_vm._s(_vm.type)+\" \")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"data-test\":\"download\"},on:{\"click\":_vm.downloadRawData}},[_vm._v(\" mdi-download \")])],1)]}}])},[_c('span',[_vm._v(\" Download \")])])],1),_c('v-card-title',[_c('span',[_vm._v(\" \"+_vm._s(_vm.header)+\" \")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-btn',{attrs:{\"icon\":\"\",\"data-test\":\"pause\"},on:{\"click\":_vm.pause}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.buttonIcon)+\" \")])],1)],1)]}}])},[_c('span',[_vm._v(\" \"+_vm._s(_vm.buttonLabel)+\" \")])])],1),_c('v-card-text',[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('span',[_vm._v(\" Received Time: \")])]),_c('v-col',{staticClass:\"text-right\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.receivedTime)+\" \")])])],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('span',[_vm._v(\" Count: \")])]),_c('v-col',{staticClass:\"text-right\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.receivedCount)+\" \")])])],1),_c('v-textarea',{staticClass:\"pa-0 ma-0\",attrs:{\"auto-grow\":\"\",\"readonly\":\"\"},model:{value:(_vm.rawData),callback:function ($$v) {_vm.rawData=$$v},expression:\"rawData\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"isVisible\" @keydown.esc=\"isVisible = false\" width=\"790px\">\n <v-card>\n <v-system-bar>\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"copy-icon\" @click=\"copyRawData\">\n mdi-content-copy\n </v-icon>\n </div>\n </template>\n <span> Copy </span>\n </v-tooltip>\n <v-spacer />\n <span> {{ type }} </span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-icon data-test=\"download\" @click=\"downloadRawData\">\n mdi-download\n </v-icon>\n </div>\n </template>\n <span> Download </span>\n </v-tooltip>\n </v-system-bar>\n <v-card-title>\n <span> {{ header }} </span>\n <v-spacer />\n <v-tooltip top>\n <template v-slot:activator=\"{ on, attrs }\">\n <div v-on=\"on\" v-bind=\"attrs\">\n <v-btn icon data-test=\"pause\" @click=\"pause\">\n <v-icon> {{ buttonIcon }} </v-icon>\n </v-btn>\n </div>\n </template>\n <span> {{ buttonLabel }} </span>\n </v-tooltip>\n </v-card-title>\n <v-card-text>\n <v-row dense>\n <v-col cols=\"4\">\n <span> Received Time: </span>\n </v-col>\n <v-col class=\"text-right\">\n <span> {{ receivedTime }} </span>\n </v-col>\n </v-row>\n <v-row dense>\n <v-col cols=\"4\">\n <span> Count: </span>\n </v-col>\n <v-col class=\"text-right\">\n <span> {{ receivedCount }} </span>\n </v-col>\n </v-row>\n <v-textarea v-model=\"rawData\" class=\"pa-0 ma-0\" auto-grow readonly />\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n type: String,\n visible: Boolean,\n targetName: String,\n packetName: String,\n },\n data() {\n return {\n header: '',\n receivedTime: '',\n rawData: '',\n paused: false,\n receivedCount: '',\n }\n },\n computed: {\n buttonLabel: function () {\n if (this.paused) {\n return 'Resume'\n } else {\n return 'Pause'\n }\n },\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n isVisible: {\n get: function () {\n return this.visible\n },\n // Reset all the data to defaults\n set: function (bool) {\n this.header = ''\n this.receivedTime = ''\n this.rawData = ''\n this.receivedCount = ''\n this.paused = false\n this.buttonLabel = 'Pause'\n this.$emit('display', bool)\n },\n },\n },\n methods: {\n buildRawData: function () {\n return `${this.header}\\nReceived Time: ${this.receivedTime}\\nCount: ${this.receivedCount}\\n${this.rawData}`\n },\n copyRawData: function () {\n navigator.clipboard.writeText(this.buildRawData())\n },\n downloadRawData: function () {\n const blob = new Blob([this.buildRawData()], {\n type: 'plain/text',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n const dt = format(Date.now(), 'yyyy_MM_dd_HH_mm_ss')\n link.setAttribute(\n 'download',\n `${dt}_${this.targetName}_${this.packetName}.txt`\n )\n link.click()\n },\n pause: function () {\n this.paused = !this.paused\n },\n update: function () {\n if (!this.isVisible || this.paused) return\n this.header = `Raw ${this.type} Packet: ${this.targetName} ${this.packetName}`\n\n if (this.type === 'Telemetry') {\n this.updateTelemetry()\n } else {\n this.updateCommand()\n }\n },\n updateTelemetry: function () {\n this.api\n .get_tlm_buffer(this.targetName, this.packetName)\n .then((result) => {\n let buffer_data = result.buffer\n if (buffer_data.raw !== undefined) {\n buffer_data = buffer_data.raw\n } else {\n let utf8Encode = new TextEncoder()\n buffer_data = utf8Encode.encode(buffer_data)\n }\n this.receivedTime = new Date(result.time / 1000000)\n this.receivedCount = result.received_count\n this.rawData =\n 'Address Data Ascii\\n' +\n '---------------------------------------------------------------------------\\n' +\n this.formatBuffer(buffer_data)\n })\n },\n updateCommand: function () {\n this.api\n .get_cmd_buffer(this.targetName, this.packetName)\n .then((result) => {\n let buffer_data = result.buffer\n if (buffer_data.raw !== undefined) {\n buffer_data = buffer_data.raw\n } else {\n let utf8Encode = new TextEncoder()\n buffer_data = utf8Encode.encode(buffer_data)\n }\n this.receivedTime = new Date(result.time / 1000000)\n this.receivedCount = result.received_count\n this.rawData =\n 'Address Data Ascii\\n' +\n '---------------------------------------------------------------------------\\n' +\n this.formatBuffer(buffer_data)\n })\n },\n // TODO: Perhaps move this to a utility library\n formatBuffer: function (buffer) {\n var string = ''\n var index = 0\n var ascii = ''\n buffer.forEach((byte) => {\n if (index % 16 === 0) {\n string += this.numHex(index, 8) + ': '\n }\n string += this.numHex(byte)\n\n // Create the ASCII representation if printable\n if (byte >= 32 && byte <= 126) {\n ascii += String.fromCharCode(byte)\n } else {\n ascii += ' '\n }\n\n index++\n\n if (index % 16 === 0) {\n string += ' ' + ascii + '\\n'\n ascii = ''\n } else {\n string += ' '\n }\n })\n\n // We're done printing all the bytes. Now check to see if we ended in the\n // middle of a line. If so we have to print out the final ASCII if\n // requested.\n if (index % 16 != 0) {\n var existing_length = (index % 16) - 1 + (index % 16) * 2\n // 47 is (16 * 2) + 15 separator spaces\n var filler = ' '.repeat(47 - existing_length)\n var ascii_filler = ' '.repeat(16 - ascii.length)\n string += filler + ' ' + ascii + ascii_filler\n }\n return string\n },\n numHex(num, width = 2) {\n var hex = num.toString(16)\n return '0'.repeat(width - hex.length) + hex\n },\n },\n}\n</script>\n<style scoped>\n.v-textarea :deep(textarea) {\n margin-top: 10px;\n font-family: 'Courier New', Courier, monospace;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RawDialog.vue?vue&type=template&id=7b88fb20&scoped=true&\"\nimport script from \"./RawDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./RawDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RawDialog.vue?vue&type=style&index=0&id=7b88fb20&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b88fb20\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-textarea[data-v-7b88fb20] textarea{margin-top:10px;font-family:Courier New,Courier,monospace}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=style&index=0&id=7b88fb20&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0af063f9\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_2gt25r962d","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","on","$event","b","type","indexOf","_k","keyCode","key","isVisible","model","value","callback","$$v","expression","scopedSlots","_u","fn","_ref","_g","_b","copyRawData","_v","_s","_ref2","downloadRawData","header","_ref3","pause","buttonIcon","buttonLabel","staticClass","receivedTime","receivedCount","rawData","staticRenderFns","mixins","Updater","props","String","visible","Boolean","targetName","packetName","data","paused","computed","get","set","bool","$emit","methods","buildRawData","concat","navigator","clipboard","writeText","blob","Blob","link","document","createElement","href","URL","createObjectURL","dt","format","Date","now","setAttribute","click","update","updateTelemetry","updateCommand","_this","api","get_tlm_buffer","then","result","buffer_data","buffer","undefined","raw","utf8Encode","TextEncoder","encode","time","received_count","formatBuffer","_this2","get_cmd_buffer","_this3","string","index","ascii","forEach","byte","numHex","fromCharCode","existing_length","filler","repeat","ascii_filler","length","num","width","arguments","hex","toString","component","___CSS_LOADER_EXPORT___","push","module","id","content","__esModule","default","locals","exports","add"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"js/398.js","mappings":"+jFAeY,+CAfZ,IAAIA,EAAS,WAAiB,WAAC,IAAIC,GAAG,WAACC,MAAKC,GAAE,WAACF,EAAIG,MAAMD,IAAG,kBAAOA,EAAG,SAAS,CAACA,EAAG,eAAe,CAACF,EAAII,GAAG,IAAIJ,EAAIK,GAAGL,EAAIM,KAAKC,QAAQ,uBAAuBL,EAAG,YAAYA,EAAG,eAAe,CAACM,MAAM,CAAC,cAAc,cAAc,MAAQ,SAAS,cAAc,GAAG,eAAe,IAAIC,MAAM,CAACC,MAAOV,EAAIW,OAAQC,SAAS,SAAUC,GAAK,sBAACb,EAAIW,OAAOE,CAAG,EAAEC,WAAW,aAAa,GAAGZ,EAAG,eAAe,CAACM,MAAM,CAAC,QAAUR,EAAIe,QAAQ,MAAQf,EAAIM,KAAK,OAASN,EAAIW,OAAO,iBAAiB,GAAG,eAAe,CACveK,oBAAqB,CAAC,GAAI,GAAI,GAAI,KAClCC,mBAAmB,GACnB,UAAU,cAAc,mBAAmB,GAAG,aAAa,GAAG,YAAY,qBAAqBC,GAAG,CAAC,gBAAgBlB,EAAImB,cAAcC,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,gBAAgBC,GAAG,YAAkB,IAAPC,EAAI,EAAJA,KAAQ,OAAJ,sBAAW,CAACtB,EAAG,QAAQ,CAACM,MAAM,CAAC,MAAQ,GAAG,MAAQ,UAAU,SAAWgB,EAAKC,MAAQ,GAAGP,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAD,sBAAQ1B,EAAI2B,YAAYH,EAAKI,YAAaJ,EAAKK,YAAY,IAAI,CAAC7B,EAAII,GAAG,gBAAgB,GAAG,CAACkB,IAAI,0BAA0BC,GAAG,YAAkB,IAAPC,EAAI,EAAJA,KAAQ,OAAJ,sBAAW,CAAuB,YAArBA,EAAKI,aAAyB,cAAE1B,EAAG,OAAO,CAACF,EAAII,GAAG,WAAQ,cAACJ,EAAI8B,MAA0B,WAApBN,EAAKI,aAAwB,cAAE1B,EAAG,QAAQ,CAACM,MAAM,CAAC,MAAQ,GAAG,MAAQ,WAAWU,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAD,sBAAQ1B,EAAI+B,cAAcP,EAAKI,YAAaJ,EAAKK,YAAY,IAAI,CAAC7B,EAAII,GAAG,2BAA2BF,EAAG,SAAS,CAACM,MAAM,CAAC,MAAQ,KAAK,CAACR,EAAII,GAAG,wBAAwB,KAAE,cAACJ,EAAI8B,MAAK,OAAO5B,EAAG,aAAa,CAACM,MAAM,CAAC,KAAO,YAAY,cAAcR,EAAI4B,YAAY,cAAc5B,EAAI6B,YAAY,QAAU7B,EAAIgC,SAASd,GAAG,CAAC,QAAUlB,EAAIiC,uBAAuB,EACj+B,EACIC,GAAe,WAAG,I,gqTC6FtB,oCAXA,OACAC,WAAAA,CACAC,UAAAA,EAAAA,GAEAC,OAAAA,CAAAA,EAAAA,GACAC,MAAAA,CACAC,MAAAA,OACAC,OAAAA,QAEAlC,KAAAA,WACA,OADA,sBACA,CACAK,OAAAA,GACAL,KAAAA,GACAS,QAAAA,CACA,CAAA0B,KAAAA,cAAA/B,MAAAA,eACA,CAAA+B,KAAAA,cAAA/B,MAAAA,eACA,CAAA+B,KAAAA,eAAA/B,MAAAA,SACA,CAAA+B,KAAAA,WAAA/B,MAAAA,YACA,CAAA+B,KAAAA,wBAAA/B,MAAAA,uBAEAsB,SAAAA,EACAJ,YAAAA,KACAC,YAAAA,KACAa,QAAAA,KAEA,EACAC,QAAAA,WAAA,iCACA,mEACAC,EAAAA,KAAAA,SAAAA,GAAA,sBACA,yEACA,qBACAC,EAAAA,KAAAA,SAAAA,GACA,OADA,sBACA,CAAAjB,YAAAA,EAAAC,YAAAA,EAAAJ,MAAAA,EACA,IAEA,GACA,GACA,GACA,EACAqB,QAAAA,CAGAb,mBAAAA,SAAAA,GAAA,sBACA,cACA,EACAN,YAAAA,SAAAA,EAAAA,GAAA,sBACA,8BACA,8BACA,eACA,EACAI,cAAAA,SAAAA,EAAAA,GAAA,uBACAgB,OAAAA,KAAAA,uBAAAA,OAAAA,EAAAA,KAAAA,OAAAA,GAAAA,SACA,EACA5B,aAAAA,SAAAA,GAAA,uBACA,gCACA,OADA,wBACA,6BACA,GACA,EACA6B,OAAAA,WAAA,WACA,OADA,wBACA,oFACA,0FACA,8EACA,IADA,kBAEA,qCACA,YACA,6FACAxB,EAAAA,cAAAA,EAAAA,QAAAA,GAAAA,GAAA,KACA,YACA,oBACA,EAPA,qCAQA,KACA,IC9J2T,I,UCOvTyB,GAAY,OACd,EACAlD,EACAmC,GACA,EACA,KACA,KACA,MAIF,EAAee,EAAiB,O","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/TlmPacketsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?c699","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?4c57"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Telemetry Packets \"),_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,\"items-per-page\":10,\"footer-props\":{\n itemsPerPageOptions: [10, 20, 50, 100],\n showFirstLastPage: true,\n },\"sort-by\":\"target_name\",\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"tlm-packets-table\"},on:{\"current-items\":_vm.currentItems},scopedSlots:_vm._u([{key:\"item.view_raw\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":item.count < 1},on:{\"click\":function($event){return _vm.openViewRaw(item.target_name, item.packet_name)}}},[_vm._v(\" View Raw \")])]}},{key:\"item.view_in_pkt_viewer\",fn:function({ item }){return [(item.target_name === 'UNKNOWN')?_c('span',[_vm._v(\"N/A\")]):_vm._e(),(item.target_name != 'UNKNOWN')?_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.openPktViewer(item.target_name, item.packet_name)}}},[_vm._v(\" View In Packet Viewer \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-open-in-new \")])],1):_vm._e()]}}])}),_c('raw-dialog',{attrs:{\"type\":\"Telemetry\",\"target-name\":_vm.target_name,\"packet-name\":_vm.packet_name,\"visible\":_vm.viewRaw},on:{\"display\":_vm.rawDisplayCallback}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Telemetry Packets\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 :items-per-page=\"10\"\n :footer-props=\"{\n itemsPerPageOptions: [10, 20, 50, 100],\n showFirstLastPage: true,\n }\"\n sort-by=\"target_name\"\n @current-items=\"currentItems\"\n calculate-widths\n multi-sort\n data-test=\"tlm-packets-table\"\n >\n <template v-slot:item.view_raw=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"item.count < 1\"\n @click=\"openViewRaw(item.target_name, item.packet_name)\"\n >\n View Raw\n </v-btn>\n </template>\n <template v-slot:item.view_in_pkt_viewer=\"{ item }\">\n <span v-if=\"item.target_name === 'UNKNOWN'\">N/A</span>\n <v-btn\n v-if=\"item.target_name != 'UNKNOWN'\"\n block\n color=\"primary\"\n @click=\"openPktViewer(item.target_name, item.packet_name)\"\n >\n View In Packet Viewer\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <raw-dialog\n type=\"Telemetry\"\n :target-name=\"target_name\"\n :packet-name=\"packet_name\"\n :visible=\"viewRaw\"\n @display=\"rawDisplayCallback\"\n />\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\nimport RawDialog from './RawDialog'\n\nexport default {\n components: {\n RawDialog,\n },\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n headers: [\n { text: 'Target Name', value: 'target_name' },\n { text: 'Packet Name', value: 'packet_name' },\n { text: 'Packet Count', value: 'count' },\n { text: 'View Raw', value: 'view_raw' },\n { text: 'View In Packet Viewer', value: 'view_in_pkt_viewer' },\n ],\n viewRaw: false,\n target_name: null,\n packet_name: null,\n visible: null,\n }\n },\n created() {\n this.api.get_target_list().then((targets) => {\n targets.map((target) => {\n this.api.get_all_telemetry_names(target).then((names) => {\n this.data = this.data.concat(\n names.map((packet) => {\n return { target_name: target, packet_name: packet, count: 0 }\n })\n )\n })\n })\n })\n },\n methods: {\n // This method is hooked to the RawDialog as a callback to\n // keep track of whether the dialog is displayed\n rawDisplayCallback(bool) {\n this.viewRaw = bool\n },\n openViewRaw(target_name, packet_name) {\n this.target_name = target_name\n this.packet_name = packet_name\n this.viewRaw = true\n },\n openPktViewer(target_name, packet_name) {\n window.open(`/tools/packetviewer/${target_name}/${packet_name}`, '_blank')\n },\n currentItems(event) {\n this.visible = event.map((i) => {\n return [i.target_name, i.packet_name]\n })\n },\n update() {\n if (this.tabId != this.curTab) return\n if (this.currentItems === null) return\n this.api.get_tlm_cnts(this.visible).then((counts) => {\n for (let i = 0; i < counts.length; i++) {\n let index = this.data.findIndex(\n (item) =>\n item.target_name === this.visible[i][0] &&\n item.packet_name === this.visible[i][1]\n )\n this.data[index].count = counts[i]\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TlmPacketsTab.vue?vue&type=template&id=6010ae0c&\"\nimport script from \"./TlmPacketsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./TlmPacketsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["render","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","itemsPerPageOptions","showFirstLastPage","on","currentItems","scopedSlots","_u","key","fn","item","count","$event","openViewRaw","target_name","packet_name","_e","openPktViewer","viewRaw","rawDisplayCallback","staticRenderFns","components","RawDialog","mixins","props","tabId","curTab","text","visible","created","targets","names","methods","window","update","component"],"sourceRoot":""}
1
+ {"version":3,"file":"js/398.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/TlmPacketsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?c699","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?4c57"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Telemetry Packets \"),_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,\"items-per-page\":10,\"footer-props\":{\n itemsPerPageOptions: [10, 20, 50, 100],\n showFirstLastPage: true,\n },\"sort-by\":\"target_name\",\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"tlm-packets-table\"},on:{\"current-items\":_vm.currentItems},scopedSlots:_vm._u([{key:\"item.view_raw\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":item.count < 1},on:{\"click\":function($event){return _vm.openViewRaw(item.target_name, item.packet_name)}}},[_vm._v(\" View Raw \")])]}},{key:\"item.view_in_pkt_viewer\",fn:function({ item }){return [(item.target_name === 'UNKNOWN')?_c('span',[_vm._v(\"N/A\")]):_vm._e(),(item.target_name != 'UNKNOWN')?_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.openPktViewer(item.target_name, item.packet_name)}}},[_vm._v(\" View In Packet Viewer \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-open-in-new \")])],1):_vm._e()]}}])}),_c('raw-dialog',{attrs:{\"type\":\"Telemetry\",\"target-name\":_vm.target_name,\"packet-name\":_vm.packet_name,\"visible\":_vm.viewRaw},on:{\"display\":_vm.rawDisplayCallback}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Telemetry Packets\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 :items-per-page=\"10\"\n :footer-props=\"{\n itemsPerPageOptions: [10, 20, 50, 100],\n showFirstLastPage: true,\n }\"\n sort-by=\"target_name\"\n @current-items=\"currentItems\"\n calculate-widths\n multi-sort\n data-test=\"tlm-packets-table\"\n >\n <template v-slot:item.view_raw=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"item.count < 1\"\n @click=\"openViewRaw(item.target_name, item.packet_name)\"\n >\n View Raw\n </v-btn>\n </template>\n <template v-slot:item.view_in_pkt_viewer=\"{ item }\">\n <span v-if=\"item.target_name === 'UNKNOWN'\">N/A</span>\n <v-btn\n v-if=\"item.target_name != 'UNKNOWN'\"\n block\n color=\"primary\"\n @click=\"openPktViewer(item.target_name, item.packet_name)\"\n >\n View In Packet Viewer\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n </template>\n </v-data-table>\n <raw-dialog\n type=\"Telemetry\"\n :target-name=\"target_name\"\n :packet-name=\"packet_name\"\n :visible=\"viewRaw\"\n @display=\"rawDisplayCallback\"\n />\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\nimport RawDialog from './RawDialog'\n\nexport default {\n components: {\n RawDialog,\n },\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n headers: [\n { text: 'Target Name', value: 'target_name' },\n { text: 'Packet Name', value: 'packet_name' },\n { text: 'Packet Count', value: 'count' },\n { text: 'View Raw', value: 'view_raw' },\n { text: 'View In Packet Viewer', value: 'view_in_pkt_viewer' },\n ],\n viewRaw: false,\n target_name: null,\n packet_name: null,\n visible: null,\n }\n },\n created() {\n this.api.get_target_list().then((targets) => {\n targets.map((target) => {\n this.api.get_all_telemetry_names(target).then((names) => {\n this.data = this.data.concat(\n names.map((packet) => {\n return { target_name: target, packet_name: packet, count: 0 }\n })\n )\n })\n })\n })\n },\n methods: {\n // This method is hooked to the RawDialog as a callback to\n // keep track of whether the dialog is displayed\n rawDisplayCallback(bool) {\n this.viewRaw = bool\n },\n openViewRaw(target_name, packet_name) {\n this.target_name = target_name\n this.packet_name = packet_name\n this.viewRaw = true\n },\n openPktViewer(target_name, packet_name) {\n window.open(`/tools/packetviewer/${target_name}/${packet_name}`, '_blank')\n },\n currentItems(event) {\n this.visible = event.map((i) => {\n return [i.target_name, i.packet_name]\n })\n },\n update() {\n if (this.tabId != this.curTab) return\n if (this.currentItems === null) return\n this.api.get_tlm_cnts(this.visible).then((counts) => {\n for (let i = 0; i < counts.length; i++) {\n let index = this.data.findIndex(\n (item) =>\n item.target_name === this.visible[i][0] &&\n item.packet_name === this.visible[i][1]\n )\n this.data[index].count = counts[i]\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TlmPacketsTab.vue?vue&type=template&id=6010ae0c&\"\nimport script from \"./TlmPacketsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./TlmPacketsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["cov_1olbwcttzg","actualCoverage","s","render","f","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","itemsPerPageOptions","showFirstLastPage","on","currentItems","scopedSlots","_u","key","fn","_ref","item","count","$event","openViewRaw","target_name","packet_name","_ref2","b","_e","openPktViewer","viewRaw","rawDisplayCallback","staticRenderFns","components","RawDialog","mixins","Updater","props","tabId","Number","curTab","text","visible","created","_this","api","get_target_list","then","targets","map","target","get_all_telemetry_names","names","concat","packet","methods","bool","window","open","event","i","update","_this2","get_tlm_cnts","counts","_loop","index","findIndex","component"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"js/49.js","mappings":"81CAeY,+CAfZ,IAAIA,EAAS,WAAiB,WAAC,IAAIC,GAAG,WAACC,MAAKC,GAAE,WAACF,EAAIG,MAAMD,IAAG,kBAAOA,EAAG,SAAS,CAACA,EAAG,eAAe,CAACF,EAAII,GAAG,IAAIJ,EAAIK,GAAGL,EAAIM,KAAKC,QAAQ,aAAaL,EAAG,YAAYA,EAAG,eAAe,CAACM,MAAM,CAAC,cAAc,cAAc,MAAQ,SAAS,cAAc,GAAG,eAAe,IAAIC,MAAM,CAACC,MAAOV,EAAIW,OAAQC,SAAS,SAAUC,GAAK,sBAACb,EAAIW,OAAOE,CAAG,EAAEC,WAAW,aAAa,GAAGZ,EAAG,eAAe,CAACM,MAAM,CAAC,QAAUR,EAAIe,QAAQ,MAAQf,EAAIM,KAAK,OAASN,EAAIW,OAAO,iBAAiB,GAAG,eAAe,CAAEK,oBAAqB,CAAC,GAAI,IAAK,IAAK,mBAAmB,GAAG,aAAa,GAAG,YAAY,oBAAoB,EAC/kB,EACIC,GAAe,WAAG,I,y6HC6DtB,oCAZA,OACAC,OAAAA,CAAAA,EAAAA,GACAC,MAAAA,CACAC,MAAAA,OACAC,OAAAA,QAEAf,KAAAA,WACA,OADA,sBACA,CACAK,OAAAA,GACAL,KAAAA,GACAS,QAAAA,CACA,CAAAO,KAAAA,cAAAZ,MAAAA,QACA,CAAAY,KAAAA,aAAAZ,MAAAA,cAGA,EACAa,QAAAA,CACAC,OAAAA,WAAA,WACA,GADA,sBACA,sFACA,yEACA,yBACA,EADA,UACAC,GAAA,yDACA,aACAC,KAAAA,EAAAA,GACAC,UAAAA,EAAAA,IAEA,gCACA,GACA,IC/EwT,I,UCOpTC,GAAY,OACd,EACA7B,EACAkB,GACA,EACA,KACA,KACA,MAIF,EAAeW,EAAiB,O,2HCjBjB,SAASC,EAA2BC,EAAGC,GACpD,IAAIC,EAAuB,qBAAXC,QAA0BH,EAAEG,OAAOC,WAAaJ,EAAE,cAClE,IAAKE,EAAI,CACP,GAAIG,MAAMC,QAAQN,KAAOE,GAAKK,EAAAA,EAAAA,GAA2BP,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAC/GyB,IAAIF,EAAIE,GACZ,IAAIM,EAAI,EACJC,EAAI,WAAc,EACtB,MAAO,CACLC,EAAGD,EACHE,EAAG,WACD,OAAIH,GAAKR,EAAEvB,OAAe,CACxBmC,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOoB,EAAEQ,KAEb,EACAK,EAAG,SAAWC,GACZ,MAAMA,CACR,EACAC,EAAGN,EAEP,CACA,MAAM,IAAIO,UAAU,wIACtB,CACA,IAEEC,EAFEC,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLT,EAAG,WACDR,EAAKA,EAAGkB,KAAKpB,EACf,EACAW,EAAG,WACD,IAAIU,EAAOnB,EAAGoB,OAEd,OADAJ,EAAmBG,EAAKT,KACjBS,CACT,EACAR,EAAG,SAAWU,GACZJ,GAAS,EACTF,EAAMM,CACR,EACAR,EAAG,WACD,IACOG,GAAoC,MAAhBhB,EAAG,WAAmBA,EAAG,WAGpD,CAFE,QACA,GAAIiB,EAAQ,MAAMF,CACpB,CACF,EAEJ,C","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/TargetsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue?0dd5","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue?3388","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Targets \"),_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,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"targets-table\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Targets\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 :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"targets-table\"\n />\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n headers: [\n { text: 'Target Name', value: 'name' },\n { text: 'Interfaces', value: 'interface' },\n ],\n }\n },\n methods: {\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_target_interfaces().then((info) => {\n this.data = []\n for (let x of info) {\n this.data.push({\n name: x[0],\n interface: x[1],\n })\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetsTab.vue?vue&type=template&id=84cf23b6&\"\nimport script from \"./TargetsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["render","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","itemsPerPageOptions","staticRenderFns","mixins","props","tabId","curTab","text","methods","update","info","name","interface","component","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","i","F","s","n","done","e","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
1
+ {"version":3,"file":"js/49.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/TargetsTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue?0dd5","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/TargetsTab.vue?3388","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Targets \"),_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,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"targets-table\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Targets\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 :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"targets-table\"\n />\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n headers: [\n { text: 'Target Name', value: 'name' },\n { text: 'Interfaces', value: 'interface' },\n ],\n }\n },\n methods: {\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_target_interfaces().then((info) => {\n this.data = []\n for (let x of info) {\n this.data.push({\n name: x[0],\n interface: x[1],\n })\n }\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetsTab.vue?vue&type=template&id=84cf23b6&\"\nimport script from \"./TargetsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["cov_28up2yifcw","actualCoverage","s","render","f","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","itemsPerPageOptions","staticRenderFns","mixins","Updater","props","tabId","Number","curTab","text","methods","update","_this","b","api","get_target_interfaces","then","info","_step","_iterator","_createForOfIteratorHelper","n","done","x","push","name","interface","err","e","component","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","i","F","_e","TypeError","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"js/493.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/RoutersTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue?2832","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue?a9bb","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Routers \"),_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,\"custom-sort\":_vm.sortTable,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"routers-table\"},scopedSlots:_vm._u([{key:\"item.connect\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":_vm.buttonsDisabled},on:{\"click\":function($event){return _vm.connectDisconnect(item)}}},[_vm._v(\" \"+_vm._s(item.connect)+\" \")])]}},{key:\"item.connected\",fn:function({ item }){return [_c('span',{class:item.connectedClass},[_vm._v(\" \"+_vm._s(item.connected)+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Routers\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 :custom-sort=\"sortTable\"\n :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"routers-table\"\n >\n <template v-slot:item.connect=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"buttonsDisabled\"\n @click=\"connectDisconnect(item)\"\n >\n {{ item.connect }}\n </v-btn>\n </template>\n <template v-slot:item.connected=\"{ item }\">\n <span :class=\"item.connectedClass\">\n {{ item.connected }}\n </span>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n buttonsDisabled: false,\n headers: [\n { text: 'Name', value: 'name' },\n {\n text: 'Connect / Disconnect',\n value: 'connect',\n sortable: false,\n filterable: false,\n },\n { text: 'Connected', value: 'connected' },\n { text: 'Clients', value: 'clients' },\n { text: 'Tx Q Size', value: 'tx_q_size' },\n { text: 'Rx Q Size', value: 'rx_q_size' },\n { text: 'Tx Bytes', value: 'tx_bytes' },\n { text: 'Rx Bytes', value: 'rx_bytes' },\n { text: 'Cmd Pkts', value: 'cmd_pkts' },\n { text: 'Tlm Pkts', value: 'tlm_pkts' },\n ],\n }\n },\n methods: {\n // Custom sort algorithm to allow the connected column to be sorted by CONNECTED first\n sortTable(items, index, isDesc) {\n items.sort((a, b) => {\n for (let i = 0; i < index.length; i++) {\n let column = index[i]\n let desc = isDesc[i]\n\n if (column === 'connected') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n if (a[column] === 'CONNECTED') {\n return -1\n } else {\n return 1\n }\n } else {\n if (a[column] === 'CONNECTED') {\n return 1\n } else {\n return -1\n }\n }\n } else if (column === 'name') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // Strings so use localeCompare to sort\n return a[column].localeCompare(b[column])\n } else {\n return b[column].localeCompare(a[column])\n }\n } else {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // The rest of the columns are numbers so just subtract to sort\n return a[column] - b[column]\n } else {\n return b[column] - a[column]\n }\n }\n }\n })\n return items\n },\n connectDisconnect(item) {\n this.buttonsDisabled = true\n if (item.connected === 'DISCONNECTED') {\n this.api.connect_router(item.name)\n } else {\n this.api.disconnect_router(item.name)\n }\n },\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_router_info().then((info) => {\n this.data = [] // Clear the old data\n for (let int of info) {\n let connect = null\n let connectedClass = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connectedClass = 'openc3-white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connectedClass = 'openc3-green'\n } else {\n connect = 'Cancel'\n connectedClass = 'openc3-red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connectedClass: connectedClass,\n connected: int[1],\n clients: int[2],\n tx_q_size: int[3],\n rx_q_size: int[4],\n tx_bytes: int[5],\n rx_bytes: int[6],\n cmd_pkts: int[7],\n tlm_pkts: int[8],\n })\n }\n this.buttonsDisabled = false\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RoutersTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RoutersTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoutersTab.vue?vue&type=template&id=b1b8a9de&\"\nimport script from \"./RoutersTab.vue?vue&type=script&lang=js&\"\nexport * from \"./RoutersTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["render","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","sortTable","itemsPerPageOptions","scopedSlots","_u","key","fn","item","buttonsDisabled","on","$event","connectDisconnect","connect","class","connectedClass","connected","staticRenderFns","mixins","props","tabId","curTab","text","sortable","filterable","methods","items","update","info","name","clients","tx_q_size","rx_q_size","tx_bytes","rx_bytes","cmd_pkts","tlm_pkts","component","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","i","F","s","n","done","e","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
1
+ {"version":3,"file":"js/493.js","mappings":"+8DAeY,OAAAA,EAAA,kBAAAC,CAAA,EAAAA,CAAA,CAAAD,IAAAA,IAAAE,EAAA,KAfZ,IAAIC,EAAS,WAAiBH,IAAAI,EAAA,KAAC,IAAIC,GAAGL,IAAAE,EAAA,KAACI,MAAKC,GAAEP,IAAAE,EAAA,KAACG,EAAIG,MAAMD,IAAG,OAAAP,IAAAE,EAAA,KAAOK,EAAG,SAAS,CAACA,EAAG,eAAe,CAACF,EAAII,GAAG,IAAIJ,EAAIK,GAAGL,EAAIM,KAAKC,QAAQ,aAAaL,EAAG,YAAYA,EAAG,eAAe,CAACM,MAAM,CAAC,cAAc,cAAc,MAAQ,SAAS,cAAc,GAAG,eAAe,IAAIC,MAAM,CAACC,MAAOV,EAAIW,OAAQC,SAAS,SAAUC,GAAKlB,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KAACG,EAAIW,OAAOE,CAAG,EAAEC,WAAW,aAAa,GAAGZ,EAAG,eAAe,CAACM,MAAM,CAAC,QAAUR,EAAIe,QAAQ,MAAQf,EAAIM,KAAK,OAASN,EAAIW,OAAO,cAAcX,EAAIgB,UAAU,iBAAiB,GAAG,eAAe,CAAEC,oBAAqB,CAAC,GAAI,IAAK,IAAK,mBAAmB,GAAG,aAAa,GAAG,YAAY,iBAAiBC,YAAYlB,EAAImB,GAAG,CAAC,CAACC,IAAI,eAAeC,GAAG,SAAAC,GAAkB,IAAPC,EAAID,EAAJC,KAAQ,OAAJ5B,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KAAW,CAACK,EAAG,QAAQ,CAACM,MAAM,CAAC,MAAQ,GAAG,MAAQ,UAAU,SAAWR,EAAIwB,iBAAiBC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAD/B,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KAAQG,EAAI2B,kBAAkBJ,EAAK,IAAI,CAACvB,EAAII,GAAG,IAAIJ,EAAIK,GAAGkB,EAAKK,SAAS,OAAO,GAAG,CAACR,IAAI,iBAAiBC,GAAG,SAAAQ,GAAkB,IAAPN,EAAIM,EAAJN,KAAQ,OAAJ5B,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KAAW,CAACK,EAAG,OAAO,CAAC4B,MAAMP,EAAKQ,gBAAgB,CAAC/B,EAAII,GAAG,IAAIJ,EAAIK,GAAGkB,EAAKS,WAAW,OAAO,QAAQ,EACx/B,EACIC,GAAetC,IAAAE,EAAA,KAAG,I,6obC8EtB,OAAAF,EAAA,kBAAAC,CAAA,EAAAA,CAAA,CAAAD,IAZA,OACAuC,OAAA,CAAAC,EAAAA,GACAC,MAAA,CACAC,MAAAC,OACAC,OAAAD,QAEAhC,KAAA,WACA,OADAX,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KACA,CACAc,OAAA,GACAL,KAAA,GACAkB,iBAAA,EACAT,QAAA,CACA,CAAAyB,KAAA,OAAA9B,MAAA,QACA,CACA8B,KAAA,uBACA9B,MAAA,UACA+B,UAAA,EACAC,YAAA,GAEA,CAAAF,KAAA,YAAA9B,MAAA,aACA,CAAA8B,KAAA,UAAA9B,MAAA,WACA,CAAA8B,KAAA,YAAA9B,MAAA,aACA,CAAA8B,KAAA,YAAA9B,MAAA,aACA,CAAA8B,KAAA,WAAA9B,MAAA,YACA,CAAA8B,KAAA,WAAA9B,MAAA,YACA,CAAA8B,KAAA,WAAA9B,MAAA,YACA,CAAA8B,KAAA,WAAA9B,MAAA,aAGA,EACAiC,QAAA,CAEA3B,UAAA,SAAA4B,EAAAC,EAAAC,GAiDA,OAjDAnD,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KACA+C,EAAAG,MAAA,SAAAC,EAAAC,GAAAtD,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,KACA,QAAAqD,GAAAvD,IAAAE,EAAA,QAAAqD,EAAAL,EAAAtC,OAAA2C,IAAA,CACA,IAAAC,GAAAxD,IAAAE,EAAA,KAAAgD,EAAAK,IACAE,GAAAzD,IAAAE,EAAA,KAAAiD,EAAAI,IAEA,GAFAvD,IAAAE,EAAA,KAEA,cAAAsD,EAAA,CAEA,GAFAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,KAEAmD,EAAAG,KAAAF,EAAAE,GAAA,CAAAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,KACA,QACA,CACA,OADAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,KACAuD,GAMAzD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACA,cAAAmD,EAAAG,IAAAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACA,IACAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,OACA,KAVAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACA,cAAAmD,EAAAG,IAAAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,OACA,IACAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACA,GASA,IAAAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,eAAAsD,EAAA,CAEA,GAFAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MAEAmD,EAAAG,KAAAF,EAAAE,GAAA,CAAAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACA,QACA,CACA,OADAF,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACAuD,GAGAzD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACAoD,EAAAE,GAAAE,cAAAL,EAAAG,MAJAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MAEAmD,EAAAG,GAAAE,cAAAJ,EAAAE,IAIA,CAEA,GAFAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MAEAmD,EAAAG,KAAAF,EAAAE,GAGA,OADAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACAuD,GAGAzD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MACAoD,EAAAE,GAAAH,EAAAG,KAJAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,MAEAmD,EAAAG,GAAAF,EAAAE,IALAxD,IAAAsD,EAAA,QAAAtD,IAAAE,EAAA,KAUA,CACA,IAAAF,IAAAE,EAAA,MACA+C,CACA,EACAjB,kBAAA,SAAAJ,GAAA5B,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,MACA,KAAA2B,iBAAA,EAAA7B,IAAAE,EAAA,MACA,iBAAA0B,EAAAS,WAAArC,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA,KAAAyD,IAAAC,eAAAhC,EAAAiC,QACA7D,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA,KAAAyD,IAAAG,kBAAAlC,EAAAiC,MAEA,EACAE,OAAA,eAAAC,EAAA,KACA,GADAhE,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,MACA,KAAAwC,OAAA,KAAAE,OAAA,OAAA5C,IAAAsD,EAAA,cAAAtD,IAAAE,EAAA,MAAAF,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA,KAAAyD,IAAAM,sBAAAC,MAAA,SAAAC,GAAAnE,IAAAI,EAAA,KAAAJ,IAAAE,EAAA,MACA8D,EAAArD,KAAA,GAAAX,IAAAE,EAAA,UACAkE,EADAC,GAAAC,EAAAA,EAAAA,GACAH,GAAA,QAAAE,EAAAnE,MAAAkE,EAAAC,EAAAE,KAAAC,MAAA,KAAAC,EAAAL,EAAArD,MACAkB,GAAAjC,IAAAE,EAAA,YACAkC,GAAApC,IAAAE,EAAA,YAAAF,IAAAE,EAAA,MACA,gBAAAuE,EAAA,IAAAzE,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA+B,EAAA,UAAAjC,IAAAE,EAAA,MACAkC,EAAA,iBACApC,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,mBAAAuE,EAAA,IAAAzE,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA+B,EAAA,aAAAjC,IAAAE,EAAA,MACAkC,EAAA,iBACApC,IAAAsD,EAAA,SAAAtD,IAAAE,EAAA,MACA+B,EAAA,SAAAjC,IAAAE,EAAA,MACAkC,EAAA,eACApC,IAAAE,EAAA,MACA8D,EAAArD,KAAA+D,KAAA,CACAb,KAAAY,EAAA,GACAxC,QAAAA,EACAG,eAAAA,EACAC,UAAAoC,EAAA,GACAE,QAAAF,EAAA,GACAG,UAAAH,EAAA,GACAI,UAAAJ,EAAA,GACAK,SAAAL,EAAA,GACAM,SAAAN,EAAA,GACAO,SAAAP,EAAA,GACAQ,SAAAR,EAAA,IAEA,QAAAS,GAAAb,EAAAc,EAAAD,EAAA,SAAAb,EAAAjE,GAAA,CAAAJ,IAAAE,EAAA,MACA8D,EAAAnC,iBAAA,CACA,GACA,IChMwT,I,UCOpTuD,GAAY,OACd,EACAjF,EACAmC,GACA,EACA,KACA,KACA,MAIF,EAAe8C,EAAiB,O,2HCjBjB,SAASd,EAA2Be,EAAGC,GACpD,IAAIC,EAAuB,qBAAXC,QAA0BH,EAAEG,OAAOC,WAAaJ,EAAE,cAClE,IAAKE,EAAI,CACP,GAAIG,MAAMC,QAAQN,KAAOE,GAAKK,EAAAA,EAAAA,GAA2BP,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEzE,OAAqB,CAC/G2E,IAAIF,EAAIE,GACZ,IAAIhC,EAAI,EACJsC,EAAI,WAAc,EACtB,MAAO,CACL3F,EAAG2F,EACHtB,EAAG,WACD,OAAIhB,GAAK8B,EAAEzE,OAAe,CACxB4D,MAAM,GAED,CACLA,MAAM,EACNzD,MAAOsE,EAAE9B,KAEb,EACA4B,EAAG,SAAWW,GACZ,MAAMA,CACR,EACA1F,EAAGyF,EAEP,CACA,MAAM,IAAIE,UAAU,wIACtB,CACA,IAEEb,EAFEc,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACL/F,EAAG,WACDqF,EAAKA,EAAGW,KAAKb,EACf,EACAd,EAAG,WACD,IAAI4B,EAAOZ,EAAGa,OAEd,OADAJ,EAAmBG,EAAK3B,KACjB2B,CACT,EACAhB,EAAG,SAAWkB,GACZJ,GAAS,EACTf,EAAMmB,CACR,EACAjG,EAAG,WACD,IACO4F,GAAoC,MAAhBT,EAAG,WAAmBA,EAAG,WACpD,CAAE,QACA,GAAIU,EAAQ,MAAMf,CACpB,CACF,EAEJ,C","sources":["webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/src/tools/CmdTlmServer/RoutersTab.vue","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue?2832","webpack://@openc3/cosmos-tool-cmdtlmserver/./src/tools/CmdTlmServer/RoutersTab.vue?a9bb","webpack://@openc3/cosmos-tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.data.length)+\" Routers \"),_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,\"custom-sort\":_vm.sortTable,\"items-per-page\":10,\"footer-props\":{ itemsPerPageOptions: [10, 20, -1] },\"calculate-widths\":\"\",\"multi-sort\":\"\",\"data-test\":\"routers-table\"},scopedSlots:_vm._u([{key:\"item.connect\",fn:function({ item }){return [_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"primary\",\"disabled\":_vm.buttonsDisabled},on:{\"click\":function($event){return _vm.connectDisconnect(item)}}},[_vm._v(\" \"+_vm._s(item.connect)+\" \")])]}},{key:\"item.connected\",fn:function({ item }){return [_c('span',{class:item.connectedClass},[_vm._v(\" \"+_vm._s(item.connected)+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title>\n {{ data.length }} Routers\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 :custom-sort=\"sortTable\"\n :items-per-page=\"10\"\n :footer-props=\"{ itemsPerPageOptions: [10, 20, -1] }\"\n calculate-widths\n multi-sort\n data-test=\"routers-table\"\n >\n <template v-slot:item.connect=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n :disabled=\"buttonsDisabled\"\n @click=\"connectDisconnect(item)\"\n >\n {{ item.connect }}\n </v-btn>\n </template>\n <template v-slot:item.connected=\"{ item }\">\n <span :class=\"item.connectedClass\">\n {{ item.connected }}\n </span>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport Updater from './Updater'\n\nexport default {\n mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n search: '',\n data: [],\n buttonsDisabled: false,\n headers: [\n { text: 'Name', value: 'name' },\n {\n text: 'Connect / Disconnect',\n value: 'connect',\n sortable: false,\n filterable: false,\n },\n { text: 'Connected', value: 'connected' },\n { text: 'Clients', value: 'clients' },\n { text: 'Tx Q Size', value: 'tx_q_size' },\n { text: 'Rx Q Size', value: 'rx_q_size' },\n { text: 'Tx Bytes', value: 'tx_bytes' },\n { text: 'Rx Bytes', value: 'rx_bytes' },\n { text: 'Cmd Pkts', value: 'cmd_pkts' },\n { text: 'Tlm Pkts', value: 'tlm_pkts' },\n ],\n }\n },\n methods: {\n // Custom sort algorithm to allow the connected column to be sorted by CONNECTED first\n sortTable(items, index, isDesc) {\n items.sort((a, b) => {\n for (let i = 0; i < index.length; i++) {\n let column = index[i]\n let desc = isDesc[i]\n\n if (column === 'connected') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n if (a[column] === 'CONNECTED') {\n return -1\n } else {\n return 1\n }\n } else {\n if (a[column] === 'CONNECTED') {\n return 1\n } else {\n return -1\n }\n }\n } else if (column === 'name') {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // Strings so use localeCompare to sort\n return a[column].localeCompare(b[column])\n } else {\n return b[column].localeCompare(a[column])\n }\n } else {\n // Items are the same so continue to let subsequent column sorts apply\n if (a[column] === b[column]) {\n continue\n }\n if (!desc) {\n // The rest of the columns are numbers so just subtract to sort\n return a[column] - b[column]\n } else {\n return b[column] - a[column]\n }\n }\n }\n })\n return items\n },\n connectDisconnect(item) {\n this.buttonsDisabled = true\n if (item.connected === 'DISCONNECTED') {\n this.api.connect_router(item.name)\n } else {\n this.api.disconnect_router(item.name)\n }\n },\n update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_router_info().then((info) => {\n this.data = [] // Clear the old data\n for (let int of info) {\n let connect = null\n let connectedClass = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connectedClass = 'openc3-white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connectedClass = 'openc3-green'\n } else {\n connect = 'Cancel'\n connectedClass = 'openc3-red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connectedClass: connectedClass,\n connected: int[1],\n clients: int[2],\n tx_q_size: int[3],\n rx_q_size: int[4],\n tx_bytes: int[5],\n rx_bytes: int[6],\n cmd_pkts: int[7],\n tlm_pkts: int[8],\n })\n }\n this.buttonsDisabled = false\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RoutersTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RoutersTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoutersTab.vue?vue&type=template&id=b1b8a9de&\"\nimport script from \"./RoutersTab.vue?vue&type=script&lang=js&\"\nexport * from \"./RoutersTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["cov_105jidd1oz","actualCoverage","s","render","f","_vm","this","_c","_self","_v","_s","data","length","attrs","model","value","search","callback","$$v","expression","headers","sortTable","itemsPerPageOptions","scopedSlots","_u","key","fn","_ref","item","buttonsDisabled","on","$event","connectDisconnect","connect","_ref2","class","connectedClass","connected","staticRenderFns","mixins","Updater","props","tabId","Number","curTab","text","sortable","filterable","methods","items","index","isDesc","sort","a","b","i","column","desc","localeCompare","api","connect_router","name","disconnect_router","update","_this","get_all_router_info","then","info","_step","_iterator","_createForOfIteratorHelper","n","done","int","push","clients","tx_q_size","rx_q_size","tx_bytes","rx_bytes","cmd_pkts","tlm_pkts","err","e","component","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","F","_e","TypeError","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}