@perses-dev/table-plugin 0.13.0 → 0.14.0-beta.2

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 (216) hide show
  1. package/__mf/js/{Table.73b9cec1.js → Table.cede74c3.js} +3 -3
  2. package/__mf/js/async/1186.76f7a9c4.js +2 -0
  3. package/__mf/js/async/1522.f490bae9.js +22 -0
  4. package/__mf/js/async/1616.e459f6f7.js +1 -0
  5. package/__mf/js/async/2035.e9f08b1d.js +1 -0
  6. package/__mf/js/async/2043.ddbebd72.js +2 -0
  7. package/__mf/js/async/2251.2ab11c45.js +7 -0
  8. package/__mf/js/async/{1589.124ce93d.js.LICENSE.txt → 2251.2ab11c45.js.LICENSE.txt} +41 -1
  9. package/__mf/js/async/2465.b442bc56.js +1 -0
  10. package/__mf/js/async/2650.b874a7cd.js +3 -0
  11. package/__mf/js/async/392.3b464b91.js +2 -0
  12. package/__mf/js/async/3923.7b9985ff.js +1 -0
  13. package/__mf/js/async/4077.dfd731dd.js +1 -0
  14. package/__mf/js/async/4121.ed15fe74.js +2 -0
  15. package/__mf/js/async/4496.487e4f10.js +1 -0
  16. package/__mf/js/async/5002.fc50985b.js +1 -0
  17. package/__mf/js/async/5054.a0d861ae.js +1 -0
  18. package/__mf/js/async/5071.1e325f38.js +1 -0
  19. package/__mf/js/async/5153.8a046a40.js +1 -0
  20. package/__mf/js/async/5587.c9c77660.js +1 -0
  21. package/__mf/js/async/{868.507e984c.js → 5741.ef0c5df4.js} +6 -6
  22. package/__mf/js/async/6274.db89316a.js +2 -0
  23. package/__mf/js/async/7192.7e6af5a2.js +1 -0
  24. package/__mf/js/async/7534.63c81960.js +1 -0
  25. package/__mf/js/async/7862.cbf7b286.js +2 -0
  26. package/__mf/js/async/7968.f91456c8.js +1 -0
  27. package/__mf/js/async/7978.4553ce86.js +1 -0
  28. package/__mf/js/async/8356.d5d8a6a3.js +1 -0
  29. package/__mf/js/async/8470.f35cd609.js +2 -0
  30. package/__mf/js/async/873.fc45c2c6.js +1 -0
  31. package/__mf/js/async/8985.6cc7edf9.js +37 -0
  32. package/__mf/js/async/9148.1ff77cf0.js +1 -0
  33. package/__mf/js/async/9207.ca6ac0b2.js +1 -0
  34. package/__mf/js/async/9235.78a103e9.js +1 -0
  35. package/__mf/js/async/9321.ddbe25a2.js +1 -0
  36. package/__mf/js/async/941.96941f4e.js +2 -0
  37. package/__mf/js/async/9588.039ce076.js +1 -0
  38. package/__mf/js/async/__federation_expose_Table.e7708af8.js +1 -0
  39. package/__mf/js/async/lib-router.e968bcc8.js +2 -0
  40. package/__mf/js/{main.7b15c841.js → main.7815ee7c.js} +2 -2
  41. package/lib/Table.d.ts +3 -3
  42. package/lib/Table.d.ts.map +1 -1
  43. package/lib/Table.js +4 -4
  44. package/lib/Table.js.map +1 -1
  45. package/lib/TableExportAction.d.ts +3 -3
  46. package/lib/TableExportAction.d.ts.map +1 -1
  47. package/lib/TableExportAction.js +6 -6
  48. package/lib/TableExportAction.js.map +1 -1
  49. package/lib/bootstrap.js +2 -2
  50. package/lib/components/CellsEditor/CellsEditor.d.ts +2 -2
  51. package/lib/components/CellsEditor/CellsEditor.d.ts.map +1 -1
  52. package/lib/components/CellsEditor/CellsEditor.js +1 -1
  53. package/lib/components/CellsEditor/CellsEditor.js.map +1 -1
  54. package/lib/components/CellsEditor/index.js +1 -1
  55. package/lib/components/CellsEditor/index.js.map +1 -1
  56. package/lib/components/ColumnsEditor/ColumnEditor.d.ts +5 -4
  57. package/lib/components/ColumnsEditor/ColumnEditor.d.ts.map +1 -1
  58. package/lib/components/ColumnsEditor/ColumnEditor.js +29 -15
  59. package/lib/components/ColumnsEditor/ColumnEditor.js.map +1 -1
  60. package/lib/components/ColumnsEditor/ColumnEditorContainer.d.ts +3 -3
  61. package/lib/components/ColumnsEditor/ColumnEditorContainer.d.ts.map +1 -1
  62. package/lib/components/ColumnsEditor/ColumnEditorContainer.js +11 -10
  63. package/lib/components/ColumnsEditor/ColumnEditorContainer.js.map +1 -1
  64. package/lib/components/ColumnsEditor/ColumnsEditor.d.ts +4 -3
  65. package/lib/components/ColumnsEditor/ColumnsEditor.d.ts.map +1 -1
  66. package/lib/components/ColumnsEditor/ColumnsEditor.js +7 -6
  67. package/lib/components/ColumnsEditor/ColumnsEditor.js.map +1 -1
  68. package/lib/components/ColumnsEditor/DataLinkEditorDialog.d.ts +2 -2
  69. package/lib/components/ColumnsEditor/DataLinkEditorDialog.d.ts.map +1 -1
  70. package/lib/components/ColumnsEditor/DataLinkEditorDialog.js +4 -4
  71. package/lib/components/ColumnsEditor/DataLinkEditorDialog.js.map +1 -1
  72. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.d.ts +2 -2
  73. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.d.ts.map +1 -1
  74. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js +4 -4
  75. package/lib/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js.map +1 -1
  76. package/lib/components/ColumnsEditor/index.js +3 -3
  77. package/lib/components/ColumnsEditor/index.js.map +1 -1
  78. package/lib/components/ConditionalPanel.d.ts +3 -3
  79. package/lib/components/ConditionalPanel.d.ts.map +1 -1
  80. package/lib/components/ConditionalPanel.js +7 -7
  81. package/lib/components/ConditionalPanel.js.map +1 -1
  82. package/lib/components/EmbeddedPanel.d.ts +3 -3
  83. package/lib/components/EmbeddedPanel.d.ts.map +1 -1
  84. package/lib/components/EmbeddedPanel.js +4 -4
  85. package/lib/components/EmbeddedPanel.js.map +1 -1
  86. package/lib/components/TableCellsEditor.d.ts +3 -3
  87. package/lib/components/TableCellsEditor.d.ts.map +1 -1
  88. package/lib/components/TableCellsEditor.js +1 -1
  89. package/lib/components/TableCellsEditor.js.map +1 -1
  90. package/lib/components/TableColumnsEditor.d.ts +3 -3
  91. package/lib/components/TableColumnsEditor.d.ts.map +1 -1
  92. package/lib/components/TableColumnsEditor.js +3 -2
  93. package/lib/components/TableColumnsEditor.js.map +1 -1
  94. package/lib/components/TableItemSelectionActionsEditor.d.ts +2 -2
  95. package/lib/components/TableItemSelectionActionsEditor.d.ts.map +1 -1
  96. package/lib/components/TableItemSelectionActionsEditor.js +2 -2
  97. package/lib/components/TableItemSelectionActionsEditor.js.map +1 -1
  98. package/lib/components/TablePanel.d.ts +4 -4
  99. package/lib/components/TablePanel.d.ts.map +1 -1
  100. package/lib/components/TablePanel.js +196 -99
  101. package/lib/components/TablePanel.js.map +1 -1
  102. package/lib/components/TableSettingsEditor.d.ts +2 -2
  103. package/lib/components/TableSettingsEditor.d.ts.map +1 -1
  104. package/lib/components/TableSettingsEditor.js +16 -2
  105. package/lib/components/TableSettingsEditor.js.map +1 -1
  106. package/lib/components/TableTransformsEditor.d.ts +2 -2
  107. package/lib/components/TableTransformsEditor.d.ts.map +1 -1
  108. package/lib/components/TableTransformsEditor.js +2 -2
  109. package/lib/components/TableTransformsEditor.js.map +1 -1
  110. package/lib/components/index.js +9 -9
  111. package/lib/components/index.js.map +1 -1
  112. package/lib/getPluginModule.d.ts +1 -1
  113. package/lib/getPluginModule.d.ts.map +1 -1
  114. package/lib/getPluginModule.js +3 -1
  115. package/lib/getPluginModule.js.map +1 -1
  116. package/lib/index-federation.js +1 -1
  117. package/lib/index.js +4 -4
  118. package/lib/index.js.map +1 -1
  119. package/lib/models/index.js +2 -2
  120. package/lib/models/index.js.map +1 -1
  121. package/lib/models/model.d.ts +1 -1
  122. package/lib/models/model.d.ts.map +1 -1
  123. package/lib/models/model.js.map +1 -1
  124. package/lib/models/table-model.d.ts +4 -3
  125. package/lib/models/table-model.d.ts.map +1 -1
  126. package/lib/models/table-model.js +2 -2
  127. package/lib/models/table-model.js.map +1 -1
  128. package/lib/setup-tests.d.ts +1 -1
  129. package/lib/setup-tests.d.ts.map +1 -1
  130. package/lib/setup-tests.js +8 -2
  131. package/lib/setup-tests.js.map +1 -1
  132. package/lib/table-data-utils.d.ts +3 -3
  133. package/lib/table-data-utils.d.ts.map +1 -1
  134. package/lib/table-data-utils.js.map +1 -1
  135. package/lib/test/mock-query-results.d.ts +1 -1
  136. package/lib/test/mock-query-results.d.ts.map +1 -1
  137. package/lib/test/mock-query-results.js.map +1 -1
  138. package/mf-manifest.json +48 -46
  139. package/mf-stats.json +52 -47
  140. package/package.json +11 -11
  141. package/__mf/js/async/1432.4e515509.js +0 -1
  142. package/__mf/js/async/1589.124ce93d.js +0 -2
  143. package/__mf/js/async/1616.4828085d.js +0 -1
  144. package/__mf/js/async/2043.1f09864b.js +0 -2
  145. package/__mf/js/async/2082.231e8397.js +0 -1
  146. package/__mf/js/async/2842.a52597e6.js +0 -1
  147. package/__mf/js/async/392.b6035b41.js +0 -2
  148. package/__mf/js/async/3981.52e94742.js +0 -3
  149. package/__mf/js/async/4014.cf88a118.js +0 -7
  150. package/__mf/js/async/4014.cf88a118.js.LICENSE.txt +0 -39
  151. package/__mf/js/async/4121.e7df36d6.js +0 -2
  152. package/__mf/js/async/5002.3eb39a8c.js +0 -1
  153. package/__mf/js/async/5021.c663603d.js +0 -1
  154. package/__mf/js/async/5071.839a8f1a.js +0 -1
  155. package/__mf/js/async/5481.6496fac9.js +0 -2
  156. package/__mf/js/async/5587.a8a428db.js +0 -1
  157. package/__mf/js/async/6274.8edae86d.js +0 -2
  158. package/__mf/js/async/629.8cff215d.js +0 -1
  159. package/__mf/js/async/6811.9d4b123a.js +0 -38
  160. package/__mf/js/async/7177.e0e5ba2f.js +0 -1
  161. package/__mf/js/async/7192.692181c8.js +0 -1
  162. package/__mf/js/async/7413.c9310b8a.js +0 -1
  163. package/__mf/js/async/7968.3a9a982e.js +0 -1
  164. package/__mf/js/async/7978.116e4d81.js +0 -1
  165. package/__mf/js/async/7984.a8edc213.js +0 -22
  166. package/__mf/js/async/8356.152d5686.js +0 -1
  167. package/__mf/js/async/8470.b9762117.js +0 -2
  168. package/__mf/js/async/873.264fedc9.js +0 -1
  169. package/__mf/js/async/9051.c4deebd7.js +0 -1
  170. package/__mf/js/async/9235.c67cdb1d.js +0 -1
  171. package/__mf/js/async/941.cc458a98.js +0 -2
  172. package/__mf/js/async/9588.d23e2ed3.js +0 -1
  173. package/__mf/js/async/9701.9c4cea02.js +0 -1
  174. package/__mf/js/async/__federation_expose_Table.5d0cfb46.js +0 -1
  175. package/__mf/js/async/lib-router.3493bbf9.js +0 -2
  176. package/lib/cjs/Table.js +0 -62
  177. package/lib/cjs/TableExportAction.js +0 -180
  178. package/lib/cjs/bootstrap.js +0 -26
  179. package/lib/cjs/components/CellsEditor/CellsEditor.js +0 -30
  180. package/lib/cjs/components/CellsEditor/index.js +0 -30
  181. package/lib/cjs/components/ColumnsEditor/ColumnEditor.js +0 -289
  182. package/lib/cjs/components/ColumnsEditor/ColumnEditorContainer.js +0 -152
  183. package/lib/cjs/components/ColumnsEditor/ColumnsEditor.js +0 -108
  184. package/lib/cjs/components/ColumnsEditor/DataLinkEditorDialog.js +0 -139
  185. package/lib/cjs/components/ColumnsEditor/EmbeddedPanelOptionsEditor.js +0 -124
  186. package/lib/cjs/components/ColumnsEditor/index.js +0 -32
  187. package/lib/cjs/components/ConditionalPanel.js +0 -367
  188. package/lib/cjs/components/EmbeddedPanel.js +0 -52
  189. package/lib/cjs/components/TableCellsEditor.js +0 -36
  190. package/lib/cjs/components/TableColumnsEditor.js +0 -36
  191. package/lib/cjs/components/TableItemSelectionActionsEditor.js +0 -44
  192. package/lib/cjs/components/TablePanel.js +0 -845
  193. package/lib/cjs/components/TableSettingsEditor.js +0 -144
  194. package/lib/cjs/components/TableTransformsEditor.js +0 -36
  195. package/lib/cjs/components/index.js +0 -38
  196. package/lib/cjs/env.d.js +0 -14
  197. package/lib/cjs/getPluginModule.js +0 -39
  198. package/lib/cjs/index-federation.js +0 -55
  199. package/lib/cjs/index.js +0 -39
  200. package/lib/cjs/models/index.js +0 -31
  201. package/lib/cjs/models/model.js +0 -16
  202. package/lib/cjs/models/table-model.js +0 -278
  203. package/lib/cjs/setup-tests.js +0 -19
  204. package/lib/cjs/table-data-utils.js +0 -84
  205. package/lib/cjs/test/mock-query-results.js +0 -524
  206. /package/__mf/css/async/{4014.85c2cbf6.css → 2251.85c2cbf6.css} +0 -0
  207. /package/__mf/js/async/{7984.a8edc213.js.LICENSE.txt → 1522.f490bae9.js.LICENSE.txt} +0 -0
  208. /package/__mf/js/async/{2043.1f09864b.js.LICENSE.txt → 2043.ddbebd72.js.LICENSE.txt} +0 -0
  209. /package/__mf/js/async/{392.b6035b41.js.LICENSE.txt → 392.3b464b91.js.LICENSE.txt} +0 -0
  210. /package/__mf/js/async/{4121.e7df36d6.js.LICENSE.txt → 4121.ed15fe74.js.LICENSE.txt} +0 -0
  211. /package/__mf/js/async/{868.507e984c.js.LICENSE.txt → 5741.ef0c5df4.js.LICENSE.txt} +0 -0
  212. /package/__mf/js/async/{6274.8edae86d.js.LICENSE.txt → 6274.db89316a.js.LICENSE.txt} +0 -0
  213. /package/__mf/js/async/{5481.6496fac9.js.LICENSE.txt → 7862.cbf7b286.js.LICENSE.txt} +0 -0
  214. /package/__mf/js/async/{8470.b9762117.js.LICENSE.txt → 8470.f35cd609.js.LICENSE.txt} +0 -0
  215. /package/__mf/js/async/{941.cc458a98.js.LICENSE.txt → 941.96941f4e.js.LICENSE.txt} +0 -0
  216. /package/__mf/js/async/{lib-router.3493bbf9.js.LICENSE.txt → lib-router.e968bcc8.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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"}
@@ -10,8 +10,8 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- import React from 'react';
14
- import { TextField, Stack, MenuItem, Typography } from '@mui/material';
13
+ import { TextField, Stack, MenuItem, Typography } from "@mui/material";
14
+ import React from "react";
15
15
  /**
16
16
  * Creates the initial/empty options for a Table panel.
17
17
  */ export function createInitialTableOptions() {
@@ -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 { 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
+ {"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 { TextField, Stack, MenuItem, Typography } from '@mui/material';\nimport type { TableDensity, TableCellConfig, FormatOptions, Transform } from '@perses-dev/components';\nimport type { ActionOptions, OptionsEditorProps, SelectionOptions } from '@perses-dev/plugin-system';\nimport type { Definition, UnknownSpec } from '@perses-dev/spec';\nimport React from 'react';\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 // When unset, inherits TableOptions.enableSorting from General Settings.\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 // When true, columns are sortable by default unless overridden in columnSettings.\n enableSorting?: 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":["TextField","Stack","MenuItem","Typography","React","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":"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;AAEjC,SAASA,SAAS,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,gBAAgB;AAIvE,OAAOC,WAAW,QAAQ;AA0I1B;;CAEC,GACD,OAAO,SAASC;IACd,OAAO;QACLC,SAAS;QACTC,iBAAiB;IACnB;AACF;AAIA,SAASC,gBAAgBC,QAAgB;IACvC,MAAMC,UAAUD,SAASE,IAAI;IAC7B,IAAID,YAAY,IAAI;QAClB,OAAOE;IACT;IAEA,MAAMC,SAASC,OAAOJ;IACtB,OAAOI,OAAOC,KAAK,CAACF,UAAUD,YAAYC;AAC5C;AAEA;;CAEC,GACD,OAAO,SAASG,kBAAkBC,KAAc,EAAEC,OAAqB,EAAEC,WAAoB;IAC3F,MAAMC,WAAWF,QAAQG,IAAI,IAAIF,eAAeG,OAAOL;IACvD,MAAMM,cAAc,GAAGL,QAAQM,MAAM,IAAI,KAAKJ,WAAWF,QAAQO,MAAM,IAAI,IAAI;IAC/E,OAAO;QACLJ,MAAME;QACNG,WAAWR,QAAQQ,SAAS;QAC5BC,iBAAiBT,QAAQS,eAAe;IAC1C;AACF;AAEA;;CAEC,GACD,OAAO,SAASC,kBAAkBC,SAAoB,EAAEZ,KAAc;IACpE,OAAQY,UAAUC,IAAI;QACpB,KAAK;YACH,OAAOD,UAAUE,IAAI,EAAEd,UAAUK,OAAOL;QAE1C,KAAK;YAAS;gBACZ,IAAIH,OAAOC,KAAK,CAACD,OAAOG,SAAS,OAAO;gBACxC,MAAMe,eAAelB,OAAOG;gBAE5B,2BAA2B;gBAC3B,IAAIY,UAAUE,IAAI,EAAEE,QAAQrB,aAAaiB,UAAUE,IAAI,EAAEG,QAAQtB,WAAW;oBAC1E,OAAOoB,gBAAgB,CAACH,UAAUE,IAAI,CAACE,GAAG,IAAID,gBAAgB,CAACH,UAAUE,IAAI,CAACG,GAAG;gBACnF;gBAEA,mBAAmB;gBACnB,IAAIL,UAAUE,IAAI,EAAEE,QAAQrB,WAAW;oBACrC,OAAOoB,gBAAgB,CAACH,UAAUE,IAAI,CAACE,GAAG;gBAC5C;gBAEA,mBAAmB;gBACnB,IAAIJ,UAAUE,IAAI,EAAEG,QAAQtB,WAAW;oBACrC,OAAOoB,gBAAgB,CAACH,UAAUE,IAAI,CAACG,GAAG;gBAC5C;gBAEA,OAAO;YACT;QAEA,KAAK;YACH,IAAI,CAACL,UAAUE,IAAI,EAAEI,MAAM,OAAO;YAClC,IAAI;gBACF,MAAMC,QAAQ,IAAIC,OAAOR,UAAUE,IAAI,CAACI,IAAI;gBAC5C,OAAOC,MAAME,IAAI,CAAChB,OAAOL;YAC3B,EAAE,OAAM;gBACN,OAAO,OAAO,gBAAgB;YAChC;QAEF,KAAK;YACH,OAAQY,UAAUE,IAAI,EAAEd;gBACtB,KAAK;oBACH,OAAOA,UAAU;gBACnB,KAAK;oBACH,OAAOA,UAAU,QAAQA,UAAUL;gBACrC,KAAK;oBACH,OAAOE,OAAOC,KAAK,CAACE;gBACtB,KAAK;oBACH,OAAOA,UAAU;gBACnB,KAAK;oBACH,OAAOA,UAAU;gBACnB;oBACE,OAAO;YACX;QAEF;YACE,OAAO;IACX;AACF;AAEA;;CAEC,GACD,OAAO,SAASsB,8BAA8BtB,KAAc,EAAEuB,QAAwB;IACpF,KAAK,MAAMtB,WAAWsB,SAAU;QAC9B,IAAIZ,kBAAkBV,QAAQW,SAAS,EAAEZ,QAAQ;YAC/C,oCAAoC;YACpC,IAAIE;YACJ,IAAID,QAAQW,SAAS,CAACC,IAAI,KAAK,QAAQ;gBACrC,OAAQZ,QAAQW,SAAS,CAACE,IAAI,EAAEd;oBAC9B,KAAK;wBACHE,cAAc;wBACd;oBACF,KAAK;wBACHA,cAAc;wBACd;gBACJ;YACF;YAEA,OAAOH,kBAAkBC,OAAOC,SAASC;QAC3C;IACF;IAEA,OAAOP,WAAW,wBAAwB;AAC5C;AAEA;;;CAGC,GACD,OAAO,SAAS6B,sBACdZ,SAAoB,EACpBa,QAAwC,EACxCC,OAA2B,OAAO;IAElC,IAAId,UAAUC,IAAI,KAAK,SAAS;QAC9B,OAAO1B,MAAMwC,aAAa,CAAC5C,WAAW;YACpC6C,OAAO;YACPC,aAAa;YACb7B,OAAOY,UAAUE,IAAI,EAAEd,SAAS;YAChCyB,UAAU,CAACK,IACTL,SAAS;oBAAE,GAAGb,SAAS;oBAAEE,MAAM;wBAAEd,OAAO8B,EAAEC,MAAM,CAAC/B,KAAK;oBAAC;gBAAE;YAC3DgC,WAAW;YACXN,MAAMA;QACR;IACF,OAAO,IAAId,UAAUC,IAAI,KAAK,SAAS;QACrC,OAAO1B,MAAMwC,aAAa,CACxB3C,OACA;YACEiD,KAAK;YACLC,WAAW;QACb,GACA;YACE/C,MAAMwC,aAAa,CAAC5C,WAAW;gBAC7BoD,KAAK;gBACLP,OAAO;gBACPC,aAAa;gBACb7B,OAAOY,UAAUE,IAAI,EAAEE,OAAO;gBAC9BS,UAAU,CAACK;oBACT,MAAMM,UAAU7C,gBAAgBuC,EAAEC,MAAM,CAAC/B,KAAK;oBAC9CyB,SAAS;wBAAE,GAAGb,SAAS;wBAAEE,MAAM;4BAAE,GAAGF,UAAUE,IAAI;4BAAEE,KAAKoB;wBAAQ;oBAAE;gBACrE;gBACAC,MAAM;gBACNC,WAAW;oBAAEC,WAAW;wBAAEC,MAAM;oBAAM;gBAAE;gBACxCR,WAAW;gBACXN,MAAMA;YACR;YACAvC,MAAMwC,aAAa,CAAC5C,WAAW;gBAC7BoD,KAAK;gBACLP,OAAO;gBACPC,aAAa;gBACb7B,OAAOY,UAAUE,IAAI,EAAEG,OAAO;gBAC9BQ,UAAU,CAACK;oBACT,MAAMW,UAAUlD,gBAAgBuC,EAAEC,MAAM,CAAC/B,KAAK;oBAC9CyB,SAAS;wBAAE,GAAGb,SAAS;wBAAEE,MAAM;4BAAE,GAAGF,UAAUE,IAAI;4BAAEG,KAAKwB;wBAAQ;oBAAE;gBACrE;gBACAJ,MAAM;gBACNC,WAAW;oBAAEC,WAAW;wBAAEC,MAAM;oBAAM;gBAAE;gBACxCR,WAAW;gBACXN,MAAMA;YACR;SACD;IAEL,OAAO,IAAId,UAAUC,IAAI,KAAK,SAAS;QACrC,OAAO1B,MAAMwC,aAAa,CAAC5C,WAAW;YACpC6C,OAAO;YACPC,aAAa;YACb7B,OAAOY,UAAUE,IAAI,EAAEI,QAAQ;YAC/BO,UAAU,CAACK,IACTL,SAAS;oBAAE,GAAGb,SAAS;oBAAEE,MAAM;wBAAEI,MAAMY,EAAEC,MAAM,CAAC/B,KAAK;oBAAC;gBAAE;YAC1DgC,WAAW;YACXN,MAAMA;QACR;IACF,OAAO,IAAId,UAAUC,IAAI,KAAK,QAAQ;QACpC,MAAM6B,UAAU;YACd;gBAAE1C,OAAO;gBAAS4B,OAAO;gBAASe,SAAS;YAAuB;YAClE;gBAAE3C,OAAO;gBAAQ4B,OAAO;gBAAQe,SAAS;YAA4B;YACrE;gBAAE3C,OAAO;gBAAO4B,OAAO;gBAAOe,SAAS;YAA6B;YACpE;gBAAE3C,OAAO;gBAAQ4B,OAAO;gBAAQe,SAAS;YAAuB;YAChE;gBAAE3C,OAAO;gBAAS4B,OAAO;gBAASe,SAAS;YAAwB;SACpE;QAED,OAAOxD,MAAMwC,aAAa,CACxB5C,WACA;YACE6D,QAAQ;YACRhB,OAAO;YACP5B,OAAOY,UAAUE,IAAI,EAAEd,SAAS;YAChCyB,UAAU,CAACK,IACTL,SAAS;oBAAE,GAAGb,SAAS;oBAAEE,MAAM;wBAAEd,OAAO8B,EAAEC,MAAM,CAAC/B,KAAK;oBAAC;gBAAE;YAC3DgC,WAAW;YACXN,MAAMA;QACR,GACAgB,QAAQG,GAAG,CAAC,CAACC,SACX3D,MAAMwC,aAAa,CACjB1C,UACA;gBACEkD,KAAKW,OAAO9C,KAAK;gBACjBA,OAAO8C,OAAO9C,KAAK;YACrB,GACAb,MAAMwC,aAAa,CAAC3C,OAAO;gBAAEmD,KAAK;YAAQ,GAAG;gBAC3ChD,MAAMwC,aAAa,CAACzC,YAAY;oBAAEiD,KAAK;gBAAQ,GAAGW,OAAOlB,KAAK;gBAC9DzC,MAAMwC,aAAa,CACjBzC,YACA;oBACEiD,KAAK;oBACLY,SAAS;gBACX,GACAD,OAAOH,OAAO;aAEjB;IAIT;IACA,OAAO;AACT"}
@@ -1,2 +1,2 @@
1
- import '@testing-library/jest-dom';
1
+ import '@testing-library/jest-dom/vitest';
2
2
  //# sourceMappingURL=setup-tests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-tests.d.ts","sourceRoot":"","sources":["../../src/setup-tests.ts"],"names":[],"mappings":"AAaA,OAAO,2BAA2B,CAAC"}
1
+ {"version":3,"file":"setup-tests.d.ts","sourceRoot":"","sources":["../../src/setup-tests.ts"],"names":[],"mappings":"AAaA,OAAO,kCAAkC,CAAC"}
@@ -10,8 +10,14 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- import '@testing-library/jest-dom';
13
+ import "@testing-library/jest-dom/vitest";
14
14
  // Always mock e-charts during tests since we don't have a proper canvas in jsdom
15
- jest.mock('echarts/core');
15
+ vi.mock('echarts/core');
16
+ // jsdom does not implement ResizeObserver
17
+ globalThis.ResizeObserver = class ResizeObserver {
18
+ observe() {}
19
+ unobserve() {}
20
+ disconnect() {}
21
+ };
16
22
 
17
23
  //# sourceMappingURL=setup-tests.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/setup-tests.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 '@testing-library/jest-dom';\n\n// Always mock e-charts during tests since we don't have a proper canvas in jsdom\njest.mock('echarts/core');\n"],"names":["jest","mock"],"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;AAEjC,OAAO,4BAA4B;AAEnC,iFAAiF;AACjFA,KAAKC,IAAI,CAAC"}
1
+ {"version":3,"sources":["../../src/setup-tests.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 '@testing-library/jest-dom/vitest';\n\n// Always mock e-charts during tests since we don't have a proper canvas in jsdom\nvi.mock('echarts/core');\n\n// jsdom does not implement ResizeObserver\nglobalThis.ResizeObserver = class ResizeObserver {\n observe(): void {}\n unobserve(): void {}\n disconnect(): void {}\n};\n"],"names":["vi","mock","globalThis","ResizeObserver","observe","unobserve","disconnect"],"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;AAEjC,OAAO,mCAAmC;AAE1C,iFAAiF;AACjFA,GAAGC,IAAI,CAAC;AAER,0CAA0C;AAC1CC,WAAWC,cAAc,GAAG,MAAMA;IAChCC,UAAgB,CAAC;IACjBC,YAAkB,CAAC;IACnBC,aAAmB,CAAC;AACtB"}
@@ -1,6 +1,6 @@
1
- import { PanelData } from '@perses-dev/plugin-system';
2
- import { TimeSeriesData } from '@perses-dev/spec';
3
- import { TableOptions } from './models';
1
+ import type { PanelData } from '@perses-dev/plugin-system';
2
+ import type { TimeSeriesData } from '@perses-dev/spec';
3
+ import type { TableOptions } from './models';
4
4
  /**
5
5
  * Options for building raw table data.
6
6
  */
@@ -1 +1 @@
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,CA4ChC"}
1
+ {"version":3,"file":"table-data-utils.d.ts","sourceRoot":"","sources":["../../src/table-data-utils.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;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,CA4ChC"}
@@ -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, 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 // Pick the last (most recent) data point. For range responses the last\n // value covers the window ending at the selected time range's end.\n const lastPoint = ts.values[ts.values.length - 1];\n if (lastPoint === 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 = lastPoint[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 : lastPoint[1];\n }\n\n if (queryMode === 'instant') {\n return { timestamp: lastPoint[0], [valueColumnName]: columnValue, ...labels };\n } else {\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","lastPoint","values","length","undefined","labels","valueColumnName","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,uEAAuE;QACvE,mEAAmE;QACnE,MAAMI,YAAYD,GAAGE,MAAM,CAACF,GAAGE,MAAM,CAACC,MAAM,GAAG,EAAE;QACjD,IAAIF,cAAcG,WAAW;YAC3B,OAAO;gBAAE,GAAGJ,GAAGK,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBf,aAAaY,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAEN,aAAa,GAAG;QACxF,MAAMQ,SACJd,aAAaY,MAAM,KAAK,IACpBH,GAAGK,MAAM,GACTE,OAAOC,OAAO,CAACR,GAAGK,MAAM,IAAI,CAAC,GAAGI,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEd,aAAa,GAAG,CAAC,GAAGe;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAIpB,WAAW;YACboB,cAAcZ,SAAS,CAAC,EAAE;QAC5B,OAAO;YACL,MAAMa,YAAY,AAAC7B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG6B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKX,kBAAkBjB;YACvFwB,cAAcC,YACV;gBAAE,GAAGlB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACoB,MAAM,CAAC,CAACC,IAAMA,MAAMnB;gBAAI;YAAE,IACpFC,SAAS,CAAC,EAAE;QAClB;QAEA,IAAIP,cAAc,WAAW;YAC3B,OAAO;gBAAE0B,WAAWnB,SAAS,CAAC,EAAE;gBAAE,CAACK,gBAAgB,EAAEO;gBAAa,GAAGR,MAAM;YAAC;QAC9E,OAAO;YACL,OAAO;gBAAE,CAACC,gBAAgB,EAAEO;gBAAa,GAAGR,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 type { Labels, PanelData } from '@perses-dev/plugin-system';\nimport type { TimeSeries, TimeSeriesData } from '@perses-dev/spec';\n\nimport type { 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 // Pick the last (most recent) data point. For range responses the last\n // value covers the window ending at the selected time range's end.\n const lastPoint = ts.values[ts.values.length - 1];\n if (lastPoint === 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 = lastPoint[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 : lastPoint[1];\n }\n\n if (queryMode === 'instant') {\n return { timestamp: lastPoint[0], [valueColumnName]: columnValue, ...labels };\n } else {\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","lastPoint","values","length","undefined","labels","valueColumnName","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;AAkBjC;;;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,uEAAuE;QACvE,mEAAmE;QACnE,MAAMI,YAAYD,GAAGE,MAAM,CAACF,GAAGE,MAAM,CAACC,MAAM,GAAG,EAAE;QACjD,IAAIF,cAAcG,WAAW;YAC3B,OAAO;gBAAE,GAAGJ,GAAGK,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBf,aAAaY,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAEN,aAAa,GAAG;QACxF,MAAMQ,SACJd,aAAaY,MAAM,KAAK,IACpBH,GAAGK,MAAM,GACTE,OAAOC,OAAO,CAACR,GAAGK,MAAM,IAAI,CAAC,GAAGI,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEd,aAAa,GAAG,CAAC,GAAGe;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAIpB,WAAW;YACboB,cAAcZ,SAAS,CAAC,EAAE;QAC5B,OAAO;YACL,MAAMa,YAAY,AAAC7B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG6B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKX,kBAAkBjB;YACvFwB,cAAcC,YACV;gBAAE,GAAGlB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACoB,MAAM,CAAC,CAACC,IAAMA,MAAMnB;gBAAI;YAAE,IACpFC,SAAS,CAAC,EAAE;QAClB;QAEA,IAAIP,cAAc,WAAW;YAC3B,OAAO;gBAAE0B,WAAWnB,SAAS,CAAC,EAAE;gBAAE,CAACK,gBAAgB,EAAEO;gBAAa,GAAGR,MAAM;YAAC;QAC9E,OAAO;YACL,OAAO;gBAAE,CAACC,gBAAgB,EAAEO;gBAAa,GAAGR,MAAM;YAAC;QACrD;IACF;AACJ"}
@@ -1,4 +1,4 @@
1
- import { TimeSeriesData } from '@perses-dev/spec';
1
+ import type { 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,"file":"mock-query-results.d.ts","sourceRoot":"","sources":["../../../src/test/mock-query-results.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DpD,CAAC;AAEF,eAAO,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDrD,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,cAsC9C,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,cAgC/C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgElC,CAAC;AAIF,eAAO,MAAM,wBAAwB,EAAE,cAetC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAWtC,CAAC;AAIF,eAAO,MAAM,+BAA+B,EAAE,cAe7C,CAAC;AAIF,eAAO,MAAM,2BAA2B,EAAE,cAIzC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;CAU7C,CAAC"}
1
+ {"version":3,"file":"mock-query-results.d.ts","sourceRoot":"","sources":["../../../src/test/mock-query-results.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DpD,CAAC;AAEF,eAAO,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDrD,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,cAsC9C,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,cAgC/C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgElC,CAAC;AAIF,eAAO,MAAM,wBAAwB,EAAE,cAetC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAWtC,CAAC;AAIF,eAAO,MAAM,+BAA+B,EAAE,cAe7C,CAAC;AAIF,eAAO,MAAM,2BAA2B,EAAE,cAIzC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;CAU7C,CAAC"}
@@ -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/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\n// Two queries where Query 1 covers both namespaces but Query 2 only covers one.\n// After MergeSeries + JoinByColumnValue, ns-b will have null for value #2.\nexport const MOCK_MULTI_QUERY_DATA_Q1: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 100]],\n labels: { namespace: 'ns-a' },\n },\n {\n name: 'namespace=\"ns-b\"',\n values: [[1666479357903, 200]],\n labels: { namespace: 'ns-b' },\n },\n ],\n};\n\nexport const MOCK_MULTI_QUERY_DATA_Q2: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 50]],\n labels: { namespace: 'ns-a' },\n },\n // ns-b intentionally absent — simulates missing data\n ],\n};\n\n// Query where a namespace has genuine zero value (not null).\n// Used to verify 0 is rendered as 0, not as N/A.\nexport const MOCK_MULTI_QUERY_DATA_WITH_ZERO: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 50]],\n labels: { namespace: 'ns-a' },\n },\n {\n name: 'namespace=\"ns-b\"',\n values: [[1666479357903, 0]],\n labels: { namespace: 'ns-b' },\n },\n ],\n};\n\n// Query that returns no data at all — simulates a metric like cpu_request_hard\n// when no ResourceQuotas exist on the cluster.\nexport const MOCK_MULTI_QUERY_DATA_EMPTY: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [],\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_MULTI_QUERY_DATA_Q1","namespace","MOCK_MULTI_QUERY_DATA_Q2","MOCK_MULTI_QUERY_DATA_WITH_ZERO","MOCK_MULTI_QUERY_DATA_EMPTY","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 type { 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\n// Two queries where Query 1 covers both namespaces but Query 2 only covers one.\n// After MergeSeries + JoinByColumnValue, ns-b will have null for value #2.\nexport const MOCK_MULTI_QUERY_DATA_Q1: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 100]],\n labels: { namespace: 'ns-a' },\n },\n {\n name: 'namespace=\"ns-b\"',\n values: [[1666479357903, 200]],\n labels: { namespace: 'ns-b' },\n },\n ],\n};\n\nexport const MOCK_MULTI_QUERY_DATA_Q2: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 50]],\n labels: { namespace: 'ns-a' },\n },\n // ns-b intentionally absent — simulates missing data\n ],\n};\n\n// Query where a namespace has genuine zero value (not null).\n// Used to verify 0 is rendered as 0, not as N/A.\nexport const MOCK_MULTI_QUERY_DATA_WITH_ZERO: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [\n {\n name: 'namespace=\"ns-a\"',\n values: [[1666479357903, 50]],\n labels: { namespace: 'ns-a' },\n },\n {\n name: 'namespace=\"ns-b\"',\n values: [[1666479357903, 0]],\n labels: { namespace: 'ns-b' },\n },\n ],\n};\n\n// Query that returns no data at all — simulates a metric like cpu_request_hard\n// when no ResourceQuotas exist on the cluster.\nexport const MOCK_MULTI_QUERY_DATA_EMPTY: TimeSeriesData = {\n timeRange: { start: new Date(1666625535000), end: new Date(1666625535000) },\n stepMs: 24379,\n series: [],\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_MULTI_QUERY_DATA_Q1","namespace","MOCK_MULTI_QUERY_DATA_Q2","MOCK_MULTI_QUERY_DATA_WITH_ZERO","MOCK_MULTI_QUERY_DATA_EMPTY","MOCK_TIME_SERIES_QUERY_DEFINITION","kind","spec","plugin","query"],"mappings":"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"}
package/mf-manifest.json CHANGED
@@ -5,11 +5,11 @@
5
5
  "name": "Table",
6
6
  "type": "app",
7
7
  "buildInfo": {
8
- "buildVersion": "0.13.0",
8
+ "buildVersion": "0.14.0-beta.2",
9
9
  "buildName": "@perses-dev/table-plugin"
10
10
  },
11
11
  "remoteEntry": {
12
- "name": "__mf/js/Table.73b9cec1.js",
12
+ "name": "__mf/js/Table.cede74c3.js",
13
13
  "path": "",
14
14
  "type": "global"
15
15
  },
@@ -19,9 +19,9 @@
19
19
  "zip": "",
20
20
  "api": ""
21
21
  },
22
- "globalName": "Table",
22
+ "globalName": "Table_0_14_0_beta_2",
23
23
  "pluginVersion": "2.6.0",
24
- "getPublicPath": "function() { const prefix = window.PERSES_PLUGIN_ASSETS_PATH || window.PERSES_APP_CONFIG?.api_prefix || \"\"; return prefix + \"/plugins/Table/\"; }"
24
+ "getPublicPath": "function() { const prefix = window.PERSES_PLUGIN_ASSETS_PATH || window.PERSES_APP_CONFIG?.api_prefix || \"\"; return prefix + \"/plugins/Table~0.14.0-beta.2/\"; }"
25
25
  },
26
26
  "shared": [
27
27
  {
@@ -34,7 +34,7 @@
34
34
  "js": {
35
35
  "async": [],
36
36
  "sync": [
37
- "__mf/js/async/6274.8edae86d.js"
37
+ "__mf/js/async/6274.db89316a.js"
38
38
  ]
39
39
  },
40
40
  "css": {
@@ -54,8 +54,8 @@
54
54
  "js": {
55
55
  "async": [],
56
56
  "sync": [
57
- "__mf/js/async/1616.4828085d.js",
58
- "__mf/js/async/9235.c67cdb1d.js"
57
+ "__mf/js/async/1616.e459f6f7.js",
58
+ "__mf/js/async/9235.78a103e9.js"
59
59
  ]
60
60
  },
61
61
  "css": {
@@ -75,8 +75,8 @@
75
75
  "js": {
76
76
  "async": [],
77
77
  "sync": [
78
- "__mf/js/async/5587.a8a428db.js",
79
- "__mf/js/async/7968.3a9a982e.js"
78
+ "__mf/js/async/5587.c9c77660.js",
79
+ "__mf/js/async/7968.f91456c8.js"
80
80
  ]
81
81
  },
82
82
  "css": {
@@ -89,20 +89,20 @@
89
89
  {
90
90
  "id": "Table:@perses-dev/components",
91
91
  "name": "@perses-dev/components",
92
- "version": "0.54.0",
92
+ "version": "0.55.0-beta.7",
93
93
  "singleton": true,
94
- "requiredVersion": "^0.54.0",
94
+ "requiredVersion": "^0.55.0-beta.7",
95
95
  "assets": {
96
96
  "js": {
97
97
  "async": [],
98
98
  "sync": [
99
- "__mf/js/async/4014.cf88a118.js"
99
+ "__mf/js/async/2251.2ab11c45.js"
100
100
  ]
101
101
  },
102
102
  "css": {
103
103
  "async": [],
104
104
  "sync": [
105
- "__mf/css/async/4014.85c2cbf6.css"
105
+ "__mf/css/async/2251.85c2cbf6.css"
106
106
  ]
107
107
  }
108
108
  },
@@ -111,14 +111,14 @@
111
111
  {
112
112
  "id": "Table:@perses-dev/dashboards",
113
113
  "name": "@perses-dev/dashboards",
114
- "version": "0.54.0",
114
+ "version": "0.55.0-beta.7",
115
115
  "singleton": true,
116
- "requiredVersion": "^0.54.0",
116
+ "requiredVersion": "^0.55.0-beta.7",
117
117
  "assets": {
118
118
  "js": {
119
119
  "async": [],
120
120
  "sync": [
121
- "__mf/js/async/7984.a8edc213.js"
121
+ "__mf/js/async/1522.f490bae9.js"
122
122
  ]
123
123
  },
124
124
  "css": {
@@ -131,14 +131,14 @@
131
131
  {
132
132
  "id": "Table:@perses-dev/plugin-system",
133
133
  "name": "@perses-dev/plugin-system",
134
- "version": "0.54.0",
134
+ "version": "0.55.0-beta.7",
135
135
  "singleton": true,
136
- "requiredVersion": "^0.54.0",
136
+ "requiredVersion": "^0.55.0-beta.7",
137
137
  "assets": {
138
138
  "js": {
139
139
  "async": [],
140
140
  "sync": [
141
- "__mf/js/async/3981.52e94742.js"
141
+ "__mf/js/async/2650.b874a7cd.js"
142
142
  ]
143
143
  },
144
144
  "css": {
@@ -151,14 +151,14 @@
151
151
  {
152
152
  "id": "Table:@perses-dev/spec",
153
153
  "name": "@perses-dev/spec",
154
- "version": "0.2.0",
154
+ "version": "0.3.0-beta.5",
155
155
  "singleton": true,
156
- "requiredVersion": "^0.2.0",
156
+ "requiredVersion": "^0.3.0-beta.5",
157
157
  "assets": {
158
158
  "js": {
159
159
  "async": [],
160
160
  "sync": [
161
- "__mf/js/async/2842.a52597e6.js"
161
+ "__mf/js/async/3923.7b9985ff.js"
162
162
  ]
163
163
  },
164
164
  "css": {
@@ -178,7 +178,7 @@
178
178
  "js": {
179
179
  "async": [],
180
180
  "sync": [
181
- "__mf/js/async/5481.6496fac9.js"
181
+ "__mf/js/async/7862.cbf7b286.js"
182
182
  ]
183
183
  },
184
184
  "css": {
@@ -198,7 +198,7 @@
198
198
  "js": {
199
199
  "async": [],
200
200
  "sync": [
201
- "__mf/js/async/7192.692181c8.js"
201
+ "__mf/js/async/7192.7e6af5a2.js"
202
202
  ]
203
203
  },
204
204
  "css": {
@@ -218,7 +218,7 @@
218
218
  "js": {
219
219
  "async": [],
220
220
  "sync": [
221
- "__mf/js/async/873.264fedc9.js"
221
+ "__mf/js/async/873.fc45c2c6.js"
222
222
  ]
223
223
  },
224
224
  "css": {
@@ -238,7 +238,7 @@
238
238
  "js": {
239
239
  "async": [],
240
240
  "sync": [
241
- "__mf/js/async/392.b6035b41.js"
241
+ "__mf/js/async/392.3b464b91.js"
242
242
  ]
243
243
  },
244
244
  "css": {
@@ -258,7 +258,7 @@
258
258
  "js": {
259
259
  "async": [],
260
260
  "sync": [
261
- "__mf/js/async/8470.b9762117.js"
261
+ "__mf/js/async/8470.f35cd609.js"
262
262
  ]
263
263
  },
264
264
  "css": {
@@ -278,7 +278,7 @@
278
278
  "js": {
279
279
  "async": [],
280
280
  "sync": [
281
- "__mf/js/async/8356.152d5686.js"
281
+ "__mf/js/async/8356.d5d8a6a3.js"
282
282
  ]
283
283
  },
284
284
  "css": {
@@ -298,7 +298,7 @@
298
298
  "js": {
299
299
  "async": [],
300
300
  "sync": [
301
- "__mf/js/async/4121.e7df36d6.js"
301
+ "__mf/js/async/4121.ed15fe74.js"
302
302
  ]
303
303
  },
304
304
  "css": {
@@ -318,7 +318,7 @@
318
318
  "js": {
319
319
  "async": [],
320
320
  "sync": [
321
- "__mf/js/async/7978.116e4d81.js"
321
+ "__mf/js/async/7978.4553ce86.js"
322
322
  ]
323
323
  },
324
324
  "css": {
@@ -337,29 +337,31 @@
337
337
  "assets": {
338
338
  "js": {
339
339
  "sync": [
340
- "__mf/js/async/9051.c4deebd7.js",
341
- "__mf/js/async/868.507e984c.js",
342
- "__mf/js/async/5021.c663603d.js",
343
- "__mf/js/async/__federation_expose_Table.5d0cfb46.js"
340
+ "__mf/js/async/5054.a0d861ae.js",
341
+ "__mf/js/async/5741.ef0c5df4.js",
342
+ "__mf/js/async/2035.e9f08b1d.js",
343
+ "__mf/js/async/9321.ddbe25a2.js",
344
+ "__mf/js/async/__federation_expose_Table.e7708af8.js"
344
345
  ],
345
346
  "async": [
346
- "__mf/js/async/lib-router.3493bbf9.js",
347
- "__mf/js/async/1432.4e515509.js",
348
- "__mf/js/async/6811.9d4b123a.js",
349
- "__mf/js/async/629.8cff215d.js",
350
- "__mf/js/async/1589.124ce93d.js",
351
- "__mf/js/async/9588.d23e2ed3.js",
352
- "__mf/js/async/5071.839a8f1a.js",
353
- "__mf/js/async/2043.1f09864b.js",
354
- "__mf/js/async/7413.c9310b8a.js",
355
- "__mf/js/async/2082.231e8397.js",
356
- "__mf/js/async/7177.e0e5ba2f.js"
347
+ "__mf/js/async/1186.76f7a9c4.js",
348
+ "__mf/js/async/2465.b442bc56.js",
349
+ "__mf/js/async/9588.039ce076.js",
350
+ "__mf/js/async/5071.1e325f38.js",
351
+ "__mf/js/async/8985.6cc7edf9.js",
352
+ "__mf/js/async/2043.ddbebd72.js",
353
+ "__mf/js/async/9148.1ff77cf0.js",
354
+ "__mf/js/async/lib-router.e968bcc8.js",
355
+ "__mf/js/async/9207.ca6ac0b2.js",
356
+ "__mf/js/async/4077.dfd731dd.js",
357
+ "__mf/js/async/4496.487e4f10.js",
358
+ "__mf/js/async/5153.8a046a40.js"
357
359
  ]
358
360
  },
359
361
  "css": {
360
362
  "sync": [],
361
363
  "async": [
362
- "__mf/css/async/4014.85c2cbf6.css"
364
+ "__mf/css/async/2251.85c2cbf6.css"
363
365
  ]
364
366
  }
365
367
  },