@openc3/vue-common 6.3.0 → 6.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/dist/{ArrayWidget-DkjHrXsu.cjs → ArrayWidget-C7qsXQC9.cjs} +2 -2
  2. package/dist/{ArrayWidget-DkjHrXsu.cjs.map → ArrayWidget-C7qsXQC9.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-BbsN1dzF.js → ArrayWidget-CeyoPOhk.js} +4 -4
  4. package/dist/{ArrayWidget-BbsN1dzF.js.map → ArrayWidget-CeyoPOhk.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-CCKEyYIx.js → ArrayplotWidget-BEw4fJPY.js} +3 -3
  6. package/dist/{ArrayplotWidget-CCKEyYIx.js.map → ArrayplotWidget-BEw4fJPY.js.map} +1 -1
  7. package/dist/ArrayplotWidget-S4tyM6zU.cjs +2 -0
  8. package/dist/{ArrayplotWidget-COeaK_Lz.cjs.map → ArrayplotWidget-S4tyM6zU.cjs.map} +1 -1
  9. package/dist/BarColumn-B2FQVNoP.cjs +2 -0
  10. package/dist/{BarColumn-CJLW1nXy.cjs.map → BarColumn-B2FQVNoP.cjs.map} +1 -1
  11. package/dist/{BarColumn-C6p07yWK.js → BarColumn-CIWppEH6.js} +3 -3
  12. package/dist/{BarColumn-C6p07yWK.js.map → BarColumn-CIWppEH6.js.map} +1 -1
  13. package/dist/{BlockWidget-DlCHbqZX.js → BlockWidget-DRtBkPat.js} +4 -4
  14. package/dist/{BlockWidget-DlCHbqZX.js.map → BlockWidget-DRtBkPat.js.map} +1 -1
  15. package/dist/{BlockWidget-BFVYgbd_.cjs → BlockWidget-EZBTae9s.cjs} +2 -2
  16. package/dist/{BlockWidget-BFVYgbd_.cjs.map → BlockWidget-EZBTae9s.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-CtfJzCBR.js → ButtonWidget-4GORf9BG.js} +14 -14
  18. package/dist/{ButtonWidget-CtfJzCBR.js.map → ButtonWidget-4GORf9BG.js.map} +1 -1
  19. package/dist/ButtonWidget-C0UM4M51.cjs +3 -0
  20. package/dist/{ButtonWidget-HN8UHsme.cjs.map → ButtonWidget-C0UM4M51.cjs.map} +1 -1
  21. package/dist/{CanvasWidget-CHmkxxMO.cjs → CanvasWidget-77u4rg8R.cjs} +2 -2
  22. package/dist/{CanvasWidget-CHmkxxMO.cjs.map → CanvasWidget-77u4rg8R.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-CqRlXc4r.js → CanvasWidget-VW1uHIU0.js} +2 -2
  24. package/dist/{CanvasWidget-CqRlXc4r.js.map → CanvasWidget-VW1uHIU0.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-B4bUcKRc.cjs → CanvasdotWidget-B4olJsKr.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-B4bUcKRc.cjs.map → CanvasdotWidget-B4olJsKr.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget--Xr_KsZs.js → CanvasdotWidget-unc83V9l.js} +2 -2
  28. package/dist/{CanvasdotWidget--Xr_KsZs.js.map → CanvasdotWidget-unc83V9l.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-B5YozXoI.cjs → CanvasimageWidget-BPk3GdGV.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-B5YozXoI.cjs.map → CanvasimageWidget-BPk3GdGV.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-BPlj5QYK.js → CanvasimageWidget-CNPV5Ale.js} +3 -3
  32. package/dist/{CanvasimageWidget-BPlj5QYK.js.map → CanvasimageWidget-CNPV5Ale.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs → CanvasimagevalueWidget-DpPDDitX.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-Dx1HnbEw.cjs.map → CanvasimagevalueWidget-DpPDDitX.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-DVFGLt8f.js → CanvasimagevalueWidget-DsQbSZt_.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-DVFGLt8f.js.map → CanvasimagevalueWidget-DsQbSZt_.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-CYNqmyP0.js → CanvaslabelWidget-B-5KAkZr.js} +2 -2
  38. package/dist/{CanvaslabelWidget-CYNqmyP0.js.map → CanvaslabelWidget-B-5KAkZr.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-DgadQD-D.cjs → CanvaslabelWidget-CjKvr47x.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-DgadQD-D.cjs.map → CanvaslabelWidget-CjKvr47x.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs → CanvaslabelvalueWidget-C0jdjHxr.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-C3k5gx5c.cjs.map → CanvaslabelvalueWidget-C0jdjHxr.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js → CanvaslabelvalueWidget-DX-b_55r.js} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-B7yIDmsn.js.map → CanvaslabelvalueWidget-DX-b_55r.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-CYHkes0a.cjs → CanvaslineWidget-C-4EjDkj.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-CYHkes0a.cjs.map → CanvaslineWidget-C-4EjDkj.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-BICdxX0Q.js → CanvaslineWidget-DiNWzbpu.js} +2 -2
  48. package/dist/{CanvaslineWidget-BICdxX0Q.js.map → CanvaslineWidget-DiNWzbpu.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js → CanvaslinevalueWidget-Du9pwAN7.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Cq-Ddh0P.js.map → CanvaslinevalueWidget-Du9pwAN7.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs → CanvaslinevalueWidget-x81dANpk.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-5DzhZ22p.cjs.map → CanvaslinevalueWidget-x81dANpk.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-B74AWeaW.js → CheckbuttonWidget--QM-segm.js} +2 -2
  54. package/dist/{CheckbuttonWidget-B74AWeaW.js.map → CheckbuttonWidget--QM-segm.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-BCzsXnIF.cjs → CheckbuttonWidget-LWSGbUuH.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-BCzsXnIF.cjs.map → CheckbuttonWidget-LWSGbUuH.cjs.map} +1 -1
  57. package/dist/{ComboboxWidget-CtyKbEWb.js → ComboboxWidget-BDpHIcCo.js} +2 -2
  58. package/dist/{ComboboxWidget-CtyKbEWb.js.map → ComboboxWidget-BDpHIcCo.js.map} +1 -1
  59. package/dist/{ComboboxWidget-DQgDyDAC.cjs → ComboboxWidget-DR8EmM6T.cjs} +2 -2
  60. package/dist/{ComboboxWidget-DQgDyDAC.cjs.map → ComboboxWidget-DR8EmM6T.cjs.map} +1 -1
  61. package/dist/CriticalCmdDialog-Ct5WeIW_.cjs +2 -0
  62. package/dist/CriticalCmdDialog-Ct5WeIW_.cjs.map +1 -0
  63. package/dist/{CriticalCmdDialog-DPIZOBeP.js → CriticalCmdDialog-D4-eoA3P.js} +16 -16
  64. package/dist/CriticalCmdDialog-D4-eoA3P.js.map +1 -0
  65. package/dist/{DateWidget-BEVSczU8.js → DateWidget-BCmQNavZ.js} +3 -3
  66. package/dist/{DateWidget-BEVSczU8.js.map → DateWidget-BCmQNavZ.js.map} +1 -1
  67. package/dist/{DateWidget-BB4cIuUS.cjs → DateWidget-CBzHYk5i.cjs} +2 -2
  68. package/dist/{DateWidget-BB4cIuUS.cjs.map → DateWidget-CBzHYk5i.cjs.map} +1 -1
  69. package/dist/{DetailsDialog-DmEC5BTs.js → DetailsDialog-OMd7LWdZ.js} +18 -18
  70. package/dist/DetailsDialog-OMd7LWdZ.js.map +1 -0
  71. package/dist/DetailsDialog-T9G076-B.cjs +2 -0
  72. package/dist/DetailsDialog-T9G076-B.cjs.map +1 -0
  73. package/dist/EventListDialog-COOwwkxk.cjs +2 -0
  74. package/dist/EventListDialog-COOwwkxk.cjs.map +1 -0
  75. package/dist/{EventListDialog-CSMSmCIT.js → EventListDialog-ankpCg-n.js} +520 -593
  76. package/dist/EventListDialog-ankpCg-n.js.map +1 -0
  77. package/dist/FormatvalueWidget-CPn5mDHY.js +48 -0
  78. package/dist/FormatvalueWidget-CPn5mDHY.js.map +1 -0
  79. package/dist/FormatvalueWidget-wjsl4ty0.cjs +2 -0
  80. package/dist/FormatvalueWidget-wjsl4ty0.cjs.map +1 -0
  81. package/dist/Graph-hTOB_jv2.cjs +2 -0
  82. package/dist/Graph-hTOB_jv2.cjs.map +1 -0
  83. package/dist/{Graph-Bgo0cjl3.js → Graph-vUcIyyTp.js} +666 -801
  84. package/dist/Graph-vUcIyyTp.js.map +1 -0
  85. package/dist/{GraphWidget-DurWDmpg.js → GraphWidget-Cl97QQYm.js} +2 -2
  86. package/dist/{GraphWidget-DurWDmpg.js.map → GraphWidget-Cl97QQYm.js.map} +1 -1
  87. package/dist/{GraphWidget-sid4Ws9H.cjs → GraphWidget-D3rDXvA8.cjs} +2 -2
  88. package/dist/{GraphWidget-sid4Ws9H.cjs.map → GraphWidget-D3rDXvA8.cjs.map} +1 -1
  89. package/dist/{HorizontalWidget-_6IR0cR8.cjs → HorizontalWidget-72nrDrwn.cjs} +2 -2
  90. package/dist/{HorizontalWidget-_6IR0cR8.cjs.map → HorizontalWidget-72nrDrwn.cjs.map} +1 -1
  91. package/dist/{HorizontalWidget-Cd_wl1b3.js → HorizontalWidget-CtTkQHl-.js} +2 -2
  92. package/dist/{HorizontalWidget-Cd_wl1b3.js.map → HorizontalWidget-CtTkQHl-.js.map} +1 -1
  93. package/dist/{HorizontalboxWidget-zmnurtv1.cjs → HorizontalboxWidget-C8kuEm-u.cjs} +2 -2
  94. package/dist/{HorizontalboxWidget-zmnurtv1.cjs.map → HorizontalboxWidget-C8kuEm-u.cjs.map} +1 -1
  95. package/dist/{HorizontalboxWidget-BcMTFBU-.js → HorizontalboxWidget-Dn9zVn4r.js} +5 -5
  96. package/dist/{HorizontalboxWidget-BcMTFBU-.js.map → HorizontalboxWidget-Dn9zVn4r.js.map} +1 -1
  97. package/dist/{HorizontallineWidget-CXFqHclf.js → HorizontallineWidget-BBvYWaP7.js} +2 -2
  98. package/dist/{HorizontallineWidget-CXFqHclf.js.map → HorizontallineWidget-BBvYWaP7.js.map} +1 -1
  99. package/dist/{HorizontallineWidget-CM-6WqCj.cjs → HorizontallineWidget-Bs_p5rzY.cjs} +2 -2
  100. package/dist/{HorizontallineWidget-CM-6WqCj.cjs.map → HorizontallineWidget-Bs_p5rzY.cjs.map} +1 -1
  101. package/dist/{IframeWidget-EhncMob0.cjs → IframeWidget-Bhl0G51c.cjs} +2 -2
  102. package/dist/{IframeWidget-EhncMob0.cjs.map → IframeWidget-Bhl0G51c.cjs.map} +1 -1
  103. package/dist/{IframeWidget-BPerHCCa.js → IframeWidget-BmZOip3U.js} +2 -2
  104. package/dist/{IframeWidget-BPerHCCa.js.map → IframeWidget-BmZOip3U.js.map} +1 -1
  105. package/dist/ImageLoader-CXV42ZAx.cjs +2 -0
  106. package/dist/{ImageLoader-cRmBcpU9.cjs.map → ImageLoader-CXV42ZAx.cjs.map} +1 -1
  107. package/dist/{ImageLoader-4N-7Gj61.js → ImageLoader-wYNaGuuz.js} +2 -2
  108. package/dist/{ImageLoader-4N-7Gj61.js.map → ImageLoader-wYNaGuuz.js.map} +1 -1
  109. package/dist/{ImageviewerWidget-Bv3CreXd.cjs → ImageviewerWidget-BAK_GlYK.cjs} +2 -2
  110. package/dist/{ImageviewerWidget-Bv3CreXd.cjs.map → ImageviewerWidget-BAK_GlYK.cjs.map} +1 -1
  111. package/dist/{ImageviewerWidget-Cw_H_HmZ.js → ImageviewerWidget-ByuTqBHq.js} +2 -2
  112. package/dist/{ImageviewerWidget-Cw_H_HmZ.js.map → ImageviewerWidget-ByuTqBHq.js.map} +1 -1
  113. package/dist/InterfacesTab-BbsiYwEX.js +83 -0
  114. package/dist/InterfacesTab-BbsiYwEX.js.map +1 -0
  115. package/dist/InterfacesTab-CnQLkjoz.cjs +2 -0
  116. package/dist/InterfacesTab-CnQLkjoz.cjs.map +1 -0
  117. package/dist/{LabelWidget-mMcf5S8K.cjs → LabelWidget-BP72ze-R.cjs} +2 -2
  118. package/dist/{LabelWidget-mMcf5S8K.cjs.map → LabelWidget-BP72ze-R.cjs.map} +1 -1
  119. package/dist/{LabelWidget-xrmcVeq8.js → LabelWidget-Dmb5F5j-.js} +2 -2
  120. package/dist/{LabelWidget-xrmcVeq8.js.map → LabelWidget-Dmb5F5j-.js.map} +1 -1
  121. package/dist/{LabelledWidget-BoYCuDaH.cjs → LabelledWidget-DIflzlDv.cjs} +2 -2
  122. package/dist/{LabelledWidget-BoYCuDaH.cjs.map → LabelledWidget-DIflzlDv.cjs.map} +1 -1
  123. package/dist/{LabelledWidget-D48QoyMk.js → LabelledWidget-DV1IbbPS.js} +4 -4
  124. package/dist/{LabelledWidget-D48QoyMk.js.map → LabelledWidget-DV1IbbPS.js.map} +1 -1
  125. package/dist/{LabelprogressbarWidget-DiucKsT2.cjs → LabelprogressbarWidget-B18EaMhU.cjs} +2 -2
  126. package/dist/{LabelprogressbarWidget-DiucKsT2.cjs.map → LabelprogressbarWidget-B18EaMhU.cjs.map} +1 -1
  127. package/dist/{LabelprogressbarWidget-C_950t6g.js → LabelprogressbarWidget-BHBDYVZp.js} +4 -4
  128. package/dist/{LabelprogressbarWidget-C_950t6g.js.map → LabelprogressbarWidget-BHBDYVZp.js.map} +1 -1
  129. package/dist/{LabelsparklineWidget-0KXQyPoU.js → LabelsparklineWidget-BaoIdd7s.js} +4 -4
  130. package/dist/{LabelsparklineWidget-0KXQyPoU.js.map → LabelsparklineWidget-BaoIdd7s.js.map} +1 -1
  131. package/dist/{LabelsparklineWidget-A3MTEhQc.cjs → LabelsparklineWidget-Bdft2p6Y.cjs} +2 -2
  132. package/dist/{LabelsparklineWidget-A3MTEhQc.cjs.map → LabelsparklineWidget-Bdft2p6Y.cjs.map} +1 -1
  133. package/dist/{LabelvalueWidget-DnKoz0-N.cjs → LabelvalueWidget-DiqMgePn.cjs} +2 -2
  134. package/dist/{LabelvalueWidget-DnKoz0-N.cjs.map → LabelvalueWidget-DiqMgePn.cjs.map} +1 -1
  135. package/dist/{LabelvalueWidget-CQ06wWDK.js → LabelvalueWidget-wuW55zQP.js} +4 -4
  136. package/dist/{LabelvalueWidget-CQ06wWDK.js.map → LabelvalueWidget-wuW55zQP.js.map} +1 -1
  137. package/dist/{LabelvaluedescWidget-Bo8zT01X.js → LabelvaluedescWidget-BBHwqvj4.js} +9 -9
  138. package/dist/{LabelvaluedescWidget-Bo8zT01X.js.map → LabelvaluedescWidget-BBHwqvj4.js.map} +1 -1
  139. package/dist/LabelvaluedescWidget-fN9XLm-N.cjs +2 -0
  140. package/dist/{LabelvaluedescWidget-I6ljK--Y.cjs.map → LabelvaluedescWidget-fN9XLm-N.cjs.map} +1 -1
  141. package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js → LabelvaluelimitsbarWidget-77Rc3lCf.js} +4 -4
  142. package/dist/{LabelvaluelimitsbarWidget-BucTw8Yk.js.map → LabelvaluelimitsbarWidget-77Rc3lCf.js.map} +1 -1
  143. package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs → LabelvaluelimitsbarWidget-Dp5qsue9.cjs} +2 -2
  144. package/dist/{LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map → LabelvaluelimitsbarWidget-Dp5qsue9.cjs.map} +1 -1
  145. package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js → LabelvaluelimitscolumnWidget-nounrACl.js} +5 -5
  146. package/dist/{LabelvaluelimitscolumnWidget-Dflb1hNd.js.map → LabelvaluelimitscolumnWidget-nounrACl.js.map} +1 -1
  147. package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs → LabelvaluelimitscolumnWidget-uR4QE_cm.cjs} +2 -2
  148. package/dist/{LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map → LabelvaluelimitscolumnWidget-uR4QE_cm.cjs.map} +1 -1
  149. package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js → LabelvaluerangebarWidget-B83Jj5Q1.js} +4 -4
  150. package/dist/{LabelvaluerangebarWidget-D8cbfXFM.js.map → LabelvaluerangebarWidget-B83Jj5Q1.js.map} +1 -1
  151. package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs → LabelvaluerangebarWidget-MVkSnTVH.cjs} +2 -2
  152. package/dist/{LabelvaluerangebarWidget-9S5rVZaS.cjs.map → LabelvaluerangebarWidget-MVkSnTVH.cjs.map} +1 -1
  153. package/dist/{Layout-Tf--nruw.js → Layout-ByQC7nQ3.js} +2 -2
  154. package/dist/{Layout-Tf--nruw.js.map → Layout-ByQC7nQ3.js.map} +1 -1
  155. package/dist/Layout-CFJMHNqy.cjs +2 -0
  156. package/dist/{Layout-DuCYyOw4.cjs.map → Layout-CFJMHNqy.cjs.map} +1 -1
  157. package/dist/{LedWidget-qH_FthkK.js → LedWidget-Cccb8YTk.js} +13 -10
  158. package/dist/LedWidget-Cccb8YTk.js.map +1 -0
  159. package/dist/LedWidget-ghzR6jZJ.cjs +2 -0
  160. package/dist/LedWidget-ghzR6jZJ.cjs.map +1 -0
  161. package/dist/{LimitsbarWidget-B9lAB2RD.js → LimitsbarWidget-D1EBBwX1.js} +10 -7
  162. package/dist/LimitsbarWidget-D1EBBwX1.js.map +1 -0
  163. package/dist/LimitsbarWidget-Dg2_T5OY.cjs +2 -0
  164. package/dist/LimitsbarWidget-Dg2_T5OY.cjs.map +1 -0
  165. package/dist/{LimitscolorWidget-c6Qa6su7.js → LimitscolorWidget--1aPSNVB.js} +2 -2
  166. package/dist/{LimitscolorWidget-c6Qa6su7.js.map → LimitscolorWidget--1aPSNVB.js.map} +1 -1
  167. package/dist/{LimitscolorWidget-DORhDxRo.cjs → LimitscolorWidget-D9mHLFOs.cjs} +2 -2
  168. package/dist/{LimitscolorWidget-DORhDxRo.cjs.map → LimitscolorWidget-D9mHLFOs.cjs.map} +1 -1
  169. package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs → LimitscolumnWidget-D18x3aW-.cjs} +2 -2
  170. package/dist/{LimitscolumnWidget-C9Uyg7Fh.cjs.map → LimitscolumnWidget-D18x3aW-.cjs.map} +1 -1
  171. package/dist/{LimitscolumnWidget-CcLs_443.js → LimitscolumnWidget-swnMNApm.js} +2 -2
  172. package/dist/{LimitscolumnWidget-CcLs_443.js.map → LimitscolumnWidget-swnMNApm.js.map} +1 -1
  173. package/dist/{LinegraphWidget-BSVYLFo1.js → LinegraphWidget-BbI-wOnq.js} +4 -4
  174. package/dist/{LinegraphWidget-BSVYLFo1.js.map → LinegraphWidget-BbI-wOnq.js.map} +1 -1
  175. package/dist/LinegraphWidget-BdCc6zps.cjs +2 -0
  176. package/dist/{LinegraphWidget-Bf8DIwEn.cjs.map → LinegraphWidget-BdCc6zps.cjs.map} +1 -1
  177. package/dist/{MatrixbycolumnsWidget-DXFpZTre.js → MatrixbycolumnsWidget-Bx2qMr8P.js} +3 -3
  178. package/dist/{MatrixbycolumnsWidget-DXFpZTre.js.map → MatrixbycolumnsWidget-Bx2qMr8P.js.map} +1 -1
  179. package/dist/MatrixbycolumnsWidget-CuhTHsdb.cjs +2 -0
  180. package/dist/{MatrixbycolumnsWidget-DpdFzNeP.cjs.map → MatrixbycolumnsWidget-CuhTHsdb.cjs.map} +1 -1
  181. package/dist/MicroservicesTab-7mVRcHEj.cjs +2 -0
  182. package/dist/MicroservicesTab-7mVRcHEj.cjs.map +1 -0
  183. package/dist/MicroservicesTab-CtI7BEt0.js +219 -0
  184. package/dist/MicroservicesTab-CtI7BEt0.js.map +1 -0
  185. package/dist/Openc3Screen-B4X70CVP.cjs +5 -0
  186. package/dist/Openc3Screen-B4X70CVP.cjs.map +1 -0
  187. package/dist/Openc3Screen-DFYYhHt7.js +1704 -0
  188. package/dist/Openc3Screen-DFYYhHt7.js.map +1 -0
  189. package/dist/{OutputDialog-zVPZiZay.js → OutputDialog-CqD5uI0m.js} +66 -78
  190. package/dist/OutputDialog-CqD5uI0m.js.map +1 -0
  191. package/dist/OutputDialog-Dft9Xm4R.cjs +2 -0
  192. package/dist/OutputDialog-Dft9Xm4R.cjs.map +1 -0
  193. package/dist/PackagesTab-BxP1kiSR.cjs +2 -0
  194. package/dist/PackagesTab-BxP1kiSR.cjs.map +1 -0
  195. package/dist/PackagesTab-DhMk-fi5.js +313 -0
  196. package/dist/PackagesTab-DhMk-fi5.js.map +1 -0
  197. package/dist/PluginsTab-BKJo5vK-.cjs +6 -0
  198. package/dist/PluginsTab-BKJo5vK-.cjs.map +1 -0
  199. package/dist/{PluginsTab-B64OvayB.js → PluginsTab-DxxEqPCA.js} +205 -244
  200. package/dist/PluginsTab-DxxEqPCA.js.map +1 -0
  201. package/dist/{ProgressbarWidget-iYGw8-Dc.js → ProgressbarWidget-7rJeuX6H.js} +2 -2
  202. package/dist/{ProgressbarWidget-iYGw8-Dc.js.map → ProgressbarWidget-7rJeuX6H.js.map} +1 -1
  203. package/dist/{ProgressbarWidget-fGWa6ipm.cjs → ProgressbarWidget-DLvbQ0g-.cjs} +2 -2
  204. package/dist/{ProgressbarWidget-fGWa6ipm.cjs.map → ProgressbarWidget-DLvbQ0g-.cjs.map} +1 -1
  205. package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs → RadiobuttonWidget-C15SchQH.cjs} +2 -2
  206. package/dist/{RadiobuttonWidget-ZEPJbOp_.cjs.map → RadiobuttonWidget-C15SchQH.cjs.map} +1 -1
  207. package/dist/{RadiobuttonWidget-ytmoVZ3u.js → RadiobuttonWidget-DsEw3JiU.js} +2 -2
  208. package/dist/{RadiobuttonWidget-ytmoVZ3u.js.map → RadiobuttonWidget-DsEw3JiU.js.map} +1 -1
  209. package/dist/{RadiogroupWidget-EK4rEGUC.cjs → RadiogroupWidget-BZS_MkSP.cjs} +2 -2
  210. package/dist/{RadiogroupWidget-EK4rEGUC.cjs.map → RadiogroupWidget-BZS_MkSP.cjs.map} +1 -1
  211. package/dist/{RadiogroupWidget-CusMBhKH.js → RadiogroupWidget-DhfbTvQ8.js} +2 -2
  212. package/dist/{RadiogroupWidget-CusMBhKH.js.map → RadiogroupWidget-DhfbTvQ8.js.map} +1 -1
  213. package/dist/{RangebarWidget-D_zGTtCa.js → RangebarWidget-BEGvSL_K.js} +2 -2
  214. package/dist/{RangebarWidget-D_zGTtCa.js.map → RangebarWidget-BEGvSL_K.js.map} +1 -1
  215. package/dist/{RangebarWidget-DwIs-L5k.cjs → RangebarWidget-bBSBfvHk.cjs} +2 -2
  216. package/dist/{RangebarWidget-DwIs-L5k.cjs.map → RangebarWidget-bBSBfvHk.cjs.map} +1 -1
  217. package/dist/{RedisTab-CyPo6ADN.js → RedisTab-Bq8Frctp.js} +13 -13
  218. package/dist/{RedisTab-CyPo6ADN.js.map → RedisTab-Bq8Frctp.js.map} +1 -1
  219. package/dist/RedisTab-CWYntIvy.cjs +2 -0
  220. package/dist/{RedisTab-67UcKoPf.cjs.map → RedisTab-CWYntIvy.cjs.map} +1 -1
  221. package/dist/{RollupWidget-Dolsixyt.js → RollupWidget-BZhspgWd.js} +2 -2
  222. package/dist/{RollupWidget-Dolsixyt.js.map → RollupWidget-BZhspgWd.js.map} +1 -1
  223. package/dist/{RollupWidget-DC3OIP6G.cjs → RollupWidget-BueYskqE.cjs} +2 -2
  224. package/dist/{RollupWidget-DC3OIP6G.cjs.map → RollupWidget-BueYskqE.cjs.map} +1 -1
  225. package/dist/RoutersTab-Bg6dpAXr.js +85 -0
  226. package/dist/RoutersTab-Bg6dpAXr.js.map +1 -0
  227. package/dist/RoutersTab-DOseaOsv.cjs +2 -0
  228. package/dist/RoutersTab-DOseaOsv.cjs.map +1 -0
  229. package/dist/ScriptChooser-CHkObjcT.cjs +2 -0
  230. package/dist/ScriptChooser-CHkObjcT.cjs.map +1 -0
  231. package/dist/ScriptChooser-DBkFAc6E.js +176 -0
  232. package/dist/ScriptChooser-DBkFAc6E.js.map +1 -0
  233. package/dist/{ScrollwindowWidget-BWeqSUPc.cjs → ScrollwindowWidget-CJmuGHai.cjs} +2 -2
  234. package/dist/{ScrollwindowWidget-BWeqSUPc.cjs.map → ScrollwindowWidget-CJmuGHai.cjs.map} +1 -1
  235. package/dist/{ScrollwindowWidget-DV2nZuNi.js → ScrollwindowWidget-qZ3nhhVU.js} +3 -3
  236. package/dist/{ScrollwindowWidget-DV2nZuNi.js.map → ScrollwindowWidget-qZ3nhhVU.js.map} +1 -1
  237. package/dist/SecretsTab-B49h9PhL.cjs +2 -0
  238. package/dist/SecretsTab-B49h9PhL.cjs.map +1 -0
  239. package/dist/{SecretsTab-DVyyyGlG.js → SecretsTab-vdm8oj9_.js} +39 -49
  240. package/dist/SecretsTab-vdm8oj9_.js.map +1 -0
  241. package/dist/{SettingsTab-g29K6FyC.js → SettingsTab-C05e6-Xm.js} +3 -3
  242. package/dist/{SettingsTab-g29K6FyC.js.map → SettingsTab-C05e6-Xm.js.map} +1 -1
  243. package/dist/SettingsTab-fmHVuOps.cjs +3 -0
  244. package/dist/{SettingsTab-B1LvOLG2.cjs.map → SettingsTab-fmHVuOps.cjs.map} +1 -1
  245. package/dist/{SignalWidget-d9-6h85k.js → SignalWidget-Bh14Zrch.js} +16 -18
  246. package/dist/SignalWidget-Bh14Zrch.js.map +1 -0
  247. package/dist/{SignalWidget-RvRwpE8T.cjs → SignalWidget-J3LFoUd-.cjs} +2 -2
  248. package/dist/SignalWidget-J3LFoUd-.cjs.map +1 -0
  249. package/dist/SimpleTextDialog-CSsm9IoB.cjs +2 -0
  250. package/dist/SimpleTextDialog-CSsm9IoB.cjs.map +1 -0
  251. package/dist/SimpleTextDialog-plHG7LGh.js +97 -0
  252. package/dist/SimpleTextDialog-plHG7LGh.js.map +1 -0
  253. package/dist/{SpacerWidget-7_8bpLCb.cjs → SpacerWidget-CzqLoBdY.cjs} +2 -2
  254. package/dist/{SpacerWidget-7_8bpLCb.cjs.map → SpacerWidget-CzqLoBdY.cjs.map} +1 -1
  255. package/dist/{SpacerWidget-BH0p2OLi.js → SpacerWidget-D_NE46jZ.js} +2 -2
  256. package/dist/{SpacerWidget-BH0p2OLi.js.map → SpacerWidget-D_NE46jZ.js.map} +1 -1
  257. package/dist/{SparklineWidget-coxi9r2g.js → SparklineWidget-CJEEJdZ-.js} +4 -4
  258. package/dist/{SparklineWidget-coxi9r2g.js.map → SparklineWidget-CJEEJdZ-.js.map} +1 -1
  259. package/dist/SparklineWidget-DDRhatn7.cjs +2 -0
  260. package/dist/{SparklineWidget-60jVlbHA.cjs.map → SparklineWidget-DDRhatn7.cjs.map} +1 -1
  261. package/dist/{TabbookWidget-B1XKplGH.js → TabbookWidget-C-SU65IF.js} +2 -2
  262. package/dist/{TabbookWidget-B1XKplGH.js.map → TabbookWidget-C-SU65IF.js.map} +1 -1
  263. package/dist/{TabbookWidget-D1CVT9IK.cjs → TabbookWidget-C8k2kKLX.cjs} +2 -2
  264. package/dist/{TabbookWidget-D1CVT9IK.cjs.map → TabbookWidget-C8k2kKLX.cjs.map} +1 -1
  265. package/dist/TargetsTab-DyfyM9sC.js +117 -0
  266. package/dist/TargetsTab-DyfyM9sC.js.map +1 -0
  267. package/dist/TargetsTab-pU_wu9d-.cjs +2 -0
  268. package/dist/TargetsTab-pU_wu9d-.cjs.map +1 -0
  269. package/dist/TextBoxDialog-C60jmnyN.js +98 -0
  270. package/dist/TextBoxDialog-C60jmnyN.js.map +1 -0
  271. package/dist/TextBoxDialog-DWt30tB8.cjs +2 -0
  272. package/dist/TextBoxDialog-DWt30tB8.cjs.map +1 -0
  273. package/dist/TextboxWidget-CRDu77NK.cjs +2 -0
  274. package/dist/{TextboxWidget-BDG4NxRw.cjs.map → TextboxWidget-CRDu77NK.cjs.map} +1 -1
  275. package/dist/{TextboxWidget-C-_M2M4l.js → TextboxWidget-Dn1Ds-b0.js} +4 -4
  276. package/dist/{TextboxWidget-C-_M2M4l.js.map → TextboxWidget-Dn1Ds-b0.js.map} +1 -1
  277. package/dist/{TextfieldWidget-C08N4JE8.js → TextfieldWidget-C0C7NL53.js} +2 -2
  278. package/dist/{TextfieldWidget-C08N4JE8.js.map → TextfieldWidget-C0C7NL53.js.map} +1 -1
  279. package/dist/{TextfieldWidget-BGJv9Lox.cjs → TextfieldWidget-DGdD6b_-.cjs} +2 -2
  280. package/dist/{TextfieldWidget-BGJv9Lox.cjs.map → TextfieldWidget-DGdD6b_-.cjs.map} +1 -1
  281. package/dist/{TimeWidget-DtwdEcFg.js → TimeWidget-AFOTVB4w.js} +3 -3
  282. package/dist/{TimeWidget-DtwdEcFg.js.map → TimeWidget-AFOTVB4w.js.map} +1 -1
  283. package/dist/{TimeWidget-CGCOIouj.cjs → TimeWidget-BlZoS24B.cjs} +2 -2
  284. package/dist/{TimeWidget-CGCOIouj.cjs.map → TimeWidget-BlZoS24B.cjs.map} +1 -1
  285. package/dist/{TitleWidget-CT-aLcNb.js → TitleWidget-CbS_wrQw.js} +2 -2
  286. package/dist/{TitleWidget-CT-aLcNb.js.map → TitleWidget-CbS_wrQw.js.map} +1 -1
  287. package/dist/{TitleWidget-BljFH9RB.cjs → TitleWidget-DDEnHVPP.cjs} +2 -2
  288. package/dist/{TitleWidget-BljFH9RB.cjs.map → TitleWidget-DDEnHVPP.cjs.map} +1 -1
  289. package/dist/ToolsTab-BvpoO0wt.js +1501 -0
  290. package/dist/{ToolsTab-NveeVXz2.js.map → ToolsTab-BvpoO0wt.js.map} +1 -1
  291. package/dist/ToolsTab-DCRNrlhT.cjs +7 -0
  292. package/dist/{ToolsTab-RMTst_Sy.cjs.map → ToolsTab-DCRNrlhT.cjs.map} +1 -1
  293. package/dist/{TopBar-CnJNNJlV.js → TopBar-AjYGyx8W.js} +68 -64
  294. package/dist/TopBar-AjYGyx8W.js.map +1 -0
  295. package/dist/TopBar-vznpQjGN.cjs +2 -0
  296. package/dist/TopBar-vznpQjGN.cjs.map +1 -0
  297. package/dist/UpgradeToEnterpriseDialog-1fVtqbze.cjs +2 -0
  298. package/dist/UpgradeToEnterpriseDialog-1fVtqbze.cjs.map +1 -0
  299. package/dist/UpgradeToEnterpriseDialog-CMVEjihv.js +95 -0
  300. package/dist/UpgradeToEnterpriseDialog-CMVEjihv.js.map +1 -0
  301. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs +1497 -0
  302. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs.map +1 -0
  303. package/dist/{WidgetComponents-C1lSLZ0I.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js} +10636 -10597
  304. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js.map +1 -0
  305. package/dist/{VWidget-DQqb7NVW.js → VWidget-BlF_o-7Z.js} +3 -3
  306. package/dist/{VWidget-DQqb7NVW.js.map → VWidget-BlF_o-7Z.js.map} +1 -1
  307. package/dist/{VWidget-2N2cOosI.cjs → VWidget-CMKh-tv6.cjs} +2 -2
  308. package/dist/{VWidget-2N2cOosI.cjs.map → VWidget-CMKh-tv6.cjs.map} +1 -1
  309. package/dist/{ValueWidget-C6RanBj3.js → ValueWidget-DFUfM5tw.js} +16 -14
  310. package/dist/ValueWidget-DFUfM5tw.js.map +1 -0
  311. package/dist/ValueWidget-K7SCPEB6.cjs +2 -0
  312. package/dist/ValueWidget-K7SCPEB6.cjs.map +1 -0
  313. package/dist/{ValuelimitsbarWidget-B3bvjfxc.js → ValuelimitsbarWidget-CALgABsT.js} +4 -4
  314. package/dist/{ValuelimitsbarWidget-B3bvjfxc.js.map → ValuelimitsbarWidget-CALgABsT.js.map} +1 -1
  315. package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs → ValuelimitsbarWidget-DcY2NV9X.cjs} +2 -2
  316. package/dist/{ValuelimitsbarWidget-C0HROxrb.cjs.map → ValuelimitsbarWidget-DcY2NV9X.cjs.map} +1 -1
  317. package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js → ValuelimitscolumnWidget-Bs91VFLz.js} +4 -4
  318. package/dist/{ValuelimitscolumnWidget-QvhI6EcE.js.map → ValuelimitscolumnWidget-Bs91VFLz.js.map} +1 -1
  319. package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs → ValuelimitscolumnWidget-DQKvlGap.cjs} +2 -2
  320. package/dist/{ValuelimitscolumnWidget-CWvLfg8u.cjs.map → ValuelimitscolumnWidget-DQKvlGap.cjs.map} +1 -1
  321. package/dist/{ValuerangebarWidget-Dt3K9BnC.js → ValuerangebarWidget-C7WHyR2h.js} +4 -4
  322. package/dist/{ValuerangebarWidget-Dt3K9BnC.js.map → ValuerangebarWidget-C7WHyR2h.js.map} +1 -1
  323. package/dist/{ValuerangebarWidget-DyN78cQl.cjs → ValuerangebarWidget-DnWuvusw.cjs} +2 -2
  324. package/dist/{ValuerangebarWidget-DyN78cQl.cjs.map → ValuerangebarWidget-DnWuvusw.cjs.map} +1 -1
  325. package/dist/{VerticalWidget-BIIViZgI.js → VerticalWidget-COP5oVCK.js} +2 -2
  326. package/dist/{VerticalWidget-BIIViZgI.js.map → VerticalWidget-COP5oVCK.js.map} +1 -1
  327. package/dist/{VerticalWidget-CFTOu4H8.cjs → VerticalWidget-eMN4dvxL.cjs} +2 -2
  328. package/dist/{VerticalWidget-CFTOu4H8.cjs.map → VerticalWidget-eMN4dvxL.cjs.map} +1 -1
  329. package/dist/{VerticalboxWidget-DY72fLHW.js → VerticalboxWidget-CDPoOx4C.js} +5 -5
  330. package/dist/{VerticalboxWidget-DY72fLHW.js.map → VerticalboxWidget-CDPoOx4C.js.map} +1 -1
  331. package/dist/{VerticalboxWidget-Z8-DWI8t.cjs → VerticalboxWidget-UIBpyEz_.cjs} +2 -2
  332. package/dist/{VerticalboxWidget-Z8-DWI8t.cjs.map → VerticalboxWidget-UIBpyEz_.cjs.map} +1 -1
  333. package/dist/Widget-Cg0pAxSF.cjs +2 -0
  334. package/dist/Widget-Cg0pAxSF.cjs.map +1 -0
  335. package/dist/{Widget-oyqWpFXJ.js → Widget-cmJ76_g1.js} +3 -3
  336. package/dist/Widget-cmJ76_g1.js.map +1 -0
  337. package/dist/components.cjs +3 -3
  338. package/dist/components.cjs.map +1 -1
  339. package/dist/components.js +285 -318
  340. package/dist/components.js.map +1 -1
  341. package/dist/index-DcL65Mqb.cjs +7 -0
  342. package/dist/index-DcL65Mqb.cjs.map +1 -0
  343. package/dist/{index-DwP8ryNM.js → index-qCq0L4jN.js} +332 -323
  344. package/dist/index-qCq0L4jN.js.map +1 -0
  345. package/dist/plugins.cjs +2 -2
  346. package/dist/plugins.cjs.map +1 -1
  347. package/dist/plugins.js +94 -89
  348. package/dist/plugins.js.map +1 -1
  349. package/dist/{timeFilters-CRYpYDdf.js → timeFilters-BKnCM4rv.js} +139 -136
  350. package/dist/{timeFilters-CRYpYDdf.js.map → timeFilters-BKnCM4rv.js.map} +1 -1
  351. package/dist/timeFilters-CJFxfjqN.cjs +2 -0
  352. package/dist/{timeFilters-8SaYvcH0.cjs.map → timeFilters-CJFxfjqN.cjs.map} +1 -1
  353. package/dist/tools/admin.cjs +10 -10
  354. package/dist/tools/admin.cjs.map +1 -1
  355. package/dist/tools/admin.js +380 -406
  356. package/dist/tools/admin.js.map +1 -1
  357. package/dist/tools/base.cjs +1 -1
  358. package/dist/tools/base.cjs.map +1 -1
  359. package/dist/tools/base.js +212 -215
  360. package/dist/tools/base.js.map +1 -1
  361. package/dist/tools/calendar.cjs +1 -1
  362. package/dist/tools/calendar.js +1 -1
  363. package/dist/tools/scriptrunner.cjs +7 -8
  364. package/dist/tools/scriptrunner.cjs.map +1 -1
  365. package/dist/tools/scriptrunner.js +2021 -2011
  366. package/dist/tools/scriptrunner.js.map +1 -1
  367. package/dist/util.cjs +1 -1
  368. package/dist/util.js +1 -1
  369. package/dist/vue-common.css +1 -1
  370. package/dist/widgets.cjs +1 -1
  371. package/dist/widgets.js +63 -63
  372. package/package.json +12 -12
  373. package/dist/ArrayplotWidget-COeaK_Lz.cjs +0 -2
  374. package/dist/BarColumn-CJLW1nXy.cjs +0 -2
  375. package/dist/ButtonWidget-HN8UHsme.cjs +0 -3
  376. package/dist/CriticalCmdDialog-BnxZlt7W.cjs +0 -2
  377. package/dist/CriticalCmdDialog-BnxZlt7W.cjs.map +0 -1
  378. package/dist/CriticalCmdDialog-DPIZOBeP.js.map +0 -1
  379. package/dist/DetailsDialog-DmEC5BTs.js.map +0 -1
  380. package/dist/DetailsDialog-mvxMFmgV.cjs +0 -2
  381. package/dist/DetailsDialog-mvxMFmgV.cjs.map +0 -1
  382. package/dist/EventListDialog-BHZLl28V.cjs +0 -2
  383. package/dist/EventListDialog-BHZLl28V.cjs.map +0 -1
  384. package/dist/EventListDialog-CSMSmCIT.js.map +0 -1
  385. package/dist/FormatvalueWidget-CdjCEAI7.cjs +0 -2
  386. package/dist/FormatvalueWidget-CdjCEAI7.cjs.map +0 -1
  387. package/dist/FormatvalueWidget-DN12xymS.js +0 -44
  388. package/dist/FormatvalueWidget-DN12xymS.js.map +0 -1
  389. package/dist/Graph-Bgo0cjl3.js.map +0 -1
  390. package/dist/Graph-Ujd2yaeI.cjs +0 -2
  391. package/dist/Graph-Ujd2yaeI.cjs.map +0 -1
  392. package/dist/ImageLoader-cRmBcpU9.cjs +0 -2
  393. package/dist/InterfacesTab-B4glsR9Z.js +0 -93
  394. package/dist/InterfacesTab-B4glsR9Z.js.map +0 -1
  395. package/dist/InterfacesTab-Co1Kd6Fa.cjs +0 -2
  396. package/dist/InterfacesTab-Co1Kd6Fa.cjs.map +0 -1
  397. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +0 -2
  398. package/dist/Layout-DuCYyOw4.cjs +0 -2
  399. package/dist/LedWidget-B2BcwiYF.cjs +0 -2
  400. package/dist/LedWidget-B2BcwiYF.cjs.map +0 -1
  401. package/dist/LedWidget-qH_FthkK.js.map +0 -1
  402. package/dist/LimitsbarWidget-B9lAB2RD.js.map +0 -1
  403. package/dist/LimitsbarWidget-CVCLFIhG.cjs +0 -2
  404. package/dist/LimitsbarWidget-CVCLFIhG.cjs.map +0 -1
  405. package/dist/LinegraphWidget-Bf8DIwEn.cjs +0 -2
  406. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +0 -2
  407. package/dist/MicroservicesTab-B5n-mN8G.cjs +0 -2
  408. package/dist/MicroservicesTab-B5n-mN8G.cjs.map +0 -1
  409. package/dist/MicroservicesTab-mCdS0v39.js +0 -264
  410. package/dist/MicroservicesTab-mCdS0v39.js.map +0 -1
  411. package/dist/Openc3Screen-BYhHaH_I.cjs +0 -5
  412. package/dist/Openc3Screen-BYhHaH_I.cjs.map +0 -1
  413. package/dist/Openc3Screen-Cud0OCFu.js +0 -1789
  414. package/dist/Openc3Screen-Cud0OCFu.js.map +0 -1
  415. package/dist/OutputDialog-DXoL9VPw.cjs +0 -2
  416. package/dist/OutputDialog-DXoL9VPw.cjs.map +0 -1
  417. package/dist/OutputDialog-zVPZiZay.js.map +0 -1
  418. package/dist/PackagesTab-CvT2JyMA.cjs +0 -2
  419. package/dist/PackagesTab-CvT2JyMA.cjs.map +0 -1
  420. package/dist/PackagesTab-SWcXumpK.js +0 -332
  421. package/dist/PackagesTab-SWcXumpK.js.map +0 -1
  422. package/dist/PluginsTab-B64OvayB.js.map +0 -1
  423. package/dist/PluginsTab-CfpwWsqv.cjs +0 -6
  424. package/dist/PluginsTab-CfpwWsqv.cjs.map +0 -1
  425. package/dist/RedisTab-67UcKoPf.cjs +0 -2
  426. package/dist/RoutersTab-BBPlFi_z.cjs +0 -2
  427. package/dist/RoutersTab-BBPlFi_z.cjs.map +0 -1
  428. package/dist/RoutersTab-Cs2dFVNA.js +0 -95
  429. package/dist/RoutersTab-Cs2dFVNA.js.map +0 -1
  430. package/dist/ScriptChooser-EV65rbWx.js +0 -199
  431. package/dist/ScriptChooser-EV65rbWx.js.map +0 -1
  432. package/dist/ScriptChooser-vyZwngrz.cjs +0 -2
  433. package/dist/ScriptChooser-vyZwngrz.cjs.map +0 -1
  434. package/dist/SecretsTab-0IFqUxNJ.cjs +0 -2
  435. package/dist/SecretsTab-0IFqUxNJ.cjs.map +0 -1
  436. package/dist/SecretsTab-DVyyyGlG.js.map +0 -1
  437. package/dist/SettingsTab-B1LvOLG2.cjs +0 -3
  438. package/dist/SignalWidget-RvRwpE8T.cjs.map +0 -1
  439. package/dist/SignalWidget-d9-6h85k.js.map +0 -1
  440. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +0 -2
  441. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs.map +0 -1
  442. package/dist/SimpleTextDialog-pwN8oRy1.js +0 -107
  443. package/dist/SimpleTextDialog-pwN8oRy1.js.map +0 -1
  444. package/dist/SparklineWidget-60jVlbHA.cjs +0 -2
  445. package/dist/TargetsTab-BkBkXn9A.js +0 -129
  446. package/dist/TargetsTab-BkBkXn9A.js.map +0 -1
  447. package/dist/TargetsTab-C-m26Eqq.cjs +0 -2
  448. package/dist/TargetsTab-C-m26Eqq.cjs.map +0 -1
  449. package/dist/TextBoxDialog-DOJ5d2RM.js +0 -110
  450. package/dist/TextBoxDialog-DOJ5d2RM.js.map +0 -1
  451. package/dist/TextBoxDialog-DfMXg_5C.cjs +0 -2
  452. package/dist/TextBoxDialog-DfMXg_5C.cjs.map +0 -1
  453. package/dist/TextboxWidget-BDG4NxRw.cjs +0 -2
  454. package/dist/ToolsTab-NveeVXz2.js +0 -1521
  455. package/dist/ToolsTab-RMTst_Sy.cjs +0 -7
  456. package/dist/TopBar-CnJNNJlV.js.map +0 -1
  457. package/dist/TopBar-Cnmb6DyC.cjs +0 -2
  458. package/dist/TopBar-Cnmb6DyC.cjs.map +0 -1
  459. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js +0 -94
  460. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js.map +0 -1
  461. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +0 -2
  462. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs.map +0 -1
  463. package/dist/ValueWidget-C6RanBj3.js.map +0 -1
  464. package/dist/ValueWidget-Cu7hgKja.cjs +0 -2
  465. package/dist/ValueWidget-Cu7hgKja.cjs.map +0 -1
  466. package/dist/Widget-ChoIB2dd.cjs +0 -2
  467. package/dist/Widget-ChoIB2dd.cjs.map +0 -1
  468. package/dist/Widget-oyqWpFXJ.js.map +0 -1
  469. package/dist/WidgetComponents-C1lSLZ0I.js.map +0 -1
  470. package/dist/WidgetComponents-utpQ592X.cjs +0 -1493
  471. package/dist/WidgetComponents-utpQ592X.cjs.map +0 -1
  472. package/dist/index-BX05anye.cjs +0 -7
  473. package/dist/index-BX05anye.cjs.map +0 -1
  474. package/dist/index-DwP8ryNM.js.map +0 -1
  475. package/dist/timeFilters-8SaYvcH0.cjs +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"Graph-Bgo0cjl3.js","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("./timeFilters-8SaYvcH0.cjs"),e=require("vue"),C=require("./WidgetComponents-utpQ592X.cjs"),S=require("./CustomIcon-Bop2mEnu.cjs"),_=require("./format-B22VpiOS.cjs"),Y=require("./parse-DwfgQboe.cjs"),B={props:{modelValue:Boolean,title:{type:String,required:!0},legendPosition:{type:String,required:!0},items:{type:Array,required:!0},graphMinY:{type:Number},graphMaxY:{type:Number},lines:{type:Array,required:!0},colors:{type:Array,required:!0},startDateTime:{type:Number},endDateTime:{type:Number},timeZone:{type:String,required:!0}},mixins:[O.TimeFilters],data:function(){return{tab:0,graph:{},legendPositions:["top","bottom","left","right"],startDate:null,startTime:null,endDate:null,endTime:null,lineHeaders:[{title:"Y Value",value:"yValue"},{title:"Color",value:"color"},{title:"Actions",value:"actions",sortable:!1}],itemHeaders:[{title:"Target Name",value:"targetName"},{title:"Packet Name",value:"packetName"},{title:"Item Name",value:"itemName"},{title:"Actions",value:"actions",sortable:!1}],rules:{date:i=>{if(!i)return!0;try{return _.isValid(Y.parse(i,"yyyy-MM-dd",new Date))||"Invalid date (YYYY-MM-DD)"}catch{return"Invalid date (YYYY-MM-DD)"}},time:i=>{if(!i)return!0;try{return _.isValid(Y.parse(i,"HH:mm:ss",new Date))||"Invalid time (HH:MM:SS)"}catch{return"Invalid time (HH:MM:SS)"}}}}},computed:{show:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}},editItems:function(){if(!this.items)return[];let i=0;return this.items.map(t=>(i+=1,{...t,itemId:i}))}},created(){if(this.graph={title:this.title,legendPosition:this.legendPosition,items:this.items,graphMinY:this.graphMinY,graphMaxY:this.graphMaxY,lines:[...this.lines]},this.startDateTime){let i=_.toDate(this.startDateTime/1e6);this.startDate=this.formatDate(i,this.timeZone),this.startTime=this.formatTimeHMS(i,this.timeZone)}else{let i=new Date-36e5;this.startDate=this.formatDate(i,this.timeZone),this.startTime=this.formatTimeHMS(i,this.timeZone)}if(this.endDateTime){let i=_.toDate(this.endDateTime/1e6);this.endDate=this.formatDate(i,this.timeZone),this.endTime=this.formatTimeHMS(i,this.timeZone)}},methods:{closeOk(){this.startDate&&this.startTime?this.graph.startDateTime=this.startDate+" "+this.startTime:this.graph.startDateTime=null,this.endDate&&this.endTime?this.graph.endDateTime=this.endDate+" "+this.endTime:this.graph.endDateTime=null,this.$emit("ok",this.graph)},addLine(){this.graph.lines.push({yValue:0,color:"white"})},removeLine(i){let t=this.graph.lines.indexOf(i);this.graph.lines.splice(t,1)}}},L={class:"edit-box"},z={class:"edit-box"},U={class:"edit-box"},R={class:"edit-box"};function H(i,t,o,d,s,l){const r=e.resolveComponent("v-spacer"),a=e.resolveComponent("v-toolbar"),h=e.resolveComponent("v-tab"),m=e.resolveComponent("v-tabs"),p=e.resolveComponent("v-text-field"),v=e.resolveComponent("v-card-text"),f=e.resolveComponent("v-col"),g=e.resolveComponent("v-select"),c=e.resolveComponent("v-row"),N=e.resolveComponent("v-tabs-window-item"),y=e.resolveComponent("v-btn"),k=e.resolveComponent("v-list-item"),V=e.resolveComponent("v-icon"),w=e.resolveComponent("v-tooltip"),T=e.resolveComponent("v-list"),b=e.resolveComponent("v-data-table"),M=e.resolveComponent("v-tabs-window"),I=e.resolveComponent("v-card-actions"),n=e.resolveComponent("v-card"),D=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(D,{modelValue:l.show,"onUpdate:modelValue":t[12]||(t[12]=u=>l.show=u),onKeydown:t[13]||(t[13]=e.withKeys(u=>i.$emit("cancel"),["esc"])),"max-width":"700"},{default:e.withCtx(()=>[e.createVNode(a,{height:"24"},{default:e.withCtx(()=>[e.createVNode(r),t[14]||(t[14]=e.createElementVNode("span",null," Edit Graph ",-1)),e.createVNode(r)]),_:1}),e.createVNode(n,{class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(m,{modelValue:i.tab,"onUpdate:modelValue":t[0]||(t[0]=u=>i.tab=u),class:"ml-3"},{default:e.withCtx(()=>[e.createVNode(h,{value:"0"},{default:e.withCtx(()=>t[15]||(t[15]=[e.createTextVNode(" Settings ")])),_:1}),e.createVNode(h,{value:"1"},{default:e.withCtx(()=>t[16]||(t[16]=[e.createTextVNode(" Scale / Lines ")])),_:1}),e.createVNode(h,{value:"2"},{default:e.withCtx(()=>t[17]||(t[17]=[e.createTextVNode(" Items ")])),_:1})]),_:1},8,["modelValue"]),e.createVNode(M,{modelValue:i.tab,"onUpdate:modelValue":t[10]||(t[10]=u=>i.tab=u)},{default:e.withCtx(()=>[e.createVNode(N,{value:"0",eager:""},{default:e.withCtx(()=>[e.createElementVNode("div",L,[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>[e.createVNode(p,{class:"pb-2",label:"Title",modelValue:i.graph.title,"onUpdate:modelValue":t[1]||(t[1]=u=>i.graph.title=u),"hide-details":""},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(g,{label:"Legend Position","hide-details":"",items:i.legendPositions,modelValue:i.graph.legendPosition,"onUpdate:modelValue":t[2]||(t[2]=u=>i.graph.legendPosition=u),style:{"max-width":"280px"}},null,8,["items","modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",z,[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[18]||(t[18]=[e.createTextVNode(" Select a start date/time for the graph. Leave blank for start now. ")])),_:1}),e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(p,{label:"Start Date",name:`date${Date.now()}`,rules:[i.rules.date],modelValue:i.startDate,"onUpdate:modelValue":t[3]||(t[3]=u=>i.startDate=u),type:"date"},null,8,["name","rules","modelValue"])]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(p,{label:"Start Time",name:`time${Date.now()}`,rules:[i.rules.time],modelValue:i.startTime,"onUpdate:modelValue":t[4]||(t[4]=u=>i.startTime=u),type:"time",step:"1"},null,8,["name","rules","modelValue"])]),_:1})]),_:1}),e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[19]||(t[19]=[e.createTextVNode(" Select a end date/time for the graph. Leave blank for continuous real-time graphing. ")])),_:1}),e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(p,{label:"End Date",name:`date${Date.now()}`,rules:[i.rules.date],modelValue:i.endDate,"onUpdate:modelValue":t[5]||(t[5]=u=>i.endDate=u),type:"date"},null,8,["name","rules","modelValue"])]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(p,{label:"End Time",name:`time${Date.now()}`,rules:[i.rules.time],modelValue:i.endTime,"onUpdate:modelValue":t[6]||(t[6]=u=>i.endTime=u),type:"time",step:"1"},null,8,["name","rules","modelValue"])]),_:1})]),_:1})])]),_:1}),e.createVNode(N,{value:"1",eager:""},{default:e.withCtx(()=>[e.createElementVNode("div",U,[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[20]||(t[20]=[e.createTextVNode(" Set a min or max Y value to override automatic scaling ")])),_:1}),e.createVNode(c,{dense:""},{default:e.withCtx(()=>[e.createVNode(f,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{"hide-details":"",label:"Min Y Axis (Optional)",modelValue:i.graph.graphMinY,"onUpdate:modelValue":t[7]||(t[7]=u=>i.graph.graphMinY=u),type:"number"},null,8,["modelValue"])]),_:1}),e.createVNode(f,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{"hide-details":"",label:"Max Y Axis (Optional)",modelValue:i.graph.graphMaxY,"onUpdate:modelValue":t[8]||(t[8]=u=>i.graph.graphMaxY=u),type:"number"},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",R,[e.createVNode(T,{density:"compact",class:"horizontal-lines"},{default:e.withCtx(()=>[e.createVNode(k,null,{default:e.withCtx(()=>[t[22]||(t[22]=e.createElementVNode("span",{style:{"padding-top":"5px"}}," Add horizontal lines to the graph ",-1)),e.createVNode(r),e.createVNode(y,{onClick:t[9]||(t[9]=u=>l.addLine())},{default:e.withCtx(()=>t[21]||(t[21]=[e.createTextVNode(" New Line ")])),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.graph.lines,(u,E)=>(e.openBlock(),e.createBlock(k,{key:E,value:u,color:"primary"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(p,{label:"Y Value",modelValue:u.yValue,"onUpdate:modelValue":x=>u.yValue=x},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(g,{label:"Color","hide-details":"",items:o.colors,modelValue:u.color,"onUpdate:modelValue":x=>u.color=x},null,8,["items","modelValue","onUpdate:modelValue"])]),_:2},1024),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(w,{text:"Remove",location:"top"},{activator:e.withCtx(({props:x})=>[e.createVNode(V,e.mergeProps({ref_for:!0},x,{style:{padding:"30px"},onClick:te=>l.removeLine(u)}),{default:e.withCtx(()=>t[23]||(t[23]=[e.createTextVNode("mdi-delete")])),_:2},1040,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})])]),_:1}),e.createVNode(N,{value:"2",eager:""},{default:e.withCtx(()=>[e.createVNode(b,{"item-key":"itemId",class:"elevation-1 my-2","data-test":"edit-graph-items",headers:i.itemHeaders,items:l.editItems,"items-per-page":5,"footer-props":{"items-per-page-options":[5]}},{"item.actions":e.withCtx(({item:u})=>[e.createVNode(w,{text:"Remove",location:"top"},{activator:e.withCtx(({props:E})=>[e.createVNode(V,e.mergeProps(E,{onClick:x=>i.$emit("remove",u)}),{default:e.withCtx(()=>t[24]||(t[24]=[e.createTextVNode(" mdi-delete ")])),_:2},1040,["onClick"])]),_:2},1024)]),"no-data":e.withCtx(()=>t[25]||(t[25]=[e.createElementVNode("span",null," Currently no items on this graph ",-1)])),_:1},8,["headers","items"])]),_:1})]),_:1},8,["modelValue"]),e.createVNode(I,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(r),e.createVNode(y,{variant:"outlined",onClick:t[11]||(t[11]=u=>i.$emit("cancel"))},{default:e.withCtx(()=>t[26]||(t[26]=[e.createTextVNode(" Cancel ")])),_:1}),e.createVNode(y,{variant:"flat",onClick:l.closeOk},{default:e.withCtx(()=>t[27]||(t[27]=[e.createTextVNode(" Ok ")])),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const P=S._export_sfc(B,[["render",H]]),A={props:{modelValue:Boolean,item:{type:Object,required:!0},colors:{type:Array,required:!0}},data:function(){return{editItem:null,limitsName:"NONE",limits:{NONE:[]},valueTypes:["CONVERTED","RAW"],reduction:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],reducedTypes:["MIN","MAX","AVG","STDDEV"]}},computed:{show:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}},limitsNames(){return Object.keys(this.limits)}},async created(){this.editItem={...this.item},new C.hi().get_item(this.item.targetName,this.item.packetName,this.item.itemName).then(i=>{for(const[t,o]of Object.entries(i.limits))Object.keys(o).includes("red_low")&&(this.limits[t]=Object.values(o));this.limitsName=Object.keys(this.limits).find(t=>this.limits[t]+""==this.editItem.limits+"")})}},W={key:0},q={class:"pa-3"};function Z(i,t,o,d,s,l){const r=e.resolveComponent("v-card-title"),a=e.resolveComponent("v-select"),h=e.resolveComponent("v-card-text"),m=e.resolveComponent("v-spacer"),p=e.resolveComponent("v-btn"),v=e.resolveComponent("v-card-actions"),f=e.resolveComponent("v-card"),g=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(g,{modelValue:l.show,"onUpdate:modelValue":t[9]||(t[9]=c=>l.show=c),width:"400",onKeydown:t[10]||(t[10]=e.withKeys(c=>i.success(),["enter"]))},{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(r,{class:"mb-2"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode("Edit Item")])),_:1}),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(a,{variant:"outlined","hide-details":"",label:"Value Type",items:i.valueTypes,modelValue:i.editItem.valueType,"onUpdate:modelValue":t[0]||(t[0]=c=>i.editItem.valueType=c),class:"mb-2"},null,8,["items","modelValue"]),e.createVNode(a,{variant:"outlined","hide-details":"",label:"Reduction",items:i.reduction,modelValue:i.editItem.reduced,"onUpdate:modelValue":t[1]||(t[1]=c=>i.editItem.reduced=c),class:"mb-2"},null,8,["items","modelValue"]),e.createVNode(a,{variant:"outlined","hide-details":"",label:"Reduced Type",items:i.reducedTypes,disabled:i.editItem.reduced==="DECOM",modelValue:i.editItem.reducedType,"onUpdate:modelValue":t[2]||(t[2]=c=>i.editItem.reducedType=c),class:"mb-2"},null,8,["items","disabled","modelValue"]),e.createVNode(a,{variant:"outlined","hide-details":"",label:"Color",items:o.colors,modelValue:i.editItem.color,"onUpdate:modelValue":[t[3]||(t[3]=c=>i.editItem.color=c),t[4]||(t[4]=c=>i.$emit("changeColor",c))],class:"mb-2"},null,8,["items","modelValue"]),l.limitsNames.length>1?(e.openBlock(),e.createElementBlock("div",W,[e.createVNode(a,{variant:"outlined","hide-details":"",label:"Display Limits",items:l.limitsNames,modelValue:i.limitsName,"onUpdate:modelValue":[t[5]||(t[5]=c=>i.limitsName=c),t[6]||(t[6]=c=>i.$emit("changeLimits",i.limits[i.limitsName]))]},null,8,["items","modelValue"]),e.createElementVNode("div",q,e.toDisplayString(i.limitsName)+": "+e.toDisplayString(i.limits[i.limitsName]),1)])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(v,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(m),e.createVNode(p,{variant:"outlined",onClick:t[7]||(t[7]=c=>i.$emit("cancel"))},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode(" Cancel ")])),_:1}),e.createVNode(p,{variant:"flat",onClick:t[8]||(t[8]=c=>i.$emit("close",i.editItem))},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" Ok ")])),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const G=S._export_sfc(A,[["render",Z]]),K={components:{GraphEditDialog:P,GraphEditItemDialog:G},props:{id:{type:Number,required:!0},selectedGraphId:{type:Number},state:{type:String,required:!0},startTime:{type:Number},secondsGraphed:{type:Number,required:!0},pointsSaved:{type:Number,required:!0},pointsGraphed:{type:Number,required:!0},refreshIntervalMs:{type:Number,default:200},hideToolbar:{type:Boolean,default:!1},hideOverview:{type:Boolean,default:!1},sparkline:{type:Boolean,default:!1},initialItems:{type:Array},height:{type:Number},width:{type:Number},timeZone:{type:String,default:"local"}},mixins:[O.TimeFilters],data(){return{lines:[],active:!0,expand:!0,fullWidth:!0,fullHeight:!0,graph:null,editGraph:!1,editGraphMenu:!1,editGraphMenuX:0,editGraphMenuY:0,editItem:!1,itemMenu:!1,itemMenuX:0,itemMenuY:0,legendMenu:!1,legendMenuX:0,legendMenuY:0,legendPosition:"bottom",selectedItem:null,hideToolbarData:this.hideToolbar,showOverview:!this.hideOverview,hideOverviewData:this.hideOverview,title:"",overview:null,data:[[]],dataChanged:!1,timeout:null,graphMinY:null,graphMaxY:null,graphStartDateTime:null,graphEndDateTime:null,indexes:{},items:this.initialItems||[],limitsValues:[],drawInterval:null,zoomChart:!1,zoomOverview:!1,cable:new C.li,subscription:null,needToUpdate:!1,errorDialog:!1,errors:[],colorIndex:0,colors:["#00c7cb","#938bdb","#4dacff","lime","darkorange","red","gold","hotpink","tan","cyan","maroon","blue","teal","purple","green","brown","lightblue","white","black"]}},computed:{calcFullSize:function(){return this.fullWidth||this.fullHeight},error:function(){return this.errorDialog&&this.errors.length>0?JSON.stringify(this.errors,null,4):null}},created(){this.title=`Graph ${this.id}`;for(const[i,t]of this.items.entries())this.data.push([]),this.indexes[this.subscriptionKey(t)]=i+1,t.color===void 0&&(t.color=this.colors[this.colorIndex]),this.colorIndex++,this.colorIndex===this.colors.length&&(this.colorIndex=0)},mounted(){const{chartSeries:i,overviewSeries:t}=this.items.reduce((d,s)=>{const l={spanGaps:!0};return d.chartSeries.push({...l,item:s,label:this.formatLabel(s),stroke:(r,a)=>this.items[a-1].color,width:2,value:(r,a)=>typeof a=="string"||isNaN(a)?"NaN":a==null?"--":a.toFixed(3)}),d.overviewSeries.push({...l}),d},{chartSeries:[],overviewSeries:[]});let o={};if(this.sparkline)this.hideToolbarData=!0,this.hideOverviewData=!0,this.showOverview=!1,o={width:this.width,height:this.height,pxAlign:!1,cursor:{show:!1},select:{show:!1},legend:{show:!1},scales:{x:{time:!1}},axes:[{show:!1},{show:!1}],series:[{},{stroke:"white"}]},this.graph=new C.uPlot(o,this.data,document.getElementById(`chart${this.id}`));else{let d=Intl.DateTimeFormat().resolvedOptions().timeZone;this.timeZone&&this.timeZone!=="local"&&(d=this.timeZone),o={...this.getSize("chart"),...this.getScales(),...this.getAxes("chart"),plugins:[this.linesPlugin()],tzDate:l=>C.uPlot.tzDate(new Date(l*1e3),d),series:[{label:"Time",value:(l,r)=>r==null?"--":this.formatSeconds(r,this.timeZone)},...i],cursor:{drag:{x:!0,y:!1},sync:{key:"openc3"},bind:{mouseup:(l,r,a)=>h=>{this.state==="pause"&&l.select.width===0&&this.$emit("start"),a(h)}}},hooks:{setScale:[(l,r)=>{if(r==="x"&&!this.zoomOverview&&this.overview){this.zoomChart=!0;let a=Math.round(this.overview.valToPos(l.scales.x.min,"x")),h=Math.round(this.overview.valToPos(l.scales.x.max,"x"));this.overview.setSelect({left:a,width:h-a}),this.zoomChart=!1}}],setSelect:[l=>{this.state==="start"&&l.select.width>0&&this.$emit("pause")}],ready:[l=>{l.root.querySelector(".u-over").addEventListener("contextmenu",h=>{h.preventDefault(),this.itemMenu=!1,this.legendMenu=!1,this.editGraphMenuX=h.clientX,this.editGraphMenuY=h.clientY,this.editGraphMenu=!0});let a=l.root.querySelector(".u-legend");a.addEventListener("contextmenu",h=>{h.preventDefault(),this.editGraphMenu=!1,this.legendMenu=!1,this.itemMenuX=h.clientX,this.itemMenuY=h.clientY;let m=h.target.closest(".u-series"),p=Array.prototype.slice.call(a.childNodes[0].childNodes).indexOf(m),v=l.series[p];v.item?(this.selectedItem=v.item,this.itemMenu=!0):(this.itemMenu=!1,this.legendMenuX=h.clientX,this.legendMenuY=h.clientY,this.legendMenu=!0)}),a.querySelector("tbody").appendChild(this.$refs.info)}]}},this.graph=new C.uPlot(o,this.data,document.getElementById(`chart${this.id}`));const s={...this.getSize("overview"),...this.getScales(),...this.getAxes("overview"),tzDate:l=>C.uPlot.tzDate(new Date(l*1e3),d),series:[...t],cursor:{y:!1,drag:{setScale:!1,x:!0,y:!1}},legend:{show:!1},hooks:{setSelect:[l=>{if(!this.zoomChart){this.state==="start"&&l.select.width>0&&this.$emit("pause"),this.zoomOverview=!0;let r=l.posToVal(l.select.left,"x"),a=l.posToVal(l.select.left+l.select.width,"x");this.graph.setScale("x",{min:r,max:a}),this.zoomOverview=!1}}]}};this.hideOverview||(this.overview=new C.uPlot(s,this.data,document.getElementById(`overview${this.id}`))),this.moveLegend(this.legendPosition),window.addEventListener("resize",this.resize)}this.state!=="stop"&&this.startGraph()},beforeUnmount:function(){this.stopGraph(),this.cable.disconnect(),window.removeEventListener("resize",this.resize)},watch:{state:function(i,t){switch(i){case"start":t==="stop"&&this.startGraph();break;case"stop":this.stopGraph();break}},data:function(i,t){this.dataChanged=!0},graphMinY:function(i,t){let o=parseFloat(i);isNaN(o)||(this.graphMinY=o),this.setGraphRange()},graphMaxY:function(i,t){let o=parseFloat(i);isNaN(o)||(this.graphMaxY=o),this.setGraphRange()},graphStartDateTime:function(i,t){i&&typeof i=="string"?(this.graphStartDateTime=this.parseDateTime(this.graphStartDateTime,this.timeZone)*1e6,this.graphStartDateTime!==t&&(this.needToUpdate=!0)):i===null&&t&&(this.graphStartDateTime=null,this.needToUpdate=!0)},graphEndDateTime:function(i,t){i&&typeof i=="string"?(this.graphEndDateTime=this.parseDateTime(this.graphEndDateTime,this.timeZone)*1e6,this.graphEndDateTime!==t&&(this.needToUpdate=!0)):i===null&&t&&(this.graphEndDateTime=null,this.needToUpdate=!0)}},methods:{startGraph:function(){this.subscribe(),this.timeout=setTimeout(()=>{this.updateTimeout()},this.refreshIntervalMs)},stopGraph:function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=null),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},updateTimeout:function(){this.updateGraphData(),this.timeout=setTimeout(()=>{this.updateTimeout()},this.refreshIntervalMs)},updateGraphData:function(){if(this.state==="pause"||!this.dataChanged)return;this.graph.setData(this.data),this.overview&&this.overview.setData(this.data);let i=this.data[0][this.data[0].length-1],t=this.data[0][this.data[0].length-this.pointsGraphed],o=this.data[0][0];o<i-this.secondsGraphed&&(o=i-this.secondsGraphed),t>o&&(o=t),this.graph.setScale("x",{min:o,max:i}),this.dataChanged=!1},formatLabel(i){if(i.valueType==="CONVERTED"&&i.reduced==="DECOM")return i.itemName;{let t="";return i.valueType!=="CONVERTED"&&(t+=i.valueType),i.reduced!=="DECOM"&&(t!==""&&(t+=" "),t+=`${i.reduced.split("_")[1]} ${i.reducedType}`),`${i.itemName} (${t})`}},moveLegend:function(i){switch(i){case"bottom":this.graph.root.classList.remove("side-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.remove("top-legend");break;case"top":this.graph.root.classList.remove("side-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.add("top-legend");break;case"left":this.graph.root.classList.remove("top-legend"),this.graph.root.classList.add("side-legend"),this.graph.root.classList.add("left-legend");break;case"right":this.graph.root.classList.remove("top-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.add("side-legend");break}this.legendPosition=i,this.resize()},clearErrors:function(){this.errors=[]},editGraphClose:function(i){this.editGraph=!1,this.title=i.title,this.legendPosition=i.legendPosition,this.graphMinY=i.graphMinY,this.graphMaxY=i.graphMaxY,this.lines=[...i.lines],this.graphStartDateTime=i.startDateTime,this.graphEndDateTime=i.endDateTime,this.$nextTick(()=>{if(this.needToUpdate){if(this.subscription==null)this.startGraph();else{let t=JSON.parse(JSON.stringify(this.items));this.removeItems(t),setTimeout(()=>{this.addItems(t)},0)}this.needToUpdate=!1}}),this.moveLegend(this.legendPosition),this.$emit("edit")},resize:function(){this.graph.setSize(this.getSize("chart")),this.overview&&this.overview.setSize(this.getSize("overview")),this.$emit("resize",this.id)},expandAll:function(){this.fullWidth=!0,this.fullHeight=!0,this.resize()},collapseAll:function(){this.fullWidth=!1,this.fullHeight=!1,this.resize()},expandWidth:function(){this.fullWidth=!0,this.resize()},collapseWidth:function(){this.fullWidth=!1,this.resize()},expandHeight:function(){this.fullHeight=!0,this.resize()},collapseHeight:function(){this.fullHeight=!1,this.resize()},minMaxTransition:function(){this.expand=!this.expand,this.$emit("min-max-graph",this.id)},setGraphRange:function(){let i=.1;(this.graphMinY||this.graphMinY===0||this.graphMaxY||this.graphMaxY===0)&&(i=0),this.graph.scales.y.range=(t,o,d)=>{let s=o;(this.graphMinY||this.graphMinY===0)&&(s=this.graphMinY);let l=d;return(this.graphMaxY||this.graphMaxY===0)&&(l=this.graphMaxY),C.uPlot.rangeNum(s,l,i,!0)}},subscribe:function(){this.cable.createSubscription("StreamingChannel",window.openc3Scope,{received:i=>this.received(i),connected:()=>{this.addItemsToSubscription(this.items)},disconnected:i=>{i.allowReconnect&&this.errors.push({type:"disconnected",message:"OpenC3 backend connection disconnected",time:new Date().getTime()})},rejected:()=>{this.errors.push({type:"rejected",message:"OpenC3 backend connection rejected",time:new Date().getTime()})}}).then(i=>{this.subscription=i})},getSize:function(i){let t=0;const o=document.getElementById("openc3-nav-drawer");o&&(t=o.classList.contains("v-navigation-drawer--active")?o.clientWidth:0);let d=0;(this.legendPosition==="right"||this.legendPosition==="left")&&(d=document.getElementsByClassName("u-legend")[0].clientWidth);const s=Math.max(document.documentElement.clientWidth,window.innerWidth||0)-t-d,l=Math.max(document.documentElement.clientHeight,window.innerHeight||0),r=document.getElementsByClassName("v-expansion-panel")[0];let a=100;i==="overview"?this.fullHeight&&!this.hideOverviewData?this.showOverview=!0:this.showOverview=!1:(a=l-r.clientHeight-a-250,this.fullHeight||(a=a/2+10));let h=s-70;return this.fullWidth||(h=h/2-12),{width:this.width||h,height:this.height||a}},getScales:function(){return{scales:{x:{range(i,t,o){return t==null?[1566453600,1566497660]:[t,o]}},y:{range(i,t,o){return t==null?[-100,100]:C.uPlot.rangeNum(t,o,.1,!0)}}}}},getAxes:function(i){let t="rgba(255, 255, 255, .1)",o="white";return{axes:[{stroke:o,grid:{show:!0,stroke:t,width:2}},{size:80,stroke:o,grid:{show:i!=="overview",stroke:t,width:2},values(d,s){return(s.some(l=>l>=1e7)||s.every(l=>l<.01))&&(s=s.map(l=>l.toExponential(3))),s}}]}},closeEditItem:function(i){this.editItem=!1,(this.graphEndDateTime!==null&&this.selectedItem!==i||this.selectedItem.valueType!==i.valueType||this.selectedItem.reduced!==i.reduced||this.selectedItem.reducedType!==i.reducedType)&&this.changeItem(i)},changeColor:function(i){let t=this.subscriptionKey(this.selectedItem),o=this.indexes[t];this.items[o-1].color=i,this.selectedItem.color=i,this.graph.root.querySelectorAll(".u-marker")[o].style.borderColor=i},changeLimits:function(i){let t=this.subscriptionKey(this.selectedItem),o=this.indexes[t];this.items[o-1].limits=i,this.selectedItem.limits=i,this.limitsValues=i},linesPlugin:function(){return{hooks:{draw:i=>{const{ctx:t,bbox:o}=i,d=i.valToPos(i.scales.y.min,"y",!0),s=i.valToPos(i.scales.y.max,"y",!0),l=i.valToPos(this.limitsValues[0],"y",!0),r=i.valToPos(this.limitsValues[1],"y",!0),a=i.valToPos(this.limitsValues[2],"y",!0),h=i.valToPos(this.limitsValues[3],"y",!0);if(this.lines.forEach(m=>{i.scales.y.min<=m.yValue&&m.yValue<=i.scales.y.max&&(t.save(),t.beginPath(),t.strokeStyle=m.color,t.lineWidth=2,t.moveTo(o.left,i.valToPos(m.yValue,"y",!0)),t.lineTo(o.left+o.width,i.valToPos(m.yValue,"y",!0)),t.stroke(),t.restore())}),t.save(),t.beginPath(),t.fillStyle="rgba(255,0,0,0.15)",i.scales.y.min<this.limitsValues[0]){let m=l<s?s:l;t.fillRect(o.left,l,o.width,d-m)}if(i.scales.y.max>this.limitsValues[3]){let m=d<h?d:h;t.fillRect(o.left,s,o.width,m-s)}if(t.fillStyle="rgba(255,255,0,0.15)",i.scales.y.min<this.limitsValues[1]&&i.scales.y.max>this.limitsValues[0]){let m=r<s?s:r;t.fillRect(o.left,m,o.width,l-m)}if(i.scales.y.max>this.limitsValues[2]&&i.scales.y.min<this.limitsValues[3]){let m=d<h?d:h,p=d<a?d:a;t.fillRect(o.left,m,o.width,p-m)}if(t.fillStyle="rgba(0,255,0,0.15)",this.limitsValues.length===4){if(i.scales.y.min<this.limitsValues[2]&&i.scales.y.max>this.limitsValues[1]){let m=a<s?s:a,p=d<r?d:r;t.fillRect(o.left,m,o.width,p-m)}}else{const m=i.valToPos(this.limitsValues[4],"y",!0),p=i.valToPos(this.limitsValues[5],"y",!0);if(i.scales.y.min<this.limitsValues[4]&&i.scales.y.max>this.limitsValues[1]){let g=m<s?s:m;t.fillRect(o.left,g,o.width,r-g)}if(i.scales.y.max>this.limitsValues[5]&&i.scales.y.min<this.limitsValues[2]){let g=d<a?d:a,c=d<p?d:p;t.fillRect(o.left,g,o.width,c-g)}t.fillStyle="rgba(0,0,255,0.15)";let v=p<s?s:p,f=d<m?d:m;t.fillRect(o.left,v,o.width,f-v)}t.stroke(),t.restore()}}}},changeItem:function(i){this.removeItems([this.selectedItem]),this.selectedItem.valueType=i.valueType,this.selectedItem.reduced=i.reduced,this.selectedItem.reducedType=i.reducedType,setTimeout(()=>{this.addItems([this.selectedItem])},0)},addItems:function(i,t="CONVERTED"){i.forEach(o=>{o.valueType||(o.valueType=t),o.color||(o.color=this.colors[this.colorIndex]),o.limits||(o.limits=[]),o.limits.length>0&&(this.limitsValues=o.limits),this.colorIndex=(this.colorIndex+1)%this.colors.length,this.items.push(o);const d=this.data.length;this.graph.addSeries(this.createSeriesConfig(o),d),this.overview&&this.overview.addSeries(this.createOverviewSeriesConfig(),d),this.data.splice(d,0,Array(this.data[0].length)),this.indexes[this.subscriptionKey(o)]=d}),this.updateColorIndex(i),this.addItemsToSubscription(i),this.$emit("resize"),this.$emit("edit")},createSeriesConfig:function(i){return{spanGaps:!0,item:i,label:this.formatLabel(i),stroke:(t,o)=>this.items[o-1].color,width:2,value:(t,o)=>typeof o=="string"||isNaN(o)?"NaN":o==null?"--":Math.abs(o)<.01&&o!==0||Math.abs(o)>=1e7?o.toExponential(6):o.toFixed(6)}},createOverviewSeriesConfig:function(){return{spanGaps:!0,stroke:(i,t)=>this.items[t-1].color}},updateColorIndex:function(i){const t=i[i.length-1];if(t){const o=this.colors.indexOf(t.color);o!==-1&&(this.colorIndex=(o+1)%this.colors.length)}},addItemsToSubscription:function(i=this.items){let t=this.startTime;this.graphStartDateTime&&(t=this.graphStartDateTime),this.subscription&&OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(o=>{o&&OpenC3Auth.setTokens(),this.subscription.perform("add",{scope:window.openc3Scope,token:localStorage.openc3Token,items:i.map(this.subscriptionKey),start_time:t,end_time:this.graphEndDateTime})})},clearAllData:function(){this.data[0]=[],this.clearData(this.items)},clearData:function(i){for(const t of i.map(this.subscriptionKey)){let o=this.indexes[t];this.data[o]=Array(this.data[0].length).fill(null),this.graph.setData(this.data),this.overview&&this.overview.setData(this.data)}this.data.length===2&&(this.data[0]=[],this.graph.setData(this.data),this.overview&&this.overview.setData(this.data))},removeItems:function(i){this.removeItemsFromSubscription(i);for(const t of i.map(this.subscriptionKey)){const o=this.reorderIndexes(t);this.items.splice(o-1,1),this.data.splice(o,1),this.graph.delSeries(o),this.graph.setData(this.data),this.overview&&(this.overview.delSeries(o),this.overview.setData(this.data))}this.data.length===1&&(this.data[0]=[],this.graph.setData(this.data),this.overview&&this.overview.setData(this.data)),this.$emit("resize"),this.$emit("edit")},removeItemsFromSubscription:function(i=this.items){this.subscription&&this.subscription.perform("remove",{scope:window.openc3Scope,token:localStorage.openc3Token,items:i.map(this.subscriptionKey)})},reorderIndexes:function(i){let t=this.indexes[i];delete this.indexes[i];for(let o in this.indexes)this.indexes[o]>t&&(this.indexes[o]-=1);return t},received:function(i){this.cable.recordPing();for(let t=0;t<i.length;t++){let o=i[t].__time/1e9,d=this.data[0].length;if(d===0||o>this.data[0][d-1]){for(let s=0;s<this.data.length;s++)this.data[s].push(null);this.set_data_at_index(this.data[0].length-1,o,i[t])}else{let s=C.bs(this.data[0],o,this.bs_comparator);if(s>=0){for(;s>=0;)o-=1e-5,s=C.bs(this.data[0],o,this.bs_comparator);let l=-s-1;for(let r=0;r<this.data.length;r++)this.data[r].splice(l,0,null);this.set_data_at_index(l,o,i[t])}else{let l=-s-1;for(let r=0;r<this.data.length;r++)this.data[r].splice(l,0,null);this.set_data_at_index(l,o,i[t])}}}if(this.startTime==null&&this.data[0][0]){let t=this.data[0][0]*1e9;this.$emit("started",t)}this.dataChanged=!0},bs_comparator:function(i,t){return i-t},set_data_at_index:function(i,t,o){this.data[0][i]=t;for(const[d,s]of Object.entries(o)){if(d==="time")continue;let l=this.indexes[d];if(l){let r=this.data[l];if(s!=null&&s.raw)r[i]=null;else if(typeof s=="string"){if(r[i]=null,!d.includes("__RAW")){for(let a of this.items)if(this.subscriptionKey(a)===d){this.selectedItem=a;break}this.changeItem({valueType:"RAW",reduced:this.selectedItem.reduced,reducedType:this.selectedItem.reducedType})}}else r[i]=s}}},subscriptionKey:function(i){let t=`${i.reduced}__TLM__${i.targetName}__${i.packetName}__${i.itemName}__${i.valueType}`;return(i.reduced==="REDUCED_MINUTE"||i.reduced==="REDUCED_HOUR"||i.reduced==="REDUCED_DAY")&&(t+=`__${i.reducedType}`),t}}},F={class:"mx-2"},X={class:"pa-1",id:"chart",ref:"chart"},j=["id"],J=["id"],Q={key:5,class:"u-series",ref:"info"};function $(i,t,o,d,s,l){const r=e.resolveComponent("v-icon"),a=e.resolveComponent("v-tooltip"),h=e.resolveComponent("v-spacer"),m=e.resolveComponent("v-toolbar"),p=e.resolveComponent("v-expand-transition"),v=e.resolveComponent("v-card"),f=e.resolveComponent("graph-edit-dialog"),g=e.resolveComponent("v-text-field"),c=e.resolveComponent("v-row"),N=e.resolveComponent("v-textarea"),y=e.resolveComponent("v-btn"),k=e.resolveComponent("v-dialog"),V=e.resolveComponent("v-list-item-title"),w=e.resolveComponent("v-list-item"),T=e.resolveComponent("v-list"),b=e.resolveComponent("v-menu"),M=e.resolveComponent("graph-edit-item-dialog"),I=e.resolveComponent("v-list-subheader");return e.openBlock(),e.createElementBlock("div",{onClick:t[21]||(t[21]=e.withModifiers(n=>i.$emit("click"),["prevent"]))},[e.createVNode(v,null,{default:e.withCtx(()=>[e.withDirectives(e.createVNode(m,{height:"24",class:e.normalizeClass(["pl-2 pr-2",o.selectedGraphId===o.id?"active":""])},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",F,[e.createVNode(a,{text:"Errors",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:t[0]||(t[0]=D=>s.errorDialog=!0)}),{default:e.withCtx(()=>t[22]||(t[22]=[e.createTextVNode(" mdi-alert ")])),_:2},1040)]),_:1})],512),[[e.vShow,s.errors.length!==0]]),e.createVNode(a,{text:"Edit",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:t[1]||(t[1]=D=>s.editGraph=!0),"data-test":"edit-graph-icon"}),{default:e.withCtx(()=>t[23]||(t[23]=[e.createTextVNode(" mdi-pencil ")])),_:2},1040)]),_:1}),e.createVNode(h),e.createElementVNode("span",null,e.toDisplayString(s.title),1),e.createVNode(h),e.withDirectives(e.createElementVNode("div",null,[l.calcFullSize?(e.openBlock(),e.createBlock(a,{key:0,text:"Collapse",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.collapseAll,"data-test":"collapse-all"}),{default:e.withCtx(()=>t[24]||(t[24]=[e.createTextVNode(" mdi-arrow-collapse ")])),_:2},1040,["onClick"])]),_:1})):(e.openBlock(),e.createBlock(a,{key:1,text:"Expand",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.expandAll,"data-test":"expand-all"}),{default:e.withCtx(()=>t[25]||(t[25]=[e.createTextVNode(" mdi-arrow-expand ")])),_:2},1040,["onClick"])]),_:1}))],512),[[e.vShow,s.expand]]),e.withDirectives(e.createElementVNode("div",null,[s.fullWidth?(e.openBlock(),e.createBlock(a,{key:0,text:"Collapse Width",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.collapseWidth,"data-test":"collapse-width"}),{default:e.withCtx(()=>t[26]||(t[26]=[e.createTextVNode(" mdi-arrow-collapse-horizontal ")])),_:2},1040,["onClick"])]),_:1})):(e.openBlock(),e.createBlock(a,{key:1,text:"Expand Width",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.expandWidth,"data-test":"expand-width"}),{default:e.withCtx(()=>t[27]||(t[27]=[e.createTextVNode(" mdi-arrow-expand-horizontal ")])),_:2},1040,["onClick"])]),_:1}))],512),[[e.vShow,s.expand]]),e.withDirectives(e.createElementVNode("div",null,[s.fullHeight?(e.openBlock(),e.createBlock(a,{key:0,text:"Collapse Height",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.collapseHeight,"data-test":"collapse-height"}),{default:e.withCtx(()=>t[28]||(t[28]=[e.createTextVNode(" mdi-arrow-collapse-vertical ")])),_:2},1040,["onClick"])]),_:1})):(e.openBlock(),e.createBlock(a,{key:1,text:"Expand Height",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.expandHeight,"data-test":"expand-height"}),{default:e.withCtx(()=>t[29]||(t[29]=[e.createTextVNode(" mdi-arrow-expand-vertical ")])),_:2},1040,["onClick"])]),_:1}))],512),[[e.vShow,s.expand]]),s.expand?(e.openBlock(),e.createBlock(a,{key:0,text:"Minimize",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.minMaxTransition,"data-test":"minimize-screen-icon"}),{default:e.withCtx(()=>t[30]||(t[30]=[e.createTextVNode(" mdi-window-minimize ")])),_:2},1040,["onClick"])]),_:1})):(e.openBlock(),e.createBlock(a,{key:1,text:"Maximize",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:l.minMaxTransition,"data-test":"maximize-screen-icon"}),{default:e.withCtx(()=>t[31]||(t[31]=[e.createTextVNode(" mdi-window-maximize ")])),_:2},1040,["onClick"])]),_:1})),e.createVNode(a,{text:"Close",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.mergeProps(n,{onClick:t[2]||(t[2]=D=>i.$emit("close-graph")),"data-test":"close-graph-icon"}),{default:e.withCtx(()=>t[32]||(t[32]=[e.createTextVNode(" mdi-close-box ")])),_:2},1040)]),_:1})]),_:1},8,["class"]),[[e.vShow,!s.hideToolbarData]]),e.createVNode(p,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",X,[e.createElementVNode("div",{id:`chart${o.id}`},null,8,j),t[33]||(t[33]=e.createElementVNode("div",{id:"betweenCharts"},null,-1)),e.withDirectives(e.createElementVNode("div",{id:`overview${o.id}`},null,8,J),[[e.vShow,s.showOverview]])],512),[[e.vShow,s.expand]])]),_:1})]),_:1}),s.editGraph?(e.openBlock(),e.createBlock(f,{key:0,modelValue:s.editGraph,"onUpdate:modelValue":t[3]||(t[3]=n=>s.editGraph=n),title:s.title,"legend-position":s.legendPosition,items:s.items,"graph-min-y":s.graphMinY,"graph-max-y":s.graphMaxY,lines:s.lines,colors:s.colors,"start-date-time":s.graphStartDateTime,"end-date-time":s.graphEndDateTime,"time-zone":o.timeZone,onRemove:t[4]||(t[4]=n=>l.removeItems([n])),onOk:l.editGraphClose,onCancel:t[5]||(t[5]=n=>s.editGraph=!1)},null,8,["modelValue","title","legend-position","items","graph-min-y","graph-max-y","lines","colors","start-date-time","end-date-time","time-zone","onOk"])):e.createCommentVNode("",!0),e.createVNode(k,{modelValue:s.errorDialog,"onUpdate:modelValue":t[7]||(t[7]=n=>s.errorDialog=n),"max-width":"600"},{default:e.withCtx(()=>[e.createVNode(m,{height:"24"},{default:e.withCtx(()=>[e.createVNode(h),t[34]||(t[34]=e.createElementVNode("span",null," Errors ",-1)),e.createVNode(h)]),_:1}),e.createVNode(v,{class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(c,{dense:""},{default:e.withCtx(()=>[e.createVNode(g,{readonly:"","hide-details":"",modelValue:s.title,"onUpdate:modelValue":t[6]||(t[6]=n=>s.title=n),class:"pb-2",label:"Graph Title"},null,8,["modelValue"])]),_:1}),e.createVNode(c,{class:"my-3"},{default:e.withCtx(()=>[e.createVNode(N,{readonly:"",rows:"8",value:l.error},null,8,["value"])]),_:1}),e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(y,{block:"",onClick:l.clearErrors},{default:e.withCtx(()=>t[35]||(t[35]=[e.createTextVNode(" Clear ")])),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s.editGraphMenu?(e.openBlock(),e.createBlock(b,{key:1,modelValue:s.editGraphMenu,"onUpdate:modelValue":t[9]||(t[9]=n=>s.editGraphMenu=n),target:[s.editGraphMenuX,s.editGraphMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(w,{onClick:t[8]||(t[8]=n=>s.editGraph=!0)},{default:e.withCtx(()=>[e.createVNode(V,{style:{cursor:"pointer"}},{default:e.withCtx(()=>[e.createTextVNode(" Edit "+e.toDisplayString(s.title),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),s.editItem?(e.openBlock(),e.createBlock(M,{key:2,modelValue:s.editItem,"onUpdate:modelValue":t[10]||(t[10]=n=>s.editItem=n),colors:s.colors,item:s.selectedItem,onChangeColor:l.changeColor,onChangeLimits:l.changeLimits,onCancel:t[11]||(t[11]=n=>s.editItem=!1),onClose:l.closeEditItem},null,8,["modelValue","colors","item","onChangeColor","onChangeLimits","onClose"])):e.createCommentVNode("",!0),s.itemMenu?(e.openBlock(),e.createBlock(b,{key:3,modelValue:s.itemMenu,"onUpdate:modelValue":t[15]||(t[15]=n=>s.itemMenu=n),target:[s.itemMenuX,s.itemMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(T,{nav:"",density:"compact"},{default:e.withCtx(()=>[e.createVNode(I,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.selectedItem.targetName)+" "+e.toDisplayString(s.selectedItem.packetName)+" "+e.toDisplayString(s.selectedItem.itemName),1)]),_:1}),e.createVNode(w,{onClick:t[12]||(t[12]=n=>s.editItem=!0)},{prepend:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-pencil"})]),default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>t[36]||(t[36]=[e.createTextVNode(" Edit ")])),_:1})]),_:1}),e.createVNode(w,{onClick:t[13]||(t[13]=n=>l.clearData([s.selectedItem]))},{prepend:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-eraser"})]),default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>t[37]||(t[37]=[e.createTextVNode(" Clear ")])),_:1})]),_:1}),e.createVNode(w,{onClick:t[14]||(t[14]=n=>l.removeItems([s.selectedItem]))},{prepend:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete"})]),default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>t[38]||(t[38]=[e.createTextVNode(" Delete ")])),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),s.legendMenu?(e.openBlock(),e.createBlock(b,{key:4,modelValue:s.legendMenu,"onUpdate:modelValue":t[20]||(t[20]=n=>s.legendMenu=n),target:[s.legendMenuX,s.legendMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(w,{onClick:t[16]||(t[16]=n=>l.moveLegend("top"))},{default:e.withCtx(()=>[e.createVNode(V,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[39]||(t[39]=[e.createTextVNode(" Legend Top ")])),_:1})]),_:1}),e.createVNode(w,{onClick:t[17]||(t[17]=n=>l.moveLegend("bottom"))},{default:e.withCtx(()=>[e.createVNode(V,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[40]||(t[40]=[e.createTextVNode(" Legend Bottom ")])),_:1})]),_:1}),e.createVNode(w,{onClick:t[18]||(t[18]=n=>l.moveLegend("left"))},{default:e.withCtx(()=>[e.createVNode(V,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[41]||(t[41]=[e.createTextVNode(" Legend Left ")])),_:1})]),_:1}),e.createVNode(w,{onClick:t[19]||(t[19]=n=>l.moveLegend("right"))},{default:e.withCtx(()=>[e.createVNode(V,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[42]||(t[42]=[e.createTextVNode(" Legend RIght ")])),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),o.sparkline?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[e.createVNode(a,{text:"Click item to toggle, Right click to edit",location:"top"},{activator:e.withCtx(({props:n})=>[e.createVNode(r,e.normalizeProps(e.guardReactiveProps(n)),{default:e.withCtx(()=>t[43]||(t[43]=[e.createTextVNode(" mdi-information-variant-circle ")])),_:2},1040)]),_:1})],512))])}const ee=S._export_sfc(K,[["render",$],["__scopeId","data-v-51bcc3ba"]]);exports.Graph=ee;exports.GraphEditDialog=P;exports.GraphEditItemDialog=G;
2
- //# sourceMappingURL=Graph-Ujd2yaeI.cjs.map