cosmosc2-tool-cmdtlmserver 5.0.2.pre.beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ (self["webpackChunk_cosmosc2_tool_cmdtlmserver"]=self["webpackChunk_cosmosc2_tool_cmdtlmserver"]||[]).push([[273],{4273:function(n,e,t){"use strict";t.r(e),t.d(e,{default:function(){return u}});var s=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",[t("v-card",{attrs:{flat:""}},[t("v-container",{staticClass:"ma-0 pa-4"},[t("v-row",{attrs:{"no-gutters":""}},[t("v-col",{attrs:{cols:"auto"}},[t("v-select",{attrs:{label:"Limits Set",items:n.limitsSets,"data-test":"limits-set"},model:{value:n.currentLimitsSet,callback:function(e){n.currentLimitsSet=e},expression:"currentLimitsSet"}})],1)],1)],1)],1)],1)},a=[],l=(t(1245),t(1479));function i(){var n="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/StatusTab.vue",e="d35935dd4c11b443690b972f96a2ea08a51e4fb6",t=new Function("return this")(),s="__coverage__",a={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/StatusTab.vue",statementMap:{0:{start:{line:84,column:4},end:{line:104,column:5}},1:{start:{line:108,column:6},end:{line:108,column:43}},2:{start:{line:112,column:4},end:{line:114,column:6}},3:{start:{line:113,column:6},end:{line:113,column:28}},4:{start:{line:115,column:4},end:{line:115,column:30}},5:{start:{line:116,column:4},end:{line:119,column:5}},6:{start:{line:122,column:4},end:{line:122,column:49}},7:{start:{line:158,column:6},end:{line:160,column:8}},8:{start:{line:159,column:8},end:{line:159,column:38}},9:{start:{line:163,column:6},end:{line:163,column:36}},10:{start:{line:166,column:6},end:{line:170,column:7}},11:{start:{line:167,column:8},end:{line:167,column:44}},12:{start:{line:168,column:13},end:{line:170,column:7}},13:{start:{line:169,column:8},end:{line:169,column:43}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:83,column:2},end:{line:83,column:3}},loc:{start:{line:83,column:9},end:{line:105,column:3}},line:83},1:{name:"(anonymous_1)",decl:{start:{line:107,column:22},end:{line:107,column:23}},loc:{start:{line:107,column:48},end:{line:109,column:5}},line:107},2:{name:"(anonymous_2)",decl:{start:{line:111,column:2},end:{line:111,column:3}},loc:{start:{line:111,column:12},end:{line:120,column:3}},line:111},3:{name:"(anonymous_3)",decl:{start:{line:112,column:36},end:{line:112,column:37}},loc:{start:{line:112,column:46},end:{line:114,column:5}},line:112},4:{name:"(anonymous_4)",decl:{start:{line:121,column:13},end:{line:121,column:14}},loc:{start:{line:121,column:25},end:{line:123,column:3}},line:121},5:{name:"(anonymous_5)",decl:{start:{line:157,column:25},end:{line:157,column:26}},loc:{start:{line:157,column:37},end:{line:161,column:5}},line:157},6:{name:"(anonymous_6)",decl:{start:{line:158,column:37},end:{line:158,column:38}},loc:{start:{line:158,column:49},end:{line:160,column:7}},line:158},7:{name:"(anonymous_7)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:24},end:{line:164,column:5}},line:162},8:{name:"(anonymous_8)",decl:{start:{line:165,column:4},end:{line:165,column:5}},loc:{start:{line:165,column:29},end:{line:171,column:5}},line:165}},branchMap:{0:{loc:{start:{line:108,column:6},end:{line:108,column:43}},type:"binary-expr",locations:[{start:{line:108,column:6},end:{line:108,column:14}},{start:{line:108,column:18},end:{line:108,column:43}}],line:108},1:{loc:{start:{line:166,column:6},end:{line:170,column:7}},type:"if",locations:[{start:{line:166,column:6},end:{line:170,column:7}},{start:{line:168,column:13},end:{line:170,column:7}}],line:166},2:{loc:{start:{line:168,column:13},end:{line:170,column:7}},type:"if",locations:[{start:{line:168,column:13},end:{line:170,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:168}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},b:{0:[0,0],1:[0,0],2:[0,0]},inputSourceMap:{version:3,sources:["StatusTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"StatusTab.vue",sourceRoot:"src/tools/CmdTlmServer",sourcesContent:["\x3c!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n--\x3e\n\n<template>\n <div>\n \x3c!-- Use a container here so we can do cols=\"auto\" to resize v-select --\x3e\n <v-card flat>\n <v-container class=\"ma-0 pa-4\">\n <v-row no-gutters>\n <v-col cols=\"auto\">\n \x3c!-- TODO: move to admin settings and delete this tab --\x3e\n <v-select\n label=\"Limits Set\"\n :items=\"limitsSets\"\n v-model=\"currentLimitsSet\"\n data-test=\"limits-set\"\n />\n </v-col>\n </v-row>\n </v-container>\n </v-card>\n\n \x3c!-- v-card flat>\n <v-card-title>API Status</v-card-title>\n <v-data-table\n :headers=\"apiHeaders\"\n :items=\"apiStatus\"\n calculate-widths\n disable-pagination\n hide-default-footer\n />\n </v-card>\n\n <v-card flat>\n <v-card-title>Background Tasks</v-card-title>\n <v-data-table\n :headers=\"backgroundHeaders\"\n :items=\"backgroundTasks\"\n calculate-widths\n disable-pagination\n hide-default-footer\n >\n <template v-slot:item.control=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n @click=\"taskControl(item.name, item.control)\"\n >\n {{ item.control }}\n </v-btn>\n </template>\n </v-data-table>\n </v-card --\x3e\n </div>\n</template>\n\n<script>\n// import Updater from './Updater'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\n\nexport default {\n // mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n api: new CosmosApi(),\n apiStatus: [],\n apiHeaders: [\n { text: 'Port', value: 'port' },\n { text: 'Clients', value: 'clients' },\n { text: 'Requests', value: 'requests' },\n { text: 'Avg Request Time', value: 'avgTime' },\n { text: 'Server Threads', value: 'threads' },\n ],\n backgroundTasks: [],\n backgroundHeaders: [\n { text: 'Name', value: 'name' },\n { text: 'State', value: 'state' },\n { text: 'Status', value: 'status' },\n { text: 'Control', value: 'control' },\n ],\n limitsSets: [],\n currentLimitsSet: '',\n currentSetRefreshInterval: null,\n }\n },\n watch: {\n currentLimitsSet: function (newVal, oldVal) {\n !!oldVal && this.limitsChange(newVal)\n },\n },\n created() {\n this.api.get_limits_sets().then((sets) => {\n this.limitsSets = sets\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n },\n destroyed: function () {\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n // update() {\n // if (this.tabId != this.curTab) return\n // this.api.get_server_status().then((status) => {\n // this.currentLimitsSet = status[0]\n // this.apiStatus = [\n // {\n // port: status[1],\n // clients: status[2],\n // requests: status[3],\n // avgTime: (Math.round(status[4] * 1000000) / 1000000).toFixed(6),\n // threads: status[5],\n // },\n // ]\n // })\n // this.api.get_background_tasks().then((tasks) => {\n // this.backgroundTasks = []\n // for (let x of tasks) {\n // var control = ''\n // if (x[1] == 'no thread' || x[1] == 'complete') {\n // control = 'Start'\n // } else {\n // control = 'Stop'\n // }\n // this.backgroundTasks.push({\n // name: x[0],\n // state: x[1],\n // status: x[2],\n // control: control,\n // })\n // }\n // })\n // },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n limitsChange(value) {\n this.api.set_limits_set(value)\n },\n taskControl(name, state) {\n if (state == 'Start') {\n this.api.start_background_task(name)\n } else if (state == 'Stop') {\n this.api.stop_background_task(name)\n }\n },\n },\n}\n<\/script>\n\n<style scoped>\n.container,\n.theme--dark.v-card,\n.theme--dark.v-sheet {\n background-color: var(--v-tertiary-darken2);\n}\n</style>\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"d35935dd4c11b443690b972f96a2ea08a51e4fb6"},l=t[s]||(t[s]={});l[n]&&l[n].hash===e||(l[n]=a);var o=l[n];return i=function(){return o},o}i();var o={props:{tabId:Number,curTab:Number},data:function(){return i().f[0]++,i().s[0]++,{api:new l.J,apiStatus:[],apiHeaders:[{text:"Port",value:"port"},{text:"Clients",value:"clients"},{text:"Requests",value:"requests"},{text:"Avg Request Time",value:"avgTime"},{text:"Server Threads",value:"threads"}],backgroundTasks:[],backgroundHeaders:[{text:"Name",value:"name"},{text:"State",value:"state"},{text:"Status",value:"status"},{text:"Control",value:"control"}],limitsSets:[],currentLimitsSet:"",currentSetRefreshInterval:null}},watch:{currentLimitsSet:function(n,e){i().f[1]++,i().s[1]++,i().b[0][0]++,e&&(i().b[0][1]++,this.limitsChange(n))}},created:function(){var n=this;i().f[2]++,i().s[2]++,this.api.get_limits_sets().then((function(e){i().f[3]++,i().s[3]++,n.limitsSets=e})),i().s[4]++,this.getCurrentLimitsSet(),i().s[5]++,this.currentSetRefreshInterval=setInterval(this.getCurrentLimitsSet,6e4)},destroyed:function(){i().f[4]++,i().s[6]++,clearInterval(this.currentSetRefreshInterval)},methods:{getCurrentLimitsSet:function(){var n=this;i().f[5]++,i().s[7]++,this.api.get_limits_set().then((function(e){i().f[6]++,i().s[8]++,n.currentLimitsSet=e}))},limitsChange:function(n){i().f[7]++,i().s[9]++,this.api.set_limits_set(n)},taskControl:function(n,e){i().f[8]++,i().s[10]++,"Start"==e?(i().b[1][0]++,i().s[11]++,this.api.start_background_task(n)):(i().b[1][1]++,i().s[12]++,"Stop"==e?(i().b[2][0]++,i().s[13]++,this.api.stop_background_task(n)):i().b[2][1]++)}}},r=o,A=(t(5566),t(3287)),c=(0,A.Z)(r,s,a,!1,null,"0daef275",null),u=c.exports},9786:function(n,e,t){"use strict";t.r(e);var s=t(3467),a=t.n(s),l=t(8715),i=t.n(l),o=i()(a());o.push([n.id,".container[data-v-0daef275],.theme--dark.v-card[data-v-0daef275],.theme--dark.v-sheet[data-v-0daef275]{background-color:var(--v-tertiary-darken2)}",""]),e["default"]=o},5566:function(n,e,t){var s=t(9786);s.__esModule&&(s=s.default),"string"===typeof s&&(s=[[n.id,s,""]]),s.locals&&(n.exports=s.locals);var a=t(3514).Z;a("02adaef3",s,!0,{sourceMap:!1,shadowMode:!1})}}]);
2
+ //# sourceMappingURL=273.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/273.js","mappings":"kMAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,KAAK,CAACF,EAAG,cAAc,CAACG,YAAY,aAAa,CAACH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQ,aAAa,MAAQN,EAAIQ,WAAW,YAAY,cAAcC,MAAM,CAACC,MAAOV,EAAoB,iBAAEW,SAAS,SAAUC,GAAMZ,EAAIa,iBAAiBD,GAAKE,WAAW,uBAAuB,IAAI,IAAI,IAAI,IAAI,IACleC,EAAkB,G,wpSC2EtB,OAEEC,MAAO,CACLC,MAAOC,OACPC,OAAQD,QAEVE,KANF,WAOI,OADJ,sBACW,CACLC,IAAK,IAAIA,EAAAA,EACTC,UAAW,GACXC,WAAY,CAClB,CAAQ,KAARC,OAAQ,MAARd,QACA,CAAQ,KAARc,UAAQ,MAARd,WACA,CAAQ,KAARc,WAAQ,MAARd,YACA,CAAQ,KAARc,mBAAQ,MAARd,WACA,CAAQ,KAARc,iBAAQ,MAARd,YAEMe,gBAAiB,GACjBC,kBAAmB,CACzB,CAAQ,KAARF,OAAQ,MAARd,QACA,CAAQ,KAARc,QAAQ,MAARd,SACA,CAAQ,KAARc,SAAQ,MAARd,UACA,CAAQ,KAARc,UAAQ,MAARd,YAEMF,WAAY,GACZK,iBAAkB,GAClBc,0BAA2B,OAG/BC,MAAO,CACLf,iBAAkB,SAAtBA,EAAAA,GAAA,sBACA,wDAGEgB,QAlCF,WAkCA,iCACI5B,KAAKoB,IAAIS,kBAAkBC,MAAK,SAApC,yBACM,EAAN,gBAFA,WAII9B,KAAK+B,sBAJT,WAKI/B,KAAK0B,0BAA4BM,YACrC,yBACA,MAGEC,UAAW,WAAb,sBACIC,cAAclC,KAAK0B,4BAErBS,QAAS,CAiCPJ,oBAAqB,WAAzB,iCACM/B,KAAKoB,IAAIgB,iBAAiBN,MAAK,SAArC,yBACQ,EAAR,uBAGIO,aAtCJ,SAsCA5B,GAAA,sBACMT,KAAKoB,IAAIkB,eAAe7B,IAE1B8B,YAzCJ,SAyCAC,EAAAC,GAAA,uBACmB,SAATA,GAAV,0BACQzC,KAAKoB,IAAIsB,sBAAsBF,KACvC,+DACA,kCADA,kBCvKoY,I,oBCQhYG,GAAY,OACd,EACA7C,EACAgB,GACA,EACA,KACA,WACA,MAIF,EAAe6B,EAAiB,S,mFChB5BC,EAA0B,IAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,qJAAsJ,KAE/L,gB,qBCJA,IAAIC,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQE,SACnB,kBAAZF,IAAsBA,EAAU,CAAC,CAACF,EAAOC,GAAIC,EAAS,MAC7DA,EAAQG,SAAQL,EAAOM,QAAUJ,EAAQG,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYL,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa","sources":["webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/StatusTab.vue?11b6","webpack://@cosmosc2/tool-cmdtlmserver/src/tools/CmdTlmServer/StatusTab.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/StatusTab.vue?044e","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/StatusTab.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/StatusTab.vue?aded","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/StatusTab.vue?d320"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-container',{staticClass:\"ma-0 pa-4\"},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-select',{attrs:{\"label\":\"Limits Set\",\"items\":_vm.limitsSets,\"data-test\":\"limits-set\"},model:{value:(_vm.currentLimitsSet),callback:function ($$v) {_vm.currentLimitsSet=$$v},expression:\"currentLimitsSet\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <!-- Use a container here so we can do cols=\"auto\" to resize v-select -->\n <v-card flat>\n <v-container class=\"ma-0 pa-4\">\n <v-row no-gutters>\n <v-col cols=\"auto\">\n <!-- TODO: move to admin settings and delete this tab -->\n <v-select\n label=\"Limits Set\"\n :items=\"limitsSets\"\n v-model=\"currentLimitsSet\"\n data-test=\"limits-set\"\n />\n </v-col>\n </v-row>\n </v-container>\n </v-card>\n\n <!-- v-card flat>\n <v-card-title>API Status</v-card-title>\n <v-data-table\n :headers=\"apiHeaders\"\n :items=\"apiStatus\"\n calculate-widths\n disable-pagination\n hide-default-footer\n />\n </v-card>\n\n <v-card flat>\n <v-card-title>Background Tasks</v-card-title>\n <v-data-table\n :headers=\"backgroundHeaders\"\n :items=\"backgroundTasks\"\n calculate-widths\n disable-pagination\n hide-default-footer\n >\n <template v-slot:item.control=\"{ item }\">\n <v-btn\n block\n color=\"primary\"\n @click=\"taskControl(item.name, item.control)\"\n >\n {{ item.control }}\n </v-btn>\n </template>\n </v-data-table>\n </v-card -->\n </div>\n</template>\n\n<script>\n// import Updater from './Updater'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\n\nexport default {\n // mixins: [Updater],\n props: {\n tabId: Number,\n curTab: Number,\n },\n data() {\n return {\n api: new CosmosApi(),\n apiStatus: [],\n apiHeaders: [\n { text: 'Port', value: 'port' },\n { text: 'Clients', value: 'clients' },\n { text: 'Requests', value: 'requests' },\n { text: 'Avg Request Time', value: 'avgTime' },\n { text: 'Server Threads', value: 'threads' },\n ],\n backgroundTasks: [],\n backgroundHeaders: [\n { text: 'Name', value: 'name' },\n { text: 'State', value: 'state' },\n { text: 'Status', value: 'status' },\n { text: 'Control', value: 'control' },\n ],\n limitsSets: [],\n currentLimitsSet: '',\n currentSetRefreshInterval: null,\n }\n },\n watch: {\n currentLimitsSet: function (newVal, oldVal) {\n !!oldVal && this.limitsChange(newVal)\n },\n },\n created() {\n this.api.get_limits_sets().then((sets) => {\n this.limitsSets = sets\n })\n this.getCurrentLimitsSet()\n this.currentSetRefreshInterval = setInterval(\n this.getCurrentLimitsSet,\n 60 * 1000\n )\n },\n destroyed: function () {\n clearInterval(this.currentSetRefreshInterval)\n },\n methods: {\n // update() {\n // if (this.tabId != this.curTab) return\n // this.api.get_server_status().then((status) => {\n // this.currentLimitsSet = status[0]\n // this.apiStatus = [\n // {\n // port: status[1],\n // clients: status[2],\n // requests: status[3],\n // avgTime: (Math.round(status[4] * 1000000) / 1000000).toFixed(6),\n // threads: status[5],\n // },\n // ]\n // })\n // this.api.get_background_tasks().then((tasks) => {\n // this.backgroundTasks = []\n // for (let x of tasks) {\n // var control = ''\n // if (x[1] == 'no thread' || x[1] == 'complete') {\n // control = 'Start'\n // } else {\n // control = 'Stop'\n // }\n // this.backgroundTasks.push({\n // name: x[0],\n // state: x[1],\n // status: x[2],\n // control: control,\n // })\n // }\n // })\n // },\n getCurrentLimitsSet: function () {\n this.api.get_limits_set().then((result) => {\n this.currentLimitsSet = result\n })\n },\n limitsChange(value) {\n this.api.set_limits_set(value)\n },\n taskControl(name, state) {\n if (state == 'Start') {\n this.api.start_background_task(name)\n } else if (state == 'Stop') {\n this.api.stop_background_task(name)\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.container,\n.theme--dark.v-card,\n.theme--dark.v-sheet {\n background-color: var(--v-tertiary-darken2);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StatusTab.vue?vue&type=template&id=0daef275&scoped=true&\"\nimport script from \"./StatusTab.vue?vue&type=script&lang=js&\"\nexport * from \"./StatusTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StatusTab.vue?vue&type=style&index=0&id=0daef275&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0daef275\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".container[data-v-0daef275],.theme--dark.v-card[data-v-0daef275],.theme--dark.v-sheet[data-v-0daef275]{background-color:var(--v-tertiary-darken2)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusTab.vue?vue&type=style&index=0&id=0daef275&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(\"02adaef3\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","limitsSets","model","value","callback","$$v","currentLimitsSet","expression","staticRenderFns","props","tabId","Number","curTab","data","api","apiStatus","apiHeaders","text","backgroundTasks","backgroundHeaders","currentSetRefreshInterval","watch","created","get_limits_sets","then","getCurrentLimitsSet","setInterval","destroyed","clearInterval","methods","get_limits_set","limitsChange","set_limits_set","taskControl","name","state","start_background_task","component","___CSS_LOADER_EXPORT___","push","module","id","content","__esModule","default","locals","exports","add"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self["webpackChunk_cosmosc2_tool_cmdtlmserver"]=self["webpackChunk_cosmosc2_tool_cmdtlmserver"]||[]).push([[290],{9290:function(e,n,t){t.r(n),t.d(n,{default:function(){return A}});var a=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("v-card",[t("v-card-title",[e._v(" "+e._s(e.data.length)+" Telemetry Packets "),t("v-spacer"),t("v-text-field",{attrs:{"append-icon":"mdi-magnify",label:"Search","single-line":"","hide-details":""},model:{value:e.search,callback:function(n){e.search=n},expression:"search"}})],1),t("v-data-table",{attrs:{"calculate-widths":"","disable-pagination":"","hide-default-footer":"","multi-sort":"","data-test":"tlm-packets-table",headers:e.headers,items:e.data,search:e.search},scopedSlots:e._u([{key:"item.view_raw",fn:function(n){var a=n.item;return[t("v-btn",{attrs:{block:"",color:"primary",disabled:a.count<1},on:{click:function(n){return e.openViewRaw(a.target_name,a.packet_name)}}},[e._v(" View Raw ")])]}},{key:"item.view_in_pkt_viewer",fn:function(n){var a=n.item;return["UNKNOWN"===a.target_name?t("span",[e._v("N/A")]):e._e(),"UNKNOWN"!=a.target_name?t("v-btn",{attrs:{block:"",color:"primary"},on:{click:function(n){return e.openPktViewer(a.target_name,a.packet_name)}}},[e._v(" View In Packet Viewer "),t("v-icon",{attrs:{right:""}},[e._v(" mdi-open-in-new ")])],1):e._e()]}}])}),t("raw-dialog",{attrs:{type:"Telemetry","target-name":e.target_name,"packet-name":e.packet_name,visible:e.viewRaw},on:{display:e.rawDisplayCallback}})],1)},l=[],i=(t(1245),t(8178),t(3450),t(5799)),o=t(3407);function r(){var e="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/TlmPacketsTab.vue",n="790d1f8378e8b4e35abfac649e1551ed8f4a1770",t=new Function("return this")(),a="__coverage__",l={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/TlmPacketsTab.vue",statementMap:{0:{start:{line:90,column:4},end:{line:103,column:5}},1:{start:{line:109,column:6},end:{line:109,column:25}},2:{start:{line:112,column:6},end:{line:112,column:36}},3:{start:{line:113,column:6},end:{line:113,column:36}},4:{start:{line:114,column:6},end:{line:114,column:25}},5:{start:{line:117,column:6},end:{line:117,column:80}},6:{start:{line:120,column:6},end:{line:120,column:43}},7:{start:{line:120,column:37},end:{line:120,column:43}},8:{start:{line:121,column:6},end:{line:125,column:8}},9:{start:{line:122,column:8},end:{line:124,column:10}},10:{start:{line:123,column:10},end:{line:123,column:70}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:89,column:2},end:{line:89,column:3}},loc:{start:{line:89,column:9},end:{line:104,column:3}},line:89},1:{name:"(anonymous_1)",decl:{start:{line:108,column:4},end:{line:108,column:5}},loc:{start:{line:108,column:29},end:{line:110,column:5}},line:108},2:{name:"(anonymous_2)",decl:{start:{line:111,column:4},end:{line:111,column:5}},loc:{start:{line:111,column:42},end:{line:115,column:5}},line:111},3:{name:"(anonymous_3)",decl:{start:{line:116,column:4},end:{line:116,column:5}},loc:{start:{line:116,column:44},end:{line:118,column:5}},line:116},4:{name:"(anonymous_4)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:13},end:{line:126,column:5}},line:119},5:{name:"(anonymous_5)",decl:{start:{line:121,column:39},end:{line:121,column:40}},loc:{start:{line:121,column:49},end:{line:125,column:7}},line:121},6:{name:"(anonymous_6)",decl:{start:{line:122,column:29},end:{line:122,column:30}},loc:{start:{line:122,column:36},end:{line:124,column:9}},line:122}},branchMap:{0:{loc:{start:{line:120,column:6},end:{line:120,column:43}},type:"if",locations:[{start:{line:120,column:6},end:{line:120,column:43}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:120}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0},b:{0:[0,0]},inputSourceMap:{version:3,sources:["TlmPacketsTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"TlmPacketsTab.vue",sourceRoot:"src/tools/CmdTlmServer",sourcesContent:['\x3c!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n--\x3e\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 calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n data-test="tlm-packets-table"\n :headers="headers"\n :items="data"\n :search="search"\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 }\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 update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_tlm_info().then((info) => {\n this.data = info.map((x) => {\n return { target_name: x[0], packet_name: x[1], count: x[2] }\n })\n })\n },\n },\n}\n<\/script>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"790d1f8378e8b4e35abfac649e1551ed8f4a1770"},i=t[a]||(t[a]={});i[e]&&i[e].hash===n||(i[e]=l);var o=i[e];return r=function(){return o},o}r();var c={components:{RawDialog:o.Z},mixins:[i.Z],props:{tabId:Number,curTab:Number},data:function(){return r().f[0]++,r().s[0]++,{search:"",data:[],headers:[{text:"Target Name",value:"target_name"},{text:"Packet Name",value:"packet_name"},{text:"Packet Count",value:"count"},{text:"View Raw",value:"view_raw"},{text:"View In Packet Viewer",value:"view_in_pkt_viewer"}],viewRaw:!1,target_name:null,packet_name:null}},methods:{rawDisplayCallback:function(e){r().f[1]++,r().s[1]++,this.viewRaw=e},openViewRaw:function(e,n){r().f[2]++,r().s[2]++,this.target_name=e,r().s[3]++,this.packet_name=n,r().s[4]++,this.viewRaw=!0},openPktViewer:function(e,n){r().f[3]++,r().s[5]++,window.open("/tools/packetviewer/".concat(e,"/").concat(n),"_blank")},update:function(){var e=this;if(r().f[4]++,r().s[6]++,this.tabId!=this.curTab)return r().b[0][0]++,void r().s[7]++;r().b[0][1]++,r().s[8]++,this.api.get_all_tlm_info().then((function(n){r().f[5]++,r().s[9]++,e.data=n.map((function(e){return r().f[6]++,r().s[10]++,{target_name:e[0],packet_name:e[1],count:e[2]}}))}))}}},m=c,s=t(3287),u=(0,s.Z)(m,a,l,!1,null,null,null),A=u.exports}}]);
2
+ //# sourceMappingURL=290.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/290.js","mappings":"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","sources":["webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?b160","webpack://@cosmosc2/tool-cmdtlmserver/src/tools/CmdTlmServer/TlmPacketsTab.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue?dde4","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/TlmPacketsTab.vue"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_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:{\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"data-test\":\"tlm-packets-table\",\"headers\":_vm.headers,\"items\":_vm.data,\"search\":_vm.search},scopedSlots:_vm._u([{key:\"item.view_raw\",fn:function(ref){\nvar item = ref.item;\nreturn [_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(ref){\nvar item = ref.item;\nreturn [(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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-card>\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 calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n data-test=\"tlm-packets-table\"\n :headers=\"headers\"\n :items=\"data\"\n :search=\"search\"\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 }\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 update() {\n if (this.tabId != this.curTab) return\n this.api.get_all_tlm_info().then((info) => {\n this.data = info.map((x) => {\n return { target_name: x[0], packet_name: x[1], count: x[2] }\n })\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TlmPacketsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TlmPacketsTab.vue?vue&type=template&id=7a6e7511&\"\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/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["render","_vm","this","_h","$createElement","_c","_self","_v","_s","data","length","attrs","model","value","callback","$$v","search","expression","headers","scopedSlots","_u","key","fn","ref","item","count","on","$event","openViewRaw","target_name","packet_name","_e","openPktViewer","viewRaw","rawDisplayCallback","staticRenderFns","components","RawDialog","mixins","props","tabId","Number","curTab","text","methods","bool","window","open","update","api","get_all_tlm_info","then","component"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self["webpackChunk_cosmosc2_tool_cmdtlmserver"]=self["webpackChunk_cosmosc2_tool_cmdtlmserver"]||[]).push([[361],{5563:function(t,n,e){var i,o;(function(){var r=this;(function(){(function(){var t=[].slice;this.ActionCable={INTERNAL:{message_types:{welcome:"welcome",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]},WebSocket:window.WebSocket,logger:window.console,createConsumer:function(t){var n;return null==t&&(t=null!=(n=this.getConfig("url"))?n:this.INTERNAL.default_mount_path),new s.Consumer(this.createWebSocketURL(t))},getConfig:function(t){var n;return n=document.head.querySelector("meta[name='action-cable-"+t+"']"),null!=n?n.getAttribute("content"):void 0},createWebSocketURL:function(t){var n;return t&&!/^wss?:/i.test(t)?(n=document.createElement("a"),n.href=t,n.href=n.href,n.protocol=n.protocol.replace("http","ws"),n.href):t},startDebugging:function(){return this.debugging=!0},stopDebugging:function(){return this.debugging=null},log:function(){var n,e;if(n=1<=arguments.length?t.call(arguments,0):[],this.debugging)return n.push(Date.now()),(e=this.logger).log.apply(e,["[ActionCable]"].concat(t.call(n)))}}}).call(this)}).call(r);var s=r.ActionCable;(function(){(function(){var t=function(t,n){return function(){return t.apply(n,arguments)}};s.ConnectionMonitor=function(){var n,e,i;function o(n){this.connection=n,this.visibilityDidChange=t(this.visibilityDidChange,this),this.reconnectAttempts=0}return o.pollInterval={min:3,max:30},o.staleThreshold=6,o.prototype.start=function(){if(!this.isRunning())return this.startedAt=e(),delete this.stoppedAt,this.startPolling(),document.addEventListener("visibilitychange",this.visibilityDidChange),s.log("ConnectionMonitor started. pollInterval = "+this.getPollInterval()+" ms")},o.prototype.stop=function(){if(this.isRunning())return this.stoppedAt=e(),this.stopPolling(),document.removeEventListener("visibilitychange",this.visibilityDidChange),s.log("ConnectionMonitor stopped")},o.prototype.isRunning=function(){return null!=this.startedAt&&null==this.stoppedAt},o.prototype.recordPing=function(){return this.pingedAt=e()},o.prototype.recordConnect=function(){return this.reconnectAttempts=0,this.recordPing(),delete this.disconnectedAt,s.log("ConnectionMonitor recorded connect")},o.prototype.recordDisconnect=function(){return this.disconnectedAt=e(),s.log("ConnectionMonitor recorded disconnect")},o.prototype.startPolling=function(){return this.stopPolling(),this.poll()},o.prototype.stopPolling=function(){return clearTimeout(this.pollTimeout)},o.prototype.poll=function(){return this.pollTimeout=setTimeout(function(t){return function(){return t.reconnectIfStale(),t.poll()}}(this),this.getPollInterval())},o.prototype.getPollInterval=function(){var t,e,i,o;return o=this.constructor.pollInterval,i=o.min,e=o.max,t=5*Math.log(this.reconnectAttempts+1),Math.round(1e3*n(t,i,e))},o.prototype.reconnectIfStale=function(){if(this.connectionIsStale())return s.log("ConnectionMonitor detected stale connection. reconnectAttempts = "+this.reconnectAttempts+", pollInterval = "+this.getPollInterval()+" ms, time disconnected = "+i(this.disconnectedAt)+" s, stale threshold = "+this.constructor.staleThreshold+" s"),this.reconnectAttempts++,this.disconnectedRecently()?s.log("ConnectionMonitor skipping reopening recent disconnect"):(s.log("ConnectionMonitor reopening"),this.connection.reopen())},o.prototype.connectionIsStale=function(){var t;return i(null!=(t=this.pingedAt)?t:this.startedAt)>this.constructor.staleThreshold},o.prototype.disconnectedRecently=function(){return this.disconnectedAt&&i(this.disconnectedAt)<this.constructor.staleThreshold},o.prototype.visibilityDidChange=function(){if("visible"===document.visibilityState)return setTimeout(function(t){return function(){if(t.connectionIsStale()||!t.connection.isOpen())return s.log("ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = "+document.visibilityState),t.connection.reopen()}}(this),200)},e=function(){return(new Date).getTime()},i=function(t){return(e()-t)/1e3},n=function(t,n,e){return Math.max(n,Math.min(e,t))},o}()}).call(this),function(){var t,n,e,i,o,r=[].slice,c=function(t,n){return function(){return t.apply(n,arguments)}},u=[].indexOf||function(t){for(var n=0,e=this.length;n<e;n++)if(n in this&&this[n]===t)return n;return-1};i=s.INTERNAL,n=i.message_types,e=i.protocols,o=2<=e.length?r.call(e,0,t=e.length-1):(t=0,[]),e[t++],s.Connection=function(){function t(t){this.consumer=t,this.open=c(this.open,this),this.subscriptions=this.consumer.subscriptions,this.monitor=new s.ConnectionMonitor(this),this.disconnected=!0}return t.reopenDelay=500,t.prototype.send=function(t){return!!this.isOpen()&&(this.webSocket.send(JSON.stringify(t)),!0)},t.prototype.open=function(){return this.isActive()?(s.log("Attempted to open WebSocket, but existing socket is "+this.getState()),!1):(s.log("Opening WebSocket, current state is "+this.getState()+", subprotocols: "+e),null!=this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new s.WebSocket(this.consumer.url,e),this.installEventHandlers(),this.monitor.start(),!0)},t.prototype.close=function(t){var n,e;if(n=(null!=t?t:{allowReconnect:!0}).allowReconnect,n||this.monitor.stop(),this.isActive())return null!=(e=this.webSocket)?e.close():void 0},t.prototype.reopen=function(){var t;if(s.log("Reopening WebSocket, current state is "+this.getState()),!this.isActive())return this.open();try{return this.close()}catch(n){return t=n,s.log("Failed to reopen WebSocket",t)}finally{s.log("Reopening WebSocket in "+this.constructor.reopenDelay+"ms"),setTimeout(this.open,this.constructor.reopenDelay)}},t.prototype.getProtocol=function(){var t;return null!=(t=this.webSocket)?t.protocol:void 0},t.prototype.isOpen=function(){return this.isState("open")},t.prototype.isActive=function(){return this.isState("open","connecting")},t.prototype.isProtocolSupported=function(){var t;return t=this.getProtocol(),u.call(o,t)>=0},t.prototype.isState=function(){var t,n;return n=1<=arguments.length?r.call(arguments,0):[],t=this.getState(),u.call(n,t)>=0},t.prototype.getState=function(){var t,n,e;for(n in WebSocket)if(e=WebSocket[n],e===(null!=(t=this.webSocket)?t.readyState:void 0))return n.toLowerCase();return null},t.prototype.installEventHandlers=function(){var t,n;for(t in this.events)n=this.events[t].bind(this),this.webSocket["on"+t]=n},t.prototype.uninstallEventHandlers=function(){var t;for(t in this.events)this.webSocket["on"+t]=function(){}},t.prototype.events={message:function(t){var e,i,o,r;if(this.isProtocolSupported())switch(o=JSON.parse(t.data),e=o.identifier,i=o.message,r=o.type,r){case n.welcome:return this.monitor.recordConnect(),this.subscriptions.reload();case n.ping:return this.monitor.recordPing();case n.confirmation:return this.subscriptions.notify(e,"connected");case n.rejection:return this.subscriptions.reject(e);default:return this.subscriptions.notify(e,"received",i)}},open:function(){if(s.log("WebSocket onopen event, using '"+this.getProtocol()+"' subprotocol"),this.disconnected=!1,!this.isProtocolSupported())return s.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close:function(t){if(s.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error:function(){return s.log("WebSocket onerror event")}},t}()}.call(this),function(){var t=[].slice;s.Subscriptions=function(){function n(t){this.consumer=t,this.subscriptions=[]}return n.prototype.create=function(t,n){var e,i,o;return e=t,i="object"===typeof e?e:{channel:e},o=new s.Subscription(this.consumer,i,n),this.add(o)},n.prototype.add=function(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,"initialized"),this.sendCommand(t,"subscribe"),t},n.prototype.remove=function(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,"unsubscribe"),t},n.prototype.reject=function(t){var n,e,i,o,r;for(i=this.findAll(t),o=[],n=0,e=i.length;n<e;n++)r=i[n],this.forget(r),this.notify(r,"rejected"),o.push(r);return o},n.prototype.forget=function(t){var n;return this.subscriptions=function(){var e,i,o,r;for(o=this.subscriptions,r=[],e=0,i=o.length;e<i;e++)n=o[e],n!==t&&r.push(n);return r}.call(this),t},n.prototype.findAll=function(t){var n,e,i,o,r;for(i=this.subscriptions,o=[],n=0,e=i.length;n<e;n++)r=i[n],r.identifier===t&&o.push(r);return o},n.prototype.reload=function(){var t,n,e,i,o;for(e=this.subscriptions,i=[],t=0,n=e.length;t<n;t++)o=e[t],i.push(this.sendCommand(o,"subscribe"));return i},n.prototype.notifyAll=function(){var n,e,i,o,r,s,c;for(e=arguments[0],n=2<=arguments.length?t.call(arguments,1):[],r=this.subscriptions,s=[],i=0,o=r.length;i<o;i++)c=r[i],s.push(this.notify.apply(this,[c,e].concat(t.call(n))));return s},n.prototype.notify=function(){var n,e,i,o,r,s,c;for(s=arguments[0],e=arguments[1],n=3<=arguments.length?t.call(arguments,2):[],c="string"===typeof s?this.findAll(s):[s],r=[],i=0,o=c.length;i<o;i++)s=c[i],r.push("function"===typeof s[e]?s[e].apply(s,n):void 0);return r},n.prototype.sendCommand=function(t,n){var e;return e=t.identifier,this.consumer.send({command:n,identifier:e})},n}()}.call(this),function(){s.Subscription=function(){var t;function n(n,e,i){this.consumer=n,null==e&&(e={}),this.identifier=JSON.stringify(e),t(this,i)}return n.prototype.perform=function(t,n){return null==n&&(n={}),n.action=t,this.send(n)},n.prototype.send=function(t){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(t)})},n.prototype.unsubscribe=function(){return this.consumer.subscriptions.remove(this)},t=function(t,n){var e,i;if(null!=n)for(e in n)i=n[e],t[e]=i;return t},n}()}.call(this),function(){s.Consumer=function(){function t(t){this.url=t,this.subscriptions=new s.Subscriptions(this),this.connection=new s.Connection(this)}return t.prototype.send=function(t){return this.connection.send(t)},t.prototype.connect=function(){return this.connection.open()},t.prototype.disconnect=function(){return this.connection.close({allowReconnect:!1})},t.prototype.ensureActiveConnection=function(){if(!this.connection.isActive())return this.connection.open()},t}()}.call(this)}).call(this),t.exports?t.exports=s:(i=s,o="function"===typeof i?i.call(n,e,n,t):i,void 0===o||(t.exports=o))}).call(this)},1639:function(t,n,e){"use strict";var i=e(3103),o=e(9859),r=e(266),s=e(5968),c=e(8885),u=e(6733),l=e(8311),a=e(3326),p=e(5300),h=e(3349),f=e(17),d=e(95),g=e(4231),m=d("replace"),v=o.TypeError,y=s("".indexOf),b=s("".replace),S=s("".slice),w=Math.max,C=function(t,n,e){return e>t.length?-1:""===n?e:y(t,n,e)};i({target:"String",proto:!0},{replaceAll:function(t,n){var e,i,o,s,d,A,D,N,T,k=c(this),I=0,M=0,R="";if(null!=t){if(e=l(t),e&&(i=a(c(h(t))),!~y(i,"g")))throw v("`.replaceAll` does not allow non-global regexes");if(o=p(t,m),o)return r(o,t,k,n);if(g&&e)return b(a(k),t,n)}s=a(k),d=a(t),A=u(n),A||(n=a(n)),D=d.length,N=w(1,D),I=C(s,d,0);while(-1!==I)T=A?a(n(d,I,s)):f(d,s,I,[],void 0,n),R+=S(s,M,I)+T,M=I+D,I=C(s,d,I+N);return M<s.length&&(R+=S(s,M)),R}})},5488:function(t,n,e){"use strict";e.d(n,{Z:function(){return c}});Math.pow(10,8);var i=6e4,o=36e5,r=e(9785),s=e(2765);function c(t,n){(0,r.Z)(1,arguments);var e=n||{},i=null==e.additionalDigits?2:(0,s.Z)(e.additionalDigits);if(2!==i&&1!==i&&0!==i)throw new RangeError("additionalDigits must be 0, 1 or 2");if("string"!==typeof t&&"[object String]"!==Object.prototype.toString.call(t))return new Date(NaN);var o,c=h(t);if(c.date){var u=f(c.date,i);o=d(u.restDateString,u.year)}if(!o||isNaN(o.getTime()))return new Date(NaN);var l,a=o.getTime(),p=0;if(c.time&&(p=m(c.time),isNaN(p)))return new Date(NaN);if(!c.timezone){var g=new Date(a+p),v=new Date(0);return v.setFullYear(g.getUTCFullYear(),g.getUTCMonth(),g.getUTCDate()),v.setHours(g.getUTCHours(),g.getUTCMinutes(),g.getUTCSeconds(),g.getUTCMilliseconds()),v}return l=y(c.timezone),isNaN(l)?new Date(NaN):new Date(a+p+l)}var u={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},l=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,a=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,p=/^([+-])(\d{2})(?::?(\d{2}))?$/;function h(t){var n,e={},i=t.split(u.dateTimeDelimiter);if(i.length>2)return e;if(/:/.test(i[0])?n=i[0]:(e.date=i[0],n=i[1],u.timeZoneDelimiter.test(e.date)&&(e.date=t.split(u.timeZoneDelimiter)[0],n=t.substr(e.date.length,t.length))),n){var o=u.timezone.exec(n);o?(e.time=n.replace(o[1],""),e.timezone=o[1]):e.time=n}return e}function f(t,n){var e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+n)+"})|(\\d{2}|[+-]\\d{"+(2+n)+"})$)"),i=t.match(e);if(!i)return{year:NaN,restDateString:""};var o=i[1]?parseInt(i[1]):null,r=i[2]?parseInt(i[2]):null;return{year:null===r?o:100*r,restDateString:t.slice((i[1]||i[2]).length)}}function d(t,n){if(null===n)return new Date(NaN);var e=t.match(l);if(!e)return new Date(NaN);var i=!!e[4],o=g(e[1]),r=g(e[2])-1,s=g(e[3]),c=g(e[4]),u=g(e[5])-1;if(i)return D(n,c,u)?b(n,c,u):new Date(NaN);var a=new Date(0);return C(n,r,s)&&A(n,o)?(a.setUTCFullYear(n,r,Math.max(o,s)),a):new Date(NaN)}function g(t){return t?parseInt(t):1}function m(t){var n=t.match(a);if(!n)return NaN;var e=v(n[1]),r=v(n[2]),s=v(n[3]);return N(e,r,s)?e*o+r*i+1e3*s:NaN}function v(t){return t&&parseFloat(t.replace(",","."))||0}function y(t){if("Z"===t)return 0;var n=t.match(p);if(!n)return 0;var e="+"===n[1]?-1:1,r=parseInt(n[2]),s=n[3]&&parseInt(n[3])||0;return T(r,s)?e*(r*o+s*i):NaN}function b(t,n,e){var i=new Date(0);i.setUTCFullYear(t,0,4);var o=i.getUTCDay()||7,r=7*(n-1)+e+1-o;return i.setUTCDate(i.getUTCDate()+r),i}var S=[31,null,31,30,31,30,31,31,30,31,30,31];function w(t){return t%400===0||t%4===0&&t%100!==0}function C(t,n,e){return n>=0&&n<=11&&e>=1&&e<=(S[n]||(w(t)?29:28))}function A(t,n){return n>=1&&n<=(w(t)?366:365)}function D(t,n,e){return n>=1&&n<=53&&e>=0&&e<=6}function N(t,n,e){return 24===t?0===n&&0===e:e>=0&&e<60&&n>=0&&n<60&&t>=0&&t<25}function T(t,n){return n>=0&&n<=59}}}]);
2
+ //# sourceMappingURL=361.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/361.js","mappings":"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","sources":["webpack://@cosmosc2/tool-cmdtlmserver/../../node_modules/actioncable/lib/assets/compiled/action_cable.js","webpack://@cosmosc2/tool-cmdtlmserver/../../node_modules/core-js/modules/es.string.replace-all.js","webpack://@cosmosc2/tool-cmdtlmserver/../../node_modules/date-fns/esm/constants/index.js","webpack://@cosmosc2/tool-cmdtlmserver/../../node_modules/date-fns/esm/parseISO/index.js"],"sourcesContent":["(function() {\n var context = this;\n\n (function() {\n (function() {\n var slice = [].slice;\n\n this.ActionCable = {\n INTERNAL: {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n },\n WebSocket: window.WebSocket,\n logger: window.console,\n createConsumer: function(url) {\n var ref;\n if (url == null) {\n url = (ref = this.getConfig(\"url\")) != null ? ref : this.INTERNAL.default_mount_path;\n }\n return new ActionCable.Consumer(this.createWebSocketURL(url));\n },\n getConfig: function(name) {\n var element;\n element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n return element != null ? element.getAttribute(\"content\") : void 0;\n },\n createWebSocketURL: function(url) {\n var a;\n if (url && !/^wss?:/i.test(url)) {\n a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n },\n startDebugging: function() {\n return this.debugging = true;\n },\n stopDebugging: function() {\n return this.debugging = null;\n },\n log: function() {\n var messages, ref;\n messages = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n if (this.debugging) {\n messages.push(Date.now());\n return (ref = this.logger).log.apply(ref, [\"[ActionCable]\"].concat(slice.call(messages)));\n }\n }\n };\n\n }).call(this);\n }).call(context);\n\n var ActionCable = context.ActionCable;\n\n (function() {\n (function() {\n var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n ActionCable.ConnectionMonitor = (function() {\n var clamp, now, secondsSince;\n\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30\n };\n\n ConnectionMonitor.staleThreshold = 6;\n\n function ConnectionMonitor(connection) {\n this.connection = connection;\n this.visibilityDidChange = bind(this.visibilityDidChange, this);\n this.reconnectAttempts = 0;\n }\n\n ConnectionMonitor.prototype.start = function() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n document.addEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor started. pollInterval = \" + (this.getPollInterval()) + \" ms\");\n }\n };\n\n ConnectionMonitor.prototype.stop = function() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n document.removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n return ActionCable.log(\"ConnectionMonitor stopped\");\n }\n };\n\n ConnectionMonitor.prototype.isRunning = function() {\n return (this.startedAt != null) && (this.stoppedAt == null);\n };\n\n ConnectionMonitor.prototype.recordPing = function() {\n return this.pingedAt = now();\n };\n\n ConnectionMonitor.prototype.recordConnect = function() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n return ActionCable.log(\"ConnectionMonitor recorded connect\");\n };\n\n ConnectionMonitor.prototype.recordDisconnect = function() {\n this.disconnectedAt = now();\n return ActionCable.log(\"ConnectionMonitor recorded disconnect\");\n };\n\n ConnectionMonitor.prototype.startPolling = function() {\n this.stopPolling();\n return this.poll();\n };\n\n ConnectionMonitor.prototype.stopPolling = function() {\n return clearTimeout(this.pollTimeout);\n };\n\n ConnectionMonitor.prototype.poll = function() {\n return this.pollTimeout = setTimeout((function(_this) {\n return function() {\n _this.reconnectIfStale();\n return _this.poll();\n };\n })(this), this.getPollInterval());\n };\n\n ConnectionMonitor.prototype.getPollInterval = function() {\n var interval, max, min, ref;\n ref = this.constructor.pollInterval, min = ref.min, max = ref.max;\n interval = 5 * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1000);\n };\n\n ConnectionMonitor.prototype.reconnectIfStale = function() {\n if (this.connectionIsStale()) {\n ActionCable.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + (this.getPollInterval()) + \" ms, time disconnected = \" + (secondsSince(this.disconnectedAt)) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n return ActionCable.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n ActionCable.log(\"ConnectionMonitor reopening\");\n return this.connection.reopen();\n }\n }\n };\n\n ConnectionMonitor.prototype.connectionIsStale = function() {\n var ref;\n return secondsSince((ref = this.pingedAt) != null ? ref : this.startedAt) > this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.disconnectedRecently = function() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.visibilityDidChange = function() {\n if (document.visibilityState === \"visible\") {\n return setTimeout((function(_this) {\n return function() {\n if (_this.connectionIsStale() || !_this.connection.isOpen()) {\n ActionCable.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n return _this.connection.reopen();\n }\n };\n })(this), 200);\n }\n };\n\n now = function() {\n return new Date().getTime();\n };\n\n secondsSince = function(time) {\n return (now() - time) / 1000;\n };\n\n clamp = function(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n\n return ConnectionMonitor;\n\n })();\n\n }).call(this);\n (function() {\n var i, message_types, protocols, ref, supportedProtocols, unsupportedProtocol,\n slice = [].slice,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n ref = ActionCable.INTERNAL, message_types = ref.message_types, protocols = ref.protocols;\n\n supportedProtocols = 2 <= protocols.length ? slice.call(protocols, 0, i = protocols.length - 1) : (i = 0, []), unsupportedProtocol = protocols[i++];\n\n ActionCable.Connection = (function() {\n Connection.reopenDelay = 500;\n\n function Connection(consumer) {\n this.consumer = consumer;\n this.open = bind(this.open, this);\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ActionCable.ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n Connection.prototype.send = function(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n\n Connection.prototype.open = function() {\n if (this.isActive()) {\n ActionCable.log(\"Attempted to open WebSocket, but existing socket is \" + (this.getState()));\n return false;\n } else {\n ActionCable.log(\"Opening WebSocket, current state is \" + (this.getState()) + \", subprotocols: \" + protocols);\n if (this.webSocket != null) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new ActionCable.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n\n Connection.prototype.close = function(arg) {\n var allowReconnect, ref1;\n allowReconnect = (arg != null ? arg : {\n allowReconnect: true\n }).allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return (ref1 = this.webSocket) != null ? ref1.close() : void 0;\n }\n };\n\n Connection.prototype.reopen = function() {\n var error;\n ActionCable.log(\"Reopening WebSocket, current state is \" + (this.getState()));\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error1) {\n error = error1;\n return ActionCable.log(\"Failed to reopen WebSocket\", error);\n } finally {\n ActionCable.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n\n Connection.prototype.getProtocol = function() {\n var ref1;\n return (ref1 = this.webSocket) != null ? ref1.protocol : void 0;\n };\n\n Connection.prototype.isOpen = function() {\n return this.isState(\"open\");\n };\n\n Connection.prototype.isActive = function() {\n return this.isState(\"open\", \"connecting\");\n };\n\n Connection.prototype.isProtocolSupported = function() {\n var ref1;\n return ref1 = this.getProtocol(), indexOf.call(supportedProtocols, ref1) >= 0;\n };\n\n Connection.prototype.isState = function() {\n var ref1, states;\n states = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return ref1 = this.getState(), indexOf.call(states, ref1) >= 0;\n };\n\n Connection.prototype.getState = function() {\n var ref1, state, value;\n for (state in WebSocket) {\n value = WebSocket[state];\n if (value === ((ref1 = this.webSocket) != null ? ref1.readyState : void 0)) {\n return state.toLowerCase();\n }\n }\n return null;\n };\n\n Connection.prototype.installEventHandlers = function() {\n var eventName, handler;\n for (eventName in this.events) {\n handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n\n Connection.prototype.uninstallEventHandlers = function() {\n var eventName;\n for (eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n\n Connection.prototype.events = {\n message: function(event) {\n var identifier, message, ref1, type;\n if (!this.isProtocolSupported()) {\n return;\n }\n ref1 = JSON.parse(event.data), identifier = ref1.identifier, message = ref1.message, type = ref1.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n case message_types.ping:\n return this.monitor.recordPing();\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function() {\n ActionCable.log(\"WebSocket onopen event, using '\" + (this.getProtocol()) + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n ActionCable.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function(event) {\n ActionCable.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function() {\n return ActionCable.log(\"WebSocket onerror event\");\n }\n };\n\n return Connection;\n\n })();\n\n }).call(this);\n (function() {\n var slice = [].slice;\n\n ActionCable.Subscriptions = (function() {\n function Subscriptions(consumer) {\n this.consumer = consumer;\n this.subscriptions = [];\n }\n\n Subscriptions.prototype.create = function(channelName, mixin) {\n var channel, params, subscription;\n channel = channelName;\n params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n subscription = new ActionCable.Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n\n Subscriptions.prototype.add = function(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n\n Subscriptions.prototype.remove = function(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n\n Subscriptions.prototype.reject = function(identifier) {\n var i, len, ref, results, subscription;\n ref = this.findAll(identifier);\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n results.push(subscription);\n }\n return results;\n };\n\n Subscriptions.prototype.forget = function(subscription) {\n var s;\n this.subscriptions = (function() {\n var i, len, ref, results;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n if (s !== subscription) {\n results.push(s);\n }\n }\n return results;\n }).call(this);\n return subscription;\n };\n\n Subscriptions.prototype.findAll = function(identifier) {\n var i, len, ref, results, s;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n s = ref[i];\n if (s.identifier === identifier) {\n results.push(s);\n }\n }\n return results;\n };\n\n Subscriptions.prototype.reload = function() {\n var i, len, ref, results, subscription;\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.sendCommand(subscription, \"subscribe\"));\n }\n return results;\n };\n\n Subscriptions.prototype.notifyAll = function() {\n var args, callbackName, i, len, ref, results, subscription;\n callbackName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n ref = this.subscriptions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subscription = ref[i];\n results.push(this.notify.apply(this, [subscription, callbackName].concat(slice.call(args))));\n }\n return results;\n };\n\n Subscriptions.prototype.notify = function() {\n var args, callbackName, i, len, results, subscription, subscriptions;\n subscription = arguments[0], callbackName = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n results = [];\n for (i = 0, len = subscriptions.length; i < len; i++) {\n subscription = subscriptions[i];\n results.push(typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : void 0);\n }\n return results;\n };\n\n Subscriptions.prototype.sendCommand = function(subscription, command) {\n var identifier;\n identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n\n return Subscriptions;\n\n })();\n\n }).call(this);\n (function() {\n ActionCable.Subscription = (function() {\n var extend;\n\n function Subscription(consumer, params, mixin) {\n this.consumer = consumer;\n if (params == null) {\n params = {};\n }\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n Subscription.prototype.perform = function(action, data) {\n if (data == null) {\n data = {};\n }\n data.action = action;\n return this.send(data);\n };\n\n Subscription.prototype.send = function(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n\n Subscription.prototype.unsubscribe = function() {\n return this.consumer.subscriptions.remove(this);\n };\n\n extend = function(object, properties) {\n var key, value;\n if (properties != null) {\n for (key in properties) {\n value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n\n return Subscription;\n\n })();\n\n }).call(this);\n (function() {\n ActionCable.Consumer = (function() {\n function Consumer(url) {\n this.url = url;\n this.subscriptions = new ActionCable.Subscriptions(this);\n this.connection = new ActionCable.Connection(this);\n }\n\n Consumer.prototype.send = function(data) {\n return this.connection.send(data);\n };\n\n Consumer.prototype.connect = function() {\n return this.connection.open();\n };\n\n Consumer.prototype.disconnect = function() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n\n Consumer.prototype.ensureActiveConnection = function() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n\n return Consumer;\n\n })();\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = ActionCable;\n } else if (typeof define === \"function\" && define.amd) {\n define(ActionCable);\n }\n}).call(this);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar TypeError = global.TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (searchValue != null) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? 2 : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}"],"names":["context","this","slice","ActionCable","INTERNAL","WebSocket","window","logger","console","createConsumer","url","ref","getConfig","default_mount_path","Consumer","createWebSocketURL","name","element","document","head","querySelector","getAttribute","a","test","createElement","href","protocol","replace","startDebugging","debugging","stopDebugging","log","messages","arguments","length","call","push","Date","now","apply","concat","bind","fn","me","ConnectionMonitor","clamp","secondsSince","connection","visibilityDidChange","reconnectAttempts","pollInterval","min","max","staleThreshold","prototype","start","isRunning","startedAt","stoppedAt","startPolling","addEventListener","getPollInterval","stop","stopPolling","removeEventListener","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","clearTimeout","pollTimeout","setTimeout","_this","reconnectIfStale","interval","constructor","Math","round","connectionIsStale","disconnectedRecently","reopen","visibilityState","isOpen","getTime","time","number","i","message_types","protocols","supportedProtocols","indexOf","item","l","Connection","consumer","open","subscriptions","monitor","disconnected","reopenDelay","send","data","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","installEventHandlers","close","arg","allowReconnect","ref1","error","error1","getProtocol","isState","isProtocolSupported","states","state","value","readyState","toLowerCase","eventName","handler","events","message","event","identifier","type","parse","welcome","reload","ping","confirmation","notify","rejection","reject","notifyAll","willAttemptReconnect","Subscriptions","create","channelName","mixin","channel","params","subscription","Subscription","add","ensureActiveConnection","sendCommand","remove","forget","findAll","len","results","s","args","callbackName","command","extend","perform","action","unsubscribe","object","properties","key","connect","disconnect","module","exports","$","global","uncurryThis","requireObjectCoercible","isCallable","isRegExp","toString","getMethod","getRegExpFlags","getSubstitution","wellKnownSymbol","IS_PURE","REPLACE","TypeError","stringSlice","stringIndexOf","string","searchValue","fromIndex","target","proto","replaceAll","replaceValue","IS_REG_EXP","flags","replacer","searchString","functionalReplace","searchLength","advanceBy","replacement","O","position","endOfLastMatch","result","undefined","pow","millisecondsInMinute","millisecondsInHour","parseISO","argument","dirtyOptions","requiredArgs","options","additionalDigits","toInteger","RangeError","Object","NaN","date","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","year","isNaN","offset","timestamp","parseTime","timezone","dirtyDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","dateString","timeString","array","split","substr","token","exec","regex","RegExp","captures","match","parseInt","century","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","setUTCFullYear","hours","parseTimeUnit","minutes","seconds","validateTime","parseFloat","timezoneString","sign","validateTimezone","isoWeekYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","daysInMonths","isLeapYearIndex","_year","_hours"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self["webpackChunk_cosmosc2_tool_cmdtlmserver"]=self["webpackChunk_cosmosc2_tool_cmdtlmserver"]||[]).push([[407],{5799:function(n,e,t){"use strict";var l=t(1479);function i(){var n="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/Updater.js",e="f0b5f59be3bc09a142595f4638035cf73a6d3719",t=new Function("return this")(),l="__coverage__",o={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/Updater.js",statementMap:{0:{start:{line:29,column:4},end:{line:32,column:5}},1:{start:{line:35,column:4},end:{line:35,column:30}},2:{start:{line:38,column:4},end:{line:38,column:24}},3:{start:{line:41,column:4},end:{line:44,column:5}},4:{start:{line:42,column:6},end:{line:42,column:33}},5:{start:{line:43,column:6},end:{line:43,column:25}},6:{start:{line:49,column:6},end:{line:49,column:26}},7:{start:{line:54,column:6},end:{line:57,column:7}},8:{start:{line:55,column:8},end:{line:55,column:35}},9:{start:{line:56,column:8},end:{line:56,column:27}},10:{start:{line:58,column:6},end:{line:60,column:30}},11:{start:{line:59,column:8},end:{line:59,column:21}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:28,column:2},end:{line:28,column:3}},loc:{start:{line:28,column:9},end:{line:33,column:3}},line:28},1:{name:"(anonymous_1)",decl:{start:{line:34,column:2},end:{line:34,column:3}},loc:{start:{line:34,column:12},end:{line:36,column:3}},line:34},2:{name:"(anonymous_2)",decl:{start:{line:37,column:2},end:{line:37,column:3}},loc:{start:{line:37,column:12},end:{line:39,column:3}},line:37},3:{name:"(anonymous_3)",decl:{start:{line:40,column:2},end:{line:40,column:3}},loc:{start:{line:40,column:18},end:{line:45,column:3}},line:40},4:{name:"(anonymous_4)",decl:{start:{line:48,column:21},end:{line:48,column:22}},loc:{start:{line:48,column:47},end:{line:50,column:5}},line:48},5:{name:"(anonymous_5)",decl:{start:{line:53,column:4},end:{line:53,column:5}},loc:{start:{line:53,column:20},end:{line:61,column:5}},line:53},6:{name:"(anonymous_6)",decl:{start:{line:58,column:33},end:{line:58,column:34}},loc:{start:{line:58,column:39},end:{line:60,column:7}},line:58}},branchMap:{0:{loc:{start:{line:41,column:4},end:{line:44,column:5}},type:"if",locations:[{start:{line:41,column:4},end:{line:44,column:5}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:41},1:{loc:{start:{line:54,column:6},end:{line:57,column:7}},type:"if",locations:[{start:{line:54,column:6},end:{line:57,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:54}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0},b:{0:[0,0],1:[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f0b5f59be3bc09a142595f4638035cf73a6d3719"},a=t[l]||(t[l]={});a[n]&&a[n].hash===e||(a[n]=o);var c=a[n];return i=function(){return c},c}i(),e["Z"]={props:{refreshInterval:{default:1e3}},data:function(){return i().f[0]++,i().s[0]++,{updater:null,api:null}},created:function(){i().f[1]++,i().s[1]++,this.api=new l.J},mounted:function(){i().f[2]++,i().s[2]++,this.changeUpdater()},beforeDestroy:function(){i().f[3]++,i().s[3]++,null!=this.updater?(i().b[0][0]++,i().s[4]++,clearInterval(this.updater),i().s[5]++,this.updater=null):i().b[0][1]++},watch:{refreshInterval:function(n,e){i().f[4]++,i().s[6]++,this.changeUpdater()}},methods:{changeUpdater:function(){var n=this;i().f[5]++,i().s[7]++,null!=this.updater?(i().b[1][0]++,i().s[8]++,clearInterval(this.updater),i().s[9]++,this.updater=null):i().b[1][1]++,i().s[10]++,this.updater=setInterval((function(){i().f[6]++,i().s[11]++,n.update()}),this.refreshInterval)}}}},3407:function(n,e,t){"use strict";t.d(e,{Z:function(){return d}});var l=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("v-dialog",{attrs:{width:"790px"},on:{keydown:function(e){if(!e.type.indexOf("key")&&n._k(e.keyCode,"esc",27,e.key,["Esc","Escape"]))return null;n.isVisible=!1}},model:{value:n.isVisible,callback:function(e){n.isVisible=e},expression:"isVisible"}},[t("v-card",[t("v-system-bar",[t("v-tooltip",{attrs:{top:""},scopedSlots:n._u([{key:"activator",fn:function(e){var l=e.on,i=e.attrs;return[t("div",n._g(n._b({},"div",i,!1),l),[t("v-icon",{attrs:{"data-test":"copy-icon"},on:{click:n.copyRawData}},[n._v(" mdi-content-copy ")])],1)]}}])},[t("span",[n._v(" Copy ")])]),t("v-spacer"),t("span",[n._v(" "+n._s(n.type)+" ")]),t("v-spacer"),t("v-tooltip",{attrs:{top:""},scopedSlots:n._u([{key:"activator",fn:function(e){var l=e.on,i=e.attrs;return[t("div",n._g(n._b({},"div",i,!1),l),[t("v-icon",{attrs:{"data-test":"download"},on:{click:n.downloadRawData}},[n._v(" mdi-download ")])],1)]}}])},[t("span",[n._v(" Download ")])])],1),t("v-card-title",[t("span",[n._v(" "+n._s(n.header)+" ")]),t("v-spacer"),t("v-tooltip",{attrs:{top:""},scopedSlots:n._u([{key:"activator",fn:function(e){var l=e.on,i=e.attrs;return[t("div",n._g(n._b({},"div",i,!1),l),[t("v-btn",{attrs:{icon:"","data-test":"pause"},on:{click:n.pause}},[t("v-icon",[n._v(" "+n._s(n.buttonIcon)+" ")])],1)],1)]}}])},[t("span",[n._v(" "+n._s(n.buttonLabel)+" ")])])],1),t("v-card-text",[t("v-row",{attrs:{dense:""}},[t("v-col",{attrs:{cols:"4"}},[t("span",[n._v(" Received Time: ")])]),t("v-col",{staticClass:"text-right"},[t("span",[n._v(" "+n._s(n.receivedTime)+" ")])])],1),t("v-row",{attrs:{dense:""}},[t("v-col",{attrs:{cols:"4"}},[t("span",[n._v(" Count: ")])]),t("v-col",{staticClass:"text-right"},[t("span",[n._v(" "+n._s(n.receivedCount)+" ")])])],1),t("v-textarea",{staticClass:"pa-0 ma-0",attrs:{"auto-grow":"",readonly:""},model:{value:n.rawData,callback:function(e){n.rawData=e},expression:"rawData"}})],1)],1)],1)},i=[],o=(t(8178),t(8188),t(8673),t(6886),t(4121),t(523),t(1939),t(7789),t(8233),t(4063)),a=t(5799);function c(){var n="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/RawDialog.vue",e="de5e971109504e7974868fa6f9f60ce5f9b2b994",t=new Function("return this")(),l="__coverage__",i={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/RawDialog.vue",statementMap:{0:{start:{line:99,column:4},end:{line:105,column:5}},1:{start:{line:109,column:6},end:{line:113,column:7}},2:{start:{line:110,column:8},end:{line:110,column:23}},3:{start:{line:112,column:8},end:{line:112,column:22}},4:{start:{line:116,column:6},end:{line:120,column:7}},5:{start:{line:117,column:8},end:{line:117,column:25}},6:{start:{line:119,column:8},end:{line:119,column:26}},7:{start:{line:124,column:8},end:{line:124,column:27}},8:{start:{line:128,column:8},end:{line:128,column:24}},9:{start:{line:129,column:8},end:{line:129,column:30}},10:{start:{line:130,column:8},end:{line:130,column:25}},11:{start:{line:131,column:8},end:{line:131,column:31}},12:{start:{line:132,column:8},end:{line:132,column:27}},13:{start:{line:133,column:8},end:{line:133,column:34}},14:{start:{line:134,column:8},end:{line:134,column:35}},15:{start:{line:140,column:6},end:{line:140,column:113}},16:{start:{line:143,column:6},end:{line:143,column:56}},17:{start:{line:146,column:19},end:{line:148,column:8}},18:{start:{line:150,column:19},end:{line:150,column:46}},19:{start:{line:151,column:6},end:{line:151,column:43}},20:{start:{line:152,column:17},end:{line:152,column:58}},21:{start:{line:153,column:6},end:{line:156,column:7}},22:{start:{line:157,column:6},end:{line:157,column:18}},23:{start:{line:160,column:6},end:{line:160,column:32}},24:{start:{line:163,column:6},end:{line:163,column:48}},25:{start:{line:163,column:42},end:{line:163,column:48}},26:{start:{line:164,column:6},end:{line:164,column:84}},27:{start:{line:166,column:6},end:{line:170,column:7}},28:{start:{line:167,column:8},end:{line:167,column:30}},29:{start:{line:169,column:8},end:{line:169,column:28}},30:{start:{line:173,column:6},end:{line:182,column:10}},31:{start:{line:176,column:10},end:{line:176,column:61}},32:{start:{line:177,column:10},end:{line:177,column:52}},33:{start:{line:178,column:10},end:{line:181,column:48}},34:{start:{line:185,column:6},end:{line:194,column:10}},35:{start:{line:188,column:10},end:{line:188,column:61}},36:{start:{line:189,column:10},end:{line:189,column:52}},37:{start:{line:190,column:10},end:{line:193,column:48}},38:{start:{line:198,column:19},end:{line:198,column:21}},39:{start:{line:199,column:18},end:{line:199,column:19}},40:{start:{line:200,column:18},end:{line:200,column:20}},41:{start:{line:201,column:6},end:{line:222,column:8}},42:{start:{line:202,column:8},end:{line:204,column:9}},43:{start:{line:203,column:10},end:{line:203,column:48}},44:{start:{line:205,column:8},end:{line:205,column:35}},45:{start:{line:208,column:8},end:{line:212,column:9}},46:{start:{line:209,column:10},end:{line:209,column:44}},47:{start:{line:211,column:10},end:{line:211,column:22}},48:{start:{line:214,column:8},end:{line:214,column:15}},49:{start:{line:216,column:8},end:{line:221,column:9}},50:{start:{line:217,column:10},end:{line:217,column:39}},51:{start:{line:218,column:10},end:{line:218,column:20}},52:{start:{line:220,column:10},end:{line:220,column:23}},53:{start:{line:227,column:6},end:{line:233,column:7}},54:{start:{line:228,column:30},end:{line:228,column:65}},55:{start:{line:230,column:21},end:{line:230,column:53}},56:{start:{line:231,column:27},end:{line:231,column:56}},57:{start:{line:232,column:8},end:{line:232,column:54}},58:{start:{line:234,column:6},end:{line:234,column:19}},59:{start:{line:237,column:16},end:{line:237,column:32}},60:{start:{line:238,column:6},end:{line:238,column:49}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:98,column:2},end:{line:98,column:3}},loc:{start:{line:98,column:9},end:{line:106,column:3}},line:98},1:{name:"(anonymous_1)",decl:{start:{line:108,column:17},end:{line:108,column:18}},loc:{start:{line:108,column:29},end:{line:114,column:5}},line:108},2:{name:"(anonymous_2)",decl:{start:{line:115,column:16},end:{line:115,column:17}},loc:{start:{line:115,column:28},end:{line:121,column:5}},line:115},3:{name:"(anonymous_3)",decl:{start:{line:123,column:11},end:{line:123,column:12}},loc:{start:{line:123,column:23},end:{line:125,column:7}},line:123},4:{name:"(anonymous_4)",decl:{start:{line:127,column:11},end:{line:127,column:12}},loc:{start:{line:127,column:27},end:{line:135,column:7}},line:127},5:{name:"(anonymous_5)",decl:{start:{line:139,column:18},end:{line:139,column:19}},loc:{start:{line:139,column:30},end:{line:141,column:5}},line:139},6:{name:"(anonymous_6)",decl:{start:{line:142,column:17},end:{line:142,column:18}},loc:{start:{line:142,column:29},end:{line:144,column:5}},line:142},7:{name:"(anonymous_7)",decl:{start:{line:145,column:21},end:{line:145,column:22}},loc:{start:{line:145,column:33},end:{line:158,column:5}},line:145},8:{name:"(anonymous_8)",decl:{start:{line:159,column:11},end:{line:159,column:12}},loc:{start:{line:159,column:23},end:{line:161,column:5}},line:159},9:{name:"(anonymous_9)",decl:{start:{line:162,column:12},end:{line:162,column:13}},loc:{start:{line:162,column:24},end:{line:171,column:5}},line:162},10:{name:"(anonymous_10)",decl:{start:{line:172,column:21},end:{line:172,column:22}},loc:{start:{line:172,column:33},end:{line:183,column:5}},line:172},11:{name:"(anonymous_11)",decl:{start:{line:175,column:14},end:{line:175,column:15}},loc:{start:{line:175,column:26},end:{line:182,column:9}},line:175},12:{name:"(anonymous_12)",decl:{start:{line:184,column:19},end:{line:184,column:20}},loc:{start:{line:184,column:31},end:{line:195,column:5}},line:184},13:{name:"(anonymous_13)",decl:{start:{line:187,column:14},end:{line:187,column:15}},loc:{start:{line:187,column:26},end:{line:194,column:9}},line:187},14:{name:"(anonymous_14)",decl:{start:{line:197,column:18},end:{line:197,column:19}},loc:{start:{line:197,column:36},end:{line:235,column:5}},line:197},15:{name:"(anonymous_15)",decl:{start:{line:201,column:21},end:{line:201,column:22}},loc:{start:{line:201,column:31},end:{line:222,column:7}},line:201},16:{name:"(anonymous_16)",decl:{start:{line:236,column:4},end:{line:236,column:5}},loc:{start:{line:236,column:27},end:{line:239,column:5}},line:236}},branchMap:{0:{loc:{start:{line:109,column:6},end:{line:113,column:7}},type:"if",locations:[{start:{line:109,column:6},end:{line:113,column:7}},{start:{line:111,column:13},end:{line:113,column:7}}],line:109},1:{loc:{start:{line:116,column:6},end:{line:120,column:7}},type:"if",locations:[{start:{line:116,column:6},end:{line:120,column:7}},{start:{line:118,column:13},end:{line:120,column:7}}],line:116},2:{loc:{start:{line:163,column:6},end:{line:163,column:48}},type:"if",locations:[{start:{line:163,column:6},end:{line:163,column:48}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:163},3:{loc:{start:{line:163,column:10},end:{line:163,column:40}},type:"binary-expr",locations:[{start:{line:163,column:10},end:{line:163,column:25}},{start:{line:163,column:29},end:{line:163,column:40}}],line:163},4:{loc:{start:{line:166,column:6},end:{line:170,column:7}},type:"if",locations:[{start:{line:166,column:6},end:{line:170,column:7}},{start:{line:168,column:13},end:{line:170,column:7}}],line:166},5:{loc:{start:{line:202,column:8},end:{line:204,column:9}},type:"if",locations:[{start:{line:202,column:8},end:{line:204,column:9}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:202},6:{loc:{start:{line:208,column:8},end:{line:212,column:9}},type:"if",locations:[{start:{line:208,column:8},end:{line:212,column:9}},{start:{line:210,column:15},end:{line:212,column:9}}],line:208},7:{loc:{start:{line:208,column:12},end:{line:208,column:37}},type:"binary-expr",locations:[{start:{line:208,column:12},end:{line:208,column:22}},{start:{line:208,column:26},end:{line:208,column:37}}],line:208},8:{loc:{start:{line:216,column:8},end:{line:221,column:9}},type:"if",locations:[{start:{line:216,column:8},end:{line:221,column:9}},{start:{line:219,column:15},end:{line:221,column:9}}],line:216},9:{loc:{start:{line:227,column:6},end:{line:233,column:7}},type:"if",locations:[{start:{line:227,column:6},end:{line:233,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:227},10:{loc:{start:{line:236,column:16},end:{line:236,column:25}},type:"default-arg",locations:[{start:{line:236,column:24},end:{line:236,column:25}}],line:236}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0,49:0,50:0,51:0,52:0,53:0,54:0,55:0,56:0,57:0,58:0,59:0,60:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0],7:[0,0],8:[0,0],9:[0,0],10:[0]},inputSourceMap:{version:3,sources:["RawDialog.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"RawDialog.vue",sourceRoot:"src/tools/CmdTlmServer",sourcesContent:["\x3c!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n--\x3e\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 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(result.buffer.raw)\n })\n },\n updateCommand: function () {\n this.api\n .get_cmd_buffer(this.targetName, this.packetName)\n .then((result) => {\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(result.buffer.raw)\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 >>> textarea {\n margin-top: 10px;\n font-family: 'Courier New', Courier, monospace;\n}\n</style>\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"de5e971109504e7974868fa6f9f60ce5f9b2b994"},o=t[l]||(t[l]={});o[n]&&o[n].hash===e||(o[n]=i);var a=o[n];return c=function(){return a},a}c();var s={mixins:[a.Z],props:{type:String,visible:Boolean,targetName:String,packetName:String},data:function(){return c().f[0]++,c().s[0]++,{header:"",receivedTime:"",rawData:"",paused:!1,receivedCount:""}},computed:{buttonLabel:function(){return c().f[1]++,c().s[1]++,this.paused?(c().b[0][0]++,c().s[2]++,"Resume"):(c().b[0][1]++,c().s[3]++,"Pause")},buttonIcon:function(){return c().f[2]++,c().s[4]++,this.paused?(c().b[1][0]++,c().s[5]++,"mdi-play"):(c().b[1][1]++,c().s[6]++,"mdi-pause")},isVisible:{get:function(){return c().f[3]++,c().s[7]++,this.visible},set:function(n){c().f[4]++,c().s[8]++,this.header="",c().s[9]++,this.receivedTime="",c().s[10]++,this.rawData="",c().s[11]++,this.receivedCount="",c().s[12]++,this.paused=!1,c().s[13]++,this.buttonLabel="Pause",c().s[14]++,this.$emit("display",n)}}},methods:{buildRawData:function(){return c().f[5]++,c().s[15]++,"".concat(this.header,"\nReceived Time: ").concat(this.receivedTime,"\nCount: ").concat(this.receivedCount,"\n").concat(this.rawData)},copyRawData:function(){c().f[6]++,c().s[16]++,navigator.clipboard.writeText(this.buildRawData())},downloadRawData:function(){c().f[7]++;var n=(c().s[17]++,new Blob([this.buildRawData()],{type:"plain/text"})),e=(c().s[18]++,document.createElement("a"));c().s[19]++,e.href=URL.createObjectURL(n);var t=(c().s[20]++,(0,o.Z)(Date.now(),"yyyy_MM_dd_HH_mm_ss"));c().s[21]++,e.setAttribute("download","".concat(t,"_").concat(this.targetName,"_").concat(this.packetName,".txt")),c().s[22]++,e.click()},pause:function(){c().f[8]++,c().s[23]++,this.paused=!this.paused},update:function(){if(c().f[9]++,c().s[24]++,c().b[3][0]++,!this.isVisible||(c().b[3][1]++,this.paused))return c().b[2][0]++,void c().s[25]++;c().b[2][1]++,c().s[26]++,this.header="Raw ".concat(this.type," Packet: ").concat(this.targetName," ").concat(this.packetName),c().s[27]++,"Telemetry"===this.type?(c().b[4][0]++,c().s[28]++,this.updateTelemetry()):(c().b[4][1]++,c().s[29]++,this.updateCommand())},updateTelemetry:function(){var n=this;c().f[10]++,c().s[30]++,this.api.get_tlm_buffer(this.targetName,this.packetName).then((function(e){c().f[11]++,c().s[31]++,n.receivedTime=new Date(e.time/1e6),c().s[32]++,n.receivedCount=e.received_count,c().s[33]++,n.rawData="Address Data Ascii\n---------------------------------------------------------------------------\n"+n.formatBuffer(e.buffer.raw)}))},updateCommand:function(){var n=this;c().f[12]++,c().s[34]++,this.api.get_cmd_buffer(this.targetName,this.packetName).then((function(e){c().f[13]++,c().s[35]++,n.receivedTime=new Date(e.time/1e6),c().s[36]++,n.receivedCount=e.received_count,c().s[37]++,n.rawData="Address Data Ascii\n---------------------------------------------------------------------------\n"+n.formatBuffer(e.buffer.raw)}))},formatBuffer:function(n){var e=this;c().f[14]++;var t=(c().s[38]++,""),l=(c().s[39]++,0),i=(c().s[40]++,"");if(c().s[41]++,n.forEach((function(n){c().f[15]++,c().s[42]++,l%16===0?(c().b[5][0]++,c().s[43]++,t+=e.numHex(l,8)+": "):c().b[5][1]++,c().s[44]++,t+=e.numHex(n),c().s[45]++,c().b[7][0]++,n>=32&&(c().b[7][1]++,n<=126)?(c().b[6][0]++,c().s[46]++,i+=String.fromCharCode(n)):(c().b[6][1]++,c().s[47]++,i+=" "),c().s[48]++,l++,c().s[49]++,l%16===0?(c().b[8][0]++,c().s[50]++,t+=" "+i+"\n",c().s[51]++,i=""):(c().b[8][1]++,c().s[52]++,t+=" ")})),c().s[53]++,l%16!=0){c().b[9][0]++;var o=(c().s[54]++,l%16-1+l%16*2),a=(c().s[55]++," ".repeat(47-o)),s=(c().s[56]++," ".repeat(16-i.length));c().s[57]++,t+=a+" "+i+s}else c().b[9][1]++;return c().s[58]++,t},numHex:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(c().b[10][0]++,2);c().f[16]++;var t=(c().s[59]++,n.toString(16));return c().s[60]++,"0".repeat(e-t.length)+t}}},r=s,u=(t(3203),t(3287)),m=(0,u.Z)(r,l,i,!1,null,"2c506396",null),d=m.exports},4560:function(n,e,t){"use strict";t.r(e);var l=t(3467),i=t.n(l),o=t(8715),a=t.n(o),c=a()(i());c.push([n.id,".v-textarea[data-v-2c506396] textarea{margin-top:10px;font-family:Courier New,Courier,monospace}",""]),e["default"]=c},3203:function(n,e,t){var l=t(4560);l.__esModule&&(l=l.default),"string"===typeof l&&(l=[[n.id,l,""]]),l.locals&&(n.exports=l.locals);var i=t(3514).Z;i("27891669",l,!0,{sourceMap:!1,shadowMode:!1})}}]);
2
+ //# sourceMappingURL=407.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/407.js","mappings":"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","sources":["webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/Updater.js","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?6de8","webpack://@cosmosc2/tool-cmdtlmserver/src/tools/CmdTlmServer/RawDialog.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?8039","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?a976","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/RawDialog.vue?b223"],"sourcesContent":["/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\n\nexport default {\n props: {\n refreshInterval: {\n default: 1000,\n },\n },\n data() {\n return {\n updater: null,\n api: null,\n }\n },\n created() {\n this.api = new CosmosApi()\n },\n mounted() {\n this.changeUpdater()\n },\n beforeDestroy() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n watch: {\n // eslint-disable-next-line no-unused-vars\n refreshInterval: function (newVal, oldVal) {\n this.changeUpdater()\n },\n },\n methods: {\n changeUpdater() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n this.updater = setInterval(() => {\n this.update()\n }, this.refreshInterval)\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"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(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_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(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_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(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"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 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(result.buffer.raw)\n })\n },\n updateCommand: function () {\n this.api\n .get_cmd_buffer(this.targetName, this.packetName)\n .then((result) => {\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(result.buffer.raw)\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 >>> textarea {\n margin-top: 10px;\n font-family: 'Courier New', Courier, monospace;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RawDialog.vue?vue&type=template&id=2c506396&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=2c506396&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c506396\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-textarea[data-v-2c506396] 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/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawDialog.vue?vue&type=style&index=0&id=2c506396&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(\"27891669\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["props","refreshInterval","default","data","updater","api","created","this","CosmosApi","mounted","changeUpdater","beforeDestroy","clearInterval","watch","newVal","oldVal","methods","setInterval","update","render","_vm","_h","$createElement","_c","_self","attrs","on","$event","type","indexOf","_k","keyCode","key","isVisible","model","value","callback","$$v","expression","scopedSlots","_u","fn","ref","_g","_b","copyRawData","_v","_s","downloadRawData","header","pause","buttonIcon","buttonLabel","staticClass","receivedTime","receivedCount","rawData","staticRenderFns","mixins","String","visible","Boolean","targetName","packetName","paused","computed","get","set","$emit","bool","buildRawData","navigator","clipboard","writeText","link","href","URL","createObjectURL","blob","setAttribute","dt","click","updateTelemetry","updateCommand","get_tlm_buffer","then","get_cmd_buffer","formatBuffer","string","index","ascii","buffer","forEach","fromCharCode","byte","existing_length","filler","ascii_filler","numHex","num","hex","repeat","width","length","component","___CSS_LOADER_EXPORT___","push","module","id","content","__esModule","locals","exports","add"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self["webpackChunk_cosmosc2_tool_cmdtlmserver"]=self["webpackChunk_cosmosc2_tool_cmdtlmserver"]||[]).push([[450],{5799:function(n,e,l){var t=l(1479);function o(){var n="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/Updater.js",e="f0b5f59be3bc09a142595f4638035cf73a6d3719",l=new Function("return this")(),t="__coverage__",c={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/Updater.js",statementMap:{0:{start:{line:29,column:4},end:{line:32,column:5}},1:{start:{line:35,column:4},end:{line:35,column:30}},2:{start:{line:38,column:4},end:{line:38,column:24}},3:{start:{line:41,column:4},end:{line:44,column:5}},4:{start:{line:42,column:6},end:{line:42,column:33}},5:{start:{line:43,column:6},end:{line:43,column:25}},6:{start:{line:49,column:6},end:{line:49,column:26}},7:{start:{line:54,column:6},end:{line:57,column:7}},8:{start:{line:55,column:8},end:{line:55,column:35}},9:{start:{line:56,column:8},end:{line:56,column:27}},10:{start:{line:58,column:6},end:{line:60,column:30}},11:{start:{line:59,column:8},end:{line:59,column:21}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:28,column:2},end:{line:28,column:3}},loc:{start:{line:28,column:9},end:{line:33,column:3}},line:28},1:{name:"(anonymous_1)",decl:{start:{line:34,column:2},end:{line:34,column:3}},loc:{start:{line:34,column:12},end:{line:36,column:3}},line:34},2:{name:"(anonymous_2)",decl:{start:{line:37,column:2},end:{line:37,column:3}},loc:{start:{line:37,column:12},end:{line:39,column:3}},line:37},3:{name:"(anonymous_3)",decl:{start:{line:40,column:2},end:{line:40,column:3}},loc:{start:{line:40,column:18},end:{line:45,column:3}},line:40},4:{name:"(anonymous_4)",decl:{start:{line:48,column:21},end:{line:48,column:22}},loc:{start:{line:48,column:47},end:{line:50,column:5}},line:48},5:{name:"(anonymous_5)",decl:{start:{line:53,column:4},end:{line:53,column:5}},loc:{start:{line:53,column:20},end:{line:61,column:5}},line:53},6:{name:"(anonymous_6)",decl:{start:{line:58,column:33},end:{line:58,column:34}},loc:{start:{line:58,column:39},end:{line:60,column:7}},line:58}},branchMap:{0:{loc:{start:{line:41,column:4},end:{line:44,column:5}},type:"if",locations:[{start:{line:41,column:4},end:{line:44,column:5}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:41},1:{loc:{start:{line:54,column:6},end:{line:57,column:7}},type:"if",locations:[{start:{line:54,column:6},end:{line:57,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:54}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0},b:{0:[0,0],1:[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f0b5f59be3bc09a142595f4638035cf73a6d3719"},i=l[t]||(l[t]={});i[n]&&i[n].hash===e||(i[n]=c);var s=i[n];return o=function(){return s},s}o(),e["Z"]={props:{refreshInterval:{default:1e3}},data:function(){return o().f[0]++,o().s[0]++,{updater:null,api:null}},created:function(){o().f[1]++,o().s[1]++,this.api=new t.J},mounted:function(){o().f[2]++,o().s[2]++,this.changeUpdater()},beforeDestroy:function(){o().f[3]++,o().s[3]++,null!=this.updater?(o().b[0][0]++,o().s[4]++,clearInterval(this.updater),o().s[5]++,this.updater=null):o().b[0][1]++},watch:{refreshInterval:function(n,e){o().f[4]++,o().s[6]++,this.changeUpdater()}},methods:{changeUpdater:function(){var n=this;o().f[5]++,o().s[7]++,null!=this.updater?(o().b[1][0]++,o().s[8]++,clearInterval(this.updater),o().s[9]++,this.updater=null):o().b[1][1]++,o().s[10]++,this.updater=setInterval((function(){o().f[6]++,o().s[11]++,n.update()}),this.refreshInterval)}}}},2450:function(n,e,l){l.r(e),l.d(e,{default:function(){return A}});var t=function(){var n=this,e=n.$createElement,l=n._self._c||e;return l("v-card",[l("v-card-title",[n._v(" "+n._s(n.data.length)+" Interfaces "),l("v-spacer"),l("v-text-field",{attrs:{"append-icon":"mdi-magnify",label:"Search","single-line":"","hide-details":""},model:{value:n.search,callback:function(e){n.search=e},expression:"search"}})],1),l("v-data-table",{attrs:{headers:n.headers,items:n.data,search:n.search,"custom-sort":n.sortTable,"calculate-widths":"","disable-pagination":"","hide-default-footer":"","multi-sort":"","data-test":"interfaces-table"},scopedSlots:n._u([{key:"item.connect",fn:function(e){var t=e.item;return[l("v-btn",{attrs:{block:"",color:"primary",disabled:n.buttonsDisabled},on:{click:function(e){return n.connectDisconnect(t)}}},[n._v(" "+n._s(t.connect)+" ")])]}},{key:"item.connected",fn:function(e){var t=e.item;return[l("span",{style:{color:t.connected_color}},[n._v(" "+n._s(t.connected)+" ")])]}}])})],1)},o=[],c=l(6711),i=(l(1245),l(3430),l(5799));function s(){var n="/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/InterfacesTab.vue",e="faf5c9b673abc53eae1308ae28207db734310dd4",l=new Function("return this")(),t="__coverage__",o={path:"/cosmos/plugins/packages/cosmosc2-tool-cmdtlmserver/src/tools/CmdTlmServer/InterfacesTab.vue",statementMap:{0:{start:{line:73,column:4},end:{line:94,column:5}},1:{start:{line:99,column:6},end:{line:146,column:8}},2:{start:{line:100,column:8},end:{line:145,column:9}},3:{start:{line:100,column:21},end:{line:100,column:22}},4:{start:{line:101,column:23},end:{line:101,column:31}},5:{start:{line:102,column:21},end:{line:102,column:30}},6:{start:{line:104,column:10},end:{line:144,column:11}},7:{start:{line:106,column:12},end:{line:108,column:13}},8:{start:{line:107,column:14},end:{line:107,column:22}},9:{start:{line:109,column:12},end:{line:121,column:13}},10:{start:{line:110,column:14},end:{line:114,column:15}},11:{start:{line:111,column:16},end:{line:111,column:25}},12:{start:{line:113,column:16},end:{line:113,column:24}},13:{start:{line:116,column:14},end:{line:120,column:15}},14:{start:{line:117,column:16},end:{line:117,column:24}},15:{start:{line:119,column:16},end:{line:119,column:25}},16:{start:{line:122,column:17},end:{line:144,column:11}},17:{start:{line:124,column:12},end:{line:126,column:13}},18:{start:{line:125,column:14},end:{line:125,column:22}},19:{start:{line:127,column:12},end:{line:132,column:13}},20:{start:{line:129,column:14},end:{line:129,column:55}},21:{start:{line:131,column:14},end:{line:131,column:55}},22:{start:{line:135,column:12},end:{line:137,column:13}},23:{start:{line:136,column:14},end:{line:136,column:22}},24:{start:{line:138,column:12},end:{line:143,column:13}},25:{start:{line:140,column:14},end:{line:140,column:42}},26:{start:{line:142,column:14},end:{line:142,column:42}},27:{start:{line:147,column:6},end:{line:147,column:18}},28:{start:{line:150,column:6},end:{line:150,column:33}},29:{start:{line:151,column:6},end:{line:155,column:7}},30:{start:{line:152,column:8},end:{line:152,column:45}},31:{start:{line:154,column:8},end:{line:154,column:48}},32:{start:{line:158,column:6},end:{line:158,column:43}},33:{start:{line:158,column:37},end:{line:158,column:43}},34:{start:{line:159,column:6},end:{line:189,column:8}},35:{start:{line:160,column:8},end:{line:160,column:22}},36:{start:{line:161,column:8},end:{line:187,column:9}},37:{start:{line:162,column:24},end:{line:162,column:28}},38:{start:{line:163,column:32},end:{line:163,column:36}},39:{start:{line:164,column:10},end:{line:173,column:11}},40:{start:{line:165,column:12},end:{line:165,column:31}},41:{start:{line:166,column:12},end:{line:166,column:37}},42:{start:{line:167,column:17},end:{line:173,column:11}},43:{start:{line:168,column:12},end:{line:168,column:34}},44:{start:{line:169,column:12},end:{line:169,column:37}},45:{start:{line:171,column:12},end:{line:171,column:30}},46:{start:{line:172,column:12},end:{line:172,column:35}},47:{start:{line:174,column:10},end:{line:186,column:12}},48:{start:{line:188,column:8},end:{line:188,column:36}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:72,column:2},end:{line:72,column:3}},loc:{start:{line:72,column:9},end:{line:95,column:3}},line:72},1:{name:"(anonymous_1)",decl:{start:{line:98,column:4},end:{line:98,column:5}},loc:{start:{line:98,column:36},end:{line:148,column:5}},line:98},2:{name:"(anonymous_2)",decl:{start:{line:99,column:17},end:{line:99,column:18}},loc:{start:{line:99,column:27},end:{line:146,column:7}},line:99},3:{name:"(anonymous_3)",decl:{start:{line:149,column:4},end:{line:149,column:5}},loc:{start:{line:149,column:28},end:{line:156,column:5}},line:149},4:{name:"(anonymous_4)",decl:{start:{line:157,column:4},end:{line:157,column:5}},loc:{start:{line:157,column:13},end:{line:190,column:5}},line:157},5:{name:"(anonymous_5)",decl:{start:{line:159,column:45},end:{line:159,column:46}},loc:{start:{line:159,column:55},end:{line:189,column:7}},line:159}},branchMap:{0:{loc:{start:{line:104,column:10},end:{line:144,column:11}},type:"if",locations:[{start:{line:104,column:10},end:{line:144,column:11}},{start:{line:122,column:17},end:{line:144,column:11}}],line:104},1:{loc:{start:{line:106,column:12},end:{line:108,column:13}},type:"if",locations:[{start:{line:106,column:12},end:{line:108,column:13}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:106},2:{loc:{start:{line:109,column:12},end:{line:121,column:13}},type:"if",locations:[{start:{line:109,column:12},end:{line:121,column:13}},{start:{line:115,column:19},end:{line:121,column:13}}],line:109},3:{loc:{start:{line:110,column:14},end:{line:114,column:15}},type:"if",locations:[{start:{line:110,column:14},end:{line:114,column:15}},{start:{line:112,column:21},end:{line:114,column:15}}],line:110},4:{loc:{start:{line:116,column:14},end:{line:120,column:15}},type:"if",locations:[{start:{line:116,column:14},end:{line:120,column:15}},{start:{line:118,column:21},end:{line:120,column:15}}],line:116},5:{loc:{start:{line:122,column:17},end:{line:144,column:11}},type:"if",locations:[{start:{line:122,column:17},end:{line:144,column:11}},{start:{line:133,column:17},end:{line:144,column:11}}],line:122},6:{loc:{start:{line:124,column:12},end:{line:126,column:13}},type:"if",locations:[{start:{line:124,column:12},end:{line:126,column:13}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:124},7:{loc:{start:{line:127,column:12},end:{line:132,column:13}},type:"if",locations:[{start:{line:127,column:12},end:{line:132,column:13}},{start:{line:130,column:19},end:{line:132,column:13}}],line:127},8:{loc:{start:{line:135,column:12},end:{line:137,column:13}},type:"if",locations:[{start:{line:135,column:12},end:{line:137,column:13}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:135},9:{loc:{start:{line:138,column:12},end:{line:143,column:13}},type:"if",locations:[{start:{line:138,column:12},end:{line:143,column:13}},{start:{line:141,column:19},end:{line:143,column:13}}],line:138},10:{loc:{start:{line:151,column:6},end:{line:155,column:7}},type:"if",locations:[{start:{line:151,column:6},end:{line:155,column:7}},{start:{line:153,column:13},end:{line:155,column:7}}],line:151},11:{loc:{start:{line:158,column:6},end:{line:158,column:43}},type:"if",locations:[{start:{line:158,column:6},end:{line:158,column:43}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:158},12:{loc:{start:{line:164,column:10},end:{line:173,column:11}},type:"if",locations:[{start:{line:164,column:10},end:{line:173,column:11}},{start:{line:167,column:17},end:{line:173,column:11}}],line:164},13:{loc:{start:{line:167,column:17},end:{line:173,column:11}},type:"if",locations:[{start:{line:167,column:17},end:{line:173,column:11}},{start:{line:170,column:17},end:{line:173,column:11}}],line:167}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0},f:{0:0,1:0,2:0,3:0,4:0,5:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0],7:[0,0],8:[0,0],9:[0,0],10:[0,0],11:[0,0],12:[0,0],13:[0,0]},inputSourceMap:{version:3,sources:["InterfacesTab.vue"],names:[],mappings:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"InterfacesTab.vue",sourceRoot:"src/tools/CmdTlmServer",sourcesContent:["\x3c!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n--\x3e\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 calculate-widths\n disable-pagination\n hide-default-footer\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 :style=\"{ color: item.connected_color }\">\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 connected_color = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connected_color = 'white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connected_color = 'green'\n } else {\n connect = 'Cancel'\n connected_color = 'red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connected_color: connected_color,\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"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"faf5c9b673abc53eae1308ae28207db734310dd4"},c=l[t]||(l[t]={});c[n]&&c[n].hash===e||(c[n]=o);var i=c[n];return s=function(){return i},i}s();var a={mixins:[i.Z],props:{tabId:Number,curTab:Number},data:function(){return s().f[0]++,s().s[0]++,{search:"",data:[],buttonsDisabled:!1,headers:[{text:"Name",value:"name"},{text:"Connect / Disconnect",value:"connect",sortable:!1,filterable:!1},{text:"Connected",value:"connected"},{text:"Clients",value:"clients"},{text:"Tx Q Size",value:"tx_q_size"},{text:"Rx Q Size",value:"rx_q_size"},{text:"Tx Bytes",value:"tx_bytes"},{text:"Rx Bytes",value:"rx_bytes"},{text:"Cmd Pkts",value:"cmd_pkts"},{text:"Tlm Pkts",value:"tlm_pkts"}]}},methods:{sortTable:function(n,e,l){return s().f[1]++,s().s[1]++,n.sort((function(n,t){s().f[2]++,s().s[2]++;for(var o=(s().s[3]++,0);o<e.length;o++){var c=(s().s[4]++,e[o]),i=(s().s[5]++,l[o]);if(s().s[6]++,"connected"===c){if(s().b[0][0]++,s().s[7]++,n[c]===t[c]){s().b[1][0]++,s().s[8]++;continue}return s().b[1][1]++,s().s[9]++,i?(s().b[2][1]++,s().s[13]++,"CONNECTED"===n[c]?(s().b[4][0]++,s().s[14]++,1):(s().b[4][1]++,s().s[15]++,-1)):(s().b[2][0]++,s().s[10]++,"CONNECTED"===n[c]?(s().b[3][0]++,s().s[11]++,-1):(s().b[3][1]++,s().s[12]++,1))}if(s().b[0][1]++,s().s[16]++,"name"===c){if(s().b[5][0]++,s().s[17]++,n[c]===t[c]){s().b[6][0]++,s().s[18]++;continue}return s().b[6][1]++,s().s[19]++,i?(s().b[7][1]++,s().s[21]++,t[c].localeCompare(n[c])):(s().b[7][0]++,s().s[20]++,n[c].localeCompare(t[c]))}if(s().b[5][1]++,s().s[22]++,n[c]!==t[c])return s().b[8][1]++,s().s[24]++,i?(s().b[9][1]++,s().s[26]++,t[c]-n[c]):(s().b[9][0]++,s().s[25]++,n[c]-t[c]);s().b[8][0]++,s().s[23]++}})),s().s[27]++,n},connectDisconnect:function(n){s().f[3]++,s().s[28]++,this.buttonsDisabled=!0,s().s[29]++,"DISCONNECTED"===n.connected?(s().b[10][0]++,s().s[30]++,this.api.connect_interface(n.name)):(s().b[10][1]++,s().s[31]++,this.api.disconnect_interface(n.name))},update:function(){var n=this;if(s().f[4]++,s().s[32]++,this.tabId!=this.curTab)return s().b[11][0]++,void s().s[33]++;s().b[11][1]++,s().s[34]++,this.api.get_all_interface_info().then((function(e){s().f[5]++,s().s[35]++,n.data=[],s().s[36]++;var l,t=(0,c.Z)(e);try{for(t.s();!(l=t.n()).done;){var o=l.value,i=(s().s[37]++,null),a=(s().s[38]++,null);s().s[39]++,"DISCONNECTED"==o[1]?(s().b[12][0]++,s().s[40]++,i="Connect",s().s[41]++,a="white"):(s().b[12][1]++,s().s[42]++,"CONNECTED"==o[1]?(s().b[13][0]++,s().s[43]++,i="Disconnect",s().s[44]++,a="green"):(s().b[13][1]++,s().s[45]++,i="Cancel",s().s[46]++,a="red")),s().s[47]++,n.data.push({name:o[0],connect:i,connected_color:a,connected:o[1],clients:o[2],tx_q_size:o[3],rx_q_size:o[4],tx_bytes:o[5],rx_bytes:o[6],cmd_pkts:o[7],tlm_pkts:o[8]})}}catch(u){t.e(u)}finally{t.f()}s().s[48]++,n.buttonsDisabled=!1}))}}},u=a,r=l(3287),m=(0,r.Z)(u,t,o,!1,null,null,null),A=m.exports},6711:function(n,e,l){l.d(e,{Z:function(){return o}});l(4115),l(634),l(8188),l(796),l(8673),l(6886),l(1372);var t=l(3486);function o(n,e){var l="undefined"!==typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!l){if(Array.isArray(n)||(l=(0,t.Z)(n))||e&&n&&"number"===typeof n.length){l&&(n=l);var o=0,c=function(){};return{s:c,n:function(){return o>=n.length?{done:!0}:{done:!1,value:n[o++]}},e:function(n){throw n},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){l=l.call(n)},n:function(){var n=l.next();return s=n.done,n},e:function(n){a=!0,i=n},f:function(){try{s||null==l["return"]||l["return"]()}finally{if(a)throw i}}}}}}]);
2
+ //# sourceMappingURL=450.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/450.js","mappings":"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","sources":["webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/Updater.js","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?bc80","webpack://@cosmosc2/tool-cmdtlmserver/src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue?ee88","webpack://@cosmosc2/tool-cmdtlmserver/./src/tools/CmdTlmServer/InterfacesTab.vue","webpack://@cosmosc2/tool-cmdtlmserver/../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js"],"sourcesContent":["/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\n\nexport default {\n props: {\n refreshInterval: {\n default: 1000,\n },\n },\n data() {\n return {\n updater: null,\n api: null,\n }\n },\n created() {\n this.api = new CosmosApi()\n },\n mounted() {\n this.changeUpdater()\n },\n beforeDestroy() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n watch: {\n // eslint-disable-next-line no-unused-vars\n refreshInterval: function (newVal, oldVal) {\n this.changeUpdater()\n },\n },\n methods: {\n changeUpdater() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n this.updater = setInterval(() => {\n this.update()\n }, this.refreshInterval)\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(\" \"+_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,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"data-test\":\"interfaces-table\"},scopedSlots:_vm._u([{key:\"item.connect\",fn:function(ref){\nvar item = ref.item;\nreturn [_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(ref){\nvar item = ref.item;\nreturn [_c('span',{style:({ color: item.connected_color })},[_vm._v(\" \"+_vm._s(item.connected)+\" \")])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-card>\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 calculate-widths\n disable-pagination\n hide-default-footer\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 :style=\"{ color: item.connected_color }\">\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 connected_color = null\n if (int[1] == 'DISCONNECTED') {\n connect = 'Connect'\n connected_color = 'white'\n } else if (int[1] == 'CONNECTED') {\n connect = 'Disconnect'\n connected_color = 'green'\n } else {\n connect = 'Cancel'\n connected_color = 'red'\n }\n this.data.push({\n name: int[0],\n connect: connect,\n connected_color: connected_color,\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/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterfacesTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InterfacesTab.vue?vue&type=template&id=5775c6ab&\"\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/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["props","refreshInterval","default","data","updater","api","created","this","CosmosApi","mounted","changeUpdater","beforeDestroy","clearInterval","watch","newVal","oldVal","methods","setInterval","update","render","_vm","_h","$createElement","_c","_self","_v","_s","length","attrs","model","value","callback","$$v","search","expression","headers","sortTable","scopedSlots","_u","key","fn","ref","item","buttonsDisabled","on","$event","connectDisconnect","connect","style","color","connected_color","connected","staticRenderFns","mixins","tabId","Number","curTab","text","sortable","filterable","items","index","isDesc","sort","column","a","b","desc","connect_interface","name","disconnect_interface","get_all_interface_info","then","info","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":""}