@openc3/vue-common 6.3.0 → 6.4.0
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-DkjHrXsu.cjs → ArrayWidget-Ba-YDfZB.cjs} +2 -2
- package/dist/{ArrayWidget-DkjHrXsu.cjs.map → ArrayWidget-Ba-YDfZB.cjs.map} +1 -1
- package/dist/{ArrayWidget-BbsN1dzF.js → ArrayWidget-DAZApfkV.js} +4 -4
- package/dist/{ArrayWidget-BbsN1dzF.js.map → ArrayWidget-DAZApfkV.js.map} +1 -1
- package/dist/{ArrayplotWidget-CCKEyYIx.js → ArrayplotWidget-BfsxDplv.js} +3 -3
- package/dist/{ArrayplotWidget-CCKEyYIx.js.map → ArrayplotWidget-BfsxDplv.js.map} +1 -1
- package/dist/ArrayplotWidget-Ckm4lmSc.cjs +2 -0
- package/dist/{ArrayplotWidget-COeaK_Lz.cjs.map → ArrayplotWidget-Ckm4lmSc.cjs.map} +1 -1
- package/dist/BarColumn-Cp7oEFJR.cjs +2 -0
- package/dist/{BarColumn-CJLW1nXy.cjs.map → BarColumn-Cp7oEFJR.cjs.map} +1 -1
- package/dist/{BarColumn-C6p07yWK.js → BarColumn-q0nAsvrd.js} +3 -3
- package/dist/{BarColumn-C6p07yWK.js.map → BarColumn-q0nAsvrd.js.map} +1 -1
- package/dist/{BlockWidget-BFVYgbd_.cjs → BlockWidget-DRB-TDL_.cjs} +2 -2
- package/dist/{BlockWidget-BFVYgbd_.cjs.map → BlockWidget-DRB-TDL_.cjs.map} +1 -1
- package/dist/{BlockWidget-DlCHbqZX.js → BlockWidget-SDCUWcMQ.js} +4 -4
- package/dist/{BlockWidget-DlCHbqZX.js.map → BlockWidget-SDCUWcMQ.js.map} +1 -1
- package/dist/{ButtonWidget-CtfJzCBR.js → ButtonWidget-BVMjwC19.js} +14 -14
- package/dist/{ButtonWidget-CtfJzCBR.js.map → ButtonWidget-BVMjwC19.js.map} +1 -1
- package/dist/ButtonWidget-yJ70adEU.cjs +3 -0
- package/dist/{ButtonWidget-HN8UHsme.cjs.map → ButtonWidget-yJ70adEU.cjs.map} +1 -1
- package/dist/{CanvasWidget-CHmkxxMO.cjs → CanvasWidget-DXkxnt1x.cjs} +2 -2
- package/dist/{CanvasWidget-CHmkxxMO.cjs.map → CanvasWidget-DXkxnt1x.cjs.map} +1 -1
- package/dist/{CanvasWidget-CqRlXc4r.js → CanvasWidget-bVkufjRQ.js} +2 -2
- package/dist/{CanvasWidget-CqRlXc4r.js.map → CanvasWidget-bVkufjRQ.js.map} +1 -1
- package/dist/{CanvasdotWidget-B4bUcKRc.cjs → CanvasdotWidget-Bi3nZh7g.cjs} +2 -2
- package/dist/{CanvasdotWidget-B4bUcKRc.cjs.map → CanvasdotWidget-Bi3nZh7g.cjs.map} +1 -1
- package/dist/{CanvasdotWidget--Xr_KsZs.js → CanvasdotWidget-DpniFfca.js} +2 -2
- package/dist/{CanvasdotWidget--Xr_KsZs.js.map → CanvasdotWidget-DpniFfca.js.map} +1 -1
- package/dist/{CanvasimageWidget-B5YozXoI.cjs → CanvasimageWidget-C-aBl-by.cjs} +2 -2
- package/dist/{CanvasimageWidget-B5YozXoI.cjs.map → CanvasimageWidget-C-aBl-by.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-BPlj5QYK.js → CanvasimageWidget-DHOSz-dJ.js} +3 -3
- package/dist/{CanvasimageWidget-BPlj5QYK.js.map → CanvasimageWidget-DHOSz-dJ.js.map} +1 -1
- package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs → CanvasimagevalueWidget-DAbbV-LB.cjs} +2 -2
- package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs.map → CanvasimagevalueWidget-DAbbV-LB.cjs.map} +1 -1
- package/dist/{CanvasimagevalueWidget-DVFGLt8f.js → CanvasimagevalueWidget-zrURWWUL.js} +3 -3
- package/dist/{CanvasimagevalueWidget-DVFGLt8f.js.map → CanvasimagevalueWidget-zrURWWUL.js.map} +1 -1
- package/dist/{CanvaslabelWidget-DgadQD-D.cjs → CanvaslabelWidget-82bf_Awf.cjs} +2 -2
- package/dist/{CanvaslabelWidget-DgadQD-D.cjs.map → CanvaslabelWidget-82bf_Awf.cjs.map} +1 -1
- package/dist/{CanvaslabelWidget-CYNqmyP0.js → CanvaslabelWidget-D-XAMifp.js} +2 -2
- package/dist/{CanvaslabelWidget-CYNqmyP0.js.map → CanvaslabelWidget-D-XAMifp.js.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js → CanvaslabelvalueWidget-BsIdBtEb.js} +2 -2
- package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js.map → CanvaslabelvalueWidget-BsIdBtEb.js.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs → CanvaslabelvalueWidget-DgDzwLdi.cjs} +2 -2
- package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs.map → CanvaslabelvalueWidget-DgDzwLdi.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-CYHkes0a.cjs → CanvaslineWidget-BRRPuuqS.cjs} +2 -2
- package/dist/{CanvaslineWidget-CYHkes0a.cjs.map → CanvaslineWidget-BRRPuuqS.cjs.map} +1 -1
- package/dist/{CanvaslineWidget-BICdxX0Q.js → CanvaslineWidget-CA2aPGRg.js} +2 -2
- package/dist/{CanvaslineWidget-BICdxX0Q.js.map → CanvaslineWidget-CA2aPGRg.js.map} +1 -1
- package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs → CanvaslinevalueWidget-BYjWr2gq.cjs} +2 -2
- package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs.map → CanvaslinevalueWidget-BYjWr2gq.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js → CanvaslinevalueWidget-J7epKRlo.js} +2 -2
- package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js.map → CanvaslinevalueWidget-J7epKRlo.js.map} +1 -1
- package/dist/{CheckbuttonWidget-B74AWeaW.js → CheckbuttonWidget-ByH-PDRG.js} +2 -2
- package/dist/{CheckbuttonWidget-B74AWeaW.js.map → CheckbuttonWidget-ByH-PDRG.js.map} +1 -1
- package/dist/{CheckbuttonWidget-BCzsXnIF.cjs → CheckbuttonWidget-DkoFFTcM.cjs} +2 -2
- package/dist/{CheckbuttonWidget-BCzsXnIF.cjs.map → CheckbuttonWidget-DkoFFTcM.cjs.map} +1 -1
- package/dist/{ComboboxWidget-CtyKbEWb.js → ComboboxWidget-Bdm_fMzW.js} +2 -2
- package/dist/{ComboboxWidget-CtyKbEWb.js.map → ComboboxWidget-Bdm_fMzW.js.map} +1 -1
- package/dist/{ComboboxWidget-DQgDyDAC.cjs → ComboboxWidget-Dq28F4bs.cjs} +2 -2
- package/dist/{ComboboxWidget-DQgDyDAC.cjs.map → ComboboxWidget-Dq28F4bs.cjs.map} +1 -1
- package/dist/{CriticalCmdDialog-DPIZOBeP.js → CriticalCmdDialog-Bcq8PGag.js} +16 -16
- package/dist/CriticalCmdDialog-Bcq8PGag.js.map +1 -0
- package/dist/CriticalCmdDialog-CLF7hYKu.cjs +2 -0
- package/dist/CriticalCmdDialog-CLF7hYKu.cjs.map +1 -0
- package/dist/{DateWidget-BEVSczU8.js → DateWidget-BaQqthC7.js} +3 -3
- package/dist/{DateWidget-BEVSczU8.js.map → DateWidget-BaQqthC7.js.map} +1 -1
- package/dist/{DateWidget-BB4cIuUS.cjs → DateWidget-DCayVS3o.cjs} +2 -2
- package/dist/{DateWidget-BB4cIuUS.cjs.map → DateWidget-DCayVS3o.cjs.map} +1 -1
- package/dist/{DetailsDialog-DmEC5BTs.js → DetailsDialog-C5jf8o0K.js} +18 -18
- package/dist/DetailsDialog-C5jf8o0K.js.map +1 -0
- package/dist/DetailsDialog-CangkVuF.cjs +2 -0
- package/dist/DetailsDialog-CangkVuF.cjs.map +1 -0
- package/dist/{EventListDialog-CSMSmCIT.js → EventListDialog-Bniar26O.js} +513 -590
- package/dist/EventListDialog-Bniar26O.js.map +1 -0
- package/dist/EventListDialog-D_KXhGDO.cjs +2 -0
- package/dist/EventListDialog-D_KXhGDO.cjs.map +1 -0
- package/dist/FormatvalueWidget--H5B9i_Y.js +48 -0
- package/dist/FormatvalueWidget--H5B9i_Y.js.map +1 -0
- package/dist/FormatvalueWidget-CDh1rF5P.cjs +2 -0
- package/dist/FormatvalueWidget-CDh1rF5P.cjs.map +1 -0
- package/dist/Graph-DIR-5tJu.cjs +2 -0
- package/dist/Graph-DIR-5tJu.cjs.map +1 -0
- package/dist/{Graph-Bgo0cjl3.js → Graph-M382Zo8o.js} +666 -801
- package/dist/Graph-M382Zo8o.js.map +1 -0
- package/dist/{GraphWidget-sid4Ws9H.cjs → GraphWidget-CNUOLw5-.cjs} +2 -2
- package/dist/{GraphWidget-sid4Ws9H.cjs.map → GraphWidget-CNUOLw5-.cjs.map} +1 -1
- package/dist/{GraphWidget-DurWDmpg.js → GraphWidget-_YOGDD1U.js} +2 -2
- package/dist/{GraphWidget-DurWDmpg.js.map → GraphWidget-_YOGDD1U.js.map} +1 -1
- package/dist/{HorizontalWidget-_6IR0cR8.cjs → HorizontalWidget-Bix4q7It.cjs} +2 -2
- package/dist/{HorizontalWidget-_6IR0cR8.cjs.map → HorizontalWidget-Bix4q7It.cjs.map} +1 -1
- package/dist/{HorizontalWidget-Cd_wl1b3.js → HorizontalWidget-D_gzrOWs.js} +2 -2
- package/dist/{HorizontalWidget-Cd_wl1b3.js.map → HorizontalWidget-D_gzrOWs.js.map} +1 -1
- package/dist/{HorizontalboxWidget-zmnurtv1.cjs → HorizontalboxWidget-B8a4-h2J.cjs} +2 -2
- package/dist/{HorizontalboxWidget-zmnurtv1.cjs.map → HorizontalboxWidget-B8a4-h2J.cjs.map} +1 -1
- package/dist/{HorizontalboxWidget-BcMTFBU-.js → HorizontalboxWidget-GDcjO-UB.js} +5 -5
- package/dist/{HorizontalboxWidget-BcMTFBU-.js.map → HorizontalboxWidget-GDcjO-UB.js.map} +1 -1
- package/dist/{HorizontallineWidget-CM-6WqCj.cjs → HorizontallineWidget-BD6dqVhE.cjs} +2 -2
- package/dist/{HorizontallineWidget-CM-6WqCj.cjs.map → HorizontallineWidget-BD6dqVhE.cjs.map} +1 -1
- package/dist/{HorizontallineWidget-CXFqHclf.js → HorizontallineWidget-DZvOYFxf.js} +2 -2
- package/dist/{HorizontallineWidget-CXFqHclf.js.map → HorizontallineWidget-DZvOYFxf.js.map} +1 -1
- package/dist/{IframeWidget-BPerHCCa.js → IframeWidget-CuUav9b3.js} +2 -2
- package/dist/{IframeWidget-BPerHCCa.js.map → IframeWidget-CuUav9b3.js.map} +1 -1
- package/dist/{IframeWidget-EhncMob0.cjs → IframeWidget-DL_CET3B.cjs} +2 -2
- package/dist/{IframeWidget-EhncMob0.cjs.map → IframeWidget-DL_CET3B.cjs.map} +1 -1
- package/dist/{ImageLoader-4N-7Gj61.js → ImageLoader-3KLKJ5mV.js} +2 -2
- package/dist/{ImageLoader-4N-7Gj61.js.map → ImageLoader-3KLKJ5mV.js.map} +1 -1
- package/dist/ImageLoader-DaWMqoJS.cjs +2 -0
- package/dist/{ImageLoader-cRmBcpU9.cjs.map → ImageLoader-DaWMqoJS.cjs.map} +1 -1
- package/dist/{ImageviewerWidget-Cw_H_HmZ.js → ImageviewerWidget-BMZ6REN4.js} +2 -2
- package/dist/{ImageviewerWidget-Cw_H_HmZ.js.map → ImageviewerWidget-BMZ6REN4.js.map} +1 -1
- package/dist/{ImageviewerWidget-Bv3CreXd.cjs → ImageviewerWidget-_0YopZ1s.cjs} +2 -2
- package/dist/{ImageviewerWidget-Bv3CreXd.cjs.map → ImageviewerWidget-_0YopZ1s.cjs.map} +1 -1
- package/dist/InterfacesTab-DGrLsTA0.cjs +2 -0
- package/dist/InterfacesTab-DGrLsTA0.cjs.map +1 -0
- package/dist/InterfacesTab-DTixVrGo.js +83 -0
- package/dist/InterfacesTab-DTixVrGo.js.map +1 -0
- package/dist/{LabelWidget-mMcf5S8K.cjs → LabelWidget-DkZvBxYg.cjs} +2 -2
- package/dist/{LabelWidget-mMcf5S8K.cjs.map → LabelWidget-DkZvBxYg.cjs.map} +1 -1
- package/dist/{LabelWidget-xrmcVeq8.js → LabelWidget-oh6FIG6s.js} +2 -2
- package/dist/{LabelWidget-xrmcVeq8.js.map → LabelWidget-oh6FIG6s.js.map} +1 -1
- package/dist/{LabelledWidget-D48QoyMk.js → LabelledWidget-Bic36les.js} +4 -4
- package/dist/{LabelledWidget-D48QoyMk.js.map → LabelledWidget-Bic36les.js.map} +1 -1
- package/dist/{LabelledWidget-BoYCuDaH.cjs → LabelledWidget-D7nm73kj.cjs} +2 -2
- package/dist/{LabelledWidget-BoYCuDaH.cjs.map → LabelledWidget-D7nm73kj.cjs.map} +1 -1
- package/dist/{LabelprogressbarWidget-C_950t6g.js → LabelprogressbarWidget-CqIiGoDb.js} +4 -4
- package/dist/{LabelprogressbarWidget-C_950t6g.js.map → LabelprogressbarWidget-CqIiGoDb.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-DiucKsT2.cjs → LabelprogressbarWidget-DY0Xd2c2.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-DiucKsT2.cjs.map → LabelprogressbarWidget-DY0Xd2c2.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-0KXQyPoU.js → LabelsparklineWidget-DLhmqO02.js} +4 -4
- package/dist/{LabelsparklineWidget-0KXQyPoU.js.map → LabelsparklineWidget-DLhmqO02.js.map} +1 -1
- package/dist/{LabelsparklineWidget-A3MTEhQc.cjs → LabelsparklineWidget-DZ5-iEcK.cjs} +2 -2
- package/dist/{LabelsparklineWidget-A3MTEhQc.cjs.map → LabelsparklineWidget-DZ5-iEcK.cjs.map} +1 -1
- package/dist/{LabelvalueWidget-CQ06wWDK.js → LabelvalueWidget-BefwSSVq.js} +4 -4
- package/dist/{LabelvalueWidget-CQ06wWDK.js.map → LabelvalueWidget-BefwSSVq.js.map} +1 -1
- package/dist/{LabelvalueWidget-DnKoz0-N.cjs → LabelvalueWidget-D-u38nLh.cjs} +2 -2
- package/dist/{LabelvalueWidget-DnKoz0-N.cjs.map → LabelvalueWidget-D-u38nLh.cjs.map} +1 -1
- package/dist/LabelvaluedescWidget-DMuBCLM8.cjs +2 -0
- package/dist/{LabelvaluedescWidget-I6ljK--Y.cjs.map → LabelvaluedescWidget-DMuBCLM8.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-Bo8zT01X.js → LabelvaluedescWidget-NxrCzznm.js} +9 -9
- package/dist/{LabelvaluedescWidget-Bo8zT01X.js.map → LabelvaluedescWidget-NxrCzznm.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs → LabelvaluelimitsbarWidget-BY212bgc.cjs} +2 -2
- package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map → LabelvaluelimitsbarWidget-BY212bgc.cjs.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js → LabelvaluelimitsbarWidget-pq7qoolL.js} +4 -4
- package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js.map → LabelvaluelimitsbarWidget-pq7qoolL.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs → LabelvaluelimitscolumnWidget-DVLGU6ja.cjs} +2 -2
- package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map → LabelvaluelimitscolumnWidget-DVLGU6ja.cjs.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js → LabelvaluelimitscolumnWidget-edkpogsl.js} +5 -5
- package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js.map → LabelvaluelimitscolumnWidget-edkpogsl.js.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs → LabelvaluerangebarWidget-CA_7kTS2.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs.map → LabelvaluerangebarWidget-CA_7kTS2.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js → LabelvaluerangebarWidget-DpJNv9dh.js} +4 -4
- package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js.map → LabelvaluerangebarWidget-DpJNv9dh.js.map} +1 -1
- package/dist/{Layout-Tf--nruw.js → Layout-B0hvhBQO.js} +2 -2
- package/dist/{Layout-Tf--nruw.js.map → Layout-B0hvhBQO.js.map} +1 -1
- package/dist/Layout-BLADjt_A.cjs +2 -0
- package/dist/{Layout-DuCYyOw4.cjs.map → Layout-BLADjt_A.cjs.map} +1 -1
- package/dist/{LedWidget-qH_FthkK.js → LedWidget--4eSxBnn.js} +13 -10
- package/dist/LedWidget--4eSxBnn.js.map +1 -0
- package/dist/LedWidget-BoZKOBZg.cjs +2 -0
- package/dist/LedWidget-BoZKOBZg.cjs.map +1 -0
- package/dist/{LimitsbarWidget-B9lAB2RD.js → LimitsbarWidget-BQaumgRt.js} +10 -7
- package/dist/LimitsbarWidget-BQaumgRt.js.map +1 -0
- package/dist/LimitsbarWidget-CyHbbNx3.cjs +2 -0
- package/dist/LimitsbarWidget-CyHbbNx3.cjs.map +1 -0
- package/dist/{LimitscolorWidget-c6Qa6su7.js → LimitscolorWidget-BBF9sRtF.js} +2 -2
- package/dist/{LimitscolorWidget-c6Qa6su7.js.map → LimitscolorWidget-BBF9sRtF.js.map} +1 -1
- package/dist/{LimitscolorWidget-DORhDxRo.cjs → LimitscolorWidget-CsuRoqxm.cjs} +2 -2
- package/dist/{LimitscolorWidget-DORhDxRo.cjs.map → LimitscolorWidget-CsuRoqxm.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs → LimitscolumnWidget-Cr1qFT8M.cjs} +2 -2
- package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs.map → LimitscolumnWidget-Cr1qFT8M.cjs.map} +1 -1
- package/dist/{LimitscolumnWidget-CcLs_443.js → LimitscolumnWidget-DZZtSoXw.js} +2 -2
- package/dist/{LimitscolumnWidget-CcLs_443.js.map → LimitscolumnWidget-DZZtSoXw.js.map} +1 -1
- package/dist/LinegraphWidget-Cw9vua8K.cjs +2 -0
- package/dist/{LinegraphWidget-Bf8DIwEn.cjs.map → LinegraphWidget-Cw9vua8K.cjs.map} +1 -1
- package/dist/{LinegraphWidget-BSVYLFo1.js → LinegraphWidget-DTLZmyWs.js} +4 -4
- package/dist/{LinegraphWidget-BSVYLFo1.js.map → LinegraphWidget-DTLZmyWs.js.map} +1 -1
- package/dist/MatrixbycolumnsWidget-Digh2kY7.cjs +2 -0
- package/dist/{MatrixbycolumnsWidget-DpdFzNeP.cjs.map → MatrixbycolumnsWidget-Digh2kY7.cjs.map} +1 -1
- package/dist/{MatrixbycolumnsWidget-DXFpZTre.js → MatrixbycolumnsWidget-dpgZz4wR.js} +3 -3
- package/dist/{MatrixbycolumnsWidget-DXFpZTre.js.map → MatrixbycolumnsWidget-dpgZz4wR.js.map} +1 -1
- package/dist/MicroservicesTab-BQywJ_ya.cjs +2 -0
- package/dist/MicroservicesTab-BQywJ_ya.cjs.map +1 -0
- package/dist/MicroservicesTab-DbL48MBc.js +219 -0
- package/dist/MicroservicesTab-DbL48MBc.js.map +1 -0
- package/dist/Openc3Screen-COi4u-9k.cjs +5 -0
- package/dist/Openc3Screen-COi4u-9k.cjs.map +1 -0
- package/dist/Openc3Screen-CtwGKfq-.js +1690 -0
- package/dist/Openc3Screen-CtwGKfq-.js.map +1 -0
- package/dist/{OutputDialog-zVPZiZay.js → OutputDialog-B5qHVyck.js} +66 -78
- package/dist/OutputDialog-B5qHVyck.js.map +1 -0
- package/dist/OutputDialog-CFhG2RY9.cjs +2 -0
- package/dist/OutputDialog-CFhG2RY9.cjs.map +1 -0
- package/dist/PackagesTab-Bw34RkLc.js +313 -0
- package/dist/PackagesTab-Bw34RkLc.js.map +1 -0
- package/dist/PackagesTab-DXSowjd4.cjs +2 -0
- package/dist/PackagesTab-DXSowjd4.cjs.map +1 -0
- package/dist/{PluginsTab-B64OvayB.js → PluginsTab-C9t0-QVm.js} +205 -244
- package/dist/PluginsTab-C9t0-QVm.js.map +1 -0
- package/dist/PluginsTab-CPaBGJMa.cjs +6 -0
- package/dist/PluginsTab-CPaBGJMa.cjs.map +1 -0
- package/dist/{ProgressbarWidget-iYGw8-Dc.js → ProgressbarWidget-7cYr8136.js} +2 -2
- package/dist/{ProgressbarWidget-iYGw8-Dc.js.map → ProgressbarWidget-7cYr8136.js.map} +1 -1
- package/dist/{ProgressbarWidget-fGWa6ipm.cjs → ProgressbarWidget-CdOWGViG.cjs} +2 -2
- package/dist/{ProgressbarWidget-fGWa6ipm.cjs.map → ProgressbarWidget-CdOWGViG.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs → RadiobuttonWidget-5t4ofYx3.cjs} +2 -2
- package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs.map → RadiobuttonWidget-5t4ofYx3.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-ytmoVZ3u.js → RadiobuttonWidget-DTfn-7F2.js} +2 -2
- package/dist/{RadiobuttonWidget-ytmoVZ3u.js.map → RadiobuttonWidget-DTfn-7F2.js.map} +1 -1
- package/dist/{RadiogroupWidget-CusMBhKH.js → RadiogroupWidget-DWvTpw94.js} +2 -2
- package/dist/{RadiogroupWidget-CusMBhKH.js.map → RadiogroupWidget-DWvTpw94.js.map} +1 -1
- package/dist/{RadiogroupWidget-EK4rEGUC.cjs → RadiogroupWidget-emxyymRZ.cjs} +2 -2
- package/dist/{RadiogroupWidget-EK4rEGUC.cjs.map → RadiogroupWidget-emxyymRZ.cjs.map} +1 -1
- package/dist/{RangebarWidget-D_zGTtCa.js → RangebarWidget-CG2Y7eYp.js} +2 -2
- package/dist/{RangebarWidget-D_zGTtCa.js.map → RangebarWidget-CG2Y7eYp.js.map} +1 -1
- package/dist/{RangebarWidget-DwIs-L5k.cjs → RangebarWidget-CLMKfbiT.cjs} +2 -2
- package/dist/{RangebarWidget-DwIs-L5k.cjs.map → RangebarWidget-CLMKfbiT.cjs.map} +1 -1
- package/dist/{RedisTab-CyPo6ADN.js → RedisTab-CvPLS0Qe.js} +13 -13
- package/dist/{RedisTab-CyPo6ADN.js.map → RedisTab-CvPLS0Qe.js.map} +1 -1
- package/dist/RedisTab-PbizvHjY.cjs +2 -0
- package/dist/{RedisTab-67UcKoPf.cjs.map → RedisTab-PbizvHjY.cjs.map} +1 -1
- package/dist/{RollupWidget-Dolsixyt.js → RollupWidget-C6HKTfCR.js} +2 -2
- package/dist/{RollupWidget-Dolsixyt.js.map → RollupWidget-C6HKTfCR.js.map} +1 -1
- package/dist/{RollupWidget-DC3OIP6G.cjs → RollupWidget-CHKUdXMx.cjs} +2 -2
- package/dist/{RollupWidget-DC3OIP6G.cjs.map → RollupWidget-CHKUdXMx.cjs.map} +1 -1
- package/dist/RoutersTab-D-ex_yMO.js +85 -0
- package/dist/RoutersTab-D-ex_yMO.js.map +1 -0
- package/dist/RoutersTab-zkaML-Xt.cjs +2 -0
- package/dist/RoutersTab-zkaML-Xt.cjs.map +1 -0
- package/dist/ScriptChooser-Dkf84RzQ.cjs +2 -0
- package/dist/ScriptChooser-Dkf84RzQ.cjs.map +1 -0
- package/dist/ScriptChooser-qiC2xQ_W.js +176 -0
- package/dist/ScriptChooser-qiC2xQ_W.js.map +1 -0
- package/dist/{ScrollwindowWidget-BWeqSUPc.cjs → ScrollwindowWidget-CVc9EXW2.cjs} +2 -2
- package/dist/{ScrollwindowWidget-BWeqSUPc.cjs.map → ScrollwindowWidget-CVc9EXW2.cjs.map} +1 -1
- package/dist/{ScrollwindowWidget-DV2nZuNi.js → ScrollwindowWidget-DvhBCYd2.js} +3 -3
- package/dist/{ScrollwindowWidget-DV2nZuNi.js.map → ScrollwindowWidget-DvhBCYd2.js.map} +1 -1
- package/dist/{SecretsTab-DVyyyGlG.js → SecretsTab-CLkJfzf-.js} +39 -49
- package/dist/SecretsTab-CLkJfzf-.js.map +1 -0
- package/dist/SecretsTab-Clw9ErBz.cjs +2 -0
- package/dist/SecretsTab-Clw9ErBz.cjs.map +1 -0
- package/dist/SettingsTab-BJ9mrQ8U.cjs +3 -0
- package/dist/{SettingsTab-B1LvOLG2.cjs.map → SettingsTab-BJ9mrQ8U.cjs.map} +1 -1
- package/dist/{SettingsTab-g29K6FyC.js → SettingsTab-CysOMBFu.js} +3 -3
- package/dist/{SettingsTab-g29K6FyC.js.map → SettingsTab-CysOMBFu.js.map} +1 -1
- package/dist/{SignalWidget-d9-6h85k.js → SignalWidget-BZIoGjam.js} +16 -18
- package/dist/SignalWidget-BZIoGjam.js.map +1 -0
- package/dist/{SignalWidget-RvRwpE8T.cjs → SignalWidget-DpNUpQNW.cjs} +2 -2
- package/dist/SignalWidget-DpNUpQNW.cjs.map +1 -0
- package/dist/SimpleTextDialog-CGStqYvO.js +97 -0
- package/dist/SimpleTextDialog-CGStqYvO.js.map +1 -0
- package/dist/SimpleTextDialog-P2KPhVHq.cjs +2 -0
- package/dist/SimpleTextDialog-P2KPhVHq.cjs.map +1 -0
- package/dist/{SpacerWidget-7_8bpLCb.cjs → SpacerWidget-CHuv4qDR.cjs} +2 -2
- package/dist/{SpacerWidget-7_8bpLCb.cjs.map → SpacerWidget-CHuv4qDR.cjs.map} +1 -1
- package/dist/{SpacerWidget-BH0p2OLi.js → SpacerWidget-YBS8RZIE.js} +2 -2
- package/dist/{SpacerWidget-BH0p2OLi.js.map → SpacerWidget-YBS8RZIE.js.map} +1 -1
- package/dist/{SparklineWidget-coxi9r2g.js → SparklineWidget-BMhY9vYe.js} +4 -4
- package/dist/{SparklineWidget-coxi9r2g.js.map → SparklineWidget-BMhY9vYe.js.map} +1 -1
- package/dist/SparklineWidget-qWQGTMwn.cjs +2 -0
- package/dist/{SparklineWidget-60jVlbHA.cjs.map → SparklineWidget-qWQGTMwn.cjs.map} +1 -1
- package/dist/{TabbookWidget-D1CVT9IK.cjs → TabbookWidget-C4jdzkQl.cjs} +2 -2
- package/dist/{TabbookWidget-D1CVT9IK.cjs.map → TabbookWidget-C4jdzkQl.cjs.map} +1 -1
- package/dist/{TabbookWidget-B1XKplGH.js → TabbookWidget-RfET19pq.js} +2 -2
- package/dist/{TabbookWidget-B1XKplGH.js.map → TabbookWidget-RfET19pq.js.map} +1 -1
- package/dist/TargetsTab-CVZR_Bp6.cjs +2 -0
- package/dist/TargetsTab-CVZR_Bp6.cjs.map +1 -0
- package/dist/TargetsTab-CfBt-dZW.js +117 -0
- package/dist/TargetsTab-CfBt-dZW.js.map +1 -0
- package/dist/TextBoxDialog-C60jmnyN.js +98 -0
- package/dist/TextBoxDialog-C60jmnyN.js.map +1 -0
- package/dist/TextBoxDialog-DWt30tB8.cjs +2 -0
- package/dist/TextBoxDialog-DWt30tB8.cjs.map +1 -0
- package/dist/TextboxWidget-Cm7-yWTZ.cjs +2 -0
- package/dist/{TextboxWidget-BDG4NxRw.cjs.map → TextboxWidget-Cm7-yWTZ.cjs.map} +1 -1
- package/dist/{TextboxWidget-C-_M2M4l.js → TextboxWidget-M8vFBSxS.js} +4 -4
- package/dist/{TextboxWidget-C-_M2M4l.js.map → TextboxWidget-M8vFBSxS.js.map} +1 -1
- package/dist/{TextfieldWidget-BGJv9Lox.cjs → TextfieldWidget-Bfk2NPtC.cjs} +2 -2
- package/dist/{TextfieldWidget-BGJv9Lox.cjs.map → TextfieldWidget-Bfk2NPtC.cjs.map} +1 -1
- package/dist/{TextfieldWidget-C08N4JE8.js → TextfieldWidget-Dev7lCsT.js} +2 -2
- package/dist/{TextfieldWidget-C08N4JE8.js.map → TextfieldWidget-Dev7lCsT.js.map} +1 -1
- package/dist/{TimeWidget-CGCOIouj.cjs → TimeWidget-BqkZJdg7.cjs} +2 -2
- package/dist/{TimeWidget-CGCOIouj.cjs.map → TimeWidget-BqkZJdg7.cjs.map} +1 -1
- package/dist/{TimeWidget-DtwdEcFg.js → TimeWidget-CQzn13rQ.js} +3 -3
- package/dist/{TimeWidget-DtwdEcFg.js.map → TimeWidget-CQzn13rQ.js.map} +1 -1
- package/dist/{TitleWidget-CT-aLcNb.js → TitleWidget-C4zbSian.js} +2 -2
- package/dist/{TitleWidget-CT-aLcNb.js.map → TitleWidget-C4zbSian.js.map} +1 -1
- package/dist/{TitleWidget-BljFH9RB.cjs → TitleWidget-DW0hJ0FE.cjs} +2 -2
- package/dist/{TitleWidget-BljFH9RB.cjs.map → TitleWidget-DW0hJ0FE.cjs.map} +1 -1
- package/dist/ToolsTab-CKeFb94Y.cjs +7 -0
- package/dist/{ToolsTab-RMTst_Sy.cjs.map → ToolsTab-CKeFb94Y.cjs.map} +1 -1
- package/dist/ToolsTab-CnhhRS3J.js +1501 -0
- package/dist/{ToolsTab-NveeVXz2.js.map → ToolsTab-CnhhRS3J.js.map} +1 -1
- package/dist/TopBar-4zZ-wYMY.cjs +2 -0
- package/dist/TopBar-4zZ-wYMY.cjs.map +1 -0
- package/dist/{TopBar-CnJNNJlV.js → TopBar-BQhv8Jcc.js} +68 -64
- package/dist/TopBar-BQhv8Jcc.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog-C0MA3Uc-.cjs +2 -0
- package/dist/UpgradeToEnterpriseDialog-C0MA3Uc-.cjs.map +1 -0
- package/dist/UpgradeToEnterpriseDialog-c6twungI.js +95 -0
- package/dist/UpgradeToEnterpriseDialog-c6twungI.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Bowkx8lp.cjs +1497 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Bowkx8lp.cjs.map +1 -0
- package/dist/{WidgetComponents-C1lSLZ0I.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CVrrWDJ_.js} +10558 -10519
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CVrrWDJ_.js.map +1 -0
- package/dist/{VWidget-DQqb7NVW.js → VWidget-iASFPjdx.js} +3 -3
- package/dist/{VWidget-DQqb7NVW.js.map → VWidget-iASFPjdx.js.map} +1 -1
- package/dist/{VWidget-2N2cOosI.cjs → VWidget-iTwRH6Qq.cjs} +2 -2
- package/dist/{VWidget-2N2cOosI.cjs.map → VWidget-iTwRH6Qq.cjs.map} +1 -1
- package/dist/{ValueWidget-C6RanBj3.js → ValueWidget-BVI6uUVX.js} +16 -14
- package/dist/ValueWidget-BVI6uUVX.js.map +1 -0
- package/dist/ValueWidget-CPuSUgn9.cjs +2 -0
- package/dist/ValueWidget-CPuSUgn9.cjs.map +1 -0
- package/dist/{ValuelimitsbarWidget-B3bvjfxc.js → ValuelimitsbarWidget-BiIcery0.js} +4 -4
- package/dist/{ValuelimitsbarWidget-B3bvjfxc.js.map → ValuelimitsbarWidget-BiIcery0.js.map} +1 -1
- package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs → ValuelimitsbarWidget-CNdyobcf.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs.map → ValuelimitsbarWidget-CNdyobcf.cjs.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js → ValuelimitscolumnWidget-BiRI8GbI.js} +4 -4
- package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js.map → ValuelimitscolumnWidget-BiRI8GbI.js.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs → ValuelimitscolumnWidget-Db0K4OjQ.cjs} +2 -2
- package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs.map → ValuelimitscolumnWidget-Db0K4OjQ.cjs.map} +1 -1
- package/dist/{ValuerangebarWidget-Dt3K9BnC.js → ValuerangebarWidget-CtMFQu9-.js} +4 -4
- package/dist/{ValuerangebarWidget-Dt3K9BnC.js.map → ValuerangebarWidget-CtMFQu9-.js.map} +1 -1
- package/dist/{ValuerangebarWidget-DyN78cQl.cjs → ValuerangebarWidget-DAEr-D_E.cjs} +2 -2
- package/dist/{ValuerangebarWidget-DyN78cQl.cjs.map → ValuerangebarWidget-DAEr-D_E.cjs.map} +1 -1
- package/dist/{VerticalWidget-BIIViZgI.js → VerticalWidget-CRmcpQBn.js} +2 -2
- package/dist/{VerticalWidget-BIIViZgI.js.map → VerticalWidget-CRmcpQBn.js.map} +1 -1
- package/dist/{VerticalWidget-CFTOu4H8.cjs → VerticalWidget-YG3auPJa.cjs} +2 -2
- package/dist/{VerticalWidget-CFTOu4H8.cjs.map → VerticalWidget-YG3auPJa.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-DY72fLHW.js → VerticalboxWidget-C-qChjug.js} +5 -5
- package/dist/{VerticalboxWidget-DY72fLHW.js.map → VerticalboxWidget-C-qChjug.js.map} +1 -1
- package/dist/{VerticalboxWidget-Z8-DWI8t.cjs → VerticalboxWidget-DX8-gFay.cjs} +2 -2
- package/dist/{VerticalboxWidget-Z8-DWI8t.cjs.map → VerticalboxWidget-DX8-gFay.cjs.map} +1 -1
- package/dist/{Widget-oyqWpFXJ.js → Widget-CFEnOKms.js} +3 -3
- package/dist/Widget-CFEnOKms.js.map +1 -0
- package/dist/Widget-EsyLQi_8.cjs +2 -0
- package/dist/Widget-EsyLQi_8.cjs.map +1 -0
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +285 -318
- package/dist/components.js.map +1 -1
- package/dist/index-DcL65Mqb.cjs +7 -0
- package/dist/index-DcL65Mqb.cjs.map +1 -0
- package/dist/{index-DwP8ryNM.js → index-qCq0L4jN.js} +332 -323
- package/dist/index-qCq0L4jN.js.map +1 -0
- package/dist/plugins.cjs +2 -2
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +94 -89
- package/dist/plugins.js.map +1 -1
- package/dist/{timeFilters-CRYpYDdf.js → timeFilters-BKnCM4rv.js} +139 -136
- package/dist/{timeFilters-CRYpYDdf.js.map → timeFilters-BKnCM4rv.js.map} +1 -1
- package/dist/timeFilters-CJFxfjqN.cjs +2 -0
- package/dist/{timeFilters-8SaYvcH0.cjs.map → timeFilters-CJFxfjqN.cjs.map} +1 -1
- package/dist/tools/admin.cjs +10 -10
- package/dist/tools/admin.cjs.map +1 -1
- package/dist/tools/admin.js +380 -406
- package/dist/tools/admin.js.map +1 -1
- package/dist/tools/base.cjs +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.js +212 -215
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calendar.cjs +1 -1
- package/dist/tools/calendar.js +1 -1
- package/dist/tools/scriptrunner.cjs +7 -8
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js +2021 -2011
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/util.cjs +1 -1
- package/dist/util.js +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +63 -63
- package/package.json +12 -12
- package/dist/ArrayplotWidget-COeaK_Lz.cjs +0 -2
- package/dist/BarColumn-CJLW1nXy.cjs +0 -2
- package/dist/ButtonWidget-HN8UHsme.cjs +0 -3
- package/dist/CriticalCmdDialog-BnxZlt7W.cjs +0 -2
- package/dist/CriticalCmdDialog-BnxZlt7W.cjs.map +0 -1
- package/dist/CriticalCmdDialog-DPIZOBeP.js.map +0 -1
- package/dist/DetailsDialog-DmEC5BTs.js.map +0 -1
- package/dist/DetailsDialog-mvxMFmgV.cjs +0 -2
- package/dist/DetailsDialog-mvxMFmgV.cjs.map +0 -1
- package/dist/EventListDialog-BHZLl28V.cjs +0 -2
- package/dist/EventListDialog-BHZLl28V.cjs.map +0 -1
- package/dist/EventListDialog-CSMSmCIT.js.map +0 -1
- package/dist/FormatvalueWidget-CdjCEAI7.cjs +0 -2
- package/dist/FormatvalueWidget-CdjCEAI7.cjs.map +0 -1
- package/dist/FormatvalueWidget-DN12xymS.js +0 -44
- package/dist/FormatvalueWidget-DN12xymS.js.map +0 -1
- package/dist/Graph-Bgo0cjl3.js.map +0 -1
- package/dist/Graph-Ujd2yaeI.cjs +0 -2
- package/dist/Graph-Ujd2yaeI.cjs.map +0 -1
- package/dist/ImageLoader-cRmBcpU9.cjs +0 -2
- package/dist/InterfacesTab-B4glsR9Z.js +0 -93
- package/dist/InterfacesTab-B4glsR9Z.js.map +0 -1
- package/dist/InterfacesTab-Co1Kd6Fa.cjs +0 -2
- package/dist/InterfacesTab-Co1Kd6Fa.cjs.map +0 -1
- package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +0 -2
- package/dist/Layout-DuCYyOw4.cjs +0 -2
- package/dist/LedWidget-B2BcwiYF.cjs +0 -2
- package/dist/LedWidget-B2BcwiYF.cjs.map +0 -1
- package/dist/LedWidget-qH_FthkK.js.map +0 -1
- package/dist/LimitsbarWidget-B9lAB2RD.js.map +0 -1
- package/dist/LimitsbarWidget-CVCLFIhG.cjs +0 -2
- package/dist/LimitsbarWidget-CVCLFIhG.cjs.map +0 -1
- package/dist/LinegraphWidget-Bf8DIwEn.cjs +0 -2
- package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +0 -2
- package/dist/MicroservicesTab-B5n-mN8G.cjs +0 -2
- package/dist/MicroservicesTab-B5n-mN8G.cjs.map +0 -1
- package/dist/MicroservicesTab-mCdS0v39.js +0 -264
- package/dist/MicroservicesTab-mCdS0v39.js.map +0 -1
- package/dist/Openc3Screen-BYhHaH_I.cjs +0 -5
- package/dist/Openc3Screen-BYhHaH_I.cjs.map +0 -1
- package/dist/Openc3Screen-Cud0OCFu.js +0 -1789
- package/dist/Openc3Screen-Cud0OCFu.js.map +0 -1
- package/dist/OutputDialog-DXoL9VPw.cjs +0 -2
- package/dist/OutputDialog-DXoL9VPw.cjs.map +0 -1
- package/dist/OutputDialog-zVPZiZay.js.map +0 -1
- package/dist/PackagesTab-CvT2JyMA.cjs +0 -2
- package/dist/PackagesTab-CvT2JyMA.cjs.map +0 -1
- package/dist/PackagesTab-SWcXumpK.js +0 -332
- package/dist/PackagesTab-SWcXumpK.js.map +0 -1
- package/dist/PluginsTab-B64OvayB.js.map +0 -1
- package/dist/PluginsTab-CfpwWsqv.cjs +0 -6
- package/dist/PluginsTab-CfpwWsqv.cjs.map +0 -1
- package/dist/RedisTab-67UcKoPf.cjs +0 -2
- package/dist/RoutersTab-BBPlFi_z.cjs +0 -2
- package/dist/RoutersTab-BBPlFi_z.cjs.map +0 -1
- package/dist/RoutersTab-Cs2dFVNA.js +0 -95
- package/dist/RoutersTab-Cs2dFVNA.js.map +0 -1
- package/dist/ScriptChooser-EV65rbWx.js +0 -199
- package/dist/ScriptChooser-EV65rbWx.js.map +0 -1
- package/dist/ScriptChooser-vyZwngrz.cjs +0 -2
- package/dist/ScriptChooser-vyZwngrz.cjs.map +0 -1
- package/dist/SecretsTab-0IFqUxNJ.cjs +0 -2
- package/dist/SecretsTab-0IFqUxNJ.cjs.map +0 -1
- package/dist/SecretsTab-DVyyyGlG.js.map +0 -1
- package/dist/SettingsTab-B1LvOLG2.cjs +0 -3
- package/dist/SignalWidget-RvRwpE8T.cjs.map +0 -1
- package/dist/SignalWidget-d9-6h85k.js.map +0 -1
- package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +0 -2
- package/dist/SimpleTextDialog-Cpbt7Q-8.cjs.map +0 -1
- package/dist/SimpleTextDialog-pwN8oRy1.js +0 -107
- package/dist/SimpleTextDialog-pwN8oRy1.js.map +0 -1
- package/dist/SparklineWidget-60jVlbHA.cjs +0 -2
- package/dist/TargetsTab-BkBkXn9A.js +0 -129
- package/dist/TargetsTab-BkBkXn9A.js.map +0 -1
- package/dist/TargetsTab-C-m26Eqq.cjs +0 -2
- package/dist/TargetsTab-C-m26Eqq.cjs.map +0 -1
- package/dist/TextBoxDialog-DOJ5d2RM.js +0 -110
- package/dist/TextBoxDialog-DOJ5d2RM.js.map +0 -1
- package/dist/TextBoxDialog-DfMXg_5C.cjs +0 -2
- package/dist/TextBoxDialog-DfMXg_5C.cjs.map +0 -1
- package/dist/TextboxWidget-BDG4NxRw.cjs +0 -2
- package/dist/ToolsTab-NveeVXz2.js +0 -1521
- package/dist/ToolsTab-RMTst_Sy.cjs +0 -7
- package/dist/TopBar-CnJNNJlV.js.map +0 -1
- package/dist/TopBar-Cnmb6DyC.cjs +0 -2
- package/dist/TopBar-Cnmb6DyC.cjs.map +0 -1
- package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js +0 -94
- package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js.map +0 -1
- package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +0 -2
- package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs.map +0 -1
- package/dist/ValueWidget-C6RanBj3.js.map +0 -1
- package/dist/ValueWidget-Cu7hgKja.cjs +0 -2
- package/dist/ValueWidget-Cu7hgKja.cjs.map +0 -1
- package/dist/Widget-ChoIB2dd.cjs +0 -2
- package/dist/Widget-ChoIB2dd.cjs.map +0 -1
- package/dist/Widget-oyqWpFXJ.js.map +0 -1
- package/dist/WidgetComponents-C1lSLZ0I.js.map +0 -1
- package/dist/WidgetComponents-utpQ592X.cjs +0 -1493
- package/dist/WidgetComponents-utpQ592X.cjs.map +0 -1
- package/dist/index-BX05anye.cjs +0 -7
- package/dist/index-BX05anye.cjs.map +0 -1
- package/dist/index-DwP8ryNM.js.map +0 -1
- package/dist/timeFilters-8SaYvcH0.cjs +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Graph-Ujd2yaeI.cjs","sources":["../src/components/GraphEditDialog.vue","../src/components/GraphEditItemDialog.vue","../src/components/Graph.vue"],"sourcesContent":["<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <!-- Edit Item dialog -->\n <v-dialog v-model=\"show\" @keydown.esc=\"$emit('cancel')\" max-width=\"700\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Edit Graph </span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-tabs v-model=\"tab\" class=\"ml-3\">\n <v-tab value=\"0\"> Settings </v-tab>\n <v-tab value=\"1\"> Scale / Lines </v-tab>\n <v-tab value=\"2\"> Items </v-tab>\n </v-tabs>\n <v-tabs-window v-model=\"tab\">\n <v-tabs-window-item value=\"0\" eager>\n <div class=\"edit-box\">\n <v-row>\n <v-col>\n <v-card-text class=\"pa-0\">\n <v-text-field\n class=\"pb-2\"\n label=\"Title\"\n v-model=\"graph.title\"\n hide-details\n />\n </v-card-text>\n </v-col>\n <v-col>\n <v-select\n label=\"Legend Position\"\n hide-details\n :items=\"legendPositions\"\n v-model=\"graph.legendPosition\"\n style=\"max-width: 280px\"\n />\n </v-col>\n </v-row>\n </div>\n <div class=\"edit-box\">\n <v-card-text class=\"pa-0\">\n Select a start date/time for the graph. Leave blank for start now.\n </v-card-text>\n <v-row>\n <v-col>\n <v-text-field\n label=\"Start Date\"\n :name=\"`date${Date.now()}`\"\n :rules=\"[rules.date]\"\n v-model=\"startDate\"\n type=\"date\"\n />\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n label=\"Start Time\"\n :name=\"`time${Date.now()}`\"\n :rules=\"[rules.time]\"\n v-model=\"startTime\"\n type=\"time\"\n step=\"1\"\n />\n </v-col>\n </v-row>\n <v-card-text class=\"pa-0\">\n Select a end date/time for the graph. Leave blank for continuous\n real-time graphing.\n </v-card-text>\n <v-row>\n <v-col>\n <v-text-field\n label=\"End Date\"\n :name=\"`date${Date.now()}`\"\n :rules=\"[rules.date]\"\n v-model=\"endDate\"\n type=\"date\"\n />\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n label=\"End Time\"\n :name=\"`time${Date.now()}`\"\n :rules=\"[rules.time]\"\n v-model=\"endTime\"\n type=\"time\"\n step=\"1\"\n />\n </v-col>\n </v-row>\n </div>\n </v-tabs-window-item>\n <v-tabs-window-item value=\"1\" eager>\n <div class=\"edit-box\">\n <v-card-text class=\"pa-0\">\n Set a min or max Y value to override automatic scaling\n </v-card-text>\n <v-row dense>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Min Y Axis (Optional)\"\n v-model=\"graph.graphMinY\"\n type=\"number\"\n />\n </v-col>\n <v-col class=\"px-2\">\n <v-text-field\n hide-details\n label=\"Max Y Axis (Optional)\"\n v-model=\"graph.graphMaxY\"\n type=\"number\"\n />\n </v-col>\n </v-row>\n </div>\n <div class=\"edit-box\">\n <v-list density=\"compact\" class=\"horizontal-lines\">\n <v-list-item>\n <span style=\"padding-top: 5px\">\n Add horizontal lines to the graph\n </span>\n <v-spacer />\n <v-btn @click=\"addLine()\"> New Line </v-btn>\n </v-list-item>\n <v-list-item\n v-for=\"(item, i) in graph.lines\"\n :key=\"i\"\n :value=\"item\"\n color=\"primary\"\n >\n <v-row>\n <v-col>\n <v-text-field label=\"Y Value\" v-model=\"item.yValue\" />\n </v-col>\n <v-col>\n <v-select\n label=\"Color\"\n hide-details\n :items=\"colors\"\n v-model=\"item.color\"\n />\n </v-col>\n <v-col>\n <v-tooltip text=\"Remove\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n style=\"padding: 30px\"\n @click=\"removeLine(item)\"\n >mdi-delete</v-icon\n >\n </template>\n </v-tooltip>\n </v-col>\n </v-row>\n </v-list-item>\n </v-list>\n </div>\n </v-tabs-window-item>\n <v-tabs-window-item value=\"2\" eager>\n <v-data-table\n item-key=\"itemId\"\n class=\"elevation-1 my-2\"\n data-test=\"edit-graph-items\"\n :headers=\"itemHeaders\"\n :items=\"editItems\"\n :items-per-page=\"5\"\n :footer-props=\"{\n 'items-per-page-options': [5],\n }\"\n >\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip text=\"Remove\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"$emit('remove', item)\">\n mdi-delete\n </v-icon>\n </template>\n </v-tooltip>\n </template>\n <template v-slot:no-data>\n <span> Currently no items on this graph </span>\n </template>\n </v-data-table>\n </v-tabs-window-item>\n </v-tabs-window>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"$emit('cancel')\"> Cancel </v-btn>\n <v-btn variant=\"flat\" @click=\"closeOk\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { TimeFilters } from '@/util'\nimport { isValid, parse, toDate } from 'date-fns'\nexport default {\n props: {\n modelValue: Boolean, // modelValue is the default prop when using v-model\n title: {\n type: String,\n required: true,\n },\n legendPosition: {\n type: String,\n required: true,\n },\n items: {\n type: Array,\n required: true,\n },\n graphMinY: {\n type: Number,\n },\n graphMaxY: {\n type: Number,\n },\n lines: {\n type: Array,\n required: true,\n },\n colors: {\n type: Array,\n required: true,\n },\n startDateTime: {\n type: Number,\n },\n endDateTime: {\n type: Number,\n },\n timeZone: {\n type: String,\n required: true,\n },\n },\n mixins: [TimeFilters],\n data: function () {\n return {\n tab: 0,\n graph: {},\n legendPositions: ['top', 'bottom', 'left', 'right'],\n startDate: null,\n startTime: null,\n endDate: null,\n endTime: null,\n lineHeaders: [\n { title: 'Y Value', value: 'yValue' },\n { title: 'Color', value: 'color' },\n { title: 'Actions', value: 'actions', sortable: false },\n ],\n itemHeaders: [\n { title: 'Target Name', value: 'targetName' },\n { title: 'Packet Name', value: 'packetName' },\n { title: 'Item Name', value: 'itemName' },\n { title: 'Actions', value: 'actions', sortable: false },\n ],\n rules: {\n date: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'yyyy-MM-dd', new Date())) ||\n 'Invalid date (YYYY-MM-DD)'\n )\n } catch (e) {\n return 'Invalid date (YYYY-MM-DD)'\n }\n },\n time: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'HH:mm:ss', new Date())) ||\n 'Invalid time (HH:MM:SS)'\n )\n } catch (e) {\n return 'Invalid time (HH:MM:SS)'\n }\n },\n },\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n editItems: function () {\n if (!this.items) return []\n let itemId = 0\n return this.items.map((item) => {\n itemId += 1\n return { ...item, itemId }\n })\n },\n },\n created() {\n this.graph = {\n title: this.title,\n legendPosition: this.legendPosition,\n items: this.items,\n graphMinY: this.graphMinY,\n graphMaxY: this.graphMaxY,\n lines: [...this.lines],\n }\n // Set the date and time if they pass a dateTime or set a default\n // Start needs a default because if the timeZone is UTC the time will still be local time\n if (this.startDateTime) {\n // Use the passed dateTime as is\n let date = toDate(this.startDateTime / 1000000)\n this.startDate = this.formatDate(date, this.timeZone)\n this.startTime = this.formatTimeHMS(date, this.timeZone)\n } else {\n // Create a new date 1 hr in the past as a default\n let date = new Date() - 3600000\n this.startDate = this.formatDate(date, this.timeZone)\n this.startTime = this.formatTimeHMS(date, this.timeZone)\n }\n // Only set end date / time if it is explicitly passed\n if (this.endDateTime) {\n let date = toDate(this.endDateTime / 1000000)\n this.endDate = this.formatDate(date, this.timeZone)\n this.endTime = this.formatTimeHMS(date, this.timeZone)\n }\n },\n methods: {\n closeOk() {\n if (!!this.startDate && !!this.startTime) {\n this.graph.startDateTime = this.startDate + ' ' + this.startTime\n } else {\n this.graph.startDateTime = null\n }\n if (!!this.endDate && !!this.endTime) {\n this.graph.endDateTime = this.endDate + ' ' + this.endTime\n } else {\n this.graph.endDateTime = null\n }\n this.$emit('ok', this.graph)\n },\n addLine() {\n this.graph.lines.push({ yValue: 0, color: 'white' })\n },\n removeLine(dline) {\n let i = this.graph.lines.indexOf(dline)\n this.graph.lines.splice(i, 1)\n },\n },\n}\n</script>\n\n<style>\n.edit-box {\n color: hsla(0, 0%, 100%, 0.7);\n background-color: var(--color-background-surface-default);\n padding: 10px;\n margin-top: 10px;\n}\n/* For the Y Axis item editor within the Edit Dialog */\n.v-small-dialog__content {\n background-color: var(--color-background-surface-selected);\n padding: 5px 5px;\n}\n.horizontal-lines {\n background-color: var(--color-background-surface-default);\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <!-- Edit Item dialog -->\n <v-dialog v-model=\"show\" width=\"400\" @keydown.enter=\"success()\">\n <v-card>\n <v-card-title class=\"mb-2\">Edit Item</v-card-title>\n <v-card-text>\n <v-select\n variant=\"outlined\"\n hide-details\n label=\"Value Type\"\n :items=\"valueTypes\"\n v-model=\"editItem.valueType\"\n class=\"mb-2\"\n />\n <v-select\n variant=\"outlined\"\n hide-details\n label=\"Reduction\"\n :items=\"reduction\"\n v-model=\"editItem.reduced\"\n class=\"mb-2\"\n />\n <v-select\n variant=\"outlined\"\n hide-details\n label=\"Reduced Type\"\n :items=\"reducedTypes\"\n :disabled=\"editItem.reduced === 'DECOM'\"\n v-model=\"editItem.reducedType\"\n class=\"mb-2\"\n />\n <v-select\n variant=\"outlined\"\n hide-details\n label=\"Color\"\n :items=\"colors\"\n v-model=\"editItem.color\"\n @update:model-value=\"$emit('changeColor', $event)\"\n class=\"mb-2\"\n />\n <div v-if=\"limitsNames.length > 1\">\n <v-select\n variant=\"outlined\"\n hide-details\n label=\"Display Limits\"\n :items=\"limitsNames\"\n v-model=\"limitsName\"\n @update:model-value=\"$emit('changeLimits', limits[limitsName])\"\n />\n <div class=\"pa-3\">{{ limitsName }}: {{ limits[limitsName] }}</div>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"$emit('cancel')\"> Cancel </v-btn>\n <v-btn variant=\"flat\" @click=\"$emit('close', editItem)\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\nexport default {\n props: {\n modelValue: Boolean,\n item: {\n type: Object,\n required: true,\n },\n colors: {\n type: Array,\n required: true,\n },\n },\n data: function () {\n return {\n editItem: null,\n limitsName: 'NONE',\n // NONE: [] matches the default limits assigned in Graph addItems\n limits: { NONE: [] },\n valueTypes: ['CONVERTED', 'RAW'],\n reduction: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n limitsNames() {\n return Object.keys(this.limits)\n },\n },\n async created() {\n this.editItem = { ...this.item }\n new OpenC3Api()\n .get_item(this.item.targetName, this.item.packetName, this.item.itemName)\n .then((details) => {\n for (const [key, value] of Object.entries(details.limits)) {\n if (Object.keys(value).includes('red_low')) {\n this.limits[key] = Object.values(value)\n }\n }\n // Locate the key for the value array that we pass in\n this.limitsName = Object.keys(this.limits).find(\n // Little hack to compare arrays you convert them to strings\n (key) => this.limits[key] + '' === this.editItem.limits + '',\n )\n })\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n#\n# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div @click.prevent=\"$emit('click')\">\n <v-card>\n <v-toolbar\n height=\"24\"\n class=\"pl-2 pr-2\"\n :class=\"selectedGraphId === id ? 'active' : ''\"\n v-show=\"!hideToolbarData\"\n >\n <div v-show=\"errors.length !== 0\" class=\"mx-2\">\n <v-tooltip text=\"Errors\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"errorDialog = true\">\n mdi-alert\n </v-icon>\n </template>\n </v-tooltip>\n </div>\n\n <v-tooltip text=\"Edit\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"editGraph = true\"\n data-test=\"edit-graph-icon\"\n >\n mdi-pencil\n </v-icon>\n </template>\n </v-tooltip>\n\n <v-spacer />\n <span> {{ title }} </span>\n <v-spacer />\n\n <div v-show=\"expand\">\n <v-tooltip v-if=\"calcFullSize\" text=\"Collapse\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"collapseAll\"\n data-test=\"collapse-all\"\n >\n mdi-arrow-collapse\n </v-icon>\n </template>\n </v-tooltip>\n <v-tooltip v-else text=\"Expand\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"expandAll\" data-test=\"expand-all\">\n mdi-arrow-expand\n </v-icon>\n </template>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip v-if=\"fullWidth\" text=\"Collapse Width\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"collapseWidth\"\n data-test=\"collapse-width\"\n >\n mdi-arrow-collapse-horizontal\n </v-icon>\n </template>\n </v-tooltip>\n <v-tooltip v-else text=\"Expand Width\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"expandWidth\"\n data-test=\"expand-width\"\n >\n mdi-arrow-expand-horizontal\n </v-icon>\n </template>\n </v-tooltip>\n </div>\n\n <div v-show=\"expand\">\n <v-tooltip v-if=\"fullHeight\" text=\"Collapse Height\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"collapseHeight\"\n data-test=\"collapse-height\"\n >\n mdi-arrow-collapse-vertical\n </v-icon>\n </template>\n </v-tooltip>\n <v-tooltip v-else text=\"Expand Height\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"expandHeight\"\n data-test=\"expand-height\"\n >\n mdi-arrow-expand-vertical\n </v-icon>\n </template>\n </v-tooltip>\n </div>\n\n <v-tooltip v-if=\"expand\" text=\"Minimize\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"minMaxTransition\"\n data-test=\"minimize-screen-icon\"\n >\n mdi-window-minimize\n </v-icon>\n </template>\n </v-tooltip>\n <v-tooltip v-else text=\"Maximize\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"minMaxTransition\"\n data-test=\"maximize-screen-icon\"\n >\n mdi-window-maximize\n </v-icon>\n </template>\n </v-tooltip>\n\n <v-tooltip text=\"Close\" location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon\n v-bind=\"props\"\n @click=\"$emit('close-graph')\"\n data-test=\"close-graph-icon\"\n >\n mdi-close-box\n </v-icon>\n </template>\n </v-tooltip>\n </v-toolbar>\n\n <v-expand-transition>\n <div class=\"pa-1\" id=\"chart\" ref=\"chart\" v-show=\"expand\">\n <div :id=\"`chart${id}`\"></div>\n <div id=\"betweenCharts\"></div>\n <div :id=\"`overview${id}`\" v-show=\"showOverview\"></div>\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit graph dialog -->\n <graph-edit-dialog\n v-if=\"editGraph\"\n v-model=\"editGraph\"\n :title=\"title\"\n :legend-position=\"legendPosition\"\n :items=\"items\"\n :graph-min-y=\"graphMinY\"\n :graph-max-y=\"graphMaxY\"\n :lines=\"lines\"\n :colors=\"colors\"\n :start-date-time=\"graphStartDateTime\"\n :end-date-time=\"graphEndDateTime\"\n :time-zone=\"timeZone\"\n @remove=\"removeItems([$event])\"\n @ok=\"editGraphClose\"\n @cancel=\"editGraph = false\"\n />\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Errors </span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n readonly\n hide-details\n v-model=\"title\"\n class=\"pb-2\"\n label=\"Graph Title\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"8\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n\n <!-- Edit right click context menu -->\n <v-menu\n v-if=\"editGraphMenu\"\n v-model=\"editGraphMenu\"\n :target=\"[editGraphMenuX, editGraphMenuY]\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"editGraph = true\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ title }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <graph-edit-item-dialog\n v-if=\"editItem\"\n v-model=\"editItem\"\n :colors=\"colors\"\n :item=\"selectedItem\"\n @changeColor=\"changeColor\"\n @changeLimits=\"changeLimits\"\n @cancel=\"editItem = false\"\n @close=\"closeEditItem\"\n />\n\n <!-- Edit Item right click context menu -->\n <v-menu\n v-if=\"itemMenu\"\n v-model=\"itemMenu\"\n :target=\"[itemMenuX, itemMenuY]\"\n absolute\n offset-y\n >\n <v-list nav density=\"compact\">\n <v-list-subheader>\n {{ selectedItem.targetName }}\n {{ selectedItem.packetName }}\n {{ selectedItem.itemName }}\n </v-list-subheader>\n <v-list-item @click=\"editItem = true\">\n <template v-slot:prepend>\n <v-icon icon=\"mdi-pencil\" />\n </template>\n <v-list-item-title> Edit </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"clearData([selectedItem])\">\n <template v-slot:prepend>\n <v-icon icon=\"mdi-eraser\" />\n </template>\n <v-list-item-title> Clear </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"removeItems([selectedItem])\">\n <template v-slot:prepend>\n <v-icon icon=\"mdi-delete\" />\n </template>\n <v-list-item-title> Delete </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <!-- Edit Legend right click context menu -->\n <v-menu\n v-if=\"legendMenu\"\n v-model=\"legendMenu\"\n :target=\"[legendMenuX, legendMenuY]\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"moveLegend('top')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Top\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('bottom')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Bottom\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('left')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Left\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('right')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend RIght\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <div v-if=\"!sparkline\" class=\"u-series\" ref=\"info\">\n <v-tooltip\n text=\"Click item to toggle, Right click to edit\"\n location=\"top\"\n >\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\"> mdi-information-variant-circle </v-icon>\n </template>\n </v-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport GraphEditDialog from './GraphEditDialog.vue'\nimport GraphEditItemDialog from './GraphEditItemDialog.vue'\nimport uPlot from 'uplot'\nimport bs from 'binary-search'\nimport { Cable } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\n\nimport 'uplot/dist/uPlot.min.css'\n\nexport default {\n components: {\n GraphEditDialog,\n GraphEditItemDialog,\n },\n props: {\n id: {\n type: Number,\n required: true,\n },\n selectedGraphId: {\n type: Number,\n // Not required because we pass null\n },\n state: {\n type: String,\n required: true,\n },\n // start time in nanoseconds to start the graph\n // this allows multiple graphs to be synchronized\n startTime: {\n type: Number,\n },\n secondsGraphed: {\n type: Number,\n required: true,\n },\n pointsSaved: {\n type: Number,\n required: true,\n },\n pointsGraphed: {\n type: Number,\n required: true,\n },\n refreshIntervalMs: {\n type: Number,\n default: 200,\n },\n hideToolbar: {\n type: Boolean,\n default: false,\n },\n hideOverview: {\n type: Boolean,\n default: false,\n },\n sparkline: {\n type: Boolean,\n default: false,\n },\n initialItems: {\n type: Array,\n },\n // These allow the parent to force a specific height and/or width\n height: {\n type: Number,\n },\n width: {\n type: Number,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n mixins: [TimeFilters],\n data() {\n return {\n lines: [],\n active: true,\n expand: true,\n fullWidth: true,\n fullHeight: true,\n graph: null,\n editGraph: false,\n editGraphMenu: false,\n editGraphMenuX: 0,\n editGraphMenuY: 0,\n editItem: false,\n itemMenu: false,\n itemMenuX: 0,\n itemMenuY: 0,\n legendMenu: false,\n legendMenuX: 0,\n legendMenuY: 0,\n legendPosition: 'bottom',\n selectedItem: null,\n hideToolbarData: this.hideToolbar,\n showOverview: !this.hideOverview,\n hideOverviewData: this.hideOverview,\n title: '',\n overview: null,\n data: [[]],\n dataChanged: false,\n timeout: null,\n graphMinY: null,\n graphMaxY: null,\n graphStartDateTime: null,\n graphEndDateTime: null,\n indexes: {},\n items: this.initialItems || [],\n limitsValues: [],\n drawInterval: null,\n zoomChart: false,\n zoomOverview: false,\n cable: new Cable(),\n subscription: null,\n needToUpdate: false,\n errorDialog: false,\n errors: [],\n colorIndex: 0,\n colors: [\n // The first 3 are taken from the Astro css definitions for\n // --color-data-visualization-1 through 3\n '#00c7cb',\n '#938bdb',\n '#4dacff',\n 'lime',\n 'darkorange',\n 'red',\n 'gold',\n 'hotpink',\n 'tan',\n 'cyan',\n 'maroon',\n 'blue',\n 'teal',\n 'purple',\n 'green',\n 'brown',\n 'lightblue',\n 'white',\n 'black',\n ],\n }\n },\n computed: {\n calcFullSize: function () {\n return this.fullWidth || this.fullHeight\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n },\n created() {\n this.title = `Graph ${this.id}`\n for (const [index, item] of this.items.entries()) {\n this.data.push([]) // initialize the empty data arrays\n this.indexes[this.subscriptionKey(item)] = index + 1\n if (item.color === undefined) {\n item.color = this.colors[this.colorIndex]\n }\n this.colorIndex++\n if (this.colorIndex === this.colors.length) {\n this.colorIndex = 0\n }\n }\n },\n mounted() {\n // This code allows for temporary pulling in a patched uPlot\n // Also note you need to add 'async' before the mounted method for await\n // const plugin = document.createElement('script')\n // plugin.setAttribute(\n // 'src',\n // 'https://leeoniya.github.io/uPlot/dist/uPlot.iife.min.js'\n // )\n // plugin.async = true\n // document.head.appendChild(plugin)\n // await new Promise(r => setTimeout(r, 500)) // Allow the js to load\n\n // TODO: This is demo / performance code of multiple items with many data points\n // 10 items at 500,000 each renders immediately and uses 180MB in Chrome\n // Refresh still works, chrome is sluggish but once you pause it is very performant\n // 500,000 pts at 1Hz is 138.9hrs .. almost 6 days\n //\n // 10 items at 100,000 each is very performant ... 1,000,000 pts is Qt TlmGrapher default\n // 100,000 pts at 1Hz is 27.8hrs\n //\n // 100,000 takes 40ms, Chrome uses 160MB\n // this.data = []\n // const dataPoints = 100000\n // const items = 10\n // let pts = new Array(dataPoints)\n // let times = new Array(dataPoints)\n // let time = 1589398007\n // let series = [{}]\n // for (let i = 0; i < dataPoints; i++) {\n // times[i] = time\n // pts[i] = i\n // time += 1\n // }\n // this.data.push(times)\n // for (let i = 0; i < items; i++) {\n // this.data.push(pts.map(x => x + i))\n // series.push({\n // label: 'Item' + i,\n // stroke: this.colors[i]\n // })\n // }\n\n // NOTE: These are just initial settings ... actual series are added by this.graph.addSeries\n const { chartSeries, overviewSeries } = this.items.reduce(\n (seriesObj, item) => {\n const commonProps = {\n spanGaps: true,\n }\n seriesObj.chartSeries.push({\n ...commonProps,\n item: item,\n label: this.formatLabel(item),\n stroke: (u, seriesIdx) => {\n return this.items[seriesIdx - 1].color\n },\n width: 2,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else {\n return rawValue == null ? '--' : rawValue.toFixed(3)\n }\n },\n })\n seriesObj.overviewSeries.push({\n ...commonProps,\n })\n return seriesObj\n },\n { chartSeries: [], overviewSeries: [] },\n )\n\n let chartOpts = {}\n if (this.sparkline) {\n this.hideToolbarData = true\n this.hideOverviewData = true\n this.showOverview = false\n chartOpts = {\n width: this.width,\n height: this.height,\n pxAlign: false,\n cursor: {\n show: false,\n },\n select: {\n show: false,\n },\n legend: {\n show: false,\n },\n scales: {\n x: {\n time: false,\n },\n },\n axes: [\n {\n show: false,\n },\n {\n show: false,\n },\n ],\n series: [\n {},\n {\n stroke: 'white', // TODO: Light / dark theme\n },\n ],\n }\n this.graph = new uPlot(\n chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`),\n )\n } else {\n // Uplot wants the real timezone name ('local' doesn't work)\n let timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (this.timeZone && this.timeZone !== 'local') {\n timeZoneName = this.timeZone\n }\n chartOpts = {\n ...this.getSize('chart'),\n ...this.getScales(),\n ...this.getAxes('chart'),\n // series: series, // TODO: Uncomment with the performance code\n plugins: [this.linesPlugin()],\n tzDate: (ts) => uPlot.tzDate(new Date(ts * 1e3), timeZoneName),\n series: [\n {\n label: 'Time',\n value: (u, v) =>\n // Convert the unix timestamp into a formatted date / time\n v == null ? '--' : this.formatSeconds(v, this.timeZone),\n },\n ...chartSeries,\n ],\n cursor: {\n drag: {\n x: true,\n y: false,\n },\n // Sync the cursor across graphs so mouseovers are synced\n sync: {\n key: 'openc3',\n // setSeries links graphs so clicking an item to hide it also hides the other graph item\n // setSeries: true,\n },\n bind: {\n mouseup: (self, targ, handler) => {\n return (e) => {\n // Single click while paused will resume the graph\n // This makes it possible to resume in TlmViewer widgets\n if (this.state === 'pause' && self.select.width === 0) {\n this.$emit('start')\n }\n handler(e)\n }\n },\n },\n },\n hooks: {\n setScale: [\n (chart, key) => {\n if (key === 'x' && !this.zoomOverview && this.overview) {\n this.zoomChart = true\n let left = Math.round(\n this.overview.valToPos(chart.scales.x.min, 'x'),\n )\n let right = Math.round(\n this.overview.valToPos(chart.scales.x.max, 'x'),\n )\n this.overview.setSelect({ left, width: right - left })\n this.zoomChart = false\n }\n },\n ],\n setSelect: [\n (chart) => {\n // Pause the graph while selecting a range to zoom\n if (this.state === 'start' && chart.select.width > 0) {\n this.$emit('pause')\n }\n },\n ],\n ready: [\n (u) => {\n let canvas = u.root.querySelector('.u-over')\n canvas.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.itemMenu = false\n this.legendMenu = false\n this.editGraphMenuX = e.clientX\n this.editGraphMenuY = e.clientY\n this.editGraphMenu = true\n })\n let legend = u.root.querySelector('.u-legend')\n legend.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.editGraphMenu = false\n this.legendMenu = false\n this.itemMenuX = e.clientX\n this.itemMenuY = e.clientY\n // Grab the closest series and then figure out which index it is\n let seriesEl = e.target.closest('.u-series')\n let seriesIdx = Array.prototype.slice\n .call(legend.childNodes[0].childNodes)\n .indexOf(seriesEl)\n let series = u.series[seriesIdx]\n if (series.item) {\n this.selectedItem = series.item\n this.itemMenu = true\n } else {\n this.itemMenu = false\n this.legendMenuX = e.clientX\n this.legendMenuY = e.clientY\n this.legendMenu = true\n }\n })\n // Append the info to the legend\n legend.querySelector('tbody').appendChild(this.$refs.info)\n },\n ],\n },\n }\n this.graph = new uPlot(\n chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`),\n )\n\n const overviewOpts = {\n ...this.getSize('overview'),\n ...this.getScales(),\n ...this.getAxes('overview'),\n // series: series, // TODO: Uncomment with the performance code\n tzDate: (ts) => uPlot.tzDate(new Date(ts * 1e3), timeZoneName),\n series: [...overviewSeries],\n cursor: {\n y: false,\n drag: {\n setScale: false,\n x: true,\n y: false,\n },\n },\n legend: {\n show: false,\n },\n hooks: {\n setSelect: [\n (chart) => {\n if (!this.zoomChart) {\n // Pause the graph while selecting an overview range to zoom\n if (this.state === 'start' && chart.select.width > 0) {\n this.$emit('pause')\n }\n this.zoomOverview = true\n let min = chart.posToVal(chart.select.left, 'x')\n let max = chart.posToVal(\n chart.select.left + chart.select.width,\n 'x',\n )\n this.graph.setScale('x', { min, max })\n this.zoomOverview = false\n }\n },\n ],\n },\n }\n if (!this.hideOverview) {\n this.overview = new uPlot(\n overviewOpts,\n this.data,\n document.getElementById(`overview${this.id}`),\n )\n }\n this.moveLegend(this.legendPosition)\n\n // Allow the charts to dynamically resize when the window resizes\n window.addEventListener('resize', this.resize)\n }\n\n if (this.state !== 'stop') {\n this.startGraph()\n }\n },\n beforeUnmount: function () {\n this.stopGraph()\n this.cable.disconnect()\n window.removeEventListener('resize', this.resize)\n },\n watch: {\n state: function (newState, oldState) {\n switch (newState) {\n case 'start':\n // Only subscribe if we were previously stopped\n // If we were paused we do nothing ... see the data function\n if (oldState === 'stop') {\n this.startGraph()\n }\n break\n // case 'pause': Nothing to do ... see the data function\n case 'stop':\n this.stopGraph()\n break\n }\n },\n data: function (newData, oldData) {\n this.dataChanged = true\n },\n graphMinY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMinY = val\n }\n this.setGraphRange()\n },\n graphMaxY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMaxY = val\n }\n this.setGraphRange()\n },\n graphStartDateTime: function (newVal, oldVal) {\n if (newVal && typeof newVal === 'string') {\n this.graphStartDateTime =\n this.parseDateTime(this.graphStartDateTime, this.timeZone) * 1000000\n if (this.graphStartDateTime !== oldVal) {\n this.needToUpdate = true\n }\n } else if (newVal === null && oldVal) {\n // If they clear the start date time we need to update\n this.graphStartDateTime = null\n this.needToUpdate = true\n }\n },\n graphEndDateTime: function (newVal, oldVal) {\n if (newVal && typeof newVal === 'string') {\n this.graphEndDateTime =\n this.parseDateTime(this.graphEndDateTime, this.timeZone) * 1000000\n if (this.graphEndDateTime !== oldVal) {\n this.needToUpdate = true\n }\n } else if (newVal === null && oldVal) {\n // If they clear the end date time we need to update\n this.graphEndDateTime = null\n this.needToUpdate = true\n }\n },\n },\n methods: {\n startGraph: function () {\n this.subscribe()\n this.timeout = setTimeout(() => {\n this.updateTimeout()\n }, this.refreshIntervalMs)\n },\n stopGraph: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.subscription = null\n }\n if (this.timeout) {\n clearTimeout(this.timeout)\n this.timeout = null\n }\n },\n updateTimeout: function () {\n this.updateGraphData()\n this.timeout = setTimeout(() => {\n this.updateTimeout()\n }, this.refreshIntervalMs)\n },\n updateGraphData: function () {\n // Ignore changes to the data while we're paused\n if (this.state === 'pause' || !this.dataChanged) {\n return\n }\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n let max = this.data[0][this.data[0].length - 1]\n let ptsMin = this.data[0][this.data[0].length - this.pointsGraphed]\n let min = this.data[0][0]\n if (min < max - this.secondsGraphed) {\n min = max - this.secondsGraphed\n }\n if (ptsMin > min) {\n min = ptsMin\n }\n this.graph.setScale('x', { min, max })\n this.dataChanged = false\n },\n formatLabel(item) {\n if (item.valueType === 'CONVERTED' && item.reduced === 'DECOM') {\n return item.itemName\n } else {\n let description = ''\n // Only display valueType if we're not CONVERTED\n if (item.valueType !== 'CONVERTED') {\n description += item.valueType\n }\n // Only display reduced if we're not DECOM\n if (item.reduced !== 'DECOM') {\n // If we already have the valueType add a space\n if (description !== '') {\n description += ' '\n }\n description += `${item.reduced.split('_')[1]} ${item.reducedType}`\n }\n return `${item.itemName} (${description})`\n }\n },\n moveLegend: function (desired) {\n switch (desired) {\n case 'bottom':\n this.graph.root.classList.remove('side-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.remove('top-legend')\n break\n case 'top':\n this.graph.root.classList.remove('side-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.add('top-legend')\n break\n case 'left':\n this.graph.root.classList.remove('top-legend')\n this.graph.root.classList.add('side-legend')\n this.graph.root.classList.add('left-legend')\n break\n case 'right':\n this.graph.root.classList.remove('top-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.add('side-legend')\n break\n }\n this.legendPosition = desired\n this.resize()\n },\n clearErrors: function () {\n this.errors = []\n },\n editGraphClose: function (graph) {\n this.editGraph = false\n this.title = graph.title\n // Don't need to copy items because we don't modify them\n this.legendPosition = graph.legendPosition\n this.graphMinY = graph.graphMinY\n this.graphMaxY = graph.graphMaxY\n this.lines = [...graph.lines]\n this.graphStartDateTime = graph.startDateTime\n this.graphEndDateTime = graph.endDateTime\n // Allow the watch to update needToUpdate\n this.$nextTick(() => {\n if (this.needToUpdate) {\n if (this.subscription == null) {\n this.startGraph()\n } else {\n // NOTE: removing and adding back to back broke the streaming_api\n // because the messages got out of order (add before remove)\n // Code in openc3-cosmos-cmd-tlm-api/app/channels/application_cable/channel.rb\n // fixed the issue to enforce ordering.\n // Clone the items first because removeItems modifies this.items\n let clonedItems = JSON.parse(JSON.stringify(this.items))\n this.removeItems(clonedItems)\n setTimeout(() => {\n this.addItems(clonedItems)\n }, 0)\n }\n this.needToUpdate = false\n }\n })\n this.moveLegend(this.legendPosition)\n this.$emit('edit')\n },\n resize: function () {\n this.graph.setSize(this.getSize('chart'))\n if (this.overview) {\n this.overview.setSize(this.getSize('overview'))\n }\n this.$emit('resize', this.id)\n },\n expandAll: function () {\n this.fullWidth = true\n this.fullHeight = true\n this.resize()\n },\n collapseAll: function () {\n this.fullWidth = false\n this.fullHeight = false\n this.resize()\n },\n expandWidth: function () {\n this.fullWidth = true\n this.resize()\n },\n collapseWidth: function () {\n this.fullWidth = false\n this.resize()\n },\n expandHeight: function () {\n this.fullHeight = true\n this.resize()\n },\n collapseHeight: function () {\n this.fullHeight = false\n this.resize()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-graph', this.id)\n },\n setGraphRange: function () {\n let pad = 0.1\n if (\n this.graphMinY ||\n this.graphMinY === 0 ||\n this.graphMaxY ||\n this.graphMaxY === 0\n ) {\n pad = 0\n }\n this.graph.scales.y.range = (u, dataMin, dataMax) => {\n let min = dataMin\n if (this.graphMinY || this.graphMinY === 0) {\n min = this.graphMinY\n }\n let max = dataMax\n if (this.graphMaxY || this.graphMaxY === 0) {\n max = this.graphMaxY\n }\n return uPlot.rangeNum(min, max, pad, true)\n }\n },\n subscribe: function () {\n this.cable\n .createSubscription('StreamingChannel', window.openc3Scope, {\n received: (data) => this.received(data),\n connected: () => {\n this.addItemsToSubscription(this.items)\n },\n disconnected: (data) => {\n // If allowReconnect is true it means we got a disconnect due to connection lost or server disconnect\n // If allowReconnect is false this is a normal server close or client close\n if (data.allowReconnect) {\n this.errors.push({\n type: 'disconnected',\n message: 'OpenC3 backend connection disconnected',\n time: new Date().getTime(),\n })\n }\n },\n rejected: () => {\n this.errors.push({\n type: 'rejected',\n message: 'OpenC3 backend connection rejected',\n time: new Date().getTime(),\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n // throttle(cb, limit) {\n // let wait = false\n // return () => {\n // if (!wait) {\n // requestAnimationFrame(cb)\n // wait = true\n // setTimeout(() => {\n // wait = false\n // }, limit)\n // }\n // }\n // },\n getSize: function (type) {\n let navDrawerWidth = 0\n const navDrawer = document.getElementById('openc3-nav-drawer')\n if (navDrawer) {\n navDrawerWidth = navDrawer.classList.contains(\n 'v-navigation-drawer--active',\n )\n ? navDrawer.clientWidth\n : 0\n }\n let legendWidth = 0\n if (this.legendPosition === 'right' || this.legendPosition === 'left') {\n const legend = document.getElementsByClassName('u-legend')[0]\n legendWidth = legend.clientWidth\n }\n const viewWidth =\n Math.max(document.documentElement.clientWidth, window.innerWidth || 0) -\n navDrawerWidth -\n legendWidth\n const viewHeight = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0,\n )\n\n const panel = document.getElementsByClassName('v-expansion-panel')[0]\n let height = 100\n if (type === 'overview') {\n // Show overview if we're full height and we're not explicitly hiding it\n if (this.fullHeight && !this.hideOverviewData) {\n this.showOverview = true\n } else {\n this.showOverview = false\n }\n } else {\n // Height of chart is viewportSize - expansion-panel - overview - fudge factor (primarily padding)\n height = viewHeight - panel.clientHeight - height - 250\n if (!this.fullHeight) {\n height = height / 2.0 + 10 // 5px padding top and bottom\n }\n }\n // subtract off some arbitrary padding left and right to make the layout work\n let width = viewWidth - 70\n if (!this.fullWidth) {\n // 6px padding left and right defined in TlmGrapher.vue .item-content\n width = width / 2.0 - 12\n }\n return {\n width: this.width || width,\n height: this.height || height,\n }\n },\n getScales: function () {\n return {\n scales: {\n x: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [1566453600, 1566497660]\n return [dataMin, dataMax]\n },\n },\n y: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [-100, 100]\n return uPlot.rangeNum(dataMin, dataMax, 0.1, true)\n },\n },\n },\n }\n },\n getAxes: function (type) {\n let strokeColor = 'rgba(255, 255, 255, .1)'\n let axisColor = 'white'\n return {\n axes: [\n {\n stroke: axisColor,\n grid: {\n show: true,\n stroke: strokeColor,\n width: 2,\n },\n },\n {\n size: 80, // This size supports values up to 8 digits plus sign\n stroke: axisColor,\n grid: {\n show: type === 'overview' ? false : true,\n stroke: strokeColor,\n width: 2,\n },\n // Forces the axis values to be formatted correctly\n // especially with really small or large values\n values(u, splits) {\n if (\n splits.some((el) => el >= 10000000) ||\n splits.every((el) => el < 0.01)\n ) {\n splits = splits.map((split) => split.toExponential(3))\n }\n return splits\n },\n },\n ],\n }\n },\n closeEditItem: function (event) {\n this.editItem = false\n if (\n // If we have an end time and anything was changed we basically regraph\n (this.graphEndDateTime !== null && this.selectedItem !== event) ||\n // If we're live graphing we just regraph if the types change\n this.selectedItem.valueType !== event.valueType ||\n this.selectedItem.reduced !== event.reduced ||\n this.selectedItem.reducedType !== event.reducedType\n ) {\n this.changeItem(event)\n }\n },\n changeColor: function (event) {\n let key = this.subscriptionKey(this.selectedItem)\n let index = this.indexes[key]\n this.items[index - 1].color = event\n this.selectedItem.color = event\n this.graph.root.querySelectorAll('.u-marker')[index].style.borderColor =\n event\n },\n changeLimits: function (limits) {\n let key = this.subscriptionKey(this.selectedItem)\n let index = this.indexes[key]\n this.items[index - 1].limits = limits\n this.selectedItem.limits = limits\n this.limitsValues = limits\n },\n linesPlugin: function () {\n return {\n hooks: {\n draw: (u) => {\n const { ctx, bbox } = u\n // These are all in canvas units\n const yMin = u.valToPos(u.scales.y.min, 'y', true)\n const yMax = u.valToPos(u.scales.y.max, 'y', true)\n const redLow = u.valToPos(this.limitsValues[0], 'y', true)\n const yellowLow = u.valToPos(this.limitsValues[1], 'y', true)\n const yellowHigh = u.valToPos(this.limitsValues[2], 'y', true)\n const redHigh = u.valToPos(this.limitsValues[3], 'y', true)\n let height = 0\n\n // NOTE: These comparisons are tricky because the canvas\n // starts in the upper left with 0,0. Thus it grows downward\n // and to the right with increasing values. The comparisons\n // of scale and limitsValues use graph coordinates but the\n // fillRect calculations use the canvas coordinates.\n\n // Draw Y axis lines\n this.lines.forEach((line) => {\n if (\n u.scales.y.min <= line.yValue &&\n line.yValue <= u.scales.y.max\n ) {\n ctx.save()\n ctx.beginPath()\n ctx.strokeStyle = line.color\n ctx.lineWidth = 2\n ctx.moveTo(bbox.left, u.valToPos(line.yValue, 'y', true))\n ctx.lineTo(\n bbox.left + bbox.width,\n u.valToPos(line.yValue, 'y', true),\n )\n ctx.stroke()\n ctx.restore()\n }\n })\n\n ctx.save()\n ctx.beginPath()\n\n // Draw red limits\n ctx.fillStyle = 'rgba(255,0,0,0.15)'\n if (u.scales.y.min < this.limitsValues[0]) {\n let start = redLow < yMax ? yMax : redLow\n ctx.fillRect(bbox.left, redLow, bbox.width, yMin - start)\n }\n if (u.scales.y.max > this.limitsValues[3]) {\n let end = yMin < redHigh ? yMin : redHigh\n ctx.fillRect(bbox.left, yMax, bbox.width, end - yMax)\n }\n\n // Draw yellow limits\n ctx.fillStyle = 'rgba(255,255,0,0.15)'\n if (\n u.scales.y.min < this.limitsValues[1] && // yellowLow\n u.scales.y.max > this.limitsValues[0] // redLow\n ) {\n let start = yellowLow < yMax ? yMax : yellowLow\n ctx.fillRect(bbox.left, start, bbox.width, redLow - start)\n }\n if (\n u.scales.y.max > this.limitsValues[2] && // yellowHigh\n u.scales.y.min < this.limitsValues[3] // redHigh\n ) {\n let start = yMin < redHigh ? yMin : redHigh\n let end = yMin < yellowHigh ? yMin : yellowHigh\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n\n // Draw green limits & operational limits\n ctx.fillStyle = 'rgba(0,255,0,0.15)'\n // If there are no operational limits the interior is all green\n if (this.limitsValues.length === 4) {\n // Determine if we show any green\n if (\n u.scales.y.min < this.limitsValues[2] && // yellowHigh\n u.scales.y.max > this.limitsValues[1] // yellowLow\n ) {\n let start = yellowHigh < yMax ? yMax : yellowHigh\n let end = yMin < yellowLow ? yMin : yellowLow\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n } else {\n // Operational limits\n const greenLow = u.valToPos(this.limitsValues[4], 'y', true)\n const greenHigh = u.valToPos(this.limitsValues[5], 'y', true)\n if (\n u.scales.y.min < this.limitsValues[4] && // greenLow\n u.scales.y.max > this.limitsValues[1] // yellowLow\n ) {\n let start = greenLow < yMax ? yMax : greenLow\n ctx.fillRect(bbox.left, start, bbox.width, yellowLow - start)\n }\n if (\n u.scales.y.max > this.limitsValues[5] && // greenHigh\n u.scales.y.min < this.limitsValues[2] // yellowHigh\n ) {\n let start = yMin < yellowHigh ? yMin : yellowHigh\n let end = yMin < greenHigh ? yMin : greenHigh\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n ctx.fillStyle = 'rgba(0,0,255,0.15)'\n let start = greenHigh < yMax ? yMax : greenHigh\n let end = yMin < greenLow ? yMin : greenLow\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n ctx.stroke()\n ctx.restore()\n },\n },\n }\n },\n changeItem: function (event) {\n // NOTE: removing and adding items back to back broke the streaming_api\n // because the messages got out of order (add before remove)\n // Code in openc3-cosmos-cmd-tlm-api/app/channels/application_cable/channel.rb\n // fixed the issue to enforce ordering.\n this.removeItems([this.selectedItem])\n this.selectedItem.valueType = event.valueType\n this.selectedItem.reduced = event.reduced\n this.selectedItem.reducedType = event.reducedType\n setTimeout(() => {\n this.addItems([this.selectedItem])\n }, 0)\n },\n addItems: function (itemArray, type = 'CONVERTED') {\n itemArray.forEach((item) => {\n item.valueType ||= type // set the default type\n item.color ||= this.colors[this.colorIndex]\n item.limits ||= []\n\n if (item.limits.length > 0) {\n this.limitsValues = item.limits\n }\n\n this.colorIndex = (this.colorIndex + 1) % this.colors.length\n this.items.push(item)\n\n const index = this.data.length\n this.graph.addSeries(this.createSeriesConfig(item), index)\n\n if (this.overview) {\n this.overview.addSeries(this.createOverviewSeriesConfig(), index)\n }\n\n this.data.splice(index, 0, Array(this.data[0].length))\n this.indexes[this.subscriptionKey(item)] = index\n })\n\n this.updateColorIndex(itemArray)\n this.addItemsToSubscription(itemArray)\n this.$emit('resize')\n this.$emit('edit')\n },\n createSeriesConfig: function (item) {\n return {\n spanGaps: true,\n item: item,\n label: this.formatLabel(item),\n stroke: (u, seriesIdx) => this.items[seriesIdx - 1].color,\n width: 2,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else if (rawValue == null) {\n return '--'\n } else if (\n (Math.abs(rawValue) < 0.01 && rawValue !== 0) ||\n Math.abs(rawValue) >= 10000000\n ) {\n return rawValue.toExponential(6)\n } else {\n return rawValue.toFixed(6)\n }\n },\n }\n },\n createOverviewSeriesConfig: function () {\n return {\n spanGaps: true,\n stroke: (u, seriesIdx) => this.items[seriesIdx - 1].color,\n }\n },\n updateColorIndex: function (itemArray) {\n const lastItem = itemArray[itemArray.length - 1]\n if (lastItem) {\n const index = this.colors.indexOf(lastItem.color)\n if (index !== -1) {\n this.colorIndex = (index + 1) % this.colors.length\n }\n }\n },\n addItemsToSubscription: function (itemArray = this.items) {\n let theStartTime = this.startTime\n if (this.graphStartDateTime) {\n theStartTime = this.graphStartDateTime\n }\n if (this.subscription) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n this.subscription.perform('add', {\n scope: window.openc3Scope,\n token: localStorage.openc3Token,\n items: itemArray.map(this.subscriptionKey),\n start_time: theStartTime,\n end_time: this.graphEndDateTime,\n })\n },\n )\n }\n },\n clearAllData: function () {\n // Clear all data so delete the time data as well\n this.data[0] = []\n this.clearData(this.items)\n },\n clearData: function (itemArray) {\n for (const key of itemArray.map(this.subscriptionKey)) {\n let index = this.indexes[key]\n this.data[index] = Array(this.data[0].length).fill(null)\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n // data.length of 2 means we only have 1 item\n // so delete all the time (data[0]) to start fresh\n if (this.data.length === 2) {\n this.data[0] = []\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n },\n removeItems: function (itemArray) {\n this.removeItemsFromSubscription(itemArray)\n\n for (const key of itemArray.map(this.subscriptionKey)) {\n const index = this.reorderIndexes(key)\n this.items.splice(index - 1, 1)\n this.data.splice(index, 1)\n this.graph.delSeries(index)\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.delSeries(index)\n this.overview.setData(this.data)\n }\n }\n // data.length of 1 means we've deleted all our items\n // so delete all the time (data[0]) to start fresh\n if (this.data.length === 1) {\n this.data[0] = []\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n this.$emit('resize')\n this.$emit('edit')\n },\n removeItemsFromSubscription: function (itemArray = this.items) {\n if (this.subscription) {\n this.subscription.perform('remove', {\n scope: window.openc3Scope,\n token: localStorage.openc3Token,\n items: itemArray.map(this.subscriptionKey),\n })\n }\n },\n reorderIndexes: function (key) {\n let index = this.indexes[key]\n delete this.indexes[key]\n for (let i in this.indexes) {\n if (this.indexes[i] > index) {\n this.indexes[i] -= 1\n }\n }\n return index\n },\n received: function (data) {\n this.cable.recordPing()\n // TODO: Shouldn't get errors but should we handle this every time?\n // if (json_data.error) {\n // console.log(json_data.error)\n // return\n // }\n for (let i = 0; i < data.length; i++) {\n let time = data[i].__time / 1000000000.0 // Time in seconds\n let length = this.data[0].length\n if (length === 0 || time > this.data[0][length - 1]) {\n // Nominal case - append new data to end\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].push(null)\n }\n this.set_data_at_index(this.data[0].length - 1, time, data[i])\n } else {\n let index = bs(this.data[0], time, this.bs_comparator)\n if (index >= 0) {\n // Found a slot with the exact same time value\n // Handle duplicate time by subtracting a small amount until we find an open slot\n while (index >= 0) {\n time -= 1e-5 // Subtract 10 microseconds\n index = bs(this.data[0], time, this.bs_comparator)\n }\n // Now that we have a unique time, insert at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n // Use the adjusted time but keep the original data\n this.set_data_at_index(ideal_index, time, data[i])\n } else {\n // Insert a new null slot at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n this.set_data_at_index(ideal_index, time, data[i])\n }\n }\n }\n // If we weren't passed a startTime notify grapher of our start\n if (this.startTime == null && this.data[0][0]) {\n let newStartTime = this.data[0][0] * 1000000000\n this.$emit('started', newStartTime)\n }\n this.dataChanged = true\n },\n bs_comparator: function (element, needle) {\n return element - needle\n },\n set_data_at_index: function (index, time, new_data) {\n this.data[0][index] = time\n for (const [key, value] of Object.entries(new_data)) {\n if (key === 'time') {\n continue\n }\n let key_index = this.indexes[key]\n if (key_index) {\n let array = this.data[key_index]\n // NaN and Infinite values are sent as objects with raw attribute set\n // to 'NaN', '-Infinity', or 'Infinity', just set data to null\n if (value?.raw) {\n array[index] = null\n } else if (typeof value === 'string') {\n // Can't graph strings so just set to null\n array[index] = null\n // If it's not already RAW, change the type to RAW\n // NOTE: Some items are RAW strings so they won't ever work\n if (!key.includes('__RAW')) {\n for (let item of this.items) {\n if (this.subscriptionKey(item) === key) {\n this.selectedItem = item\n break\n }\n }\n this.changeItem({\n valueType: 'RAW',\n reduced: this.selectedItem.reduced,\n reducedType: this.selectedItem.reducedType,\n })\n }\n } else {\n array[index] = value\n }\n }\n }\n },\n subscriptionKey: function (item) {\n let key = `${item.reduced}__TLM__${item.targetName}__${item.packetName}__${item.itemName}__${item.valueType}`\n if (\n item.reduced === 'REDUCED_MINUTE' ||\n item.reduced === 'REDUCED_HOUR' ||\n item.reduced === 'REDUCED_DAY'\n ) {\n key += `__${item.reducedType}`\n }\n return key\n },\n },\n}\n</script>\n\n<style>\n.v-window-item {\n background-color: var(--color-background-surface-default);\n}\n/* left right stacked legend */\n.uplot.side-legend {\n display: flex;\n width: auto;\n}\n.uplot.side-legend .u-wrap {\n flex: none;\n}\n.uplot.side-legend .u-legend {\n text-align: left;\n margin-left: 0;\n width: 220px;\n}\n.uplot.side-legend .u-legend,\n.uplot.side-legend .u-legend tr,\n.uplot.side-legend .u-legend th,\n.uplot.side-legend .u-legend td {\n display: revert;\n}\n/* left side we need to order the legend before the plot */\n.uplot.left-legend .u-legend {\n order: -1;\n}\n/* top legend */\n.uplot.top-legend {\n display: flex;\n flex-direction: column;\n}\n.uplot.top-legend .u-legend {\n order: -1;\n}\n/* This value is large enough to support negative scientific notation\n that we use on the value with rawValue.toExponential(6) */\n.u-legend.u-inline .u-series .u-value {\n width: 105px;\n}\n/* This value is large enough to support our date format: YYYY-MM-DD HH:MM:SS.sss */\n.u-legend.u-inline .u-series:first-child .u-value {\n width: 185px;\n}\n.u-select {\n color: rgba(255, 255, 255, 0.07);\n}\n</style>\n<style scoped>\n.active {\n background-color: var(--color-background-surface-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","TimeFilters","value","isValid","parse","itemId","item","date","toDate","dline","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_dialog","$options","_cache","$event","_withKeys","_ctx","_withCtx","_createVNode","_component_v_toolbar","_component_v_spacer","_createElementVNode","_component_v_card","_component_v_tabs","_component_v_tab","_createTextVNode","_component_v_tabs_window","_component_v_tabs_window_item","_component_v_row","_component_v_col","_component_v_card_text","_component_v_text_field","_component_v_select","_component_v_list","_component_v_list_item","_component_v_btn","_createElementBlock","_Fragment","_renderList","$props","_component_v_tooltip","props","_component_v_icon","_mergeProps","_component_v_data_table","_component_v_card_actions","OpenC3Api","details","key","_component_v_card_title","_openBlock","_toDisplayString","_createCommentVNode","GraphEditDialog","GraphEditItemDialog","Cable","index","chartSeries","overviewSeries","seriesObj","commonProps","u","seriesIdx","self","rawValue","chartOpts","uPlot","timeZoneName","ts","v","targ","handler","e","chart","left","right","legend","seriesEl","series","overviewOpts","min","max","newState","oldState","newData","oldData","newVal","oldVal","val","ptsMin","description","desired","graph","clonedItems","pad","dataMin","dataMax","data","subscription","type","navDrawerWidth","navDrawer","legendWidth","viewWidth","viewHeight","panel","height","width","strokeColor","axisColor","splits","el","split","event","limits","ctx","bbox","yMin","yMax","redLow","yellowLow","yellowHigh","redHigh","line","start","end","greenLow","greenHigh","itemArray","lastItem","theStartTime","refreshed","time","length","j","bs","ideal_index","newStartTime","element","needle","new_data","key_index","array","_withModifiers","_normalizeClass","_withDirectives","$data","_vShow","_component_v_expand_transition","_component_graph_edit_dialog","_component_v_textarea","_component_v_menu","_component_v_list_item_title","_component_graph_edit_item_dialog","_component_v_list_subheader","_hoisted_5","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const o=require("./WidgetComponents-utpQ592X.cjs"),r={props:{target:{type:String,require:!0}},methods:{getPresignedUrl:async function(t){let e="targets_modified";return await o.oi.get(`/openc3-api/storage/exists/${encodeURIComponent(`${window.openc3Scope}/${e}/${this.target}/public/${t}`)}?bucket=OPENC3_CONFIG_BUCKET`,{headers:{Accept:"application/json","Ignore-Errors":"404"}}).catch(a=>{e="targets"}),(await o.oi.get(`/openc3-api/storage/download/${encodeURIComponent(`${window.openc3Scope}/${e}/${this.target}/public/${t}`)}?bucket=OPENC3_CONFIG_BUCKET`)).data.url}}};exports.ImageLoader=r;
|
|
2
|
-
//# sourceMappingURL=ImageLoader-cRmBcpU9.cjs.map
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { o as m } from "./WidgetComponents-C1lSLZ0I.js";
|
|
2
|
-
import { resolveComponent as e, createElementBlock as r, openBlock as a, createVNode as l, createBlock as C, createCommentVNode as k, withCtx as o, Fragment as D, renderList as V, createTextVNode as d, toDisplayString as b, createElementVNode as y, mergeProps as I } from "vue";
|
|
3
|
-
import { _ as x } from "./CustomIcon-h5X7369N.js";
|
|
4
|
-
import "single-spa";
|
|
5
|
-
import { O as N } from "./OutputDialog-zVPZiZay.js";
|
|
6
|
-
const S = {
|
|
7
|
-
components: { OutputDialog: N },
|
|
8
|
-
data() {
|
|
9
|
-
return {
|
|
10
|
-
interfaces: [],
|
|
11
|
-
jsonContent: "",
|
|
12
|
-
dialogTitle: "",
|
|
13
|
-
showDialog: !1
|
|
14
|
-
};
|
|
15
|
-
},
|
|
16
|
-
mounted() {
|
|
17
|
-
this.update();
|
|
18
|
-
},
|
|
19
|
-
methods: {
|
|
20
|
-
update() {
|
|
21
|
-
m.get("/openc3-api/interfaces").then((n) => {
|
|
22
|
-
this.interfaces = n.data;
|
|
23
|
-
});
|
|
24
|
-
},
|
|
25
|
-
showInterface(n) {
|
|
26
|
-
m.get(`/openc3-api/interfaces/${n}`).then((t) => {
|
|
27
|
-
this.jsonContent = JSON.stringify(t.data, null, " "), this.dialogTitle = n, this.showDialog = !0;
|
|
28
|
-
});
|
|
29
|
-
},
|
|
30
|
-
dialogCallback(n) {
|
|
31
|
-
this.showDialog = !1;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
function T(n, t, j, B, i, c) {
|
|
36
|
-
const p = e("v-list-item-title"), u = e("v-icon"), _ = e("v-tooltip"), f = e("v-list-item"), g = e("v-divider"), v = e("v-list"), h = e("output-dialog");
|
|
37
|
-
return a(), r("div", null, [
|
|
38
|
-
l(v, {
|
|
39
|
-
class: "list",
|
|
40
|
-
"data-test": "interfaceList"
|
|
41
|
-
}, {
|
|
42
|
-
default: o(() => [
|
|
43
|
-
(a(!0), r(D, null, V(i.interfaces, (s) => (a(), r("div", { key: s }, [
|
|
44
|
-
l(f, null, {
|
|
45
|
-
append: o(() => [
|
|
46
|
-
l(_, { location: "top" }, {
|
|
47
|
-
activator: o(({ props: w }) => [
|
|
48
|
-
l(u, I({ ref_for: !0 }, w, {
|
|
49
|
-
onClick: (O) => c.showInterface(s)
|
|
50
|
-
}), {
|
|
51
|
-
default: o(() => t[1] || (t[1] = [
|
|
52
|
-
d(" mdi-eye ")
|
|
53
|
-
])),
|
|
54
|
-
_: 2
|
|
55
|
-
}, 1040, ["onClick"])
|
|
56
|
-
]),
|
|
57
|
-
default: o(() => [
|
|
58
|
-
t[2] || (t[2] = y("span", null, "Show Interface Details", -1))
|
|
59
|
-
]),
|
|
60
|
-
_: 2
|
|
61
|
-
}, 1024)
|
|
62
|
-
]),
|
|
63
|
-
default: o(() => [
|
|
64
|
-
l(p, null, {
|
|
65
|
-
default: o(() => [
|
|
66
|
-
d(b(s), 1)
|
|
67
|
-
]),
|
|
68
|
-
_: 2
|
|
69
|
-
}, 1024)
|
|
70
|
-
]),
|
|
71
|
-
_: 2
|
|
72
|
-
}, 1024),
|
|
73
|
-
l(g)
|
|
74
|
-
]))), 128))
|
|
75
|
-
]),
|
|
76
|
-
_: 1
|
|
77
|
-
}),
|
|
78
|
-
i.showDialog ? (a(), C(h, {
|
|
79
|
-
key: 0,
|
|
80
|
-
content: i.jsonContent,
|
|
81
|
-
type: "Interface",
|
|
82
|
-
name: i.dialogTitle,
|
|
83
|
-
modelValue: i.showDialog,
|
|
84
|
-
"onUpdate:modelValue": t[0] || (t[0] = (s) => i.showDialog = s),
|
|
85
|
-
onSubmit: c.dialogCallback
|
|
86
|
-
}, null, 8, ["content", "name", "modelValue", "onSubmit"])) : k("", !0)
|
|
87
|
-
]);
|
|
88
|
-
}
|
|
89
|
-
const U = /* @__PURE__ */ x(S, [["render", T], ["__scopeId", "data-v-c01188b0"]]);
|
|
90
|
-
export {
|
|
91
|
-
U as default
|
|
92
|
-
};
|
|
93
|
-
//# sourceMappingURL=InterfacesTab-B4glsR9Z.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InterfacesTab-B4glsR9Z.js","sources":["../src/tools/admin/tabs/InterfacesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, 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-list class=\"list\" data-test=\"interfaceList\">\n <div v-for=\"openc3_interface in interfaces\" :key=\"openc3_interface\">\n <v-list-item>\n <v-list-item-title>{{ openc3_interface }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"showInterface(openc3_interface)\">\n mdi-eye\n </v-icon>\n </template>\n <span>Show Interface Details</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n :content=\"jsonContent\"\n type=\"Interface\"\n :name=\"dialogTitle\"\n v-model=\"showDialog\"\n v-if=\"showDialog\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n interfaces: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/interfaces').then((response) => {\n this.interfaces = response.data\n })\n },\n showInterface(name) {\n Api.get(`/openc3-api/interfaces/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_withCtx","_openBlock","_Fragment","_renderList","$data","openc3_interface","_component_v_list_item","_component_v_tooltip","props","_component_v_icon","_mergeProps","$event","$options","_cache","_createTextVNode","_createElementVNode","_component_v_list_item_title","_toDisplayString","_component_v_divider","_createBlock","_component_output_dialog","_createCommentVNode"],"mappings":";;;;;AA0DA,MAAKA,IAAU;AAAA,EACb,YAAY,EAAE,cAAAC,EAAc;AAAA,EAC5B,OAAO;AACL,WAAO;AAAA,MACL,YAAY,CAAE;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACD;AAAA,EACD,UAAU;AACR,SAAK,OAAM;AAAA,EACZ;AAAA,EACD,SAAS;AAAA,IACP,SAAS;AACPC,MAAAA,EAAI,IAAI,wBAAwB,EAAE,KAAK,CAACC,MAAa;AACnD,aAAK,aAAaA,EAAS;AAAA,MAC5B,CAAA;AAAA,IACF;AAAA,IACD,cAAcC,GAAM;AAClBF,MAAAA,EAAI,IAAI,0BAA0BE,CAAI,EAAE,EAAE,KAAK,CAACD,MAAa;AAC3D,aAAK,cAAc,KAAK,UAAUA,EAAS,MAAM,MAAM,GAAI,GAC3D,KAAK,cAAcC,GACnB,KAAK,aAAa;AAAA,MACnB,CAAA;AAAA,IACF;AAAA,IACD,eAAeC,GAAS;AACtB,WAAK,aAAa;AAAA,IACnB;AAAA,EACF;AACH;;;cAjEEC,EA4BM,OAAA,MAAA;AAAA,IA3BJC,EAkBSC,GAAA;AAAA,MAlBD,OAAM;AAAA,MAAO,aAAU;AAAA;MAxBnC,SAAAC,EAyBW,MAAsC;AAAA,SAA3CC,EAAA,EAAA,GAAAJ,EAgBMK,GAzCZ,MAAAC,EAyBsCC,EAAU,YAzBhD,CAyBkBC,YAAZR,EAgBM,OAAA,EAhBuC,KAAKQ,KAAgB;AAAA,UAChEP,EAacQ,GAAA,MAAA;AAAA,YAVK,UACf,MAOY;AAAA,cAPZR,EAOYS,GAAA,EAPD,UAAS,MAAK,GAAA;AAAA,gBACN,WAASP,EACxB,CAES,EAHmB,OAAAQ,QAAK;AAAA,kBACjCV,EAESW,GAFTC,EAES,EAlCzB,SAAA,MAgCgCF,GAAK;AAAA,oBAAG,SAAK,CAAAG,MAAEC,EAAa,cAACP,CAAgB;AAAA;oBAhC7E,SAAAL,EAgCgF,MAEhEa,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,sBAlChBC,EAgCgF,WAEhE;AAAA;oBAlChB,GAAA;AAAA;;gBAAA,SAAAd,EAoCc,MAAmC;AAAA,kBAAnCa,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAE,EAAmC,cAA7B,0BAAsB,EAAA;AAAA;gBApC1C,GAAA;AAAA;;YAAA,SAAAf,EA2BU,MAA6D;AAAA,cAA7DF,EAA6DkB,GAAA,MAAA;AAAA,gBA3BvE,SAAAhB,EA2B6B,MAAsB;AAAA,kBA3BnDc,EAAAG,EA2BgCZ,CAAgB,GAAA,CAAA;AAAA;gBA3BhD,GAAA;AAAA;;YAAA,GAAA;AAAA;UAwCQP,EAAaoB,CAAA;AAAA;;MAxCrB,GAAA;AAAA;IAgDYd,EAAU,mBALlBe,EAOEC,GAAA;AAAA,MAlDN,KAAA;AAAA,MA4CO,SAAShB,EAAW;AAAA,MACrB,MAAK;AAAA,MACJ,MAAMA,EAAW;AAAA,MA9CxB,YA+CeA,EAAU;AAAA,MA/CzB,uBAAAS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAF,MA+CeP,EAAU,aAAAO;AAAA,MAElB,UAAQC,EAAc;AAAA,kEAjD7BS,EAAA,IAAA,EAAA;AAAA;;;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./WidgetComponents-utpQ592X.cjs"),e=require("vue"),v=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const f=require("./OutputDialog-DXoL9VPw.cjs"),g={components:{OutputDialog:f.OutputDialog},data(){return{interfaces:[],jsonContent:"",dialogTitle:"",showDialog:!1}},mounted(){this.update()},methods:{update(){s.oi.get("/openc3-api/interfaces").then(o=>{this.interfaces=o.data})},showInterface(o){s.oi.get(`/openc3-api/interfaces/${o}`).then(t=>{this.jsonContent=JSON.stringify(t.data,null," "),this.dialogTitle=o,this.showDialog=!0})},dialogCallback(o){this.showDialog=!1}}};function C(o,t,w,k,n,i){const r=e.resolveComponent("v-list-item-title"),a=e.resolveComponent("v-icon"),c=e.resolveComponent("v-tooltip"),u=e.resolveComponent("v-list-item"),d=e.resolveComponent("v-divider"),p=e.resolveComponent("v-list"),m=e.resolveComponent("output-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(p,{class:"list","data-test":"interfaceList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.interfaces,l=>(e.openBlock(),e.createElementBlock("div",{key:l},[e.createVNode(u,null,{append:e.withCtx(()=>[e.createVNode(c,{location:"top"},{activator:e.withCtx(({props:_})=>[e.createVNode(a,e.mergeProps({ref_for:!0},_,{onClick:V=>i.showInterface(l)}),{default:e.withCtx(()=>t[1]||(t[1]=[e.createTextVNode(" mdi-eye ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[2]||(t[2]=e.createElementVNode("span",null,"Show Interface Details",-1))]),_:2},1024)]),default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l),1)]),_:2},1024)]),_:2},1024),e.createVNode(d)]))),128))]),_:1}),n.showDialog?(e.openBlock(),e.createBlock(m,{key:0,content:n.jsonContent,type:"Interface",name:n.dialogTitle,modelValue:n.showDialog,"onUpdate:modelValue":t[0]||(t[0]=l=>n.showDialog=l),onSubmit:i.dialogCallback},null,8,["content","name","modelValue","onSubmit"])):e.createCommentVNode("",!0)])}const h=v._export_sfc(g,[["render",C],["__scopeId","data-v-c01188b0"]]);exports.default=h;
|
|
2
|
-
//# sourceMappingURL=InterfacesTab-Co1Kd6Fa.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InterfacesTab-Co1Kd6Fa.cjs","sources":["../src/tools/admin/tabs/InterfacesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, 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-list class=\"list\" data-test=\"interfaceList\">\n <div v-for=\"openc3_interface in interfaces\" :key=\"openc3_interface\">\n <v-list-item>\n <v-list-item-title>{{ openc3_interface }}</v-list-item-title>\n\n <template v-slot:append>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <v-icon v-bind=\"props\" @click=\"showInterface(openc3_interface)\">\n mdi-eye\n </v-icon>\n </template>\n <span>Show Interface Details</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n :content=\"jsonContent\"\n type=\"Interface\"\n :name=\"dialogTitle\"\n v-model=\"showDialog\"\n v-if=\"showDialog\"\n @submit=\"dialogCallback\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog } from '@/components'\n\nexport default {\n components: { OutputDialog },\n data() {\n return {\n interfaces: [],\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n }\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n Api.get('/openc3-api/interfaces').then((response) => {\n this.interfaces = response.data\n })\n },\n showInterface(name) {\n Api.get(`/openc3-api/interfaces/${name}`).then((response) => {\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.dialogTitle = name\n this.showDialog = true\n })\n },\n dialogCallback(content) {\n this.showDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","Api","response","name","content","_createElementBlock","_createVNode","_component_v_list","_withCtx","_openBlock","_Fragment","_renderList","$data","openc3_interface","_component_v_list_item","_component_v_tooltip","props","_component_v_icon","_mergeProps","$event","$options","_cache","_createTextVNode","_createElementVNode","_component_v_list_item_title","_toDisplayString","_component_v_divider","_createBlock","_component_output_dialog","_createCommentVNode"],"mappings":"gQA0DKA,EAAU,CACb,WAAY,CAAEC,aAAAA,EAAAA,YAAc,EAC5B,MAAO,CACL,MAAO,CACL,WAAY,CAAE,EACd,YAAa,GACb,YAAa,GACb,WAAY,EACd,CACD,EACD,SAAU,CACR,KAAK,OAAM,CACZ,EACD,QAAS,CACP,QAAS,CACPC,EAAAA,GAAI,IAAI,wBAAwB,EAAE,KAAMC,GAAa,CACnD,KAAK,WAAaA,EAAS,IAC5B,CAAA,CACF,EACD,cAAcC,EAAM,CAClBF,KAAI,IAAI,0BAA0BE,CAAI,EAAE,EAAE,KAAMD,GAAa,CAC3D,KAAK,YAAc,KAAK,UAAUA,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,YAAcC,EACnB,KAAK,WAAa,EACnB,CAAA,CACF,EACD,eAAeC,EAAS,CACtB,KAAK,WAAa,EACnB,CACF,CACH,2SAjEEC,qBA4BM,MAAA,KAAA,CA3BJC,EAAAA,YAkBSC,EAAA,CAlBD,MAAM,OAAO,YAAU,kBAxBnC,QAAAC,EAAA,QAyBW,IAAsC,EAA3CC,YAAA,EAAA,EAAAJ,EAAAA,mBAgBMK,EAzCZ,SAAA,KAAAC,EAAAA,WAyBsCC,EAAU,WAA9BC,kBAAZR,EAgBM,mBAAA,MAAA,CAhBuC,IAAKQ,GAAgB,CAChEP,EAac,YAAAQ,EAAA,KAAA,CAVK,iBACf,IAOY,CAPZR,EAAAA,YAOYS,EAAA,CAPD,SAAS,KAAK,EAAA,CACN,UAASP,EAAA,QACxB,CAES,CAHmB,MAAAQ,KAAK,CACjCV,EAAA,YAESW,EAFTC,EAAA,WAES,CAlCzB,QAAA,IAgCgCF,EAAK,CAAG,QAAKG,GAAEC,EAAa,cAACP,CAAgB,KAhC7E,QAAAL,EAAA,QAgCgF,IAEhEa,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CAlChBC,EAAAA,gBAgCgF,WAEhE,KAlChB,EAAA,uBAAA,QAAAd,EAAA,QAoCc,IAAmC,CAAnCa,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAE,EAAA,mBAAmC,YAA7B,yBAAsB,EAAA,KApC1C,EAAA,WAAA,QAAAf,EAAA,QA2BU,IAA6D,CAA7DF,EAA6D,YAAAkB,EAAA,KAAA,CA3BvE,QAAAhB,EAAA,QA2B6B,IAAsB,CA3BnDc,kBAAAG,EAAAA,gBA2BgCZ,CAAgB,EAAA,CAAA,IA3BhD,EAAA,WAAA,EAAA,SAwCQP,EAAAA,YAAaoB,CAAA,cAxCrB,EAAA,IAgDYd,EAAU,0BALlBe,EAOE,YAAAC,EAAA,CAlDN,IAAA,EA4CO,QAAShB,EAAW,YACrB,KAAK,YACJ,KAAMA,EAAW,YA9CxB,WA+CeA,EAAU,WA/CzB,sBAAAS,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAF,GA+CeP,EAAU,WAAAO,GAElB,SAAQC,EAAc,oEAjD7BS,EAAA,mBAAA,GAAA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./Widget-ChoIB2dd.cjs"),l=require("./LabelWidget-mMcf5S8K.cjs"),o=require("./ValueWidget-Cu7hgKja.cjs"),m=require("./WidgetComponents-utpQ592X.cjs"),t=require("vue"),u=require("./CustomIcon-Bop2mEnu.cjs"),d={mixins:[a.Widget],data(){return{description:"",valueParameters:[]}},components:{LabelWidget:l.default,ValueWidget:o.default},computed:{labelName(){return[this.description]}},created(){this.valueParameters=this.parameters.slice(0,3),this.parameters[4]!=null&&this.valueParameters.push(this.parameters[4]),this.parameters[5]!=null&&this.valueParameters.push(this.parameters[5]),this.parameters.length>3?this.description=this.parameters[3]:new m.hi().get_item(this.parameters[0],this.parameters[1],this.parameters[2]).then(e=>{this.description=e.description})}};function c(e,g,h,f,r,s){const i=t.resolveComponent("label-widget"),n=t.resolveComponent("value-widget");return t.openBlock(),t.createElementBlock("div",{ref:"container",class:"d-flex flex-row",style:t.normalizeStyle(e.computedStyle)},[t.createVNode(i,{parameters:s.labelName,settings:[...e.settings],line:e.line,"line-number":e.lineNumber,"widget-index":0},null,8,["parameters","settings","line","line-number"]),t.createVNode(n,t.mergeProps(e.$attrs,{parameters:r.valueParameters,settings:[...e.settings],"screen-values":e.screenValues,"screen-time-zone":e.screenTimeZone,line:e.line,"line-number":e.lineNumber,"widget-index":1}),null,16,["parameters","settings","screen-values","screen-time-zone","line","line-number"])],4)}const p=u._export_sfc(d,[["render",c]]);exports.default=p;
|
|
2
|
-
//# sourceMappingURL=LabelvaluedescWidget-I6ljK--Y.cjs.map
|
package/dist/Layout-DuCYyOw4.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./WidgetComponents-utpQ592X.cjs");const e=require("vue"),d=require("./CustomIcon-Bop2mEnu.cjs"),h=require("./DetailsDialog-mvxMFmgV.cjs");require("single-spa");const v=require("./Widget-ChoIB2dd.cjs"),_={components:{DetailsDialog:h.DetailsDialog},mixins:[v.Widget],data(){return{valueId:null,colors:{TRUE:"openc3-green",FALSE:"openc3-red"},viewDetails:!1,contextMenuShown:!1,x:0,y:0,contextMenuOptions:[{title:"Details",action:()=>{this.contextMenuShown=!1,this.viewDetails=!0}},{title:"Graph",action:()=>{window.open("/tools/tlmgrapher/"+encodeURIComponent(this.parameters[0])+"/"+encodeURIComponent(this.parameters[1])+"/"+encodeURIComponent(this.parameters[2]),"_blank")}}]}},computed:{width(){return this.parameters[4]?parseInt(this.parameters[4]):20},height(){return this.parameters[5]?parseInt(this.parameters[5]):20},cssProps(){let t=this.screenValues[this.valueId][0],o=this.colors[t];return o||(o=this.colors.ANY),o||(o="openc3-black"),{"--color":o}},fullName(){return this.parameters[0]+" "+this.parameters[1]+" "+this.parameters[2]},getClass(){let t="ledwidget mt-2";return this.screenValues[this.valueId][1]==="STALE"&&(t+=" stale"),t}},created(){this.appliedSettings.forEach(t=>{switch(t[0]){case"LED_COLOR":this.colors[t[1]]=t[2];break}}),this.appliedSettings.push(["WIDTH",this.width]),this.appliedSettings.push(["HEIGHT",this.height]),this.parameters[3]||(this.parameters[3]="CONVERTED"),this.valueId=`${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${this.parameters[3]}`,this.$emit("addItem",this.valueId)},unmounted(){this.$emit("deleteItem",this.valueId)},methods:{showContextMenu(t){t.preventDefault(),this.contextMenuShown=!1,this.x=t.clientX,this.y=t.clientY,this.$nextTick(()=>{this.contextMenuShown=!0})}}};function g(t,o,C,f,n,i){const r=e.resolveComponent("v-tooltip"),a=e.resolveComponent("v-list-item-title"),m=e.resolveComponent("v-list-item"),u=e.resolveComponent("v-list"),c=e.resolveComponent("v-menu"),p=e.resolveComponent("details-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(r,{location:"top"},{activator:e.withCtx(({props:s})=>[e.createElementVNode("div",e.mergeProps({class:i.getClass,style:[i.cssProps,t.computedStyle]},s,{onContextmenu:o[0]||(o[0]=(...l)=>i.showContextMenu&&i.showContextMenu(...l))}),null,16)]),default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(i.fullName),1)]),_:1}),e.createVNode(c,{modelValue:n.contextMenuShown,"onUpdate:modelValue":o[1]||(o[1]=s=>n.contextMenuShown=s),target:[n.x,n.y],style:{"z-index":"3000"}},{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.contextMenuOptions,(s,l)=>(e.openBlock(),e.createBlock(m,{key:l,onClick:e.withModifiers(s.action,["stop"])},{default:e.withCtx(()=>[e.createVNode(a,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.title),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1},8,["modelValue","target"]),e.createVNode(p,{"target-name":t.parameters[0],"packet-name":t.parameters[1],"item-name":t.parameters[2],modelValue:n.viewDetails,"onUpdate:modelValue":o[2]||(o[2]=s=>n.viewDetails=s)},null,8,["target-name","packet-name","item-name","modelValue"])])}const w=d._export_sfc(_,[["render",g],["__scopeId","data-v-a468dd16"]]);exports.default=w;
|
|
2
|
-
//# sourceMappingURL=LedWidget-B2BcwiYF.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LedWidget-B2BcwiYF.cjs","sources":["../src/widgets/LedWidget.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <div\n :class=\"getClass\"\n :style=\"[cssProps, computedStyle]\"\n v-bind=\"props\"\n @contextmenu=\"showContextMenu\"\n ></div>\n </template>\n <span>{{ fullName }}</span>\n </v-tooltip>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\" style=\"z-index: 3000\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport { DetailsDialog } from '@/components'\nimport Widget from './Widget'\nexport default {\n components: {\n DetailsDialog,\n },\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n colors: {\n TRUE: 'openc3-green',\n FALSE: 'openc3-red',\n },\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n encodeURIComponent(this.parameters[0]) +\n '/' +\n encodeURIComponent(this.parameters[1]) +\n '/' +\n encodeURIComponent(this.parameters[2]),\n '_blank',\n )\n },\n },\n ],\n }\n },\n computed: {\n width() {\n return this.parameters[4] ? parseInt(this.parameters[4]) : 20\n },\n height() {\n return this.parameters[5] ? parseInt(this.parameters[5]) : 20\n },\n cssProps() {\n let value = this.screenValues[this.valueId][0]\n let color = this.colors[value]\n if (!color) {\n color = this.colors.ANY\n }\n if (!color) {\n color = 'openc3-black'\n }\n return {\n '--color': color,\n }\n },\n fullName() {\n return (\n this.parameters[0] + ' ' + this.parameters[1] + ' ' + this.parameters[2]\n )\n },\n getClass() {\n let result = 'ledwidget mt-2'\n if (this.screenValues[this.valueId][1] === 'STALE') {\n result += ' stale'\n }\n return result\n },\n },\n // Note Vuejs still treats this synchronously, but this allows us to dispatch\n // the store mutation and return the array index.\n // What this means practically is that future lifecycle hooks may not have valueId set.\n created() {\n this.appliedSettings.forEach((setting) => {\n switch (setting[0]) {\n case 'LED_COLOR':\n this.colors[setting[1]] = setting[2]\n break\n }\n })\n // Throw width and height into the appliedSettings so they are set\n // and we don't get the default flex value\n this.appliedSettings.push(['WIDTH', this.width])\n this.appliedSettings.push(['HEIGHT', this.height])\n\n if (!this.parameters[3]) {\n this.parameters[3] = 'CONVERTED'\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${this.parameters[3]}`\n this.$emit('addItem', this.valueId)\n },\n unmounted() {\n this.$emit('deleteItem', this.valueId)\n },\n methods: {\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.ledwidget {\n background-color: var(--color);\n border-radius: 50%;\n}\n.stale {\n filter: blur(2px) brightness(0.6);\n}\n</style>\n"],"names":["_sfc_main","DetailsDialog","Widget","value","color","result","setting","e","_createElementBlock","_createVNode","_component_v_tooltip","_withCtx","props","_createElementVNode","_mergeProps","$options","_ctx","args","_component_v_menu","$data","_cache","$event","_component_v_list","_openBlock","_Fragment","_renderList","item","index","_createBlock","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LedWidget-qH_FthkK.js","sources":["../src/widgets/LedWidget.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <div\n :class=\"getClass\"\n :style=\"[cssProps, computedStyle]\"\n v-bind=\"props\"\n @contextmenu=\"showContextMenu\"\n ></div>\n </template>\n <span>{{ fullName }}</span>\n </v-tooltip>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\" style=\"z-index: 3000\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n :target-name=\"parameters[0]\"\n :packet-name=\"parameters[1]\"\n :item-name=\"parameters[2]\"\n v-model=\"viewDetails\"\n />\n </div>\n</template>\n\n<script>\nimport { DetailsDialog } from '@/components'\nimport Widget from './Widget'\nexport default {\n components: {\n DetailsDialog,\n },\n mixins: [Widget],\n data() {\n return {\n valueId: null,\n colors: {\n TRUE: 'openc3-green',\n FALSE: 'openc3-red',\n },\n viewDetails: false,\n contextMenuShown: false,\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n {\n title: 'Graph',\n action: () => {\n window.open(\n '/tools/tlmgrapher/' +\n encodeURIComponent(this.parameters[0]) +\n '/' +\n encodeURIComponent(this.parameters[1]) +\n '/' +\n encodeURIComponent(this.parameters[2]),\n '_blank',\n )\n },\n },\n ],\n }\n },\n computed: {\n width() {\n return this.parameters[4] ? parseInt(this.parameters[4]) : 20\n },\n height() {\n return this.parameters[5] ? parseInt(this.parameters[5]) : 20\n },\n cssProps() {\n let value = this.screenValues[this.valueId][0]\n let color = this.colors[value]\n if (!color) {\n color = this.colors.ANY\n }\n if (!color) {\n color = 'openc3-black'\n }\n return {\n '--color': color,\n }\n },\n fullName() {\n return (\n this.parameters[0] + ' ' + this.parameters[1] + ' ' + this.parameters[2]\n )\n },\n getClass() {\n let result = 'ledwidget mt-2'\n if (this.screenValues[this.valueId][1] === 'STALE') {\n result += ' stale'\n }\n return result\n },\n },\n // Note Vuejs still treats this synchronously, but this allows us to dispatch\n // the store mutation and return the array index.\n // What this means practically is that future lifecycle hooks may not have valueId set.\n created() {\n this.appliedSettings.forEach((setting) => {\n switch (setting[0]) {\n case 'LED_COLOR':\n this.colors[setting[1]] = setting[2]\n break\n }\n })\n // Throw width and height into the appliedSettings so they are set\n // and we don't get the default flex value\n this.appliedSettings.push(['WIDTH', this.width])\n this.appliedSettings.push(['HEIGHT', this.height])\n\n if (!this.parameters[3]) {\n this.parameters[3] = 'CONVERTED'\n }\n this.valueId = `${this.parameters[0]}__${this.parameters[1]}__${this.parameters[2]}__${this.parameters[3]}`\n this.$emit('addItem', this.valueId)\n },\n unmounted() {\n this.$emit('deleteItem', this.valueId)\n },\n methods: {\n showContextMenu(e) {\n e.preventDefault()\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.ledwidget {\n background-color: var(--color);\n border-radius: 50%;\n}\n.stale {\n filter: blur(2px) brightness(0.6);\n}\n</style>\n"],"names":["_sfc_main","DetailsDialog","Widget","value","color","result","setting","_createElementBlock","_createVNode","_component_v_tooltip","_withCtx","props","_createElementVNode","_mergeProps","$options","_ctx","args","_component_v_menu","$data","_cache","$event","_component_v_list","_openBlock","_Fragment","_renderList","item","index","_createBlock","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_toDisplayString","_component_details_dialog"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LimitsbarWidget-B9lAB2RD.js","sources":["../src/widgets/LimitsbarWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\" v-bind=\"props\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n </template>\n <span>{{ limitsRange }}</span>\n </v-tooltip>\n</template>\n\n<script>\nimport BarColumn from './BarColumn'\n\nexport default {\n mixins: [BarColumn],\n data() {\n return {\n width: 160, // px\n height: 22, // px\n }\n },\n computed: {\n limitsRange() {\n let values = this.limitsSettings[this.selectedLimitsSet]\n if (values) {\n // Format like the DetailsDialog formatLimit function\n if (values.length === 4) {\n return `RL/${values[0]} YL/${values[1]} YH/${values[2]} RH/${values[3]}`\n } else {\n return `RL/${values[0]} YL/${values[1]} YH/${values[2]} RH/${values[3]} GL/${values[4]} GH/${values[5]}`\n }\n } else {\n // See errorCaptured in Openc3Screen.vue for how this is parsed\n throw {\n line: this.line,\n lineNumber: this.lineNumber,\n keyword: 'LIMITSBAR',\n parameters: this.parameters,\n message: 'Item has no limits settings',\n usage: 'Only items with limits',\n }\n }\n },\n },\n created() {\n this.verifyNumParams(\n 'LIMITSBAR',\n 3,\n 6,\n 'LIMITSBAR <TARGET> <PACKET> <ITEM> <TYPE> <WIDTH> <HEIGHT>',\n )\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 6px;\n padding: 5px;\n width: var(--width);\n}\n.limitsbar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n/* The background-colors match the values in LimitscolorWidget.vue */\n.limitsbar__redlow {\n position: absolute;\n top: -1px;\n left: 0px;\n width: var(--redlow-width);\n height: var(--container-height);\n background-color: rgb(255, 45, 45);\n}\n.limitsbar__redhigh {\n position: absolute;\n top: -1px;\n right: 0px;\n width: var(--redhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 45, 45);\n}\n.limitsbar__yellowlow {\n position: absolute;\n top: -1px;\n left: var(--redlow-width);\n width: var(--yellowlow-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: -1px;\n right: var(--redhigh-width);\n width: var(--yellowhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n top: -1px;\n left: calc(var(--redlow-width) + var(--yellowlow-width));\n width: var(--greenlow-width);\n height: var(--container-height);\n background-color: rgb(0, 200, 0);\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: -1px;\n right: calc(var(--redhigh-width) + var(--yellowhigh-width));\n width: var(--greenhigh-width);\n height: var(--container-height);\n background-color: rgb(0, 200, 0);\n}\n.limitsbar__blue {\n position: absolute;\n top: -1px;\n left: calc(\n var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width)\n );\n width: var(--blue-width);\n height: var(--container-height);\n background-color: rgb(0, 153, 255);\n}\n.limitsbar__line {\n position: absolute;\n left: var(--position);\n width: 1px;\n height: var(--container-height);\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.limitsbar__arrow {\n position: absolute;\n top: -$arrow-size;\n left: var(--position);\n width: 0;\n height: 0;\n transform: translateX(-$arrow-size); // Transform so it sits over the line\n border-left: $arrow-size solid transparent;\n border-right: $arrow-size solid transparent;\n border-top: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n"],"names":["_sfc_main","BarColumn","values","_createBlock","_component_v_tooltip","_withCtx","props","_createElementVNode","_mergeProps","_ctx","_cache","$options"],"mappings":";;;AA2CA,MAAKA,IAAU;AAAA,EACb,QAAQ,CAACC,CAAS;AAAA,EAClB,OAAO;AACL,WAAO;AAAA,MACL,OAAO;AAAA;AAAA,MACP,QAAQ;AAAA;AAAA,IACV;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACR,cAAc;AACZ,UAAIC,IAAS,KAAK,eAAe,KAAK,iBAAiB;AACvD,UAAIA;AAEF,eAAIA,EAAO,WAAW,IACb,MAAMA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,KAE/D,MAAMA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC;AAIxG,YAAM;AAAA,QACJ,MAAM,KAAK;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,SAAS;AAAA,QACT,YAAY,KAAK;AAAA,QACjB,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IAEH;AAAA,EACF;AAAA,EACD,UAAU;AACR,SAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACD;AACH;;;cA/DEC,EAkBYC,GAAA,EAlBD,UAAS,SAAK;AAAA,IACN,WAASC,EACxB,CAaM,EAdsB,OAAAC,QAAK;AAAA,MACjCC,EAaM,OAbNC,EAaM;AAAA,QAbD,OAAM;AAAA,QAAa,OAAK,CAAGC,EAAQ,UAAEA,EAAa,aAAA;AAAA,SAAWH,CAAK,GAAAI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,QACrEH,EAWM,OAAA,EAXD,OAAM,uBAAsB,GAAA;AAAA,UAC/BA,EAAiC,OAAA,EAA5B,OAAM,oBAAmB,CAAA;AAAA,UAC9BA,EAAkC,OAAA,EAA7B,OAAM,qBAAoB,CAAA;AAAA,UAC/BA,EAAoC,OAAA,EAA/B,OAAM,uBAAsB,CAAA;AAAA,UACjCA,EAAqC,OAAA,EAAhC,OAAM,wBAAuB,CAAA;AAAA,UAClCA,EAAmC,OAAA,EAA9B,OAAM,sBAAqB,CAAA;AAAA,UAChCA,EAAoC,OAAA,EAA/B,OAAM,uBAAsB,CAAA;AAAA,UACjCA,EAA+B,OAAA,EAA1B,OAAM,kBAAiB,CAAA;AAAA,UAE5BA,EAA+B,OAAA,EAA1B,OAAM,kBAAiB,CAAA;AAAA,UAC5BA,EAAgC,OAAA,EAA3B,OAAM,mBAAkB,CAAA;AAAA;;;IAhCvC,SAAAF,EAoCI,MAA8B;AAAA,MAA9BE,EAA8B,gBAArBI,EAAW,WAAA,GAAA,CAAA;AAAA;IApCxB,GAAA;AAAA;;;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./BarColumn-CJLW1nXy.cjs"),e=require("vue"),o=require("./CustomIcon-Bop2mEnu.cjs"),n={mixins:[a.BarColumn],data(){return{width:160,height:22}},computed:{limitsRange(){let t=this.limitsSettings[this.selectedLimitsSet];if(t)return t.length===4?`RL/${t[0]} YL/${t[1]} YH/${t[2]} RH/${t[3]}`:`RL/${t[0]} YL/${t[1]} YH/${t[2]} RH/${t[3]} GL/${t[4]} GH/${t[5]}`;throw{line:this.line,lineNumber:this.lineNumber,keyword:"LIMITSBAR",parameters:this.parameters,message:"Item has no limits settings",usage:"Only items with limits"}}},created(){this.verifyNumParams("LIMITSBAR",3,6,"LIMITSBAR <TARGET> <PACKET> <ITEM> <TYPE> <WIDTH> <HEIGHT>")}};function m(t,i,d,_,u,s){const l=e.resolveComponent("v-tooltip");return e.openBlock(),e.createBlock(l,{location:"top"},{activator:e.withCtx(({props:r})=>[e.createElementVNode("div",e.mergeProps({class:"limitsbar",style:[t.cssProps,t.computedStyle]},r),i[0]||(i[0]=[e.createElementVNode("div",{class:"limitsbar__container"},[e.createElementVNode("div",{class:"limitsbar__redlow"}),e.createElementVNode("div",{class:"limitsbar__redhigh"}),e.createElementVNode("div",{class:"limitsbar__yellowlow"}),e.createElementVNode("div",{class:"limitsbar__yellowhigh"}),e.createElementVNode("div",{class:"limitsbar__greenlow"}),e.createElementVNode("div",{class:"limitsbar__greenhigh"}),e.createElementVNode("div",{class:"limitsbar__blue"}),e.createElementVNode("div",{class:"limitsbar__line"}),e.createElementVNode("div",{class:"limitsbar__arrow"})],-1)]),16)]),default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(s.limitsRange),1)]),_:1})}const c=o._export_sfc(n,[["render",m],["__scopeId","data-v-de501268"]]);exports.default=c;
|
|
2
|
-
//# sourceMappingURL=LimitsbarWidget-CVCLFIhG.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LimitsbarWidget-CVCLFIhG.cjs","sources":["../src/widgets/LimitsbarWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-tooltip location=\"top\">\n <template v-slot:activator=\"{ props }\">\n <div class=\"limitsbar\" :style=\"[cssProps, computedStyle]\" v-bind=\"props\">\n <div class=\"limitsbar__container\">\n <div class=\"limitsbar__redlow\" />\n <div class=\"limitsbar__redhigh\" />\n <div class=\"limitsbar__yellowlow\" />\n <div class=\"limitsbar__yellowhigh\" />\n <div class=\"limitsbar__greenlow\" />\n <div class=\"limitsbar__greenhigh\" />\n <div class=\"limitsbar__blue\" />\n\n <div class=\"limitsbar__line\" />\n <div class=\"limitsbar__arrow\" />\n </div>\n </div>\n </template>\n <span>{{ limitsRange }}</span>\n </v-tooltip>\n</template>\n\n<script>\nimport BarColumn from './BarColumn'\n\nexport default {\n mixins: [BarColumn],\n data() {\n return {\n width: 160, // px\n height: 22, // px\n }\n },\n computed: {\n limitsRange() {\n let values = this.limitsSettings[this.selectedLimitsSet]\n if (values) {\n // Format like the DetailsDialog formatLimit function\n if (values.length === 4) {\n return `RL/${values[0]} YL/${values[1]} YH/${values[2]} RH/${values[3]}`\n } else {\n return `RL/${values[0]} YL/${values[1]} YH/${values[2]} RH/${values[3]} GL/${values[4]} GH/${values[5]}`\n }\n } else {\n // See errorCaptured in Openc3Screen.vue for how this is parsed\n throw {\n line: this.line,\n lineNumber: this.lineNumber,\n keyword: 'LIMITSBAR',\n parameters: this.parameters,\n message: 'Item has no limits settings',\n usage: 'Only items with limits',\n }\n }\n },\n },\n created() {\n this.verifyNumParams(\n 'LIMITSBAR',\n 3,\n 6,\n 'LIMITSBAR <TARGET> <PACKET> <ITEM> <TYPE> <WIDTH> <HEIGHT>',\n )\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.limitsbar {\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 6px;\n padding: 5px;\n width: var(--width);\n}\n.limitsbar__container {\n position: relative;\n flex: 1;\n height: var(--container-height);\n border: 1px solid black;\n background-color: white;\n}\n/* The background-colors match the values in LimitscolorWidget.vue */\n.limitsbar__redlow {\n position: absolute;\n top: -1px;\n left: 0px;\n width: var(--redlow-width);\n height: var(--container-height);\n background-color: rgb(255, 45, 45);\n}\n.limitsbar__redhigh {\n position: absolute;\n top: -1px;\n right: 0px;\n width: var(--redhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 45, 45);\n}\n.limitsbar__yellowlow {\n position: absolute;\n top: -1px;\n left: var(--redlow-width);\n width: var(--yellowlow-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__yellowhigh {\n position: absolute;\n top: -1px;\n right: var(--redhigh-width);\n width: var(--yellowhigh-width);\n height: var(--container-height);\n background-color: rgb(255, 220, 0);\n}\n.limitsbar__greenlow {\n position: absolute;\n top: -1px;\n left: calc(var(--redlow-width) + var(--yellowlow-width));\n width: var(--greenlow-width);\n height: var(--container-height);\n background-color: rgb(0, 200, 0);\n}\n.limitsbar__greenhigh {\n position: absolute;\n top: -1px;\n right: calc(var(--redhigh-width) + var(--yellowhigh-width));\n width: var(--greenhigh-width);\n height: var(--container-height);\n background-color: rgb(0, 200, 0);\n}\n.limitsbar__blue {\n position: absolute;\n top: -1px;\n left: calc(\n var(--redlow-width) + var(--yellowlow-width) + var(--greenlow-width)\n );\n width: var(--blue-width);\n height: var(--container-height);\n background-color: rgb(0, 153, 255);\n}\n.limitsbar__line {\n position: absolute;\n left: var(--position);\n width: 1px;\n height: var(--container-height);\n background-color: rgb(128, 128, 128);\n}\n$arrow-size: 5px;\n.limitsbar__arrow {\n position: absolute;\n top: -$arrow-size;\n left: var(--position);\n width: 0;\n height: 0;\n transform: translateX(-$arrow-size); // Transform so it sits over the line\n border-left: $arrow-size solid transparent;\n border-right: $arrow-size solid transparent;\n border-top: $arrow-size solid rgb(128, 128, 128);\n}\n</style>\n"],"names":["_sfc_main","BarColumn","values","_createBlock","_component_v_tooltip","_withCtx","props","_createElementVNode","_mergeProps","_ctx","_cache","$options"],"mappings":"oLA2CKA,EAAU,CACb,OAAQ,CAACC,EAAAA,SAAS,EAClB,MAAO,CACL,MAAO,CACL,MAAO,IACP,OAAQ,EACV,CACD,EACD,SAAU,CACR,aAAc,CACZ,IAAIC,EAAS,KAAK,eAAe,KAAK,iBAAiB,EACvD,GAAIA,EAEF,OAAIA,EAAO,SAAW,EACb,MAAMA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,GAE/D,MAAMA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,OAAOA,EAAO,CAAC,CAAC,GAIxG,KAAM,CACJ,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,QAAS,YACT,WAAY,KAAK,WACjB,QAAS,8BACT,MAAO,wBACT,CAEH,CACF,EACD,SAAU,CACR,KAAK,gBACH,YACA,EACA,EACA,4DACF,CACD,CACH,uFA/DEC,EAkBY,YAAAC,EAAA,CAlBD,SAAS,OAAK,CACN,UAASC,EAAA,QACxB,CAaM,CAdsB,MAAAC,KAAK,CACjCC,EAAA,mBAaM,MAbNC,aAaM,CAbD,MAAM,YAAa,MAAK,CAAGC,EAAQ,SAAEA,EAAa,aAAA,GAAWH,CAAK,EAAAI,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CACrEH,EAAAA,mBAWM,MAAA,CAXD,MAAM,sBAAsB,EAAA,CAC/BA,EAAAA,mBAAiC,MAAA,CAA5B,MAAM,mBAAmB,CAAA,EAC9BA,EAAAA,mBAAkC,MAAA,CAA7B,MAAM,oBAAoB,CAAA,EAC/BA,EAAAA,mBAAoC,MAAA,CAA/B,MAAM,sBAAsB,CAAA,EACjCA,EAAAA,mBAAqC,MAAA,CAAhC,MAAM,uBAAuB,CAAA,EAClCA,EAAAA,mBAAmC,MAAA,CAA9B,MAAM,qBAAqB,CAAA,EAChCA,EAAAA,mBAAoC,MAAA,CAA/B,MAAM,sBAAsB,CAAA,EACjCA,EAAAA,mBAA+B,MAAA,CAA1B,MAAM,iBAAiB,CAAA,EAE5BA,EAAAA,mBAA+B,MAAA,CAA1B,MAAM,iBAAiB,CAAA,EAC5BA,EAAAA,mBAAgC,MAAA,CAA3B,MAAM,kBAAkB,CAAA,eAhCvC,QAAAF,EAAA,QAoCI,IAA8B,CAA9BE,EAAA,mBAA8B,8BAArBI,EAAW,WAAA,EAAA,CAAA,IApCxB,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./GraphWidget-sid4Ws9H.cjs");require("./WidgetComponents-utpQ592X.cjs");const i=require("vue"),o=require("./CustomIcon-Bop2mEnu.cjs"),n=require("./Graph-Ujd2yaeI.cjs");require("single-spa");const a={components:{Graph:n.Graph},mixins:[r.GraphWidget]};function d(e,t,h,l,u,g){const s=i.resolveComponent("graph");return i.openBlock(),i.createBlock(s,{ref:"graph"+e.id,id:e.id,state:e.state,"selected-graph-id":e.id,startTime:e.startTime,"seconds-graphed":e.secondsGraphed,"points-saved":e.pointsSaved,"points-graphed":e.pointsGraphed,"initial-items":e.items,height:e.size.height,width:e.size.width,style:i.normalizeStyle(e.computedStyle),"time-zone":this.screenTimeZone,onPause:t[0]||(t[0]=()=>e.state="pause"),onStart:t[1]||(t[1]=()=>e.state="start"),"hide-toolbar":"","hide-overview":""},null,8,["id","state","selected-graph-id","startTime","seconds-graphed","points-saved","points-graphed","initial-items","height","width","style","time-zone"])}const p=o._export_sfc(a,[["render",d]]);exports.default=p;
|
|
2
|
-
//# sourceMappingURL=LinegraphWidget-Bf8DIwEn.cjs.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./Layout-DuCYyOw4.cjs"),m=require("./WidgetComponents-utpQ592X.cjs"),e=require("vue"),p=require("./CustomIcon-Bop2mEnu.cjs"),d={mixins:[i.Layout],computed:{columns(){return parseInt(this.parameters[0])},widgetChunks(){return m._.chunk(this.widgets,this.columns)}},created:function(){if(this.parameters[1]){let n=this.parameters[1];this.widgets.forEach(s=>{s.settings.find(r=>r[0]==="MARGIN"||r[0]==="RAW"&&r[1].toUpperCase().includes("MARGIN"))===void 0&&s.settings.push(["MARGIN",n])})}}};function k(n,s,o,r,g,c){return e.openBlock(),e.createElementBlock("table",{style:e.normalizeStyle(n.computedStyle),role:"presentation"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.widgetChunks,(l,a)=>(e.openBlock(),e.createElementBlock("tr",{key:"r"+a},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l,(t,u)=>(e.openBlock(),e.createElementBlock("td",{key:"c"+u},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.type),e.mergeProps({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"]))]))),128))]))),128))],4)}const f=p._export_sfc(d,[["render",k]]);exports.default=f;
|
|
2
|
-
//# sourceMappingURL=MatrixbycolumnsWidget-DpdFzNeP.cjs.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./WidgetComponents-utpQ592X.cjs"),e=require("vue"),y=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const k=require("./OutputDialog-DXoL9VPw.cjs"),T=require("./TextBoxDialog-DfMXg_5C.cjs"),h=require("./format-B22VpiOS.cjs"),S={components:{OutputDialog:k.OutputDialog,TextBoxDialog:T.TextBoxDialog},data(){return{microservices:[],microservice_status:{},microservice_id:null,jsonContent:"",dialogTitle:"",showDialog:!1,showError:!1,alert:"",alertType:"success",showAlert:!1,updater:null}},mounted(){this.update(),this.updater=setInterval(()=>{this.update()},2e3)},beforeUnmount(){clearInterval(this.updater),this.updater=null},methods:{update:function(){u.oi.get("/openc3-api/microservice_status/all").then(o=>{this.microservice_status=o.data}),u.oi.get("/openc3-api/microservices/all").then(o=>{let t=[];for(const[s,l]of Object.entries(o.data))t.push(l);t.sort((s,l)=>s.name.localeCompare(l.name)),this.microservices=t})},startMicroservice:function(o){this.$dialog.confirm(`Are you sure you want to restart microservice: ${o}?`,{okText:"Start",cancelText:"Cancel"}).then(t=>{u.oi.post(`/openc3-api/microservices/${o}/start`).then(s=>{this.alert=`Started ${o}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3)}).then(()=>{this.update()})})},stopMicroservice:function(o){this.$dialog.confirm(`Are you sure you want to stop microservice: ${o}?`,{okText:"Stop",cancelText:"Cancel"}).then(t=>{u.oi.post(`/openc3-api/microservices/${o}/stop`).then(s=>{this.alert=`Stopped ${o}`,this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3)}).then(()=>{this.update()})})},showMicroservice:function(o){u.oi.get(`/openc3-api/microservices/${o}`).then(t=>{this.microservice_id=o,this.dialogTitle=o,this.jsonContent=JSON.stringify(t.data,null," "),this.showDialog=!0})},showMicroserviceError:function(o){this.dialogTitle=o;const t=this.microservice_status[o].error;this.jsonContent=JSON.stringify(t,null," "),this.showError=!0},formatDate(o){return h.format(h.toDate(parseInt(o)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},dialogCallback:function(o){if(this.showDialog=!1,o!==null){let t=JSON.parse(o),s="put",l=`/openc3-api/microservices/${this.microservice_id}`;t.name!==this.microservice_id&&(s="post",l="/openc3-api/microservices"),u.oi[s](l,{data:{json:o}}).then(r=>{this.alert="Modified Microservice",this.alertType="success",this.showAlert=!0,setTimeout(()=>{this.showAlert=!1},5e3),this.update()})}}}},D={key:0};function b(o,t,s,l,r,a){const _=e.resolveComponent("v-alert"),f=e.resolveComponent("v-list-item-title"),C=e.resolveComponent("v-list-item-subtitle"),m=e.resolveComponent("v-icon"),d=e.resolveComponent("v-tooltip"),p=e.resolveComponent("v-list-item-icon"),w=e.resolveComponent("v-list-item"),g=e.resolveComponent("v-divider"),x=e.resolveComponent("v-list"),V=e.resolveComponent("output-dialog"),N=e.resolveComponent("text-box-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(_,{modelValue:r.showAlert,"onUpdate:modelValue":t[0]||(t[0]=i=>r.showAlert=i),dismissible:"",transition:"scale-transition",type:r.alertType},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.alert),1)]),_:1},8,["modelValue","type"]),e.createVNode(x,{class:"list","data-test":"microserviceList"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.microservices,i=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(w,null,{append:e.withCtx(()=>[r.microservice_status[i.name]?(e.openBlock(),e.createElementBlock("div",D,[e.withDirectives(e.createElementVNode("div",null,[e.createVNode(d,{location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(m,e.mergeProps({ref_for:!0},n,{onClick:c=>a.showMicroserviceError(i.name)}),{default:e.withCtx(()=>t[3]||(t[3]=[e.createTextVNode(" mdi-alert ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[4]||(t[4]=e.createElementVNode("span",null,"View Error",-1))]),_:2},1024)],512),[[e.vShow,!!r.microservice_status[i.name].error]])])):e.createCommentVNode("",!0),e.createVNode(p,{class:"mr-3"},{default:e.withCtx(()=>[e.createVNode(d,{bottom:""},{activator:e.withCtx(({on:n,attrs:c})=>[e.createVNode(m,e.mergeProps({onClick:v=>a.startMicroservice(i.name),ref_for:!0},c,e.toHandlers(n)),{default:e.withCtx(()=>t[5]||(t[5]=[e.createTextVNode(" mdi-play ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[6]||(t[6]=e.createElementVNode("span",null,"Start Microservice",-1))]),_:2},1024)]),_:2},1024),e.createVNode(p,{class:"mr-3"},{default:e.withCtx(()=>[e.createVNode(d,{bottom:""},{activator:e.withCtx(({on:n,attrs:c})=>[e.createVNode(m,e.mergeProps({onClick:v=>a.stopMicroservice(i.name),ref_for:!0},c,e.toHandlers(n)),{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" mdi-stop ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[8]||(t[8]=e.createElementVNode("span",null,"Stop Microservice",-1))]),_:2},1024)]),_:2},1024),e.createVNode(p,null,{default:e.withCtx(()=>[e.createVNode(d,{bottom:""},{activator:e.withCtx(({on:n,attrs:c})=>[e.createVNode(m,e.mergeProps({onClick:v=>a.showMicroservice(i.name),ref_for:!0},c,e.toHandlers(n)),{default:e.withCtx(()=>t[9]||(t[9]=[e.createTextVNode(" mdi-eye ")])),_:2},1040,["onClick"])]),default:e.withCtx(()=>[t[10]||(t[10]=e.createElementVNode("span",null,"View Microservice",-1))]),_:2},1024)]),_:2},1024)]),default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.name),1)]),_:2},1024),r.microservice_status[i.name]?(e.openBlock(),e.createBlock(C,{key:0},{default:e.withCtx(()=>[e.createTextVNode(" Updated: "+e.toDisplayString(a.formatDate(r.microservice_status[i.name].updated_at))+", State: "+e.toDisplayString(r.microservice_status[i.name].state)+", Enabled: "+e.toDisplayString(i.enabled===!1?"False":"True")+", Count: "+e.toDisplayString(r.microservice_status[i.name].count),1)]),_:2},1024)):e.createCommentVNode("",!0)]),_:2},1024),e.createVNode(g)]))),128))]),_:1}),r.showDialog?(e.openBlock(),e.createBlock(V,{key:0,modelValue:r.showDialog,"onUpdate:modelValue":t[1]||(t[1]=i=>r.showDialog=i),content:r.jsonContent,type:"Microservice",name:r.dialogTitle,onSubmit:a.dialogCallback},null,8,["modelValue","content","name","onSubmit"])):e.createCommentVNode("",!0),r.showError?(e.openBlock(),e.createBlock(N,{key:1,modelValue:r.showError,"onUpdate:modelValue":t[2]||(t[2]=i=>r.showError=i),text:r.jsonContent,title:r.dialogTitle},null,8,["modelValue","text","title"])):e.createCommentVNode("",!0)])}const E=y._export_sfc(S,[["render",b],["__scopeId","data-v-af1fc783"]]);exports.default=E;
|
|
2
|
-
//# sourceMappingURL=MicroservicesTab-B5n-mN8G.cjs.map
|