@openc3/vue-common 7.0.0 → 7.0.1
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-BsAUsmBz.cjs → ArrayWidget-BHjh3qLF.cjs} +2 -2
- package/dist/{ArrayWidget-BsAUsmBz.cjs.map → ArrayWidget-BHjh3qLF.cjs.map} +1 -1
- package/dist/{ArrayWidget-D2UrA5Db.js → ArrayWidget-Dh6zDiC7.js} +6 -6
- package/dist/{ArrayWidget-D2UrA5Db.js.map → ArrayWidget-Dh6zDiC7.js.map} +1 -1
- package/dist/{ArrayplotWidget-ChHMy5_L.cjs → ArrayplotWidget-BHD-TGQO.cjs} +2 -2
- package/dist/{ArrayplotWidget-ChHMy5_L.cjs.map → ArrayplotWidget-BHD-TGQO.cjs.map} +1 -1
- package/dist/{ArrayplotWidget-CDNRxI2F.js → ArrayplotWidget-CSc_TqNm.js} +6 -6
- package/dist/{ArrayplotWidget-CDNRxI2F.js.map → ArrayplotWidget-CSc_TqNm.js.map} +1 -1
- package/dist/{BarColumn-nSFR2LZF.js → BarColumn-DmjMnw5l.js} +3 -3
- package/dist/{BarColumn-nSFR2LZF.js.map → BarColumn-DmjMnw5l.js.map} +1 -1
- package/dist/{BarColumn-e-sSkSvE.cjs → BarColumn-Ym4P8YHC.cjs} +2 -2
- package/dist/{BarColumn-e-sSkSvE.cjs.map → BarColumn-Ym4P8YHC.cjs.map} +1 -1
- package/dist/{BlockWidget-C-WB0Q2m.js → BlockWidget-BdR_HCVc.js} +6 -6
- package/dist/{BlockWidget-C-WB0Q2m.js.map → BlockWidget-BdR_HCVc.js.map} +1 -1
- package/dist/{BlockWidget-DJpyQiec.cjs → BlockWidget-Bi1PfS1k.cjs} +2 -2
- package/dist/{BlockWidget-DJpyQiec.cjs.map → BlockWidget-Bi1PfS1k.cjs.map} +1 -1
- package/dist/{ButtonWidget-rkOE5b8G.cjs → ButtonWidget-70hNWuEy.cjs} +2 -2
- package/dist/{ButtonWidget-rkOE5b8G.cjs.map → ButtonWidget-70hNWuEy.cjs.map} +1 -1
- package/dist/{ButtonWidget-rS7sVb7m.js → ButtonWidget-DZ4VCNWU.js} +6 -6
- package/dist/{ButtonWidget-rS7sVb7m.js.map → ButtonWidget-DZ4VCNWU.js.map} +1 -1
- package/dist/{CanvasWidget-Dv7_QUJY.cjs → CanvasWidget-DTEx-DpZ.cjs} +2 -2
- package/dist/{CanvasWidget-Dv7_QUJY.cjs.map → CanvasWidget-DTEx-DpZ.cjs.map} +1 -1
- package/dist/{CanvasWidget-DuWolVCW.js → CanvasWidget-DuXOo3jG.js} +4 -4
- package/dist/{CanvasWidget-DuWolVCW.js.map → CanvasWidget-DuXOo3jG.js.map} +1 -1
- package/dist/{CanvasdotWidget-B42YizA1.js → CanvasdotWidget-WoLpxI1u.js} +5 -5
- package/dist/{CanvasdotWidget-B42YizA1.js.map → CanvasdotWidget-WoLpxI1u.js.map} +1 -1
- package/dist/{CanvasdotWidget-E1OgFBVZ.cjs → CanvasdotWidget-bbOquK8B.cjs} +2 -2
- package/dist/{CanvasdotWidget-E1OgFBVZ.cjs.map → CanvasdotWidget-bbOquK8B.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-ysw78z4C.cjs → CanvasimageWidget-D2EqsK7w.cjs} +2 -2
- package/dist/{CanvasimageWidget-ysw78z4C.cjs.map → CanvasimageWidget-D2EqsK7w.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-DMHdDTSs.js → CanvasimageWidget-tWpK5rsv.js} +8 -8
- package/dist/{CanvasimageWidget-DMHdDTSs.js.map → CanvasimageWidget-tWpK5rsv.js.map} +1 -1
- package/dist/{CanvasimagevalueWidget-ns-5S1HA.js → CanvasimagevalueWidget-BVzJYz3l.js} +9 -9
- package/dist/{CanvasimagevalueWidget-ns-5S1HA.js.map → CanvasimagevalueWidget-BVzJYz3l.js.map} +1 -1
- package/dist/{CanvasimagevalueWidget-Bc-VYXe7.cjs → CanvasimagevalueWidget-By_DiQ75.cjs} +2 -2
- package/dist/{CanvasimagevalueWidget-Bc-VYXe7.cjs.map → CanvasimagevalueWidget-By_DiQ75.cjs.map} +1 -1
- package/dist/{CanvaslabelWidget-DElES3gU.js → CanvaslabelWidget-CDFf8Vll.js} +5 -5
- package/dist/{CanvaslabelWidget-DElES3gU.js.map → CanvaslabelWidget-CDFf8Vll.js.map} +1 -1
- package/dist/{CanvaslabelWidget-6h59qJY8.cjs → CanvaslabelWidget-DiPxyXoX.cjs} +2 -2
- package/dist/{CanvaslabelWidget-6h59qJY8.cjs.map → CanvaslabelWidget-DiPxyXoX.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-BLIgF8xi.cjs → CanvaslabelvalueWidget-Cw5CCQTi.cjs} +2 -2
- package/dist/{CanvaslabelvalueWidget-BLIgF8xi.cjs.map → CanvaslabelvalueWidget-Cw5CCQTi.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-B2B5KlUm.js → CanvaslabelvalueWidget-DzJKD6qs.js} +5 -5
- package/dist/{CanvaslabelvalueWidget-B2B5KlUm.js.map → CanvaslabelvalueWidget-DzJKD6qs.js.map} +1 -1
- package/dist/{CanvaslineWidget-CxZGCwVF.cjs → CanvaslineWidget-BECtKTPL.cjs} +2 -2
- package/dist/{CanvaslineWidget-CxZGCwVF.cjs.map → CanvaslineWidget-BECtKTPL.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-DaHxgGyM.js → CanvaslineWidget-BttTXCZq.js} +5 -5
- package/dist/{CanvaslineWidget-DaHxgGyM.js.map → CanvaslineWidget-BttTXCZq.js.map} +1 -1
- package/dist/{CanvaslinevalueWidget-BljeuN4S.cjs → CanvaslinevalueWidget-5duJ98qu.cjs} +2 -2
- package/dist/{CanvaslinevalueWidget-BljeuN4S.cjs.map → CanvaslinevalueWidget-5duJ98qu.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-CrtDsSOP.js → CanvaslinevalueWidget-i6G0JfnZ.js} +5 -5
- package/dist/{CanvaslinevalueWidget-CrtDsSOP.js.map → CanvaslinevalueWidget-i6G0JfnZ.js.map} +1 -1
- package/dist/{CheckbuttonWidget-BK4SgIu7.js → CheckbuttonWidget-18jtf7sh.js} +5 -5
- package/dist/{CheckbuttonWidget-BK4SgIu7.js.map → CheckbuttonWidget-18jtf7sh.js.map} +1 -1
- package/dist/{CheckbuttonWidget-By46VH2e.cjs → CheckbuttonWidget-CTMObPhX.cjs} +2 -2
- package/dist/{CheckbuttonWidget-By46VH2e.cjs.map → CheckbuttonWidget-CTMObPhX.cjs.map} +1 -1
- package/dist/{ClassificationBanners-DGl2HUKd.js → ClassificationBanners-BmnQODLn.js} +2 -2
- package/dist/{ClassificationBanners-DGl2HUKd.js.map → ClassificationBanners-BmnQODLn.js.map} +1 -1
- package/dist/{ClassificationBanners-CHQX3t7t.cjs → ClassificationBanners-DjGCuH-4.cjs} +2 -2
- package/dist/{ClassificationBanners-CHQX3t7t.cjs.map → ClassificationBanners-DjGCuH-4.cjs.map} +1 -1
- package/dist/{ComboboxWidget-CciRWuKq.js → ComboboxWidget-BjaVFbD4.js} +5 -5
- package/dist/{ComboboxWidget-CciRWuKq.js.map → ComboboxWidget-BjaVFbD4.js.map} +1 -1
- package/dist/{ComboboxWidget-CHFTOmhZ.cjs → ComboboxWidget-Cc0Acq9q.cjs} +2 -2
- package/dist/{ComboboxWidget-CHFTOmhZ.cjs.map → ComboboxWidget-Cc0Acq9q.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-C5EZDRSZ.js → CriticalCmdDialog-CO-nvphS.js} +8 -8
- package/dist/{CriticalCmdDialog-C5EZDRSZ.js.map → CriticalCmdDialog-CO-nvphS.js.map} +1 -1
- package/dist/{CriticalCmdDialog-BWrwpTNK.cjs → CriticalCmdDialog-eytxCQto.cjs} +2 -2
- package/dist/{CriticalCmdDialog-BWrwpTNK.cjs.map → CriticalCmdDialog-eytxCQto.cjs.map} +1 -1
- package/dist/{CustomIcon-Cg3jCA_l.js → CustomIcon-DTR361si.js} +4 -4
- package/dist/{CustomIcon-Cg3jCA_l.js.map → CustomIcon-DTR361si.js.map} +1 -1
- package/dist/{DateWidget-Bb6juAYs.cjs → DateWidget-Cle8FY8Q.cjs} +2 -2
- package/dist/{DateWidget-Bb6juAYs.cjs.map → DateWidget-Cle8FY8Q.cjs.map} +1 -1
- package/dist/{DateWidget-DwgQ3Jik.js → DateWidget-DkFAFlc8.js} +5 -5
- package/dist/{DateWidget-DwgQ3Jik.js.map → DateWidget-DkFAFlc8.js.map} +1 -1
- package/dist/{DetailsDialog-D_my0nhs.cjs → DetailsDialog-BcMaTfuQ.cjs} +2 -2
- package/dist/{DetailsDialog-D_my0nhs.cjs.map → DetailsDialog-BcMaTfuQ.cjs.map} +1 -1
- package/dist/{DetailsDialog-CspQjoR5.js → DetailsDialog-sqja4Lzq.js} +5 -5
- package/dist/{DetailsDialog-CspQjoR5.js.map → DetailsDialog-sqja4Lzq.js.map} +1 -1
- package/dist/{DynamicWidget-Bym87woV.js → DynamicWidget-BuSbQVhf.js} +4 -4
- package/dist/{DynamicWidget-Bym87woV.js.map → DynamicWidget-BuSbQVhf.js.map} +1 -1
- package/dist/{EventListDialog-DL2HHNQG.js → EventListDialog-DjCQAwGl.js} +12 -12
- package/dist/{EventListDialog-DL2HHNQG.js.map → EventListDialog-DjCQAwGl.js.map} +1 -1
- package/dist/{EventListDialog-DO32zY2U.cjs → EventListDialog-EmC7YW60.cjs} +2 -2
- package/dist/{EventListDialog-DO32zY2U.cjs.map → EventListDialog-EmC7YW60.cjs.map} +1 -1
- package/dist/{FilechecksumWidget-DMpuLZJ5.cjs → FilechecksumWidget-2ta-UvLp.cjs} +2 -2
- package/dist/{FilechecksumWidget-DMpuLZJ5.cjs.map → FilechecksumWidget-2ta-UvLp.cjs.map} +1 -1
- package/dist/{FilechecksumWidget-BS281Q0h.js → FilechecksumWidget-DqJ_hvN4.js} +8 -8
- package/dist/{FilechecksumWidget-BS281Q0h.js.map → FilechecksumWidget-DqJ_hvN4.js.map} +1 -1
- package/dist/{FiledisplayWidget-BoD7LuLP.cjs → FiledisplayWidget-BUKXIQir.cjs} +2 -2
- package/dist/{FiledisplayWidget-BoD7LuLP.cjs.map → FiledisplayWidget-BUKXIQir.cjs.map} +1 -1
- package/dist/{FiledisplayWidget-C9YdXDdv.js → FiledisplayWidget-CYznG_tf.js} +6 -6
- package/dist/{FiledisplayWidget-C9YdXDdv.js.map → FiledisplayWidget-CYznG_tf.js.map} +1 -1
- package/dist/{FormatvalueWidget-dfmQfrNA.js → FormatvalueWidget-BnVu4YGx.js} +6 -6
- package/dist/{FormatvalueWidget-dfmQfrNA.js.map → FormatvalueWidget-BnVu4YGx.js.map} +1 -1
- package/dist/{FormatvalueWidget-DfvTVSs-.cjs → FormatvalueWidget-BpFXnA_U.cjs} +2 -2
- package/dist/{FormatvalueWidget-DfvTVSs-.cjs.map → FormatvalueWidget-BpFXnA_U.cjs.map} +1 -1
- package/dist/{Graph-BTtGIbYG.js → Graph-CUFzx8Ti.js} +284 -280
- package/dist/Graph-CUFzx8Ti.js.map +1 -0
- package/dist/{Graph-Cy2LrwoK.cjs → Graph-qxF4224c.cjs} +2 -2
- package/dist/Graph-qxF4224c.cjs.map +1 -0
- package/dist/{GraphWidget-XjxjI3og.cjs → GraphWidget-BvCQHVxQ.cjs} +2 -2
- package/dist/{GraphWidget-XjxjI3og.cjs.map → GraphWidget-BvCQHVxQ.cjs.map} +1 -1
- package/dist/{GraphWidget-CWJ4Yb26.js → GraphWidget-DO5XbOGy.js} +2 -2
- package/dist/{GraphWidget-CWJ4Yb26.js.map → GraphWidget-DO5XbOGy.js.map} +1 -1
- package/dist/{HorizontalWidget-DFAqF95S.js → HorizontalWidget-BA9PiP3d.js} +4 -4
- package/dist/{HorizontalWidget-DFAqF95S.js.map → HorizontalWidget-BA9PiP3d.js.map} +1 -1
- package/dist/{HorizontalWidget-BeW4b13V.cjs → HorizontalWidget-BBQE-dP-.cjs} +2 -2
- package/dist/{HorizontalWidget-BeW4b13V.cjs.map → HorizontalWidget-BBQE-dP-.cjs.map} +1 -1
- package/dist/{HorizontalboxWidget-CL1xEhDj.js → HorizontalboxWidget-B-7HOqgl.js} +7 -7
- package/dist/{HorizontalboxWidget-CL1xEhDj.js.map → HorizontalboxWidget-B-7HOqgl.js.map} +1 -1
- package/dist/{HorizontalboxWidget-DdPv_6qb.cjs → HorizontalboxWidget-CX7J8RdA.cjs} +2 -2
- package/dist/{HorizontalboxWidget-DdPv_6qb.cjs.map → HorizontalboxWidget-CX7J8RdA.cjs.map} +1 -1
- package/dist/HorizontallineWidget-D-o9MGo0.js +16 -0
- package/dist/{HorizontallineWidget-DPiADCAy.js.map → HorizontallineWidget-D-o9MGo0.js.map} +1 -1
- package/dist/{HorizontallineWidget-BdWOnioI.cjs → HorizontallineWidget-odTFoB8u.cjs} +2 -2
- package/dist/{HorizontallineWidget-BdWOnioI.cjs.map → HorizontallineWidget-odTFoB8u.cjs.map} +1 -1
- package/dist/{IframeWidget-BsDu4b17.js → IframeWidget-BzOka-fX.js} +5 -5
- package/dist/{IframeWidget-BsDu4b17.js.map → IframeWidget-BzOka-fX.js.map} +1 -1
- package/dist/{IframeWidget-Z12pG6JT.cjs → IframeWidget-cTHu_Rmp.cjs} +2 -2
- package/dist/{IframeWidget-Z12pG6JT.cjs.map → IframeWidget-cTHu_Rmp.cjs.map} +1 -1
- package/dist/{ImageLoader-CZ0Wx_Ua.cjs → ImageLoader-BTEOukIw.cjs} +2 -2
- package/dist/{ImageLoader-CZ0Wx_Ua.cjs.map → ImageLoader-BTEOukIw.cjs.map} +1 -1
- package/dist/{ImageLoader-CT4rnwWn.js → ImageLoader-CstmWFM4.js} +2 -2
- package/dist/{ImageLoader-CT4rnwWn.js.map → ImageLoader-CstmWFM4.js.map} +1 -1
- package/dist/{ImageviewerWidget-BQbrz2WL.js → ImageviewerWidget-BA9uOM1q.js} +5 -5
- package/dist/{ImageviewerWidget-BQbrz2WL.js.map → ImageviewerWidget-BA9uOM1q.js.map} +1 -1
- package/dist/{ImageviewerWidget-CtJzQn0e.cjs → ImageviewerWidget-CLAFwmaB.cjs} +2 -2
- package/dist/{ImageviewerWidget-CtJzQn0e.cjs.map → ImageviewerWidget-CLAFwmaB.cjs.map} +1 -1
- package/dist/{InterfacesTab-COKNyeUu.js → InterfacesTab-C3mDLkGC.js} +9 -9
- package/dist/{InterfacesTab-COKNyeUu.js.map → InterfacesTab-C3mDLkGC.js.map} +1 -1
- package/dist/{InterfacesTab-A0g0y1n1.cjs → InterfacesTab-CM0CGFVS.cjs} +2 -2
- package/dist/{InterfacesTab-A0g0y1n1.cjs.map → InterfacesTab-CM0CGFVS.cjs.map} +1 -1
- package/dist/{LabelWidget-rH3SsItK.cjs → LabelWidget-CMmVq1mx.cjs} +2 -2
- package/dist/{LabelWidget-rH3SsItK.cjs.map → LabelWidget-CMmVq1mx.cjs.map} +1 -1
- package/dist/{LabelWidget-D5-IFUYW.js → LabelWidget-Da2howZF.js} +5 -5
- package/dist/{LabelWidget-D5-IFUYW.js.map → LabelWidget-Da2howZF.js.map} +1 -1
- package/dist/{LabelledWidget-Dt9miRtB.js → LabelledWidget-BH8y3OXT.js} +7 -7
- package/dist/{LabelledWidget-Dt9miRtB.js.map → LabelledWidget-BH8y3OXT.js.map} +1 -1
- package/dist/{LabelledWidget-Bca_qNSP.cjs → LabelledWidget-CAqH0oWs.cjs} +2 -2
- package/dist/{LabelledWidget-Bca_qNSP.cjs.map → LabelledWidget-CAqH0oWs.cjs.map} +1 -1
- package/dist/{LabelprogressbarWidget-BNFgTq4D.js → LabelprogressbarWidget-Brl24F4c.js} +7 -7
- package/dist/{LabelprogressbarWidget-BNFgTq4D.js.map → LabelprogressbarWidget-Brl24F4c.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-hyK9Vqsl.cjs → LabelprogressbarWidget-BxLGmW9T.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-hyK9Vqsl.cjs.map → LabelprogressbarWidget-BxLGmW9T.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-BxkxEVwQ.cjs → LabelsparklineWidget-BUXOpBeB.cjs} +2 -2
- package/dist/{LabelsparklineWidget-BxkxEVwQ.cjs.map → LabelsparklineWidget-BUXOpBeB.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-BByxev6X.js → LabelsparklineWidget-D22MB7-4.js} +7 -7
- package/dist/{LabelsparklineWidget-BByxev6X.js.map → LabelsparklineWidget-D22MB7-4.js.map} +1 -1
- package/dist/{LabelvalueWidget-BM6L9bVw.js → LabelvalueWidget-_1JPbK-K.js} +7 -7
- package/dist/{LabelvalueWidget-BM6L9bVw.js.map → LabelvalueWidget-_1JPbK-K.js.map} +1 -1
- package/dist/{LabelvalueWidget-DEGmbKMG.cjs → LabelvalueWidget-bYqqgIGE.cjs} +2 -2
- package/dist/{LabelvalueWidget-DEGmbKMG.cjs.map → LabelvalueWidget-bYqqgIGE.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-B7bGqqeO.cjs → LabelvaluedescWidget-B2dFZoDE.cjs} +2 -2
- package/dist/{LabelvaluedescWidget-B7bGqqeO.cjs.map → LabelvaluedescWidget-B2dFZoDE.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-DeBRjYXs.js → LabelvaluedescWidget-BgduSJJb.js} +8 -8
- package/dist/{LabelvaluedescWidget-DeBRjYXs.js.map → LabelvaluedescWidget-BgduSJJb.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-DzEc9ZZr.cjs → LabelvaluelimitsbarWidget-BGag8V6k.cjs} +2 -2
- package/dist/{LabelvaluelimitsbarWidget-DzEc9ZZr.cjs.map → LabelvaluelimitsbarWidget-BGag8V6k.cjs.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-CqV0-c3G.js → LabelvaluelimitsbarWidget-C9PlEhWo.js} +7 -7
- package/dist/{LabelvaluelimitsbarWidget-CqV0-c3G.js.map → LabelvaluelimitsbarWidget-C9PlEhWo.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-Bz0PKTIV.js → LabelvaluelimitscolumnWidget-Cay6AhoZ.js} +8 -8
- package/dist/{LabelvaluelimitscolumnWidget-Bz0PKTIV.js.map → LabelvaluelimitscolumnWidget-Cay6AhoZ.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-C0-v0q7a.cjs → LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs} +2 -2
- package/dist/{LabelvaluelimitscolumnWidget-C0-v0q7a.cjs.map → LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-CWhsb5gm.cjs → LabelvaluerangebarWidget-Dbibpimv.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-CWhsb5gm.cjs.map → LabelvaluerangebarWidget-Dbibpimv.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-DKuAJHLm.js → LabelvaluerangebarWidget-s_8IgY-C.js} +7 -7
- package/dist/{LabelvaluerangebarWidget-DKuAJHLm.js.map → LabelvaluerangebarWidget-s_8IgY-C.js.map} +1 -1
- package/dist/{Layout-LSeXBY_W.js → Layout-D7RGn0Fe.js} +2 -2
- package/dist/{Layout-LSeXBY_W.js.map → Layout-D7RGn0Fe.js.map} +1 -1
- package/dist/{Layout-QcVHlWPp.cjs → Layout-DwWEea79.cjs} +2 -2
- package/dist/{Layout-QcVHlWPp.cjs.map → Layout-DwWEea79.cjs.map} +1 -1
- package/dist/{LedWidget-CJwBssHl.cjs → LedWidget-BaiKDozd.cjs} +2 -2
- package/dist/{LedWidget-CJwBssHl.cjs.map → LedWidget-BaiKDozd.cjs.map} +1 -1
- package/dist/{LedWidget-CH4Il9R7.js → LedWidget-DgMtvsiv.js} +6 -6
- package/dist/{LedWidget-CH4Il9R7.js.map → LedWidget-DgMtvsiv.js.map} +1 -1
- package/dist/{LimitsBar-B0O6RMrG.cjs → LimitsBar-BFM38vQL.cjs} +2 -2
- package/dist/{LimitsBar-B0O6RMrG.cjs.map → LimitsBar-BFM38vQL.cjs.map} +1 -1
- package/dist/{LimitsBar-BelAQFD0.js → LimitsBar-CcOaAw0C.js} +7 -7
- package/dist/{LimitsBar-BelAQFD0.js.map → LimitsBar-CcOaAw0C.js.map} +1 -1
- package/dist/{LimitsbarWidget--AwjBbtb.cjs → LimitsbarWidget-ConP3qI5.cjs} +2 -2
- package/dist/{LimitsbarWidget--AwjBbtb.cjs.map → LimitsbarWidget-ConP3qI5.cjs.map} +1 -1
- package/dist/{LimitsbarWidget-PkPqlyxL.js → LimitsbarWidget-DpmJn1Lo.js} +7 -7
- package/dist/{LimitsbarWidget-PkPqlyxL.js.map → LimitsbarWidget-DpmJn1Lo.js.map} +1 -1
- package/dist/{LimitscolorWidget-BlA15g4A.js → LimitscolorWidget-BMXiEaDm.js} +20 -20
- package/dist/{LimitscolorWidget-BlA15g4A.js.map → LimitscolorWidget-BMXiEaDm.js.map} +1 -1
- package/dist/{LimitscolorWidget-1D2myv8a.cjs → LimitscolorWidget-veWQ4NXl.cjs} +2 -2
- package/dist/{LimitscolorWidget-1D2myv8a.cjs.map → LimitscolorWidget-veWQ4NXl.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-_QPf3cUQ.cjs → LimitscolumnWidget-CJABAor8.cjs} +2 -2
- package/dist/{LimitscolumnWidget-_QPf3cUQ.cjs.map → LimitscolumnWidget-CJABAor8.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-PT917BA0.js → LimitscolumnWidget-ufFMz6R-.js} +5 -5
- package/dist/{LimitscolumnWidget-PT917BA0.js.map → LimitscolumnWidget-ufFMz6R-.js.map} +1 -1
- package/dist/{LinegraphWidget-DfXd3959.cjs → LinegraphWidget-3E8L5CvM.cjs} +2 -2
- package/dist/{LinegraphWidget-DfXd3959.cjs.map → LinegraphWidget-3E8L5CvM.cjs.map} +1 -1
- package/dist/{LinegraphWidget-BW7kS_6G.js → LinegraphWidget-BC2wVOny.js} +7 -7
- package/dist/{LinegraphWidget-BW7kS_6G.js.map → LinegraphWidget-BC2wVOny.js.map} +1 -1
- package/dist/{MatrixbycolumnsWidget-oRYGFSEt.cjs → MatrixbycolumnsWidget-DICgiNQo.cjs} +2 -2
- package/dist/{MatrixbycolumnsWidget-oRYGFSEt.cjs.map → MatrixbycolumnsWidget-DICgiNQo.cjs.map} +1 -1
- package/dist/{MatrixbycolumnsWidget-BGNsZvjv.js → MatrixbycolumnsWidget-DfUAeBnO.js} +5 -5
- package/dist/{MatrixbycolumnsWidget-BGNsZvjv.js.map → MatrixbycolumnsWidget-DfUAeBnO.js.map} +1 -1
- package/dist/{MicroservicesTab-CiEGGavF.js → MicroservicesTab-B0SZVty3.js} +67 -62
- package/dist/MicroservicesTab-B0SZVty3.js.map +1 -0
- package/dist/MicroservicesTab-snXJDoYq.cjs +4 -0
- package/dist/MicroservicesTab-snXJDoYq.cjs.map +1 -0
- package/dist/{OpenC3TimePicker-CkaALgy9.js → OpenC3TimePicker-DpkbfbgC.js} +5 -5
- package/dist/{OpenC3TimePicker-CkaALgy9.js.map → OpenC3TimePicker-DpkbfbgC.js.map} +1 -1
- package/dist/{OpenC3TimePicker-bbdbKTv_.cjs → OpenC3TimePicker-Yl1jVi7p.cjs} +2 -2
- package/dist/{OpenC3TimePicker-bbdbKTv_.cjs.map → OpenC3TimePicker-Yl1jVi7p.cjs.map} +1 -1
- package/dist/{Openc3Screen-DoOAFAlJ.cjs → Openc3Screen-D1RLlBgQ.cjs} +4 -4
- package/dist/Openc3Screen-D1RLlBgQ.cjs.map +1 -0
- package/dist/{Openc3Screen-BnM1bNOB.js → Openc3Screen-DbUvz-3B.js} +246 -245
- package/dist/Openc3Screen-DbUvz-3B.js.map +1 -0
- package/dist/{OutputDialog-R3Xj3_yw.cjs → OutputDialog-ChPCaQAE.cjs} +2 -2
- package/dist/{OutputDialog-R3Xj3_yw.cjs.map → OutputDialog-ChPCaQAE.cjs.map} +1 -1
- package/dist/{OutputDialog-BY-TZNRl.js → OutputDialog-Ds-GdGyI.js} +5 -5
- package/dist/{OutputDialog-BY-TZNRl.js.map → OutputDialog-Ds-GdGyI.js.map} +1 -1
- package/dist/PackagesTab-BgQsbXRo.cjs +2 -0
- package/dist/PackagesTab-BgQsbXRo.cjs.map +1 -0
- package/dist/{PackagesTab-DGrqIo_Z.js → PackagesTab-CWplBp_I.js} +70 -66
- package/dist/PackagesTab-CWplBp_I.js.map +1 -0
- package/dist/{PluginsTab-BXjVe_81.js → PluginsTab-BiiL622n.js} +89 -88
- package/dist/PluginsTab-BiiL622n.js.map +1 -0
- package/dist/PluginsTab-RgIMk-F7.cjs +6 -0
- package/dist/PluginsTab-RgIMk-F7.cjs.map +1 -0
- package/dist/{ProgressbarWidget-Cy_ad8mb.js → ProgressbarWidget-D3ndYnq_.js} +5 -5
- package/dist/{ProgressbarWidget-Cy_ad8mb.js.map → ProgressbarWidget-D3ndYnq_.js.map} +1 -1
- package/dist/{ProgressbarWidget-XAy4iHgC.cjs → ProgressbarWidget-DludJVUf.cjs} +2 -2
- package/dist/{ProgressbarWidget-XAy4iHgC.cjs.map → ProgressbarWidget-DludJVUf.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-aJBIz45y.js → RadiobuttonWidget-CP0S9nWW.js} +5 -5
- package/dist/{RadiobuttonWidget-aJBIz45y.js.map → RadiobuttonWidget-CP0S9nWW.js.map} +1 -1
- package/dist/{RadiobuttonWidget-fAqkUUTb.cjs → RadiobuttonWidget-DX4h94p1.cjs} +2 -2
- package/dist/{RadiobuttonWidget-fAqkUUTb.cjs.map → RadiobuttonWidget-DX4h94p1.cjs.map} +1 -1
- package/dist/{RadiogroupWidget-DNRlJnPE.js → RadiogroupWidget-BXHfA21T.js} +4 -4
- package/dist/{RadiogroupWidget-DNRlJnPE.js.map → RadiogroupWidget-BXHfA21T.js.map} +1 -1
- package/dist/{RadiogroupWidget-BuYMyBQd.cjs → RadiogroupWidget-NqjBNUH6.cjs} +2 -2
- package/dist/{RadiogroupWidget-BuYMyBQd.cjs.map → RadiogroupWidget-NqjBNUH6.cjs.map} +1 -1
- package/dist/{RangebarWidget-h4YItqPF.js → RangebarWidget-Bv2DqkPo.js} +5 -5
- package/dist/{RangebarWidget-h4YItqPF.js.map → RangebarWidget-Bv2DqkPo.js.map} +1 -1
- package/dist/{RangebarWidget-gcukfXnM.cjs → RangebarWidget-CRq2zpvw.cjs} +2 -2
- package/dist/{RangebarWidget-gcukfXnM.cjs.map → RangebarWidget-CRq2zpvw.cjs.map} +1 -1
- package/dist/{RedisTab-BmZWA0OG.js → RedisTab-7TbOXFA_.js} +9 -9
- package/dist/{RedisTab-BmZWA0OG.js.map → RedisTab-7TbOXFA_.js.map} +1 -1
- package/dist/{RedisTab-0V8f-hs1.cjs → RedisTab-DpWPY1P0.cjs} +2 -2
- package/dist/{RedisTab-0V8f-hs1.cjs.map → RedisTab-DpWPY1P0.cjs.map} +1 -1
- package/dist/{RollupWidget-ZerASRD3.cjs → RollupWidget-B7_Q_boi.cjs} +2 -2
- package/dist/{RollupWidget-ZerASRD3.cjs.map → RollupWidget-B7_Q_boi.cjs.map} +1 -1
- package/dist/{RollupWidget-CnxDQRQ0.js → RollupWidget-o_huYU0x.js} +5 -5
- package/dist/{RollupWidget-CnxDQRQ0.js.map → RollupWidget-o_huYU0x.js.map} +1 -1
- package/dist/{RoutersTab-CY-SmZd4.cjs → RoutersTab-CAbnSGHy.cjs} +2 -2
- package/dist/{RoutersTab-CY-SmZd4.cjs.map → RoutersTab-CAbnSGHy.cjs.map} +1 -1
- package/dist/{RoutersTab-Db28gKLP.js → RoutersTab-DN17iBBi.js} +9 -9
- package/dist/{RoutersTab-Db28gKLP.js.map → RoutersTab-DN17iBBi.js.map} +1 -1
- package/dist/{ScriptChooser-CI4lAYZ1.cjs → ScriptChooser-CggwstfT.cjs} +2 -2
- package/dist/{ScriptChooser-CI4lAYZ1.cjs.map → ScriptChooser-CggwstfT.cjs.map} +1 -1
- package/dist/{ScriptChooser-Bl0wisob.js → ScriptChooser-CzzUJ1Zj.js} +6 -6
- package/dist/{ScriptChooser-Bl0wisob.js.map → ScriptChooser-CzzUJ1Zj.js.map} +1 -1
- package/dist/{ScrollwindowWidget-DFkTJ2Ue.js → ScrollwindowWidget-DdjaML6D.js} +4 -4
- package/dist/{ScrollwindowWidget-DFkTJ2Ue.js.map → ScrollwindowWidget-DdjaML6D.js.map} +1 -1
- package/dist/{ScrollwindowWidget-BJkQ5uX_.cjs → ScrollwindowWidget-kS5QjP-v.cjs} +2 -2
- package/dist/{ScrollwindowWidget-BJkQ5uX_.cjs.map → ScrollwindowWidget-kS5QjP-v.cjs.map} +1 -1
- package/dist/{SecretsTab-B8YTrfQ2.cjs → SecretsTab-Cn6-o85L.cjs} +2 -2
- package/dist/{SecretsTab-B8YTrfQ2.cjs.map → SecretsTab-Cn6-o85L.cjs.map} +1 -1
- package/dist/{SecretsTab-DTdVLi0I.js → SecretsTab-Cu3sx2OA.js} +4 -4
- package/dist/{SecretsTab-DTdVLi0I.js.map → SecretsTab-Cu3sx2OA.js.map} +1 -1
- package/dist/{SettingsTab-CnybxvVj.js → SettingsTab-B_vvSLvt.js} +6 -6
- package/dist/{SettingsTab-CnybxvVj.js.map → SettingsTab-B_vvSLvt.js.map} +1 -1
- package/dist/{SettingsTab-_SJLhuk0.cjs → SettingsTab-C6zIL2D6.cjs} +2 -2
- package/dist/{SettingsTab-_SJLhuk0.cjs.map → SettingsTab-C6zIL2D6.cjs.map} +1 -1
- package/dist/{SignalWidget-DC7-NIOj.cjs → SignalWidget-BagcB92r.cjs} +2 -2
- package/dist/{SignalWidget-DC7-NIOj.cjs.map → SignalWidget-BagcB92r.cjs.map} +1 -1
- package/dist/{SignalWidget-jYpXSIfD.js → SignalWidget-Dd54y28I.js} +5 -5
- package/dist/{SignalWidget-jYpXSIfD.js.map → SignalWidget-Dd54y28I.js.map} +1 -1
- package/dist/{SimpleTextDialog-DLdHGmmb.cjs → SimpleTextDialog-BJ50TbWh.cjs} +2 -2
- package/dist/{SimpleTextDialog-DLdHGmmb.cjs.map → SimpleTextDialog-BJ50TbWh.cjs.map} +1 -1
- package/dist/{SimpleTextDialog-Dd3BoNG-.js → SimpleTextDialog-DZv9n_kJ.js} +5 -5
- package/dist/{SimpleTextDialog-Dd3BoNG-.js.map → SimpleTextDialog-DZv9n_kJ.js.map} +1 -1
- package/dist/{SpacerWidget-BwwxG8k3.cjs → SpacerWidget-DWjBns9r.cjs} +2 -2
- package/dist/{SpacerWidget-BwwxG8k3.cjs.map → SpacerWidget-DWjBns9r.cjs.map} +1 -1
- package/dist/{SpacerWidget-CUqvml6o.js → SpacerWidget-GPFYtIG1.js} +5 -5
- package/dist/{SpacerWidget-CUqvml6o.js.map → SpacerWidget-GPFYtIG1.js.map} +1 -1
- package/dist/{SparklineWidget-CVf1TtjV.js → SparklineWidget-f11nrlLS.js} +7 -7
- package/dist/{SparklineWidget-CVf1TtjV.js.map → SparklineWidget-f11nrlLS.js.map} +1 -1
- package/dist/{SparklineWidget-05TlKC-x.cjs → SparklineWidget-xdPgolp3.cjs} +2 -2
- package/dist/{SparklineWidget-05TlKC-x.cjs.map → SparklineWidget-xdPgolp3.cjs.map} +1 -1
- package/dist/{TabbookWidget-oZre4A6Y.cjs → TabbookWidget-CUIYWHRH.cjs} +2 -2
- package/dist/{TabbookWidget-oZre4A6Y.cjs.map → TabbookWidget-CUIYWHRH.cjs.map} +1 -1
- package/dist/{TabbookWidget-CTUEpDnn.js → TabbookWidget-DeaC27yC.js} +4 -4
- package/dist/{TabbookWidget-CTUEpDnn.js.map → TabbookWidget-DeaC27yC.js.map} +1 -1
- package/dist/{TargetPacketItemChooser-CS2Vvi2U.js → TargetPacketItemChooser-BoBqvs3T.js} +4 -4
- package/dist/{TargetPacketItemChooser-CS2Vvi2U.js.map → TargetPacketItemChooser-BoBqvs3T.js.map} +1 -1
- package/dist/{TargetPacketItemChooser-BvXBVNLj.cjs → TargetPacketItemChooser-C0Z90rss.cjs} +2 -2
- package/dist/{TargetPacketItemChooser-BvXBVNLj.cjs.map → TargetPacketItemChooser-C0Z90rss.cjs.map} +1 -1
- package/dist/{TargetsTab-Bc7-iav6.cjs → TargetsTab-BMcWjrZ_.cjs} +2 -2
- package/dist/{TargetsTab-Bc7-iav6.cjs.map → TargetsTab-BMcWjrZ_.cjs.map} +1 -1
- package/dist/{TargetsTab-CGv0GwAF.js → TargetsTab-CjVaBN9O.js} +11 -11
- package/dist/{TargetsTab-CGv0GwAF.js.map → TargetsTab-CjVaBN9O.js.map} +1 -1
- package/dist/{TextBoxDialog-BRwZOtzT.js → TextBoxDialog-R6GC8pMa.js} +4 -4
- package/dist/{TextBoxDialog-BRwZOtzT.js.map → TextBoxDialog-R6GC8pMa.js.map} +1 -1
- package/dist/{TextboxWidget-qSbx4xxD.cjs → TextboxWidget-CXA9rR02.cjs} +2 -2
- package/dist/{TextboxWidget-qSbx4xxD.cjs.map → TextboxWidget-CXA9rR02.cjs.map} +1 -1
- package/dist/{TextboxWidget-B0Y1W7GP.js → TextboxWidget-tL41zWUX.js} +6 -6
- package/dist/{TextboxWidget-B0Y1W7GP.js.map → TextboxWidget-tL41zWUX.js.map} +1 -1
- package/dist/{TextfieldWidget-cCG7BQ25.cjs → TextfieldWidget-D-H2fOZG.cjs} +2 -2
- package/dist/{TextfieldWidget-cCG7BQ25.cjs.map → TextfieldWidget-D-H2fOZG.cjs.map} +1 -1
- package/dist/{TextfieldWidget-B8TAf9oU.js → TextfieldWidget-D1qj14Qi.js} +5 -5
- package/dist/{TextfieldWidget-B8TAf9oU.js.map → TextfieldWidget-D1qj14Qi.js.map} +1 -1
- package/dist/{TimeWidget-DNkhFoZO.cjs → TimeWidget-CGk8Ze_I.cjs} +2 -2
- package/dist/{TimeWidget-DNkhFoZO.cjs.map → TimeWidget-CGk8Ze_I.cjs.map} +1 -1
- package/dist/{TimeWidget-DewVXks0.js → TimeWidget-CSVGNong.js} +6 -6
- package/dist/{TimeWidget-DewVXks0.js.map → TimeWidget-CSVGNong.js.map} +1 -1
- package/dist/{TitleWidget-BAq2LGJF.js → TitleWidget-CLx-tuYT.js} +5 -5
- package/dist/{TitleWidget-BAq2LGJF.js.map → TitleWidget-CLx-tuYT.js.map} +1 -1
- package/dist/{TitleWidget-ChGb6BJW.cjs → TitleWidget-ClhWhUf3.cjs} +2 -2
- package/dist/{TitleWidget-ChGb6BJW.cjs.map → TitleWidget-ClhWhUf3.cjs.map} +1 -1
- package/dist/{ToolsTab-CB_6hFQF.cjs → ToolsTab-DTHap-Nq.cjs} +2 -2
- package/dist/{ToolsTab-CB_6hFQF.cjs.map → ToolsTab-DTHap-Nq.cjs.map} +1 -1
- package/dist/{ToolsTab-USmbUvDq.js → ToolsTab-lBB_KhmA.js} +10 -10
- package/dist/{ToolsTab-USmbUvDq.js.map → ToolsTab-lBB_KhmA.js.map} +1 -1
- package/dist/{TopBar-B4RDkLs-.js → TopBar-C810rP_B.js} +4 -4
- package/dist/{TopBar-B4RDkLs-.js.map → TopBar-C810rP_B.js.map} +1 -1
- package/dist/{TopBar-DzL3L4ih.cjs → TopBar-Ctzx7o2k.cjs} +2 -2
- package/dist/{TopBar-DzL3L4ih.cjs.map → TopBar-Ctzx7o2k.cjs.map} +1 -1
- package/dist/{TsdbTab-0aYlysh5.js → TsdbTab-7F4mRKDo.js} +6 -6
- package/dist/{TsdbTab-0aYlysh5.js.map → TsdbTab-7F4mRKDo.js.map} +1 -1
- package/dist/{TsdbTab-H64XGfOO.cjs → TsdbTab-DVF6n9mq.cjs} +2 -2
- package/dist/{TsdbTab-H64XGfOO.cjs.map → TsdbTab-DVF6n9mq.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-DTmnp8xy.js → UpgradeToEnterpriseDialog-D_S574Zb.js} +6 -6
- package/dist/{UpgradeToEnterpriseDialog-DTmnp8xy.js.map → UpgradeToEnterpriseDialog-D_S574Zb.js.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-BBRXrLrL.cjs → UpgradeToEnterpriseDialog-XJb6gVCY.cjs} +2 -2
- package/dist/{UpgradeToEnterpriseDialog-BBRXrLrL.cjs.map → UpgradeToEnterpriseDialog-XJb6gVCY.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js} +11973 -11975
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs +1485 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs.map +1 -0
- package/dist/{VWidget-0KwtSssI.js → VWidget-CxnaMF0w.js} +3 -3
- package/dist/{VWidget-0KwtSssI.js.map → VWidget-CxnaMF0w.js.map} +1 -1
- package/dist/{VWidget-SWmlQP30.cjs → VWidget-dEHSEvZx.cjs} +2 -2
- package/dist/{VWidget-SWmlQP30.cjs.map → VWidget-dEHSEvZx.cjs.map} +1 -1
- package/dist/{ValueWidget-BGNqaaRs.js → ValueWidget-BYgpXfDo.js} +6 -6
- package/dist/{ValueWidget-BGNqaaRs.js.map → ValueWidget-BYgpXfDo.js.map} +1 -1
- package/dist/{ValueWidget-BfxZq1LD.cjs → ValueWidget-Bws1qOEI.cjs} +2 -2
- package/dist/{ValueWidget-BfxZq1LD.cjs.map → ValueWidget-Bws1qOEI.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-m5fBewLy.cjs → ValuelimitsbarWidget-BoZSJvuq.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-m5fBewLy.cjs.map → ValuelimitsbarWidget-BoZSJvuq.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-B6mH4PdF.js → ValuelimitsbarWidget-Dc9-VNZ3.js} +7 -7
- package/dist/{ValuelimitsbarWidget-B6mH4PdF.js.map → ValuelimitsbarWidget-Dc9-VNZ3.js.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-DlX90_-6.js → ValuelimitscolumnWidget-b7W8K3mR.js} +7 -7
- package/dist/{ValuelimitscolumnWidget-DlX90_-6.js.map → ValuelimitscolumnWidget-b7W8K3mR.js.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-D_5XZhiD.cjs → ValuelimitscolumnWidget-ta9i_tiy.cjs} +2 -2
- package/dist/{ValuelimitscolumnWidget-D_5XZhiD.cjs.map → ValuelimitscolumnWidget-ta9i_tiy.cjs.map} +1 -1
- package/dist/{ValuerangebarWidget-C9xyLOJO.js → ValuerangebarWidget-DmhczZQb.js} +7 -7
- package/dist/{ValuerangebarWidget-C9xyLOJO.js.map → ValuerangebarWidget-DmhczZQb.js.map} +1 -1
- package/dist/{ValuerangebarWidget-C3XFFRhf.cjs → ValuerangebarWidget-Ips-beG6.cjs} +2 -2
- package/dist/{ValuerangebarWidget-C3XFFRhf.cjs.map → ValuerangebarWidget-Ips-beG6.cjs.map} +1 -1
- package/dist/{VerticalWidget-D-U8cue6.cjs → VerticalWidget-BVt7QPjO.cjs} +2 -2
- package/dist/{VerticalWidget-D-U8cue6.cjs.map → VerticalWidget-BVt7QPjO.cjs.map} +1 -1
- package/dist/{VerticalWidget-0UbbE2g3.js → VerticalWidget-BvsVh0Ob.js} +4 -4
- package/dist/{VerticalWidget-0UbbE2g3.js.map → VerticalWidget-BvsVh0Ob.js.map} +1 -1
- package/dist/{VerticalboxWidget-C4nkJhEd.cjs → VerticalboxWidget-CNoXT3YW.cjs} +2 -2
- package/dist/{VerticalboxWidget-C4nkJhEd.cjs.map → VerticalboxWidget-CNoXT3YW.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-efbeOAKE.js → VerticalboxWidget-ClTCDCQN.js} +7 -7
- package/dist/{VerticalboxWidget-efbeOAKE.js.map → VerticalboxWidget-ClTCDCQN.js.map} +1 -1
- package/dist/{Widget-D0drYWOT.cjs → Widget-CB_BtOFw.cjs} +2 -2
- package/dist/{Widget-D0drYWOT.cjs.map → Widget-CB_BtOFw.cjs.map} +1 -1
- package/dist/{Widget-CGePksBA.js → Widget-DRhVdCLP.js} +2 -2
- package/dist/{Widget-CGePksBA.js.map → Widget-DRhVdCLP.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +19 -19
- package/dist/icons.js +2 -2
- package/dist/{index-Cmp6oZpm.cjs → index-3sXOEKCU.cjs} +4 -4
- package/dist/{index-Cmp6oZpm.cjs.map → index-3sXOEKCU.cjs.map} +1 -1
- package/dist/{index-DqKiZufS.cjs → index-B34azWgs.cjs} +4 -4
- package/dist/index-B34azWgs.cjs.map +1 -0
- package/dist/{index-C7Uj4U87.js → index-CJcL4_a4.js} +6 -6
- package/dist/index-CJcL4_a4.js.map +1 -0
- package/dist/{index-BJrYCoCB.js → index-GYAZJDxn.js} +70 -70
- package/dist/{index-BJrYCoCB.js.map → index-GYAZJDxn.js.map} +1 -1
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +2 -2
- package/dist/plugins.js.map +1 -1
- package/dist/{settings-l1j_GGzu.cjs → settings-B0AhztTk.cjs} +2 -2
- package/dist/{settings-l1j_GGzu.cjs.map → settings-B0AhztTk.cjs.map} +1 -1
- package/dist/{settings-CjmDHCpE.js → settings-C2auUQwX.js} +2 -2
- package/dist/{settings-CjmDHCpE.js.map → settings-C2auUQwX.js.map} +1 -1
- package/dist/tools/admin.cjs +1 -1
- package/dist/tools/admin.js +1 -1
- package/dist/tools/base.cjs +1 -1
- package/dist/tools/base.js +8 -8
- 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 +2984 -3195
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +65 -65
- package/package.json +7 -7
- package/dist/Graph-BTtGIbYG.js.map +0 -1
- package/dist/Graph-Cy2LrwoK.cjs.map +0 -1
- package/dist/HorizontallineWidget-DPiADCAy.js +0 -16
- package/dist/MicroservicesTab-CiEGGavF.js.map +0 -1
- package/dist/MicroservicesTab-DvDK2hPW.cjs +0 -4
- package/dist/MicroservicesTab-DvDK2hPW.cjs.map +0 -1
- package/dist/Openc3Screen-BnM1bNOB.js.map +0 -1
- package/dist/Openc3Screen-DoOAFAlJ.cjs.map +0 -1
- package/dist/PackagesTab-2Mu7yvxU.cjs +0 -2
- package/dist/PackagesTab-2Mu7yvxU.cjs.map +0 -1
- package/dist/PackagesTab-DGrqIo_Z.js.map +0 -1
- package/dist/PluginsTab-BXjVe_81.js.map +0 -1
- package/dist/PluginsTab-R6i60Pih.cjs +0 -6
- package/dist/PluginsTab-R6i60Pih.cjs.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs +0 -1485
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs.map +0 -1
- package/dist/index-C7Uj4U87.js.map +0 -1
- package/dist/index-DqKiZufS.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptChooser-CI4lAYZ1.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\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 watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"targetPacketChooser\"\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 :parameter-hazardous=\"hasHazardousParameter\"\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 class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\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 ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\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 hazardousParameters: {},\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 computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\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 onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\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 this.hazardousParameters = {}\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 // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !parameter.hidden &&\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 if (\n Object.prototype.toString.call(val).slice(8, -1) ===\n 'Object'\n ) {\n val = this.convertToString(val)\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 parameter.minimum = parameter.minimum.toExponential(3)\n }\n if (parameter.maximum > 1e6) {\n parameter.maximum = parameter.maximum.toExponential(3)\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 emits: ['update:modelValue'],\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 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.\n# See LICENSE.md 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 v-model:search=\"search\"\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 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: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\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 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 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","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_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","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptChooser-CggwstfT.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\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 watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"targetPacketChooser\"\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 :parameter-hazardous=\"hasHazardousParameter\"\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 class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\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 ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\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 hazardousParameters: {},\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 computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\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 onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\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 this.hazardousParameters = {}\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 // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !parameter.hidden &&\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 if (\n Object.prototype.toString.call(val).slice(8, -1) ===\n 'Object'\n ) {\n val = this.convertToString(val)\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 parameter.minimum = parameter.minimum.toExponential(3)\n }\n if (parameter.maximum > 1e6) {\n parameter.maximum = parameter.maximum.toExponential(3)\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 emits: ['update:modelValue'],\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 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.\n# See LICENSE.md 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 v-model:search=\"search\"\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 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: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\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 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 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","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_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","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { y as D, F as I } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-
|
|
2
|
-
import { T as R } from "./TargetPacketItemChooser-
|
|
1
|
+
import { y as D, F as I } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js";
|
|
2
|
+
import { T as R } from "./TargetPacketItemChooser-BoBqvs3T.js";
|
|
3
3
|
import { C as E } from "./cmdUtilities--4ZqS2At.js";
|
|
4
|
-
import { resolveComponent as i,
|
|
5
|
-
import { _ as b } from "./CustomIcon-
|
|
6
|
-
import { D as H } from "./DetailsDialog-
|
|
4
|
+
import { resolveComponent as i, openBlock as c, createElementBlock as y, createBlock as v, createVNode as d, normalizeClass as z, createCommentVNode as S, withCtx as p, createElementVNode as _, createTextVNode as C, mergeProps as M, renderSlot as B, Fragment as w, renderList as N, withModifiers as F, toDisplayString as A } from "vue";
|
|
5
|
+
import { _ as b } from "./CustomIcon-DTR361si.js";
|
|
6
|
+
import { D as H } from "./DetailsDialog-sqja4Lzq.js";
|
|
7
7
|
const L = {
|
|
8
8
|
name: "CommandParameterEditor",
|
|
9
9
|
mixins: [E],
|
|
@@ -674,4 +674,4 @@ export {
|
|
|
674
674
|
re as S,
|
|
675
675
|
q as a
|
|
676
676
|
};
|
|
677
|
-
//# sourceMappingURL=ScriptChooser-
|
|
677
|
+
//# sourceMappingURL=ScriptChooser-CzzUJ1Zj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptChooser-Bl0wisob.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\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 watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"targetPacketChooser\"\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 :parameter-hazardous=\"hasHazardousParameter\"\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 class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\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 ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\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 hazardousParameters: {},\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 computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\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 onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\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 this.hazardousParameters = {}\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 // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !parameter.hidden &&\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 if (\n Object.prototype.toString.call(val).slice(8, -1) ===\n 'Object'\n ) {\n val = this.convertToString(val)\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 parameter.minimum = parameter.minimum.toExponential(3)\n }\n if (parameter.maximum > 1e6) {\n parameter.maximum = parameter.maximum.toExponential(3)\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 emits: ['update:modelValue'],\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 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.\n# See LICENSE.md 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 v-model:search=\"search\"\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 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: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\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 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 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","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_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","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptChooser-CzzUJ1Zj.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 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.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, 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 :disabled=\"disabled\"\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 :disabled=\"disabled\"\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=\"handleStateSelect\"\n />\n <v-text-field\n v-if=\"manuallyEntered\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <v-tooltip v-if=\"manuallyEntered\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\" class=\"ml-1\">mdi-information-outline</v-icon>\n </template>\n <span\n >Enter a raw value (e.g. numeric) for this parameter.<br />State names\n are not accepted here.</span\n >\n </v-tooltip>\n <v-text-field\n v-else\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 disabled: {\n type: Boolean,\n default: false,\n },\n allowManualEntry: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'hazardous-change'],\n data() {\n return {\n manuallyEntered: false,\n }\n },\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 if (this.manuallyEntered) {\n return '__manual__'\n }\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 const options = Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n if (this.allowManualEntry) {\n options.push({ label: 'MANUALLY_ENTERED', value: '__manual__' })\n }\n return options\n },\n hazardous() {\n if (!this.states) {\n return false\n }\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 watch: {\n hazardous: {\n immediate: true,\n handler(newVal) {\n this.$emit('hazardous-change', newVal)\n },\n },\n allowManualEntry(newVal) {\n if (!newVal) {\n this.manuallyEntered = false\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n handleStateSelect(value) {\n if (value === '__manual__') {\n this.manuallyEntered = true\n this.$emit('update:modelValue', '')\n } else {\n this.manuallyEntered = false\n this.$emit('update:modelValue', value)\n }\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 2026, OpenC3, Inc.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"targetPacketChooser\"\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 :parameter-hazardous=\"hasHazardousParameter\"\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 class=\"parameters-table\"\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 :disabled=\"item.disabled\"\n :allow-manual-entry=\"ignoreRangeChecks\"\n @hazardous-change=\"onParameterHazardousChange(item, $event)\"\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 ignoreRangeChecks: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['command-changed', 'build-cmd', 'command-loaded'],\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 hazardousParameters: {},\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 computed: {\n hasHazardousParameter() {\n return Object.values(this.hazardousParameters).some((v) => v === true)\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 onParameterHazardousChange(item, isHazardous) {\n this.hazardousParameters[item.parameter_name] = isHazardous\n },\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 this.hazardousParameters = {}\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 // Identify length fields that are auto-managed by variable_bit_size arrays\n // These should be shown but disabled - they will be set when the array is written\n const autoLengthFields = new Set()\n command.items.forEach((parameter) => {\n if (parameter.variable_bit_size) {\n autoLengthFields.add(\n parameter.variable_bit_size.length_item_name.toUpperCase(),\n )\n }\n })\n\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !parameter.hidden &&\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 if (\n Object.prototype.toString.call(val).slice(8, -1) ===\n 'Object'\n ) {\n val = this.convertToString(val)\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 parameter.minimum = parameter.minimum.toExponential(3)\n }\n if (parameter.maximum > 1e6) {\n parameter.maximum = parameter.maximum.toExponential(3)\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n // Disable auto-managed length fields for variable_bit_size arrays\n const isAutoLengthField = autoLengthFields.has(\n parameter.name.toUpperCase(),\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 disabled: isAutoLengthField,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n this.$emit('command-loaded', command)\n } else {\n this.$emit('command-loaded', null)\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n this.$emit('command-loaded', null)\n },\n )\n } else {\n this.$emit('command-loaded', null)\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<style scoped>\n.parameters-table {\n max-height: 50vh;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 emits: ['update:modelValue'],\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 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.\n# See LICENSE.md 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 v-model:search=\"search\"\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 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: {\n type: String,\n default: null,\n }, // modelValue is the default prop when using v-model\n },\n emits: ['file', 'error'],\n data() {\n return {\n loading: false,\n search: '',\n selected: this.modelValue,\n scripts: [],\n items: [],\n }\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 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 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","options","label","state","newVal","value","_createElementBlock","$props","_openBlock","_hoisted_1","_createVNode","_component_v_select","$options","$data","_createBlock","_component_v_text_field","_component_v_tooltip","_withCtx","props","_component_v_icon","_mergeProps","_cache","_createElementVNode","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","v","OpenC3Api","item","isHazardous","event","row","target","error","command","autoLengthFields","parameter","val","range","isAutoLengthField","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_v_card","_component_target_packet_item_chooser","$event","_component_v_card_title","_component_v_spacer","_component_v_data_table","_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","oldVal","Api","response","filename","e","_component_v_row","_component_v_autocomplete"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { L as v } from "./Layout-
|
|
2
|
-
import { resolveComponent as h,
|
|
3
|
-
import { _ as k } from "./CustomIcon-
|
|
1
|
+
import { L as v } from "./Layout-D7RGn0Fe.js";
|
|
2
|
+
import { resolveComponent as h, openBlock as r, createElementBlock as o, normalizeStyle as g, Fragment as l, renderList as d, createBlock as a, withCtx as i, createElementVNode as T, toDisplayString as b, resolveDynamicComponent as m, mergeProps as p } from "vue";
|
|
3
|
+
import { _ as k } from "./CustomIcon-DTR361si.js";
|
|
4
4
|
const N = {
|
|
5
5
|
mixins: [v],
|
|
6
6
|
created: function() {
|
|
@@ -66,4 +66,4 @@ const B = /* @__PURE__ */ k(N, [["render", z]]);
|
|
|
66
66
|
export {
|
|
67
67
|
B as default
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=ScrollwindowWidget-
|
|
69
|
+
//# sourceMappingURL=ScrollwindowWidget-DdjaML6D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollwindowWidget-
|
|
1
|
+
{"version":3,"file":"ScrollwindowWidget-DdjaML6D.js","sources":["../src/widgets/ScrollwindowWidget.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <template v-for=\"(widget, index) in widgets\" :key=\"index\">\n <v-tooltip\n v-if=\"getTooltipText(widget)\"\n :open-delay=\"getTooltipDelay(widget)\"\n location=\"top\"\n :activator-props=\"getTooltipActivatorProps(widget)\"\n >\n <template #activator=\"{ props }\">\n <component\n :is=\"widget.type\"\n v-bind=\"{ ...listeners, ...props }\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </template>\n <span>{{ getTooltipText(widget) }}</span>\n </v-tooltip>\n <component\n :is=\"widget.type\"\n v-else\n v-bind=\"listeners\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </template>\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_component_v_tooltip","_withCtx","props","_resolveDynamicComponent","_mergeProps","_createElementVNode","_toDisplayString"],"mappings":";;;AAgEA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAM;AAAA,EACf,SAAS,WAAY;AAEnB,QADA,KAAK,UAAU,KAAK,WAAW,CAAC,GAAG,MAAM,GAAG,GACxC,KAAK,WAAW,CAAC,GAAG;AACtB,UAAIC,IAAS,KAAK,WAAW,CAAC;AAC9B,WAAK,QAAQ,QAAQ,CAACC,MAAW;AAQ/B,QANcA,EAAO,SAAS;AAAA,UAC5B,CAACC,MACCA,EAAQ,CAAC,MAAM,YACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,KAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ;AAAA,QAChD,MACc,UACZD,EAAO,SAAS,KAAK,CAAC,UAAUD,CAAM,CAAC;AAAA,MAE3C,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;cAlEEG,EAwCM,OAAA;AAAA,IAxCD,KAAI;AAAA,IAAa,SAAOC,EAAA,aAAa;AAAA,IAAE,OAAM;AAAA;KAChDC,EAAA,EAAA,GAAAF,EAsCWG,GAAA,MAAAC,EAtCyBH,EAAA,SAAO,CAAzBH,GAAQO,wBAAyBA,KAAK;AAAA,MAE9CJ,EAAA,eAAeH,CAAM,UAD7BQ,EAsBYC,GAAA;AAAA;QApBT,cAAYN,EAAA,gBAAgBH,CAAM;AAAA,QACnC,UAAS;AAAA,QACR,mBAAiBG,EAAA,yBAAyBH,CAAM;AAAA;QAEtC,WAASU,EAClB,CAYE,EAboB,OAAAC,QAAK;AAAA,gBAC3BH,EAYEI,EAXKZ,EAAO,IAAI,GADlBa,EAYE,EAAA,SAAA,GAAA,GAAA,EAAA,GAVaV,EAAA,WAAS,GAAKQ,KAAK;AAAA,YAC/B,QAAQX,EAAO;AAAA,YACf,YAAYA,EAAO;AAAA,YACnB,UAAUA,EAAO;AAAA,YACjB,iBAAeG,EAAA;AAAA,YACf,oBAAkBA,EAAA;AAAA,YAClB,SAASH,EAAO;AAAA,YAChB,MAAMA,EAAO;AAAA,YACb,MAAMA,EAAO;AAAA,YACb,eAAaA,EAAO;AAAA;;mBAGzB,MAAyC;AAAA,UAAzCc,EAAyC,QAAA,MAAAC,EAAhCZ,EAAA,eAAeH,CAAM,CAAA,GAAA,CAAA;AAAA;;sDAEhCI,EAAA,GAAAI,EAaEI,EAZKZ,EAAO,IAAI,GADlBa,EAaE;AAAA;;SAVQV,EAAA,WAAS;AAAA,QAChB,QAAQH,EAAO;AAAA,QACf,YAAYA,EAAO;AAAA,QACnB,UAAUA,EAAO;AAAA,QACjB,iBAAeG,EAAA;AAAA,QACf,oBAAkBA,EAAA;AAAA,QAClB,SAASH,EAAO;AAAA,QAChB,MAAMA,EAAO;AAAA,QACb,MAAMA,EAAO;AAAA,QACb,eAAaA,EAAO;AAAA;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./Layout-
|
|
2
|
-
//# sourceMappingURL=ScrollwindowWidget-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./Layout-DwWEea79.cjs"),e=require("vue"),p=require("./CustomIcon-8F08upeg.cjs"),m={mixins:[c.Layout],created:function(){if(this.setHeight(this.parameters[0],"px",200),this.parameters[1]){let n=this.parameters[1];this.widgets.forEach(o=>{o.settings.find(r=>r[0]==="MARGIN"||r[0].startsWith("RAW")&&r[1].toUpperCase().includes("MARGIN"))===void 0&&o.settings.push(["MARGIN",n])})}}};function u(n,o,s,r,y,v){const a=e.resolveComponent("v-tooltip");return e.openBlock(),e.createElementBlock("div",{ref:"container",style:e.normalizeStyle(n.computedStyle),class:"overflow-y-auto"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.widgets,(t,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l},[n.getTooltipText(t)?(e.openBlock(),e.createBlock(a,{key:0,"open-delay":n.getTooltipDelay(t),location:"top","activator-props":n.getTooltipActivatorProps(t)},{activator:e.withCtx(({props:i})=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({ref_for:!0},{...n.listeners,...i},{target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":n.screenValues,"screen-time-zone":n.screenTimeZone,widgets:t.widgets,name:t.name,line:t.line,"line-number":t.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))]),default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(n.getTooltipText(t)),1)]),_:2},1032,["open-delay","activator-props"])):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({key:1,ref_for:!0},n.listeners,{target:t.target,parameters:t.parameters,settings:t.settings,"screen-values":n.screenValues,"screen-time-zone":n.screenTimeZone,widgets:t.widgets,name:t.name,line:t.line,"line-number":t.lineNumber}),null,16,["target","parameters","settings","screen-values","screen-time-zone","widgets","name","line","line-number"]))],64))),128))],4)}const f=p._export_sfc(m,[["render",u]]);exports.default=f;
|
|
2
|
+
//# sourceMappingURL=ScrollwindowWidget-kS5QjP-v.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollwindowWidget-
|
|
1
|
+
{"version":3,"file":"ScrollwindowWidget-kS5QjP-v.cjs","sources":["../src/widgets/ScrollwindowWidget.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\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.\n# See LICENSE.md 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 ref=\"container\" :style=\"computedStyle\" class=\"overflow-y-auto\">\n <template v-for=\"(widget, index) in widgets\" :key=\"index\">\n <v-tooltip\n v-if=\"getTooltipText(widget)\"\n :open-delay=\"getTooltipDelay(widget)\"\n location=\"top\"\n :activator-props=\"getTooltipActivatorProps(widget)\"\n >\n <template #activator=\"{ props }\">\n <component\n :is=\"widget.type\"\n v-bind=\"{ ...listeners, ...props }\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </template>\n <span>{{ getTooltipText(widget) }}</span>\n </v-tooltip>\n <component\n :is=\"widget.type\"\n v-else\n v-bind=\"listeners\"\n :target=\"widget.target\"\n :parameters=\"widget.parameters\"\n :settings=\"widget.settings\"\n :screen-values=\"screenValues\"\n :screen-time-zone=\"screenTimeZone\"\n :widgets=\"widget.widgets\"\n :name=\"widget.name\"\n :line=\"widget.line\"\n :line-number=\"widget.lineNumber\"\n />\n </template>\n </div>\n</template>\n\n<script>\nimport Layout from './Layout'\n\nexport default {\n mixins: [Layout],\n created: function () {\n this.setHeight(this.parameters[0], 'px', 200)\n if (this.parameters[1]) {\n let margin = this.parameters[1]\n this.widgets.forEach((widget) => {\n // Don't push MARGIN on a widget that's already defined it\n const found = widget.settings.find(\n (setting) =>\n setting[0] === 'MARGIN' ||\n (setting[0].startsWith('RAW') &&\n setting[1].toUpperCase().includes('MARGIN')),\n )\n if (found === undefined) {\n widget.settings.push(['MARGIN', margin])\n }\n })\n }\n },\n}\n</script>\n"],"names":["_sfc_main","Layout","margin","widget","setting","_createElementBlock","_ctx","_openBlock","_Fragment","_renderList","index","_createBlock","_component_v_tooltip","_withCtx","props","_resolveDynamicComponent","_mergeProps","_createElementVNode","_toDisplayString"],"mappings":"iLAgEKA,EAAU,CACb,OAAQ,CAACC,EAAAA,MAAM,EACf,QAAS,UAAY,CAEnB,GADA,KAAK,UAAU,KAAK,WAAW,CAAC,EAAG,KAAM,GAAG,EACxC,KAAK,WAAW,CAAC,EAAG,CACtB,IAAIC,EAAS,KAAK,WAAW,CAAC,EAC9B,KAAK,QAAQ,QAASC,GAAW,CAEjBA,EAAO,SAAS,KAC3BC,GACCA,EAAQ,CAAC,IAAM,UACdA,EAAQ,CAAC,EAAE,WAAW,KAAK,GAC1BA,EAAQ,CAAC,EAAE,YAAW,EAAG,SAAS,QAAQ,CAChD,IACc,QACZD,EAAO,SAAS,KAAK,CAAC,SAAUD,CAAM,CAAC,CAE3C,CAAC,CACH,CACF,CACF,uFAlEEG,EAAAA,mBAwCM,MAAA,CAxCD,IAAI,YAAa,uBAAOC,EAAA,aAAa,EAAE,MAAM,qBAChDC,EAAAA,UAAA,EAAA,EAAAF,EAAAA,mBAsCWG,WAAA,KAAAC,EAAAA,WAtCyBH,EAAA,QAAO,CAAzBH,EAAQO,wDAAyBA,GAAK,CAE9CJ,EAAA,eAAeH,CAAM,iBAD7BQ,EAAAA,YAsBYC,EAAA,OApBT,aAAYN,EAAA,gBAAgBH,CAAM,EACnC,SAAS,MACR,kBAAiBG,EAAA,yBAAyBH,CAAM,IAEtC,UAASU,EAAAA,QAClB,CAYE,CAboB,MAAAC,KAAK,gBAC3BH,EAAAA,YAYEI,EAAAA,wBAXKZ,EAAO,IAAI,EADlBa,EAAAA,WAYE,CAAA,QAAA,EAAA,EAAA,CAAA,GAVaV,EAAA,UAAS,GAAKQ,GAAK,CAC/B,OAAQX,EAAO,OACf,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,gBAAeG,EAAA,aACf,mBAAkBA,EAAA,eAClB,QAASH,EAAO,QAChB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,cAAaA,EAAO,uJAGzB,IAAyC,CAAzCc,qBAAyC,OAAA,KAAAC,EAAAA,gBAAhCZ,EAAA,eAAeH,CAAM,CAAA,EAAA,CAAA,kDAEhCI,EAAAA,UAAA,EAAAI,EAAAA,YAaEI,EAAAA,wBAZKZ,EAAO,IAAI,EADlBa,aAaE,mBAVQV,EAAA,UAAS,CAChB,OAAQH,EAAO,OACf,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,gBAAeG,EAAA,aACf,mBAAkBA,EAAA,eAClB,QAASH,EAAO,QAChB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,cAAaA,EAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-
|
|
2
|
-
//# sourceMappingURL=SecretsTab-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs"),e=require("vue"),N=require("./CustomIcon-8F08upeg.cjs"),C={data(){return{file:null,loadingSecret:!1,secrets:[],secretName:"",secretValue:"",alert:"",alertType:"success",showAlert:!1,isEnterprise:!1}},created(){n.Fr.get("/openc3-api/info").then(({data:s})=>{this.isEnterprise=s.enterprise})},mounted(){this.update()},methods:{update(){n.Fr.get("/openc3-api/secrets").then(s=>{this.secrets=s.data})},upload:function(){this.loadingSecret=!0;let s=null;if(this.file){const t=new FormData;t.append("file",this.file,this.file.name),s=n.Fr.post(`/openc3-api/secrets/${this.secretName}`,{data:t,headers:{"Content-Type":"multipart/form-data"}})}else s=n.Fr.post(`/openc3-api/secrets/${this.secretName}`,{data:{value:this.secretValue}});s.then(t=>{this.loadingSecret=!1,this.file=null,this.secretName="",this.secretValue="",this.update()}).catch(t=>{this.loadingSecret=!1})},deleteSecret:function(s){this.$dialog.confirm(`Are you sure you want to remove: ${s}`,{okText:"Delete",cancelText:"Cancel"}).then(function(t){return n.Fr.delete(`/openc3-api/secrets/${s}`)}).then(t=>{this.alert=`Removed secret ${s}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()})}}};function x(s,t,w,b,o,a){const c=e.resolveComponent("v-alert"),m=e.resolveComponent("v-file-input"),r=e.resolveComponent("v-col"),d=e.resolveComponent("v-row"),u=e.resolveComponent("v-text-field"),f=e.resolveComponent("v-icon"),p=e.resolveComponent("v-btn"),_=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item"),V=e.resolveComponent("v-divider"),h=e.resolveComponent("v-list");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{modelValue:o.isEnterprise,"onUpdate:modelValue":t[0]||(t[0]=l=>o.isEnterprise=l),class:"ma-4"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode(" Note: This cannot be used for setting Kubernetes secrets. You must set them in Kubernetes as a ",-1),e.createElementVNode("a",{href:"https://kubernetes.io/docs/concepts/configuration/secret/",target:"_blank"}," Secrets object ",-1),e.createTextVNode(" instead. ",-1)])]),_:1},8,["modelValue"]),e.createVNode(d,{"no-gutters":""},{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createVNode(m,{ref:"fileInput",modelValue:o.file,"onUpdate:modelValue":t[1]||(t[1]=l=>o.file=l),"show-size":"",accept:"*",class:"mx-2",label:"Click to select a file to create a secret from or enter a secret value"},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(d,{"no-gutters":"",align:"center",style:{"padding-left":"10px"}},{default:e.withCtx(()=>[e.createVNode(r,{cols:"3"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:o.secretName,"onUpdate:modelValue":t[2]||(t[2]=l=>o.secretName=l),label:"Secret Name",class:"px-2"},null,8,["modelValue"])]),_:1}),e.createVNode(r,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:o.secretValue,"onUpdate:modelValue":t[3]||(t[3]=l=>o.secretValue=l),disabled:o.file,label:"Secret Value"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(r,{cols:"3",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{class:"mx-2",color:"primary","data-test":"secretUpload",disabled:o.secretName===""||o.file==null&&o.secretValue==="",loading:o.loadingSecret,onClick:t[4]||(t[4]=l=>a.upload())},{loader:e.withCtx(()=>[...t[8]||(t[8]=[e.createElementVNode("span",null,"Loading...",-1)])]),default:e.withCtx(()=>[e.createVNode(f,{start:"",theme:"dark"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("mdi-cloud-upload",-1)])]),_:1}),t[9]||(t[9]=e.createElementVNode("span",null," Set ",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}),e.createVNode(c,{modelValue:o.showAlert,"onUpdate:modelValue":t[5]||(t[5]=l=>o.showAlert=l),closable:"",type:o.alertType},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.alert),1)]),_:1},8,["modelValue","type"]),e.createVNode(h,{"data-test":"secretList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.secrets,(l,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(v,null,{append:e.withCtx(()=>[e.createVNode(p,{icon:"mdi-delete",variant:"text","aria-label":"Delete Secret",onClick:k=>a.deleteSecret(l)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),i<o.secrets.length-1?(e.openBlock(),e.createBlock(V,{key:i})):e.createCommentVNode("",!0)]))),128))]),_:1})])}const g=N._export_sfc(C,[["render",x]]);exports.default=g;
|
|
2
|
+
//# sourceMappingURL=SecretsTab-Cn6-o85L.cjs.map
|