@perses-dev/table-plugin 0.11.2 → 0.13.0-beta.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 (223) hide show
  1. package/__mf/css/async/362.85c2cbf6.css +1 -0
  2. package/__mf/font/inter-cyrillic-300-normal.432f2b21.woff +0 -0
  3. package/__mf/font/inter-cyrillic-300-normal.9da91009.woff2 +0 -0
  4. package/__mf/font/inter-cyrillic-400-normal.372704ff.woff2 +0 -0
  5. package/__mf/font/inter-cyrillic-400-normal.a6b6ef6f.woff +0 -0
  6. package/__mf/font/inter-cyrillic-500-normal.7c15bba8.woff2 +0 -0
  7. package/__mf/font/inter-cyrillic-500-normal.b9f8c929.woff +0 -0
  8. package/__mf/font/inter-cyrillic-600-normal.2f42892a.woff2 +0 -0
  9. package/__mf/font/inter-cyrillic-600-normal.c3987adc.woff +0 -0
  10. package/__mf/font/inter-cyrillic-700-normal.93eba3c3.woff +0 -0
  11. package/__mf/font/inter-cyrillic-700-normal.e9e5b2dc.woff2 +0 -0
  12. package/__mf/font/inter-cyrillic-900-normal.f285bd7a.woff2 +0 -0
  13. package/__mf/font/inter-cyrillic-900-normal.ffbd8a3a.woff +0 -0
  14. package/__mf/font/inter-cyrillic-ext-300-normal.95bb9038.woff2 +0 -0
  15. package/__mf/font/inter-cyrillic-ext-300-normal.cfc143a9.woff +0 -0
  16. package/__mf/font/inter-cyrillic-ext-400-normal.2a31c04b.woff +0 -0
  17. package/__mf/font/inter-cyrillic-ext-400-normal.f572b170.woff2 +0 -0
  18. package/__mf/font/inter-cyrillic-ext-500-normal.5a6bb1da.woff +0 -0
  19. package/__mf/font/inter-cyrillic-ext-500-normal.fe0d9b14.woff2 +0 -0
  20. package/__mf/font/inter-cyrillic-ext-600-normal.ecbdecad.woff +0 -0
  21. package/__mf/font/inter-cyrillic-ext-600-normal.f7b3c15b.woff2 +0 -0
  22. package/__mf/font/inter-cyrillic-ext-700-normal.4b4022a6.woff +0 -0
  23. package/__mf/font/inter-cyrillic-ext-700-normal.74b516d2.woff2 +0 -0
  24. package/__mf/font/inter-cyrillic-ext-900-normal.9970ddb5.woff +0 -0
  25. package/__mf/font/inter-cyrillic-ext-900-normal.a0d59adc.woff2 +0 -0
  26. package/__mf/font/inter-greek-300-normal.0d7be683.woff2 +0 -0
  27. package/__mf/font/inter-greek-300-normal.8f0b988e.woff +0 -0
  28. package/__mf/font/inter-greek-400-normal.cc58c11b.woff +0 -0
  29. package/__mf/font/inter-greek-400-normal.d7020e3c.woff2 +0 -0
  30. package/__mf/font/inter-greek-500-normal.d9a33207.woff +0 -0
  31. package/__mf/font/inter-greek-500-normal.f41f43db.woff2 +0 -0
  32. package/__mf/font/inter-greek-600-normal.4ec0c1c1.woff +0 -0
  33. package/__mf/font/inter-greek-600-normal.cc532937.woff2 +0 -0
  34. package/__mf/font/inter-greek-700-normal.5ec6c758.woff +0 -0
  35. package/__mf/font/inter-greek-700-normal.97f0eeeb.woff2 +0 -0
  36. package/__mf/font/inter-greek-900-normal.46b66369.woff2 +0 -0
  37. package/__mf/font/inter-greek-900-normal.9ae3a3c5.woff +0 -0
  38. package/__mf/font/inter-greek-ext-300-normal.10247a66.woff2 +0 -0
  39. package/__mf/font/inter-greek-ext-300-normal.4668e5cb.woff +0 -0
  40. package/__mf/font/inter-greek-ext-400-normal.4ce1df5d.woff2 +0 -0
  41. package/__mf/font/inter-greek-ext-400-normal.88ede1ea.woff +0 -0
  42. package/__mf/font/inter-greek-ext-500-normal.7a4aa726.woff +0 -0
  43. package/__mf/font/inter-greek-ext-500-normal.cbd51e2d.woff2 +0 -0
  44. package/__mf/font/inter-greek-ext-600-normal.089a95ee.woff +0 -0
  45. package/__mf/font/inter-greek-ext-600-normal.1f33d317.woff2 +0 -0
  46. package/__mf/font/inter-greek-ext-700-normal.31f1075d.woff +0 -0
  47. package/__mf/font/inter-greek-ext-700-normal.827cd618.woff2 +0 -0
  48. package/__mf/font/inter-greek-ext-900-normal.531bcee7.woff +0 -0
  49. package/__mf/font/inter-greek-ext-900-normal.8a9b36b9.woff2 +0 -0
  50. package/__mf/font/inter-latin-300-normal.15fb600d.woff2 +0 -0
  51. package/__mf/font/inter-latin-300-normal.6f95f590.woff +0 -0
  52. package/__mf/font/inter-latin-400-normal.2c7a775c.woff +0 -0
  53. package/__mf/font/inter-latin-400-normal.ef6d3f52.woff2 +0 -0
  54. package/__mf/font/inter-latin-500-normal.b7b43ace.woff2 +0 -0
  55. package/__mf/font/inter-latin-500-normal.cb4c8ceb.woff +0 -0
  56. package/__mf/font/inter-latin-600-normal.8fb1a964.woff2 +0 -0
  57. package/__mf/font/inter-latin-600-normal.ce0f5f43.woff +0 -0
  58. package/__mf/font/inter-latin-700-normal.953b7aa5.woff2 +0 -0
  59. package/__mf/font/inter-latin-700-normal.9c21d4dc.woff +0 -0
  60. package/__mf/font/inter-latin-900-normal.2a8028ec.woff2 +0 -0
  61. package/__mf/font/inter-latin-900-normal.fa252135.woff +0 -0
  62. package/__mf/font/inter-latin-ext-300-normal.167cc8c9.woff2 +0 -0
  63. package/__mf/font/inter-latin-ext-300-normal.f695be66.woff +0 -0
  64. package/__mf/font/inter-latin-ext-400-normal.32a25442.woff2 +0 -0
  65. package/__mf/font/inter-latin-ext-400-normal.4edcaace.woff +0 -0
  66. package/__mf/font/inter-latin-ext-500-normal.a19a84a6.woff +0 -0
  67. package/__mf/font/inter-latin-ext-500-normal.d9b491de.woff2 +0 -0
  68. package/__mf/font/inter-latin-ext-600-normal.38b075d8.woff2 +0 -0
  69. package/__mf/font/inter-latin-ext-600-normal.49faa47a.woff +0 -0
  70. package/__mf/font/inter-latin-ext-700-normal.93534b50.woff +0 -0
  71. package/__mf/font/inter-latin-ext-700-normal.b63daa1a.woff2 +0 -0
  72. package/__mf/font/inter-latin-ext-900-normal.0efdb307.woff +0 -0
  73. package/__mf/font/inter-latin-ext-900-normal.9c0fc2c7.woff2 +0 -0
  74. package/__mf/font/inter-vietnamese-300-normal.aad496d8.woff +0 -0
  75. package/__mf/font/inter-vietnamese-300-normal.ad9ef503.woff2 +0 -0
  76. package/__mf/font/inter-vietnamese-400-normal.a9dd2faf.woff +0 -0
  77. package/__mf/font/inter-vietnamese-400-normal.de4fc44f.woff2 +0 -0
  78. package/__mf/font/inter-vietnamese-500-normal.7c0a695f.woff2 +0 -0
  79. package/__mf/font/inter-vietnamese-500-normal.a3a73b95.woff +0 -0
  80. package/__mf/font/inter-vietnamese-600-normal.9d518599.woff2 +0 -0
  81. package/__mf/font/inter-vietnamese-600-normal.c5ce3fcb.woff +0 -0
  82. package/__mf/font/inter-vietnamese-700-normal.bc68b199.woff +0 -0
  83. package/__mf/font/inter-vietnamese-700-normal.faf12809.woff2 +0 -0
  84. package/__mf/font/inter-vietnamese-900-normal.2b782045.woff +0 -0
  85. package/__mf/font/inter-vietnamese-900-normal.e639b65a.woff2 +0 -0
  86. package/__mf/js/Table.216368cb.js +7 -0
  87. package/__mf/js/async/1432.47ca9bc7.js +1 -0
  88. package/__mf/js/async/1616.29b0085e.js +1 -0
  89. package/__mf/js/async/2043.0b0ffaef.js +2 -0
  90. package/__mf/js/async/2082.c0b3db38.js +1 -0
  91. package/__mf/js/async/2842.cee1ed42.js +1 -0
  92. package/__mf/js/async/339.db885c93.js +1 -0
  93. package/__mf/js/async/3613.83b242dc.js +22 -0
  94. package/__mf/js/async/362.4a21f6da.js +7 -0
  95. package/__mf/js/async/{550.8bab52fc.js.LICENSE.txt → 362.4a21f6da.js.LICENSE.txt} +19 -1
  96. package/__mf/js/async/392.eef36bcd.js +2 -0
  97. package/__mf/js/async/4121.403fdade.js +2 -0
  98. package/__mf/js/async/4320.5cbfbd1c.js +1 -0
  99. package/__mf/js/async/5002.fd6ad994.js +1 -0
  100. package/__mf/js/async/5071.1684b9fd.js +1 -0
  101. package/__mf/js/async/5587.966d92d2.js +1 -0
  102. package/__mf/js/async/6274.71776a1d.js +2 -0
  103. package/__mf/js/async/6811.6a011de7.js +38 -0
  104. package/__mf/js/async/7177.f0c1cf85.js +1 -0
  105. package/__mf/js/async/7192.f9d57dbb.js +1 -0
  106. package/__mf/js/async/7413.a78d135c.js +1 -0
  107. package/__mf/js/async/7862.de8ef786.js +2 -0
  108. package/__mf/js/async/7968.545aab42.js +1 -0
  109. package/__mf/js/async/7978.61f7fc2d.js +1 -0
  110. package/__mf/js/async/8002.0a3e62a4.js +3 -0
  111. package/__mf/js/async/8356.7a060c2c.js +1 -0
  112. package/__mf/js/async/8470.dac32d6a.js +2 -0
  113. package/__mf/js/async/868.a08b9f5f.js +110 -0
  114. package/__mf/js/async/{868.9f710584.js.LICENSE.txt → 868.a08b9f5f.js.LICENSE.txt} +1 -1
  115. package/__mf/js/async/873.bb80627c.js +1 -0
  116. package/__mf/js/async/9051.2db4f8e5.js +1 -0
  117. package/__mf/js/async/9235.35b8884a.js +1 -0
  118. package/__mf/js/async/941.97799379.js +2 -0
  119. package/__mf/js/async/9546.f3c1cf02.js +2 -0
  120. package/__mf/js/async/{1117.b21b0ae4.js.LICENSE.txt → 9546.f3c1cf02.js.LICENSE.txt} +1 -1
  121. package/__mf/js/async/9588.178c0b3f.js +1 -0
  122. package/__mf/js/async/9701.4ae63d2f.js +1 -0
  123. package/__mf/js/async/__federation_expose_Table.a4d61f93.js +1 -0
  124. package/__mf/js/async/lib-router.5fad6e02.js +2 -0
  125. package/__mf/js/async/{lib-router.2e1dec85.js.LICENSE.txt → lib-router.5fad6e02.js.LICENSE.txt} +3 -3
  126. package/__mf/js/main.db87300f.js +7 -0
  127. package/lib/TableExportAction.d.ts +1 -1
  128. package/lib/TableExportAction.d.ts.map +1 -1
  129. package/lib/TableExportAction.js +1 -2
  130. package/lib/TableExportAction.js.map +1 -1
  131. package/lib/cjs/TableExportAction.js +1 -2
  132. package/lib/cjs/components/ColumnsEditor/ColumnEditor.js +60 -22
  133. package/lib/cjs/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js +124 -0
  134. package/lib/cjs/components/TablePanel.js +243 -21
  135. package/lib/cjs/models/table-model.js +32 -6
  136. package/lib/components/ColumnsEditor/ColumnEditor.d.ts.map +1 -1
  137. package/lib/components/ColumnsEditor/ColumnEditor.js +61 -23
  138. package/lib/components/ColumnsEditor/ColumnEditor.js.map +1 -1
  139. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.d.ts +13 -0
  140. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.d.ts.map +1 -0
  141. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js +114 -0
  142. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js.map +1 -0
  143. package/lib/components/EmbeddedPanel.d.ts +1 -1
  144. package/lib/components/EmbeddedPanel.d.ts.map +1 -1
  145. package/lib/components/EmbeddedPanel.js.map +1 -1
  146. package/lib/components/TablePanel.d.ts +1 -1
  147. package/lib/components/TablePanel.d.ts.map +1 -1
  148. package/lib/components/TablePanel.js +243 -21
  149. package/lib/components/TablePanel.js.map +1 -1
  150. package/lib/components/TableTransformsEditor.d.ts.map +1 -1
  151. package/lib/components/TableTransformsEditor.js.map +1 -1
  152. package/lib/models/table-model.d.ts +2 -2
  153. package/lib/models/table-model.d.ts.map +1 -1
  154. package/lib/models/table-model.js +32 -6
  155. package/lib/models/table-model.js.map +1 -1
  156. package/lib/table-data-utils.d.ts +1 -1
  157. package/lib/table-data-utils.d.ts.map +1 -1
  158. package/lib/table-data-utils.js.map +1 -1
  159. package/lib/test/mock-query-results.d.ts +1 -1
  160. package/lib/test/mock-query-results.js.map +1 -1
  161. package/mf-manifest.json +91 -75
  162. package/mf-stats.json +106 -78
  163. package/package.json +6 -5
  164. package/__mf/css/async/3061.d3010b86.css +0 -1
  165. package/__mf/css/async/5442.d3010b86.css +0 -1
  166. package/__mf/css/async/7823.d3010b86.css +0 -1
  167. package/__mf/font/lato-all-300-normal.322bdf14.woff +0 -0
  168. package/__mf/font/lato-all-400-normal.63513b00.woff +0 -0
  169. package/__mf/font/lato-all-700-normal.bb27db94.woff +0 -0
  170. package/__mf/font/lato-all-900-normal.a27049a3.woff +0 -0
  171. package/__mf/font/lato-latin-300-normal.c5195215.woff2 +0 -0
  172. package/__mf/font/lato-latin-400-normal.b7ffde23.woff2 +0 -0
  173. package/__mf/font/lato-latin-700-normal.d5eb20bc.woff2 +0 -0
  174. package/__mf/font/lato-latin-900-normal.d884a71c.woff2 +0 -0
  175. package/__mf/font/lato-latin-ext-300-normal.abcc64a9.woff2 +0 -0
  176. package/__mf/font/lato-latin-ext-400-normal.6ebed106.woff2 +0 -0
  177. package/__mf/font/lato-latin-ext-700-normal.8697d1d5.woff2 +0 -0
  178. package/__mf/font/lato-latin-ext-900-normal.20a2b415.woff2 +0 -0
  179. package/__mf/js/Table.e34e0ae1.js +0 -6
  180. package/__mf/js/async/1103.ffbc2bec.js +0 -1
  181. package/__mf/js/async/1117.b21b0ae4.js +0 -2
  182. package/__mf/js/async/1432.acd0ad59.js +0 -1
  183. package/__mf/js/async/1616.7a74f4ef.js +0 -1
  184. package/__mf/js/async/2043.fdebf89c.js +0 -2
  185. package/__mf/js/async/208.2b17c08c.js +0 -3
  186. package/__mf/js/async/2082.78532c3c.js +0 -1
  187. package/__mf/js/async/272.3bc7825c.js +0 -1
  188. package/__mf/js/async/392.49e51fc5.js +0 -2
  189. package/__mf/js/async/4121.8e97ef88.js +0 -2
  190. package/__mf/js/async/5002.3189d214.js +0 -1
  191. package/__mf/js/async/5019.5318688a.js +0 -1
  192. package/__mf/js/async/5071.91e1c002.js +0 -1
  193. package/__mf/js/async/54.8b007a26.js +0 -22
  194. package/__mf/js/async/550.8bab52fc.js +0 -7
  195. package/__mf/js/async/5587.f5f2b0cc.js +0 -1
  196. package/__mf/js/async/6274.14683c28.js +0 -2
  197. package/__mf/js/async/6283.e044c368.js +0 -2
  198. package/__mf/js/async/6753.032ce611.js +0 -1
  199. package/__mf/js/async/6811.4e18bc66.js +0 -38
  200. package/__mf/js/async/7177.356298ae.js +0 -1
  201. package/__mf/js/async/7192.66c9e3a5.js +0 -1
  202. package/__mf/js/async/7968.a66bfadb.js +0 -1
  203. package/__mf/js/async/7978.a19f5a4f.js +0 -1
  204. package/__mf/js/async/8356.8ae40b6a.js +0 -1
  205. package/__mf/js/async/8470.1b8b20ff.js +0 -2
  206. package/__mf/js/async/868.9f710584.js +0 -110
  207. package/__mf/js/async/873.a7310675.js +0 -1
  208. package/__mf/js/async/9051.e3054e02.js +0 -1
  209. package/__mf/js/async/9235.eee50e10.js +0 -1
  210. package/__mf/js/async/941.333875f4.js +0 -2
  211. package/__mf/js/async/9588.7b021071.js +0 -1
  212. package/__mf/js/async/9701.3b068d23.js +0 -1
  213. package/__mf/js/async/__federation_expose_Table.894a962f.js +0 -1
  214. package/__mf/js/async/lib-router.2e1dec85.js +0 -2
  215. package/__mf/js/main.5b8b137b.js +0 -6
  216. /package/__mf/js/async/{2043.fdebf89c.js.LICENSE.txt → 2043.0b0ffaef.js.LICENSE.txt} +0 -0
  217. /package/__mf/js/async/{54.8b007a26.js.LICENSE.txt → 3613.83b242dc.js.LICENSE.txt} +0 -0
  218. /package/__mf/js/async/{392.49e51fc5.js.LICENSE.txt → 392.eef36bcd.js.LICENSE.txt} +0 -0
  219. /package/__mf/js/async/{4121.8e97ef88.js.LICENSE.txt → 4121.403fdade.js.LICENSE.txt} +0 -0
  220. /package/__mf/js/async/{6274.14683c28.js.LICENSE.txt → 6274.71776a1d.js.LICENSE.txt} +0 -0
  221. /package/__mf/js/async/{6283.e044c368.js.LICENSE.txt → 7862.de8ef786.js.LICENSE.txt} +0 -0
  222. /package/__mf/js/async/{8470.1b8b20ff.js.LICENSE.txt → 8470.dac32d6a.js.LICENSE.txt} +0 -0
  223. /package/__mf/js/async/{941.333875f4.js.LICENSE.txt → 941.97799379.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"table-model.d.ts","sourceRoot":"","sources":["../../../src/models/table-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-model.d.ts","sourceRoot":"","sources":["../../../src/models/table-model.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,14 @@ import { TextField, Stack, MenuItem, Typography } from '@mui/material';
20
20
  enableFiltering: true
21
21
  };
22
22
  }
23
+ function parseRangeBound(rawValue) {
24
+ const trimmed = rawValue.trim();
25
+ if (trimmed === '') {
26
+ return undefined;
27
+ }
28
+ const parsed = Number(trimmed);
29
+ return Number.isNaN(parsed) ? undefined : parsed;
30
+ }
23
31
  /**
24
32
  * Formats the display text and colors based on cell settings
25
33
  */ export function formatCellDisplay(value, setting, defaultText) {
@@ -132,13 +140,22 @@ import { TextField, Stack, MenuItem, Typography } from '@mui/material';
132
140
  label: 'From',
133
141
  placeholder: 'Start of range',
134
142
  value: condition.spec?.min ?? '',
135
- onChange: (e)=>onChange({
143
+ onChange: (e)=>{
144
+ const nextMin = parseRangeBound(e.target.value);
145
+ onChange({
136
146
  ...condition,
137
147
  spec: {
138
148
  ...condition.spec,
139
- min: +e.target.value
149
+ min: nextMin
140
150
  }
141
- }),
151
+ });
152
+ },
153
+ type: 'number',
154
+ slotProps: {
155
+ htmlInput: {
156
+ step: 'any'
157
+ }
158
+ },
142
159
  fullWidth: true,
143
160
  size: size
144
161
  }),
@@ -147,13 +164,22 @@ import { TextField, Stack, MenuItem, Typography } from '@mui/material';
147
164
  label: 'To',
148
165
  placeholder: 'End of range (inclusive)',
149
166
  value: condition.spec?.max ?? '',
150
- onChange: (e)=>onChange({
167
+ onChange: (e)=>{
168
+ const nextMax = parseRangeBound(e.target.value);
169
+ onChange({
151
170
  ...condition,
152
171
  spec: {
153
172
  ...condition.spec,
154
- max: +e.target.value
173
+ max: nextMax
155
174
  }
156
- }),
175
+ });
176
+ },
177
+ type: 'number',
178
+ slotProps: {
179
+ htmlInput: {
180
+ step: 'any'
181
+ }
182
+ },
157
183
  fullWidth: true,
158
184
  size: size
159
185
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/table-model.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Definition, FormatOptions, Transform, UnknownSpec } from '@perses-dev/core';\nimport { TableDensity, TableCellConfig } from '@perses-dev/components';\nimport { ActionOptions, OptionsEditorProps, SelectionOptions } from '@perses-dev/plugin-system';\nimport React from 'react';\nimport { TextField, Stack, MenuItem, Typography } from '@mui/material';\n\nexport interface ColumnSettings {\n name: string;\n\n // Text to display in the header for the column.\n header?: string;\n /**\n * Text to display when hovering over the header text. This can be useful for\n * providing additional information about the column when you want to keep the\n * header text relatively short to manage the column width.\n */\n headerDescription?: string;\n /**\n * Text to display when hovering over a cell. This can be useful for\n * providing additional information about the column when the content is\n * ellipsized to fit in the space.\n */\n cellDescription?: string;\n\n /**\n * Panel plugin to render.\n * By default, the cells are rendered as text.\n */\n plugin?: Definition<UnknownSpec>;\n\n /** Formatting options. Only applicable if plugin is unset. */\n format?: FormatOptions;\n\n // Alignment of the content in the cell.\n align?: 'left' | 'center' | 'right';\n\n // When `true`, the column will be sortable.\n enableSorting?: boolean;\n\n // Default sort order for the column.\n sort?: 'asc' | 'desc';\n\n /**\n * Width of the column when rendered in a table. It should be a number in pixels\n * or \"auto\" to allow the table to automatically adjust the width to fill\n * space.\n */\n width?: number | 'auto';\n // When `true`, the column will not be displayed.\n hide?: boolean;\n // Customize cell display based on their value for this specific column.\n cellSettings?: CellSettings[];\n\n dataLink?: DataLink;\n}\n\nexport interface DataLink {\n url: string;\n title?: string;\n openNewTab: boolean;\n}\n\nexport interface ValueCondition {\n kind: 'Value';\n spec: {\n value: string;\n };\n}\n\nexport interface RangeCondition {\n kind: 'Range';\n spec: {\n min?: number;\n max?: number;\n };\n}\n\nexport interface RegexCondition {\n kind: 'Regex';\n spec: {\n expr: string;\n };\n}\n\nexport interface MiscCondition {\n kind: 'Misc';\n spec: {\n value: 'empty' | 'null' | 'NaN' | 'true' | 'false';\n };\n}\n\nexport type Condition = ValueCondition | RangeCondition | RegexCondition | MiscCondition;\n\nexport interface CellSettings {\n condition: Condition;\n text?: string;\n prefix?: string;\n suffix?: string;\n textColor?: `#${string}`;\n backgroundColor?: `#${string}`;\n}\n\n/**\n * The schema for a Table panel.\n */\nexport interface TableDefinition extends Definition<TableOptions> {\n kind: 'Table';\n}\n\n/**\n * The Options object type supported by the Table panel plugin.\n */\nexport interface TableOptions {\n // Change row height.\n density?: TableDensity;\n // When set to 'auto', the table will try to automatically adjust the width of columns to fit without overflowing.\n // Only for column without custom width specified in columnSettings.\n defaultColumnWidth?: 'auto' | number;\n // When set to 'auto', the table will calculate the cell height based on the line height of the theme and the density setting of the table.\n // Only for column without custom height specified in columnSettings.\n defaultColumnHeight?: 'auto' | number;\n // When true, columns are hidden by default unless specified in columnSettings.\n defaultColumnHidden?: boolean;\n // Enable pagination.\n pagination?: boolean;\n // Enable filtering for individual columns.\n enableFiltering?: boolean;\n // Enable row selection.\n selection?: SelectionOptions;\n // Customize actions available for selected rows.\n actions?: ActionOptions;\n // Customize column display and order them by their index in the array.\n columnSettings?: ColumnSettings[];\n // Customize cell display based on their value.\n cellSettings?: CellSettings[];\n // Apply transforms to the data before rendering the table.\n transforms?: Transform[];\n}\n\n/**\n * Creates the initial/empty options for a Table panel.\n */\nexport function createInitialTableOptions(): TableOptions {\n return {\n density: 'standard',\n enableFiltering: true,\n };\n}\n\nexport type TableSettingsEditorProps = OptionsEditorProps<TableOptions>;\n\n/**\n * Formats the display text and colors based on cell settings\n */\nexport function formatCellDisplay(value: unknown, setting: CellSettings, defaultText?: string): TableCellConfig {\n const baseText = setting.text || defaultText || String(value);\n const displayText = `${setting.prefix ?? ''}${baseText}${setting.suffix ?? ''}`;\n return {\n text: displayText,\n textColor: setting.textColor,\n backgroundColor: setting.backgroundColor,\n };\n}\n\n/**\n * Evaluates if a condition matches the given value\n */\nexport function evaluateCondition(condition: Condition, value: unknown): boolean {\n switch (condition.kind) {\n case 'Value':\n return condition.spec?.value === String(value);\n\n case 'Range': {\n if (Number.isNaN(Number(value))) return false;\n const numericValue = Number(value);\n\n // Both min and max defined\n if (condition.spec?.min !== undefined && condition.spec?.max !== undefined) {\n return numericValue >= +condition.spec.min && numericValue <= +condition.spec.max;\n }\n\n // Only min defined\n if (condition.spec?.min !== undefined) {\n return numericValue >= +condition.spec.min;\n }\n\n // Only max defined\n if (condition.spec?.max !== undefined) {\n return numericValue <= +condition.spec.max;\n }\n\n return false;\n }\n\n case 'Regex':\n if (!condition.spec?.expr) return false;\n try {\n const regex = new RegExp(condition.spec.expr);\n return regex.test(String(value));\n } catch {\n return false; // Invalid regex\n }\n\n case 'Misc':\n switch (condition.spec?.value) {\n case 'empty':\n return value === '';\n case 'null':\n return value === null || value === undefined;\n case 'NaN':\n return Number.isNaN(value);\n case 'true':\n return value === true;\n case 'false':\n return value === false;\n default:\n return false;\n }\n\n default:\n return false;\n }\n}\n\n/**\n * Evaluates all conditions and returns the cell config for the first matching condition\n */\nexport function evaluateConditionalFormatting(value: unknown, settings: CellSettings[]): TableCellConfig | undefined {\n for (const setting of settings) {\n if (evaluateCondition(setting.condition, value)) {\n // Handle special default text cases\n let defaultText: string | undefined;\n if (setting.condition.kind === 'Misc') {\n switch (setting.condition.spec?.value) {\n case 'null':\n defaultText = 'null';\n break;\n case 'NaN':\n defaultText = 'NaN';\n break;\n }\n }\n\n return formatCellDisplay(value, setting, defaultText);\n }\n }\n\n return undefined; // No conditions matched\n}\n\n/**\n * Renders the condition editor component for a given condition\n * This function can be used by both CellEditor and ColumnEditor to maintain consistency\n */\nexport function renderConditionEditor(\n condition: Condition,\n onChange: (condition: Condition) => void,\n size: 'small' | 'medium' = 'small'\n): React.ReactElement | null {\n if (condition.kind === 'Value') {\n return React.createElement(TextField, {\n label: 'Value',\n placeholder: 'Exact value',\n value: condition.spec?.value ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { value: e.target.value } } as ValueCondition),\n fullWidth: true,\n size: size,\n });\n } else if (condition.kind === 'Range') {\n return React.createElement(\n Stack,\n {\n gap: 1,\n direction: 'row',\n },\n [\n React.createElement(TextField, {\n key: 'min',\n label: 'From',\n placeholder: 'Start of range',\n value: condition.spec?.min ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { ...condition.spec, min: +e.target.value } } as RangeCondition),\n fullWidth: true,\n size: size,\n }),\n React.createElement(TextField, {\n key: 'max',\n label: 'To',\n placeholder: 'End of range (inclusive)',\n value: condition.spec?.max ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { ...condition.spec, max: +e.target.value } } as RangeCondition),\n fullWidth: true,\n size: size,\n }),\n ]\n );\n } else if (condition.kind === 'Regex') {\n return React.createElement(TextField, {\n label: 'Regular Expression',\n placeholder: 'JavaScript regular expression',\n value: condition.spec?.expr ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { expr: e.target.value } } as RegexCondition),\n fullWidth: true,\n size: size,\n });\n } else if (condition.kind === 'Misc') {\n const options = [\n { value: 'empty', label: 'Empty', caption: 'Matches empty string' },\n { value: 'null', label: 'Null', caption: 'Matches null or undefined' },\n { value: 'NaN', label: 'NaN', caption: 'Matches Not a Number value' },\n { value: 'true', label: 'True', caption: 'Matches true boolean' },\n { value: 'false', label: 'False', caption: 'Matches false boolean' },\n ];\n\n return React.createElement(\n TextField,\n {\n select: true,\n label: 'Value',\n value: condition.spec?.value ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { value: e.target.value } } as MiscCondition),\n fullWidth: true,\n size: size,\n },\n options.map((option) =>\n React.createElement(\n MenuItem,\n {\n key: option.value,\n value: option.value,\n },\n React.createElement(Stack, { key: 'stack' }, [\n React.createElement(Typography, { key: 'title' }, option.label),\n React.createElement(\n Typography,\n {\n key: 'caption',\n variant: 'caption',\n },\n option.caption\n ),\n ])\n )\n )\n );\n }\n return null;\n}\n"],"names":["React","TextField","Stack","MenuItem","Typography","createInitialTableOptions","density","enableFiltering","formatCellDisplay","value","setting","defaultText","baseText","text","String","displayText","prefix","suffix","textColor","backgroundColor","evaluateCondition","condition","kind","spec","Number","isNaN","numericValue","min","undefined","max","expr","regex","RegExp","test","evaluateConditionalFormatting","settings","renderConditionEditor","onChange","size","createElement","label","placeholder","e","target","fullWidth","gap","direction","key","options","caption","select","map","option","variant"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/models/table-model.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TableDensity, TableCellConfig, FormatOptions, Transform } from '@perses-dev/components';\nimport { ActionOptions, OptionsEditorProps, SelectionOptions } from '@perses-dev/plugin-system';\nimport React from 'react';\nimport { TextField, Stack, MenuItem, Typography } from '@mui/material';\nimport { Definition, UnknownSpec } from '@perses-dev/spec';\n\nexport interface ColumnSettings {\n name: string;\n\n // Text to display in the header for the column.\n header?: string;\n /**\n * Text to display when hovering over the header text. This can be useful for\n * providing additional information about the column when you want to keep the\n * header text relatively short to manage the column width.\n */\n headerDescription?: string;\n /**\n * Text to display when hovering over a cell. This can be useful for\n * providing additional information about the column when the content is\n * ellipsized to fit in the space.\n */\n cellDescription?: string;\n\n /**\n * Panel plugin to render.\n * By default, the cells are rendered as text.\n */\n plugin?: Definition<UnknownSpec>;\n\n /** Formatting options. Only applicable if plugin is unset. */\n format?: FormatOptions;\n\n // Alignment of the content in the cell.\n align?: 'left' | 'center' | 'right';\n\n // When `true`, the column will be sortable.\n enableSorting?: boolean;\n\n // Default sort order for the column.\n sort?: 'asc' | 'desc';\n\n /**\n * Width of the column when rendered in a table. It should be a number in pixels\n * or \"auto\" to allow the table to automatically adjust the width to fill\n * space.\n */\n width?: number | 'auto';\n // When `true`, the column will not be displayed.\n hide?: boolean;\n // Customize cell display based on their value for this specific column.\n cellSettings?: CellSettings[];\n\n dataLink?: DataLink;\n}\n\nexport interface DataLink {\n url: string;\n title?: string;\n openNewTab: boolean;\n}\n\nexport interface ValueCondition {\n kind: 'Value';\n spec: {\n value: string;\n };\n}\n\nexport interface RangeCondition {\n kind: 'Range';\n spec: {\n min?: number;\n max?: number;\n };\n}\n\nexport interface RegexCondition {\n kind: 'Regex';\n spec: {\n expr: string;\n };\n}\n\nexport interface MiscCondition {\n kind: 'Misc';\n spec: {\n value: 'empty' | 'null' | 'NaN' | 'true' | 'false';\n };\n}\n\nexport type Condition = ValueCondition | RangeCondition | RegexCondition | MiscCondition;\n\nexport interface CellSettings {\n condition: Condition;\n text?: string;\n prefix?: string;\n suffix?: string;\n textColor?: `#${string}`;\n backgroundColor?: `#${string}`;\n}\n\n/**\n * The schema for a Table panel.\n */\nexport interface TableDefinition extends Definition<TableOptions> {\n kind: 'Table';\n}\n\n/**\n * The Options object type supported by the Table panel plugin.\n */\nexport interface TableOptions {\n // Change row height.\n density?: TableDensity;\n // When set to 'auto', the table will try to automatically adjust the width of columns to fit without overflowing.\n // Only for column without custom width specified in columnSettings.\n defaultColumnWidth?: 'auto' | number;\n // When set to 'auto', the table will calculate the cell height based on the line height of the theme and the density setting of the table.\n // Only for column without custom height specified in columnSettings.\n defaultColumnHeight?: 'auto' | number;\n // When true, columns are hidden by default unless specified in columnSettings.\n defaultColumnHidden?: boolean;\n // Enable pagination.\n pagination?: boolean;\n // Enable filtering for individual columns.\n enableFiltering?: boolean;\n // Enable row selection.\n selection?: SelectionOptions;\n // Customize actions available for selected rows.\n actions?: ActionOptions;\n // Customize column display and order them by their index in the array.\n columnSettings?: ColumnSettings[];\n // Customize cell display based on their value.\n cellSettings?: CellSettings[];\n // Apply transforms to the data before rendering the table.\n transforms?: Transform[];\n}\n\n/**\n * Creates the initial/empty options for a Table panel.\n */\nexport function createInitialTableOptions(): TableOptions {\n return {\n density: 'standard',\n enableFiltering: true,\n };\n}\n\nexport type TableSettingsEditorProps = OptionsEditorProps<TableOptions>;\n\nfunction parseRangeBound(rawValue: string): number | undefined {\n const trimmed = rawValue.trim();\n if (trimmed === '') {\n return undefined;\n }\n\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\n/**\n * Formats the display text and colors based on cell settings\n */\nexport function formatCellDisplay(value: unknown, setting: CellSettings, defaultText?: string): TableCellConfig {\n const baseText = setting.text || defaultText || String(value);\n const displayText = `${setting.prefix ?? ''}${baseText}${setting.suffix ?? ''}`;\n return {\n text: displayText,\n textColor: setting.textColor,\n backgroundColor: setting.backgroundColor,\n };\n}\n\n/**\n * Evaluates if a condition matches the given value\n */\nexport function evaluateCondition(condition: Condition, value: unknown): boolean {\n switch (condition.kind) {\n case 'Value':\n return condition.spec?.value === String(value);\n\n case 'Range': {\n if (Number.isNaN(Number(value))) return false;\n const numericValue = Number(value);\n\n // Both min and max defined\n if (condition.spec?.min !== undefined && condition.spec?.max !== undefined) {\n return numericValue >= +condition.spec.min && numericValue <= +condition.spec.max;\n }\n\n // Only min defined\n if (condition.spec?.min !== undefined) {\n return numericValue >= +condition.spec.min;\n }\n\n // Only max defined\n if (condition.spec?.max !== undefined) {\n return numericValue <= +condition.spec.max;\n }\n\n return false;\n }\n\n case 'Regex':\n if (!condition.spec?.expr) return false;\n try {\n const regex = new RegExp(condition.spec.expr);\n return regex.test(String(value));\n } catch {\n return false; // Invalid regex\n }\n\n case 'Misc':\n switch (condition.spec?.value) {\n case 'empty':\n return value === '';\n case 'null':\n return value === null || value === undefined;\n case 'NaN':\n return Number.isNaN(value);\n case 'true':\n return value === true;\n case 'false':\n return value === false;\n default:\n return false;\n }\n\n default:\n return false;\n }\n}\n\n/**\n * Evaluates all conditions and returns the cell config for the first matching condition\n */\nexport function evaluateConditionalFormatting(value: unknown, settings: CellSettings[]): TableCellConfig | undefined {\n for (const setting of settings) {\n if (evaluateCondition(setting.condition, value)) {\n // Handle special default text cases\n let defaultText: string | undefined;\n if (setting.condition.kind === 'Misc') {\n switch (setting.condition.spec?.value) {\n case 'null':\n defaultText = 'null';\n break;\n case 'NaN':\n defaultText = 'NaN';\n break;\n }\n }\n\n return formatCellDisplay(value, setting, defaultText);\n }\n }\n\n return undefined; // No conditions matched\n}\n\n/**\n * Renders the condition editor component for a given condition\n * This function can be used by both CellEditor and ColumnEditor to maintain consistency\n */\nexport function renderConditionEditor(\n condition: Condition,\n onChange: (condition: Condition) => void,\n size: 'small' | 'medium' = 'small'\n): React.ReactElement | null {\n if (condition.kind === 'Value') {\n return React.createElement(TextField, {\n label: 'Value',\n placeholder: 'Exact value',\n value: condition.spec?.value ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { value: e.target.value } } as ValueCondition),\n fullWidth: true,\n size: size,\n });\n } else if (condition.kind === 'Range') {\n return React.createElement(\n Stack,\n {\n gap: 1,\n direction: 'row',\n },\n [\n React.createElement(TextField, {\n key: 'min',\n label: 'From',\n placeholder: 'Start of range',\n value: condition.spec?.min ?? '',\n onChange: (e: { target: { value: string } }) => {\n const nextMin = parseRangeBound(e.target.value);\n onChange({ ...condition, spec: { ...condition.spec, min: nextMin } } as RangeCondition);\n },\n type: 'number',\n slotProps: { htmlInput: { step: 'any' } },\n fullWidth: true,\n size: size,\n }),\n React.createElement(TextField, {\n key: 'max',\n label: 'To',\n placeholder: 'End of range (inclusive)',\n value: condition.spec?.max ?? '',\n onChange: (e: { target: { value: string } }) => {\n const nextMax = parseRangeBound(e.target.value);\n onChange({ ...condition, spec: { ...condition.spec, max: nextMax } } as RangeCondition);\n },\n type: 'number',\n slotProps: { htmlInput: { step: 'any' } },\n fullWidth: true,\n size: size,\n }),\n ]\n );\n } else if (condition.kind === 'Regex') {\n return React.createElement(TextField, {\n label: 'Regular Expression',\n placeholder: 'JavaScript regular expression',\n value: condition.spec?.expr ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { expr: e.target.value } } as RegexCondition),\n fullWidth: true,\n size: size,\n });\n } else if (condition.kind === 'Misc') {\n const options = [\n { value: 'empty', label: 'Empty', caption: 'Matches empty string' },\n { value: 'null', label: 'Null', caption: 'Matches null or undefined' },\n { value: 'NaN', label: 'NaN', caption: 'Matches Not a Number value' },\n { value: 'true', label: 'True', caption: 'Matches true boolean' },\n { value: 'false', label: 'False', caption: 'Matches false boolean' },\n ];\n\n return React.createElement(\n TextField,\n {\n select: true,\n label: 'Value',\n value: condition.spec?.value ?? '',\n onChange: (e: { target: { value: string } }) =>\n onChange({ ...condition, spec: { value: e.target.value } } as MiscCondition),\n fullWidth: true,\n size: size,\n },\n options.map((option) =>\n React.createElement(\n MenuItem,\n {\n key: option.value,\n value: option.value,\n },\n React.createElement(Stack, { key: 'stack' }, [\n React.createElement(Typography, { key: 'title' }, option.label),\n React.createElement(\n Typography,\n {\n key: 'caption',\n variant: 'caption',\n },\n option.caption\n ),\n ])\n )\n )\n );\n }\n return null;\n}\n"],"names":["React","TextField","Stack","MenuItem","Typography","createInitialTableOptions","density","enableFiltering","parseRangeBound","rawValue","trimmed","trim","undefined","parsed","Number","isNaN","formatCellDisplay","value","setting","defaultText","baseText","text","String","displayText","prefix","suffix","textColor","backgroundColor","evaluateCondition","condition","kind","spec","numericValue","min","max","expr","regex","RegExp","test","evaluateConditionalFormatting","settings","renderConditionEditor","onChange","size","createElement","label","placeholder","e","target","fullWidth","gap","direction","key","nextMin","type","slotProps","htmlInput","step","nextMax","options","caption","select","map","option","variant"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { TimeSeriesData } from '@perses-dev/core';
2
1
  import { PanelData } from '@perses-dev/plugin-system';
2
+ import { TimeSeriesData } from '@perses-dev/spec';
3
3
  import { TableOptions } from './models';
4
4
  /**
5
5
  * Options for building raw table data.
@@ -1 +1 @@
1
- {"version":3,"file":"table-data-utils.d.ts","sourceRoot":"","sources":["../../src/table-data-utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAC9C,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,wBAA6B,GACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2ChC"}
1
+ {"version":3,"file":"table-data-utils.d.ts","sourceRoot":"","sources":["../../src/table-data-utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAU,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAC9C,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,wBAA6B,GACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2ChC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/table-data-utils.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Labels, TimeSeries, TimeSeriesData } from '@perses-dev/core';\nimport { PanelData } from '@perses-dev/plugin-system';\nimport { TableOptions } from './models';\n\n/**\n * Options for building raw table data.\n */\nexport interface BuildRawTableDataOptions {\n /**\n * When true, always use raw scalar values for cell data (for export).\n * When false, plugin columns will contain embedded PanelData objects (for rendering).\n */\n forExport?: boolean;\n}\n\n/**\n * Determines the query mode based on table options.\n * If any column has a plugin (embedded panel), use range mode; otherwise instant.\n */\nexport function getTablePanelQueryMode(spec: TableOptions): 'instant' | 'range' {\n return (spec.columnSettings ?? []).some((c) => c.plugin) ? 'range' : 'instant';\n}\n\n/**\n * Converts raw query results into a tabular format.\n *\n * This is the shared data-building logic used by both TablePanel (for rendering)\n * and TableExportAction (for CSV export). Extracting this ensures both use the\n * same transformation logic, reducing drift.\n *\n * @param queryResults - The panel query results containing time series data\n * @param spec - The table options specification\n * @param options - Build options (e.g., forExport mode)\n * @returns Array of row objects with column keys and values\n */\nexport function buildRawTableData(\n queryResults: Array<PanelData<TimeSeriesData>>,\n spec: TableOptions,\n options: BuildRawTableDataOptions = {}\n): Array<Record<string, unknown>> {\n const { forExport = false } = options;\n const queryMode = getTablePanelQueryMode(spec);\n\n return queryResults\n .flatMap((data: PanelData<TimeSeriesData>, queryIndex: number) =>\n (data.data?.series ?? []).map((ts: TimeSeries) => ({ data, ts, queryIndex }))\n )\n .map(({ data, ts, queryIndex }: { data: PanelData<TimeSeriesData>; ts: TimeSeries; queryIndex: number }) => {\n if (ts.values[0] === undefined) {\n return { ...ts.labels };\n }\n\n // If there are multiple queries, add query index to value key and label keys to avoid conflicts\n const valueColumnName = queryResults.length === 1 ? 'value' : `value #${queryIndex + 1}`;\n const labels =\n queryResults.length === 1\n ? ts.labels\n : Object.entries(ts.labels ?? {}).reduce((acc, [key, value]) => {\n if (key) acc[`${key} #${queryIndex + 1}`] = value;\n return acc;\n }, {} as Labels);\n\n // For export: always use raw scalar values\n // For rendering: plugin columns get embedded PanelData objects\n let columnValue: unknown;\n if (forExport) {\n columnValue = ts.values[0][1];\n } else {\n const hasPlugin = (spec.columnSettings ?? []).find((x) => x.name === valueColumnName)?.plugin;\n columnValue = hasPlugin\n ? { ...data, data: { ...data.data, series: data.data.series.filter((s) => s === ts) } }\n : ts.values[0][1];\n }\n\n if (queryMode === 'instant') {\n // Timestamp is not indexed as it will be the same for all queries\n return { timestamp: ts.values[0][0], [valueColumnName]: columnValue, ...labels };\n } else {\n // Don't add a timestamp for range queries\n return { [valueColumnName]: columnValue, ...labels };\n }\n });\n}\n"],"names":["getTablePanelQueryMode","spec","columnSettings","some","c","plugin","buildRawTableData","queryResults","options","forExport","queryMode","flatMap","data","queryIndex","series","map","ts","values","undefined","labels","valueColumnName","length","Object","entries","reduce","acc","key","value","columnValue","hasPlugin","find","x","name","filter","s","timestamp"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAiBjC;;;CAGC,GACD,OAAO,SAASA,uBAAuBC,IAAkB;IACvD,OAAO,AAACA,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,IAAMA,EAAEC,MAAM,IAAI,UAAU;AACvE;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,kBACdC,YAA8C,EAC9CN,IAAkB,EAClBO,UAAoC,CAAC,CAAC;IAEtC,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGD;IAC9B,MAAME,YAAYV,uBAAuBC;IAEzC,OAAOM,aACJI,OAAO,CAAC,CAACC,MAAiCC,aACzC,AAACD,CAAAA,KAAKA,IAAI,EAAEE,UAAU,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,KAAoB,CAAA;gBAAEJ;gBAAMI;gBAAIH;YAAW,CAAA,IAE3EE,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAEI,EAAE,EAAEH,UAAU,EAA2E;QACrG,IAAIG,GAAGC,MAAM,CAAC,EAAE,KAAKC,WAAW;YAC9B,OAAO;gBAAE,GAAGF,GAAGG,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBb,aAAac,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAER,aAAa,GAAG;QACxF,MAAMM,SACJZ,aAAac,MAAM,KAAK,IACpBL,GAAGG,MAAM,GACTG,OAAOC,OAAO,CAACP,GAAGG,MAAM,IAAI,CAAC,GAAGK,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEb,aAAa,GAAG,CAAC,GAAGc;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAInB,WAAW;YACbmB,cAAcZ,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC/B,OAAO;YACL,MAAMY,YAAY,AAAC5B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG4B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKZ,kBAAkBf;YACvFuB,cAAcC,YACV;gBAAE,GAAGjB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACmB,MAAM,CAAC,CAACC,IAAMA,MAAMlB;gBAAI;YAAE,IACpFA,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QACrB;QAEA,IAAIP,cAAc,WAAW;YAC3B,kEAAkE;YAClE,OAAO;gBAAEyB,WAAWnB,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAAE,CAACG,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACjF,OAAO;YACL,0CAA0C;YAC1C,OAAO;gBAAE,CAACC,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACrD;IACF;AACJ"}
1
+ {"version":3,"sources":["../../src/table-data-utils.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Labels, PanelData } from '@perses-dev/plugin-system';\nimport { TimeSeries, TimeSeriesData } from '@perses-dev/spec';\nimport { TableOptions } from './models';\n\n/**\n * Options for building raw table data.\n */\nexport interface BuildRawTableDataOptions {\n /**\n * When true, always use raw scalar values for cell data (for export).\n * When false, plugin columns will contain embedded PanelData objects (for rendering).\n */\n forExport?: boolean;\n}\n\n/**\n * Determines the query mode based on table options.\n * If any column has a plugin (embedded panel), use range mode; otherwise instant.\n */\nexport function getTablePanelQueryMode(spec: TableOptions): 'instant' | 'range' {\n return (spec.columnSettings ?? []).some((c) => c.plugin) ? 'range' : 'instant';\n}\n\n/**\n * Converts raw query results into a tabular format.\n *\n * This is the shared data-building logic used by both TablePanel (for rendering)\n * and TableExportAction (for CSV export). Extracting this ensures both use the\n * same transformation logic, reducing drift.\n *\n * @param queryResults - The panel query results containing time series data\n * @param spec - The table options specification\n * @param options - Build options (e.g., forExport mode)\n * @returns Array of row objects with column keys and values\n */\nexport function buildRawTableData(\n queryResults: Array<PanelData<TimeSeriesData>>,\n spec: TableOptions,\n options: BuildRawTableDataOptions = {}\n): Array<Record<string, unknown>> {\n const { forExport = false } = options;\n const queryMode = getTablePanelQueryMode(spec);\n\n return queryResults\n .flatMap((data: PanelData<TimeSeriesData>, queryIndex: number) =>\n (data.data?.series ?? []).map((ts: TimeSeries) => ({ data, ts, queryIndex }))\n )\n .map(({ data, ts, queryIndex }: { data: PanelData<TimeSeriesData>; ts: TimeSeries; queryIndex: number }) => {\n if (ts.values[0] === undefined) {\n return { ...ts.labels };\n }\n\n // If there are multiple queries, add query index to value key and label keys to avoid conflicts\n const valueColumnName = queryResults.length === 1 ? 'value' : `value #${queryIndex + 1}`;\n const labels =\n queryResults.length === 1\n ? ts.labels\n : Object.entries(ts.labels ?? {}).reduce((acc, [key, value]) => {\n if (key) acc[`${key} #${queryIndex + 1}`] = value;\n return acc;\n }, {} as Labels);\n\n // For export: always use raw scalar values\n // For rendering: plugin columns get embedded PanelData objects\n let columnValue: unknown;\n if (forExport) {\n columnValue = ts.values[0][1];\n } else {\n const hasPlugin = (spec.columnSettings ?? []).find((x) => x.name === valueColumnName)?.plugin;\n columnValue = hasPlugin\n ? { ...data, data: { ...data.data, series: data.data.series.filter((s) => s === ts) } }\n : ts.values[0][1];\n }\n\n if (queryMode === 'instant') {\n // Timestamp is not indexed as it will be the same for all queries\n return { timestamp: ts.values[0][0], [valueColumnName]: columnValue, ...labels };\n } else {\n // Don't add a timestamp for range queries\n return { [valueColumnName]: columnValue, ...labels };\n }\n });\n}\n"],"names":["getTablePanelQueryMode","spec","columnSettings","some","c","plugin","buildRawTableData","queryResults","options","forExport","queryMode","flatMap","data","queryIndex","series","map","ts","values","undefined","labels","valueColumnName","length","Object","entries","reduce","acc","key","value","columnValue","hasPlugin","find","x","name","filter","s","timestamp"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAiBjC;;;CAGC,GACD,OAAO,SAASA,uBAAuBC,IAAkB;IACvD,OAAO,AAACA,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,IAAMA,EAAEC,MAAM,IAAI,UAAU;AACvE;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,kBACdC,YAA8C,EAC9CN,IAAkB,EAClBO,UAAoC,CAAC,CAAC;IAEtC,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGD;IAC9B,MAAME,YAAYV,uBAAuBC;IAEzC,OAAOM,aACJI,OAAO,CAAC,CAACC,MAAiCC,aACzC,AAACD,CAAAA,KAAKA,IAAI,EAAEE,UAAU,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,KAAoB,CAAA;gBAAEJ;gBAAMI;gBAAIH;YAAW,CAAA,IAE3EE,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAEI,EAAE,EAAEH,UAAU,EAA2E;QACrG,IAAIG,GAAGC,MAAM,CAAC,EAAE,KAAKC,WAAW;YAC9B,OAAO;gBAAE,GAAGF,GAAGG,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBb,aAAac,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAER,aAAa,GAAG;QACxF,MAAMM,SACJZ,aAAac,MAAM,KAAK,IACpBL,GAAGG,MAAM,GACTG,OAAOC,OAAO,CAACP,GAAGG,MAAM,IAAI,CAAC,GAAGK,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEb,aAAa,GAAG,CAAC,GAAGc;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAInB,WAAW;YACbmB,cAAcZ,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC/B,OAAO;YACL,MAAMY,YAAY,AAAC5B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG4B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKZ,kBAAkBf;YACvFuB,cAAcC,YACV;gBAAE,GAAGjB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACmB,MAAM,CAAC,CAACC,IAAMA,MAAMlB;gBAAI;YAAE,IACpFA,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QACrB;QAEA,IAAIP,cAAc,WAAW;YAC3B,kEAAkE;YAClE,OAAO;gBAAEyB,WAAWnB,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAAE,CAACG,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACjF,OAAO;YACL,0CAA0C;YAC1C,OAAO;gBAAE,CAACC,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACrD;IACF;AACJ"}
@@ -1,4 +1,4 @@
1
- import { TimeSeriesData } from '@perses-dev/core';
1
+ import { TimeSeriesData } from '@perses-dev/spec';
2
2
  export declare const MOCK_TIME_SERIES_QUERY_RESULT_MULTIVALUE: {
3
3
  status: string;
4
4
  fetchStatus: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/test/mock-query-results.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TimeSeriesData } from '@perses-dev/core';\n\nexport const MOCK_TIME_SERIES_QUERY_RESULT_MULTIVALUE = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1666625490000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [\n [1666479357903, 0.27700745551584494],\n [1666479382282, 0.27701284657366565],\n ],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [\n [1666479357903, 0.08486496097624885],\n [1666479382282, 0.08486496097624885],\n ],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n },\n dataUpdatedAt: 1666500979895,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_QUERY_RESULT_SINGLEVALUE = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1666625535000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [[1666479357903, 0.27700745551584494]],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [[1666479357903, 0.08486496097624885]],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n },\n dataUpdatedAt: 1666500979895,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_DATA_MULTIVALUE: TimeSeriesData = {\n timeRange: {\n start: new Date(1666625490000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [\n [1666479357903, 0.27700745551584494],\n [1666479382282, 0.27701284657366565],\n ],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [\n [1666479357903, 0.08486496097624885],\n [1666479382282, 0.08486496097624885],\n ],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n};\n\nexport const MOCK_TIME_SERIES_DATA_SINGLEVALUE: TimeSeriesData = {\n timeRange: {\n start: new Date(1666625535000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [[1666479357903, 0.27700745551584494]],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [[1666479357903, 0.08486496097624885]],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n};\n\nexport const MOCK_NULL_QUERY_RESULT = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1677376110000),\n end: new Date(1677376410000),\n },\n stepMs: 15000,\n series: [\n {\n name: 'node_memory_Buffers_bytes{env=\"demo\",instance=\"demo.do.prometheus.io:9100\",job=\"node\"}',\n values: [\n [1677376110000, 40000000],\n [1677376125000, 40000000],\n [1677376140000, null],\n [1677376155000, null],\n [1677376170000, null],\n [1677376185000, null],\n [1677376200000, null],\n [1677376215000, 40013824],\n [1677376230000, 40038400],\n [1677376245000, 40054784],\n [1677376260000, 40071168],\n [1677376275000, 40075264],\n [1677376290000, 40091648],\n [1677376305000, 40099840],\n [1677376320000, 40120320],\n [1677376335000, 40128512],\n [1677376350000, 40153088],\n [1677376365000, 40165376],\n [1677376380000, 40177664],\n [1677376395000, 40194048],\n [1677376410000, 40198144],\n ],\n formattedName: 'node_memory_Buffers_bytes{env=\"demo\",instance=\"demo.do.prometheus.io:9100\",job=\"node\"}',\n labels: {\n env: 'demo',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n },\n },\n ],\n },\n dataUpdatedAt: 1677376410000,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_QUERY_DEFINITION = {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: '',\n },\n },\n },\n};\n"],"names":["MOCK_TIME_SERIES_QUERY_RESULT_MULTIVALUE","status","fetchStatus","isLoading","isSuccess","isError","data","timeRange","start","Date","end","stepMs","series","name","values","labels","device","env","fstype","instance","job","mountpoint","dataUpdatedAt","error","errorUpdatedAt","failureCount","errorUpdateCount","isFetched","isFetchedAfterMount","isFetching","isRefetching","isLoadingError","isPaused","isPlaceholderData","isPreviousData","isRefetchError","isStale","MOCK_TIME_SERIES_QUERY_RESULT_SINGLEVALUE","MOCK_TIME_SERIES_DATA_MULTIVALUE","MOCK_TIME_SERIES_DATA_SINGLEVALUE","MOCK_NULL_QUERY_RESULT","formattedName","MOCK_TIME_SERIES_QUERY_DEFINITION","kind","spec","plugin","query"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/test/mock-query-results.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TimeSeriesData } from '@perses-dev/spec';\n\nexport const MOCK_TIME_SERIES_QUERY_RESULT_MULTIVALUE = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1666625490000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [\n [1666479357903, 0.27700745551584494],\n [1666479382282, 0.27701284657366565],\n ],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [\n [1666479357903, 0.08486496097624885],\n [1666479382282, 0.08486496097624885],\n ],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n },\n dataUpdatedAt: 1666500979895,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_QUERY_RESULT_SINGLEVALUE = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1666625535000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [[1666479357903, 0.27700745551584494]],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [[1666479357903, 0.08486496097624885]],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n },\n dataUpdatedAt: 1666500979895,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_DATA_MULTIVALUE: TimeSeriesData = {\n timeRange: {\n start: new Date(1666625490000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [\n [1666479357903, 0.27700745551584494],\n [1666479382282, 0.27701284657366565],\n ],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [\n [1666479357903, 0.08486496097624885],\n [1666479382282, 0.08486496097624885],\n ],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n};\n\nexport const MOCK_TIME_SERIES_DATA_SINGLEVALUE: TimeSeriesData = {\n timeRange: {\n start: new Date(1666625535000),\n end: new Date(1666625535000),\n },\n stepMs: 24379,\n series: [\n {\n name: 'device=\"/dev/vda1\", env=\"demo\", fstype=\"ext4\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/\"',\n values: [[1666479357903, 0.27700745551584494]],\n labels: {\n device: '/dev/vda1',\n env: 'demo',\n fstype: 'ext4',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/',\n },\n },\n {\n name: 'device=\"/dev/vda15\", env=\"demo\", fstype=\"vfat\", instance=\"demo.do.prometheus.io:9100\", job=\"node\", mountpoint=\"/boot/efi\"',\n values: [[1666479357903, 0.08486496097624885]],\n labels: {\n device: '/dev/vda15',\n env: 'demo',\n fstype: 'vfat',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n mountpoint: '/boot/efi',\n },\n },\n ],\n};\n\nexport const MOCK_NULL_QUERY_RESULT = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: {\n timeRange: {\n start: new Date(1677376110000),\n end: new Date(1677376410000),\n },\n stepMs: 15000,\n series: [\n {\n name: 'node_memory_Buffers_bytes{env=\"demo\",instance=\"demo.do.prometheus.io:9100\",job=\"node\"}',\n values: [\n [1677376110000, 40000000],\n [1677376125000, 40000000],\n [1677376140000, null],\n [1677376155000, null],\n [1677376170000, null],\n [1677376185000, null],\n [1677376200000, null],\n [1677376215000, 40013824],\n [1677376230000, 40038400],\n [1677376245000, 40054784],\n [1677376260000, 40071168],\n [1677376275000, 40075264],\n [1677376290000, 40091648],\n [1677376305000, 40099840],\n [1677376320000, 40120320],\n [1677376335000, 40128512],\n [1677376350000, 40153088],\n [1677376365000, 40165376],\n [1677376380000, 40177664],\n [1677376395000, 40194048],\n [1677376410000, 40198144],\n ],\n formattedName: 'node_memory_Buffers_bytes{env=\"demo\",instance=\"demo.do.prometheus.io:9100\",job=\"node\"}',\n labels: {\n env: 'demo',\n instance: 'demo.do.prometheus.io:9100',\n job: 'node',\n },\n },\n ],\n },\n dataUpdatedAt: 1677376410000,\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TIME_SERIES_QUERY_DEFINITION = {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: '',\n },\n },\n },\n};\n"],"names":["MOCK_TIME_SERIES_QUERY_RESULT_MULTIVALUE","status","fetchStatus","isLoading","isSuccess","isError","data","timeRange","start","Date","end","stepMs","series","name","values","labels","device","env","fstype","instance","job","mountpoint","dataUpdatedAt","error","errorUpdatedAt","failureCount","errorUpdateCount","isFetched","isFetchedAfterMount","isFetching","isRefetching","isLoadingError","isPaused","isPlaceholderData","isPreviousData","isRefetchError","isStale","MOCK_TIME_SERIES_QUERY_RESULT_SINGLEVALUE","MOCK_TIME_SERIES_DATA_MULTIVALUE","MOCK_TIME_SERIES_DATA_SINGLEVALUE","MOCK_NULL_QUERY_RESULT","formattedName","MOCK_TIME_SERIES_QUERY_DEFINITION","kind","spec","plugin","query"],"mappings":"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"}