@openc3/vue-common 6.9.2 → 6.10.2
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.
- package/dist/{ArrayWidget-Barb7cCJ.cjs → ArrayWidget-ByKRAWXn.cjs} +2 -2
- package/dist/{ArrayWidget-Barb7cCJ.cjs.map → ArrayWidget-ByKRAWXn.cjs.map} +1 -1
- package/dist/{ArrayWidget-DUTccTH3.js → ArrayWidget-CR7Wpw3N.js} +4 -4
- package/dist/{ArrayWidget-DUTccTH3.js.map → ArrayWidget-CR7Wpw3N.js.map} +1 -1
- package/dist/{ArrayplotWidget-CQRRIpFr.cjs → ArrayplotWidget-Cty7KQ_h.cjs} +2 -2
- package/dist/{ArrayplotWidget-CQRRIpFr.cjs.map → ArrayplotWidget-Cty7KQ_h.cjs.map} +1 -1
- package/dist/{ArrayplotWidget-BeNF76NM.js → ArrayplotWidget-DDEd-jRJ.js} +3 -3
- package/dist/{ArrayplotWidget-BeNF76NM.js.map → ArrayplotWidget-DDEd-jRJ.js.map} +1 -1
- package/dist/{BarColumn-ooUZaRUq.cjs → BarColumn-BZSUr33b.cjs} +2 -2
- package/dist/{BarColumn-ooUZaRUq.cjs.map → BarColumn-BZSUr33b.cjs.map} +1 -1
- package/dist/{BarColumn-Dn6MDJoo.js → BarColumn-XWs-3Cwb.js} +3 -3
- package/dist/{BarColumn-Dn6MDJoo.js.map → BarColumn-XWs-3Cwb.js.map} +1 -1
- package/dist/{BlockWidget-BDkZljH8.cjs → BlockWidget-BDzoqpxO.cjs} +2 -2
- package/dist/{BlockWidget-BDkZljH8.cjs.map → BlockWidget-BDzoqpxO.cjs.map} +1 -1
- package/dist/{BlockWidget-BXQlPVQI.js → BlockWidget-CfFgdNSv.js} +4 -4
- package/dist/{BlockWidget-BXQlPVQI.js.map → BlockWidget-CfFgdNSv.js.map} +1 -1
- package/dist/{ButtonWidget-5ybX-zVD.cjs → ButtonWidget-BBMDS_YF.cjs} +3 -3
- package/dist/{ButtonWidget-5ybX-zVD.cjs.map → ButtonWidget-BBMDS_YF.cjs.map} +1 -1
- package/dist/{ButtonWidget-D8ncnhlr.js → ButtonWidget-BaSvtElA.js} +10 -10
- package/dist/{ButtonWidget-D8ncnhlr.js.map → ButtonWidget-BaSvtElA.js.map} +1 -1
- package/dist/{CanvasWidget-D4ZHOTxU.cjs → CanvasWidget-CFNpgqfW.cjs} +2 -2
- package/dist/{CanvasWidget-D4ZHOTxU.cjs.map → CanvasWidget-CFNpgqfW.cjs.map} +1 -1
- package/dist/{CanvasWidget-IkZPgKME.js → CanvasWidget-DcwDi5Zk.js} +2 -2
- package/dist/{CanvasWidget-IkZPgKME.js.map → CanvasWidget-DcwDi5Zk.js.map} +1 -1
- package/dist/{CanvasdotWidget-Ceu6X0ma.js → CanvasdotWidget--awMOWyz.js} +2 -2
- package/dist/{CanvasdotWidget-Ceu6X0ma.js.map → CanvasdotWidget--awMOWyz.js.map} +1 -1
- package/dist/{CanvasdotWidget-C_M5yCv9.cjs → CanvasdotWidget-BZ9TrTvw.cjs} +2 -2
- package/dist/{CanvasdotWidget-C_M5yCv9.cjs.map → CanvasdotWidget-BZ9TrTvw.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-BiWHp93X.cjs → CanvasimageWidget-Dk15uRRu.cjs} +2 -2
- package/dist/{CanvasimageWidget-BiWHp93X.cjs.map → CanvasimageWidget-Dk15uRRu.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-Bnx5rUVW.js → CanvasimageWidget-YP1pCtvb.js} +3 -3
- package/dist/{CanvasimageWidget-Bnx5rUVW.js.map → CanvasimageWidget-YP1pCtvb.js.map} +1 -1
- package/dist/{CanvasimagevalueWidget-CVdY8iLq.cjs → CanvasimagevalueWidget-BQHjJCuq.cjs} +2 -2
- package/dist/{CanvasimagevalueWidget-CVdY8iLq.cjs.map → CanvasimagevalueWidget-BQHjJCuq.cjs.map} +1 -1
- package/dist/{CanvasimagevalueWidget-CFO-XDML.js → CanvasimagevalueWidget-CjVHb2uj.js} +3 -3
- package/dist/{CanvasimagevalueWidget-CFO-XDML.js.map → CanvasimagevalueWidget-CjVHb2uj.js.map} +1 -1
- package/dist/{CanvaslabelWidget-C5wyN8dS.js → CanvaslabelWidget-DoMplTTO.js} +2 -2
- package/dist/{CanvaslabelWidget-C5wyN8dS.js.map → CanvaslabelWidget-DoMplTTO.js.map} +1 -1
- package/dist/{CanvaslabelWidget-U4P4GDpI.cjs → CanvaslabelWidget-Dw1YmiY0.cjs} +2 -2
- package/dist/{CanvaslabelWidget-U4P4GDpI.cjs.map → CanvaslabelWidget-Dw1YmiY0.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-C60wTi40.cjs → CanvaslabelvalueWidget-BYmsu9r_.cjs} +2 -2
- package/dist/{CanvaslabelvalueWidget-C60wTi40.cjs.map → CanvaslabelvalueWidget-BYmsu9r_.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-CXr6zhdn.js → CanvaslabelvalueWidget-Dyo_ogHn.js} +2 -2
- package/dist/{CanvaslabelvalueWidget-CXr6zhdn.js.map → CanvaslabelvalueWidget-Dyo_ogHn.js.map} +1 -1
- package/dist/{CanvaslineWidget-DW2l3EAG.js → CanvaslineWidget-D7W1TIxm.js} +2 -2
- package/dist/{CanvaslineWidget-DW2l3EAG.js.map → CanvaslineWidget-D7W1TIxm.js.map} +1 -1
- package/dist/{CanvaslineWidget-CzOtvkcR.cjs → CanvaslineWidget-tm194dw1.cjs} +2 -2
- package/dist/{CanvaslineWidget-CzOtvkcR.cjs.map → CanvaslineWidget-tm194dw1.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-UJ0xa8-8.js → CanvaslinevalueWidget-BOZyJuLE.js} +2 -2
- package/dist/{CanvaslinevalueWidget-UJ0xa8-8.js.map → CanvaslinevalueWidget-BOZyJuLE.js.map} +1 -1
- package/dist/{CanvaslinevalueWidget-D20bbhm_.cjs → CanvaslinevalueWidget-DM5c-ciY.cjs} +2 -2
- package/dist/{CanvaslinevalueWidget-D20bbhm_.cjs.map → CanvaslinevalueWidget-DM5c-ciY.cjs.map} +1 -1
- package/dist/{CheckbuttonWidget-BF5cvQHd.js → CheckbuttonWidget-B1E4BC6v.js} +2 -2
- package/dist/{CheckbuttonWidget-BF5cvQHd.js.map → CheckbuttonWidget-B1E4BC6v.js.map} +1 -1
- package/dist/{CheckbuttonWidget-dStQF0Yp.cjs → CheckbuttonWidget-BSvTWD3x.cjs} +2 -2
- package/dist/{CheckbuttonWidget-dStQF0Yp.cjs.map → CheckbuttonWidget-BSvTWD3x.cjs.map} +1 -1
- package/dist/{ClassificationBanners-CTChOmRf.cjs → ClassificationBanners-CzZoKcRy.cjs} +2 -2
- package/dist/{ClassificationBanners-CTChOmRf.cjs.map → ClassificationBanners-CzZoKcRy.cjs.map} +1 -1
- package/dist/{ClassificationBanners-CDc_06x9.js → ClassificationBanners-DQeVwmYp.js} +2 -2
- package/dist/{ClassificationBanners-CDc_06x9.js.map → ClassificationBanners-DQeVwmYp.js.map} +1 -1
- package/dist/{ComboboxWidget-Di1O9VBF.js → ComboboxWidget-BExUBH57.js} +2 -2
- package/dist/{ComboboxWidget-Di1O9VBF.js.map → ComboboxWidget-BExUBH57.js.map} +1 -1
- package/dist/{ComboboxWidget-D4h-0V0x.cjs → ComboboxWidget-B_KAnIVB.cjs} +2 -2
- package/dist/{ComboboxWidget-D4h-0V0x.cjs.map → ComboboxWidget-B_KAnIVB.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-CZHVDFjK.js → CriticalCmdDialog-BtzhxuZi.js} +16 -16
- package/dist/CriticalCmdDialog-BtzhxuZi.js.map +1 -0
- package/dist/{CriticalCmdDialog-EvK998xs.cjs → CriticalCmdDialog-CeohXoAG.cjs} +2 -2
- package/dist/CriticalCmdDialog-CeohXoAG.cjs.map +1 -0
- package/dist/{DateWidget-GiUOvEZO.js → DateWidget-_ZmPsi2l.js} +2 -2
- package/dist/{DateWidget-GiUOvEZO.js.map → DateWidget-_ZmPsi2l.js.map} +1 -1
- package/dist/{DateWidget-BAFINBB6.cjs → DateWidget-kTJBAHVp.cjs} +2 -2
- package/dist/{DateWidget-BAFINBB6.cjs.map → DateWidget-kTJBAHVp.cjs.map} +1 -1
- package/dist/DetailsDialog-Bc_VEG95.cjs +2 -0
- package/dist/DetailsDialog-Bc_VEG95.cjs.map +1 -0
- package/dist/{DetailsDialog-Ji0jA6sd.js → DetailsDialog-Bq7SS7bc.js} +76 -73
- package/dist/DetailsDialog-Bq7SS7bc.js.map +1 -0
- package/dist/{EventListDialog-CEDNXaKw.cjs → EventListDialog-Dycx70tY.cjs} +2 -2
- package/dist/{EventListDialog-CEDNXaKw.cjs.map → EventListDialog-Dycx70tY.cjs.map} +1 -1
- package/dist/{EventListDialog-BLLIQyah.js → EventListDialog-jdNF3szO.js} +3 -3
- package/dist/{EventListDialog-BLLIQyah.js.map → EventListDialog-jdNF3szO.js.map} +1 -1
- package/dist/{FormatvalueWidget-JVEG-72b.js → FormatvalueWidget-4C0vrL2i.js} +3 -3
- package/dist/{FormatvalueWidget-JVEG-72b.js.map → FormatvalueWidget-4C0vrL2i.js.map} +1 -1
- package/dist/{FormatvalueWidget-DJkp_gM_.cjs → FormatvalueWidget-CVoJgFJA.cjs} +2 -2
- package/dist/{FormatvalueWidget-DJkp_gM_.cjs.map → FormatvalueWidget-CVoJgFJA.cjs.map} +1 -1
- package/dist/{Graph-B3v4RJRC.js → Graph-B7KPo9Ul.js} +3 -3
- package/dist/{Graph-B3v4RJRC.js.map → Graph-B7KPo9Ul.js.map} +1 -1
- package/dist/{Graph-BOZlkDbl.cjs → Graph-C9FS6KR3.cjs} +2 -2
- package/dist/{Graph-BOZlkDbl.cjs.map → Graph-C9FS6KR3.cjs.map} +1 -1
- package/dist/{GraphWidget-DGe0TweO.js → GraphWidget-BpkPpAbd.js} +2 -2
- package/dist/{GraphWidget-DGe0TweO.js.map → GraphWidget-BpkPpAbd.js.map} +1 -1
- package/dist/{GraphWidget-DD7SIV2k.cjs → GraphWidget-D3HueIZi.cjs} +2 -2
- package/dist/{GraphWidget-DD7SIV2k.cjs.map → GraphWidget-D3HueIZi.cjs.map} +1 -1
- package/dist/{HorizontalWidget-CIDUx-Qp.cjs → HorizontalWidget-CN6goWHY.cjs} +2 -2
- package/dist/{HorizontalWidget-CIDUx-Qp.cjs.map → HorizontalWidget-CN6goWHY.cjs.map} +1 -1
- package/dist/{HorizontalWidget-B_JnT2Q0.js → HorizontalWidget-DbEQYjFC.js} +2 -2
- package/dist/{HorizontalWidget-B_JnT2Q0.js.map → HorizontalWidget-DbEQYjFC.js.map} +1 -1
- package/dist/{HorizontalboxWidget-D_1bF3p-.js → HorizontalboxWidget-CTomf_Iy.js} +5 -5
- package/dist/{HorizontalboxWidget-D_1bF3p-.js.map → HorizontalboxWidget-CTomf_Iy.js.map} +1 -1
- package/dist/{HorizontalboxWidget-BQYyunr-.cjs → HorizontalboxWidget-ysq7slso.cjs} +2 -2
- package/dist/{HorizontalboxWidget-BQYyunr-.cjs.map → HorizontalboxWidget-ysq7slso.cjs.map} +1 -1
- package/dist/{HorizontallineWidget-Bqb82J2C.js → HorizontallineWidget-B7xx7ofY.js} +2 -2
- package/dist/{HorizontallineWidget-Bqb82J2C.js.map → HorizontallineWidget-B7xx7ofY.js.map} +1 -1
- package/dist/{HorizontallineWidget-dYDzYNW1.cjs → HorizontallineWidget-BgXZZymr.cjs} +2 -2
- package/dist/{HorizontallineWidget-dYDzYNW1.cjs.map → HorizontallineWidget-BgXZZymr.cjs.map} +1 -1
- package/dist/{IframeWidget-BUOO2Zav.js → IframeWidget-DK7rbULe.js} +2 -2
- package/dist/{IframeWidget-BUOO2Zav.js.map → IframeWidget-DK7rbULe.js.map} +1 -1
- package/dist/{IframeWidget-92T3yaK4.cjs → IframeWidget-fV9e-Nm1.cjs} +2 -2
- package/dist/{IframeWidget-92T3yaK4.cjs.map → IframeWidget-fV9e-Nm1.cjs.map} +1 -1
- package/dist/{ImageLoader-C6RNmpHN.js → ImageLoader-C9rN_pSY.js} +2 -2
- package/dist/{ImageLoader-C6RNmpHN.js.map → ImageLoader-C9rN_pSY.js.map} +1 -1
- package/dist/{ImageLoader-Dq0Qs61n.cjs → ImageLoader-CJxiBXAL.cjs} +2 -2
- package/dist/{ImageLoader-Dq0Qs61n.cjs.map → ImageLoader-CJxiBXAL.cjs.map} +1 -1
- package/dist/{ImageviewerWidget-Fd7r9VTx.js → ImageviewerWidget-6d6Kl3W_.js} +2 -2
- package/dist/{ImageviewerWidget-Fd7r9VTx.js.map → ImageviewerWidget-6d6Kl3W_.js.map} +1 -1
- package/dist/{ImageviewerWidget-Y6xx7zZX.cjs → ImageviewerWidget-CULuNsiD.cjs} +2 -2
- package/dist/{ImageviewerWidget-Y6xx7zZX.cjs.map → ImageviewerWidget-CULuNsiD.cjs.map} +1 -1
- package/dist/{InterfacesTab-DgLHHNke.cjs → InterfacesTab-0pmK3KNu.cjs} +2 -2
- package/dist/{InterfacesTab-DgLHHNke.cjs.map → InterfacesTab-0pmK3KNu.cjs.map} +1 -1
- package/dist/{InterfacesTab-dig9pzGg.js → InterfacesTab-BCqTanhV.js} +7 -7
- package/dist/{InterfacesTab-dig9pzGg.js.map → InterfacesTab-BCqTanhV.js.map} +1 -1
- package/dist/{LabelWidget-BVxcrEXf.js → LabelWidget-D71FfOSw.js} +2 -2
- package/dist/{LabelWidget-BVxcrEXf.js.map → LabelWidget-D71FfOSw.js.map} +1 -1
- package/dist/{LabelWidget-BqN6Noag.cjs → LabelWidget-DdZz2NWv.cjs} +2 -2
- package/dist/{LabelWidget-BqN6Noag.cjs.map → LabelWidget-DdZz2NWv.cjs.map} +1 -1
- package/dist/{LabelledWidget-eR2Dar84.cjs → LabelledWidget-BZ319slb.cjs} +2 -2
- package/dist/{LabelledWidget-eR2Dar84.cjs.map → LabelledWidget-BZ319slb.cjs.map} +1 -1
- package/dist/{LabelledWidget-ZZJPwPpI.js → LabelledWidget-D2ir5kVU.js} +4 -4
- package/dist/{LabelledWidget-ZZJPwPpI.js.map → LabelledWidget-D2ir5kVU.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-C2vkWITx.js → LabelprogressbarWidget-C4_YbROz.js} +4 -4
- package/dist/{LabelprogressbarWidget-C2vkWITx.js.map → LabelprogressbarWidget-C4_YbROz.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-D-Oxgeeg.cjs → LabelprogressbarWidget-LyevJNuz.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-D-Oxgeeg.cjs.map → LabelprogressbarWidget-LyevJNuz.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-B0q6o8ro.cjs → LabelsparklineWidget-Cbug97Ne.cjs} +2 -2
- package/dist/{LabelsparklineWidget-B0q6o8ro.cjs.map → LabelsparklineWidget-Cbug97Ne.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-CSlvTtVj.js → LabelsparklineWidget-CdZ_pM2B.js} +4 -4
- package/dist/{LabelsparklineWidget-CSlvTtVj.js.map → LabelsparklineWidget-CdZ_pM2B.js.map} +1 -1
- package/dist/{LabelvalueWidget-6MxCpBTc.js → LabelvalueWidget-BS0EPY5h.js} +4 -4
- package/dist/{LabelvalueWidget-6MxCpBTc.js.map → LabelvalueWidget-BS0EPY5h.js.map} +1 -1
- package/dist/{LabelvalueWidget-DbCpaJBW.cjs → LabelvalueWidget-DSHwAKma.cjs} +2 -2
- package/dist/{LabelvalueWidget-DbCpaJBW.cjs.map → LabelvalueWidget-DSHwAKma.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-BzcfT8oZ.cjs → LabelvaluedescWidget-3lwQxkKj.cjs} +2 -2
- package/dist/{LabelvaluedescWidget-BzcfT8oZ.cjs.map → LabelvaluedescWidget-3lwQxkKj.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-8mNs15uI.js → LabelvaluedescWidget-Cpr8_Voq.js} +5 -5
- package/dist/{LabelvaluedescWidget-8mNs15uI.js.map → LabelvaluedescWidget-Cpr8_Voq.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-jeDT8JjR.js → LabelvaluelimitsbarWidget-DTcYbEQS.js} +4 -4
- package/dist/{LabelvaluelimitsbarWidget-jeDT8JjR.js.map → LabelvaluelimitsbarWidget-DTcYbEQS.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-Cc7NNKOt.cjs → LabelvaluelimitsbarWidget-DbO_Q5ex.cjs} +2 -2
- package/dist/{LabelvaluelimitsbarWidget-Cc7NNKOt.cjs.map → LabelvaluelimitsbarWidget-DbO_Q5ex.cjs.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-CNqHPGpL.cjs → LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs} +2 -2
- package/dist/{LabelvaluelimitscolumnWidget-CNqHPGpL.cjs.map → LabelvaluelimitscolumnWidget-BMSwK1Ys.cjs.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-DfO5Yb79.js → LabelvaluelimitscolumnWidget-D0ltQ9Ta.js} +5 -5
- package/dist/{LabelvaluelimitscolumnWidget-DfO5Yb79.js.map → LabelvaluelimitscolumnWidget-D0ltQ9Ta.js.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-CnDgjH-G.cjs → LabelvaluerangebarWidget-B6_alHq4.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-CnDgjH-G.cjs.map → LabelvaluerangebarWidget-B6_alHq4.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-D23BEk-N.js → LabelvaluerangebarWidget-O8IHjvHs.js} +4 -4
- package/dist/{LabelvaluerangebarWidget-D23BEk-N.js.map → LabelvaluerangebarWidget-O8IHjvHs.js.map} +1 -1
- package/dist/Layout-DDewLzbI.cjs +2 -0
- package/dist/{Layout-Dd5e3p-K.cjs.map → Layout-DDewLzbI.cjs.map} +1 -1
- package/dist/{Layout-DuiUWxWc.js → Layout-DW5yNlp7.js} +2 -2
- package/dist/{Layout-DuiUWxWc.js.map → Layout-DW5yNlp7.js.map} +1 -1
- package/dist/{LedWidget-CQkF1v5x.cjs → LedWidget-Cif7vC7q.cjs} +2 -2
- package/dist/{LedWidget-CQkF1v5x.cjs.map → LedWidget-Cif7vC7q.cjs.map} +1 -1
- package/dist/{LedWidget-9IAav1IH.js → LedWidget-DUvJ2v8k.js} +4 -4
- package/dist/{LedWidget-9IAav1IH.js.map → LedWidget-DUvJ2v8k.js.map} +1 -1
- package/dist/{LimitsbarWidget-DqaTaWO1.js → LimitsbarWidget-BehZv0-k.js} +2 -2
- package/dist/{LimitsbarWidget-DqaTaWO1.js.map → LimitsbarWidget-BehZv0-k.js.map} +1 -1
- package/dist/{LimitsbarWidget-C4jNTGa9.cjs → LimitsbarWidget-BodNPbuH.cjs} +2 -2
- package/dist/{LimitsbarWidget-C4jNTGa9.cjs.map → LimitsbarWidget-BodNPbuH.cjs.map} +1 -1
- package/dist/{LimitscolorWidget-BjlXWw_j.cjs → LimitscolorWidget-DPhymKgB.cjs} +2 -2
- package/dist/{LimitscolorWidget-BjlXWw_j.cjs.map → LimitscolorWidget-DPhymKgB.cjs.map} +1 -1
- package/dist/{LimitscolorWidget-4g3UVzsW.js → LimitscolorWidget-FXT0ZPPH.js} +2 -2
- package/dist/{LimitscolorWidget-4g3UVzsW.js.map → LimitscolorWidget-FXT0ZPPH.js.map} +1 -1
- package/dist/{LimitscolumnWidget-BLZE1Zfh.cjs → LimitscolumnWidget-C5yozwf0.cjs} +2 -2
- package/dist/{LimitscolumnWidget-BLZE1Zfh.cjs.map → LimitscolumnWidget-C5yozwf0.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-pR-tLgFG.js → LimitscolumnWidget-CjBy-CCI.js} +2 -2
- package/dist/{LimitscolumnWidget-pR-tLgFG.js.map → LimitscolumnWidget-CjBy-CCI.js.map} +1 -1
- package/dist/{LinegraphWidget-adpA8cjD.cjs → LinegraphWidget-dO_B0T3E.cjs} +2 -2
- package/dist/{LinegraphWidget-adpA8cjD.cjs.map → LinegraphWidget-dO_B0T3E.cjs.map} +1 -1
- package/dist/{LinegraphWidget-DMcegwyu.js → LinegraphWidget-lmu_tFKd.js} +4 -4
- package/dist/{LinegraphWidget-DMcegwyu.js.map → LinegraphWidget-lmu_tFKd.js.map} +1 -1
- package/dist/{MatrixbycolumnsWidget-2lqTNOqb.cjs → MatrixbycolumnsWidget-BLkwvpMk.cjs} +2 -2
- package/dist/{MatrixbycolumnsWidget-2lqTNOqb.cjs.map → MatrixbycolumnsWidget-BLkwvpMk.cjs.map} +1 -1
- package/dist/{MatrixbycolumnsWidget--31rW1Mx.js → MatrixbycolumnsWidget-CCF7rCkV.js} +3 -3
- package/dist/{MatrixbycolumnsWidget--31rW1Mx.js.map → MatrixbycolumnsWidget-CCF7rCkV.js.map} +1 -1
- package/dist/{MicroservicesTab-DhisErku.js → MicroservicesTab-rxOATXLO.js} +3 -3
- package/dist/{MicroservicesTab-DhisErku.js.map → MicroservicesTab-rxOATXLO.js.map} +1 -1
- package/dist/{MicroservicesTab-BDkTm3LD.cjs → MicroservicesTab-uesXuuM4.cjs} +2 -2
- package/dist/{MicroservicesTab-BDkTm3LD.cjs.map → MicroservicesTab-uesXuuM4.cjs.map} +1 -1
- package/dist/{Openc3Screen-B_8bygux.cjs → Openc3Screen-CzD9BB0M.cjs} +5 -5
- package/dist/Openc3Screen-CzD9BB0M.cjs.map +1 -0
- package/dist/{Openc3Screen-zVSKWUkb.js → Openc3Screen-DcIIUO63.js} +120 -112
- package/dist/Openc3Screen-DcIIUO63.js.map +1 -0
- package/dist/{OutputDialog-D3zlQlpE.js → OutputDialog-CNH74LpJ.js} +2 -2
- package/dist/{OutputDialog-D3zlQlpE.js.map → OutputDialog-CNH74LpJ.js.map} +1 -1
- package/dist/{OutputDialog-DxEYVYA3.cjs → OutputDialog-QIabyvK1.cjs} +2 -2
- package/dist/{OutputDialog-DxEYVYA3.cjs.map → OutputDialog-QIabyvK1.cjs.map} +1 -1
- package/dist/{PackagesTab-Bjy3y4fK.js → PackagesTab-BE6W7Aru.js} +3 -3
- package/dist/{PackagesTab-Bjy3y4fK.js.map → PackagesTab-BE6W7Aru.js.map} +1 -1
- package/dist/{PackagesTab-CVytftqm.cjs → PackagesTab-PEPT4CQu.cjs} +2 -2
- package/dist/{PackagesTab-CVytftqm.cjs.map → PackagesTab-PEPT4CQu.cjs.map} +1 -1
- package/dist/{PluginsTab-Di5nXctJ.js → PluginsTab-B_Pf2A9c.js} +6 -5
- package/dist/PluginsTab-B_Pf2A9c.js.map +1 -0
- package/dist/{PluginsTab-BvwrAskE.cjs → PluginsTab-DXf9zX0h.cjs} +4 -4
- package/dist/PluginsTab-DXf9zX0h.cjs.map +1 -0
- package/dist/{ProgressbarWidget-DGAYHWEj.js → ProgressbarWidget-B5WN658S.js} +2 -2
- package/dist/{ProgressbarWidget-DGAYHWEj.js.map → ProgressbarWidget-B5WN658S.js.map} +1 -1
- package/dist/{ProgressbarWidget-COa_sGKn.cjs → ProgressbarWidget-D2NHSJny.cjs} +2 -2
- package/dist/{ProgressbarWidget-COa_sGKn.cjs.map → ProgressbarWidget-D2NHSJny.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-Cbx15iyl.js → RadiobuttonWidget-B_3nys46.js} +2 -2
- package/dist/{RadiobuttonWidget-Cbx15iyl.js.map → RadiobuttonWidget-B_3nys46.js.map} +1 -1
- package/dist/{RadiobuttonWidget-CQPXrm0x.cjs → RadiobuttonWidget-DkG9GtAy.cjs} +2 -2
- package/dist/{RadiobuttonWidget-CQPXrm0x.cjs.map → RadiobuttonWidget-DkG9GtAy.cjs.map} +1 -1
- package/dist/{RadiogroupWidget-DW3nTccf.js → RadiogroupWidget-BiMIL9li.js} +2 -2
- package/dist/{RadiogroupWidget-DW3nTccf.js.map → RadiogroupWidget-BiMIL9li.js.map} +1 -1
- package/dist/{RadiogroupWidget-C15ugChT.cjs → RadiogroupWidget-BnUjXU28.cjs} +2 -2
- package/dist/{RadiogroupWidget-C15ugChT.cjs.map → RadiogroupWidget-BnUjXU28.cjs.map} +1 -1
- package/dist/{RangebarWidget-5ekc5Lyp.cjs → RangebarWidget-CJgtAk5z.cjs} +2 -2
- package/dist/{RangebarWidget-5ekc5Lyp.cjs.map → RangebarWidget-CJgtAk5z.cjs.map} +1 -1
- package/dist/{RangebarWidget-BZba6dPt.js → RangebarWidget-Dn0GASdi.js} +2 -2
- package/dist/{RangebarWidget-BZba6dPt.js.map → RangebarWidget-Dn0GASdi.js.map} +1 -1
- package/dist/{RedisTab-Dnqd_dRk.js → RedisTab-BsKrL4fD.js} +13 -13
- package/dist/{RedisTab-Dnqd_dRk.js.map → RedisTab-BsKrL4fD.js.map} +1 -1
- package/dist/{RedisTab-C89xySPI.cjs → RedisTab-C1yaDRSt.cjs} +2 -2
- package/dist/{RedisTab-C89xySPI.cjs.map → RedisTab-C1yaDRSt.cjs.map} +1 -1
- package/dist/{RollupWidget-ILwSCjGa.cjs → RollupWidget-B2pGGoET.cjs} +2 -2
- package/dist/{RollupWidget-ILwSCjGa.cjs.map → RollupWidget-B2pGGoET.cjs.map} +1 -1
- package/dist/{RollupWidget-Mley0KZv.js → RollupWidget-b62qcG5K.js} +2 -2
- package/dist/{RollupWidget-Mley0KZv.js.map → RollupWidget-b62qcG5K.js.map} +1 -1
- package/dist/{RoutersTab-CokDnWfK.cjs → RoutersTab-8wGbiPCk.cjs} +2 -2
- package/dist/{RoutersTab-CokDnWfK.cjs.map → RoutersTab-8wGbiPCk.cjs.map} +1 -1
- package/dist/{RoutersTab-Dg3i3h0M.js → RoutersTab-EHz4wDCn.js} +3 -3
- package/dist/{RoutersTab-Dg3i3h0M.js.map → RoutersTab-EHz4wDCn.js.map} +1 -1
- package/dist/ScriptChooser-CtV7dDJS.cjs +2 -0
- package/dist/ScriptChooser-CtV7dDJS.cjs.map +1 -0
- package/dist/{ScriptChooser-DL8ct71n.js → ScriptChooser-DMPY3m8a.js} +33 -33
- package/dist/ScriptChooser-DMPY3m8a.js.map +1 -0
- package/dist/{ScrollwindowWidget-B4dv7icF.cjs → ScrollwindowWidget-ByJRy528.cjs} +2 -2
- package/dist/{ScrollwindowWidget-B4dv7icF.cjs.map → ScrollwindowWidget-ByJRy528.cjs.map} +1 -1
- package/dist/{ScrollwindowWidget-DvsnpEcJ.js → ScrollwindowWidget-Dn29gs-U.js} +3 -3
- package/dist/{ScrollwindowWidget-DvsnpEcJ.js.map → ScrollwindowWidget-Dn29gs-U.js.map} +1 -1
- package/dist/{SecretsTab-CIrHz_ni.js → SecretsTab-Cbt_r-1I.js} +2 -2
- package/dist/{SecretsTab-CIrHz_ni.js.map → SecretsTab-Cbt_r-1I.js.map} +1 -1
- package/dist/{SecretsTab-Dudp9OiZ.cjs → SecretsTab-DSMFodJM.cjs} +2 -2
- package/dist/{SecretsTab-Dudp9OiZ.cjs.map → SecretsTab-DSMFodJM.cjs.map} +1 -1
- package/dist/{SettingsTab-MipB-sIq.cjs → SettingsTab-8Zeg3G0C.cjs} +2 -2
- package/dist/{SettingsTab-MipB-sIq.cjs.map → SettingsTab-8Zeg3G0C.cjs.map} +1 -1
- package/dist/{SettingsTab-DztpIQm7.js → SettingsTab-L5xbCAW_.js} +4 -4
- package/dist/{SettingsTab-DztpIQm7.js.map → SettingsTab-L5xbCAW_.js.map} +1 -1
- package/dist/{SignalWidget-CQqD33Lg.cjs → SignalWidget-CEmQymzQ.cjs} +2 -2
- package/dist/{SignalWidget-CQqD33Lg.cjs.map → SignalWidget-CEmQymzQ.cjs.map} +1 -1
- package/dist/{SignalWidget-BE-MGigb.js → SignalWidget-CLi6qask.js} +2 -2
- package/dist/{SignalWidget-BE-MGigb.js.map → SignalWidget-CLi6qask.js.map} +1 -1
- package/dist/{SimpleTextDialog-BkUovtW9.js → SimpleTextDialog-8vDPDt6X.js} +2 -2
- package/dist/{SimpleTextDialog-BkUovtW9.js.map → SimpleTextDialog-8vDPDt6X.js.map} +1 -1
- package/dist/{SimpleTextDialog-NSW_V3iT.cjs → SimpleTextDialog-CJ8pLBGz.cjs} +2 -2
- package/dist/{SimpleTextDialog-NSW_V3iT.cjs.map → SimpleTextDialog-CJ8pLBGz.cjs.map} +1 -1
- package/dist/{SpacerWidget-DXayYLSi.js → SpacerWidget-BCA3gdap.js} +2 -2
- package/dist/{SpacerWidget-DXayYLSi.js.map → SpacerWidget-BCA3gdap.js.map} +1 -1
- package/dist/{SpacerWidget-QlVjOsLl.cjs → SpacerWidget-BJpqoaeP.cjs} +2 -2
- package/dist/{SpacerWidget-QlVjOsLl.cjs.map → SpacerWidget-BJpqoaeP.cjs.map} +1 -1
- package/dist/{SparklineWidget-mi0idVbP.cjs → SparklineWidget-CIkMm4O-.cjs} +2 -2
- package/dist/{SparklineWidget-mi0idVbP.cjs.map → SparklineWidget-CIkMm4O-.cjs.map} +1 -1
- package/dist/{SparklineWidget-BNYHhnFk.js → SparklineWidget-D8mb4zLt.js} +4 -4
- package/dist/{SparklineWidget-BNYHhnFk.js.map → SparklineWidget-D8mb4zLt.js.map} +1 -1
- package/dist/{TabbookWidget-BbnCFFoI.js → TabbookWidget-Bkt4g02d.js} +2 -2
- package/dist/{TabbookWidget-BbnCFFoI.js.map → TabbookWidget-Bkt4g02d.js.map} +1 -1
- package/dist/{TabbookWidget-BMaDTham.cjs → TabbookWidget-DqcScWwW.cjs} +2 -2
- package/dist/{TabbookWidget-BMaDTham.cjs.map → TabbookWidget-DqcScWwW.cjs.map} +1 -1
- package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs +2 -0
- package/dist/TargetPacketItemChooser-Cm6mQvhI.cjs.map +1 -0
- package/dist/{TargetPacketItemChooser-Z0Tn5eXv.js → TargetPacketItemChooser-DGcXvdTX.js} +107 -112
- package/dist/TargetPacketItemChooser-DGcXvdTX.js.map +1 -0
- package/dist/{TargetsTab-D32K2JiE.cjs → TargetsTab-C4tQ1auc.cjs} +2 -2
- package/dist/{TargetsTab-D32K2JiE.cjs.map → TargetsTab-C4tQ1auc.cjs.map} +1 -1
- package/dist/{TargetsTab-CDd9F7X3.js → TargetsTab-c-qMsGHh.js} +12 -12
- package/dist/{TargetsTab-CDd9F7X3.js.map → TargetsTab-c-qMsGHh.js.map} +1 -1
- package/dist/{TextboxWidget-D1pZXnLn.cjs → TextboxWidget-BcRfHcF6.cjs} +2 -2
- package/dist/{TextboxWidget-D1pZXnLn.cjs.map → TextboxWidget-BcRfHcF6.cjs.map} +1 -1
- package/dist/{TextboxWidget-BmANrs4B.js → TextboxWidget-CR05wO-t.js} +4 -4
- package/dist/{TextboxWidget-BmANrs4B.js.map → TextboxWidget-CR05wO-t.js.map} +1 -1
- package/dist/{TextfieldWidget-SJaLN05z.js → TextfieldWidget-Be_Pz2bF.js} +2 -2
- package/dist/{TextfieldWidget-SJaLN05z.js.map → TextfieldWidget-Be_Pz2bF.js.map} +1 -1
- package/dist/{TextfieldWidget-CTIX-cUX.cjs → TextfieldWidget-Ct1hZr2M.cjs} +2 -2
- package/dist/{TextfieldWidget-CTIX-cUX.cjs.map → TextfieldWidget-Ct1hZr2M.cjs.map} +1 -1
- package/dist/{TimeWidget-Dytou9_B.cjs → TimeWidget-3M7CQ893.cjs} +2 -2
- package/dist/{TimeWidget-Dytou9_B.cjs.map → TimeWidget-3M7CQ893.cjs.map} +1 -1
- package/dist/{TimeWidget-jB9OkZz4.js → TimeWidget-Dy8zpkC6.js} +2 -2
- package/dist/{TimeWidget-jB9OkZz4.js.map → TimeWidget-Dy8zpkC6.js.map} +1 -1
- package/dist/{TitleWidget-mcKJD8dB.js → TitleWidget-BcmxUDzM.js} +2 -2
- package/dist/{TitleWidget-mcKJD8dB.js.map → TitleWidget-BcmxUDzM.js.map} +1 -1
- package/dist/{TitleWidget-CjgUoNOz.cjs → TitleWidget-C1qzja9l.cjs} +2 -2
- package/dist/{TitleWidget-CjgUoNOz.cjs.map → TitleWidget-C1qzja9l.cjs.map} +1 -1
- package/dist/{ToolsTab-BbUbC7aQ.js → ToolsTab-Buklih4C.js} +3 -3
- package/dist/{ToolsTab-BbUbC7aQ.js.map → ToolsTab-Buklih4C.js.map} +1 -1
- package/dist/{ToolsTab-DIjQdiL-.cjs → ToolsTab-CbY2K86w.cjs} +3 -3
- package/dist/{ToolsTab-DIjQdiL-.cjs.map → ToolsTab-CbY2K86w.cjs.map} +1 -1
- package/dist/TopBar-D4C9DJcu.js +324 -0
- package/dist/TopBar-D4C9DJcu.js.map +1 -0
- package/dist/TopBar-HxaiWynT.cjs +2 -0
- package/dist/TopBar-HxaiWynT.cjs.map +1 -0
- package/dist/{UpgradeToEnterpriseDialog-XVvb43ME.js → UpgradeToEnterpriseDialog-D0AGxldj.js} +2 -2
- package/dist/{UpgradeToEnterpriseDialog-XVvb43ME.js.map → UpgradeToEnterpriseDialog-D0AGxldj.js.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-BDYrclMq.cjs → UpgradeToEnterpriseDialog-D8BkzmVD.cjs} +2 -2
- package/dist/{UpgradeToEnterpriseDialog-BDYrclMq.cjs.map → UpgradeToEnterpriseDialog-D8BkzmVD.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js} +2259 -2241
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B8ikVCn7.js.map +1 -0
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs} +70 -70
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CP8T5W6m.cjs.map +1 -0
- package/dist/{VWidget-D8c5Lci7.js → VWidget-CBmUpKSV.js} +7 -7
- package/dist/VWidget-CBmUpKSV.js.map +1 -0
- package/dist/VWidget-DhGLFGS2.cjs +2 -0
- package/dist/VWidget-DhGLFGS2.cjs.map +1 -0
- package/dist/{ValueWidget-SNDW9Het.js → ValueWidget-BxWrHkYY.js} +4 -4
- package/dist/{ValueWidget-SNDW9Het.js.map → ValueWidget-BxWrHkYY.js.map} +1 -1
- package/dist/{ValueWidget-CyN11MWT.cjs → ValueWidget-yuZ8tPzG.cjs} +2 -2
- package/dist/{ValueWidget-CyN11MWT.cjs.map → ValueWidget-yuZ8tPzG.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-Zw91SPeP.js → ValuelimitsbarWidget-BdY02gqc.js} +4 -4
- package/dist/{ValuelimitsbarWidget-Zw91SPeP.js.map → ValuelimitsbarWidget-BdY02gqc.js.map} +1 -1
- package/dist/{ValuelimitsbarWidget-B86GYsdL.cjs → ValuelimitsbarWidget-KsFz7ipK.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-B86GYsdL.cjs.map → ValuelimitsbarWidget-KsFz7ipK.cjs.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-DPh3TEH4.cjs → ValuelimitscolumnWidget-B0HGnyS5.cjs} +2 -2
- package/dist/{ValuelimitscolumnWidget-DPh3TEH4.cjs.map → ValuelimitscolumnWidget-B0HGnyS5.cjs.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-B9unbzmn.js → ValuelimitscolumnWidget-CuJ6rqtC.js} +4 -4
- package/dist/{ValuelimitscolumnWidget-B9unbzmn.js.map → ValuelimitscolumnWidget-CuJ6rqtC.js.map} +1 -1
- package/dist/{ValuerangebarWidget-DwNzPUzz.js → ValuerangebarWidget-C5rolGDi.js} +4 -4
- package/dist/{ValuerangebarWidget-DwNzPUzz.js.map → ValuerangebarWidget-C5rolGDi.js.map} +1 -1
- package/dist/{ValuerangebarWidget-Dm0754rv.cjs → ValuerangebarWidget-CDJeamPr.cjs} +2 -2
- package/dist/{ValuerangebarWidget-Dm0754rv.cjs.map → ValuerangebarWidget-CDJeamPr.cjs.map} +1 -1
- package/dist/{VerticalWidget-gv7hWDKU.js → VerticalWidget-DsnEzKZ2.js} +2 -2
- package/dist/{VerticalWidget-gv7hWDKU.js.map → VerticalWidget-DsnEzKZ2.js.map} +1 -1
- package/dist/{VerticalWidget-BAH0R-Tj.cjs → VerticalWidget-wuRCrd7Q.cjs} +2 -2
- package/dist/{VerticalWidget-BAH0R-Tj.cjs.map → VerticalWidget-wuRCrd7Q.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-CZb5ebV7.js → VerticalboxWidget-CzDgveBl.js} +5 -5
- package/dist/{VerticalboxWidget-CZb5ebV7.js.map → VerticalboxWidget-CzDgveBl.js.map} +1 -1
- package/dist/{VerticalboxWidget-F9StIQ_8.cjs → VerticalboxWidget-D-3H1PYU.cjs} +2 -2
- package/dist/{VerticalboxWidget-F9StIQ_8.cjs.map → VerticalboxWidget-D-3H1PYU.cjs.map} +1 -1
- package/dist/{Widget-DghDRiv6.cjs → Widget-CKianvfR.cjs} +2 -2
- package/dist/{Widget-DghDRiv6.cjs.map → Widget-CKianvfR.cjs.map} +1 -1
- package/dist/{Widget-DNBZcUQg.js → Widget-VCl8Ts8s.js} +2 -2
- package/dist/{Widget-DNBZcUQg.js.map → Widget-VCl8Ts8s.js.map} +1 -1
- package/dist/{cmdUtilities-C5lf-N2L.js → cmdUtilities--4ZqS2At.js} +2 -2
- package/dist/{cmdUtilities-C5lf-N2L.js.map → cmdUtilities--4ZqS2At.js.map} +1 -1
- package/dist/cmdUtilities-N30xDV6q.cjs +2 -0
- package/dist/{cmdUtilities-DDCksp2R.cjs.map → cmdUtilities-N30xDV6q.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +25 -25
- package/dist/composables.cjs +2 -0
- package/dist/composables.cjs.map +1 -0
- package/dist/composables.js +5 -0
- package/dist/composables.js.map +1 -0
- package/dist/{index-BUPRVmV-.js → index-3k1IXN1T.js} +136 -118
- package/dist/index-3k1IXN1T.js.map +1 -0
- package/dist/{index-BWTUBIkL.cjs → index-DlWUR7vt.cjs} +6 -6
- package/dist/index-DlWUR7vt.cjs.map +1 -0
- package/dist/plugins.cjs +2 -2
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +7 -7
- package/dist/plugins.js.map +1 -1
- package/dist/purify.es-B608WQkR.cjs +3 -0
- package/dist/purify.es-B608WQkR.cjs.map +1 -0
- package/dist/{purify.es-BuxjWxA2.js → purify.es-BGaRrCfO.js} +144 -144
- package/dist/purify.es-BGaRrCfO.js.map +1 -0
- package/dist/{settings-BC-CN37t.js → settings-DlX9yvJJ.js} +2 -2
- package/dist/{settings-BC-CN37t.js.map → settings-DlX9yvJJ.js.map} +1 -1
- package/dist/{settings-DHUu0bEd.cjs → settings-sg_XHXQ-.cjs} +2 -2
- package/dist/{settings-DHUu0bEd.cjs.map → settings-sg_XHXQ-.cjs.map} +1 -1
- package/dist/tools/admin.cjs +1 -1
- package/dist/tools/admin.js +56 -56
- package/dist/tools/base.cjs +1 -1
- package/dist/tools/base.js +5 -5
- package/dist/tools/calendar.cjs +1 -1
- package/dist/tools/calendar.js +1 -1
- package/dist/tools/scriptrunner.cjs +8 -8
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js +864 -849
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/useContainerHeight-BAw05dIa.js +11 -0
- package/dist/useContainerHeight-BAw05dIa.js.map +1 -0
- package/dist/useContainerHeight-BEd4f2Lr.cjs +2 -0
- package/dist/useContainerHeight-BEd4f2Lr.cjs.map +1 -0
- package/dist/util.cjs +1 -1
- package/dist/util.js +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +63 -63
- package/package.json +13 -9
- package/dist/CriticalCmdDialog-CZHVDFjK.js.map +0 -1
- package/dist/CriticalCmdDialog-EvK998xs.cjs.map +0 -1
- package/dist/DetailsDialog-DbRPJzDG.cjs +0 -2
- package/dist/DetailsDialog-DbRPJzDG.cjs.map +0 -1
- package/dist/DetailsDialog-Ji0jA6sd.js.map +0 -1
- package/dist/Layout-Dd5e3p-K.cjs +0 -2
- package/dist/Openc3Screen-B_8bygux.cjs.map +0 -1
- package/dist/Openc3Screen-zVSKWUkb.js.map +0 -1
- package/dist/PluginsTab-BvwrAskE.cjs.map +0 -1
- package/dist/PluginsTab-Di5nXctJ.js.map +0 -1
- package/dist/ScriptChooser-BzQcgW8g.cjs +0 -2
- package/dist/ScriptChooser-BzQcgW8g.cjs.map +0 -1
- package/dist/ScriptChooser-DL8ct71n.js.map +0 -1
- package/dist/TargetPacketItemChooser-DezS0jS3.cjs +0 -2
- package/dist/TargetPacketItemChooser-DezS0jS3.cjs.map +0 -1
- package/dist/TargetPacketItemChooser-Z0Tn5eXv.js.map +0 -1
- package/dist/TopBar-Bn4u3OQj.cjs +0 -2
- package/dist/TopBar-Bn4u3OQj.cjs.map +0 -1
- package/dist/TopBar-LuMoAqrA.js +0 -296
- package/dist/TopBar-LuMoAqrA.js.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-ByJi6BSv.js.map +0 -1
- package/dist/VWidget-B22Re761.cjs +0 -2
- package/dist/VWidget-B22Re761.cjs.map +0 -1
- package/dist/VWidget-D8c5Lci7.js.map +0 -1
- package/dist/cmdUtilities-DDCksp2R.cjs +0 -2
- package/dist/index-BUPRVmV-.js.map +0 -1
- package/dist/index-BWTUBIkL.cjs.map +0 -1
- package/dist/purify.es-BuxjWxA2.js.map +0 -1
- package/dist/purify.es-d7tb6jjJ.cjs +0 -3
- package/dist/purify.es-d7tb6jjJ.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PluginsTab-Di5nXctJ.js","sources":["../src/plugins/plugin-store/PluginProps.js","../src/plugins/plugin-store/PluginDetailsDialog.vue","../src/plugins/plugin-store/PluginCard.vue","../src/plugins/plugin-store/PluginStoreSettingsDialog.vue","../src/plugins/plugin-store/PluginStore.vue","../src/tools/admin/tabs/plugins/PluginListItem.vue","../src/tools/admin/tabs/plugins/PluginList.vue","../src/tools/admin/tabs/PluginsTab.vue"],"sourcesContent":["/*\n# Copyright 2025, OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\n\nconst settingName = 'store_url'\nexport default {\n props: {\n id: Number,\n name: String,\n title: String,\n // titleSlug: String,\n author: String,\n // authorSlug: String,\n description: String,\n keywords: Array,\n img_path: String, // Set for local plugins\n image_url: String, // Set for app store plugins\n licenses: Array,\n // rating: Number,\n // downloads: Number,\n verified: Boolean,\n homepage: String,\n repository: String,\n gem_url: String,\n checksum: String,\n },\n data: function () {\n return {\n _api: new OpenC3Api(),\n _storeUrl: '',\n imageContents: null,\n }\n },\n computed: {\n plugin: function () {\n return {\n id: this.id,\n name: this.name,\n title: this.title,\n // titleSlug: this.titleSlug,\n author: this.author,\n // authorSlug: this.authorSlug,\n description: this.description,\n keywords: this.keywords,\n img_path: this.img_path,\n image_url: this.image_url,\n licenses: this.licenses,\n // rating: this.rating,\n // downloads: this.downloads,\n verified: this.verified,\n homepage: this.homepage,\n repository: this.repository,\n gem_url: this.gem_url,\n checksum: this.checksum,\n }\n },\n imageContentsWithMimeType: function () {\n if (this.imageContents) {\n const magicNumbers = {\n 'image/bmp': [0x42, 0x4d],\n 'image/jpeg': [0xff, 0xd8, 0xff],\n 'image/png': [0x89, 0x50, 0x4e, 0x47],\n 'image/gif': [0x47, 0x49, 0x46, 0x38],\n 'image/webp': [0x52, 0x49, 0x46, 0x46],\n }\n const fileHead = new TextEncoder()\n .encode(globalThis.atob(this.imageContents.slice(0, 6))) // only atob as much as we need\n .slice(1) // second call to slice on the decoded data because base64 bytes aren't 1:1\n const found = Object.entries(magicNumbers).find(([_, magicNumber]) => {\n return magicNumber.every((byte, i) => byte === fileHead[i])\n })\n if (found) {\n const [mimeType] = found\n return `data:${mimeType};base64,${this.imageContents}`\n }\n }\n return undefined\n },\n storeLink: function () {\n if (this.hasStoreListing) {\n return new URL(`/cosmos_plugins/${this.id}`, this._storeUrl)\n }\n return null\n },\n hasStoreListing: function () {\n return !!this.id\n },\n hasDetails: function () {\n if (this.hasStoreListing) {\n return true\n }\n return !!this.title && !!this.description\n },\n isPluginInstalled: function () {\n return !!this.name // Plugins only have a title, not a name, from the store\n },\n },\n created: async function () {\n const defaultStoreUrl = 'https://store.openc3.com'\n try {\n this._storeUrl =\n (await this._api.get_setting(settingName)) || defaultStoreUrl\n } catch {\n this._storeUrl = defaultStoreUrl\n }\n if (this.img_path) {\n try {\n const params = new URLSearchParams({\n volume: 'OPENC3_GEMS_VOLUME',\n scope: globalThis.openc3Scope,\n })\n const { data } = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(this.img_path)}?${params}`,\n )\n this.imageContents = data.contents\n } catch {\n // Failed to get image, don't do anything\n }\n }\n },\n}\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <slot name=\"activator\" :props=\"{ onClick: openDialog }\"></slot>\n <v-dialog v-model=\"isDialogOpen\" max-width=\"500\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <v-tooltip location=\"top\">\n <template #activator=\"{ props }\">\n <div v-bind=\"props\">\n <v-btn\n :href=\"storeLink\"\n target=\"_blank\"\n icon=\"mdi-open-in-new\"\n size=\"small\"\n variant=\"plain\"\n />\n </div>\n </template>\n <span> View at store.openc3.com </span>\n </v-tooltip>\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n @click=\"closeDialog\"\n />\n </v-toolbar>\n <v-card-subtitle\n class=\"d-flex align-center justify-content-space-between\"\n >\n <div>{{ author }}</div>\n <v-spacer />\n <div v-if=\"verified\">\n Verified\n <v-badge inline icon=\"mdi-shield-check\" color=\"success\" />\n </div>\n </v-card-subtitle>\n <!--\n <v-card-subtitle\n class=\"d-flex align-center justify-content-space-between\"\n >\n <div>\n <v-icon icon=\"mdi-cloud-download\" size=\"x-small\" />\n {{ downloads }} downloads\n </div>\n <v-spacer />\n <div class=\"d-flex align-center\">\n <v-rating\n :model-value=\"rating\"\n density=\"compact\"\n size=\"small\"\n readonly\n half-increments\n />\n </div>\n </v-card-subtitle>\n -->\n <v-card-text>\n <v-img v-if=\"image_url\" :src=\"image_url\" />\n <v-img\n v-if=\"imageContentsWithMimeType\"\n :src=\"imageContentsWithMimeType\"\n />\n <div class=\"mt-3\" v-text=\"description\" />\n <div class=\"mt-3 text-caption\">\n Keywords:\n <template v-if=\"keywords\">\n <v-chip\n v-for=\"keyword in keywords\"\n :key=\"keyword\"\n variant=\"flat\"\n color=\"primary\"\n size=\"x-small\"\n class=\"ml-1\"\n >\n {{ keyword }}\n </v-chip>\n </template>\n <span v-else class=\"font-italic\"> none </span>\n </div>\n <div class=\"mt-3 text-caption font-italic\">\n Licenses:\n <v-chip\n v-for=\"license in licenses\"\n :key=\"license\"\n size=\"x-small\"\n class=\"ml-1\"\n >\n {{ license }}\n </v-chip>\n </div>\n <v-text-field\n v-model=\"checksum\"\n class=\"mt-3\"\n label=\"SHA256\"\n variant=\"solo\"\n density=\"compact\"\n hide-details\n readonly\n >\n <template #append>\n <v-tooltip\n v-model=\"showCopiedTooltip\"\n location=\"top\"\n :open-on-hover=\"false\"\n >\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-content-copy\"\n variant=\"text\"\n density=\"compact\"\n @click=\"copyChecksum\"\n />\n </template>\n <span>Copied!</span>\n </v-tooltip>\n </template>\n </v-text-field>\n </v-card-text>\n\n <v-card-actions class=\"justify-start px-6\">\n <v-btn\n v-if=\"isPluginInstalled\"\n text=\"Uninstall\"\n append-icon=\"mdi-puzzle-remove\"\n variant=\"outlined\"\n color=\"red\"\n @click=\"uninstall\"\n />\n <v-btn\n v-else\n text=\"Install\"\n append-icon=\"mdi-puzzle-plus\"\n variant=\"elevated\"\n @click=\"install\"\n />\n <v-btn\n v-if=\"repository\"\n text=\"Repository\"\n append-icon=\"mdi-open-in-new\"\n variant=\"outlined\"\n :href=\"repository\"\n target=\"_blank\"\n />\n <v-btn\n v-if=\"homepage\"\n text=\"Homepage\"\n append-icon=\"mdi-open-in-new\"\n variant=\"outlined\"\n :href=\"homepage\"\n target=\"_blank\"\n />\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport PluginProps from './PluginProps'\n\nexport default {\n mixins: [PluginProps],\n props: {\n modelValue: Boolean,\n },\n emits: ['triggerInstall', 'triggerUninstall', 'update:modelValue'],\n data() {\n return {\n showDialog: false,\n showCopiedTooltip: false,\n }\n },\n computed: {\n isDialogOpen: {\n get: function () {\n return this.modelValue || this.showDialog\n },\n set: function (val) {\n this.showDialog = val\n this.$emit('update:modelValue', val)\n },\n },\n },\n methods: {\n openDialog: function () {\n this.isDialogOpen = true\n },\n closeDialog: function () {\n this.isDialogOpen = false\n },\n install: function () {\n this.$emit('triggerInstall', this.gemUrl)\n },\n uninstall: function () {\n this.$emit('triggerUninstall', this.gemUrl)\n },\n copyChecksum: function () {\n navigator.clipboard.writeText(this.checksum)\n this.showCopiedTooltip = true\n setTimeout(() => {\n this.showCopiedTooltip = false\n }, 1000)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <plugin-details-dialog v-bind=\"plugin\" @trigger-install=\"install\">\n <template #activator=\"{ props }\">\n <v-card v-bind=\"props\" height=\"350\" class=\"d-flex flex-column\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n {{ title }}\n <v-spacer />\n <v-badge\n v-if=\"verified\"\n inline\n icon=\"mdi-shield-check\"\n color=\"success\"\n />\n </v-card-title>\n <v-card-subtitle\n class=\"d-flex align-center justify-content-space-between\"\n >\n <div>{{ author }}</div>\n <!--\n <v-spacer />\n <v-rating\n :model-value=\"rating\"\n density=\"compact\"\n size=\"small\"\n readonly\n half-increments\n />\n -->\n </v-card-subtitle>\n <v-card-text>\n <v-img v-if=\"image_url\" :src=\"image_url\" max-height=\"160\" />\n <div\n :class=\"{\n 'truncate-description': true,\n 'truncate-2': !!image_url,\n 'truncate-10': !image_url,\n }\"\n v-text=\"description\"\n />\n </v-card-text>\n <v-spacer />\n <v-card-actions class=\"flex-wrap\">\n <v-btn\n text=\"Install\"\n append-icon=\"mdi-puzzle-plus\"\n variant=\"elevated\"\n @click.stop=\"install\"\n />\n </v-card-actions>\n </v-card>\n </template>\n </plugin-details-dialog>\n</template>\n\n<script>\nimport PluginProps from './PluginProps'\nimport PluginDetailsDialog from './PluginDetailsDialog.vue'\n\nexport default {\n components: {\n PluginDetailsDialog,\n },\n mixins: [PluginProps],\n emits: ['triggerInstall'],\n methods: {\n install: function () {\n this.$emit('triggerInstall', this.plugin)\n },\n },\n}\n</script>\n\n<style scoped>\n.truncate-description {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n\n.truncate-2 {\n line-clamp: 2;\n -webkit-line-clamp: 2;\n}\n\n.truncate-10 {\n line-clamp: 10;\n -webkit-line-clamp: 10;\n}\n</style>\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"showDialog\" width=\"600\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Plugin Store Settings</span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-alert v-model=\"errorLoading\" type=\"error\" closable density=\"compact\">\n Error loading previous configuration due to {{ errorText }}\n </v-alert>\n <v-alert v-model=\"errorSaving\" type=\"error\" closable density=\"compact\">\n Error saving due to {{ errorText }}\n </v-alert>\n <v-alert\n v-model=\"successSaving\"\n type=\"success\"\n closable\n density=\"compact\"\n >\n Saved!\n </v-alert>\n <v-card-text>\n <v-text-field\n v-model=\"storeUrl\"\n label=\"Store URL\"\n :rules=\"[rules.required, rules.url]\"\n />\n </v-card-text>\n <v-card-actions>\n <v-btn\n color=\"success\"\n variant=\"text\"\n text=\"Save\"\n data-test=\"save-store-settings-btn\"\n @click=\"save\"\n />\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport Settings from '@/tools/admin/tabs/settings/settings.js'\n\nconst SETTING_NAME = 'store_url'\nconst SETTING_SCOPE = 'DEFAULT'\nexport default {\n mixins: [Settings],\n props: {\n modelValue: Boolean,\n },\n emits: ['update:modelValue', 'update:storeUrl'],\n data() {\n return {\n showDialog: false,\n storeUrl: '',\n rules: {\n required: (value) => !!value || 'Required',\n url: (value) => {\n try {\n new URL(value)\n } catch (_) {\n return 'Not a valid URL'\n }\n return true\n },\n },\n }\n },\n watch: {\n modelValue: function (val) {\n if (val) {\n this.showDialog = val\n }\n },\n showDialog: function (val) {\n if (!val) {\n this.$emit('update:modelValue', val)\n }\n },\n },\n created: function () {\n this.loadSetting(SETTING_NAME, { scope: SETTING_SCOPE })\n },\n methods: {\n save() {\n this.saveSetting(SETTING_NAME, this.storeUrl, { scope: SETTING_SCOPE })\n this.$emit('update:storeUrl', this.storeUrl)\n this.showDialog = false\n },\n parseSetting: function (response) {\n if (response) {\n this.storeUrl = response\n } else {\n // Default URL if setting is not found\n this.storeUrl = 'https://store.openc3.com'\n }\n },\n },\n}\n</script>\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-sheet class=\"pb-11 pt-8 px-8\" height=\"100%\">\n <div class=\"d-flex justify-content-space-between\">\n <div>\n <div class=\"text-h3 mb-3\">OpenC3 Plugin Store</div>\n <div class=\"text-subtitle-1\">\n Browse plugins made by OpenC3 and the COSMOS community\n </div>\n </div>\n <v-spacer />\n <v-btn icon=\"mdi-cog\" variant=\"text\" @click=\"openSettings\" />\n\n <v-tooltip location=\"top\">\n <template #activator=\"{ props }\">\n <div v-bind=\"props\">\n <v-btn\n href=\"https://store.openc3.com\"\n target=\"_blank\"\n icon=\"mdi-open-in-new\"\n variant=\"text\"\n class=\"mx-2\"\n />\n </div>\n </template>\n <span> Open store.openc3.com </span>\n </v-tooltip>\n\n <v-btn icon=\"mdi-close\" variant=\"text\" @click=\"close\" />\n </div>\n <div class=\"d-inline-flex align-center w-100\">\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n data-test=\"search-plugin-store\"\n />\n <v-switch\n v-model=\"verifiedOnly\"\n label=\"Verified only\"\n density=\"compact\"\n hide-details\n class=\"ml-4\"\n />\n </div>\n <v-spacer />\n <span class=\"\"> Click on a plugin to see more information about it </span>\n <v-container>\n <v-row>\n <v-col v-for=\"plugin in filteredPlugins\" :key=\"plugin.id\" cols=\"4\">\n <plugin-card v-bind=\"plugin\" @trigger-install=\"install\" />\n </v-col>\n </v-row>\n </v-container>\n </v-sheet>\n <plugin-store-settings-dialog\n v-model=\"showSettingsDialog\"\n @update:store-url=\"updatePluginStore\"\n />\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { PluginCard } from '@/plugins/plugin-store'\nimport PluginStoreSettingsDialog from './PluginStoreSettingsDialog.vue' // idk why importing from @/plugins/plugin-store isn't working\n\nexport default {\n components: {\n PluginCard,\n PluginStoreSettingsDialog,\n },\n emits: ['close', 'triggerInstall'],\n data() {\n return {\n api: new OpenC3Api(),\n search: '',\n verifiedOnly: false,\n showSettingsDialog: false,\n plugins: [],\n }\n },\n computed: {\n filteredPlugins: function () {\n let filtered = this.plugins\n if (this.verifiedOnly) {\n filtered = filtered.filter((plugin) => plugin.verified)\n }\n if (this.search.length) {\n filtered = filtered.filter((plugin) =>\n plugin.title.toLowerCase().includes(this.search.toLowerCase()),\n )\n }\n return filtered\n },\n },\n mounted: function () {\n // Don't call updatePluginStore() here. It should be called in the background before the user opens this store\n // view (see PluginsTab.vue `created()`) to keep this feeling fast\n this.fetchPluginStoreData()\n // TODO: do something with plugins that are already installed (no uninstall button: https://github.com/OpenC3/cosmos/pull/2162#discussion_r2249339853 )\n },\n methods: {\n fetchPluginStoreData: function () {\n Api.get('/openc3-api/pluginstore').then((response) => {\n this.plugins = response.data\n })\n },\n close: function () {\n this.$emit('close')\n },\n install: function (plugin) {\n this.$emit('triggerInstall', plugin)\n this.close()\n },\n openSettings: function () {\n this.showSettingsDialog = true\n },\n updatePluginStore: function () {\n this.api.update_plugin_store().then((response) => {\n this.fetchPluginStoreData()\n })\n },\n },\n}\n</script>\n\n<style>\n.v-sheet {\n background-color: var(--color-background-base-default);\n}\n</style>\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <tr :class=\"{ 'cursor-pointer': hasDetails }\" data-test=\"plugin-list-item\">\n <td>\n <v-img\n v-if=\"imageContentsWithMimeType\"\n :src=\"imageContentsWithMimeType\"\n max-height=\"56\"\n min-width=\"56\"\n />\n </td>\n <td>\n <div class=\"text-h6\" v-text=\"displayTitle\" @click=\"openDetails\" />\n <div class=\"text-subtitle-2 v-list-item-subtitle pl-0\">\n <!-- subtitle -->\n <template v-if=\"isModified\"> * </template>\n {{ name }}\n </div>\n <div v-if=\"targets?.length\">\n <!-- sub-subtitle -->\n <span v-for=\"(target, index) in targets\" :key=\"index\" class=\"mr-2\">\n <a\n v-if=\"target.modified\"\n style=\"cursor: pointer\"\n @click.prevent=\"downloadTarget(target.name)\"\n v-text=\"target.name\"\n />\n <span v-else v-text=\"target.name\" />\n </span>\n </div>\n </td>\n\n <td>\n <v-menu>\n <template #activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n icon=\"mdi-dots-horizontal\"\n data-test=\"plugin-actions\"\n />\n </template>\n <v-list>\n <v-list-item\n title=\"Download\"\n prepend-icon=\"mdi-download\"\n data-test=\"download-plugin\"\n @click=\"downloadPlugin\"\n />\n <v-list-item\n title=\"Edit Details\"\n prepend-icon=\"mdi-pencil\"\n data-test=\"edit-plugin\"\n @click=\"edit\"\n />\n <v-list-item\n title=\"Upgrade\"\n prepend-icon=\"mdi-update\"\n data-test=\"upgrade-plugin\"\n @click=\"upgrade\"\n />\n <v-list-item\n title=\"Delete\"\n prepend-icon=\"mdi-delete\"\n data-test=\"delete-plugin\"\n @click=\"deletePrompt\"\n />\n </v-list>\n </v-menu>\n </td>\n </tr>\n <plugin-details-dialog\n v-model=\"showCard\"\n v-bind=\"plugin\"\n @trigger-uninstall=\"deletePrompt\"\n />\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { PluginDetailsDialog, PluginProps } from '@/plugins/plugin-store'\n\nexport default {\n components: {\n PluginDetailsDialog,\n },\n mixins: [PluginProps],\n props: {\n targets: {\n type: Array,\n default: () => {\n return []\n },\n },\n isModified: Boolean,\n },\n emits: ['edit', 'delete', 'upgrade'],\n data() {\n return {\n showCard: false,\n }\n },\n computed: {\n displayTitle: function () {\n if (this.title) {\n return this.title\n }\n return this.name\n .replace(/^openc3-cosmos-/, '')\n .replace(/-?\\d+\\.\\d+\\.\\d+(?:\\.pre\\.beta\\d+\\.\\d+)?\\.gem(?:__\\d+)?$/, '') // '-6.6.1.pre.beta0.20250801182255.gem__20250801182444' or '6.6.1.gem'\n },\n },\n methods: {\n openDetails: function () {\n if (this.hasDetails) {\n this.showCard = true\n }\n },\n downloadPlugin: function () {\n Api.post(`/openc3-api/packages/${this.name}/download`).then(\n (response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n },\n )\n },\n downloadTarget: function (name) {\n Api.post(`/openc3-api/targets/${name}/download`).then((response) => {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array], { type: 'application/zip' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', response.data.filename)\n link.click()\n })\n },\n edit: function () {\n this.$emit('edit')\n },\n upgrade: function () {\n this.$emit('upgrade')\n },\n deletePrompt: function () {\n this.showCard = false\n this.$emit('delete')\n },\n },\n}\n</script>\n","<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-data-table\n :headers=\"[]\"\n :items=\"shownPlugins\"\n density=\"compact\"\n class=\"list\"\n data-test=\"plugin-list\"\n >\n <template #item=\"{ item: plugin }\">\n <plugin-list-item\n v-bind=\"plugin\"\n :targets=\"pluginTargets(plugin.name)\"\n :is-modified=\"isModified(plugin.name)\"\n @edit=\"() => editPlugin(plugin.name)\"\n @upgrade=\"() => upgradePlugin(plugin.name)\"\n @delete=\"() => deletePrompt(plugin.name)\"\n />\n </template>\n </v-data-table>\n</template>\n\n<script>\nimport PluginListItem from './PluginListItem.vue'\n\nexport default {\n components: {\n PluginListItem,\n },\n props: {\n plugins: {\n type: Array,\n required: true,\n },\n targets: {\n type: Object,\n required: true,\n },\n showDefaultTools: {\n type: Boolean,\n default: false,\n },\n defaultPlugins: {\n type: Array,\n required: true,\n },\n },\n emits: ['edit', 'delete', 'upgrade'],\n data() {\n return {\n showPluginDetails: false,\n detailPlugin: null,\n }\n },\n computed: {\n shownPlugins() {\n const pluginsToShow = []\n const defaultPluginsToShow = []\n this.plugins.forEach((plugin) => {\n const pluginNameFirst = plugin.name.split('__')[0]\n const pluginNameSplit = pluginNameFirst.split('-').slice(0, -1)\n const pluginNameShort = pluginNameSplit.join('-')\n if (this.defaultPlugins.includes(pluginNameShort)) {\n defaultPluginsToShow.push(plugin)\n } else {\n pluginsToShow.push(plugin)\n }\n })\n pluginsToShow.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0,\n )\n if (this.showDefaultTools) {\n defaultPluginsToShow.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0,\n )\n return pluginsToShow.concat(defaultPluginsToShow)\n }\n return pluginsToShow\n },\n },\n methods: {\n showDetails: function (plugin) {\n this.detailPlugin = plugin\n this.showPluginDetails = true\n },\n pluginTargets: function (plugin) {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n },\n isModified: function (plugin) {\n return Object.entries(this.targets).some(([targetName, target]) => {\n return target['plugin'] === plugin && target['modified'] === true\n })\n },\n editPlugin: function (plugin) {\n this.$emit('edit', plugin)\n },\n upgradePlugin(plugin) {\n this.$emit('upgrade', plugin)\n },\n deletePrompt: function (plugin) {\n this.$emit('delete', plugin)\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn append-icon=\"mdi-store\" @click=\"openStore\">\n Browse Plugins\n </v-btn>\n <v-btn append-icon=\"mdi-paperclip\" class=\"mx-2\" @click=\"selectFile\">\n Install From File\n </v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n <br />\n <p class=\"mt-2\">\n Note: Use <v-icon> mdi-dots-horizontal </v-icon> in the Installed\n Plugins list to upgrade existing plugins\n </p>\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\" />\n </v-col>\n </v-row>\n <v-row no-gutters class=\"px-2\">\n <v-col align=\"right\" class=\"mr-2\">\n <div>* indicates a modified plugin</div>\n <div>Click target link to download modifications</div>\n </v-col>\n </v-row>\n <v-divider />\n <!-- TODO This alert shows both success and failure. Make consistent with rest of OpenC3. -->\n <v-alert\n v-model=\"showAlert\"\n closable\n :type=\"alertType\"\n :text=\"alert\"\n data-test=\"plugin-alert\"\n />\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h5\"> Process List </v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template #append>\n <v-progress-circular\n v-if=\"process.state === 'Running'\"\n indeterminate\n color=\"primary\"\n />\n <v-tooltip v-else :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n data-test=\"show-output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span> Show Output </span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h5\"> Installed Plugins </v-col>\n <v-col class=\"v-col-auto\">\n <v-switch\n v-model=\"showDefaultTools\"\n label=\"Show Default Tools\"\n density=\"compact\"\n hide-details\n data-test=\"show-default-tools\"\n />\n </v-col>\n </v-row>\n <plugin-list\n :plugins=\"plugins\"\n :targets=\"targets\"\n :show-default-tools=\"showDefaultTools\"\n :default-plugins=\"defaultPlugins\"\n @edit=\"editPlugin\"\n @upgrade=\"upgradePlugin\"\n @delete=\"deletePrompt\"\n />\n <plugin-dialog\n v-if=\"showPluginDialog\"\n v-model=\"showPluginDialog\"\n :plugin-name=\"pluginName\"\n :variables=\"variables\"\n :plugin-txt=\"pluginTxt\"\n :existing-plugin-txt=\"existingPluginTxt\"\n :store-id=\"storeId\"\n @callback=\"pluginCallback\"\n />\n <modified-plugin-dialog\n v-if=\"showModifiedPluginDialog\"\n v-model=\"showModifiedPluginDialog\"\n :plugin-name=\"currentPlugin\"\n :targets=\"pluginTargets(currentPlugin)\"\n :plugin-delete=\"pluginDelete\"\n @submit=\"modifiedSubmit\"\n />\n <!-- <download-dialog v-model=\"showDownloadDialog\" /> -->\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n <v-bottom-sheet v-model=\"showPluginStore\" fullscreen>\n <plugin-store\n @close=\"() => (showPluginStore = false)\"\n @trigger-install=\"(storeData) => upload(null, storeData)\"\n />\n </v-bottom-sheet>\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { ModifiedPluginDialog, PluginDialog } from '@/tools/admin'\nimport { PluginList } from '@/tools/admin/tabs/plugins'\nimport { PluginStore } from '@/plugins/plugin-store'\n\nexport default {\n components: {\n PluginDialog,\n PluginList,\n PluginStore,\n ModifiedPluginDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n // Control state\n pluginName: null,\n variables: {},\n storeId: null,\n pluginTxt: '',\n file: null,\n currentPlugin: null,\n pluginHashTmp: null,\n existingPluginTxt: null,\n progress: 0,\n pluginDelete: false,\n\n api: new OpenC3Api(),\n plugins: [],\n targets: {},\n processes: {},\n alert: '',\n alertType: 'success',\n showAlert: false,\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n showPluginStore: false,\n showPluginDialog: false,\n showModifiedPluginDialog: false,\n showDefaultTools: false,\n // When updating update local_mode.rb, local_mode.py, plugins.spec.ts\n defaultPlugins: [\n 'openc3-cosmos-tool-admin',\n 'openc3-cosmos-tool-bucketexplorer',\n 'openc3-cosmos-tool-cmdsender',\n 'openc3-cosmos-tool-cmdqueue', // Enterprise only\n 'openc3-cosmos-tool-cmdhistory', // Enterprise only\n 'openc3-cosmos-tool-cmdtlmserver',\n 'openc3-cosmos-tool-dataextractor',\n 'openc3-cosmos-tool-dataviewer',\n 'openc3-cosmos-tool-docs',\n 'openc3-cosmos-tool-handbooks',\n 'openc3-cosmos-tool-iframe',\n 'openc3-cosmos-tool-limitsmonitor',\n 'openc3-cosmos-tool-packetviewer',\n 'openc3-cosmos-tool-scriptrunner',\n 'openc3-cosmos-tool-tablemanager',\n 'openc3-cosmos-tool-tlmgrapher',\n 'openc3-cosmos-tool-tlmviewer',\n 'openc3-cosmos-enterprise-tool-admin', // Enterprise only\n 'openc3-cosmos-tool-autonomic', // Enterprise only\n 'openc3-cosmos-tool-calendar', // Enterprise only\n 'openc3-cosmos-tool-grafana', // Enterprise only\n 'openc3-cosmos-tool-systemhealth', // Enterprise only\n 'openc3-cosmos-tool-logexplorer', // Enterprise only\n 'openc3-enterprise-tool-base', // Enterprise only\n 'openc3-tool-base',\n ],\n }\n },\n watch: {\n // watcher to reset the file input when the dialog is closed\n showPluginDialog: function (newValue, oldValue) {\n if (newValue === false) {\n this.file = null\n this.$refs.fileInput.value = null\n }\n },\n },\n created() {\n this.api.update_plugin_store()\n },\n mounted() {\n this.update()\n this.updateProcesses()\n\n // Handle going \"back\" from the plugin store\n // (idk why v-bottom-sheet's close-on-back prop isn't working)\n const that = this\n window.onpopstate = function () {\n if (that.showPluginStore) {\n that.showPluginStore = false\n history.go(1)\n }\n }\n },\n methods: {\n resetControlState: function () {\n this.pluginName = null\n this.variables = {}\n this.storeId = null\n this.pluginTxt = ''\n this.file = null\n this.currentPlugin = null\n this.pluginHashTmp = null\n this.existingPluginTxt = null\n this.progress = 0\n this.pluginDelete = false\n },\n pluginTargets: function (plugin) {\n let result = []\n for (const target in this.targets) {\n if (this.targets[target]['plugin'] === plugin) {\n result.push(this.targets[target])\n }\n }\n return result\n },\n isModified: function (plugin) {\n return Object.entries(this.targets).some(([targetName, target]) => {\n return target['plugin'] === plugin && target['modified'] === true\n })\n },\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update: function () {\n Api.get('/openc3-api/plugins/all').then((response) => {\n this.plugins = Object.entries(response.data).map(\n ([_, plugin]) => plugin,\n )\n })\n Api.get('/openc3-api/targets_modified').then((response) => {\n this.targets = response.data\n })\n },\n updateProcesses: function () {\n Api.get('openc3-api/process_status/plugin_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 5000)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n upload: function (existing = null, storeData = null) {\n const method = existing ? 'put' : 'post'\n const path = existing\n ? `/openc3-api/plugins/${existing}`\n : '/openc3-api/plugins'\n const formData = new FormData()\n if (storeData === null) {\n formData.append('plugin', this.file, this.file.name)\n } else {\n formData.append('store_id', storeData.id)\n }\n let self = this\n const promise = Api[method](path, {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n promise\n .then((response) => {\n this.progress = 100\n this.alert = 'Uploaded file'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt =\n response.data.existing_plugin_txt_lines.join('\\n')\n }\n let pluginTxt = response.data.plugin_txt_lines.join('\\n')\n this.pluginName = response.data.name\n this.variables = response.data.variables\n this.storeId = response.data.store_id\n this.pluginTxt = pluginTxt\n this.existingPluginTxt = existingPluginTxt\n this.showPluginDialog = true\n this.file = undefined\n })\n .catch((error) => {\n this.currentPlugin = null\n this.file = undefined\n })\n },\n pluginCallback: function (pluginHash) {\n this.showPluginDialog = false\n if (this.currentPlugin !== null) {\n pluginHash['name'] = this.currentPlugin\n }\n this.pluginHashTmp = pluginHash\n if (this.isModified(this.currentPlugin)) {\n this.pluginDelete = false\n this.showModifiedPluginDialog = true\n } else {\n this.pluginInstall()\n }\n },\n modifiedSubmit: async function (deleteModified) {\n if (deleteModified === true) {\n for (let target of this.pluginTargets(this.currentPlugin)) {\n if (target.modified == true) {\n await Api.post(`/openc3-api/targets/${target.name}/delete_modified`)\n }\n }\n }\n if (this.pluginDelete) {\n this.deletePlugin(this.currentPlugin)\n } else {\n this.pluginInstall()\n }\n },\n pluginInstall: function () {\n Api.post(`/openc3-api/plugins/install/${this.pluginName}`, {\n data: {\n plugin_hash: JSON.stringify(this.pluginHashTmp),\n },\n }).then((response) => {\n this.alert = `Started installing plugin ${this.pluginName} ...`\n this.alertType = 'success'\n this.showAlert = true\n this.currentPlugin = null\n this.file = undefined\n this.variables = {}\n this.pluginTxt = ''\n this.existingPluginTxt = null\n this.storeId = null\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n this.update()\n })\n },\n editPlugin: function (plugin) {\n this.resetControlState()\n Api.get(`/openc3-api/plugins/${plugin}`).then((response) => {\n let existingPluginTxt = null\n if (response.data.existing_plugin_txt_lines !== undefined) {\n existingPluginTxt = response.data.existing_plugin_txt_lines.join('\\n')\n }\n this.pluginName = response.data.name\n this.variables = response.data.variables\n this.pluginTxt = response.data.plugin_txt_lines.join('\\n')\n this.existingPluginTxt = existingPluginTxt\n this.showPluginDialog = true\n })\n },\n deletePrompt: function (plugin) {\n this.resetControlState()\n this.$dialog\n .confirm(`Are you sure you want to remove: ${plugin}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.isModified(plugin)) {\n this.currentPlugin = plugin\n this.pluginDelete = true\n this.showModifiedPluginDialog = true\n } else {\n this.deletePlugin(plugin)\n }\n })\n },\n deletePlugin: function (plugin) {\n this.alert = `Removing plugin ${plugin} ...`\n this.alertType = 'success'\n this.showAlert = true\n Api.delete(`/openc3-api/plugins/${plugin}`).then((response) => {\n setTimeout(() => {\n this.showAlert = false\n this.updateProcesses()\n }, 5000)\n })\n this.update()\n },\n upgradePlugin(plugin) {\n this.resetControlState()\n this.currentPlugin = plugin\n this.$refs.fileInput.click()\n },\n selectFile() {\n this.resetControlState()\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.file = files[0]\n if (this.currentPlugin !== null) {\n if (\n this.file.name.split('.gem')[0] ==\n this.currentPlugin.split('.gem')[0]\n ) {\n this.$dialog\n .confirm(\n `The new gem ${this.file.name} appears to be identical to the existing ${this.currentPlugin}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n .catch((error) => {\n // do nothing\n })\n } else {\n // Split up the gem name to determine if this is an upgrade\n // or mistakenly trying to install a different gem\n // Gems are named like openc3-cosmos-demo-5.3.2.gem or\n // openc3-cosmos-pw-test-1.0.0.20230213074527.gem\n // So split on - and match everything until the first .\n let parts = this.file.name.split('-')\n let i = parts.findIndex((x) => x.includes('.'))\n let newName = parts.slice(0, i).join('-')\n parts = this.currentPlugin.split('-')\n i = parts.findIndex((x) => x.includes('.'))\n let existingName = parts.slice(0, i).join('-')\n if (newName !== existingName) {\n this.$dialog\n .confirm(\n `The new gem base name ${newName} doesn't match the existing ${existingName}. Install?`,\n {\n okText: 'Ok',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n this.upload(this.currentPlugin)\n })\n } else {\n this.upload(this.currentPlugin)\n }\n }\n } else {\n this.upload()\n }\n } else {\n // Reset the input element\n this.$refs.fileInput.value = null\n }\n },\n openStore() {\n this.resetControlState()\n this.showPluginStore = true\n },\n },\n}\n</script>\n\n<style scoped>\n.crashed {\n color: red;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["settingName","PluginProps","OpenC3Api","magicNumbers","fileHead","found","_","magicNumber","byte","i","mimeType","defaultStoreUrl","params","data","Api","_sfc_main","val","_hoisted_4","_hoisted_6","_renderSlot","_ctx","$options","_createVNode","_component_v_dialog","$event","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_tooltip","_withCtx","props","_component_v_btn","_cache","_component_v_card_subtitle","_createElementBlock","_hoisted_2","_component_v_badge","_component_v_card_text","_createBlock","_component_v_img","_Fragment","_renderList","keyword","_component_v_chip","_hoisted_5","license","_component_v_text_field","$data","_mergeProps","_component_v_card_actions","PluginDetailsDialog","_openBlock","_component_plugin_details_dialog","_component_v_card_title","_createTextVNode","_normalizeClass","SETTING_NAME","SETTING_SCOPE","Settings","value","response","_component_v_alert","PluginCard","PluginStoreSettingsDialog","filtered","plugin","_hoisted_1","_component_v_sheet","_component_v_switch","_component_v_container","_component_v_row","_component_v_col","_component_plugin_card","_component_plugin_store_settings_dialog","decodedData","uInt8Array","blob","link","name","args","$props","_a","_hoisted_3","target","index","_withModifiers","_component_v_menu","_component_v_icon","_component_v_list","_component_v_list_item","PluginListItem","pluginsToShow","defaultPluginsToShow","pluginNameShort","b","result","targetName","_component_v_data_table","_component_plugin_list_item","PluginDialog","PluginList","PluginStore","ModifiedPluginDialog","SimpleTextDialog","newValue","oldValue","that","process","nanoSecs","format","toDate","existing","storeData","method","path","formData","self","progressEvent","percentCompleted","existingPluginTxt","pluginTxt","error","pluginHash","deleteModified","dialog","event","files","parts","x","newName","existingName","_component_rux_progress","_component_v_divider","_component_v_progress_circular","_component_v_list_item_title","_component_v_list_item_subtitle","_component_plugin_list","_component_plugin_dialog","_component_modified_plugin_dialog","_component_simple_text_dialog","_component_v_bottom_sheet","_component_plugin_store"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const g=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs"),k=require("./TargetPacketItemChooser-DezS0jS3.cjs"),v=require("./cmdUtilities-DDCksp2R.cjs"),t=require("vue"),f=require("./CustomIcon-eie3rPKh.cjs"),w=require("./DetailsDialog-DbRPJzDG.cjs"),S={name:"CommandParameterEditor",mixins:[v.CmdUtilities],props:{modelValue:{type:[String,Number],default:void 0},states:{type:Object,default:()=>null},statesInHex:{type:Boolean,default:!1}},emits:["update:modelValue"],computed:{textFieldValue(){return this.convertToString(this.modelValue)},stateValue(){return this.statesInHex?"0x"+this.modelValue.toString(16):this.modelValue},selectValue(){return this.modelValue===""?null:this.modelValue},stateOptions(){return this.states?Object.keys(this.states).map(a=>({label:a,...this.states[a]})):null},hazardous(){var a,e;return((e=(a=Object.entries(this.states).find(([s,r])=>r.value===this.modelValue))==null?void 0:a.at(1))==null?void 0:e.hazardous)!==void 0},stateClass(){return this.hazardous?"hazardous mr-4":"mr-4"}},methods:{handleChange(a){this.$emit("update:modelValue",a)}}},b={key:1,class:"d-flex align-center"};function P(a,e,s,r,n,l){const d=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-select");return t.openBlock(),t.createElementBlock("div",null,[s.states?(t.openBlock(),t.createElementBlock("div",b,[t.createVNode(c,{items:l.stateOptions,"model-value":l.selectValue,"item-title":"label",class:t.normalizeClass(l.stateClass),"hide-details":"",density:"compact",variant:"outlined",placeholder:"Select...","min-width":"120px","data-test":"cmd-param-select","onUpdate:modelValue":l.handleChange},null,8,["items","model-value","class","onUpdate:modelValue"]),t.createVNode(d,{"model-value":l.stateValue,disabled:"","hide-details":"",density:"compact",variant:"outlined","min-width":"60px","data-test":"cmd-param-value"},null,8,["model-value"])])):(t.openBlock(),t.createBlock(d,{key:0,"model-value":l.textFieldValue,"hide-details":"",density:"compact",variant:"filled","data-test":"cmd-param-value","onUpdate:modelValue":l.handleChange},null,8,["model-value","onUpdate:modelValue"]))])}const C=f._export_sfc(S,[["render",P],["__scopeId","data-v-b38d5e7f"]]),B={name:"CommandEditor",components:{TargetPacketItemChooser:k.TargetPacketItemChooser,CommandParameterEditor:C,DetailsDialog:w.DetailsDialog},mixins:[v.CmdUtilities],props:{initialTargetName:{type:String,default:null},initialPacketName:{type:String,default:null},cmdString:{type:String,default:null},sendDisabled:{type:Boolean,default:!1},statesInHex:{type:Boolean,default:!1},showIgnoredParams:{type:Boolean,default:!1},cmdRaw:{type:Boolean,default:!1},showCommandButton:{type:Boolean,default:!0},showQueueSelect:{type:Boolean,default:!0}},emits:["command-changed","build-cmd"],data(){return{search:"",headers:[{title:"Name",value:"parameter_name"},{title:"Value or State",value:"val"},{title:"Units",value:"units"},{title:"Range",value:"range"},{title:"Description",value:"description"}],api:null,targetName:"",commandName:"",commandDescription:"",ignoredParams:[],computedRows:[],reservedItemNames:["PACKET_TIMESECONDS","PACKET_TIMEFORMATTED","RECEIVED_TIMESECONDS","RECEIVED_TIMEFORMATTED","RECEIVED_COUNT"],contextMenuShown:!1,viewDetails:!1,parameterName:"",x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}}]}},created(){this.api=new g.bi,this.cmdString?this.processCmdString():(this.targetName=this.initialTargetName,this.commandName=this.initialPacketName,this.updateCmdParams())},methods:{commandChanged(a){(this.targetName!==a.targetName||this.commandName!==a.packetName)&&(this.targetName=a.targetName,this.commandName=a.packetName,this.updateCmdParams()),this.$emit("command-changed",a)},buildCmd(a){this.$emit("build-cmd",a)},showContextMenu(a,e){a.preventDefault(),this.parameterName=e.item.parameter_name,this.contextMenuShown=!1,this.x=a.clientX,this.y=a.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})},updateCmdParams(){this.ignoredParams=[],this.computedRows=[],this.targetName&&this.commandName&&this.api.get_target(this.targetName).then(a=>(this.ignoredParams=a.ignored_parameters,this.api.get_cmd(this.targetName,this.commandName)),a=>{console.error("Error getting ignored parameters:",a)}).then(a=>{a&&(a.items.forEach(e=>{if(!this.reservedItemNames.includes(e.name)&&(!this.ignoredParams.includes(e.name)||this.showIgnoredParams)){let s=e.default;!e.states&&e.data_type==="STRING"&&typeof e.default=="string"&&(s=`'${s}'`),e.required&&(s=null),e.format_string&&e.default&&(s=sprintf(e.format_string,e.default));let r="N/A";e.minimum!=null&&e.maximum!=null&&(e.data_type==="FLOAT"&&(e.minimum<-1e6&&Number.isSafeInteger(e.minimum)&&(e.minimum=e.minimum.toExponential(3)),e.maximum>1e6&&Number.isSafeInteger(e.maximum)&&(e.maximum=e.maximum.toExponential(3))),r=`${e.minimum}..${e.maximum}`),this.computedRows.push({parameter_name:e.name,val:s,states:e.states,description:e.description,range:r,units:e.units,type:e.data_type})}}),this.commandDescription=a.description,this.populateParametersFromParsed())},a=>{console.error("Error getting command parameters:",a)})},triggerUpdateCmdParams(){this.updateCmdParams()},getRows(){return this.computedRows},getCmdString(){let a=`${this.targetName} ${this.commandName}`;if(this.computedRows.length===0)return a;a+=" with";for(const e of this.computedRows){if(e.val===null)throw new Error(`Required parameter ${e.parameter_name} not set`);if(e.val!==null&&e.val!==void 0&&e.val!==""){if(e.states){const r=Object.entries(e.states).find(([,n])=>n.value===e.val);if(r){a+=` ${e.parameter_name} '${r[0]}',`;continue}}let s=this.convertToString(e.val);s.includes(" ")&&!this.isArray(s)?a+=` ${e.parameter_name} '${s}',`:a+=` ${e.parameter_name} ${s},`}}return a.slice(0,-1)},parseCmdString(a){const e=a.split(" ");if(e.length<2)return{target:"",command:"",params:{}};if(e.length===2)return{target:e[0],command:e[1],params:{}};if(e[2]!=="with")return{target:"",command:"",params:{}};const s=e[0],r=e[1];let n={};const l=a.split(" with ")[1];let d=[],c=0,m="";for(let o of l)o==="["?(c++,m+=o):o==="]"?(c--,m+=o):o===","&&c===0?(d.push(m.trim()),m=""):m+=o;m.trim()!==""&&d.push(m.trim());for(let o of d){let u=o.indexOf(" ");if(u>0){let p=o.substring(0,u).trim(),h=o.substring(u+1).trim();n[p]=h}}return{target:s,command:r,params:n}},processCmdString(){const a=this.parseCmdString(this.cmdString);a.target&&a.command&&(this.targetName=a.target,this.commandName=a.command,this.parsedParameters=a.params,this.updateCmdParams())},populateParametersFromParsed(){!this.parsedParameters||Object.keys(this.parsedParameters).length===0||this.$nextTick(()=>{setTimeout(()=>{this.computedRows.forEach(a=>{if(this.parsedParameters.hasOwnProperty(a.parameter_name)){const e=this.parsedParameters[a.parameter_name];if(a.states&&typeof e=="string"){const s=Object.keys(a.states).find(r=>r===e||r.toLowerCase()===e.toLowerCase());s?a.val=a.states[s].value:a.val=e}else a.type==="STRING"&&typeof e=="string"?a.val=e.startsWith("'")||e.startsWith('"')?e:`'${e}'`:a.val=e}})},100)})}}},T={style:{padding:"10px"}};function I(a,e,s,r,n,l){const d=t.resolveComponent("target-packet-item-chooser"),c=t.resolveComponent("v-spacer"),m=t.resolveComponent("v-text-field"),o=t.resolveComponent("v-card-title"),u=t.resolveComponent("command-parameter-editor"),p=t.resolveComponent("v-data-table"),h=t.resolveComponent("v-card"),V=t.resolveComponent("v-list-item-title"),x=t.resolveComponent("v-list-item"),N=t.resolveComponent("v-list"),y=t.resolveComponent("v-menu"),E=t.resolveComponent("details-dialog");return t.openBlock(),t.createBlock(h,null,{default:t.withCtx(()=>[t.createElementVNode("div",T,[t.createVNode(d,{"initial-target-name":n.targetName,"initial-packet-name":n.commandName,disabled:s.sendDisabled,"button-text":s.showCommandButton?"Send":null,"show-queue-select":s.showQueueSelect,mode:"cmd",onOnSet:e[0]||(e[0]=i=>l.commandChanged(i)),onAddItem:e[1]||(e[1]=i=>l.buildCmd(i))},null,8,["initial-target-name","initial-packet-name","disabled","button-text","show-queue-select"])]),n.computedRows.length!==0?(t.openBlock(),t.createBlock(h,{key:0},{default:t.withCtx(()=>[t.createVNode(o,{class:"d-flex align-center justify-content-space-between"},{default:t.withCtx(()=>[e[5]||(e[5]=t.createTextVNode(" Parameters ",-1)),t.createVNode(c),t.createVNode(m,{modelValue:n.search,"onUpdate:modelValue":e[2]||(e[2]=i=>n.search=i),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":"",class:"search"},null,8,["modelValue"])]),_:1}),t.createVNode(p,{headers:n.headers,items:n.computedRows,search:n.search,"items-per-page":-1,"hide-default-footer":"","multi-sort":"",density:"compact","onContextmenu:row":l.showContextMenu},{"item.val":t.withCtx(({item:i})=>[t.renderSlot(a.$slots,"parameter-editor",{item:i,statesInHex:s.statesInHex},()=>[t.createVNode(u,{modelValue:i.val,"onUpdate:modelValue":_=>i.val=_,states:i.states,"states-in-hex":s.statesInHex},null,8,["modelValue","onUpdate:modelValue","states","states-in-hex"])])]),_:3},8,["headers","items","search","onContextmenu:row"])]),_:3})):t.createCommentVNode("",!0),t.createVNode(y,{modelValue:n.contextMenuShown,"onUpdate:modelValue":e[3]||(e[3]=i=>n.contextMenuShown=i),target:[n.x,n.y]},{default:t.withCtx(()=>[t.createVNode(N,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.contextMenuOptions,(i,_)=>(t.openBlock(),t.createBlock(x,{key:_,onClick:t.withModifiers(i.action,["stop"])},{default:t.withCtx(()=>[t.createVNode(V,null,{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(i.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),t.createVNode(E,{modelValue:n.viewDetails,"onUpdate:modelValue":e[4]||(e[4]=i=>n.viewDetails=i),"target-name":n.targetName,"packet-name":n.commandName,"item-name":n.parameterName,type:"cmd"},null,8,["modelValue","target-name","packet-name","item-name"])]),_:3})}const D=f._export_sfc(B,[["render",I]]),U={props:{modelValue:{type:Array,required:!0}},computed:{selected:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},methods:{addEnvVar:function(){this.selected.push({key:"",value:""})},delEnvVar:function(a){this.selected.splice(a,1)}}},O={scope:"col",class:"text-right",width:"52px"};function R(a,e,s,r,n,l){const d=t.resolveComponent("v-btn"),c=t.resolveComponent("v-text-field"),m=t.resolveComponent("v-table");return t.openBlock(),t.createElementBlock("div",null,[e[2]||(e[2]=t.createElementVNode("span",null," Add environment variables (optional)",-1)),t.createVNode(m,{density:"compact"},{default:t.withCtx(()=>[t.createElementVNode("tbody",null,[t.createElementVNode("tr",null,[e[0]||(e[0]=t.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),e[1]||(e[1]=t.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),t.createElementVNode("th",O,[t.createVNode(d,{icon:"mdi-plus",variant:"text","data-test":"new-metadata-icon",onClick:l.addEnvVar},null,8,["onClick"])])]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.selected,(o,u)=>(t.openBlock(),t.createElementBlock("tr",{key:`tr-${u}`},[t.createElementVNode("td",null,[t.createVNode(c,{modelValue:o.key,"onUpdate:modelValue":p=>o.key=p,density:"compact",type:"text","hide-details":"",readonly:o.readonly,"data-test":`key-${u}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),t.createElementVNode("td",null,[t.createVNode(c,{modelValue:o.value,"onUpdate:modelValue":p=>o.value=p,density:"compact",type:"text","hide-details":"",readonly:o.readonly,"data-test":`value-${u}`},null,8,["modelValue","onUpdate:modelValue","readonly","data-test"])]),t.createElementVNode("td",null,[t.createVNode(d,{icon:"mdi-delete",variant:"text","data-test":`remove-env-icon-${u}`,onClick:p=>l.delEnvVar(u)},null,8,["data-test","onClick"])])]))),128))])]),_:1})])}const M=f._export_sfc(U,[["render",R]]),q={props:{modelValue:String},data(){return{loading:!1,search:"",selected:this.modelValue,scripts:[],items:[]}},created(){this.loading=!0,g.di.get("/script-api/scripts").then(a=>{this.scripts=a.data.filter(e=>e.includes(".rb")||e.includes(".py")),this.items=this.scripts}).catch(a=>{this.$emit("error",{type:"error",text:`Failed to connect to OpenC3. ${a}`,error:a})}),this.selected=this.modelValue?this.modelValue:null,this.loading=!1},watch:{selected(a,e){a!==e&&(a&&a.slice(-1)==="*"?this.$emit("file",a.substring(0,a.length-1)):this.$emit("file",a))},search(a){a&&a!==this.selected&&this.querySelections(a)}},methods:{querySelections:function(a){this.loading=!0,setTimeout(()=>{this.items=this.scripts.filter(e=>(e||"").toLowerCase().indexOf((a||"").toLowerCase())>-1),this.loading=!1},500)}}};function A(a,e,s,r,n,l){const d=t.resolveComponent("v-autocomplete"),c=t.resolveComponent("v-row");return t.openBlock(),t.createElementBlock("div",null,[t.createVNode(c,null,{default:t.withCtx(()=>[t.createVNode(d,{modelValue:n.selected,"onUpdate:modelValue":e[0]||(e[0]=m=>n.selected=m),density:"compact",variant:"outlined","hide-no-data":"","hide-details":"",class:"mb-5",label:"Select script",loading:n.loading,items:n.items,search:n.search,"onUpdate:search":e[1]||(e[1]=m=>n.search=m),"data-test":"select-script"},null,8,["modelValue","loading","items","search"])]),_:1})])}const F=f._export_sfc(q,[["render",A]]);exports.CommandEditor=D;exports.CommandParameterEditor=C;exports.EnvironmentChooser=M;exports.ScriptChooser=F;
|
|
2
|
-
//# sourceMappingURL=ScriptChooser-BzQcgW8g.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptChooser-BzQcgW8g.cjs","sources":["../src/components/CommandParameterEditor.vue","../src/components/CommandEditor.vue","../src/components/EnvironmentChooser.vue","../src/components/ScriptChooser.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"!states\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"filled\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <div v-else class=\"d-flex align-center\">\n <v-select\n :items=\"stateOptions\"\n :model-value=\"selectValue\"\n item-title=\"label\"\n :class=\"stateClass\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n placeholder=\"Select...\"\n min-width=\"120px\"\n data-test=\"cmd-param-select\"\n @update:model-value=\"handleChange\"\n />\n <v-text-field\n :model-value=\"stateValue\"\n disabled\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { CmdUtilities } from '../util'\nexport default {\n name: 'CommandParameterEditor',\n mixins: [CmdUtilities],\n props: {\n modelValue: {\n type: [String, Number],\n default: undefined,\n },\n states: {\n type: Object,\n default: () => null,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n textFieldValue() {\n return this.convertToString(this.modelValue)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.modelValue.toString(16)\n } else {\n return this.modelValue\n }\n },\n selectValue() {\n // this makes the placeholder prop work\n return this.modelValue === '' ? null : this.modelValue\n },\n stateOptions() {\n if (!this.states) {\n return null\n }\n return Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n },\n hazardous() {\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection-text) {\n color: rgb(255, 220, 0) !important;\n}\n</style>\n","<!--\n# Copyright 2025, OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n @contextmenu:row=\"showContextMenu\"\n >\n <template #item.val=\"{ item }\">\n <slot\n name=\"parameter-editor\"\n :item=\"item\"\n :states-in-hex=\"statesInHex\"\n >\n <!-- Default parameter editor if slot not provided -->\n <command-parameter-editor\n v-model=\"item.val\"\n :states=\"item.states\"\n :states-in-hex=\"statesInHex\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['command-changed', 'build-cmd'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (\n !parameter.states &&\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = null // Special marker for required parameters\n }\n if (parameter.format_string && parameter.default) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n let range = 'N/A'\n if (\n parameter.minimum != null &&\n parameter.maximum != null\n ) {\n if (parameter.data_type === 'FLOAT') {\n if (parameter.minimum < -1e6) {\n if (Number.isSafeInteger(parameter.minimum)) {\n parameter.minimum =\n parameter.minimum.toExponential(3)\n }\n }\n if (parameter.maximum > 1e6) {\n if (Number.isSafeInteger(parameter.maximum)) {\n parameter.maximum =\n parameter.maximum.toExponential(3)\n }\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n this.computedRows.push({\n parameter_name: parameter.name,\n val: val,\n states: parameter.states,\n description: parameter.description,\n range: range,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n },\n )\n }\n },\n triggerUpdateCmdParams() {\n this.updateCmdParams()\n },\n getRows() {\n return this.computedRows\n },\n getCmdString() {\n let cmd = `${this.targetName} ${this.commandName}`\n if (this.computedRows.length === 0) return cmd\n cmd += ' with'\n for (const row of this.computedRows) {\n // null value indicates required parameter not set, see updateCmdParams\n if (row.val === null) {\n throw new Error(`Required parameter ${row.parameter_name} not set`)\n }\n if (row.val !== null && row.val !== undefined && row.val !== '') {\n if (row.states) {\n // If states exist, find the state name for the value\n const stateEntry = Object.entries(row.states).find(\n ([, state]) => state.value === row.val,\n )\n if (stateEntry) {\n // Although not always necessary, always quote states\n cmd += ` ${row.parameter_name} '${stateEntry[0]}',`\n continue\n }\n }\n // We only put the param value in quotes if it is a string with spaces\n // Check for array syntax because we do NOT quote arrays\n let value = this.convertToString(row.val)\n if (value.includes(' ') && !this.isArray(value)) {\n cmd += ` ${row.parameter_name} '${value}',`\n } else {\n cmd += ` ${row.parameter_name} ${value},`\n }\n }\n }\n // Remove trailing comma\n return cmd.slice(0, -1)\n },\n parseCmdString(cmdString) {\n // Parse commands in format: \"TARGET COMMAND with PARAM1 value1, PARAM2 value2\"\n const parts = cmdString.split(' ')\n if (parts.length < 2) return { target: '', command: '', params: {} }\n if (parts.length === 2) {\n return { target: parts[0], command: parts[1], params: {} }\n }\n // Check for a malformed command string that doesn't have 'with'\n if (parts[2] !== 'with') return { target: '', command: '', params: {} }\n\n const target = parts[0]\n const command = parts[1]\n let params = {}\n\n const paramsString = cmdString.split(' with ')[1]\n let paramPairs = []\n let bracketLevel = 0\n let current = ''\n // Parse the params char by char to handle commas inside brackets\n for (let char of paramsString) {\n if (char === '[') {\n bracketLevel++\n current += char\n } else if (char === ']') {\n bracketLevel--\n current += char\n } else if (char === ',' && bracketLevel === 0) {\n paramPairs.push(current.trim())\n current = ''\n } else {\n current += char\n }\n }\n if (current.trim() !== '') {\n paramPairs.push(current.trim())\n }\n\n for (let pair of paramPairs) {\n let firstSpace = pair.indexOf(' ')\n if (firstSpace > 0) {\n let key = pair.substring(0, firstSpace).trim()\n let value = pair.substring(firstSpace + 1).trim()\n params[key] = value\n }\n }\n return { target: target, command: command, params: params }\n },\n processCmdString() {\n const parsed = this.parseCmdString(this.cmdString)\n if (parsed.target && parsed.command) {\n this.targetName = parsed.target\n this.commandName = parsed.command\n this.parsedParameters = parsed.params\n this.updateCmdParams()\n }\n },\n populateParametersFromParsed() {\n // Populate parameters after command parameters are loaded\n if (\n !this.parsedParameters ||\n Object.keys(this.parsedParameters).length === 0\n ) {\n return\n }\n\n this.$nextTick(() => {\n // Give time for parameters to load\n setTimeout(() => {\n this.computedRows.forEach((row) => {\n if (this.parsedParameters.hasOwnProperty(row.parameter_name)) {\n const value = this.parsedParameters[row.parameter_name]\n // Set the value based on parameter type\n if (row.states && typeof value === 'string') {\n // For state parameters, try to match the state name\n const stateKey = Object.keys(row.states).find(\n (key) =>\n key === value || key.toLowerCase() === value.toLowerCase(),\n )\n if (stateKey) {\n row.val = row.states[stateKey].value\n } else {\n row.val = value\n }\n } else if (row.type === 'STRING' && typeof value === 'string') {\n // For string parameters, add quotes if not present\n row.val =\n value.startsWith(\"'\") || value.startsWith('\"')\n ? value\n : `'${value}'`\n } else {\n row.val = value\n }\n }\n })\n }, 100) // Shorter delay since we're already in the component\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add environment variables (optional)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"addEnvVar\"\n />\n </th>\n </tr>\n <tr v-for=\"(env, i) in selected\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"env.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"env.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`remove-env-icon-${i}`\"\n @click=\"delEnvVar(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n computed: {\n selected: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n addEnvVar: function () {\n this.selected.push({\n key: '',\n value: '',\n })\n },\n delEnvVar: function (index) {\n this.selected.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row>\n <v-autocomplete\n v-model=\"selected\"\n density=\"compact\"\n variant=\"outlined\"\n hide-no-data\n hide-details\n class=\"mb-5\"\n label=\"Select script\"\n :loading=\"loading\"\n :items=\"items\"\n v-model:search=\"search\"\n data-test=\"select-script\"\n />\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n // TODO: cache items\n // this was previously handled by Vuetify and the `cache-items` prop on `v-autocomplete`, but that feature was\n // dropped in Vuetify 3\n props: {\n modelValue: String, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\n },\n created() {\n this.loading = true\n Api.get('/script-api/scripts')\n .then((response) => {\n this.scripts = response.data.filter((filename) => {\n return filename.includes('.rb') || filename.includes('.py')\n })\n this.items = this.scripts\n })\n .catch((error) => {\n this.$emit('error', {\n type: 'error',\n text: `Failed to connect to OpenC3. ${error}`,\n error: error,\n })\n })\n this.selected = this.modelValue ? this.modelValue : null\n this.loading = false\n },\n watch: {\n selected(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && newVal.slice(-1) === '*') {\n // Remove the * before returning\n this.$emit('file', newVal.substring(0, newVal.length - 1))\n } else {\n this.$emit('file', newVal)\n }\n }\n },\n search(val) {\n val && val !== this.selected && this.querySelections(val)\n },\n },\n methods: {\n querySelections: function (v) {\n this.loading = true\n // Simulated ajax query\n setTimeout(() => {\n this.items = this.scripts.filter((e) => {\n return (e || '').toLowerCase().indexOf((v || '').toLowerCase()) > -1\n })\n this.loading = false\n }, 500)\n },\n },\n}\n</script>\n"],"names":["_sfc_main","CmdUtilities","label","_b","_a","state","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","_component_v_text_field","_createBlock","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","OpenC3Api","event","row","target","error","command","parameter","val","range","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_createElementVNode","_component_target_packet_item_chooser","$data","_cache","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_withCtx","item","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog","_component_v_table","_component_v_btn","env","i","Api","response","filename","newVal","oldVal","v","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptChooser-DL8ct71n.js","sources":["../src/components/CommandParameterEditor.vue","../src/components/CommandEditor.vue","../src/components/EnvironmentChooser.vue","../src/components/ScriptChooser.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"!states\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"filled\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <div v-else class=\"d-flex align-center\">\n <v-select\n :items=\"stateOptions\"\n :model-value=\"selectValue\"\n item-title=\"label\"\n :class=\"stateClass\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n placeholder=\"Select...\"\n min-width=\"120px\"\n data-test=\"cmd-param-select\"\n @update:model-value=\"handleChange\"\n />\n <v-text-field\n :model-value=\"stateValue\"\n disabled\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { CmdUtilities } from '../util'\nexport default {\n name: 'CommandParameterEditor',\n mixins: [CmdUtilities],\n props: {\n modelValue: {\n type: [String, Number],\n default: undefined,\n },\n states: {\n type: Object,\n default: () => null,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n textFieldValue() {\n return this.convertToString(this.modelValue)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.modelValue.toString(16)\n } else {\n return this.modelValue\n }\n },\n selectValue() {\n // this makes the placeholder prop work\n return this.modelValue === '' ? null : this.modelValue\n },\n stateOptions() {\n if (!this.states) {\n return null\n }\n return Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n },\n hazardous() {\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection-text) {\n color: rgb(255, 220, 0) !important;\n}\n</style>\n","<!--\n# Copyright 2025, OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n :show-queue-select=\"showQueueSelect\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n @contextmenu:row=\"showContextMenu\"\n >\n <template #item.val=\"{ item }\">\n <slot\n name=\"parameter-editor\"\n :item=\"item\"\n :states-in-hex=\"statesInHex\"\n >\n <!-- Default parameter editor if slot not provided -->\n <command-parameter-editor\n v-model=\"item.val\"\n :states=\"item.states\"\n :states-in-hex=\"statesInHex\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['command-changed', 'build-cmd'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (\n !parameter.states &&\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = null // Special marker for required parameters\n }\n if (parameter.format_string && parameter.default) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n let range = 'N/A'\n if (\n parameter.minimum != null &&\n parameter.maximum != null\n ) {\n if (parameter.data_type === 'FLOAT') {\n if (parameter.minimum < -1e6) {\n if (Number.isSafeInteger(parameter.minimum)) {\n parameter.minimum =\n parameter.minimum.toExponential(3)\n }\n }\n if (parameter.maximum > 1e6) {\n if (Number.isSafeInteger(parameter.maximum)) {\n parameter.maximum =\n parameter.maximum.toExponential(3)\n }\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n this.computedRows.push({\n parameter_name: parameter.name,\n val: val,\n states: parameter.states,\n description: parameter.description,\n range: range,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n },\n )\n }\n },\n triggerUpdateCmdParams() {\n this.updateCmdParams()\n },\n getRows() {\n return this.computedRows\n },\n getCmdString() {\n let cmd = `${this.targetName} ${this.commandName}`\n if (this.computedRows.length === 0) return cmd\n cmd += ' with'\n for (const row of this.computedRows) {\n // null value indicates required parameter not set, see updateCmdParams\n if (row.val === null) {\n throw new Error(`Required parameter ${row.parameter_name} not set`)\n }\n if (row.val !== null && row.val !== undefined && row.val !== '') {\n if (row.states) {\n // If states exist, find the state name for the value\n const stateEntry = Object.entries(row.states).find(\n ([, state]) => state.value === row.val,\n )\n if (stateEntry) {\n // Although not always necessary, always quote states\n cmd += ` ${row.parameter_name} '${stateEntry[0]}',`\n continue\n }\n }\n // We only put the param value in quotes if it is a string with spaces\n // Check for array syntax because we do NOT quote arrays\n let value = this.convertToString(row.val)\n if (value.includes(' ') && !this.isArray(value)) {\n cmd += ` ${row.parameter_name} '${value}',`\n } else {\n cmd += ` ${row.parameter_name} ${value},`\n }\n }\n }\n // Remove trailing comma\n return cmd.slice(0, -1)\n },\n parseCmdString(cmdString) {\n // Parse commands in format: \"TARGET COMMAND with PARAM1 value1, PARAM2 value2\"\n const parts = cmdString.split(' ')\n if (parts.length < 2) return { target: '', command: '', params: {} }\n if (parts.length === 2) {\n return { target: parts[0], command: parts[1], params: {} }\n }\n // Check for a malformed command string that doesn't have 'with'\n if (parts[2] !== 'with') return { target: '', command: '', params: {} }\n\n const target = parts[0]\n const command = parts[1]\n let params = {}\n\n const paramsString = cmdString.split(' with ')[1]\n let paramPairs = []\n let bracketLevel = 0\n let current = ''\n // Parse the params char by char to handle commas inside brackets\n for (let char of paramsString) {\n if (char === '[') {\n bracketLevel++\n current += char\n } else if (char === ']') {\n bracketLevel--\n current += char\n } else if (char === ',' && bracketLevel === 0) {\n paramPairs.push(current.trim())\n current = ''\n } else {\n current += char\n }\n }\n if (current.trim() !== '') {\n paramPairs.push(current.trim())\n }\n\n for (let pair of paramPairs) {\n let firstSpace = pair.indexOf(' ')\n if (firstSpace > 0) {\n let key = pair.substring(0, firstSpace).trim()\n let value = pair.substring(firstSpace + 1).trim()\n params[key] = value\n }\n }\n return { target: target, command: command, params: params }\n },\n processCmdString() {\n const parsed = this.parseCmdString(this.cmdString)\n if (parsed.target && parsed.command) {\n this.targetName = parsed.target\n this.commandName = parsed.command\n this.parsedParameters = parsed.params\n this.updateCmdParams()\n }\n },\n populateParametersFromParsed() {\n // Populate parameters after command parameters are loaded\n if (\n !this.parsedParameters ||\n Object.keys(this.parsedParameters).length === 0\n ) {\n return\n }\n\n this.$nextTick(() => {\n // Give time for parameters to load\n setTimeout(() => {\n this.computedRows.forEach((row) => {\n if (this.parsedParameters.hasOwnProperty(row.parameter_name)) {\n const value = this.parsedParameters[row.parameter_name]\n // Set the value based on parameter type\n if (row.states && typeof value === 'string') {\n // For state parameters, try to match the state name\n const stateKey = Object.keys(row.states).find(\n (key) =>\n key === value || key.toLowerCase() === value.toLowerCase(),\n )\n if (stateKey) {\n row.val = row.states[stateKey].value\n } else {\n row.val = value\n }\n } else if (row.type === 'STRING' && typeof value === 'string') {\n // For string parameters, add quotes if not present\n row.val =\n value.startsWith(\"'\") || value.startsWith('\"')\n ? value\n : `'${value}'`\n } else {\n row.val = value\n }\n }\n })\n }, 100) // Shorter delay since we're already in the component\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add environment variables (optional)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"addEnvVar\"\n />\n </th>\n </tr>\n <tr v-for=\"(env, i) in selected\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"env.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"env.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :readonly=\"env.readonly\"\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`remove-env-icon-${i}`\"\n @click=\"delEnvVar(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n computed: {\n selected: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n addEnvVar: function () {\n this.selected.push({\n key: '',\n value: '',\n })\n },\n delEnvVar: function (index) {\n this.selected.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row>\n <v-autocomplete\n v-model=\"selected\"\n density=\"compact\"\n variant=\"outlined\"\n hide-no-data\n hide-details\n class=\"mb-5\"\n label=\"Select script\"\n :loading=\"loading\"\n :items=\"items\"\n v-model:search=\"search\"\n data-test=\"select-script\"\n />\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n // TODO: cache items\n // this was previously handled by Vuetify and the `cache-items` prop on `v-autocomplete`, but that feature was\n // dropped in Vuetify 3\n props: {\n modelValue: String, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\n },\n created() {\n this.loading = true\n Api.get('/script-api/scripts')\n .then((response) => {\n this.scripts = response.data.filter((filename) => {\n return filename.includes('.rb') || filename.includes('.py')\n })\n this.items = this.scripts\n })\n .catch((error) => {\n this.$emit('error', {\n type: 'error',\n text: `Failed to connect to OpenC3. ${error}`,\n error: error,\n })\n })\n this.selected = this.modelValue ? this.modelValue : null\n this.loading = false\n },\n watch: {\n selected(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && newVal.slice(-1) === '*') {\n // Remove the * before returning\n this.$emit('file', newVal.substring(0, newVal.length - 1))\n } else {\n this.$emit('file', newVal)\n }\n }\n },\n search(val) {\n val && val !== this.selected && this.querySelections(val)\n },\n },\n methods: {\n querySelections: function (v) {\n this.loading = true\n // Simulated ajax query\n setTimeout(() => {\n this.items = this.scripts.filter((e) => {\n return (e || '').toLowerCase().indexOf((v || '').toLowerCase()) > -1\n })\n this.loading = false\n }, 500)\n },\n },\n}\n</script>\n"],"names":["_sfc_main","CmdUtilities","label","_b","_a","state","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","_component_v_text_field","_createBlock","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","OpenC3Api","event","row","target","error","command","parameter","val","range","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_createElementVNode","_component_target_packet_item_chooser","$data","_cache","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_withCtx","item","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog","_component_v_table","_component_v_btn","env","i","Api","response","filename","newVal","oldVal","v","_component_v_row","_component_v_autocomplete"],"mappings":";;;;;;AA8DA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,QAAQ,CAACC,CAAY;AAAA,EACrB,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,MAAM;AAAA;IAEjB,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO,CAAC,mBAAmB;AAAA,EAC3B,UAAU;AAAA,IACR,iBAAiB;AACf,aAAO,KAAK,gBAAgB,KAAK,UAAU;AAAA,IAC7C;AAAA,IACA,aAAa;AACX,aAAI,KAAK,cACA,OAAO,KAAK,WAAW,SAAS,EAAE,IAElC,KAAK;AAAA,IAEhB;AAAA,IACA,cAAc;AAEZ,aAAO,KAAK,eAAe,KAAK,OAAO,KAAK;AAAA,IAC9C;AAAA,IACA,eAAe;AACb,aAAK,KAAK,SAGH,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,CAACC,OAC5B;AAAA,QACL,OAAAA;AAAA,QACA,GAAG,KAAK,OAAOA,CAAK;AAAA,MACtB,EACD,IAPQ;AAAA,IAQX;AAAA,IACA,YAAY;;AACV,eACEC,KAAAC,IAAA,OAAO,QAAQ,KAAK,MAAM,EACvB,KAAK,CAAC,CAACF,GAAOG,CAAK,MAAMA,EAAM,UAAU,KAAK,UAAU,MAD3D,gBAAAD,EAEI,GAAG,OAFP,gBAAAD,EAEW,eAAc;AAAA,IAE7B;AAAA,IACA,aAAa;AACX,aAAO,KAAK,YAAY,mBAAmB;AAAA,IAC7C;AAAA;EAEF,SAAS;AAAA,IACP,aAAaG,GAAO;AAClB,WAAK,MAAM,qBAAqBA,CAAK;AAAA,IACvC;AAAA;AAEJ;;EAzFgB,OAAM;;;;cAVpBC,EAkCM,OAAA,MAAA;AAAA,IAhCKC,EAAA,UAQTC,KAAAF,EAuBM,OAvBNG,GAuBM;AAAA,MAtBJC,EAYEC,GAAA;AAAA,QAXC,OAAOC,EAAA;AAAA,QACP,eAAaA,EAAA;AAAA,QACd,cAAW;AAAA,QACV,SAAOA,EAAA,UAAU;AAAA,QAClB,gBAAA;AAAA,QACA,SAAQ;AAAA,QACR,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,aAAU;AAAA,QACV,aAAU;AAAA,QACT,uBAAoBA,EAAA;AAAA;MAEvBF,EAQEG,GAAA;AAAA,QAPC,eAAaD,EAAA;AAAA,QACd,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,SAAQ;AAAA,QACR,SAAQ;AAAA,QACR,aAAU;AAAA,QACV,aAAU;AAAA;gBA9BdE,EAQED,GAAA;AAAA;MANC,eAAaD,EAAA;AAAA,MACd,gBAAA;AAAA,MACA,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,aAAU;AAAA,MACT,uBAAoBA,EAAA;AAAA;;;mFC2EtBb,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,yBAAAgB;AAAA,IACA,wBAAAC;AAAA,IACA,eAAAC;AAAA;EAEF,QAAQ,CAACjB,CAAY;AAAA,EACrB,OAAO;AAAA,IACL,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO,CAAC,mBAAmB,WAAW;AAAA,EACtC,OAAO;AACL,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,EAAE,OAAO,QAAQ,OAAO;QACxB,EAAE,OAAO,kBAAkB,OAAO;QAClC,EAAE,OAAO,SAAS,OAAO,QAAM;AAAA,QAC/B,EAAE,OAAO,SAAS,OAAO,QAAM;AAAA,QAC/B,EAAE,OAAO,eAAe,OAAO;;MAEjC,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,eAAe,CAAA;AAAA,MACf,cAAc,CAAA;AAAA,MACd,mBAAmB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;MAEF,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,MACH,oBAAoB;AAAA,QAClB;AAAA,UACE,OAAO;AAAA,UACP,QAAQ,MAAM;AACZ,iBAAK,mBAAmB,IACxB,KAAK,cAAc;AAAA,UACrB;AAAA;;IAGN;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,MAAM,IAAIkB,EAAS,GACpB,KAAK,YACP,KAAK,iBAAgB,KAErB,KAAK,aAAa,KAAK,mBACvB,KAAK,cAAc,KAAK,mBACxB,KAAK,gBAAe;AAAA,EAExB;AAAA,EACA,SAAS;AAAA,IACP,eAAeC,GAAO;AACpB,OACE,KAAK,eAAeA,EAAM,cAC1B,KAAK,gBAAgBA,EAAM,gBAE3B,KAAK,aAAaA,EAAM,YACxB,KAAK,cAAcA,EAAM,YACzB,KAAK,gBAAe,IAEtB,KAAK,MAAM,mBAAmBA,CAAK;AAAA,IACrC;AAAA,IACA,SAASA,GAAO;AACd,WAAK,MAAM,aAAaA,CAAK;AAAA,IAC/B;AAAA,IACA,gBAAgBA,GAAOC,GAAK;AAC1B,MAAAD,EAAM,eAAc,GACpB,KAAK,gBAAgBC,EAAI,KAAK,gBAC9B,KAAK,mBAAmB,IACxB,KAAK,IAAID,EAAM,SACf,KAAK,IAAIA,EAAM,SACf,KAAK,UAAU,MAAM;AACnB,aAAK,mBAAmB;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,kBAAkB;AAChB,WAAK,gBAAgB,CAAA,GACrB,KAAK,eAAe,CAAA,GAChB,KAAK,cAAc,KAAK,eAC1B,KAAK,IACF,WAAW,KAAK,UAAU,EAC1B;AAAA,QACC,CAACE,OACC,KAAK,gBAAgBA,EAAO,oBACrB,KAAK,IAAI,QAAQ,KAAK,YAAY,KAAK,WAAW;AAAA,QAE3D,CAACC,MAAU;AAET,kBAAQ,MAAM,qCAAqCA,CAAK;AAAA,QAC1D;AAAA,MACF,EACC;AAAA,QACC,CAACC,MAAY;AACX,UAAIA,MACFA,EAAQ,MAAM,QAAQ,CAACC,MAAc;AACnC,gBAAI,MAAK,kBAAkB,SAASA,EAAU,IAAI,MAEhD,CAAC,KAAK,cAAc,SAASA,EAAU,IAAI,KAC3C,KAAK,oBACL;AACA,kBAAIC,IAAMD,EAAU;AACpB,cACE,CAACA,EAAU,UACXA,EAAU,cAAc,YACxB,OAAOA,EAAU,WAAY,aAE7BC,IAAM,IAAIA,CAAG,MAEXD,EAAU,aACZC,IAAM,OAEJD,EAAU,iBAAiBA,EAAU,YACvCC,IAAM,QAAQD,EAAU,eAAeA,EAAU,OAAO;AAE1D,kBAAIE,IAAQ;AACZ,cACEF,EAAU,WAAW,QACrBA,EAAU,WAAW,SAEjBA,EAAU,cAAc,YACtBA,EAAU,UAAU,QAClB,OAAO,cAAcA,EAAU,OAAO,MACxCA,EAAU,UACRA,EAAU,QAAQ,cAAc,CAAC,IAGnCA,EAAU,UAAU,OAClB,OAAO,cAAcA,EAAU,OAAO,MACxCA,EAAU,UACRA,EAAU,QAAQ,cAAc,CAAC,KAIzCE,IAAQ,GAAGF,EAAU,OAAO,KAAKA,EAAU,OAAO,KAEpD,KAAK,aAAa,KAAK;AAAA,gBACrB,gBAAgBA,EAAU;AAAA,gBAC1B,KAAKC;AAAA,gBACL,QAAQD,EAAU;AAAA,gBAClB,aAAaA,EAAU;AAAA,gBACvB,OAAOE;AAAA,gBACP,OAAOF,EAAU;AAAA,gBACjB,MAAMA,EAAU;AAAA,eACjB;AAAA,YACH;AAAA,UACF,CAAC,GACD,KAAK,qBAAqBD,EAAQ,aAGlC,KAAK,6BAA4B;AAAA,QAErC;AAAA,QACA,CAACD,MAAU;AAET,kBAAQ,MAAM,qCAAqCA,CAAK;AAAA,QAC1D;AAAA,MACF;AAAA,IAEN;AAAA,IACA,yBAAyB;AACvB,WAAK,gBAAe;AAAA,IACtB;AAAA,IACA,UAAU;AACR,aAAO,KAAK;AAAA,IACd;AAAA,IACA,eAAe;AACb,UAAIK,IAAM,GAAG,KAAK,UAAU,IAAI,KAAK,WAAW;AAChD,UAAI,KAAK,aAAa,WAAW,EAAG,QAAOA;AAC3C,MAAAA,KAAO;AACP,iBAAWP,KAAO,KAAK,cAAc;AAEnC,YAAIA,EAAI,QAAQ;AACd,gBAAM,IAAI,MAAM,sBAAsBA,EAAI,cAAc,UAAU;AAEpE,YAAIA,EAAI,QAAQ,QAAQA,EAAI,QAAQ,UAAaA,EAAI,QAAQ,IAAI;AAC/D,cAAIA,EAAI,QAAQ;AAEd,kBAAMQ,IAAa,OAAO,QAAQR,EAAI,MAAM,EAAE;AAAA,cAC5C,CAAC,CAAA,EAAGhB,CAAK,MAAMA,EAAM,UAAUgB,EAAI;AAAA,YACrC;AACA,gBAAIQ,GAAY;AAEd,cAAAD,KAAO,IAAIP,EAAI,cAAc,KAAKQ,EAAW,CAAC,CAAC;AAC/C;AAAA,YACF;AAAA,UACF;AAGA,cAAIvB,IAAQ,KAAK,gBAAgBe,EAAI,GAAG;AACxC,UAAIf,EAAM,SAAS,GAAG,KAAK,CAAC,KAAK,QAAQA,CAAK,IAC5CsB,KAAO,IAAIP,EAAI,cAAc,KAAKf,CAAK,OAEvCsB,KAAO,IAAIP,EAAI,cAAc,IAAIf,CAAK;AAAA,QAE1C;AAAA,MACF;AAEA,aAAOsB,EAAI,MAAM,GAAG,EAAE;AAAA,IACxB;AAAA,IACA,eAAeE,GAAW;AAExB,YAAMC,IAAQD,EAAU,MAAM,GAAG;AACjC,UAAIC,EAAM,SAAS,EAAG,QAAO,EAAE,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAA,EAAC;AACjE,UAAIA,EAAM,WAAW;AACnB,eAAO,EAAE,QAAQA,EAAM,CAAC,GAAG,SAASA,EAAM,CAAC,GAAG,QAAQ,CAAA,EAAC;AAGzD,UAAIA,EAAM,CAAC,MAAM,OAAQ,QAAO,EAAE,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAA,EAAC;AAEpE,YAAMT,IAASS,EAAM,CAAC,GAChBP,IAAUO,EAAM,CAAC;AACvB,UAAIC,IAAS,CAAA;AAEb,YAAMC,IAAeH,EAAU,MAAM,QAAQ,EAAE,CAAC;AAChD,UAAII,IAAa,CAAA,GACbC,IAAe,GACfC,IAAU;AAEd,eAASC,KAAQJ;AACf,QAAII,MAAS,OACXF,KACAC,KAAWC,KACFA,MAAS,OAClBF,KACAC,KAAWC,KACFA,MAAS,OAAOF,MAAiB,KAC1CD,EAAW,KAAKE,EAAQ,KAAI,CAAE,GAC9BA,IAAU,MAEVA,KAAWC;AAGf,MAAID,EAAQ,KAAI,MAAO,MACrBF,EAAW,KAAKE,EAAQ,KAAI,CAAE;AAGhC,eAASE,KAAQJ,GAAY;AAC3B,YAAIK,IAAaD,EAAK,QAAQ,GAAG;AACjC,YAAIC,IAAa,GAAG;AAClB,cAAIC,IAAMF,EAAK,UAAU,GAAGC,CAAU,EAAE,KAAI,GACxCjC,IAAQgC,EAAK,UAAUC,IAAa,CAAC,EAAE,KAAI;AAC/C,UAAAP,EAAOQ,CAAG,IAAIlC;AAAA,QAChB;AAAA,MACF;AACA,aAAO,EAAE,QAAQgB,GAAQ,SAASE,GAAS,QAAQQ,EAAK;AAAA,IAC1D;AAAA,IACA,mBAAmB;AACjB,YAAMS,IAAS,KAAK,eAAe,KAAK,SAAS;AACjD,MAAIA,EAAO,UAAUA,EAAO,YAC1B,KAAK,aAAaA,EAAO,QACzB,KAAK,cAAcA,EAAO,SAC1B,KAAK,mBAAmBA,EAAO,QAC/B,KAAK,gBAAe;AAAA,IAExB;AAAA,IACA,+BAA+B;AAE7B,MACE,CAAC,KAAK,oBACN,OAAO,KAAK,KAAK,gBAAgB,EAAE,WAAW,KAKhD,KAAK,UAAU,MAAM;AAEnB,mBAAW,MAAM;AACf,eAAK,aAAa,QAAQ,CAACpB,MAAQ;AACjC,gBAAI,KAAK,iBAAiB,eAAeA,EAAI,cAAc,GAAG;AAC5D,oBAAMf,IAAQ,KAAK,iBAAiBe,EAAI,cAAc;AAEtD,kBAAIA,EAAI,UAAU,OAAOf,KAAU,UAAU;AAE3C,sBAAMoC,IAAW,OAAO,KAAKrB,EAAI,MAAM,EAAE;AAAA,kBACvC,CAACmB,MACCA,MAAQlC,KAASkC,EAAI,YAAW,MAAOlC,EAAM,YAAW;AAAA,gBAC5D;AACA,gBAAIoC,IACFrB,EAAI,MAAMA,EAAI,OAAOqB,CAAQ,EAAE,QAE/BrB,EAAI,MAAMf;AAAA,cAEd,MAAO,CAAIe,EAAI,SAAS,YAAY,OAAOf,KAAU,WAEnDe,EAAI,MACFf,EAAM,WAAW,GAAG,KAAKA,EAAM,WAAW,GAAG,IACzCA,IACA,IAAIA,CAAK,MAEfe,EAAI,MAAMf;AAAA,YAEd;AAAA,UACF,CAAC;AAAA,QACH,GAAG,GAAG;AAAA,MACR,CAAC;AAAA,IACH;AAAA;AAEJ,GA7aSI,IAAA,EAAA,OAAA,EAAA,SAAA,OAAA,EAAqB;;;cAD5BK,EA4ES4B,GAAA,MAAA;AAAA,eA3EP,MAWM;AAAA,MAXNC,EAWM,OAXNlC,GAWM;AAAA,QAVJC,EASEkC,GAAA;AAAA,UARC,uBAAqBC,EAAA;AAAA,UACrB,uBAAqBA,EAAA;AAAA,UACrB,UAAUtC,EAAA;AAAA,UACV,eAAaA,EAAA,oBAAiB,SAAA;AAAA,UAC9B,qBAAmBA,EAAA;AAAA,UACpB,MAAK;AAAA,UACJ,SAAMuC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEnC,EAAA,eAAemC,CAAM;AAAA,UAC7B,WAAQD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEnC,EAAA,SAASmC,CAAM;AAAA;;MAIhBF,EAAA,aAAa,WAAM,UAAjC/B,EAyCS4B,GAAA,EAAA,KAAA,EAAA,GAAA;AAAA,mBAxCP,MAce;AAAA,UAdfhC,EAcesC,GAAA,EAdD,OAAM,oDAAmD,GAAA;AAAA,uBAAC,MAEtE;AAAA,gCAFsE,gBAEtE,EAAA;AAAA,cAAAtC,EAAYuC,CAAA;AAAA,cACZvC,EAUEG,GAAA;AAAA,4BATSgC,EAAA;AAAA,8DAAAA,EAAA,SAAME;AAAA,gBACf,OAAM;AAAA,gBACN,sBAAmB;AAAA,gBACnB,WAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,eAAA;AAAA,gBACA,gBAAA;AAAA,gBACA,OAAM;AAAA;;;;UAGVrC,EAwBewC,GAAA;AAAA,YAvBZ,SAASL,EAAA;AAAA,YACT,OAAOA,EAAA;AAAA,YACP,QAAQA,EAAA;AAAA,YACR,kBAAgB;AAAA,YACjB,uBAAA;AAAA,YACA,cAAA;AAAA,YACA,SAAQ;AAAA,YACP,qBAAiBjC,EAAA;AAAA;YAEP,YAAQuC,EACjB,CAWO,EAZc,MAAAC,QAAI;AAAA,cACzBC,EAWOC,EAAA,QAAA,oBAAA;AAAA,gBATJ,MAAMF;AAAA,gBACN,aAAe7C,EAAA;AAAA,iBAHlB,MAWO;AAAA,gBALLG,EAIE6C,GAAA;AAAA,kBAHS,YAAAH,EAAK;AAAA,kBAAL,uBAAA,CAAAL,MAAAK,EAAK,MAAGL;AAAA,kBAChB,QAAQK,EAAK;AAAA,kBACb,iBAAe7C,EAAA;AAAA;;;;;;;;MAO1BG,EAUS8C,GAAA;AAAA,oBAVQX,EAAA;AAAA,sDAAAA,EAAA,mBAAgBE;AAAA,QAAG,QAAM,CAAGF,EAAA,GAAGA,EAAA,CAAC;AAAA;mBAC/C,MAQS;AAAA,UARTnC,EAQS+C,GAAA,MAAA;AAAA,uBANL,MAA2C;AAAA,eAD7CjD,EAAA,EAAA,GAAAF,EAMcoD,GAAA,MAAAC,EALYd,EAAA,oBAAkB,CAAlCO,GAAMQ,YADhB9C,EAMc+C,GAAA;AAAA,gBAJX,KAAKD;AAAA,gBACL,SAAKE,EAAOV,EAAK,QAAM,CAAA,MAAA,CAAA;AAAA;2BAExB,MAAuD;AAAA,kBAAvD1C,EAAuDqD,GAAA,MAAA;AAAA,+BAApC,MAAgB;AAAA,sBAAbC,EAAAC,EAAAb,EAAK,KAAK,GAAA,CAAA;AAAA;;;;;;;;;;;;MAKtC1C,EAMEwD,GAAA;AAAA,oBALSrB,EAAA;AAAA,sDAAAA,EAAA,cAAWE;AAAA,QACnB,eAAaF,EAAA;AAAA,QACb,eAAaA,EAAA;AAAA,QACb,aAAWA,EAAA;AAAA,QACX,MAAM;AAAA;;;;;kDClBR9C,IAAU;AAAA,EACb,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA;;EAGd,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AACJ,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAIM,GAAO;AACT,aAAK,MAAM,qBAAqBA,CAAK;AAAA,MACvC;AAAA;;EAGJ,SAAS;AAAA,IACP,WAAW,WAAY;AACrB,WAAK,SAAS,KAAK;AAAA,QACjB,KAAK;AAAA,QACL,OAAO;AAAA,OACR;AAAA,IACH;AAAA,IACA,WAAW,SAAUuD,GAAO;AAC1B,WAAK,SAAS,OAAOA,GAAO,CAAC;AAAA,IAC/B;AAAA;AAEJ;EAzEc,OAAM;AAAA,EAAM,OAAM;AAAA,EAAa,OAAM;;;;cAPjDtD,EAgDM,OAAA,MAAA;AAAA,IA/CJwC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAH,EAAkD,cAA5C,yCAAqC,EAAA;AAAA,IAC3CjC,EA6CUyD,GAAA,EA7CD,SAAQ,UAAS,GAAA;AAAA,iBACxB,MA2CQ;AAAA,QA3CRxB,EA2CQ,SAAA,MAAA;AAAA,UA1CNA,EAWK,MAAA,MAAA;AAAA,4BAVHA,EAA0C,MAAA;AAAA,cAAtC,OAAM;AAAA,cAAM,OAAM;AAAA,eAAY,OAAG,EAAA;AAAA,4BACrCA,EAA4C,MAAA;AAAA,cAAxC,OAAM;AAAA,cAAM,OAAM;AAAA,eAAY,SAAK,EAAA;AAAA,YACvCA,EAOK,MAPLlC,GAOK;AAAA,cANHC,EAKE0D,GAAA;AAAA,gBAJA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOxD,EAAA;AAAA;;;WAIdJ,EAAA,EAAA,GAAAF,EA6BKoD,GAAA,MAAAC,EA7BkB/C,EAAA,UAAQ,CAAnByD,GAAKC,YAAjBhE,EA6BK,MAAA;AAAA,YA7B6B,WAAWgE,CAAC;AAAA;YAC5C3B,EASK,MAAA,MAAA;AAAA,cARHjC,EAOEG,GAAA;AAAA,gBANS,YAAAwD,EAAI;AAAA,gBAAJ,uBAAA,CAAAtB,MAAAsB,EAAI,MAAGtB;AAAA,gBAChB,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,gBAAA;AAAA,gBACC,UAAUsB,EAAI;AAAA,gBACd,oBAAkBC,CAAC;AAAA;;YAGxB3B,EASK,MAAA,MAAA;AAAA,cARHjC,EAOEG,GAAA;AAAA,gBANS,YAAAwD,EAAI;AAAA,gBAAJ,uBAAA,CAAAtB,MAAAsB,EAAI,QAAKtB;AAAA,gBAClB,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,gBAAA;AAAA,gBACC,UAAUsB,EAAI;AAAA,gBACd,sBAAoBC,CAAC;AAAA;;YAG1B3B,EAOK,MAAA,MAAA;AAAA,cANHjC,EAKE0D,GAAA;AAAA,gBAJA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACP,gCAA8BE,CAAC;AAAA,gBAC/B,SAAK,CAAAvB,MAAEnC,EAAA,UAAU0D,CAAC;AAAA;;;;;;;;;kDCpB5BvE,IAAU;AAAA;AAAA;AAAA;AAAA,EAIb,OAAO;AAAA,IACL,YAAY;AAAA;AAAA;EAEd,OAAO;AACL,WAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU,KAAK;AAAA,MACf,SAAS,CAAA;AAAA,MACT,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,UAAU,IACfwE,EAAI,IAAI,qBAAqB,EAC1B,KAAK,CAACC,MAAa;AAClB,WAAK,UAAUA,EAAS,KAAK,OAAO,CAACC,MAC5BA,EAAS,SAAS,KAAK,KAAKA,EAAS,SAAS,KAAK,CAC3D,GACD,KAAK,QAAQ,KAAK;AAAA,IACpB,CAAC,EACA,MAAM,CAACnD,MAAU;AAChB,WAAK,MAAM,SAAS;AAAA,QAClB,MAAM;AAAA,QACN,MAAM,gCAAgCA,CAAK;AAAA,QAC3C,OAAOA;AAAA,OACR;AAAA,IACH,CAAC,GACH,KAAK,WAAW,KAAK,aAAa,KAAK,aAAa,MACpD,KAAK,UAAU;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACL,SAASoD,GAAQC,GAAQ;AACvB,MAAID,MAAWC,MACTD,KAAUA,EAAO,MAAM,EAAE,MAAM,MAEjC,KAAK,MAAM,QAAQA,EAAO,UAAU,GAAGA,EAAO,SAAS,CAAC,CAAC,IAEzD,KAAK,MAAM,QAAQA,CAAM;AAAA,IAG/B;AAAA,IACA,OAAOjD,GAAK;AACV,MAAAA,KAAOA,MAAQ,KAAK,YAAY,KAAK,gBAAgBA,CAAG;AAAA,IAC1D;AAAA;EAEF,SAAS;AAAA,IACP,iBAAiB,SAAUmD,GAAG;AAC5B,WAAK,UAAU,IAEf,WAAW,MAAM;AACf,aAAK,QAAQ,KAAK,QAAQ,OAAO,CAAC,OACxB,KAAK,IAAI,YAAW,EAAG,SAASA,KAAK,IAAI,YAAW,CAAE,IAAI,EACnE,GACD,KAAK,UAAU;AAAA,MACjB,GAAG,GAAG;AAAA,IACR;AAAA;AAEJ;;;cApFEtE,EAgBM,OAAA,MAAA;AAAA,IAfJI,EAcQmE,GAAA,MAAA;AAAA,iBAbN,MAYE;AAAA,QAZFnE,EAYEoE,GAAA;AAAA,sBAXSjC,EAAA;AAAA,wDAAAA,EAAA,WAAQE;AAAA,UACjB,SAAQ;AAAA,UACR,SAAQ;AAAA,UACR,gBAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAM;AAAA,UACN,OAAM;AAAA,UACL,SAASF,EAAA;AAAA,UACT,OAAOA,EAAA;AAAA,UACA,QAAQA,EAAA;AAAA,oDAAAA,EAAA,SAAME;AAAA,UACtB,aAAU;AAAA;;;;;;;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const o=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B-k6legU.cjs"),e=require("vue"),f=require("./CustomIcon-eie3rPKh.cjs"),y={props:{allowAll:{type:Boolean,default:!1},allowAllTargets:{type:Boolean,default:!1},allowAllArrayIndex:{type:Boolean,default:!1},buttonText:{type:String,default:null},chooseItem:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},initialTargetName:{type:String,default:""},initialPacketName:{type:String,default:""},initialItemName:{type:String,default:""},selectTypes:{type:Boolean,default:!1},showLatest:{type:Boolean,default:!1},mode:{type:String,default:"tlm",validator:t=>["cmd","tlm"].includes(t)},unknown:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1},lockTarget:{type:Boolean,default:!1},lockPacket:{type:Boolean,default:!1},showQueueSelect:{type:Boolean,default:!0}},emits:["on-set","addItem"],data(){var t,a,l;return{targetNames:[],selectedTargetName:(t=this.initialTargetName)==null?void 0:t.toUpperCase(),packetNames:[],selectedPacketName:(a=this.initialPacketName)==null?void 0:a.toUpperCase(),queueNames:[{label:"None",value:null}],selectedQueueName:null,itemNames:[],selectedItemName:(l=this.initialItemName)==null?void 0:l.toUpperCase(),valueTypes:["CONVERTED","RAW"],selectedValueType:"CONVERTED",reductionModes:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],selectedArrayIndex:null,selectedReduced:"DECOM",reducedTypes:["MIN","MAX","AVG","STDDEV"],selectedReducedType:"AVG",description:"",hazardous:!1,internalDisabled:!1,packetsDisabled:!1,itemsDisabled:!1,api:null,ALL:{label:"[ ALL ]",value:"ALL",description:"ALL"},UNKNOWN:{label:"[ UNKNOWN ]",value:"UNKNOWN",description:"UNKNOWN"}}},computed:{actualButtonText:function(){return this.selectedPacketName==="ALL"?"Add Target":this.selectedItemName==="ALL"?"Add Packet":this.buttonText},autocompleteDisabled:function(){return this.disabled||this.internalDisabled},buttonDisabled:function(){return this.disabled||this.internalDisabled||this.selectedTargetName===null||this.selectedPacketName===null||this.selectedItemNameWIndex===null},colSize:function(){return this.vertical?12:!1},selectedItemNameWIndex:function(){return this.itemIsArray&&this.selectedArrayIndex!==null&&this.selectedArrayIndex!==this.ALL.label?`${this.selectedItemName}[${this.selectedArrayIndex}]`:this.selectedItemName},includeLatestPacketInDropdown:function(){return this.showLatest&&this.mode==="tlm"},arrayIndexes:function(){let t=this.itemNames.findIndex(l=>l.value===this.selectedItemName),a=[...Array(this.itemNames[t].array).keys()];return(this.allowAll||this.allowAllArrayIndex)&&a.unshift(this.ALL.label),a},itemIsArray:function(){let t=this.itemNames.findIndex(a=>a.value===this.selectedItemName);return!(t===-1||isNaN(this.itemNames[t].array))}},watch:{initialTargetName:function(t){t&&(this.selectedTargetName=t.toUpperCase())},initialPacketName:function(t){t&&(this.selectedPacketName=t.toUpperCase())},initialItemName:function(t){t&&(this.selectedItemName=t.toUpperCase())},mode:function(t,a){this.selectedPacketName=null,this.selectedItemName=null,this.targetNameChanged(this.selectedTargetName)},chooseItem:function(t,a){t?this.updateItems():this.itemNames=[]},itemIsArray:function(t){t?this.selectedArrayIndex||(this.selectedArrayIndex=0):this.selectedArrayIndex=null}},created(){this.internalDisabled=!0,this.api=new o.bi,this.mode==="cmd"&&o.di.get("/openc3-api/queues").then(t=>{this.queueNames=[{label:"None",value:null}],t.data&&Array.isArray(t.data)&&t.data.forEach(a=>{this.queueNames.push({label:a.name,value:a.name})})}).catch(t=>{console.error("Error fetching queues:",t)}),this.api.get_target_names().then(t=>{this.targetNames=t.flatMap(a=>a=="UNKNOWN"?[]:{label:a,value:a}),this.allowAllTargets&&this.targetNames.unshift(this.ALL),this.selectedTargetName?this.updatePackets():(this.selectedTargetName=this.targetNames[0].value,this.targetNameChanged(this.selectedTargetName)),this.unknown&&this.targetNames.push(this.UNKNOWN)})},methods:{updatePackets:function(){if(this.selectedTargetName==="UNKNOWN"){this.packetNames=[this.UNKNOWN],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.UNKNOWN.value),this.description="UNKNOWN";return}if(this.selectedTargetName==="ALL"){this.packetNames=[this.ALL],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.ALL.value),this.description="ALL";return}this.internalDisabled=!0;const t=this.mode==="tlm"?"get_all_tlm_names":"get_all_cmd_names";this.api[t](this.selectedTargetName,this.hidden).then(a=>{this.packetNames=a.map(c=>({label:c,value:c})),this.allowAll&&this.packetNames.unshift(this.ALL),this.selectedPacketName||(this.packetNames.length===0?this.selectedPacketName=null:this.selectedPacketName=this.packetNames[0].value),this.updatePacketDetails(this.selectedPacketName),this.packetNames.find(c=>c.value===this.selectedPacketName)&&this.chooseItem&&this.updateItems(),this.internalDisabled=!1})},updateItems:function(){if(this.selectedPacketName!=="ALL")if(this.internalDisabled=!0,this.selectedPacketName==="LATEST")this.api.get_all_tlm_item_names(this.selectedTargetName).then(t=>{this.itemNames=t.map(a=>({label:a,value:a,description:`LATEST ${a}`})),this.finishUpdateItems()});else{const t=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[t](this.selectedTargetName,this.selectedPacketName).then(a=>{this.itemNames=a.items.map(l=>{let c=l.name;return l.data_type=="DERIVED"&&(c+=" *"),{label:c,value:l.name,description:l.description,array:l.array_size/l.bit_size}}),this.itemNames.sort((l,c)=>l.label>c.label?1:-1),this.finishUpdateItems()})}},finishUpdateItems:function(){this.allowAll&&this.itemNames.unshift(this.ALL),this.selectedItemName||(this.selectedItemName=this.itemNames[0].value),this.description=this.itemNames[0].description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName}),this.internalDisabled=!1},targetNameChanged:function(t){this.selectedTargetName=t,this.selectedPacketName="",this.selectedItemName="",t!==null&&this.updatePackets()},packetNameChanged:function(t){this.selectedItemName="",t!==null&&this.updatePacketDetails(t)},queueNameChanged:function(t){this.selectedQueueName=t,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},updatePacketDetails:function(t){if(t==="ALL")this.itemsDisabled=!0,this.internalDisabled=!1;else if(t==="LATEST")this.itemsDisabled=!1,this.selectedPacketName="LATEST";else{this.itemsDisabled=!1;const a=this.packetNames.find(l=>t===l.value);if(a){this.selectedPacketName=a.value;const l=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[l](this.selectedTargetName,this.selectedPacketName).then(c=>{this.description=c.description,this.hazardous=c.hazardous})}}this.chooseItem?this.updateItems():this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},itemNameChanged:function(t){const a=this.itemNames.find(l=>t===l.value);a&&(this.selectedItemName=a.value,this.description=a.description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName}))},indexChanged:function(t){this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType,queueName:this.selectedQueueName})},buttonPressed:function(){this.selectedPacketName==="ALL"?this.allTargetPacketItems():this.selectedItemName==="ALL"?this.allPacketItems():this.chooseItem?this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}):this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},allTargetPacketItems:function(){this.packetNames.forEach(t=>{if(t===this.ALL)return;const a=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[a](this.selectedTargetName,t.value).then(l=>{l.items.forEach(c=>{this.$emit("addItem",{targetName:this.selectedTargetName,packetName:t.value,itemName:c.name,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})})})},allPacketItems:function(){this.itemNames.forEach(t=>{t!==this.ALL&&this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:t.value,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})}}},T={class:"pt-4 pb-4"};function k(t,a,l,c,s,i){const u=e.resolveComponent("v-autocomplete"),m=e.resolveComponent("v-col"),r=e.resolveComponent("v-list-item"),h=e.resolveComponent("v-divider"),N=e.resolveComponent("v-combobox"),p=e.resolveComponent("v-btn"),n=e.resolveComponent("v-row");return e.openBlock(),e.createElementBlock("div",T,[e.createVNode(n,{class:"align-center","no-gutters":!l.vertical},{default:e.withCtx(()=>[e.createVNode(m,{cols:i.colSize,class:"tpic-select pr-4","data-test":"select-target"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedTargetName,"onUpdate:modelValue":[a[0]||(a[0]=d=>s.selectedTargetName=d),i.targetNameChanged],label:"Select Target","hide-details":"",density:"compact",variant:"outlined",disabled:i.autocompleteDisabled||l.lockTarget,items:s.targetNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),e.createVNode(m,{cols:i.colSize,class:"tpic-select pr-4","data-test":"select-packet"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedPacketName,"onUpdate:modelValue":[a[2]||(a[2]=d=>s.selectedPacketName=d),i.packetNameChanged],label:"Select Packet","hide-details":"",density:"compact",variant:"outlined",disabled:s.packetsDisabled||i.autocompleteDisabled||l.lockPacket,items:s.packetNames,"item-title":"label","item-value":"value"},e.createSlots({_:2},[i.includeLatestPacketInDropdown?{name:"prepend-item",fn:e.withCtx(()=>[e.createVNode(r,{title:"LATEST",onClick:a[1]||(a[1]=d=>i.packetNameChanged("LATEST"))}),e.createVNode(h)]),key:"0"}:void 0]),1032,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),l.mode==="cmd"&&l.showQueueSelect?(e.openBlock(),e.createBlock(m,{key:0,cols:i.colSize,class:"tpic-select pr-4","data-test":"select-queue"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedQueueName,"onUpdate:modelValue":[a[3]||(a[3]=d=>s.selectedQueueName=d),i.queueNameChanged],label:"Select Queue","hide-details":"",density:"compact",variant:"outlined",disabled:i.autocompleteDisabled||s.queueNames.length===1,items:s.queueNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"])):e.createCommentVNode("",!0),l.chooseItem?(e.openBlock(),e.createBlock(m,{key:1,cols:i.colSize,class:"tpic-select pr-4","data-test":"select-item"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedItemName,"onUpdate:modelValue":[a[4]||(a[4]=d=>s.selectedItemName=d),a[5]||(a[5]=d=>i.itemNameChanged(d))],label:"Select Item","hide-details":"",density:"compact",variant:"outlined",disabled:s.itemsDisabled||i.autocompleteDisabled,items:s.itemNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"])):e.createCommentVNode("",!0),l.chooseItem&&i.itemIsArray?(e.openBlock(),e.createBlock(m,{key:2,cols:"1",class:"tpic-select pr-4","data-test":"array-index",style:{"min-width":"105px"}},{default:e.withCtx(()=>[e.createVNode(N,{modelValue:s.selectedArrayIndex,"onUpdate:modelValue":[a[6]||(a[6]=d=>s.selectedArrayIndex=d),a[7]||(a[7]=d=>i.indexChanged(d))],label:"Index","hide-details":"",density:"compact",variant:"outlined",disabled:s.itemsDisabled||i.autocompleteDisabled,items:i.arrayIndexes,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1})):e.createCommentVNode("",!0),l.buttonText?(e.openBlock(),e.createBlock(m,{key:3,cols:i.colSize,style:{"max-width":"140px"}},{default:e.withCtx(()=>[e.createVNode(p,{disabled:i.buttonDisabled,color:"primary","data-test":"select-send",onClick:i.buttonPressed},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.actualButtonText),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["cols"])):e.createCommentVNode("",!0)]),_:1},8,["no-gutters"]),l.selectTypes?(e.openBlock(),e.createBlock(n,{key:0,class:"pt-6 align-center","no-gutters":""},{default:e.withCtx(()=>[e.createVNode(m,{cols:i.colSize,class:"tpic-select pr-4","data-test":"data-type"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedValueType,"onUpdate:modelValue":a[8]||(a[8]=d=>s.selectedValueType=d),label:"Value Type","hide-details":"",density:"compact",variant:"outlined",items:s.valueTypes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(m,{cols:i.colSize,class:"tpic-select pr-4","data-test":"reduced"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedReduced,"onUpdate:modelValue":a[9]||(a[9]=d=>s.selectedReduced=d),label:"Reduced","hide-details":"",density:"compact",variant:"outlined",items:s.reductionModes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(m,{cols:i.colSize,class:"tpic-select pr-4","data-test":"reduced-type"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.selectedReducedType,"onUpdate:modelValue":a[10]||(a[10]=d=>s.selectedReducedType=d),label:"Reduced Type","hide-details":"",density:"compact",variant:"outlined",disabled:s.selectedReduced==="DECOM",items:s.reducedTypes},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"]),e.createVNode(m,{cols:i.colSize,style:{"max-width":"140px"}},null,8,["cols"])]),_:1})):e.createCommentVNode("",!0),e.createVNode(n,{"no-gutters":"",class:"pt-3 px-3 align-center"},{default:e.withCtx(()=>[e.createVNode(m,{cols:i.colSize,class:e.normalizeClass({"openc3-yellow":s.hazardous})},{default:e.withCtx(()=>[e.createTextVNode(" Description: "+e.toDisplayString(s.description)+" ",1),s.hazardous?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" (HAZARDOUS) ")],64)):e.createCommentVNode("",!0)]),_:1},8,["cols","class"])]),_:1})])}const g=f._export_sfc(y,[["render",k],["__scopeId","data-v-58e9e0c1"]]);exports.TargetPacketItemChooser=g;
|
|
2
|
-
//# sourceMappingURL=TargetPacketItemChooser-DezS0jS3.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TargetPacketItemChooser-DezS0jS3.cjs","sources":["../src/components/TargetPacketItemChooser.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n\n# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row class=\"align-center\" :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || lockTarget\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled || lockPacket\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" #prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"mode === 'cmd' && showQueueSelect\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-queue\"\n >\n <v-autocomplete\n v-model=\"selectedQueueName\"\n label=\"Select Queue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || queueNames.length === 1\"\n :items=\"queueNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"queueNameChanged\"\n />\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6 align-center\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pt-3 px-3 align-center\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n lockTarget: {\n type: Boolean,\n default: false,\n },\n lockPacket: {\n type: Boolean,\n default: false,\n },\n showQueueSelect: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n queueNames: [\n { label: 'None', value: null },\n ],\n selectedQueueName: null,\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n\n // Fetch queues if in command mode\n if (this.mode === 'cmd') {\n Api.get('/openc3-api/queues').then((response) => {\n this.queueNames = [{ label: 'None', value: null }]\n if (response.data && Array.isArray(response.data)) {\n response.data.forEach((queue) => {\n this.queueNames.push({ label: queue.name, value: queue.name })\n })\n }\n }).catch((error) => {\n console.error('Error fetching queues:', error)\n // Keep default \"None\" option even if fetch fails\n })\n }\n\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\n }\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n queueNameChanged: function (value) {\n this.selectedQueueName = value\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n queueName: this.selectedQueueName,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 400px;\n}\n.v-autocomplete .v-select__selections {\n word-break: break-all;\n}\n</style>\n"],"names":["_sfc_main","propValue","_a","_b","_c","i","item","indexes","val","newVal","oldVal","OpenC3Api","Api","response","queue","error","result","target","cmd","names","name","packet","items","label","a","b","value","packetName","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_v_row","$props","_component_v_col","$options","_component_v_autocomplete","$data","$event","_component_v_list_item","_component_v_divider","_createBlock","_cache","_component_v_combobox","_component_v_btn","_toDisplayString","_Fragment"],"mappings":"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"}
|