@openc3/vue-common 7.0.1 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/dist/{ArrayWidget-BHjh3qLF.cjs → ArrayWidget-CQCphADm.cjs} +3 -3
  2. package/dist/{ArrayWidget-BHjh3qLF.cjs.map → ArrayWidget-CQCphADm.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-Dh6zDiC7.js → ArrayWidget-CcQFJGCA.js} +7 -6
  4. package/dist/{ArrayWidget-Dh6zDiC7.js.map → ArrayWidget-CcQFJGCA.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-CSc_TqNm.js → ArrayplotWidget-DGJEXAY0.js} +6 -5
  6. package/dist/{ArrayplotWidget-CSc_TqNm.js.map → ArrayplotWidget-DGJEXAY0.js.map} +1 -1
  7. package/dist/ArrayplotWidget-J0xWFYsb.cjs +2 -0
  8. package/dist/{ArrayplotWidget-BHD-TGQO.cjs.map → ArrayplotWidget-J0xWFYsb.cjs.map} +1 -1
  9. package/dist/BarColumn-DrvHLEts.cjs +2 -0
  10. package/dist/BarColumn-DrvHLEts.cjs.map +1 -0
  11. package/dist/{BarColumn-DmjMnw5l.js → BarColumn-DwZmAe8g.js} +11 -9
  12. package/dist/BarColumn-DwZmAe8g.js.map +1 -0
  13. package/dist/{BlockWidget-BdR_HCVc.js → BlockWidget-BHtugveV.js} +14 -13
  14. package/dist/{BlockWidget-BdR_HCVc.js.map → BlockWidget-BHtugveV.js.map} +1 -1
  15. package/dist/{BlockWidget-Bi1PfS1k.cjs → BlockWidget-_HTXwzGu.cjs} +2 -2
  16. package/dist/{BlockWidget-Bi1PfS1k.cjs.map → BlockWidget-_HTXwzGu.cjs.map} +1 -1
  17. package/dist/ButtonWidget-C_4jUjbD.cjs +3 -0
  18. package/dist/ButtonWidget-C_4jUjbD.cjs.map +1 -0
  19. package/dist/{ButtonWidget-DZ4VCNWU.js → ButtonWidget-Cc9cYsg8.js} +7 -6
  20. package/dist/ButtonWidget-Cc9cYsg8.js.map +1 -0
  21. package/dist/{CanvasWidget-DTEx-DpZ.cjs → CanvasWidget-98hvMkWl.cjs} +2 -2
  22. package/dist/{CanvasWidget-DTEx-DpZ.cjs.map → CanvasWidget-98hvMkWl.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-DuXOo3jG.js → CanvasWidget-Bn70gBcc.js} +2 -2
  24. package/dist/{CanvasWidget-DuXOo3jG.js.map → CanvasWidget-Bn70gBcc.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-bbOquK8B.cjs → CanvasdotWidget-6s1Kzzoj.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-bbOquK8B.cjs.map → CanvasdotWidget-6s1Kzzoj.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget-WoLpxI1u.js → CanvasdotWidget-CMROfW3O.js} +2 -2
  28. package/dist/{CanvasdotWidget-WoLpxI1u.js.map → CanvasdotWidget-CMROfW3O.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-tWpK5rsv.js → CanvasimageWidget-BpM05v_m.js} +3 -3
  30. package/dist/{CanvasimageWidget-tWpK5rsv.js.map → CanvasimageWidget-BpM05v_m.js.map} +1 -1
  31. package/dist/{CanvasimageWidget-D2EqsK7w.cjs → CanvasimageWidget-Du_TULyr.cjs} +2 -2
  32. package/dist/{CanvasimageWidget-D2EqsK7w.cjs.map → CanvasimageWidget-Du_TULyr.cjs.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-By_DiQ75.cjs → CanvasimagevalueWidget-DUiZEzwq.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-By_DiQ75.cjs.map → CanvasimagevalueWidget-DUiZEzwq.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-BVzJYz3l.js → CanvasimagevalueWidget-E6G93iGc.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-BVzJYz3l.js.map → CanvasimagevalueWidget-E6G93iGc.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-CDFf8Vll.js → CanvaslabelWidget-C074R2Fy.js} +2 -2
  38. package/dist/{CanvaslabelWidget-CDFf8Vll.js.map → CanvaslabelWidget-C074R2Fy.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-DiPxyXoX.cjs → CanvaslabelWidget-C7K2dtNN.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-DiPxyXoX.cjs.map → CanvaslabelWidget-C7K2dtNN.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-DzJKD6qs.js → CanvaslabelvalueWidget-B0nJeS4X.js} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-DzJKD6qs.js.map → CanvaslabelvalueWidget-B0nJeS4X.js.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-Cw5CCQTi.cjs → CanvaslabelvalueWidget-BuayHPZu.cjs} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-Cw5CCQTi.cjs.map → CanvaslabelvalueWidget-BuayHPZu.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-BttTXCZq.js → CanvaslineWidget-CxnNAqOX.js} +2 -2
  46. package/dist/{CanvaslineWidget-BttTXCZq.js.map → CanvaslineWidget-CxnNAqOX.js.map} +1 -1
  47. package/dist/{CanvaslineWidget-BECtKTPL.cjs → CanvaslineWidget-DaBwCmSV.cjs} +2 -2
  48. package/dist/{CanvaslineWidget-BECtKTPL.cjs.map → CanvaslineWidget-DaBwCmSV.cjs.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-i6G0JfnZ.js → CanvaslinevalueWidget-BwfFyCwH.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-i6G0JfnZ.js.map → CanvaslinevalueWidget-BwfFyCwH.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-5duJ98qu.cjs → CanvaslinevalueWidget-xSHdgNCO.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-5duJ98qu.cjs.map → CanvaslinevalueWidget-xSHdgNCO.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-CTMObPhX.cjs → CheckbuttonWidget-Bey7tHx-.cjs} +2 -2
  54. package/dist/{CheckbuttonWidget-CTMObPhX.cjs.map → CheckbuttonWidget-Bey7tHx-.cjs.map} +1 -1
  55. package/dist/{CheckbuttonWidget-18jtf7sh.js → CheckbuttonWidget-yAm10oX0.js} +2 -2
  56. package/dist/{CheckbuttonWidget-18jtf7sh.js.map → CheckbuttonWidget-yAm10oX0.js.map} +1 -1
  57. package/dist/{ClassificationBanners-BmnQODLn.js → ClassificationBanners-DxpE_iPX.js} +2 -2
  58. package/dist/{ClassificationBanners-BmnQODLn.js.map → ClassificationBanners-DxpE_iPX.js.map} +1 -1
  59. package/dist/ClassificationBanners-xG4DOlqJ.cjs +2 -0
  60. package/dist/{ClassificationBanners-DjGCuH-4.cjs.map → ClassificationBanners-xG4DOlqJ.cjs.map} +1 -1
  61. package/dist/{ComboboxWidget-BjaVFbD4.js → ComboboxWidget-BnWksnnp.js} +2 -2
  62. package/dist/{ComboboxWidget-BjaVFbD4.js.map → ComboboxWidget-BnWksnnp.js.map} +1 -1
  63. package/dist/{ComboboxWidget-Cc0Acq9q.cjs → ComboboxWidget-Mh6axKMv.cjs} +2 -2
  64. package/dist/{ComboboxWidget-Cc0Acq9q.cjs.map → ComboboxWidget-Mh6axKMv.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-CO-nvphS.js → CriticalCmdDialog-D0fIp8Tq.js} +24 -23
  66. package/dist/{CriticalCmdDialog-CO-nvphS.js.map → CriticalCmdDialog-D0fIp8Tq.js.map} +1 -1
  67. package/dist/CriticalCmdDialog-DJ3FWL0_.cjs +2 -0
  68. package/dist/{CriticalCmdDialog-eytxCQto.cjs.map → CriticalCmdDialog-DJ3FWL0_.cjs.map} +1 -1
  69. package/dist/{DateWidget-DkFAFlc8.js → DateWidget-CAiG2FIl.js} +9 -8
  70. package/dist/{DateWidget-DkFAFlc8.js.map → DateWidget-CAiG2FIl.js.map} +1 -1
  71. package/dist/DateWidget-DUYYp-Yx.cjs +2 -0
  72. package/dist/{DateWidget-Cle8FY8Q.cjs.map → DateWidget-DUYYp-Yx.cjs.map} +1 -1
  73. package/dist/DetailsDialog-D3iPUi8b.cjs +2 -0
  74. package/dist/{DetailsDialog-BcMaTfuQ.cjs.map → DetailsDialog-D3iPUi8b.cjs.map} +1 -1
  75. package/dist/{DetailsDialog-sqja4Lzq.js → DetailsDialog-q5SDzw3R.js} +72 -71
  76. package/dist/{DetailsDialog-sqja4Lzq.js.map → DetailsDialog-q5SDzw3R.js.map} +1 -1
  77. package/dist/EventListDialog-1RsuuLHZ.cjs +2 -0
  78. package/dist/EventListDialog-1RsuuLHZ.cjs.map +1 -0
  79. package/dist/{EventListDialog-DjCQAwGl.js → EventListDialog-HuEtOu3k.js} +61 -58
  80. package/dist/EventListDialog-HuEtOu3k.js.map +1 -0
  81. package/dist/FilechecksumWidget-ByVrYgzI.cjs +2 -0
  82. package/dist/{FilechecksumWidget-2ta-UvLp.cjs.map → FilechecksumWidget-ByVrYgzI.cjs.map} +1 -1
  83. package/dist/{FilechecksumWidget-DqJ_hvN4.js → FilechecksumWidget-DeW9wy5d.js} +9 -9
  84. package/dist/{FilechecksumWidget-DqJ_hvN4.js.map → FilechecksumWidget-DeW9wy5d.js.map} +1 -1
  85. package/dist/{FiledisplayWidget-CYznG_tf.js → FiledisplayWidget-C_zPFu2E.js} +7 -6
  86. package/dist/{FiledisplayWidget-CYznG_tf.js.map → FiledisplayWidget-C_zPFu2E.js.map} +1 -1
  87. package/dist/FiledisplayWidget-hYmg981k.cjs +2 -0
  88. package/dist/{FiledisplayWidget-BUKXIQir.cjs.map → FiledisplayWidget-hYmg981k.cjs.map} +1 -1
  89. package/dist/{FormatvalueWidget-BpFXnA_U.cjs → FormatvalueWidget-7VD_kwxB.cjs} +2 -2
  90. package/dist/{FormatvalueWidget-BpFXnA_U.cjs.map → FormatvalueWidget-7VD_kwxB.cjs.map} +1 -1
  91. package/dist/{FormatvalueWidget-BnVu4YGx.js → FormatvalueWidget-BrvPWwfN.js} +3 -3
  92. package/dist/{FormatvalueWidget-BnVu4YGx.js.map → FormatvalueWidget-BrvPWwfN.js.map} +1 -1
  93. package/dist/{Graph-CUFzx8Ti.js → Graph-BCvaO4yI.js} +45 -38
  94. package/dist/Graph-BCvaO4yI.js.map +1 -0
  95. package/dist/Graph-BUqdz6gu.cjs +2 -0
  96. package/dist/Graph-BUqdz6gu.cjs.map +1 -0
  97. package/dist/GraphWidget-BdP0xM_P.cjs +2 -0
  98. package/dist/{GraphWidget-BvCQHVxQ.cjs.map → GraphWidget-BdP0xM_P.cjs.map} +1 -1
  99. package/dist/{GraphWidget-DO5XbOGy.js → GraphWidget-QS-VJoes.js} +26 -31
  100. package/dist/{GraphWidget-DO5XbOGy.js.map → GraphWidget-QS-VJoes.js.map} +1 -1
  101. package/dist/{HorizontalWidget-BBQE-dP-.cjs → HorizontalWidget-B9j7DG2Q.cjs} +2 -2
  102. package/dist/{HorizontalWidget-BBQE-dP-.cjs.map → HorizontalWidget-B9j7DG2Q.cjs.map} +1 -1
  103. package/dist/{HorizontalWidget-BA9PiP3d.js → HorizontalWidget-cFSsdChw.js} +2 -2
  104. package/dist/{HorizontalWidget-BA9PiP3d.js.map → HorizontalWidget-cFSsdChw.js.map} +1 -1
  105. package/dist/{HorizontalboxWidget-CX7J8RdA.cjs → HorizontalboxWidget-C3zHRO9h.cjs} +2 -2
  106. package/dist/{HorizontalboxWidget-CX7J8RdA.cjs.map → HorizontalboxWidget-C3zHRO9h.cjs.map} +1 -1
  107. package/dist/{HorizontalboxWidget-B-7HOqgl.js → HorizontalboxWidget-CKA7rLGd.js} +5 -5
  108. package/dist/{HorizontalboxWidget-B-7HOqgl.js.map → HorizontalboxWidget-CKA7rLGd.js.map} +1 -1
  109. package/dist/{HorizontallineWidget-D-o9MGo0.js → HorizontallineWidget-BqbLK0zc.js} +2 -2
  110. package/dist/{HorizontallineWidget-D-o9MGo0.js.map → HorizontallineWidget-BqbLK0zc.js.map} +1 -1
  111. package/dist/{HorizontallineWidget-odTFoB8u.cjs → HorizontallineWidget-GGNFIo1N.cjs} +2 -2
  112. package/dist/{HorizontallineWidget-odTFoB8u.cjs.map → HorizontallineWidget-GGNFIo1N.cjs.map} +1 -1
  113. package/dist/{IframeWidget-BzOka-fX.js → IframeWidget-CITX8Es1.js} +2 -2
  114. package/dist/{IframeWidget-BzOka-fX.js.map → IframeWidget-CITX8Es1.js.map} +1 -1
  115. package/dist/{IframeWidget-cTHu_Rmp.cjs → IframeWidget-lK6Cw1Pp.cjs} +2 -2
  116. package/dist/{IframeWidget-cTHu_Rmp.cjs.map → IframeWidget-lK6Cw1Pp.cjs.map} +1 -1
  117. package/dist/ImageLoader-CkTaGfCC.cjs +2 -0
  118. package/dist/{ImageLoader-BTEOukIw.cjs.map → ImageLoader-CkTaGfCC.cjs.map} +1 -1
  119. package/dist/{ImageLoader-CstmWFM4.js → ImageLoader-DQV_11Vd.js} +2 -2
  120. package/dist/{ImageLoader-CstmWFM4.js.map → ImageLoader-DQV_11Vd.js.map} +1 -1
  121. package/dist/{ImageviewerWidget-BA9uOM1q.js → ImageviewerWidget-BIsSA7KD.js} +2 -2
  122. package/dist/{ImageviewerWidget-BA9uOM1q.js.map → ImageviewerWidget-BIsSA7KD.js.map} +1 -1
  123. package/dist/{ImageviewerWidget-CLAFwmaB.cjs → ImageviewerWidget-CvbsaXCd.cjs} +2 -2
  124. package/dist/{ImageviewerWidget-CLAFwmaB.cjs.map → ImageviewerWidget-CvbsaXCd.cjs.map} +1 -1
  125. package/dist/InterfacesTab-Cfvks-ms.cjs +2 -0
  126. package/dist/{InterfacesTab-CM0CGFVS.cjs.map → InterfacesTab-Cfvks-ms.cjs.map} +1 -1
  127. package/dist/{InterfacesTab-C3mDLkGC.js → InterfacesTab-twne_Qp4.js} +11 -10
  128. package/dist/{InterfacesTab-C3mDLkGC.js.map → InterfacesTab-twne_Qp4.js.map} +1 -1
  129. package/dist/{LabelWidget-CMmVq1mx.cjs → LabelWidget-BFWd6Vgh.cjs} +2 -2
  130. package/dist/{LabelWidget-CMmVq1mx.cjs.map → LabelWidget-BFWd6Vgh.cjs.map} +1 -1
  131. package/dist/{LabelWidget-Da2howZF.js → LabelWidget-FQI-cH_A.js} +2 -2
  132. package/dist/{LabelWidget-Da2howZF.js.map → LabelWidget-FQI-cH_A.js.map} +1 -1
  133. package/dist/{LabelledWidget-CAqH0oWs.cjs → LabelledWidget-AZifUp-f.cjs} +2 -2
  134. package/dist/{LabelledWidget-CAqH0oWs.cjs.map → LabelledWidget-AZifUp-f.cjs.map} +1 -1
  135. package/dist/{LabelledWidget-BH8y3OXT.js → LabelledWidget-KGXtQ4Zb.js} +4 -4
  136. package/dist/{LabelledWidget-BH8y3OXT.js.map → LabelledWidget-KGXtQ4Zb.js.map} +1 -1
  137. package/dist/{LabelprogressbarWidget-Brl24F4c.js → LabelprogressbarWidget-72WyzD_Q.js} +4 -4
  138. package/dist/{LabelprogressbarWidget-Brl24F4c.js.map → LabelprogressbarWidget-72WyzD_Q.js.map} +1 -1
  139. package/dist/{LabelprogressbarWidget-BxLGmW9T.cjs → LabelprogressbarWidget-Bd2E9G7V.cjs} +2 -2
  140. package/dist/{LabelprogressbarWidget-BxLGmW9T.cjs.map → LabelprogressbarWidget-Bd2E9G7V.cjs.map} +1 -1
  141. package/dist/{LabelsparklineWidget-D22MB7-4.js → LabelsparklineWidget-DtWNf4mK.js} +4 -4
  142. package/dist/{LabelsparklineWidget-D22MB7-4.js.map → LabelsparklineWidget-DtWNf4mK.js.map} +1 -1
  143. package/dist/{LabelsparklineWidget-BUXOpBeB.cjs → LabelsparklineWidget-__3CB0T-.cjs} +2 -2
  144. package/dist/{LabelsparklineWidget-BUXOpBeB.cjs.map → LabelsparklineWidget-__3CB0T-.cjs.map} +1 -1
  145. package/dist/LabelvalueWidget-B681T0uR.cjs +2 -0
  146. package/dist/LabelvalueWidget-B681T0uR.cjs.map +1 -0
  147. package/dist/{LabelvalueWidget-_1JPbK-K.js → LabelvalueWidget-D_JLdY7r.js} +11 -12
  148. package/dist/LabelvalueWidget-D_JLdY7r.js.map +1 -0
  149. package/dist/LabelvaluedescWidget-BppM5vGp.js +64 -0
  150. package/dist/LabelvaluedescWidget-BppM5vGp.js.map +1 -0
  151. package/dist/LabelvaluedescWidget-CiGIPdMG.cjs +2 -0
  152. package/dist/LabelvaluedescWidget-CiGIPdMG.cjs.map +1 -0
  153. package/dist/{LabelvaluelimitsbarWidget-C9PlEhWo.js → LabelvaluelimitsbarWidget-B69ogLif.js} +4 -4
  154. package/dist/{LabelvaluelimitsbarWidget-C9PlEhWo.js.map → LabelvaluelimitsbarWidget-B69ogLif.js.map} +1 -1
  155. package/dist/{LabelvaluelimitsbarWidget-BGag8V6k.cjs → LabelvaluelimitsbarWidget-Cmb4kGcv.cjs} +2 -2
  156. package/dist/{LabelvaluelimitsbarWidget-BGag8V6k.cjs.map → LabelvaluelimitsbarWidget-Cmb4kGcv.cjs.map} +1 -1
  157. package/dist/{LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs → LabelvaluelimitscolumnWidget-BXdmh9So.cjs} +2 -2
  158. package/dist/{LabelvaluelimitscolumnWidget-SHVJIgGJ.cjs.map → LabelvaluelimitscolumnWidget-BXdmh9So.cjs.map} +1 -1
  159. package/dist/{LabelvaluelimitscolumnWidget-Cay6AhoZ.js → LabelvaluelimitscolumnWidget-DPYwFdgq.js} +5 -5
  160. package/dist/{LabelvaluelimitscolumnWidget-Cay6AhoZ.js.map → LabelvaluelimitscolumnWidget-DPYwFdgq.js.map} +1 -1
  161. package/dist/{LabelvaluerangebarWidget-s_8IgY-C.js → LabelvaluerangebarWidget-BT0BcOoK.js} +4 -4
  162. package/dist/{LabelvaluerangebarWidget-s_8IgY-C.js.map → LabelvaluerangebarWidget-BT0BcOoK.js.map} +1 -1
  163. package/dist/{LabelvaluerangebarWidget-Dbibpimv.cjs → LabelvaluerangebarWidget-cavgscEk.cjs} +2 -2
  164. package/dist/{LabelvaluerangebarWidget-Dbibpimv.cjs.map → LabelvaluerangebarWidget-cavgscEk.cjs.map} +1 -1
  165. package/dist/{Layout-DwWEea79.cjs → Layout-D1ukrMwN.cjs} +2 -2
  166. package/dist/{Layout-DwWEea79.cjs.map → Layout-D1ukrMwN.cjs.map} +1 -1
  167. package/dist/{Layout-D7RGn0Fe.js → Layout-d-vb0okO.js} +2 -2
  168. package/dist/{Layout-D7RGn0Fe.js.map → Layout-d-vb0okO.js.map} +1 -1
  169. package/dist/{LedWidget-DgMtvsiv.js → LedWidget-Cmr6eVG2.js} +7 -6
  170. package/dist/{LedWidget-DgMtvsiv.js.map → LedWidget-Cmr6eVG2.js.map} +1 -1
  171. package/dist/LedWidget-Dwrm6hTX.cjs +2 -0
  172. package/dist/{LedWidget-BaiKDozd.cjs.map → LedWidget-Dwrm6hTX.cjs.map} +1 -1
  173. package/dist/{LimitsBar-BFM38vQL.cjs → LimitsBar-Dz1lZ_81.cjs} +2 -2
  174. package/dist/{LimitsBar-BFM38vQL.cjs.map → LimitsBar-Dz1lZ_81.cjs.map} +1 -1
  175. package/dist/{LimitsBar-CcOaAw0C.js → LimitsBar-qMynDHYT.js} +2 -2
  176. package/dist/{LimitsBar-CcOaAw0C.js.map → LimitsBar-qMynDHYT.js.map} +1 -1
  177. package/dist/{LimitsbarWidget-DpmJn1Lo.js → LimitsbarWidget-CMvcwa-m.js} +3 -3
  178. package/dist/{LimitsbarWidget-DpmJn1Lo.js.map → LimitsbarWidget-CMvcwa-m.js.map} +1 -1
  179. package/dist/{LimitsbarWidget-ConP3qI5.cjs → LimitsbarWidget-vIP9AUk4.cjs} +2 -2
  180. package/dist/{LimitsbarWidget-ConP3qI5.cjs.map → LimitsbarWidget-vIP9AUk4.cjs.map} +1 -1
  181. package/dist/LimitscolorWidget-CPuknJPk.cjs +2 -0
  182. package/dist/{LimitscolorWidget-veWQ4NXl.cjs.map → LimitscolorWidget-CPuknJPk.cjs.map} +1 -1
  183. package/dist/{LimitscolorWidget-BMXiEaDm.js → LimitscolorWidget-CZ9wMtcI.js} +7 -6
  184. package/dist/{LimitscolorWidget-BMXiEaDm.js.map → LimitscolorWidget-CZ9wMtcI.js.map} +1 -1
  185. package/dist/{LimitscolumnWidget-CJABAor8.cjs → LimitscolumnWidget-r-nOETY5.cjs} +2 -2
  186. package/dist/{LimitscolumnWidget-CJABAor8.cjs.map → LimitscolumnWidget-r-nOETY5.cjs.map} +1 -1
  187. package/dist/{LimitscolumnWidget-ufFMz6R-.js → LimitscolumnWidget-r84KJGU-.js} +2 -2
  188. package/dist/{LimitscolumnWidget-ufFMz6R-.js.map → LimitscolumnWidget-r84KJGU-.js.map} +1 -1
  189. package/dist/LinegraphWidget-BMUI8q6Q.cjs +2 -0
  190. package/dist/{LinegraphWidget-3E8L5CvM.cjs.map → LinegraphWidget-BMUI8q6Q.cjs.map} +1 -1
  191. package/dist/{LinegraphWidget-BC2wVOny.js → LinegraphWidget-COGBGOjF.js} +10 -9
  192. package/dist/{LinegraphWidget-BC2wVOny.js.map → LinegraphWidget-COGBGOjF.js.map} +1 -1
  193. package/dist/{MatrixbycolumnsWidget-DICgiNQo.cjs → MatrixbycolumnsWidget-BoNbbrEi.cjs} +2 -2
  194. package/dist/{MatrixbycolumnsWidget-DICgiNQo.cjs.map → MatrixbycolumnsWidget-BoNbbrEi.cjs.map} +1 -1
  195. package/dist/{MatrixbycolumnsWidget-DfUAeBnO.js → MatrixbycolumnsWidget-Dx2iz0YF.js} +3 -3
  196. package/dist/{MatrixbycolumnsWidget-DfUAeBnO.js.map → MatrixbycolumnsWidget-Dx2iz0YF.js.map} +1 -1
  197. package/dist/{MicroservicesTab-B0SZVty3.js → MicroservicesTab-Bhsf1soi.js} +12 -11
  198. package/dist/{MicroservicesTab-B0SZVty3.js.map → MicroservicesTab-Bhsf1soi.js.map} +1 -1
  199. package/dist/{MicroservicesTab-snXJDoYq.cjs → MicroservicesTab-Cuj56g8-.cjs} +3 -3
  200. package/dist/{MicroservicesTab-snXJDoYq.cjs.map → MicroservicesTab-Cuj56g8-.cjs.map} +1 -1
  201. package/dist/{OpenC3TimePicker-DpkbfbgC.js → OpenC3TimePicker-C3vCnk72.js} +20 -24
  202. package/dist/OpenC3TimePicker-C3vCnk72.js.map +1 -0
  203. package/dist/OpenC3TimePicker-CVUV2cK4.cjs +2 -0
  204. package/dist/OpenC3TimePicker-CVUV2cK4.cjs.map +1 -0
  205. package/dist/Openc3Screen-Bi6NOEQM.cjs +6 -0
  206. package/dist/{Openc3Screen-D1RLlBgQ.cjs.map → Openc3Screen-Bi6NOEQM.cjs.map} +1 -1
  207. package/dist/{Openc3Screen-DbUvz-3B.js → Openc3Screen-DkhDra2o.js} +67 -66
  208. package/dist/{Openc3Screen-DbUvz-3B.js.map → Openc3Screen-DkhDra2o.js.map} +1 -1
  209. package/dist/{OutputDialog-Ds-GdGyI.js → OutputDialog-D0ifesTw.js} +11 -10
  210. package/dist/{OutputDialog-Ds-GdGyI.js.map → OutputDialog-D0ifesTw.js.map} +1 -1
  211. package/dist/OutputDialog-DR9cJem2.cjs +2 -0
  212. package/dist/{OutputDialog-ChPCaQAE.cjs.map → OutputDialog-DR9cJem2.cjs.map} +1 -1
  213. package/dist/PackagesTab-B4sG5tHo.cjs +2 -0
  214. package/dist/{PackagesTab-BgQsbXRo.cjs.map → PackagesTab-B4sG5tHo.cjs.map} +1 -1
  215. package/dist/{PackagesTab-CWplBp_I.js → PackagesTab-Bb221-aM.js} +19 -18
  216. package/dist/{PackagesTab-CWplBp_I.js.map → PackagesTab-Bb221-aM.js.map} +1 -1
  217. package/dist/PluginsTab-Cbi_R9jL.cjs +6 -0
  218. package/dist/PluginsTab-Cbi_R9jL.cjs.map +1 -0
  219. package/dist/{PluginsTab-BiiL622n.js → PluginsTab-nWngR5kY.js} +275 -234
  220. package/dist/PluginsTab-nWngR5kY.js.map +1 -0
  221. package/dist/{ProgressbarWidget-D3ndYnq_.js → ProgressbarWidget-DPbAVjdC.js} +2 -2
  222. package/dist/{ProgressbarWidget-D3ndYnq_.js.map → ProgressbarWidget-DPbAVjdC.js.map} +1 -1
  223. package/dist/{ProgressbarWidget-DludJVUf.cjs → ProgressbarWidget-cPr3o6Nv.cjs} +2 -2
  224. package/dist/{ProgressbarWidget-DludJVUf.cjs.map → ProgressbarWidget-cPr3o6Nv.cjs.map} +1 -1
  225. package/dist/{RadiobuttonWidget-DX4h94p1.cjs → RadiobuttonWidget-BQZkRFa-.cjs} +2 -2
  226. package/dist/{RadiobuttonWidget-DX4h94p1.cjs.map → RadiobuttonWidget-BQZkRFa-.cjs.map} +1 -1
  227. package/dist/{RadiobuttonWidget-CP0S9nWW.js → RadiobuttonWidget-iXI9yCDk.js} +2 -2
  228. package/dist/{RadiobuttonWidget-CP0S9nWW.js.map → RadiobuttonWidget-iXI9yCDk.js.map} +1 -1
  229. package/dist/{RadiogroupWidget-BXHfA21T.js → RadiogroupWidget-CMM_p1eA.js} +2 -2
  230. package/dist/{RadiogroupWidget-BXHfA21T.js.map → RadiogroupWidget-CMM_p1eA.js.map} +1 -1
  231. package/dist/{RadiogroupWidget-NqjBNUH6.cjs → RadiogroupWidget-D2iIQ5RU.cjs} +2 -2
  232. package/dist/{RadiogroupWidget-NqjBNUH6.cjs.map → RadiogroupWidget-D2iIQ5RU.cjs.map} +1 -1
  233. package/dist/{RangebarWidget-Bv2DqkPo.js → RangebarWidget-DJXGUHAc.js} +2 -2
  234. package/dist/{RangebarWidget-Bv2DqkPo.js.map → RangebarWidget-DJXGUHAc.js.map} +1 -1
  235. package/dist/{RangebarWidget-CRq2zpvw.cjs → RangebarWidget-DsphX-jB.cjs} +2 -2
  236. package/dist/{RangebarWidget-CRq2zpvw.cjs.map → RangebarWidget-DsphX-jB.cjs.map} +1 -1
  237. package/dist/RedisTab-BZtfqEcP.js +186 -0
  238. package/dist/RedisTab-BZtfqEcP.js.map +1 -0
  239. package/dist/RedisTab-KhsG2CCO.cjs +2 -0
  240. package/dist/RedisTab-KhsG2CCO.cjs.map +1 -0
  241. package/dist/{RollupWidget-o_huYU0x.js → RollupWidget-BbWLSsTT.js} +2 -2
  242. package/dist/{RollupWidget-o_huYU0x.js.map → RollupWidget-BbWLSsTT.js.map} +1 -1
  243. package/dist/{RollupWidget-B7_Q_boi.cjs → RollupWidget-w-SF3f-X.cjs} +2 -2
  244. package/dist/{RollupWidget-B7_Q_boi.cjs.map → RollupWidget-w-SF3f-X.cjs.map} +1 -1
  245. package/dist/{RoutersTab-DN17iBBi.js → RoutersTab-CLKIJ5cm.js} +13 -12
  246. package/dist/{RoutersTab-DN17iBBi.js.map → RoutersTab-CLKIJ5cm.js.map} +1 -1
  247. package/dist/RoutersTab-DUvOfNhU.cjs +2 -0
  248. package/dist/{RoutersTab-CAbnSGHy.cjs.map → RoutersTab-DUvOfNhU.cjs.map} +1 -1
  249. package/dist/{ScriptChooser-CzzUJ1Zj.js → ScriptChooser-BxTJKTVu.js} +20 -19
  250. package/dist/{ScriptChooser-CzzUJ1Zj.js.map → ScriptChooser-BxTJKTVu.js.map} +1 -1
  251. package/dist/ScriptChooser-YC_FfCLd.cjs +2 -0
  252. package/dist/{ScriptChooser-CggwstfT.cjs.map → ScriptChooser-YC_FfCLd.cjs.map} +1 -1
  253. package/dist/{ScrollwindowWidget-kS5QjP-v.cjs → ScrollwindowWidget-D1mtHFMa.cjs} +2 -2
  254. package/dist/{ScrollwindowWidget-kS5QjP-v.cjs.map → ScrollwindowWidget-D1mtHFMa.cjs.map} +1 -1
  255. package/dist/{ScrollwindowWidget-DdjaML6D.js → ScrollwindowWidget-Dxhp7yKn.js} +2 -2
  256. package/dist/{ScrollwindowWidget-DdjaML6D.js.map → ScrollwindowWidget-Dxhp7yKn.js.map} +1 -1
  257. package/dist/SecretsTab-B7oZb354.cjs +2 -0
  258. package/dist/{SecretsTab-Cn6-o85L.cjs.map → SecretsTab-B7oZb354.cjs.map} +1 -1
  259. package/dist/{SecretsTab-Cu3sx2OA.js → SecretsTab-BoBmTh63.js} +5 -5
  260. package/dist/{SecretsTab-Cu3sx2OA.js.map → SecretsTab-BoBmTh63.js.map} +1 -1
  261. package/dist/SettingsTab-2EMyS-3_.cjs +3 -0
  262. package/dist/{SettingsTab-C6zIL2D6.cjs.map → SettingsTab-2EMyS-3_.cjs.map} +1 -1
  263. package/dist/{SettingsTab-B_vvSLvt.js → SettingsTab-BL7gkaO9.js} +7 -6
  264. package/dist/{SettingsTab-B_vvSLvt.js.map → SettingsTab-BL7gkaO9.js.map} +1 -1
  265. package/dist/{SignalWidget-Dd54y28I.js → SignalWidget-65q0tiuo.js} +2 -2
  266. package/dist/{SignalWidget-Dd54y28I.js.map → SignalWidget-65q0tiuo.js.map} +1 -1
  267. package/dist/{SignalWidget-BagcB92r.cjs → SignalWidget-Cld2lVyc.cjs} +2 -2
  268. package/dist/{SignalWidget-BagcB92r.cjs.map → SignalWidget-Cld2lVyc.cjs.map} +1 -1
  269. package/dist/{SimpleTextDialog-DZv9n_kJ.js → SimpleTextDialog-ChmFtdVw.js} +2 -2
  270. package/dist/{SimpleTextDialog-DZv9n_kJ.js.map → SimpleTextDialog-ChmFtdVw.js.map} +1 -1
  271. package/dist/{SimpleTextDialog-BJ50TbWh.cjs → SimpleTextDialog-DVlqwD8O.cjs} +2 -2
  272. package/dist/{SimpleTextDialog-BJ50TbWh.cjs.map → SimpleTextDialog-DVlqwD8O.cjs.map} +1 -1
  273. package/dist/{SpacerWidget-GPFYtIG1.js → SpacerWidget-DFzbojmX.js} +2 -2
  274. package/dist/{SpacerWidget-GPFYtIG1.js.map → SpacerWidget-DFzbojmX.js.map} +1 -1
  275. package/dist/{SpacerWidget-DWjBns9r.cjs → SpacerWidget-DV0-ZfEm.cjs} +2 -2
  276. package/dist/{SpacerWidget-DWjBns9r.cjs.map → SpacerWidget-DV0-ZfEm.cjs.map} +1 -1
  277. package/dist/SparklineWidget-B1RfTxEp.cjs +2 -0
  278. package/dist/{SparklineWidget-xdPgolp3.cjs.map → SparklineWidget-B1RfTxEp.cjs.map} +1 -1
  279. package/dist/{SparklineWidget-f11nrlLS.js → SparklineWidget-Bu4I8zY0.js} +10 -9
  280. package/dist/{SparklineWidget-f11nrlLS.js.map → SparklineWidget-Bu4I8zY0.js.map} +1 -1
  281. package/dist/{TabbookWidget-DeaC27yC.js → TabbookWidget-CELMWyx7.js} +2 -2
  282. package/dist/{TabbookWidget-DeaC27yC.js.map → TabbookWidget-CELMWyx7.js.map} +1 -1
  283. package/dist/{TabbookWidget-CUIYWHRH.cjs → TabbookWidget-CLpx5e5Q.cjs} +2 -2
  284. package/dist/{TabbookWidget-CUIYWHRH.cjs.map → TabbookWidget-CLpx5e5Q.cjs.map} +1 -1
  285. package/dist/{TargetPacketItemChooser-BoBqvs3T.js → TargetPacketItemChooser-BOdVLVbe.js} +177 -153
  286. package/dist/TargetPacketItemChooser-BOdVLVbe.js.map +1 -0
  287. package/dist/TargetPacketItemChooser-xoRA3b9K.cjs +2 -0
  288. package/dist/TargetPacketItemChooser-xoRA3b9K.cjs.map +1 -0
  289. package/dist/{TargetsTab-CjVaBN9O.js → TargetsTab-BJZEtKY4.js} +11 -10
  290. package/dist/{TargetsTab-CjVaBN9O.js.map → TargetsTab-BJZEtKY4.js.map} +1 -1
  291. package/dist/TargetsTab-Dkp4VoK6.cjs +2 -0
  292. package/dist/{TargetsTab-BMcWjrZ_.cjs.map → TargetsTab-Dkp4VoK6.cjs.map} +1 -1
  293. package/dist/{TextboxWidget-tL41zWUX.js → TextboxWidget-DYsqXntS.js} +7 -6
  294. package/dist/{TextboxWidget-tL41zWUX.js.map → TextboxWidget-DYsqXntS.js.map} +1 -1
  295. package/dist/TextboxWidget-DuNmhz89.cjs +2 -0
  296. package/dist/{TextboxWidget-CXA9rR02.cjs.map → TextboxWidget-DuNmhz89.cjs.map} +1 -1
  297. package/dist/{TextfieldWidget-D1qj14Qi.js → TextfieldWidget-BIUgV9Q4.js} +2 -2
  298. package/dist/{TextfieldWidget-D1qj14Qi.js.map → TextfieldWidget-BIUgV9Q4.js.map} +1 -1
  299. package/dist/{TextfieldWidget-D-H2fOZG.cjs → TextfieldWidget-BlW-rSVv.cjs} +2 -2
  300. package/dist/{TextfieldWidget-D-H2fOZG.cjs.map → TextfieldWidget-BlW-rSVv.cjs.map} +1 -1
  301. package/dist/{TimeWidget-CSVGNong.js → TimeWidget-BPXcY1Wy.js} +7 -6
  302. package/dist/{TimeWidget-CSVGNong.js.map → TimeWidget-BPXcY1Wy.js.map} +1 -1
  303. package/dist/TimeWidget-BddmbQgt.cjs +2 -0
  304. package/dist/{TimeWidget-CGk8Ze_I.cjs.map → TimeWidget-BddmbQgt.cjs.map} +1 -1
  305. package/dist/{TitleWidget-ClhWhUf3.cjs → TitleWidget-CPqwZKUx.cjs} +2 -2
  306. package/dist/{TitleWidget-ClhWhUf3.cjs.map → TitleWidget-CPqwZKUx.cjs.map} +1 -1
  307. package/dist/{TitleWidget-CLx-tuYT.js → TitleWidget-DJ9mHRLE.js} +2 -2
  308. package/dist/{TitleWidget-CLx-tuYT.js.map → TitleWidget-DJ9mHRLE.js.map} +1 -1
  309. package/dist/ToolsTab-B4CURni4.cjs +2 -0
  310. package/dist/{ToolsTab-DTHap-Nq.cjs.map → ToolsTab-B4CURni4.cjs.map} +1 -1
  311. package/dist/{ToolsTab-lBB_KhmA.js → ToolsTab-VSCWDywf.js} +62 -61
  312. package/dist/{ToolsTab-lBB_KhmA.js.map → ToolsTab-VSCWDywf.js.map} +1 -1
  313. package/dist/{TopBar-C810rP_B.js → TopBar-B4oz2FsN.js} +2 -2
  314. package/dist/{TopBar-C810rP_B.js.map → TopBar-B4oz2FsN.js.map} +1 -1
  315. package/dist/{TopBar-Ctzx7o2k.cjs → TopBar-lcB6jpd_.cjs} +2 -2
  316. package/dist/{TopBar-Ctzx7o2k.cjs.map → TopBar-lcB6jpd_.cjs.map} +1 -1
  317. package/dist/TsdbTab-Cv8GjpoJ.js +1164 -0
  318. package/dist/TsdbTab-Cv8GjpoJ.js.map +1 -0
  319. package/dist/TsdbTab-OOO451j0.cjs +5 -0
  320. package/dist/TsdbTab-OOO451j0.cjs.map +1 -0
  321. package/dist/{UpgradeToEnterpriseDialog-D_S574Zb.js → UpgradeToEnterpriseDialog-BUuXsGPY.js} +2 -2
  322. package/dist/{UpgradeToEnterpriseDialog-D_S574Zb.js.map → UpgradeToEnterpriseDialog-BUuXsGPY.js.map} +1 -1
  323. package/dist/{UpgradeToEnterpriseDialog-XJb6gVCY.cjs → UpgradeToEnterpriseDialog-DHLK6v6f.cjs} +2 -2
  324. package/dist/{UpgradeToEnterpriseDialog-XJb6gVCY.cjs.map → UpgradeToEnterpriseDialog-DHLK6v6f.cjs.map} +1 -1
  325. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CTNR19Zt.cjs +1477 -0
  326. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CTNR19Zt.cjs.map +1 -0
  327. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DskbVSHX.js +26306 -0
  328. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-DskbVSHX.js.map +1 -0
  329. package/dist/VWidget-B6WHN0_z.cjs +2 -0
  330. package/dist/VWidget-B6WHN0_z.cjs.map +1 -0
  331. package/dist/{VWidget-CxnaMF0w.js → VWidget-BDy0211S.js} +17 -20
  332. package/dist/VWidget-BDy0211S.js.map +1 -0
  333. package/dist/{ValueWidget-BYgpXfDo.js → ValueWidget-DzOSy7lp.js} +7 -6
  334. package/dist/{ValueWidget-BYgpXfDo.js.map → ValueWidget-DzOSy7lp.js.map} +1 -1
  335. package/dist/ValueWidget-QWzoEFXc.cjs +2 -0
  336. package/dist/{ValueWidget-Bws1qOEI.cjs.map → ValueWidget-QWzoEFXc.cjs.map} +1 -1
  337. package/dist/{ValuelimitsbarWidget-BoZSJvuq.cjs → ValuelimitsbarWidget-5AkAljK-.cjs} +2 -2
  338. package/dist/{ValuelimitsbarWidget-BoZSJvuq.cjs.map → ValuelimitsbarWidget-5AkAljK-.cjs.map} +1 -1
  339. package/dist/{ValuelimitsbarWidget-Dc9-VNZ3.js → ValuelimitsbarWidget-D5dSlW6D.js} +4 -4
  340. package/dist/{ValuelimitsbarWidget-Dc9-VNZ3.js.map → ValuelimitsbarWidget-D5dSlW6D.js.map} +1 -1
  341. package/dist/{ValuelimitscolumnWidget-b7W8K3mR.js → ValuelimitscolumnWidget-7DXCsVW_.js} +4 -4
  342. package/dist/{ValuelimitscolumnWidget-b7W8K3mR.js.map → ValuelimitscolumnWidget-7DXCsVW_.js.map} +1 -1
  343. package/dist/{ValuelimitscolumnWidget-ta9i_tiy.cjs → ValuelimitscolumnWidget-zNx9i1v7.cjs} +2 -2
  344. package/dist/{ValuelimitscolumnWidget-ta9i_tiy.cjs.map → ValuelimitscolumnWidget-zNx9i1v7.cjs.map} +1 -1
  345. package/dist/{ValuerangebarWidget-DmhczZQb.js → ValuerangebarWidget-BWjnpmyy.js} +4 -4
  346. package/dist/{ValuerangebarWidget-DmhczZQb.js.map → ValuerangebarWidget-BWjnpmyy.js.map} +1 -1
  347. package/dist/{ValuerangebarWidget-Ips-beG6.cjs → ValuerangebarWidget-EsdIz4oP.cjs} +2 -2
  348. package/dist/{ValuerangebarWidget-Ips-beG6.cjs.map → ValuerangebarWidget-EsdIz4oP.cjs.map} +1 -1
  349. package/dist/{VerticalWidget-BvsVh0Ob.js → VerticalWidget-BOtXAhxt.js} +2 -2
  350. package/dist/{VerticalWidget-BvsVh0Ob.js.map → VerticalWidget-BOtXAhxt.js.map} +1 -1
  351. package/dist/{VerticalWidget-BVt7QPjO.cjs → VerticalWidget-DVskS6fx.cjs} +2 -2
  352. package/dist/{VerticalWidget-BVt7QPjO.cjs.map → VerticalWidget-DVskS6fx.cjs.map} +1 -1
  353. package/dist/{VerticalboxWidget-CNoXT3YW.cjs → VerticalboxWidget-Bu4oHN2K.cjs} +2 -2
  354. package/dist/{VerticalboxWidget-CNoXT3YW.cjs.map → VerticalboxWidget-Bu4oHN2K.cjs.map} +1 -1
  355. package/dist/{VerticalboxWidget-ClTCDCQN.js → VerticalboxWidget-RAsXfGdI.js} +5 -5
  356. package/dist/{VerticalboxWidget-ClTCDCQN.js.map → VerticalboxWidget-RAsXfGdI.js.map} +1 -1
  357. package/dist/{Widget-DRhVdCLP.js → Widget-BDsgRxuV.js} +37 -14
  358. package/dist/{Widget-DRhVdCLP.js.map → Widget-BDsgRxuV.js.map} +1 -1
  359. package/dist/Widget-Ddu_kuTL.cjs +2 -0
  360. package/dist/{Widget-CB_BtOFw.cjs.map → Widget-Ddu_kuTL.cjs.map} +1 -1
  361. package/dist/{addMonths-Zggd7y6j.js → addMonths-BiRF9eDT.js} +2 -2
  362. package/dist/{addMonths-Zggd7y6j.js.map → addMonths-BiRF9eDT.js.map} +1 -1
  363. package/dist/{addMonths-BhOW2mOW.cjs → addMonths-Ds2ObZwt.cjs} +2 -2
  364. package/dist/{addMonths-BhOW2mOW.cjs.map → addMonths-Ds2ObZwt.cjs.map} +1 -1
  365. package/dist/components.cjs +2 -2
  366. package/dist/components.js +28 -28
  367. package/dist/format-D2pYLAIF.js +5896 -0
  368. package/dist/format-D2pYLAIF.js.map +1 -0
  369. package/dist/format-qjtPogBb.cjs +13 -0
  370. package/dist/format-qjtPogBb.cjs.map +1 -0
  371. package/dist/getDefaultOptions-DSMQojSA.cjs +2 -0
  372. package/dist/{getDefaultOptions-Cek5kGzE.cjs.map → getDefaultOptions-DSMQojSA.cjs.map} +1 -1
  373. package/dist/getDefaultOptions-v3X-F5jM.js +8 -0
  374. package/dist/{getDefaultOptions-xjgn1r-_.js.map → getDefaultOptions-v3X-F5jM.js.map} +1 -1
  375. package/dist/{index-GYAZJDxn.js → index-BJCQaZ7q.js} +63 -62
  376. package/dist/{index-GYAZJDxn.js.map → index-BJCQaZ7q.js.map} +1 -1
  377. package/dist/{index-CJcL4_a4.js → index-BjcgyMLV.js} +691 -633
  378. package/dist/index-BjcgyMLV.js.map +1 -0
  379. package/dist/{index-3sXOEKCU.cjs → index-CctPeecq.cjs} +5 -5
  380. package/dist/{index-3sXOEKCU.cjs.map → index-CctPeecq.cjs.map} +1 -1
  381. package/dist/index-_a-NnvKv.cjs +10 -0
  382. package/dist/index-_a-NnvKv.cjs.map +1 -0
  383. package/dist/{parse-BKTTGw2p.js → parse-Br4M7sX4.js} +3 -3
  384. package/dist/{parse-BKTTGw2p.js.map → parse-Br4M7sX4.js.map} +1 -1
  385. package/dist/{parse-DgZTYocC.cjs → parse-D8syXcjd.cjs} +2 -2
  386. package/dist/{parse-DgZTYocC.cjs.map → parse-D8syXcjd.cjs.map} +1 -1
  387. package/dist/plugins.cjs +1 -1
  388. package/dist/plugins.cjs.map +1 -1
  389. package/dist/plugins.js +1 -1
  390. package/dist/plugins.js.map +1 -1
  391. package/dist/purify.es-CehoGjrR.cjs +3 -0
  392. package/dist/purify.es-CehoGjrR.cjs.map +1 -0
  393. package/dist/purify.es-exIQuqhb.js +596 -0
  394. package/dist/purify.es-exIQuqhb.js.map +1 -0
  395. package/dist/settings-CWvCIKI4.cjs +2 -0
  396. package/dist/{settings-B0AhztTk.cjs.map → settings-CWvCIKI4.cjs.map} +1 -1
  397. package/dist/{settings-C2auUQwX.js → settings-Dvmurty6.js} +2 -2
  398. package/dist/{settings-C2auUQwX.js.map → settings-Dvmurty6.js.map} +1 -1
  399. package/dist/settingsCache-CGgEjlw3.js +28 -0
  400. package/dist/settingsCache-CGgEjlw3.js.map +1 -0
  401. package/dist/settingsCache-Dg7OMDJK.cjs +2 -0
  402. package/dist/settingsCache-Dg7OMDJK.cjs.map +1 -0
  403. package/dist/{timeFilters-CRNRsUsb.cjs → timeFilters-BtN2a5-O.cjs} +2 -2
  404. package/dist/{timeFilters-CRNRsUsb.cjs.map → timeFilters-BtN2a5-O.cjs.map} +1 -1
  405. package/dist/{timeFilters-DTOZtBlG.js → timeFilters-C1beMtAQ.js} +3 -3
  406. package/dist/{timeFilters-DTOZtBlG.js.map → timeFilters-C1beMtAQ.js.map} +1 -1
  407. package/dist/tools/admin.cjs +1 -1
  408. package/dist/tools/admin.js +1 -1
  409. package/dist/tools/base.cjs +1 -1
  410. package/dist/tools/base.cjs.map +1 -1
  411. package/dist/tools/base.js +51 -51
  412. package/dist/tools/calendar.cjs +1 -1
  413. package/dist/tools/calendar.js +1 -1
  414. package/dist/tools/scriptrunner.cjs +8 -8
  415. package/dist/tools/scriptrunner.cjs.map +1 -1
  416. package/dist/tools/scriptrunner.js +17 -17
  417. package/dist/tools/scriptrunner.js.map +1 -1
  418. package/dist/util.cjs +1 -1
  419. package/dist/util.js +11 -7
  420. package/dist/util.js.map +1 -1
  421. package/dist/vue-common.css +1 -1
  422. package/dist/widgets.cjs +1 -1
  423. package/dist/widgets.js +64 -64
  424. package/package.json +7 -7
  425. package/dist/ArrayplotWidget-BHD-TGQO.cjs +0 -2
  426. package/dist/BarColumn-DmjMnw5l.js.map +0 -1
  427. package/dist/BarColumn-Ym4P8YHC.cjs +0 -2
  428. package/dist/BarColumn-Ym4P8YHC.cjs.map +0 -1
  429. package/dist/ButtonWidget-70hNWuEy.cjs +0 -3
  430. package/dist/ButtonWidget-70hNWuEy.cjs.map +0 -1
  431. package/dist/ButtonWidget-DZ4VCNWU.js.map +0 -1
  432. package/dist/ClassificationBanners-DjGCuH-4.cjs +0 -2
  433. package/dist/CriticalCmdDialog-eytxCQto.cjs +0 -2
  434. package/dist/DateWidget-Cle8FY8Q.cjs +0 -2
  435. package/dist/DetailsDialog-BcMaTfuQ.cjs +0 -2
  436. package/dist/EventListDialog-DjCQAwGl.js.map +0 -1
  437. package/dist/EventListDialog-EmC7YW60.cjs +0 -2
  438. package/dist/EventListDialog-EmC7YW60.cjs.map +0 -1
  439. package/dist/FilechecksumWidget-2ta-UvLp.cjs +0 -2
  440. package/dist/FiledisplayWidget-BUKXIQir.cjs +0 -2
  441. package/dist/Graph-CUFzx8Ti.js.map +0 -1
  442. package/dist/Graph-qxF4224c.cjs +0 -2
  443. package/dist/Graph-qxF4224c.cjs.map +0 -1
  444. package/dist/GraphWidget-BvCQHVxQ.cjs +0 -2
  445. package/dist/ImageLoader-BTEOukIw.cjs +0 -2
  446. package/dist/InterfacesTab-CM0CGFVS.cjs +0 -2
  447. package/dist/LabelvalueWidget-_1JPbK-K.js.map +0 -1
  448. package/dist/LabelvalueWidget-bYqqgIGE.cjs +0 -2
  449. package/dist/LabelvalueWidget-bYqqgIGE.cjs.map +0 -1
  450. package/dist/LabelvaluedescWidget-B2dFZoDE.cjs +0 -2
  451. package/dist/LabelvaluedescWidget-B2dFZoDE.cjs.map +0 -1
  452. package/dist/LabelvaluedescWidget-BgduSJJb.js +0 -59
  453. package/dist/LabelvaluedescWidget-BgduSJJb.js.map +0 -1
  454. package/dist/LedWidget-BaiKDozd.cjs +0 -2
  455. package/dist/LimitscolorWidget-veWQ4NXl.cjs +0 -2
  456. package/dist/LinegraphWidget-3E8L5CvM.cjs +0 -2
  457. package/dist/OpenC3TimePicker-DpkbfbgC.js.map +0 -1
  458. package/dist/OpenC3TimePicker-Yl1jVi7p.cjs +0 -2
  459. package/dist/OpenC3TimePicker-Yl1jVi7p.cjs.map +0 -1
  460. package/dist/Openc3Screen-D1RLlBgQ.cjs +0 -6
  461. package/dist/OutputDialog-ChPCaQAE.cjs +0 -2
  462. package/dist/PackagesTab-BgQsbXRo.cjs +0 -2
  463. package/dist/PluginsTab-BiiL622n.js.map +0 -1
  464. package/dist/PluginsTab-RgIMk-F7.cjs +0 -6
  465. package/dist/PluginsTab-RgIMk-F7.cjs.map +0 -1
  466. package/dist/RedisTab-7TbOXFA_.js +0 -171
  467. package/dist/RedisTab-7TbOXFA_.js.map +0 -1
  468. package/dist/RedisTab-DpWPY1P0.cjs +0 -2
  469. package/dist/RedisTab-DpWPY1P0.cjs.map +0 -1
  470. package/dist/RoutersTab-CAbnSGHy.cjs +0 -2
  471. package/dist/ScriptChooser-CggwstfT.cjs +0 -2
  472. package/dist/SecretsTab-Cn6-o85L.cjs +0 -2
  473. package/dist/SettingsTab-C6zIL2D6.cjs +0 -3
  474. package/dist/SparklineWidget-xdPgolp3.cjs +0 -2
  475. package/dist/TargetPacketItemChooser-BoBqvs3T.js.map +0 -1
  476. package/dist/TargetPacketItemChooser-C0Z90rss.cjs +0 -2
  477. package/dist/TargetPacketItemChooser-C0Z90rss.cjs.map +0 -1
  478. package/dist/TargetsTab-BMcWjrZ_.cjs +0 -2
  479. package/dist/TextboxWidget-CXA9rR02.cjs +0 -2
  480. package/dist/TimeWidget-CGk8Ze_I.cjs +0 -2
  481. package/dist/ToolsTab-DTHap-Nq.cjs +0 -2
  482. package/dist/TsdbTab-7F4mRKDo.js +0 -125
  483. package/dist/TsdbTab-7F4mRKDo.js.map +0 -1
  484. package/dist/TsdbTab-DVF6n9mq.cjs +0 -2
  485. package/dist/TsdbTab-DVF6n9mq.cjs.map +0 -1
  486. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js +0 -30891
  487. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BJxLUZhh.js.map +0 -1
  488. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs +0 -1485
  489. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-eKtA_EtD.cjs.map +0 -1
  490. package/dist/VWidget-CxnaMF0w.js.map +0 -1
  491. package/dist/VWidget-dEHSEvZx.cjs +0 -2
  492. package/dist/VWidget-dEHSEvZx.cjs.map +0 -1
  493. package/dist/ValueWidget-Bws1qOEI.cjs +0 -2
  494. package/dist/Widget-CB_BtOFw.cjs +0 -2
  495. package/dist/format-CJYjW-xx.js +0 -1252
  496. package/dist/format-CJYjW-xx.js.map +0 -1
  497. package/dist/format-DOZQNf-X.cjs +0 -2
  498. package/dist/format-DOZQNf-X.cjs.map +0 -1
  499. package/dist/getDefaultOptions-Cek5kGzE.cjs +0 -2
  500. package/dist/getDefaultOptions-xjgn1r-_.js +0 -8
  501. package/dist/index-B34azWgs.cjs +0 -7
  502. package/dist/index-B34azWgs.cjs.map +0 -1
  503. package/dist/index-CJcL4_a4.js.map +0 -1
  504. package/dist/purify.es-4pyphLiB.cjs +0 -3
  505. package/dist/purify.es-4pyphLiB.cjs.map +0 -1
  506. package/dist/purify.es-BPDBzHtc.js +0 -553
  507. package/dist/purify.es-BPDBzHtc.js.map +0 -1
  508. package/dist/settings-B0AhztTk.cjs +0 -2
@@ -0,0 +1,1164 @@
1
+ import { B as A } from "./format-D2pYLAIF.js";
2
+ import { resolveComponent as d, openBlock as u, createBlock as V, withCtx as n, createVNode as a, createTextVNode as h, toDisplayString as c, createCommentVNode as b, createElementBlock as p, Fragment as M, createElementVNode as o, renderList as z, normalizeClass as Q, mergeProps as K } from "vue";
3
+ import { _ as B } from "./CustomIcon-DTR361si.js";
4
+ const q = {
5
+ downloading: "Downloading files…",
6
+ enabling_dedup: "Enabling DEDUP…",
7
+ ingesting: "Ingesting packets…",
8
+ dedup_cooldown: "Waiting for DEDUP cooldown…",
9
+ disabling_dedup: "Disabling DEDUP…"
10
+ }, F = {
11
+ props: {
12
+ modelValue: {
13
+ type: Boolean,
14
+ default: !1
15
+ },
16
+ context: {
17
+ type: Object,
18
+ required: !0
19
+ }
20
+ },
21
+ emits: ["update:modelValue", "complete"],
22
+ data() {
23
+ return {
24
+ loadingCandidates: !1,
25
+ candidates: [],
26
+ selectedKeys: [],
27
+ targetVersion: "as_logged",
28
+ bucketEnv: null,
29
+ path: null,
30
+ candidateHeaders: [
31
+ { title: "File", key: "filename" },
32
+ { title: "Key", key: "key" }
33
+ ],
34
+ jobId: null,
35
+ jobStatus: null,
36
+ pollHandle: null,
37
+ errorMessage: null,
38
+ confirmCloseOpen: !1
39
+ };
40
+ },
41
+ computed: {
42
+ isRunning() {
43
+ return this.jobStatus ? ["Queued", "Running"].includes(this.jobStatus.state) : !1;
44
+ },
45
+ phaseLabel() {
46
+ const s = this.jobStatus?.progress_phase;
47
+ if (!s) return this.jobStatus?.state || "";
48
+ if (s === "dedup_cooldown") {
49
+ const e = this.cooldownRemaining;
50
+ if (e != null)
51
+ return `Waiting for DEDUP cooldown (${e}s)…`;
52
+ }
53
+ return q[s] || s;
54
+ },
55
+ cooldownRemaining() {
56
+ const s = this.jobStatus?.dedup_enabled_at, e = this.jobStatus?.dedup_cooldown_seconds;
57
+ if (!s || !e) return null;
58
+ const i = Date.now() / 1e3, l = new Date(s).getTime() / 1e3, t = Math.round(l + e - i);
59
+ return Math.max(t, 0);
60
+ },
61
+ progressPercent() {
62
+ const s = this.jobStatus;
63
+ return s ? s.state === "Complete" ? 100 : !s.progress_total || s.progress_total === 0 ? 0 : Math.round(s.progress_current / s.progress_total * 100) : 0;
64
+ }
65
+ },
66
+ watch: {
67
+ modelValue(s) {
68
+ s && this.fetchCandidates();
69
+ }
70
+ },
71
+ mounted() {
72
+ this.modelValue && this.fetchCandidates();
73
+ },
74
+ beforeUnmount() {
75
+ this.stopPolling();
76
+ },
77
+ methods: {
78
+ close() {
79
+ this.stopPolling();
80
+ const s = this.jobStatus?.state === "Complete";
81
+ this.resetState(), this.$emit("update:modelValue", !1), s && this.$emit("complete");
82
+ },
83
+ attemptClose() {
84
+ this.isRunning ? this.confirmCloseOpen = !0 : this.close();
85
+ },
86
+ confirmClose() {
87
+ this.confirmCloseOpen = !1, this.close();
88
+ },
89
+ resetState() {
90
+ this.candidates = [], this.selectedKeys = [], this.targetVersion = "as_logged", this.bucketEnv = null, this.path = null, this.jobId = null, this.jobStatus = null, this.errorMessage = null, this.loadingCandidates = !1, this.confirmCloseOpen = !1;
91
+ },
92
+ async fetchCandidates() {
93
+ this.resetState(), this.loadingCandidates = !0;
94
+ try {
95
+ const s = await A.get(
96
+ "/openc3-api/storage/repair_candidates",
97
+ {
98
+ params: {
99
+ scope: this.context.scope,
100
+ target: this.context.target,
101
+ packet: this.context.packet,
102
+ cmd_or_tlm: this.context.cmdOrTlm,
103
+ start_time: this.context.gap.startIso,
104
+ end_time: this.context.gap.endIso
105
+ }
106
+ }
107
+ );
108
+ this.candidates = s.data.files || [], this.bucketEnv = s.data.bucket, this.path = s.data.path, this.selectedKeys = this.candidates.map((e) => e.key);
109
+ } catch (s) {
110
+ this.errorMessage = s.response?.data?.message || s.message;
111
+ } finally {
112
+ this.loadingCandidates = !1;
113
+ }
114
+ },
115
+ async startReingest() {
116
+ this.errorMessage = null;
117
+ const s = this.selectedKeys.map((e) => this.path && e.startsWith(this.path) ? e.slice(this.path.length) : e.split("/").pop());
118
+ try {
119
+ const e = await A.post("/openc3-api/storage/reingest", {
120
+ data: {
121
+ scope: this.context.scope,
122
+ bucket: this.bucketEnv,
123
+ path: this.path,
124
+ files: s,
125
+ target_version: this.targetVersion
126
+ }
127
+ });
128
+ this.jobId = e.data.job_id, this.jobStatus = { state: e.data.state }, this.startPolling();
129
+ } catch (e) {
130
+ this.errorMessage = e.response?.data?.message || e.message;
131
+ }
132
+ },
133
+ startPolling() {
134
+ this.stopPolling(), this.pollHandle = setInterval(this.pollStatus, 2e3), this.pollStatus();
135
+ },
136
+ stopPolling() {
137
+ this.pollHandle && (clearInterval(this.pollHandle), this.pollHandle = null);
138
+ },
139
+ async pollStatus() {
140
+ if (this.jobId)
141
+ try {
142
+ const s = await A.get(
143
+ `/openc3-api/storage/reingest/${this.jobId}`,
144
+ { params: { scope: this.context.scope } }
145
+ );
146
+ this.jobStatus = s.data, this.isRunning || this.stopPolling();
147
+ } catch (s) {
148
+ this.errorMessage = s.response?.data?.message || s.message, this.stopPolling();
149
+ }
150
+ }
151
+ }
152
+ }, W = {
153
+ key: 0,
154
+ class: "text-red monospace mb-4"
155
+ }, Y = {
156
+ key: 0,
157
+ class: "d-flex align-center mb-4"
158
+ }, Z = {
159
+ key: 0,
160
+ class: "text-medium-emphasis"
161
+ }, J = { class: "mb-2" }, X = { class: "mt-4" }, $ = { key: 0 }, ee = { key: 1 }, te = { key: 2 }, se = { class: "text-red" }, ae = { key: 3 }, oe = { class: "text-orange" };
162
+ function ne(s, e, i, l, t, r) {
163
+ const f = d("v-card-title"), k = d("v-card-subtitle"), S = d("v-progress-circular"), E = d("v-data-table"), x = d("v-radio"), L = d("v-radio-group"), v = d("v-table"), T = d("v-progress-linear"), D = d("v-card-text"), g = d("v-spacer"), _ = d("v-btn"), y = d("v-card-actions"), C = d("v-card"), I = d("v-dialog");
164
+ return u(), V(I, {
165
+ "model-value": i.modelValue,
166
+ "max-width": "900",
167
+ persistent: ""
168
+ }, {
169
+ default: n(() => [
170
+ a(C, null, {
171
+ default: n(() => [
172
+ a(f, { class: "d-flex align-center" }, {
173
+ default: n(() => [
174
+ h(" Repair Gap: " + c(i.context.target) + " " + c(i.context.packet), 1)
175
+ ]),
176
+ _: 1
177
+ }),
178
+ i.context.gap ? (u(), V(k, { key: 0 }, {
179
+ default: n(() => [
180
+ h(c(i.context.gap.start) + " — " + c(i.context.gap.end) + " (" + c(i.context.gap.duration) + ") ", 1)
181
+ ]),
182
+ _: 1
183
+ })) : b("", !0),
184
+ a(D, { style: { "max-height": "75vh", "overflow-y": "auto" } }, {
185
+ default: n(() => [
186
+ t.errorMessage ? (u(), p("div", W, " Error: " + c(t.errorMessage), 1)) : b("", !0),
187
+ t.jobId ? t.jobStatus ? (u(), p(M, { key: 2 }, [
188
+ a(v, {
189
+ density: "compact",
190
+ class: "monospace mb-4"
191
+ }, {
192
+ default: n(() => [
193
+ o("tbody", null, [
194
+ o("tr", null, [
195
+ e[8] || (e[8] = o("td", { class: "font-weight-bold" }, "Job", -1)),
196
+ o("td", null, c(t.jobId), 1)
197
+ ]),
198
+ o("tr", null, [
199
+ e[9] || (e[9] = o("td", { class: "font-weight-bold" }, "State", -1)),
200
+ o("td", null, c(t.jobStatus.state), 1)
201
+ ]),
202
+ o("tr", null, [
203
+ e[10] || (e[10] = o("td", { class: "font-weight-bold" }, "Phase", -1)),
204
+ o("td", null, c(r.phaseLabel), 1)
205
+ ]),
206
+ t.jobStatus.target_version ? (u(), p("tr", $, [
207
+ e[11] || (e[11] = o("td", { class: "font-weight-bold" }, "Target Version", -1)),
208
+ o("td", null, c(t.jobStatus.target_version), 1)
209
+ ])) : b("", !0),
210
+ t.jobStatus.packets_written !== void 0 ? (u(), p("tr", ee, [
211
+ e[12] || (e[12] = o("td", { class: "font-weight-bold" }, "Packets Written", -1)),
212
+ o("td", null, c(t.jobStatus.packets_written.toLocaleString()), 1)
213
+ ])) : b("", !0),
214
+ t.jobStatus.error ? (u(), p("tr", te, [
215
+ e[13] || (e[13] = o("td", { class: "font-weight-bold text-red" }, "Error", -1)),
216
+ o("td", se, c(t.jobStatus.error), 1)
217
+ ])) : b("", !0),
218
+ t.jobStatus.warnings && t.jobStatus.warnings.length ? (u(), p("tr", ae, [
219
+ e[14] || (e[14] = o("td", { class: "font-weight-bold text-orange" }, "Warnings", -1)),
220
+ o("td", oe, [
221
+ (u(!0), p(M, null, z(t.jobStatus.warnings, (R, O) => (u(), p("div", { key: O }, c(R), 1))), 128))
222
+ ])
223
+ ])) : b("", !0)
224
+ ])
225
+ ]),
226
+ _: 1
227
+ }),
228
+ a(T, {
229
+ "model-value": r.progressPercent,
230
+ indeterminate: r.progressPercent === 0 && r.isRunning,
231
+ class: "mb-2"
232
+ }, null, 8, ["model-value", "indeterminate"])
233
+ ], 64)) : b("", !0) : (u(), p(M, { key: 1 }, [
234
+ t.loadingCandidates ? (u(), p("div", Y, [
235
+ a(S, {
236
+ indeterminate: "",
237
+ size: "24",
238
+ class: "mr-3"
239
+ }),
240
+ e[4] || (e[4] = h(" Searching bucket for raw log files that cover this gap… ", -1))
241
+ ])) : (u(), p(M, { key: 1 }, [
242
+ t.candidates.length === 0 ? (u(), p("div", Z, " No raw log files cover this gap window. Reingest is not available — the data may have been written from a source that skipped raw logging, or the logs have been deleted. ")) : (u(), p(M, { key: 1 }, [
243
+ o("div", J, c(t.candidates.length) + " raw log file(s) overlap this window. Select which to reingest: ", 1),
244
+ a(E, {
245
+ modelValue: t.selectedKeys,
246
+ "onUpdate:modelValue": e[0] || (e[0] = (R) => t.selectedKeys = R),
247
+ headers: t.candidateHeaders,
248
+ items: t.candidates,
249
+ "item-value": "key",
250
+ "show-select": "",
251
+ class: "monospace",
252
+ "items-per-page": 20,
253
+ density: "compact",
254
+ "data-test": "repair-candidates"
255
+ }, null, 8, ["modelValue", "headers", "items"]),
256
+ o("div", X, [
257
+ e[7] || (e[7] = o("div", { class: "text-subtitle-2 font-weight-bold mb-1" }, " Target Definition Version ", -1)),
258
+ a(L, {
259
+ modelValue: t.targetVersion,
260
+ "onUpdate:modelValue": e[1] || (e[1] = (R) => t.targetVersion = R),
261
+ "hide-details": "",
262
+ density: "compact",
263
+ "data-test": "repair-version"
264
+ }, {
265
+ default: n(() => [
266
+ a(x, {
267
+ value: "as_logged",
268
+ "data-test": "repair-version-as-logged"
269
+ }, {
270
+ label: n(() => [...e[5] || (e[5] = [
271
+ o("div", { style: { "padding-left": "10px" } }, [
272
+ o("div", null, "As logged (default)"),
273
+ o("div", { class: "text-caption text-medium-emphasis" }, " Decode each file with the cmd/tlm definition that was in effect when the data was originally logged. Safest for historical fidelity — preserves packet layouts as they existed at that time. "),
274
+ o("div", { class: "text-caption text-medium-emphasis mt-1" }, " If an item's type has changed since the log was written (e.g. STRING → FLOAT), QuestDB column types are kept as-is; historical values are cast to fit the current column, and any values that can't cast are stored as NULL. ")
275
+ ], -1)
276
+ ])]),
277
+ _: 1
278
+ }),
279
+ a(x, {
280
+ value: "current",
281
+ "data-test": "repair-version-current"
282
+ }, {
283
+ label: n(() => [...e[6] || (e[6] = [
284
+ o("div", { style: { "padding-left": "10px" } }, [
285
+ o("div", null, "Current"),
286
+ o("div", { class: "text-caption text-medium-emphasis" }, " Decode all files with the latest cmd/tlm definition. Choose this when the historical definition had a bug that you've since fixed, and you want the reingested data decoded with the corrected layout. ")
287
+ ], -1)
288
+ ])]),
289
+ _: 1
290
+ })
291
+ ]),
292
+ _: 1
293
+ }, 8, ["modelValue"])
294
+ ])
295
+ ], 64))
296
+ ], 64))
297
+ ], 64))
298
+ ]),
299
+ _: 1
300
+ }),
301
+ a(y, { class: "px-4 pb-4" }, {
302
+ default: n(() => [
303
+ a(g),
304
+ t.jobId ? b("", !0) : (u(), V(_, {
305
+ key: 0,
306
+ color: "warning",
307
+ variant: "elevated",
308
+ disabled: t.loadingCandidates || t.candidates.length === 0 || t.selectedKeys.length === 0,
309
+ "data-test": "repair-reingest",
310
+ onClick: r.startReingest
311
+ }, {
312
+ default: n(() => [
313
+ h(" Reingest " + c(t.selectedKeys.length), 1)
314
+ ]),
315
+ _: 1
316
+ }, 8, ["disabled", "onClick"])),
317
+ a(_, {
318
+ variant: "text",
319
+ "data-test": "repair-close",
320
+ onClick: r.attemptClose
321
+ }, {
322
+ default: n(() => [...e[15] || (e[15] = [
323
+ h(" Close ", -1)
324
+ ])]),
325
+ _: 1
326
+ }, 8, ["onClick"])
327
+ ]),
328
+ _: 1
329
+ })
330
+ ]),
331
+ _: 1
332
+ }),
333
+ a(I, {
334
+ modelValue: t.confirmCloseOpen,
335
+ "onUpdate:modelValue": e[3] || (e[3] = (R) => t.confirmCloseOpen = R),
336
+ "max-width": "500",
337
+ persistent: ""
338
+ }, {
339
+ default: n(() => [
340
+ a(C, null, {
341
+ default: n(() => [
342
+ a(f, null, {
343
+ default: n(() => [...e[16] || (e[16] = [
344
+ h("Reingest Still Running", -1)
345
+ ])]),
346
+ _: 1
347
+ }),
348
+ a(D, null, {
349
+ default: n(() => [...e[17] || (e[17] = [
350
+ h(" The reingest job is still in progress. Closing this dialog will not stop the job, but you will lose visibility into its status. Are you sure you want to close? ", -1)
351
+ ])]),
352
+ _: 1
353
+ }),
354
+ a(y, { class: "px-4 pb-4" }, {
355
+ default: n(() => [
356
+ a(g),
357
+ a(_, {
358
+ variant: "text",
359
+ "data-test": "repair-close-cancel",
360
+ onClick: e[2] || (e[2] = (R) => t.confirmCloseOpen = !1)
361
+ }, {
362
+ default: n(() => [...e[18] || (e[18] = [
363
+ h(" Keep Watching ", -1)
364
+ ])]),
365
+ _: 1
366
+ }),
367
+ a(_, {
368
+ color: "warning",
369
+ variant: "elevated",
370
+ "data-test": "repair-close-confirm",
371
+ onClick: r.confirmClose
372
+ }, {
373
+ default: n(() => [...e[19] || (e[19] = [
374
+ h(" Close Anyway ", -1)
375
+ ])]),
376
+ _: 1
377
+ }, 8, ["onClick"])
378
+ ]),
379
+ _: 1
380
+ })
381
+ ]),
382
+ _: 1
383
+ })
384
+ ]),
385
+ _: 1
386
+ }, 8, ["modelValue"])
387
+ ]),
388
+ _: 1
389
+ }, 8, ["model-value"]);
390
+ }
391
+ const le = /* @__PURE__ */ B(F, [["render", ne], ["__scopeId", "data-v-2ab87eb9"]]);
392
+ async function j(s, e, i = 3) {
393
+ for (let l = 1; l <= i; l++)
394
+ try {
395
+ let t = "/openc3-api/tsdb/exec";
396
+ return e && e !== "0" && (t += `?db_shard=${e}`), await A.post(t, {
397
+ data: s,
398
+ headers: {
399
+ Accept: "application/json",
400
+ "Content-Type": "text/plain"
401
+ }
402
+ });
403
+ } catch (t) {
404
+ const r = t.response?.data?.message || t.message || "";
405
+ if ((r.includes("PQconsumeInput") || r.includes("server closed the connection")) && l < i) {
406
+ await new Promise((k) => setTimeout(k, 1e3 * l));
407
+ continue;
408
+ }
409
+ throw t;
410
+ }
411
+ }
412
+ const ie = {
413
+ components: {
414
+ RepairGapDialog: le
415
+ },
416
+ data() {
417
+ return {
418
+ metricsRows: [],
419
+ metricsError: null,
420
+ metricsLoading: !1,
421
+ metricsGroupBy: [{ key: "target", order: "asc" }],
422
+ metricsHeaders: [
423
+ { title: "Packet", key: "packet" },
424
+ { title: "Table Name", key: "tableName" },
425
+ { title: "Partition Count", key: "partitionCount" },
426
+ { title: "Row Count", key: "rowCount" },
427
+ { title: "Disk Size", key: "diskSize" },
428
+ { title: "Actions", key: "actions", sortable: !1 }
429
+ ],
430
+ gapDialog: !1,
431
+ gapDialogTitle: "",
432
+ gapLoading: !1,
433
+ gapProgress: 0,
434
+ gapError: null,
435
+ gapSummary: null,
436
+ gapGroupResults: null,
437
+ gapHeaders: [
438
+ { title: "Gap Start", key: "start" },
439
+ { title: "Gap End", key: "end" },
440
+ { title: "Duration", key: "duration" },
441
+ { title: "Actions", key: "actions", sortable: !1, width: 80 }
442
+ ],
443
+ repairDialog: !1,
444
+ repairContext: null,
445
+ gapSampleInterval: "1m",
446
+ db_shard: "0"
447
+ };
448
+ },
449
+ computed: {
450
+ sections() {
451
+ return [
452
+ {
453
+ title: "Telemetry",
454
+ items: this.metricsRows.filter((s) => s.type === "TLM")
455
+ },
456
+ {
457
+ title: "Commands",
458
+ items: this.metricsRows.filter((s) => s.type === "CMD")
459
+ }
460
+ ];
461
+ }
462
+ },
463
+ mounted() {
464
+ this.fetchMetrics();
465
+ },
466
+ methods: {
467
+ groupRowCount(s) {
468
+ return s.reduce(
469
+ (e, i) => e + Number((i.raw || i).rowCount || 0),
470
+ 0
471
+ );
472
+ },
473
+ groupDiskSize(s) {
474
+ return s.reduce(
475
+ (e, i) => e + Number((i.raw || i).diskSize || 0),
476
+ 0
477
+ );
478
+ },
479
+ formatBytes(s) {
480
+ if (s === 0) return "0 B";
481
+ const e = ["B", "KB", "MB", "GB", "TB"], i = 1024, l = Math.floor(Math.log(s) / Math.log(i));
482
+ return `${(s / Math.pow(i, l)).toFixed(l === 0 ? 0 : 1)} ${e[l]}`;
483
+ },
484
+ fetchMetrics() {
485
+ this.metricsError = null, this.metricsRows = [], this.metricsLoading = !0, j(
486
+ "SELECT tableName, partitionCount, rowCount, diskSize FROM table_storage;",
487
+ this.db_shard
488
+ ).then((s) => {
489
+ const e = s.data.columns;
490
+ this.metricsRows = s.data.rows.map((i) => {
491
+ const l = {};
492
+ e.forEach((r, f) => {
493
+ l[r] = i[f];
494
+ });
495
+ const t = (l.tableName || "").split("__");
496
+ return l.type = t[1] || "", l.target = t[2] || "", l.packet = t[3] || "", l;
497
+ });
498
+ }).catch((s) => {
499
+ s.response && s.response.data ? this.metricsError = s.response.data.message : this.metricsError = s.message;
500
+ }).finally(() => {
501
+ this.metricsLoading = !1;
502
+ });
503
+ },
504
+ dropTable(s) {
505
+ return j(`DROP TABLE '${s}';`, this.db_shard);
506
+ },
507
+ deleteTable(s) {
508
+ let e = s.split("__")[2] || s, i = s.split("__")[3] || s;
509
+ this.$dialog.confirm(
510
+ `Are you sure you want to drop table: ${s}? This removes ALL decommutated data for ${e} ${i}!`,
511
+ {
512
+ okText: "Delete",
513
+ cancelText: "Cancel"
514
+ }
515
+ ).then(() => {
516
+ this.dropTable(s).then(() => {
517
+ this.metricsRows = this.metricsRows.filter(
518
+ (l) => l.tableName !== s
519
+ );
520
+ }).catch((l) => {
521
+ l.response && l.response.data ? this.metricsError = l.response.data.message : this.metricsError = l.message;
522
+ });
523
+ });
524
+ },
525
+ deleteGroup(s) {
526
+ const e = s.map((l) => (l.raw || l).tableName);
527
+ let i = e[0].split("__")[2];
528
+ this.$dialog.confirm(
529
+ `Are you sure you want to drop ${e.length} tables? This removes ALL decommutated data for ${i}!
530
+
531
+ ${e.join(`
532
+ `)}`,
533
+ {
534
+ okText: "Delete",
535
+ cancelText: "Cancel"
536
+ }
537
+ ).then(() => {
538
+ const l = new Set(e);
539
+ Promise.all(e.map((t) => this.dropTable(t))).then(() => {
540
+ this.metricsRows = this.metricsRows.filter(
541
+ (t) => !l.has(t.tableName)
542
+ );
543
+ }).catch((t) => {
544
+ t.response && t.response.data ? this.metricsError = t.response.data.message : this.metricsError = t.message;
545
+ });
546
+ });
547
+ },
548
+ formatDuration(s) {
549
+ const e = Math.floor(s / 1e3), i = Math.floor(e / 86400), l = Math.floor(e % 86400 / 3600), t = Math.floor(e % 3600 / 60), r = [];
550
+ return i && r.push(`${i}d`), l && r.push(`${l}h`), t && r.push(`${t}m`), r.length || r.push(`${e}s`), r.join(" ");
551
+ },
552
+ formatTimestamp(s) {
553
+ return new Date(s).toISOString().replace("T", " ").replace(".000Z", "Z");
554
+ },
555
+ // Parse a QuestDB SAMPLE BY duration like "1m", "30s", "2h" into ms.
556
+ // Returns null if malformed.
557
+ parseSampleIntervalMs(s) {
558
+ const e = String(s || "").trim().match(/^(\d+)\s*([smhd])$/i);
559
+ return e ? Number.parseInt(e[1], 10) * { s: 1e3, m: 6e4, h: 36e5, d: 864e5 }[e[2].toLowerCase()] : null;
560
+ },
561
+ async fetchTableGaps(s) {
562
+ const e = (this.gapSampleInterval || "1m").trim(), i = this.parseSampleIntervalMs(e);
563
+ if (!i)
564
+ throw new Error(
565
+ `Invalid sample interval '${e}'. Use a number followed by s, m, h, or d (e.g. 5s, 1m, 2h).`
566
+ );
567
+ const l = await j(
568
+ `SELECT first(PACKET_TIMESECONDS) as first_ts, last(PACKET_TIMESECONDS) as last_ts FROM '${s}';`,
569
+ this.db_shard
570
+ ), t = l.data.columns, r = l.data.rows[0], f = {};
571
+ t.forEach((g, _) => {
572
+ f[g] = r[_];
573
+ });
574
+ const k = f.first_ts, S = f.last_ts, E = new Date(S) - new Date(k), x = await j(
575
+ `(SELECT PACKET_TIMESECONDS, count() as cnt FROM '${s}' SAMPLE BY ${e} FILL(NULL)) WHERE cnt IS NULL`,
576
+ this.db_shard
577
+ ), L = x.data.columns, v = x.data.rows.map((g) => {
578
+ const _ = {};
579
+ return L.forEach((y, C) => {
580
+ _[y] = g[C];
581
+ }), _;
582
+ }), T = [], D = (g, _) => {
583
+ const y = new Date(g).getTime(), C = new Date(_).getTime() + i;
584
+ return {
585
+ start: this.formatTimestamp(g),
586
+ end: this.formatTimestamp(new Date(C)),
587
+ duration: this.formatDuration(C - y),
588
+ // ISO strings avoid the JS precision cliff on nsec integers.
589
+ startIso: new Date(y).toISOString(),
590
+ endIso: new Date(C).toISOString()
591
+ };
592
+ };
593
+ if (v.length > 0) {
594
+ let g = v[0].PACKET_TIMESECONDS, _ = g;
595
+ for (let y = 1; y < v.length; y++) {
596
+ const C = new Date(_);
597
+ new Date(v[y].PACKET_TIMESECONDS) - C > i && (T.push(D(g, _)), g = v[y].PACKET_TIMESECONDS), _ = v[y].PACKET_TIMESECONDS;
598
+ }
599
+ T.push(D(g, _));
600
+ }
601
+ return {
602
+ firstTs: this.formatTimestamp(k),
603
+ lastTs: this.formatTimestamp(S),
604
+ timeSpan: this.formatDuration(E),
605
+ gaps: T
606
+ };
607
+ },
608
+ async analyzeDataGap(s) {
609
+ this.gapDialogTitle = s, this.gapDialog = !0, this.gapLoading = !0, this.gapProgress = 0, this.gapError = null, this.gapSummary = null, this.gapGroupResults = null;
610
+ try {
611
+ this.gapSummary = await this.fetchTableGaps(s);
612
+ } catch (e) {
613
+ this.gapError = e.response?.data?.message || e.message;
614
+ } finally {
615
+ this.gapLoading = !1;
616
+ }
617
+ },
618
+ async analyzeGroupDataGap(s) {
619
+ const e = s.map((l) => (l.raw || l).tableName), i = (s[0].raw || s[0]).target;
620
+ this.gapDialogTitle = `${i} (${e.length} tables)`, this.gapDialog = !0, this.gapLoading = !0, this.gapProgress = 0, this.gapError = null, this.gapSummary = null, this.gapGroupResults = null;
621
+ try {
622
+ const l = [];
623
+ for (let t = 0; t < e.length; t++) {
624
+ this.gapProgress = Math.round((t + 1) / e.length * 100);
625
+ try {
626
+ const r = await this.fetchTableGaps(e[t]);
627
+ if (r.gaps.length > 0) {
628
+ const f = e[t].split("__");
629
+ l.push({
630
+ tableName: e[t],
631
+ packet: f[3] || e[t],
632
+ ...r
633
+ });
634
+ }
635
+ } catch {
636
+ }
637
+ }
638
+ this.gapGroupResults = {
639
+ totalTables: e.length,
640
+ withGaps: l
641
+ };
642
+ } catch (l) {
643
+ this.gapError = l.response?.data?.message || l.message;
644
+ } finally {
645
+ this.gapLoading = !1;
646
+ }
647
+ },
648
+ // scope__TLM|CMD__TARGET__PACKET → { scope, cmdOrTlm, target, packet }
649
+ parseTableName(s) {
650
+ const e = s.split("__");
651
+ return e.length < 4 ? null : {
652
+ scope: e[0],
653
+ cmdOrTlm: e[1],
654
+ target: e[2],
655
+ packet: e[3]
656
+ };
657
+ },
658
+ isTlmTable(s) {
659
+ return this.parseTableName(s)?.cmdOrTlm === "TLM";
660
+ },
661
+ openRepair(s, e) {
662
+ const i = this.parseTableName(e);
663
+ i && (this.repairContext = {
664
+ tableName: e,
665
+ ...i,
666
+ gap: s
667
+ }, this.repairDialog = !0);
668
+ },
669
+ onRepairComplete() {
670
+ this.gapGroupResults || this.gapDialogTitle && this.analyzeDataGap(this.gapDialogTitle);
671
+ }
672
+ }
673
+ }, re = {
674
+ key: 0,
675
+ class: "mt-2 text-red monospace"
676
+ }, de = { key: 0 }, ce = ["colspan"], ue = { class: "font-weight-bold" }, pe = { class: "ml-4 text-medium-emphasis" }, me = {
677
+ key: 1,
678
+ class: "text-red monospace mb-4"
679
+ }, ge = { key: 0 }, he = {
680
+ key: 1,
681
+ class: "text-medium-emphasis"
682
+ }, _e = {
683
+ key: 0,
684
+ class: "text-medium-emphasis"
685
+ }, fe = { key: 1 }, be = { class: "mb-4 text-medium-emphasis" }, ve = { class: "text-subtitle-1 font-weight-bold mb-1" }, ye = { class: "text-medium-emphasis monospace mb-2" };
686
+ function we(s, e, i, l, t, r) {
687
+ const f = d("v-card-title"), k = d("v-card-text"), S = d("v-btn"), E = d("v-text-field"), x = d("v-spacer"), L = d("v-card-actions"), v = d("v-icon"), T = d("v-list-item"), D = d("v-list"), g = d("v-menu"), _ = d("v-data-table"), y = d("v-card"), C = d("v-progress-linear"), I = d("v-table"), R = d("v-dialog"), O = d("repair-gap-dialog");
688
+ return u(), p("div", null, [
689
+ a(y, null, {
690
+ default: n(() => [
691
+ a(f, null, {
692
+ default: n(() => [...e[5] || (e[5] = [
693
+ h(" QuestDB Table Storage Metrics ", -1)
694
+ ])]),
695
+ _: 1
696
+ }),
697
+ a(k, null, {
698
+ default: n(() => [
699
+ t.metricsError ? (u(), p("div", re, " Error: " + c(t.metricsError), 1)) : b("", !0)
700
+ ]),
701
+ _: 1
702
+ }),
703
+ a(L, { class: "px-2" }, {
704
+ default: n(() => [
705
+ a(S, {
706
+ loading: t.metricsLoading,
707
+ color: "success",
708
+ variant: "text",
709
+ "data-test": "tsdb-metrics-refresh",
710
+ onClick: r.fetchMetrics
711
+ }, {
712
+ default: n(() => [...e[6] || (e[6] = [
713
+ h(" Refresh ", -1)
714
+ ])]),
715
+ _: 1
716
+ }, 8, ["loading", "onClick"]),
717
+ a(E, {
718
+ modelValue: t.db_shard,
719
+ "onUpdate:modelValue": e[0] || (e[0] = (m) => t.db_shard = m),
720
+ type: "number",
721
+ min: "0",
722
+ label: "DB Shard",
723
+ hint: "DB Shard is N/A in Core",
724
+ "hide-details": "",
725
+ density: "compact",
726
+ style: { "max-width": "100px" },
727
+ class: "ml-4"
728
+ }, null, 8, ["modelValue"]),
729
+ a(x),
730
+ a(E, {
731
+ modelValue: t.gapSampleInterval,
732
+ "onUpdate:modelValue": e[1] || (e[1] = (m) => t.gapSampleInterval = m),
733
+ label: "Data Gap Sample Interval",
734
+ hint: "QuestDB SAMPLE BY duration (e.g. 5s, 1m, 10m, 1h)",
735
+ "persistent-hint": "",
736
+ density: "compact",
737
+ "hide-details": "auto",
738
+ style: { "max-width": "260px" },
739
+ "data-test": "gap-sample-interval"
740
+ }, null, 8, ["modelValue"])
741
+ ]),
742
+ _: 1
743
+ }),
744
+ t.metricsRows.length ? (u(), p("div", de, [
745
+ (u(!0), p(M, null, z(r.sections, (m, P) => (u(), p(M, {
746
+ key: m.title
747
+ }, [
748
+ o("h3", {
749
+ class: Q(["text-h6 ml-2", P === 0 ? "mt-4" : "mt-6"])
750
+ }, c(m.title), 3),
751
+ a(_, {
752
+ headers: t.metricsHeaders,
753
+ items: m.items,
754
+ "group-by": t.metricsGroupBy,
755
+ class: "monospace",
756
+ "items-per-page": 50,
757
+ density: "compact"
758
+ }, {
759
+ "group-header": n(({ item: w, columns: G, toggleGroup: U, isGroupOpen: H }) => [
760
+ o("tr", null, [
761
+ o("td", {
762
+ colspan: G.length - 1
763
+ }, [
764
+ a(S, {
765
+ icon: H(w) ? "$expand" : "$next",
766
+ size: "small",
767
+ variant: "text",
768
+ onClick: (N) => U(w)
769
+ }, null, 8, ["icon", "onClick"]),
770
+ o("span", ue, c(w.value), 1),
771
+ o("span", pe, " Packets: " + c(w.items.length) + " — Rows: " + c(r.groupRowCount(w.items).toLocaleString()) + " — Disk: " + c(r.formatBytes(r.groupDiskSize(w.items))), 1)
772
+ ], 8, ce),
773
+ o("td", null, [
774
+ a(g, null, {
775
+ activator: n(({ props: N }) => [
776
+ a(v, K({ ref_for: !0 }, N, {
777
+ icon: "mdi-dots-horizontal",
778
+ "data-test": "group-actions"
779
+ }), null, 16)
780
+ ]),
781
+ default: n(() => [
782
+ a(D, null, {
783
+ default: n(() => [
784
+ a(T, {
785
+ title: "Analyze Data Gaps",
786
+ "prepend-icon": "mdi-chart-timeline-variant-shimmer",
787
+ "data-test": "group-analyze-gap",
788
+ onClick: (N) => r.analyzeGroupDataGap(w.items)
789
+ }, null, 8, ["onClick"]),
790
+ a(T, {
791
+ title: "Delete All",
792
+ "prepend-icon": "mdi-delete",
793
+ "data-test": "group-delete",
794
+ onClick: (N) => r.deleteGroup(w.items)
795
+ }, null, 8, ["onClick"])
796
+ ]),
797
+ _: 2
798
+ }, 1024)
799
+ ]),
800
+ _: 2
801
+ }, 1024)
802
+ ])
803
+ ])
804
+ ]),
805
+ "item.diskSize": n(({ item: w }) => [
806
+ h(c(r.formatBytes(w.diskSize)), 1)
807
+ ]),
808
+ "item.rowCount": n(({ item: w }) => [
809
+ h(c(Number(w.rowCount).toLocaleString()), 1)
810
+ ]),
811
+ "item.actions": n(({ item: w }) => [
812
+ a(g, null, {
813
+ activator: n(({ props: G }) => [
814
+ a(v, K({ ref_for: !0 }, G, {
815
+ icon: "mdi-dots-horizontal",
816
+ "data-test": "row-actions"
817
+ }), null, 16)
818
+ ]),
819
+ default: n(() => [
820
+ a(D, null, {
821
+ default: n(() => [
822
+ a(T, {
823
+ title: "Analyze Data Gap",
824
+ "prepend-icon": "mdi-chart-timeline-variant-shimmer",
825
+ "data-test": "row-analyze-gap",
826
+ onClick: (G) => r.analyzeDataGap(w.tableName)
827
+ }, null, 8, ["onClick"]),
828
+ a(T, {
829
+ title: "Delete",
830
+ "prepend-icon": "mdi-delete",
831
+ "data-test": "row-delete",
832
+ onClick: (G) => r.deleteTable(w.tableName)
833
+ }, null, 8, ["onClick"])
834
+ ]),
835
+ _: 2
836
+ }, 1024)
837
+ ]),
838
+ _: 2
839
+ }, 1024)
840
+ ]),
841
+ _: 1
842
+ }, 8, ["headers", "items", "group-by"])
843
+ ], 64))), 128))
844
+ ])) : b("", !0)
845
+ ]),
846
+ _: 1
847
+ }),
848
+ a(R, {
849
+ modelValue: t.gapDialog,
850
+ "onUpdate:modelValue": e[3] || (e[3] = (m) => t.gapDialog = m),
851
+ "max-width": "900"
852
+ }, {
853
+ default: n(() => [
854
+ a(y, null, {
855
+ default: n(() => [
856
+ a(f, { class: "d-flex align-center" }, {
857
+ default: n(() => [
858
+ h(" Data Gap Analysis: " + c(t.gapDialogTitle) + " ", 1),
859
+ a(x),
860
+ a(S, {
861
+ icon: "mdi-close",
862
+ variant: "text",
863
+ onClick: e[2] || (e[2] = (m) => t.gapDialog = !1)
864
+ })
865
+ ]),
866
+ _: 1
867
+ }),
868
+ a(k, { style: { "max-height": "80vh", "overflow-y": "auto" } }, {
869
+ default: n(() => [
870
+ t.gapLoading ? (u(), V(C, {
871
+ key: 0,
872
+ "model-value": t.gapProgress,
873
+ indeterminate: t.gapProgress === 0,
874
+ class: "mb-4"
875
+ }, null, 8, ["model-value", "indeterminate"])) : b("", !0),
876
+ t.gapError ? (u(), p("div", me, " Error: " + c(t.gapError), 1)) : b("", !0),
877
+ !t.gapLoading && !t.gapError && t.gapSummary ? (u(), p(M, { key: 2 }, [
878
+ a(I, {
879
+ density: "compact",
880
+ class: "monospace mb-4"
881
+ }, {
882
+ default: n(() => [
883
+ o("tbody", null, [
884
+ o("tr", null, [
885
+ e[7] || (e[7] = o("td", { class: "font-weight-bold" }, "First Record", -1)),
886
+ o("td", null, c(t.gapSummary.firstTs), 1)
887
+ ]),
888
+ o("tr", null, [
889
+ e[8] || (e[8] = o("td", { class: "font-weight-bold" }, "Last Record", -1)),
890
+ o("td", null, c(t.gapSummary.lastTs), 1)
891
+ ]),
892
+ o("tr", null, [
893
+ e[9] || (e[9] = o("td", { class: "font-weight-bold" }, "Total Time Span", -1)),
894
+ o("td", null, c(t.gapSummary.timeSpan), 1)
895
+ ]),
896
+ o("tr", null, [
897
+ e[10] || (e[10] = o("td", { class: "font-weight-bold" }, "Gaps Found", -1)),
898
+ o("td", null, c(t.gapSummary.gaps.length), 1)
899
+ ])
900
+ ])
901
+ ]),
902
+ _: 1
903
+ }),
904
+ t.gapSummary.gaps.length ? (u(), p("div", ge, [
905
+ e[11] || (e[11] = o("h4", { class: "text-subtitle-1 font-weight-bold mb-2" }, " Data Gaps (periods with no data) ", -1)),
906
+ a(_, {
907
+ headers: t.gapHeaders,
908
+ items: t.gapSummary.gaps,
909
+ class: "monospace",
910
+ "items-per-page": 20,
911
+ density: "compact"
912
+ }, {
913
+ "item.actions": n(({ item: m }) => [
914
+ r.isTlmTable(t.gapDialogTitle) ? (u(), V(S, {
915
+ key: 0,
916
+ icon: "mdi-wrench",
917
+ size: "small",
918
+ variant: "text",
919
+ "data-test": "gap-repair",
920
+ title: "Repair (reingest raw logs)",
921
+ onClick: (P) => r.openRepair(m, t.gapDialogTitle)
922
+ }, null, 8, ["onClick"])) : b("", !0)
923
+ ]),
924
+ _: 1
925
+ }, 8, ["headers", "items"])
926
+ ])) : (u(), p("div", he, " No data gaps detected (sampled at " + c(t.gapSampleInterval) + " intervals). ", 1))
927
+ ], 64)) : b("", !0),
928
+ !t.gapLoading && !t.gapError && t.gapGroupResults ? (u(), p(M, { key: 3 }, [
929
+ t.gapGroupResults.withGaps.length === 0 ? (u(), p("div", _e, " No data gaps detected across " + c(t.gapGroupResults.totalTables) + " tables (sampled at " + c(t.gapSampleInterval) + " intervals). ", 1)) : (u(), p("div", fe, [
930
+ o("div", be, c(t.gapGroupResults.withGaps.length) + " of " + c(t.gapGroupResults.totalTables) + " tables have data gaps. ", 1),
931
+ (u(!0), p(M, null, z(t.gapGroupResults.withGaps, (m) => (u(), p("div", {
932
+ key: m.tableName,
933
+ class: "mb-6"
934
+ }, [
935
+ o("h4", ve, c(m.packet), 1),
936
+ o("div", ye, c(m.firstTs) + " to " + c(m.lastTs) + " (" + c(m.timeSpan) + ") — " + c(m.gaps.length) + " gap(s) ", 1),
937
+ a(_, {
938
+ headers: t.gapHeaders,
939
+ items: m.gaps,
940
+ class: "monospace",
941
+ "items-per-page": 10,
942
+ density: "compact"
943
+ }, {
944
+ "item.actions": n(({ item: P }) => [
945
+ r.isTlmTable(m.tableName) ? (u(), V(S, {
946
+ key: 0,
947
+ icon: "mdi-wrench",
948
+ size: "small",
949
+ variant: "text",
950
+ "data-test": "gap-repair",
951
+ title: "Repair (reingest raw logs)",
952
+ onClick: (w) => r.openRepair(P, m.tableName)
953
+ }, null, 8, ["onClick"])) : b("", !0)
954
+ ]),
955
+ _: 2
956
+ }, 1032, ["headers", "items"])
957
+ ]))), 128))
958
+ ]))
959
+ ], 64)) : b("", !0)
960
+ ]),
961
+ _: 1
962
+ })
963
+ ]),
964
+ _: 1
965
+ })
966
+ ]),
967
+ _: 1
968
+ }, 8, ["modelValue"]),
969
+ t.repairContext ? (u(), V(O, {
970
+ key: 0,
971
+ modelValue: t.repairDialog,
972
+ "onUpdate:modelValue": e[4] || (e[4] = (m) => t.repairDialog = m),
973
+ context: t.repairContext,
974
+ onComplete: r.onRepairComplete
975
+ }, null, 8, ["modelValue", "context", "onComplete"])) : b("", !0)
976
+ ]);
977
+ }
978
+ const Se = /* @__PURE__ */ B(ie, [["render", we], ["__scopeId", "data-v-25188e19"]]), ke = {
979
+ data() {
980
+ return {
981
+ sqlText: "",
982
+ db_shard: "0",
983
+ columns: [],
984
+ rows: [],
985
+ errorMessage: null,
986
+ loading: !1
987
+ };
988
+ },
989
+ computed: {
990
+ tableHeaders() {
991
+ return this.columns.map((s) => ({
992
+ title: s,
993
+ key: s
994
+ }));
995
+ }
996
+ },
997
+ methods: {
998
+ commandKeydown(s) {
999
+ (s.metaKey || s.ctrlKey) && s.key === "Enter" && this.executeQuery();
1000
+ },
1001
+ executeQuery() {
1002
+ this.errorMessage = null, this.columns = [], this.rows = [], this.loading = !0, j(this.sqlText, this.db_shard).then((s) => {
1003
+ this.columns = s.data.columns, this.rows = s.data.rows.map((e) => {
1004
+ const i = {};
1005
+ return this.columns.forEach((l, t) => {
1006
+ i[l] = e[t];
1007
+ }), i;
1008
+ });
1009
+ }).catch((s) => {
1010
+ s.response && s.response.data ? this.errorMessage = s.response.data.message : this.errorMessage = s.message;
1011
+ }).finally(() => {
1012
+ this.loading = !1;
1013
+ });
1014
+ }
1015
+ }
1016
+ }, xe = {
1017
+ key: 0,
1018
+ class: "mt-2 text-red monospace"
1019
+ };
1020
+ function Te(s, e, i, l, t, r) {
1021
+ const f = d("v-card-title"), k = d("v-card-subtitle"), S = d("v-textarea"), E = d("v-card-text"), x = d("v-btn"), L = d("v-text-field"), v = d("v-card-actions"), T = d("v-data-table"), D = d("v-card");
1022
+ return u(), V(D, null, {
1023
+ default: n(() => [
1024
+ a(f, null, {
1025
+ default: n(() => [...e[2] || (e[2] = [
1026
+ h(" Send SQL Queries to QuestDB ", -1)
1027
+ ])]),
1028
+ _: 1
1029
+ }),
1030
+ a(k, null, {
1031
+ default: n(() => [...e[3] || (e[3] = [
1032
+ h(" THIS IS DANGEROUS! This allows you to interact directly with the underlying QuestDB time series database, making it easy to modify or delete data. ", -1),
1033
+ o("br", null, null, -1),
1034
+ o("br", null, null, -1),
1035
+ h(" Enter SQL queries like: ", -1),
1036
+ o("code", null, " SELECT * FROM DEFAULT__TLM__INST__HEALTH_STATUS LIMIT 10 ", -1),
1037
+ h(" or ", -1),
1038
+ o("code", null, "SHOW TABLES", -1)
1039
+ ])]),
1040
+ _: 1
1041
+ }),
1042
+ a(E, { class: "pb-0 ml-2" }, {
1043
+ default: n(() => [
1044
+ a(S, {
1045
+ modelValue: t.sqlText,
1046
+ "onUpdate:modelValue": e[0] || (e[0] = (g) => t.sqlText = g),
1047
+ "hide-details": "",
1048
+ label: "SQL query",
1049
+ class: "monospace",
1050
+ rows: "3",
1051
+ onKeydown: r.commandKeydown
1052
+ }, null, 8, ["modelValue", "onKeydown"]),
1053
+ t.errorMessage ? (u(), p("div", xe, " Error: " + c(t.errorMessage), 1)) : b("", !0)
1054
+ ]),
1055
+ _: 1
1056
+ }),
1057
+ a(v, { class: "px-2" }, {
1058
+ default: n(() => [
1059
+ a(x, {
1060
+ disabled: !t.sqlText.length,
1061
+ loading: t.loading,
1062
+ color: "success",
1063
+ variant: "text",
1064
+ "data-test": "tsdb-execute",
1065
+ onClick: r.executeQuery
1066
+ }, {
1067
+ default: n(() => [...e[4] || (e[4] = [
1068
+ h(" Execute ", -1)
1069
+ ])]),
1070
+ _: 1
1071
+ }, 8, ["disabled", "loading", "onClick"]),
1072
+ a(L, {
1073
+ modelValue: t.db_shard,
1074
+ "onUpdate:modelValue": e[1] || (e[1] = (g) => t.db_shard = g),
1075
+ type: "number",
1076
+ min: "0",
1077
+ label: "DB Shard",
1078
+ "hide-details": "",
1079
+ density: "compact",
1080
+ style: { "max-width": "100px" },
1081
+ class: "ml-4"
1082
+ }, null, 8, ["modelValue"])
1083
+ ]),
1084
+ _: 1
1085
+ }),
1086
+ t.columns.length ? (u(), V(T, {
1087
+ key: 0,
1088
+ headers: r.tableHeaders,
1089
+ items: t.rows,
1090
+ class: "monospace",
1091
+ "items-per-page": 50,
1092
+ density: "compact"
1093
+ }, null, 8, ["headers", "items"])) : b("", !0)
1094
+ ]),
1095
+ _: 1
1096
+ });
1097
+ }
1098
+ const Ce = /* @__PURE__ */ B(ke, [["render", Te], ["__scopeId", "data-v-4c0d0a5c"]]), Ee = {
1099
+ components: {
1100
+ TsdbMetrics: Se,
1101
+ TsdbQueries: Ce
1102
+ },
1103
+ data() {
1104
+ return {
1105
+ activeTab: "metrics"
1106
+ };
1107
+ }
1108
+ };
1109
+ function De(s, e, i, l, t, r) {
1110
+ const f = d("v-tab"), k = d("v-tabs"), S = d("tsdb-metrics"), E = d("v-window-item"), x = d("tsdb-queries"), L = d("v-window");
1111
+ return u(), p("div", null, [
1112
+ a(k, {
1113
+ modelValue: t.activeTab,
1114
+ "onUpdate:modelValue": e[0] || (e[0] = (v) => t.activeTab = v)
1115
+ }, {
1116
+ default: n(() => [
1117
+ a(f, {
1118
+ value: "metrics",
1119
+ "data-test": "tsdb-metrics-tab"
1120
+ }, {
1121
+ default: n(() => [...e[2] || (e[2] = [
1122
+ h("Metrics", -1)
1123
+ ])]),
1124
+ _: 1
1125
+ }),
1126
+ a(f, {
1127
+ value: "queries",
1128
+ "data-test": "tsdb-queries-tab"
1129
+ }, {
1130
+ default: n(() => [...e[3] || (e[3] = [
1131
+ h("Queries", -1)
1132
+ ])]),
1133
+ _: 1
1134
+ })
1135
+ ]),
1136
+ _: 1
1137
+ }, 8, ["modelValue"]),
1138
+ a(L, {
1139
+ modelValue: t.activeTab,
1140
+ "onUpdate:modelValue": e[1] || (e[1] = (v) => t.activeTab = v)
1141
+ }, {
1142
+ default: n(() => [
1143
+ a(E, { value: "metrics" }, {
1144
+ default: n(() => [
1145
+ a(S)
1146
+ ]),
1147
+ _: 1
1148
+ }),
1149
+ a(E, { value: "queries" }, {
1150
+ default: n(() => [
1151
+ a(x)
1152
+ ]),
1153
+ _: 1
1154
+ })
1155
+ ]),
1156
+ _: 1
1157
+ }, 8, ["modelValue"])
1158
+ ]);
1159
+ }
1160
+ const Ve = /* @__PURE__ */ B(Ee, [["render", De]]);
1161
+ export {
1162
+ Ve as default
1163
+ };
1164
+ //# sourceMappingURL=TsdbTab-Cv8GjpoJ.js.map