@perses-dev/table-plugin 0.9.0 → 0.10.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 (231) hide show
  1. package/__mf/css/async/3061.d3010b86.css +1 -0
  2. package/__mf/css/async/5442.d3010b86.css +1 -0
  3. package/__mf/css/async/7823.d3010b86.css +1 -0
  4. package/__mf/js/Table.7e37b83d.js +6 -0
  5. package/__mf/js/async/1432.4dcbe7e3.js +1 -0
  6. package/__mf/js/async/1490.7aa42bc8.js +22 -0
  7. package/__mf/js/async/1616.7a74f4ef.js +1 -0
  8. package/__mf/js/async/2043.fdebf89c.js +2 -0
  9. package/__mf/js/async/3827.1b39b042.js +38 -0
  10. package/__mf/js/async/392.c2307fe5.js +2 -0
  11. package/__mf/js/async/{1964.ad4fb2b0.js → 4121.8e97ef88.js} +2 -2
  12. package/__mf/js/async/4761.08da9107.js +1 -0
  13. package/__mf/js/async/{2651.4ede9028.js → 5002.3189d214.js} +1 -1
  14. package/__mf/js/async/{1640.c1ed5a05.js → 5019.5318688a.js} +1 -1
  15. package/__mf/js/async/5071.91e1c002.js +1 -0
  16. package/__mf/js/async/5501.fa3f80e1.js +1 -0
  17. package/__mf/js/async/{5214.00911b97.js → 5587.f5f2b0cc.js} +1 -1
  18. package/__mf/js/async/5806.44fbc2a8.js +1 -0
  19. package/__mf/js/async/6274.14683c28.js +2 -0
  20. package/__mf/js/async/6283.e044c368.js +2 -0
  21. package/__mf/js/async/6587.d2b9768c.js +110 -0
  22. package/__mf/js/async/6753.032ce611.js +1 -0
  23. package/__mf/js/async/7142.5d923107.js +1 -0
  24. package/__mf/js/async/7177.356298ae.js +1 -0
  25. package/__mf/js/async/7192.66c9e3a5.js +1 -0
  26. package/__mf/js/async/7208.125848cf.js +7 -0
  27. package/__mf/js/async/7417.86d0bc09.js +1 -0
  28. package/__mf/js/async/7968.a66bfadb.js +1 -0
  29. package/__mf/js/async/7978.a19f5a4f.js +1 -0
  30. package/__mf/js/async/8356.8ae40b6a.js +1 -0
  31. package/__mf/js/async/8470.1b8b20ff.js +2 -0
  32. package/__mf/js/async/8728.546704f2.js +1 -0
  33. package/__mf/js/async/873.a7310675.js +1 -0
  34. package/__mf/js/async/9235.eee50e10.js +1 -0
  35. package/__mf/js/async/9355.8b0c6885.js +2 -0
  36. package/__mf/js/async/941.333875f4.js +2 -0
  37. package/__mf/js/async/9588.7b021071.js +1 -0
  38. package/__mf/js/async/__federation_expose_Table.4836d198.js +1 -0
  39. package/__mf/js/async/lib-router.8fd59130.js +2 -0
  40. package/__mf/js/main.289caaea.js +6 -0
  41. package/lib/Table.d.ts +2 -2
  42. package/lib/Table.d.ts.map +1 -1
  43. package/lib/Table.js +2 -6
  44. package/lib/Table.js.map +1 -1
  45. package/lib/bootstrap.js +1 -1
  46. package/lib/bootstrap.js.map +1 -1
  47. package/lib/cjs/Table.js +9 -13
  48. package/lib/cjs/components/CellsEditor/CellsEditor.js +30 -0
  49. package/lib/cjs/{CellsEditor → components/CellsEditor}/index.js +0 -1
  50. package/lib/cjs/components/ColumnsEditor/ColumnEditor.js +241 -0
  51. package/lib/cjs/{CellsEditor/CellEditor.js → components/ConditionalPanel.js} +167 -197
  52. package/lib/cjs/components/TablePanel.js +576 -0
  53. package/lib/cjs/{TableSettingsEditor.js → components/TableSettingsEditor.js} +32 -4
  54. package/lib/cjs/components/index.js +37 -0
  55. package/lib/cjs/index-federation.js +12 -12
  56. package/lib/cjs/index.js +2 -9
  57. package/lib/cjs/models/index.js +31 -0
  58. package/lib/cjs/{table-model.js → models/model.js} +1 -12
  59. package/lib/cjs/models/table-model.js +252 -0
  60. package/lib/cjs/test/mock-query-results.js +7 -7
  61. package/lib/{CellsEditor → components/CellsEditor}/CellsEditor.d.ts +1 -1
  62. package/lib/components/CellsEditor/CellsEditor.d.ts.map +1 -0
  63. package/lib/components/CellsEditor/CellsEditor.js +22 -0
  64. package/lib/components/CellsEditor/CellsEditor.js.map +1 -0
  65. package/lib/components/CellsEditor/index.d.ts +2 -0
  66. package/lib/components/CellsEditor/index.d.ts.map +1 -0
  67. package/lib/{CellsEditor → components/CellsEditor}/index.js +0 -1
  68. package/lib/components/CellsEditor/index.js.map +1 -0
  69. package/lib/{ColumnsEditor → components/ColumnsEditor}/ColumnEditor.d.ts +1 -1
  70. package/lib/components/ColumnsEditor/ColumnEditor.d.ts.map +1 -0
  71. package/lib/components/ColumnsEditor/ColumnEditor.js +233 -0
  72. package/lib/components/ColumnsEditor/ColumnEditor.js.map +1 -0
  73. package/lib/components/ColumnsEditor/ColumnEditorContainer.d.ts.map +1 -0
  74. package/lib/{ColumnsEditor → components/ColumnsEditor}/ColumnEditorContainer.js +1 -1
  75. package/lib/components/ColumnsEditor/ColumnEditorContainer.js.map +1 -0
  76. package/lib/{ColumnsEditor → components/ColumnsEditor}/ColumnsEditor.d.ts +1 -1
  77. package/lib/components/ColumnsEditor/ColumnsEditor.d.ts.map +1 -0
  78. package/lib/{ColumnsEditor → components/ColumnsEditor}/ColumnsEditor.js +1 -1
  79. package/lib/components/ColumnsEditor/ColumnsEditor.js.map +1 -0
  80. package/lib/components/ColumnsEditor/index.d.ts.map +1 -0
  81. package/lib/components/ColumnsEditor/index.js.map +1 -0
  82. package/lib/components/ConditionalPanel.d.ts +15 -0
  83. package/lib/components/ConditionalPanel.d.ts.map +1 -0
  84. package/lib/{CellsEditor/CellEditor.js → components/ConditionalPanel.js} +159 -197
  85. package/lib/components/ConditionalPanel.js.map +1 -0
  86. package/lib/components/EmbeddedPanel.d.ts.map +1 -0
  87. package/lib/components/EmbeddedPanel.js.map +1 -0
  88. package/lib/{TableCellsEditor.d.ts → components/TableCellsEditor.d.ts} +1 -1
  89. package/lib/components/TableCellsEditor.d.ts.map +1 -0
  90. package/lib/components/TableCellsEditor.js.map +1 -0
  91. package/lib/{TableColumnsEditor.d.ts → components/TableColumnsEditor.d.ts} +1 -1
  92. package/lib/components/TableColumnsEditor.d.ts.map +1 -0
  93. package/lib/components/TableColumnsEditor.js.map +1 -0
  94. package/lib/{TablePanel.d.ts → components/TablePanel.d.ts} +1 -1
  95. package/lib/components/TablePanel.d.ts.map +1 -0
  96. package/lib/components/TablePanel.js +560 -0
  97. package/lib/components/TablePanel.js.map +1 -0
  98. package/lib/{TableSettingsEditor.d.ts → components/TableSettingsEditor.d.ts} +1 -1
  99. package/lib/components/TableSettingsEditor.d.ts.map +1 -0
  100. package/lib/{TableSettingsEditor.js → components/TableSettingsEditor.js} +33 -5
  101. package/lib/components/TableSettingsEditor.js.map +1 -0
  102. package/lib/{TableTransformsEditor.d.ts → components/TableTransformsEditor.d.ts} +1 -1
  103. package/lib/components/TableTransformsEditor.d.ts.map +1 -0
  104. package/lib/{TableTransformsEditor.js → components/TableTransformsEditor.js} +1 -1
  105. package/lib/components/TableTransformsEditor.js.map +1 -0
  106. package/lib/components/index.d.ts +9 -0
  107. package/lib/components/index.d.ts.map +1 -0
  108. package/lib/components/index.js +22 -0
  109. package/lib/components/index.js.map +1 -0
  110. package/lib/index.d.ts +2 -9
  111. package/lib/index.d.ts.map +1 -1
  112. package/lib/index.js +2 -9
  113. package/lib/index.js.map +1 -1
  114. package/lib/models/index.d.ts +3 -0
  115. package/lib/models/index.d.ts.map +1 -0
  116. package/lib/{table-model.js → models/index.js} +4 -9
  117. package/lib/models/index.js.map +1 -0
  118. package/lib/models/model.d.ts.map +1 -0
  119. package/lib/models/model.js +15 -0
  120. package/lib/models/model.js.map +1 -0
  121. package/lib/{table-model.d.ts → models/table-model.d.ts} +24 -1
  122. package/lib/models/table-model.d.ts.map +1 -0
  123. package/lib/models/table-model.js +233 -0
  124. package/lib/models/table-model.js.map +1 -0
  125. package/mf-manifest.json +44 -45
  126. package/mf-stats.json +45 -46
  127. package/package.json +5 -5
  128. package/__mf/css/async/2341.cbbd94a8.css +0 -1
  129. package/__mf/css/async/5263.cbbd94a8.css +0 -1
  130. package/__mf/css/async/6759.cbbd94a8.css +0 -1
  131. package/__mf/js/Table.09045c91.js +0 -5
  132. package/__mf/js/async/1143.68727fe6.js +0 -1
  133. package/__mf/js/async/2292.12f77288.js +0 -2
  134. package/__mf/js/async/2854.fc0ce4ac.js +0 -110
  135. package/__mf/js/async/3224.5efdac43.js +0 -1
  136. package/__mf/js/async/3391.62c7afd4.js +0 -73
  137. package/__mf/js/async/3863.5ed15409.js +0 -2
  138. package/__mf/js/async/3960.ad46df53.js +0 -2
  139. package/__mf/js/async/3980.17fb5371.js +0 -2
  140. package/__mf/js/async/4075.e2a2c230.js +0 -1
  141. package/__mf/js/async/4238.ea9515aa.js +0 -1
  142. package/__mf/js/async/4300.fc319dfb.js +0 -38
  143. package/__mf/js/async/4368.3e460b07.js +0 -1
  144. package/__mf/js/async/4483.b6379137.js +0 -1
  145. package/__mf/js/async/5061.85655462.js +0 -2
  146. package/__mf/js/async/5377.6522c49a.js +0 -1
  147. package/__mf/js/async/5409.524589b2.js +0 -1
  148. package/__mf/js/async/5981.91033d82.js +0 -2
  149. package/__mf/js/async/6284.5f775177.js +0 -1
  150. package/__mf/js/async/6292.c204d39b.js +0 -1
  151. package/__mf/js/async/6770.94607b71.js +0 -1
  152. package/__mf/js/async/694.20d8be37.js +0 -1
  153. package/__mf/js/async/738.3929068d.js +0 -1
  154. package/__mf/js/async/7740.4fee7abb.js +0 -1
  155. package/__mf/js/async/8313.b86a056a.js +0 -7
  156. package/__mf/js/async/8488.9f177839.js +0 -1
  157. package/__mf/js/async/8599.4f1f88c0.js +0 -1
  158. package/__mf/js/async/9010.aaf984f3.js +0 -1
  159. package/__mf/js/async/9173.c646dd1e.js +0 -2
  160. package/__mf/js/async/9509.1c4313e0.js +0 -1
  161. package/__mf/js/async/9667.211c6bdb.js +0 -1
  162. package/__mf/js/async/__federation_expose_Table.3668e352.js +0 -1
  163. package/__mf/js/async/lib-router.f3ef5227.js +0 -2
  164. package/__mf/js/main.0cb08842.js +0 -5
  165. package/lib/CellsEditor/CellEditor.d.ts +0 -10
  166. package/lib/CellsEditor/CellEditor.d.ts.map +0 -1
  167. package/lib/CellsEditor/CellEditor.js.map +0 -1
  168. package/lib/CellsEditor/CellsEditor.d.ts.map +0 -1
  169. package/lib/CellsEditor/CellsEditor.js +0 -123
  170. package/lib/CellsEditor/CellsEditor.js.map +0 -1
  171. package/lib/CellsEditor/index.d.ts +0 -3
  172. package/lib/CellsEditor/index.d.ts.map +0 -1
  173. package/lib/CellsEditor/index.js.map +0 -1
  174. package/lib/ColumnsEditor/ColumnEditor.d.ts.map +0 -1
  175. package/lib/ColumnsEditor/ColumnEditor.js +0 -213
  176. package/lib/ColumnsEditor/ColumnEditor.js.map +0 -1
  177. package/lib/ColumnsEditor/ColumnEditorContainer.d.ts.map +0 -1
  178. package/lib/ColumnsEditor/ColumnEditorContainer.js.map +0 -1
  179. package/lib/ColumnsEditor/ColumnsEditor.d.ts.map +0 -1
  180. package/lib/ColumnsEditor/ColumnsEditor.js.map +0 -1
  181. package/lib/ColumnsEditor/index.d.ts.map +0 -1
  182. package/lib/ColumnsEditor/index.js.map +0 -1
  183. package/lib/EmbeddedPanel.d.ts.map +0 -1
  184. package/lib/EmbeddedPanel.js.map +0 -1
  185. package/lib/TableCellsEditor.d.ts.map +0 -1
  186. package/lib/TableCellsEditor.js.map +0 -1
  187. package/lib/TableColumnsEditor.d.ts.map +0 -1
  188. package/lib/TableColumnsEditor.js.map +0 -1
  189. package/lib/TablePanel.d.ts.map +0 -1
  190. package/lib/TablePanel.js +0 -325
  191. package/lib/TablePanel.js.map +0 -1
  192. package/lib/TableSettingsEditor.d.ts.map +0 -1
  193. package/lib/TableSettingsEditor.js.map +0 -1
  194. package/lib/TableTransformsEditor.d.ts.map +0 -1
  195. package/lib/TableTransformsEditor.js.map +0 -1
  196. package/lib/cjs/CellsEditor/CellsEditor.js +0 -136
  197. package/lib/cjs/ColumnsEditor/ColumnEditor.js +0 -221
  198. package/lib/cjs/TablePanel.js +0 -341
  199. package/lib/cjs/model.js +0 -4
  200. package/lib/model.d.ts.map +0 -1
  201. package/lib/model.js +0 -3
  202. package/lib/model.js.map +0 -1
  203. package/lib/table-model.d.ts.map +0 -1
  204. package/lib/table-model.js.map +0 -1
  205. /package/__mf/js/async/{3391.62c7afd4.js.LICENSE.txt → 1490.7aa42bc8.js.LICENSE.txt} +0 -0
  206. /package/__mf/js/async/{2292.12f77288.js.LICENSE.txt → 2043.fdebf89c.js.LICENSE.txt} +0 -0
  207. /package/__mf/js/async/{5981.91033d82.js.LICENSE.txt → 392.c2307fe5.js.LICENSE.txt} +0 -0
  208. /package/__mf/js/async/{1964.ad4fb2b0.js.LICENSE.txt → 4121.8e97ef88.js.LICENSE.txt} +0 -0
  209. /package/__mf/js/async/{3960.ad46df53.js.LICENSE.txt → 6274.14683c28.js.LICENSE.txt} +0 -0
  210. /package/__mf/js/async/{3980.17fb5371.js.LICENSE.txt → 6283.e044c368.js.LICENSE.txt} +0 -0
  211. /package/__mf/js/async/{2854.fc0ce4ac.js.LICENSE.txt → 6587.d2b9768c.js.LICENSE.txt} +0 -0
  212. /package/__mf/js/async/{8313.b86a056a.js.LICENSE.txt → 7208.125848cf.js.LICENSE.txt} +0 -0
  213. /package/__mf/js/async/{9173.c646dd1e.js.LICENSE.txt → 8470.1b8b20ff.js.LICENSE.txt} +0 -0
  214. /package/__mf/js/async/{5061.85655462.js.LICENSE.txt → 9355.8b0c6885.js.LICENSE.txt} +0 -0
  215. /package/__mf/js/async/{3863.5ed15409.js.LICENSE.txt → 941.333875f4.js.LICENSE.txt} +0 -0
  216. /package/__mf/js/async/{lib-router.f3ef5227.js.LICENSE.txt → lib-router.8fd59130.js.LICENSE.txt} +0 -0
  217. /package/lib/cjs/{ColumnsEditor → components/ColumnsEditor}/ColumnEditorContainer.js +0 -0
  218. /package/lib/cjs/{ColumnsEditor → components/ColumnsEditor}/ColumnsEditor.js +0 -0
  219. /package/lib/cjs/{ColumnsEditor → components/ColumnsEditor}/index.js +0 -0
  220. /package/lib/cjs/{EmbeddedPanel.js → components/EmbeddedPanel.js} +0 -0
  221. /package/lib/cjs/{TableCellsEditor.js → components/TableCellsEditor.js} +0 -0
  222. /package/lib/cjs/{TableColumnsEditor.js → components/TableColumnsEditor.js} +0 -0
  223. /package/lib/cjs/{TableTransformsEditor.js → components/TableTransformsEditor.js} +0 -0
  224. /package/lib/{ColumnsEditor → components/ColumnsEditor}/ColumnEditorContainer.d.ts +0 -0
  225. /package/lib/{ColumnsEditor → components/ColumnsEditor}/index.d.ts +0 -0
  226. /package/lib/{ColumnsEditor → components/ColumnsEditor}/index.js +0 -0
  227. /package/lib/{EmbeddedPanel.d.ts → components/EmbeddedPanel.d.ts} +0 -0
  228. /package/lib/{EmbeddedPanel.js → components/EmbeddedPanel.js} +0 -0
  229. /package/lib/{TableCellsEditor.js → components/TableCellsEditor.js} +0 -0
  230. /package/lib/{TableColumnsEditor.js → components/TableColumnsEditor.js} +0 -0
  231. /package/lib/{model.d.ts → models/model.d.ts} +0 -0
package/lib/TablePanel.js DELETED
@@ -1,325 +0,0 @@
1
- // Copyright 2024 The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
14
- import { Table } from '@perses-dev/components';
15
- import { useEffect, useMemo, useState } from 'react';
16
- import { formatValue, useTransformData } from '@perses-dev/core';
17
- import { EmbeddedPanel } from './EmbeddedPanel';
18
- function generateCellContentConfig(column) {
19
- const plugin = column.plugin;
20
- if (plugin !== undefined) {
21
- return {
22
- cell: (ctx)=>{
23
- const panelData = ctx.getValue();
24
- if (!panelData) return /*#__PURE__*/ _jsx(_Fragment, {});
25
- return /*#__PURE__*/ _jsx(EmbeddedPanel, {
26
- kind: plugin.kind,
27
- spec: plugin.spec,
28
- queryResults: [
29
- panelData
30
- ]
31
- });
32
- },
33
- cellDescription: column.cellDescription ? ()=>`${column.cellDescription}` : ()=>''
34
- };
35
- }
36
- return {
37
- cell: (ctx)=>{
38
- const cellValue = ctx.getValue();
39
- return typeof cellValue === 'number' && column.format ? formatValue(cellValue, column.format) : cellValue;
40
- },
41
- cellDescription: column.cellDescription ? ()=>`${column.cellDescription}` : undefined
42
- };
43
- }
44
- /*
45
- * Generate column config from column definitions, if a column has multiple definitions, the first one will be used.
46
- * If column is hidden, return undefined.
47
- * If column do not have a definition, return a default column config.
48
- */ function generateColumnConfig(name, columnSettings) {
49
- for (const column of columnSettings){
50
- if (column.name === name) {
51
- if (column.hide) {
52
- return undefined;
53
- }
54
- return {
55
- accessorKey: name,
56
- header: column.header ?? name,
57
- headerDescription: column.headerDescription,
58
- enableSorting: column.enableSorting,
59
- width: column.width,
60
- align: column.align,
61
- ...generateCellContentConfig(column)
62
- };
63
- }
64
- }
65
- return {
66
- accessorKey: name,
67
- header: name
68
- };
69
- }
70
- function generateCellConfig(value, settings) {
71
- for (const setting of settings){
72
- if (setting.condition.kind === 'Value' && setting.condition.spec?.value === String(value)) {
73
- return {
74
- text: setting.text,
75
- textColor: setting.textColor,
76
- backgroundColor: setting.backgroundColor
77
- };
78
- }
79
- if (setting.condition.kind === 'Range' && !Number.isNaN(Number(value))) {
80
- const numericValue = Number(value);
81
- if (setting.condition.spec?.min !== undefined && setting.condition.spec?.max !== undefined && numericValue >= +setting.condition.spec?.min && numericValue <= +setting.condition.spec?.max) {
82
- return {
83
- text: setting.text,
84
- textColor: setting.textColor,
85
- backgroundColor: setting.backgroundColor
86
- };
87
- }
88
- if (setting.condition.spec?.min !== undefined && numericValue >= +setting.condition.spec?.min) {
89
- return {
90
- text: setting.text,
91
- textColor: setting.textColor,
92
- backgroundColor: setting.backgroundColor
93
- };
94
- }
95
- if (setting.condition.spec?.max !== undefined && numericValue <= +setting.condition.spec?.max) {
96
- return {
97
- text: setting.text,
98
- textColor: setting.textColor,
99
- backgroundColor: setting.backgroundColor
100
- };
101
- }
102
- }
103
- if (setting.condition.kind === 'Regex' && setting.condition.spec?.expr) {
104
- const regex = new RegExp(setting.condition.spec?.expr);
105
- if (regex.test(String(value))) {
106
- return {
107
- text: setting.text,
108
- textColor: setting.textColor,
109
- backgroundColor: setting.backgroundColor
110
- };
111
- }
112
- }
113
- if (setting.condition.kind === 'Misc' && setting.condition.spec?.value) {
114
- if (setting.condition.spec?.value === 'empty' && value === '') {
115
- return {
116
- text: setting.text,
117
- textColor: setting.textColor,
118
- backgroundColor: setting.backgroundColor
119
- };
120
- }
121
- if (setting.condition.spec?.value === 'null' && (value === null || value === undefined)) {
122
- return {
123
- text: setting.text,
124
- textColor: setting.textColor,
125
- backgroundColor: setting.backgroundColor
126
- };
127
- }
128
- if (setting.condition.spec?.value === 'NaN' && Number.isNaN(value)) {
129
- return {
130
- text: setting.text,
131
- textColor: setting.textColor,
132
- backgroundColor: setting.backgroundColor
133
- };
134
- }
135
- if (setting.condition.spec?.value === 'true' && value === true) {
136
- return {
137
- text: setting.text,
138
- textColor: setting.textColor,
139
- backgroundColor: setting.backgroundColor
140
- };
141
- }
142
- if (setting.condition.spec?.value === 'false' && value === false) {
143
- return {
144
- text: setting.text,
145
- textColor: setting.textColor,
146
- backgroundColor: setting.backgroundColor
147
- };
148
- }
149
- }
150
- }
151
- return undefined;
152
- }
153
- export function getTablePanelQueryOptions(spec) {
154
- // if any cell renders a panel plugin, perform a range query instead of an instant query
155
- return {
156
- mode: (spec.columnSettings ?? []).some((c)=>c.plugin) ? 'range' : 'instant'
157
- };
158
- }
159
- export function TablePanel({ contentDimensions, spec, queryResults }) {
160
- // TODO: handle other query types
161
- const queryMode = getTablePanelQueryOptions(spec).mode;
162
- const rawData = useMemo(()=>{
163
- // Transform query results to a tabular format:
164
- // [ { timestamp: 123, value: 456, labelName1: labelValue1 }, ... ]
165
- return queryResults.flatMap((data, queryIndex)=>data.data.series.map((ts)=>({
166
- data,
167
- ts,
168
- queryIndex
169
- }))).map(({ data, ts, queryIndex })=>{
170
- if (ts.values[0] === undefined) {
171
- return {
172
- ...ts.labels
173
- };
174
- }
175
- // If there are multiple queries, we need to add the query index to the value key and label key to avoid conflicts
176
- const valueColumnName = queryResults.length === 1 ? 'value' : `value #${queryIndex + 1}`;
177
- const labels = queryResults.length === 1 ? ts.labels : Object.entries(ts.labels ?? {}).reduce((acc, [key, value])=>{
178
- if (key) acc[`${key} #${queryIndex + 1}`] = value;
179
- return acc;
180
- }, {});
181
- // If the cell visualization is a panel plugin, filter the data by the current series
182
- const columnValue = (spec.columnSettings ?? []).find((x)=>x.name === valueColumnName)?.plugin ? {
183
- ...data,
184
- data: {
185
- ...data.data,
186
- series: data.data.series.filter((s)=>s === ts)
187
- }
188
- } : ts.values[0][1];
189
- if (queryMode === 'instant') {
190
- // Timestamp is not indexed as it will be the same for all queries
191
- return {
192
- timestamp: ts.values[0][0],
193
- [valueColumnName]: columnValue,
194
- ...labels
195
- };
196
- } else {
197
- // Don't add a timestamp for range queries
198
- return {
199
- [valueColumnName]: columnValue,
200
- ...labels
201
- };
202
- }
203
- });
204
- }, [
205
- queryResults,
206
- queryMode,
207
- spec.columnSettings
208
- ]);
209
- // Transform will be applied by their orders on the original data
210
- const data = useTransformData(rawData, spec.transforms ?? []);
211
- const keys = useMemo(()=>{
212
- const result = [];
213
- for (const entry of data){
214
- for (const key of Object.keys(entry)){
215
- if (!result.includes(key)) {
216
- result.push(key);
217
- }
218
- }
219
- }
220
- return result;
221
- }, [
222
- data
223
- ]);
224
- const columns = useMemo(()=>{
225
- const columns = [];
226
- // Taking the customized columns first for the ordering of the columns in the table
227
- const customizedColumns = spec.columnSettings?.map((column)=>column.name).filter((name)=>keys.includes(name)) ?? [];
228
- const defaultColumns = keys.filter((key)=>!customizedColumns.includes(key));
229
- for (const key of customizedColumns){
230
- const columnConfig = generateColumnConfig(key, spec.columnSettings ?? []);
231
- if (columnConfig !== undefined) {
232
- columns.push(columnConfig);
233
- }
234
- }
235
- for (const key of defaultColumns){
236
- const columnConfig = generateColumnConfig(key, spec.columnSettings ?? []);
237
- if (columnConfig !== undefined) {
238
- columns.push(columnConfig);
239
- }
240
- }
241
- return columns;
242
- }, [
243
- keys,
244
- spec.columnSettings
245
- ]);
246
- // Generate cell settings that will be used by the table to render cells (text color, background color, ...)
247
- const cellConfigs = useMemo(()=>{
248
- // If there is no cell settings, return an empty array
249
- if (spec.cellSettings === undefined) {
250
- return {};
251
- }
252
- const result = {};
253
- let index = 0;
254
- for (const row of data){
255
- // Transforming key to object to extend the row with undefined values if the key is not present
256
- // for checking the cell config "Misc" condition with "null"
257
- const keysAsObj = keys.reduce((acc, key)=>{
258
- acc[key] = undefined;
259
- return acc;
260
- }, {});
261
- const extendRow = {
262
- ...keysAsObj,
263
- ...row
264
- };
265
- for (const [key, value] of Object.entries(extendRow)){
266
- const cellConfig = generateCellConfig(value, spec.cellSettings ?? []);
267
- if (cellConfig) {
268
- result[`${index}_${key}`] = cellConfig;
269
- }
270
- }
271
- index++;
272
- }
273
- return result;
274
- }, [
275
- data,
276
- keys,
277
- spec.cellSettings
278
- ]);
279
- function generateDefaultSortingState() {
280
- return spec.columnSettings?.filter((column)=>column.sort !== undefined).map((column)=>{
281
- return {
282
- id: column.name,
283
- desc: column.sort === 'desc'
284
- };
285
- }) ?? [];
286
- }
287
- const [sorting, setSorting] = useState(generateDefaultSortingState());
288
- const [pagination, setPagination] = useState(spec.pagination ? {
289
- pageIndex: 0,
290
- pageSize: 10
291
- } : undefined);
292
- useEffect(()=>{
293
- // If the pagination setting changes from no pagination to pagination, but the pagination state is undefined, update the pagination state
294
- if (spec.pagination && !pagination) {
295
- setPagination({
296
- pageIndex: 0,
297
- pageSize: 10
298
- });
299
- } else if (!spec.pagination && pagination) {
300
- setPagination(undefined);
301
- }
302
- }, [
303
- spec.pagination,
304
- pagination
305
- ]);
306
- if (contentDimensions === undefined) {
307
- return null;
308
- }
309
- return /*#__PURE__*/ _jsx(Table, {
310
- data: data,
311
- columns: columns,
312
- cellConfigs: cellConfigs,
313
- height: contentDimensions.height,
314
- width: contentDimensions.width,
315
- density: spec.density,
316
- defaultColumnWidth: spec.defaultColumnWidth,
317
- defaultColumnHeight: spec.defaultColumnHeight,
318
- sorting: sorting,
319
- onSortingChange: setSorting,
320
- pagination: pagination,
321
- onPaginationChange: setPagination
322
- });
323
- }
324
-
325
- //# sourceMappingURL=TablePanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/TablePanel.tsx"],"sourcesContent":["// Copyright 2024 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 { PanelData, PanelProps } from '@perses-dev/plugin-system';\nimport { Table, TableCellConfig, TableCellConfigs, TableColumnConfig } from '@perses-dev/components';\nimport { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { formatValue, Labels, QueryDataType, TimeSeries, TimeSeriesData, useTransformData } from '@perses-dev/core';\nimport { PaginationState, SortingState } from '@tanstack/react-table';\nimport { CellSettings, ColumnSettings, TableOptions } from './table-model';\nimport { EmbeddedPanel } from './EmbeddedPanel';\n\nfunction generateCellContentConfig(\n column: ColumnSettings\n): Pick<TableColumnConfig<unknown>, 'cellDescription' | 'cell'> {\n const plugin = column.plugin;\n if (plugin !== undefined) {\n return {\n cell: (ctx) => {\n const panelData: PanelData<QueryDataType> | undefined = ctx.getValue();\n if (!panelData) return <></>;\n return <EmbeddedPanel kind={plugin.kind} spec={plugin.spec} queryResults={[panelData]} />;\n },\n cellDescription: column.cellDescription ? () => `${column.cellDescription}` : () => '', // disable hover text\n };\n }\n\n return {\n cell: (ctx) => {\n const cellValue = ctx.getValue();\n return typeof cellValue === 'number' && column.format ? formatValue(cellValue, column.format) : cellValue;\n },\n cellDescription: column.cellDescription ? (): string => `${column.cellDescription}` : undefined, // TODO: variable rendering + cell value\n };\n}\n\n/*\n * Generate column config from column definitions, if a column has multiple definitions, the first one will be used.\n * If column is hidden, return undefined.\n * If column do not have a definition, return a default column config.\n */\nfunction generateColumnConfig(name: string, columnSettings: ColumnSettings[]): TableColumnConfig<unknown> | undefined {\n for (const column of columnSettings) {\n if (column.name === name) {\n if (column.hide) {\n return undefined;\n }\n\n return {\n accessorKey: name,\n header: column.header ?? name,\n headerDescription: column.headerDescription,\n enableSorting: column.enableSorting,\n width: column.width,\n align: column.align,\n ...generateCellContentConfig(column),\n };\n }\n }\n\n return {\n accessorKey: name,\n header: name,\n };\n}\n\nfunction generateCellConfig(value: unknown, settings: CellSettings[]): TableCellConfig | undefined {\n for (const setting of settings) {\n if (setting.condition.kind === 'Value' && setting.condition.spec?.value === String(value)) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n\n if (setting.condition.kind === 'Range' && !Number.isNaN(Number(value))) {\n const numericValue = Number(value);\n if (\n setting.condition.spec?.min !== undefined &&\n setting.condition.spec?.max !== undefined &&\n numericValue >= +setting.condition.spec?.min &&\n numericValue <= +setting.condition.spec?.max\n ) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n\n if (setting.condition.spec?.min !== undefined && numericValue >= +setting.condition.spec?.min) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n\n if (setting.condition.spec?.max !== undefined && numericValue <= +setting.condition.spec?.max) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n }\n\n if (setting.condition.kind === 'Regex' && setting.condition.spec?.expr) {\n const regex = new RegExp(setting.condition.spec?.expr);\n if (regex.test(String(value))) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n }\n\n if (setting.condition.kind === 'Misc' && setting.condition.spec?.value) {\n if (setting.condition.spec?.value === 'empty' && value === '') {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n if (setting.condition.spec?.value === 'null' && (value === null || value === undefined)) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n if (setting.condition.spec?.value === 'NaN' && Number.isNaN(value)) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n if (setting.condition.spec?.value === 'true' && value === true) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n if (setting.condition.spec?.value === 'false' && value === false) {\n return { text: setting.text, textColor: setting.textColor, backgroundColor: setting.backgroundColor };\n }\n }\n }\n return undefined;\n}\n\nexport function getTablePanelQueryOptions(spec: TableOptions): { mode: 'instant' | 'range' } {\n // if any cell renders a panel plugin, perform a range query instead of an instant query\n return {\n mode: (spec.columnSettings ?? []).some((c) => c.plugin) ? 'range' : 'instant',\n };\n}\n\nexport type TableProps = PanelProps<TableOptions, TimeSeriesData>;\n\nexport function TablePanel({ contentDimensions, spec, queryResults }: TableProps): ReactElement | null {\n // TODO: handle other query types\n const queryMode = getTablePanelQueryOptions(spec).mode;\n const rawData: Array<Record<string, unknown>> = useMemo(() => {\n // Transform query results to a tabular format:\n // [ { timestamp: 123, value: 456, labelName1: labelValue1 }, ... ]\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, we need to add the query index to the value key and label key 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 // If the cell visualization is a panel plugin, filter the data by the current series\n const columnValue = (spec.columnSettings ?? []).find((x) => x.name === valueColumnName)?.plugin\n ? { ...data, data: { ...data.data, series: data.data.series.filter((s) => s === ts) } }\n : ts.values[0][1];\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 }, [queryResults, queryMode, spec.columnSettings]);\n\n // Transform will be applied by their orders on the original data\n const data = useTransformData(rawData, spec.transforms ?? []);\n\n const keys: string[] = useMemo(() => {\n const result: string[] = [];\n\n for (const entry of data) {\n for (const key of Object.keys(entry)) {\n if (!result.includes(key)) {\n result.push(key);\n }\n }\n }\n\n return result;\n }, [data]);\n\n const columns: Array<TableColumnConfig<unknown>> = useMemo(() => {\n const columns: Array<TableColumnConfig<unknown>> = [];\n\n // Taking the customized columns first for the ordering of the columns in the table\n const customizedColumns =\n spec.columnSettings?.map((column) => column.name).filter((name) => keys.includes(name)) ?? [];\n const defaultColumns = keys.filter((key) => !customizedColumns.includes(key));\n\n for (const key of customizedColumns) {\n const columnConfig = generateColumnConfig(key, spec.columnSettings ?? []);\n if (columnConfig !== undefined) {\n columns.push(columnConfig);\n }\n }\n for (const key of defaultColumns) {\n const columnConfig = generateColumnConfig(key, spec.columnSettings ?? []);\n if (columnConfig !== undefined) {\n columns.push(columnConfig);\n }\n }\n\n return columns;\n }, [keys, spec.columnSettings]);\n\n // Generate cell settings that will be used by the table to render cells (text color, background color, ...)\n const cellConfigs: TableCellConfigs = useMemo(() => {\n // If there is no cell settings, return an empty array\n if (spec.cellSettings === undefined) {\n return {};\n }\n\n const result: TableCellConfigs = {};\n\n let index = 0;\n for (const row of data) {\n // Transforming key to object to extend the row with undefined values if the key is not present\n // for checking the cell config \"Misc\" condition with \"null\"\n const keysAsObj = keys.reduce(\n (acc, key) => {\n acc[key] = undefined;\n return acc;\n },\n {} as Record<string, undefined>\n );\n\n const extendRow = {\n ...keysAsObj,\n ...row,\n };\n\n for (const [key, value] of Object.entries(extendRow)) {\n const cellConfig = generateCellConfig(value, spec.cellSettings ?? []);\n if (cellConfig) {\n result[`${index}_${key}`] = cellConfig;\n }\n }\n index++;\n }\n\n return result;\n }, [data, keys, spec.cellSettings]);\n\n function generateDefaultSortingState(): SortingState {\n return (\n spec.columnSettings\n ?.filter((column) => column.sort !== undefined)\n .map((column) => {\n return {\n id: column.name,\n desc: column.sort === 'desc',\n };\n }) ?? []\n );\n }\n\n const [sorting, setSorting] = useState<SortingState>(generateDefaultSortingState());\n\n const [pagination, setPagination] = useState<PaginationState | undefined>(\n spec.pagination ? { pageIndex: 0, pageSize: 10 } : undefined\n );\n\n useEffect(() => {\n // If the pagination setting changes from no pagination to pagination, but the pagination state is undefined, update the pagination state\n if (spec.pagination && !pagination) {\n setPagination({ pageIndex: 0, pageSize: 10 });\n } else if (!spec.pagination && pagination) {\n setPagination(undefined);\n }\n }, [spec.pagination, pagination]);\n\n if (contentDimensions === undefined) {\n return null;\n }\n\n return (\n <Table\n data={data}\n columns={columns}\n cellConfigs={cellConfigs}\n height={contentDimensions.height}\n width={contentDimensions.width}\n density={spec.density}\n defaultColumnWidth={spec.defaultColumnWidth}\n defaultColumnHeight={spec.defaultColumnHeight}\n sorting={sorting}\n onSortingChange={setSorting}\n pagination={pagination}\n onPaginationChange={setPagination}\n />\n );\n}\n"],"names":["Table","useEffect","useMemo","useState","formatValue","useTransformData","EmbeddedPanel","generateCellContentConfig","column","plugin","undefined","cell","ctx","panelData","getValue","kind","spec","queryResults","cellDescription","cellValue","format","generateColumnConfig","name","columnSettings","hide","accessorKey","header","headerDescription","enableSorting","width","align","generateCellConfig","value","settings","setting","condition","String","text","textColor","backgroundColor","Number","isNaN","numericValue","min","max","expr","regex","RegExp","test","getTablePanelQueryOptions","mode","some","c","TablePanel","contentDimensions","queryMode","rawData","flatMap","data","queryIndex","series","map","ts","values","labels","valueColumnName","length","Object","entries","reduce","acc","key","columnValue","find","x","filter","s","timestamp","transforms","keys","result","entry","includes","push","columns","customizedColumns","defaultColumns","columnConfig","cellConfigs","cellSettings","index","row","keysAsObj","extendRow","cellConfig","generateDefaultSortingState","sort","id","desc","sorting","setSorting","pagination","setPagination","pageIndex","pageSize","height","density","defaultColumnWidth","defaultColumnHeight","onSortingChange","onPaginationChange"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableSettingsEditor.d.ts","sourceRoot":"","sources":["../../src/TableSettingsEditor.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AA6CzD,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,wBAAwB,GAAG,YAAY,CA0C/F"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/TableSettingsEditor.tsx"],"sourcesContent":["// Copyright 2024 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 { Switch, TextField } from '@mui/material';\nimport {\n DEFAULT_COLUMN_HEIGHT,\n DEFAULT_COLUMN_WIDTH,\n DensitySelector,\n OptionsEditorColumn,\n OptionsEditorControl,\n OptionsEditorGrid,\n OptionsEditorGroup,\n TableDensity,\n} from '@perses-dev/components';\nimport { ChangeEvent, ReactElement } from 'react';\nimport { TableSettingsEditorProps } from './table-model';\n\ninterface DefaultColumnsDimensionsControlProps {\n label: string;\n defaultValue: number;\n value?: 'auto' | number;\n onChange: (value: 'auto' | number) => void;\n}\n\nfunction DefaultColumnsDimensionsControl({\n label,\n defaultValue,\n value,\n onChange,\n}: DefaultColumnsDimensionsControlProps): ReactElement {\n function handleAutoSwitchChange(_: ChangeEvent, checked: boolean): void {\n if (checked) {\n return onChange('auto');\n }\n onChange(defaultValue);\n }\n\n return (\n <>\n <OptionsEditorControl\n label={`Auto Columns ${label}`}\n control={<Switch checked={value === undefined || value === 'auto'} onChange={handleAutoSwitchChange} />}\n />\n {value !== undefined && value !== 'auto' && (\n <OptionsEditorControl\n label={`Default Columns ${label}`}\n control={\n <TextField\n type=\"number\"\n value={value ?? defaultValue}\n InputProps={{ inputProps: { min: 1, step: 1 } }}\n onChange={(e) => onChange(parseInt(e.target.value))}\n />\n }\n />\n )}\n </>\n );\n}\n\nexport function TableSettingsEditor({ onChange, value }: TableSettingsEditorProps): ReactElement {\n function handleDensityChange(density: TableDensity): void {\n onChange({ ...value, density: density });\n }\n\n function handlePaginationChange(_event: ChangeEvent, newValue: boolean): void {\n onChange({ ...value, pagination: newValue });\n }\n\n function handleAutoWidthChange(newValue: 'auto' | number): void {\n onChange({ ...value, defaultColumnWidth: newValue });\n }\n\n function handleAutoHeightChange(newValue: 'auto' | number): void {\n onChange({ ...value, defaultColumnHeight: newValue });\n }\n\n return (\n <OptionsEditorGrid>\n <OptionsEditorColumn>\n <OptionsEditorGroup title=\"Display\">\n <DensitySelector value={value.density} onChange={handleDensityChange} />\n <OptionsEditorControl\n label=\"Pagination\"\n control={<Switch checked={!!value.pagination} onChange={handlePaginationChange} />}\n />\n <DefaultColumnsDimensionsControl\n label=\"Width\"\n defaultValue={DEFAULT_COLUMN_WIDTH}\n value={value.defaultColumnWidth}\n onChange={handleAutoWidthChange}\n />\n <DefaultColumnsDimensionsControl\n label=\"Height\"\n defaultValue={DEFAULT_COLUMN_HEIGHT}\n value={value.defaultColumnHeight}\n onChange={handleAutoHeightChange}\n />\n </OptionsEditorGroup>\n </OptionsEditorColumn>\n </OptionsEditorGrid>\n );\n}\n"],"names":["Switch","TextField","DEFAULT_COLUMN_HEIGHT","DEFAULT_COLUMN_WIDTH","DensitySelector","OptionsEditorColumn","OptionsEditorControl","OptionsEditorGrid","OptionsEditorGroup","DefaultColumnsDimensionsControl","label","defaultValue","value","onChange","handleAutoSwitchChange","_","checked","control","undefined","type","InputProps","inputProps","min","step","e","parseInt","target","TableSettingsEditor","handleDensityChange","density","handlePaginationChange","_event","newValue","pagination","handleAutoWidthChange","defaultColumnWidth","handleAutoHeightChange","defaultColumnHeight","title"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAASA,MAAM,EAAEC,SAAS,QAAQ,gBAAgB;AAClD,SACEC,qBAAqB,EACrBC,oBAAoB,EACpBC,eAAe,EACfC,mBAAmB,EACnBC,oBAAoB,EACpBC,iBAAiB,EACjBC,kBAAkB,QAEb,yBAAyB;AAWhC,SAASC,gCAAgC,EACvCC,KAAK,EACLC,YAAY,EACZC,KAAK,EACLC,QAAQ,EAC6B;IACrC,SAASC,uBAAuBC,CAAc,EAAEC,OAAgB;QAC9D,IAAIA,SAAS;YACX,OAAOH,SAAS;QAClB;QACAA,SAASF;IACX;IAEA,qBACE;;0BACE,KAACL;gBACCI,OAAO,CAAC,aAAa,EAAEA,OAAO;gBAC9BO,uBAAS,KAACjB;oBAAOgB,SAASJ,UAAUM,aAAaN,UAAU;oBAAQC,UAAUC;;;YAE9EF,UAAUM,aAAaN,UAAU,wBAChC,KAACN;gBACCI,OAAO,CAAC,gBAAgB,EAAEA,OAAO;gBACjCO,uBACE,KAAChB;oBACCkB,MAAK;oBACLP,OAAOA,SAASD;oBAChBS,YAAY;wBAAEC,YAAY;4BAAEC,KAAK;4BAAGC,MAAM;wBAAE;oBAAE;oBAC9CV,UAAU,CAACW,IAAMX,SAASY,SAASD,EAAEE,MAAM,CAACd,KAAK;;;;;AAO/D;AAEA,OAAO,SAASe,oBAAoB,EAAEd,QAAQ,EAAED,KAAK,EAA4B;IAC/E,SAASgB,oBAAoBC,OAAqB;QAChDhB,SAAS;YAAE,GAAGD,KAAK;YAAEiB,SAASA;QAAQ;IACxC;IAEA,SAASC,uBAAuBC,MAAmB,EAAEC,QAAiB;QACpEnB,SAAS;YAAE,GAAGD,KAAK;YAAEqB,YAAYD;QAAS;IAC5C;IAEA,SAASE,sBAAsBF,QAAyB;QACtDnB,SAAS;YAAE,GAAGD,KAAK;YAAEuB,oBAAoBH;QAAS;IACpD;IAEA,SAASI,uBAAuBJ,QAAyB;QACvDnB,SAAS;YAAE,GAAGD,KAAK;YAAEyB,qBAAqBL;QAAS;IACrD;IAEA,qBACE,KAACzB;kBACC,cAAA,KAACF;sBACC,cAAA,MAACG;gBAAmB8B,OAAM;;kCACxB,KAAClC;wBAAgBQ,OAAOA,MAAMiB,OAAO;wBAAEhB,UAAUe;;kCACjD,KAACtB;wBACCI,OAAM;wBACNO,uBAAS,KAACjB;4BAAOgB,SAAS,CAAC,CAACJ,MAAMqB,UAAU;4BAAEpB,UAAUiB;;;kCAE1D,KAACrB;wBACCC,OAAM;wBACNC,cAAcR;wBACdS,OAAOA,MAAMuB,kBAAkB;wBAC/BtB,UAAUqB;;kCAEZ,KAACzB;wBACCC,OAAM;wBACNC,cAAcT;wBACdU,OAAOA,MAAMyB,mBAAmB;wBAChCxB,UAAUuB;;;;;;AAMtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableTransformsEditor.d.ts","sourceRoot":"","sources":["../../src/TableTransformsEditor.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAMjG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/TableTransformsEditor.tsx"],"sourcesContent":["// Copyright 2024 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 { TransformsEditor } from '@perses-dev/components';\nimport { Transform } from '@perses-dev/core';\nimport { ReactElement } from 'react';\nimport { TableSettingsEditorProps } from './table-model';\n\nexport function TableTransformsEditor({ value, onChange }: TableSettingsEditorProps): ReactElement {\n function handleTransformsChange(transforms: Transform[]): void {\n onChange({ ...value, transforms: transforms });\n }\n\n return <TransformsEditor value={value.transforms ?? []} onChange={handleTransformsChange} />;\n}\n"],"names":["TransformsEditor","TableTransformsEditor","value","onChange","handleTransformsChange","transforms"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAASA,gBAAgB,QAAQ,yBAAyB;AAK1D,OAAO,SAASC,sBAAsB,EAAEC,KAAK,EAAEC,QAAQ,EAA4B;IACjF,SAASC,uBAAuBC,UAAuB;QACrDF,SAAS;YAAE,GAAGD,KAAK;YAAEG,YAAYA;QAAW;IAC9C;IAEA,qBAAO,KAACL;QAAiBE,OAAOA,MAAMG,UAAU,IAAI,EAAE;QAAEF,UAAUC;;AACpE"}
@@ -1,136 +0,0 @@
1
- // Copyright 2024 The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", {
15
- value: true
16
- });
17
- Object.defineProperty(exports, "CellsEditor", {
18
- enumerable: true,
19
- get: function() {
20
- return CellsEditor;
21
- }
22
- });
23
- const _jsxruntime = require("react/jsx-runtime");
24
- const _material = require("@mui/material");
25
- const _Plus = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Plus"));
26
- const _CellEditor = require("./CellEditor");
27
- function _interop_require_default(obj) {
28
- return obj && obj.__esModule ? obj : {
29
- default: obj
30
- };
31
- }
32
- function CellsEditor({ cellSettings, onChange }) {
33
- function handleCellChange(index, cell) {
34
- const updatedCells = [
35
- ...cellSettings
36
- ];
37
- updatedCells[index] = cell;
38
- onChange(updatedCells);
39
- }
40
- function handleAddCellEditor() {
41
- const updatedCells = [
42
- ...cellSettings
43
- ];
44
- updatedCells.push({
45
- condition: {
46
- kind: 'Value',
47
- spec: {
48
- value: ''
49
- }
50
- }
51
- });
52
- onChange(updatedCells);
53
- }
54
- function handleCellDelete(index) {
55
- const updatedCells = [
56
- ...cellSettings
57
- ];
58
- updatedCells.splice(index, 1);
59
- onChange(updatedCells);
60
- }
61
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
62
- spacing: 1,
63
- children: [
64
- /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Grid2, {
65
- container: true,
66
- spacing: 2,
67
- children: [
68
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid2, {
69
- size: {
70
- xs: 5
71
- },
72
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Typography, {
73
- variant: "subtitle1",
74
- children: "Condition"
75
- })
76
- }),
77
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid2, {
78
- size: {
79
- xs: 4
80
- },
81
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Typography, {
82
- variant: "subtitle1",
83
- children: "Display Text"
84
- })
85
- }),
86
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid2, {
87
- size: {
88
- xs: 1
89
- },
90
- textAlign: "center",
91
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Typography, {
92
- variant: "subtitle1",
93
- children: "Color"
94
- })
95
- }),
96
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid2, {
97
- size: {
98
- xs: 1
99
- },
100
- textAlign: "center",
101
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Typography, {
102
- variant: "subtitle1",
103
- children: "Background"
104
- })
105
- }),
106
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid2, {
107
- size: {
108
- xs: 1
109
- }
110
- })
111
- ]
112
- }),
113
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Stack, {
114
- gap: 1.5,
115
- divider: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Divider, {
116
- flexItem: true,
117
- orientation: "horizontal"
118
- }),
119
- children: cellSettings.map((cell, i)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_CellEditor.CellEditor, {
120
- cell: cell,
121
- onChange: (updatedCell)=>handleCellChange(i, updatedCell),
122
- onDelete: ()=>handleCellDelete(i)
123
- }, i))
124
- }),
125
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
126
- variant: "contained",
127
- startIcon: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Plus.default, {}),
128
- sx: {
129
- marginTop: 1
130
- },
131
- onClick: handleAddCellEditor,
132
- children: "Add Cell Settings"
133
- })
134
- ]
135
- });
136
- }