@perses-dev/alert-manager-plugin 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +41 -0
- package/__mf/css/async/7790.85c2cbf6.css +1 -0
- package/__mf/font/inter-cyrillic-300-normal.432f2b21.woff +0 -0
- package/__mf/font/inter-cyrillic-300-normal.9da91009.woff2 +0 -0
- package/__mf/font/inter-cyrillic-400-normal.372704ff.woff2 +0 -0
- package/__mf/font/inter-cyrillic-400-normal.a6b6ef6f.woff +0 -0
- package/__mf/font/inter-cyrillic-500-normal.7c15bba8.woff2 +0 -0
- package/__mf/font/inter-cyrillic-500-normal.b9f8c929.woff +0 -0
- package/__mf/font/inter-cyrillic-600-normal.2f42892a.woff2 +0 -0
- package/__mf/font/inter-cyrillic-600-normal.c3987adc.woff +0 -0
- package/__mf/font/inter-cyrillic-700-normal.93eba3c3.woff +0 -0
- package/__mf/font/inter-cyrillic-700-normal.e9e5b2dc.woff2 +0 -0
- package/__mf/font/inter-cyrillic-900-normal.f285bd7a.woff2 +0 -0
- package/__mf/font/inter-cyrillic-900-normal.ffbd8a3a.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-300-normal.95bb9038.woff2 +0 -0
- package/__mf/font/inter-cyrillic-ext-300-normal.cfc143a9.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-400-normal.2a31c04b.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-400-normal.f572b170.woff2 +0 -0
- package/__mf/font/inter-cyrillic-ext-500-normal.5a6bb1da.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-500-normal.fe0d9b14.woff2 +0 -0
- package/__mf/font/inter-cyrillic-ext-600-normal.ecbdecad.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-600-normal.f7b3c15b.woff2 +0 -0
- package/__mf/font/inter-cyrillic-ext-700-normal.4b4022a6.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-700-normal.74b516d2.woff2 +0 -0
- package/__mf/font/inter-cyrillic-ext-900-normal.9970ddb5.woff +0 -0
- package/__mf/font/inter-cyrillic-ext-900-normal.a0d59adc.woff2 +0 -0
- package/__mf/font/inter-greek-300-normal.0d7be683.woff2 +0 -0
- package/__mf/font/inter-greek-300-normal.8f0b988e.woff +0 -0
- package/__mf/font/inter-greek-400-normal.cc58c11b.woff +0 -0
- package/__mf/font/inter-greek-400-normal.d7020e3c.woff2 +0 -0
- package/__mf/font/inter-greek-500-normal.d9a33207.woff +0 -0
- package/__mf/font/inter-greek-500-normal.f41f43db.woff2 +0 -0
- package/__mf/font/inter-greek-600-normal.4ec0c1c1.woff +0 -0
- package/__mf/font/inter-greek-600-normal.cc532937.woff2 +0 -0
- package/__mf/font/inter-greek-700-normal.5ec6c758.woff +0 -0
- package/__mf/font/inter-greek-700-normal.97f0eeeb.woff2 +0 -0
- package/__mf/font/inter-greek-900-normal.46b66369.woff2 +0 -0
- package/__mf/font/inter-greek-900-normal.9ae3a3c5.woff +0 -0
- package/__mf/font/inter-greek-ext-300-normal.10247a66.woff2 +0 -0
- package/__mf/font/inter-greek-ext-300-normal.4668e5cb.woff +0 -0
- package/__mf/font/inter-greek-ext-400-normal.4ce1df5d.woff2 +0 -0
- package/__mf/font/inter-greek-ext-400-normal.88ede1ea.woff +0 -0
- package/__mf/font/inter-greek-ext-500-normal.7a4aa726.woff +0 -0
- package/__mf/font/inter-greek-ext-500-normal.cbd51e2d.woff2 +0 -0
- package/__mf/font/inter-greek-ext-600-normal.089a95ee.woff +0 -0
- package/__mf/font/inter-greek-ext-600-normal.1f33d317.woff2 +0 -0
- package/__mf/font/inter-greek-ext-700-normal.31f1075d.woff +0 -0
- package/__mf/font/inter-greek-ext-700-normal.827cd618.woff2 +0 -0
- package/__mf/font/inter-greek-ext-900-normal.531bcee7.woff +0 -0
- package/__mf/font/inter-greek-ext-900-normal.8a9b36b9.woff2 +0 -0
- package/__mf/font/inter-latin-300-normal.15fb600d.woff2 +0 -0
- package/__mf/font/inter-latin-300-normal.6f95f590.woff +0 -0
- package/__mf/font/inter-latin-400-normal.2c7a775c.woff +0 -0
- package/__mf/font/inter-latin-400-normal.ef6d3f52.woff2 +0 -0
- package/__mf/font/inter-latin-500-normal.b7b43ace.woff2 +0 -0
- package/__mf/font/inter-latin-500-normal.cb4c8ceb.woff +0 -0
- package/__mf/font/inter-latin-600-normal.8fb1a964.woff2 +0 -0
- package/__mf/font/inter-latin-600-normal.ce0f5f43.woff +0 -0
- package/__mf/font/inter-latin-700-normal.953b7aa5.woff2 +0 -0
- package/__mf/font/inter-latin-700-normal.9c21d4dc.woff +0 -0
- package/__mf/font/inter-latin-900-normal.2a8028ec.woff2 +0 -0
- package/__mf/font/inter-latin-900-normal.fa252135.woff +0 -0
- package/__mf/font/inter-latin-ext-300-normal.167cc8c9.woff2 +0 -0
- package/__mf/font/inter-latin-ext-300-normal.f695be66.woff +0 -0
- package/__mf/font/inter-latin-ext-400-normal.32a25442.woff2 +0 -0
- package/__mf/font/inter-latin-ext-400-normal.4edcaace.woff +0 -0
- package/__mf/font/inter-latin-ext-500-normal.a19a84a6.woff +0 -0
- package/__mf/font/inter-latin-ext-500-normal.d9b491de.woff2 +0 -0
- package/__mf/font/inter-latin-ext-600-normal.38b075d8.woff2 +0 -0
- package/__mf/font/inter-latin-ext-600-normal.49faa47a.woff +0 -0
- package/__mf/font/inter-latin-ext-700-normal.93534b50.woff +0 -0
- package/__mf/font/inter-latin-ext-700-normal.b63daa1a.woff2 +0 -0
- package/__mf/font/inter-latin-ext-900-normal.0efdb307.woff +0 -0
- package/__mf/font/inter-latin-ext-900-normal.9c0fc2c7.woff2 +0 -0
- package/__mf/font/inter-vietnamese-300-normal.aad496d8.woff +0 -0
- package/__mf/font/inter-vietnamese-300-normal.ad9ef503.woff2 +0 -0
- package/__mf/font/inter-vietnamese-400-normal.a9dd2faf.woff +0 -0
- package/__mf/font/inter-vietnamese-400-normal.de4fc44f.woff2 +0 -0
- package/__mf/font/inter-vietnamese-500-normal.7c0a695f.woff2 +0 -0
- package/__mf/font/inter-vietnamese-500-normal.a3a73b95.woff +0 -0
- package/__mf/font/inter-vietnamese-600-normal.9d518599.woff2 +0 -0
- package/__mf/font/inter-vietnamese-600-normal.c5ce3fcb.woff +0 -0
- package/__mf/font/inter-vietnamese-700-normal.bc68b199.woff +0 -0
- package/__mf/font/inter-vietnamese-700-normal.faf12809.woff2 +0 -0
- package/__mf/font/inter-vietnamese-900-normal.2b782045.woff +0 -0
- package/__mf/font/inter-vietnamese-900-normal.e639b65a.woff2 +0 -0
- package/__mf/js/AlertManager.f762e62c.js +7 -0
- package/__mf/js/async/1616.24f00c9d.js +1 -0
- package/__mf/js/async/1728.83bb9a7c.js +1 -0
- package/__mf/js/async/1871.23ff54b3.js +1 -0
- package/__mf/js/async/1969.a83b1b48.js +1 -0
- package/__mf/js/async/2218.7829c9d9.js +2 -0
- package/__mf/js/async/2218.7829c9d9.js.LICENSE.txt +9 -0
- package/__mf/js/async/2377.f8875a4e.js +1 -0
- package/__mf/js/async/2657.fe8dd44f.js +1 -0
- package/__mf/js/async/2954.3ac1f636.js +2 -0
- package/__mf/js/async/392.7e11dd69.js +2 -0
- package/__mf/js/async/392.7e11dd69.js.LICENSE.txt +8 -0
- package/__mf/js/async/3963.fb6246d2.js +1 -0
- package/__mf/js/async/4121.ec666be2.js +2 -0
- package/__mf/js/async/4121.ec666be2.js.LICENSE.txt +9 -0
- package/__mf/js/async/4133.e94df4f8.js +28 -0
- package/__mf/js/async/4213.a0c4f2eb.js +1 -0
- package/__mf/js/async/4397.d399eecb.js +2 -0
- package/__mf/js/async/4397.d399eecb.js.LICENSE.txt +37 -0
- package/__mf/js/async/4466.a8145edd.js +74 -0
- package/__mf/js/async/4732.e866a740.js +1 -0
- package/__mf/js/async/4788.49ffeac3.js +1 -0
- package/__mf/js/async/5038.269393e3.js +2 -0
- package/__mf/js/async/5038.269393e3.js.LICENSE.txt +9 -0
- package/__mf/js/async/573.214f2003.js +2 -0
- package/__mf/js/async/573.214f2003.js.LICENSE.txt +9 -0
- package/__mf/js/async/6274.8c77cb1a.js +2 -0
- package/__mf/js/async/6274.8c77cb1a.js.LICENSE.txt +8 -0
- package/__mf/js/async/6390.3f6f279d.js +2 -0
- package/__mf/js/async/6390.3f6f279d.js.LICENSE.txt +9 -0
- package/__mf/js/async/6401.1a59dbad.js +1 -0
- package/__mf/js/async/6593.acc8b704.js +4 -0
- package/__mf/js/async/6593.acc8b704.js.LICENSE.txt +24 -0
- package/__mf/js/async/6594.b02adfd9.js +2 -0
- package/__mf/js/async/6594.b02adfd9.js.LICENSE.txt +9 -0
- package/__mf/js/async/663.5445c7e0.js +1 -0
- package/__mf/js/async/6854.1d628838.js +1 -0
- package/__mf/js/async/7177.27c86137.js +1 -0
- package/__mf/js/async/7192.ede9860b.js +1 -0
- package/__mf/js/async/733.22ab2a8a.js +1 -0
- package/__mf/js/async/7422.33d76364.js +2 -0
- package/__mf/js/async/7422.33d76364.js.LICENSE.txt +9 -0
- package/__mf/js/async/7790.a75199e6.js +7 -0
- package/__mf/js/async/7790.a75199e6.js.LICENSE.txt +64 -0
- package/__mf/js/async/7862.556c038f.js +2 -0
- package/__mf/js/async/7862.556c038f.js.LICENSE.txt +9 -0
- package/__mf/js/async/7984.49fa1156.js +22 -0
- package/__mf/js/async/7984.49fa1156.js.LICENSE.txt +19 -0
- package/__mf/js/async/804.23da0d30.js +37 -0
- package/__mf/js/async/8470.2df0db71.js +2 -0
- package/__mf/js/async/8470.2df0db71.js.LICENSE.txt +19 -0
- package/__mf/js/async/8697.c13c6603.js +1 -0
- package/__mf/js/async/8907.9e3edf43.js +1 -0
- package/__mf/js/async/9040.94717f28.js +10 -0
- package/__mf/js/async/9040.94717f28.js.LICENSE.txt +17 -0
- package/__mf/js/async/9184.27a439a4.js +1 -0
- package/__mf/js/async/9235.00f9412f.js +1 -0
- package/__mf/js/async/941.d3bc6208.js +2 -0
- package/__mf/js/async/941.d3bc6208.js.LICENSE.txt +9 -0
- package/__mf/js/async/9634.3a366799.js +1 -0
- package/__mf/js/async/9836.cc839227.js +1 -0
- package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.d4fb76c0.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.d4fb76c0.js.LICENSE.txt +9 -0
- package/__mf/js/async/__federation_expose_AlertManagerAlertsQuery.9ea3093c.js +1 -0
- package/__mf/js/async/__federation_expose_AlertManagerDatasource.2fbf067c.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerDatasource.2fbf067c.js.LICENSE.txt +9 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.d2527c12.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.d2527c12.js.LICENSE.txt +9 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.7aca31d3.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.7aca31d3.js.LICENSE.txt +9 -0
- package/__mf/js/async/__federation_expose_AlertTable.4a636b80.js +1 -0
- package/__mf/js/async/__federation_expose_SilenceTable.11259028.js +1 -0
- package/__mf/js/async/lib-router.19f64904.js +2 -0
- package/__mf/js/async/lib-router.19f64904.js.LICENSE.txt +32 -0
- package/__mf/js/main.a1362788.js +7 -0
- package/lib/bootstrap.d.ts +2 -0
- package/lib/bootstrap.d.ts.map +1 -0
- package/lib/bootstrap.js +19 -0
- package/lib/bootstrap.js.map +1 -0
- package/lib/cjs/bootstrap.js +26 -0
- package/lib/cjs/components/ColumnsEditor.js +271 -0
- package/lib/cjs/components/LazyTextField.js +50 -0
- package/lib/cjs/components/MatcherEditor.js +153 -0
- package/lib/cjs/components/MatchersList.js +46 -0
- package/lib/cjs/components/SilenceForm.js +205 -0
- package/lib/cjs/components/StatusBadge.js +71 -0
- package/lib/cjs/components/index.js +44 -0
- package/lib/cjs/explore/AlertManagerAlertsExplorer.js +79 -0
- package/lib/cjs/explore/AlertManagerSilencesExplorer.js +153 -0
- package/lib/cjs/getPluginModule.js +39 -0
- package/lib/cjs/index-federation.js +55 -0
- package/lib/cjs/index.js +39 -0
- package/lib/cjs/model/alertmanager-client.js +128 -0
- package/lib/cjs/model/alertmanager-selectors.js +66 -0
- package/lib/cjs/model/api-types.js +22 -0
- package/lib/cjs/model/index.js +32 -0
- package/lib/cjs/plugins/AlertManagerDatasourceEditor.js +71 -0
- package/lib/cjs/plugins/alert-table/AlertTable.js +56 -0
- package/lib/cjs/plugins/alert-table/AlertTableColumnsEditor.js +110 -0
- package/lib/cjs/plugins/alert-table/AlertTableDeduplicationEditor.js +138 -0
- package/lib/cjs/plugins/alert-table/AlertTableLabelsEditor.js +277 -0
- package/lib/cjs/plugins/alert-table/AlertTableOptionsEditor.js +128 -0
- package/lib/cjs/plugins/alert-table/AlertTablePanel.js +773 -0
- package/lib/cjs/plugins/alert-table/alert-table-model.js +142 -0
- package/lib/cjs/plugins/alert-table/alert-table-sorting.js +205 -0
- package/lib/cjs/plugins/alert-table/label-colors.js +170 -0
- package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +51 -0
- package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +138 -0
- package/lib/cjs/plugins/alertmanager-alerts-query/get-alerts-data.js +124 -0
- package/lib/cjs/plugins/alertmanager-datasource.js +69 -0
- package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +45 -0
- package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +78 -0
- package/lib/cjs/plugins/alertmanager-silences-query/get-silences-data.js +64 -0
- package/lib/cjs/plugins/index.js +74 -0
- package/lib/cjs/plugins/silence-table/SilenceTable.js +42 -0
- package/lib/cjs/plugins/silence-table/SilenceTableColumnsEditor.js +137 -0
- package/lib/cjs/plugins/silence-table/SilenceTableOptionsEditor.js +63 -0
- package/lib/cjs/plugins/silence-table/SilenceTablePanel.js +345 -0
- package/lib/cjs/plugins/silence-table/silence-table-model.js +116 -0
- package/lib/cjs/plugins/silence-table/silence-table-sorting.js +68 -0
- package/lib/cjs/plugins/types.js +16 -0
- package/lib/cjs/setup-tests.js +18 -0
- package/lib/components/ColumnsEditor.d.ts +25 -0
- package/lib/components/ColumnsEditor.d.ts.map +1 -0
- package/lib/components/ColumnsEditor.js +258 -0
- package/lib/components/ColumnsEditor.js.map +1 -0
- package/lib/components/LazyTextField.d.ts +12 -0
- package/lib/components/LazyTextField.d.ts.map +1 -0
- package/lib/components/LazyTextField.js +42 -0
- package/lib/components/LazyTextField.js.map +1 -0
- package/lib/components/MatcherEditor.d.ts +17 -0
- package/lib/components/MatcherEditor.d.ts.map +1 -0
- package/lib/components/MatcherEditor.js +142 -0
- package/lib/components/MatcherEditor.js.map +1 -0
- package/lib/components/MatchersList.d.ts +10 -0
- package/lib/components/MatchersList.d.ts.map +1 -0
- package/lib/components/MatchersList.js +40 -0
- package/lib/components/MatchersList.js.map +1 -0
- package/lib/components/SilenceForm.d.ts +13 -0
- package/lib/components/SilenceForm.d.ts.map +1 -0
- package/lib/components/SilenceForm.js +194 -0
- package/lib/components/SilenceForm.js.map +1 -0
- package/lib/components/StatusBadge.d.ts +10 -0
- package/lib/components/StatusBadge.d.ts.map +1 -0
- package/lib/components/StatusBadge.js +65 -0
- package/lib/components/StatusBadge.js.map +1 -0
- package/lib/components/index.d.ts +11 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +19 -0
- package/lib/components/index.js.map +1 -0
- package/lib/explore/AlertManagerAlertsExplorer.d.ts +3 -0
- package/lib/explore/AlertManagerAlertsExplorer.d.ts.map +1 -0
- package/lib/explore/AlertManagerAlertsExplorer.js +71 -0
- package/lib/explore/AlertManagerAlertsExplorer.js.map +1 -0
- package/lib/explore/AlertManagerSilencesExplorer.d.ts +3 -0
- package/lib/explore/AlertManagerSilencesExplorer.d.ts.map +1 -0
- package/lib/explore/AlertManagerSilencesExplorer.js +140 -0
- package/lib/explore/AlertManagerSilencesExplorer.js.map +1 -0
- package/lib/getPluginModule.d.ts +3 -0
- package/lib/getPluginModule.d.ts.map +1 -0
- package/lib/getPluginModule.js +26 -0
- package/lib/getPluginModule.js.map +1 -0
- package/lib/index-federation.d.ts +1 -0
- package/lib/index-federation.d.ts.map +1 -0
- package/lib/index-federation.js +15 -0
- package/lib/index-federation.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -0
- package/lib/model/alertmanager-client.d.ts +27 -0
- package/lib/model/alertmanager-client.d.ts.map +1 -0
- package/lib/model/alertmanager-client.js +100 -0
- package/lib/model/alertmanager-client.js.map +1 -0
- package/lib/model/alertmanager-selectors.d.ts +13 -0
- package/lib/model/alertmanager-selectors.d.ts.map +1 -0
- package/lib/model/alertmanager-selectors.js +41 -0
- package/lib/model/alertmanager-selectors.js.map +1 -0
- package/lib/model/api-types.d.ts +120 -0
- package/lib/model/api-types.d.ts.map +1 -0
- package/lib/model/api-types.js +23 -0
- package/lib/model/api-types.js.map +1 -0
- package/lib/model/index.d.ts +4 -0
- package/lib/model/index.d.ts.map +1 -0
- package/lib/model/index.js +17 -0
- package/lib/model/index.js.map +1 -0
- package/lib/plugins/AlertManagerDatasourceEditor.d.ts +9 -0
- package/lib/plugins/AlertManagerDatasourceEditor.d.ts.map +1 -0
- package/lib/plugins/AlertManagerDatasourceEditor.js +63 -0
- package/lib/plugins/AlertManagerDatasourceEditor.js.map +1 -0
- package/lib/plugins/alert-table/AlertTable.d.ts +8 -0
- package/lib/plugins/alert-table/AlertTable.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTable.js +50 -0
- package/lib/plugins/alert-table/AlertTable.js.map +1 -0
- package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts +5 -0
- package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTableColumnsEditor.js +102 -0
- package/lib/plugins/alert-table/AlertTableColumnsEditor.js.map +1 -0
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts +5 -0
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js +130 -0
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js.map +1 -0
- package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts +5 -0
- package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTableLabelsEditor.js +264 -0
- package/lib/plugins/alert-table/AlertTableLabelsEditor.js.map +1 -0
- package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts +5 -0
- package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTableOptionsEditor.js +120 -0
- package/lib/plugins/alert-table/AlertTableOptionsEditor.js.map +1 -0
- package/lib/plugins/alert-table/AlertTablePanel.d.ts +11 -0
- package/lib/plugins/alert-table/AlertTablePanel.d.ts.map +1 -0
- package/lib/plugins/alert-table/AlertTablePanel.js +763 -0
- package/lib/plugins/alert-table/AlertTablePanel.js.map +1 -0
- package/lib/plugins/alert-table/alert-table-model.d.ts +73 -0
- package/lib/plugins/alert-table/alert-table-model.d.ts.map +1 -0
- package/lib/plugins/alert-table/alert-table-model.js +127 -0
- package/lib/plugins/alert-table/alert-table-model.js.map +1 -0
- package/lib/plugins/alert-table/alert-table-sorting.d.ts +13 -0
- package/lib/plugins/alert-table/alert-table-sorting.d.ts.map +1 -0
- package/lib/plugins/alert-table/alert-table-sorting.js +180 -0
- package/lib/plugins/alert-table/alert-table-sorting.js.map +1 -0
- package/lib/plugins/alert-table/label-colors.d.ts +6 -0
- package/lib/plugins/alert-table/label-colors.d.ts.map +1 -0
- package/lib/plugins/alert-table/label-colors.js +148 -0
- package/lib/plugins/alert-table/label-colors.js.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts +4 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +43 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts +9 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +130 -0
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts +8 -0
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts.map +1 -0
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js +118 -0
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js.map +1 -0
- package/lib/plugins/alertmanager-datasource.d.ts +5 -0
- package/lib/plugins/alertmanager-datasource.d.ts.map +1 -0
- package/lib/plugins/alertmanager-datasource.js +61 -0
- package/lib/plugins/alertmanager-datasource.js.map +1 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts +4 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts.map +1 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +37 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js.map +1 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts +9 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts.map +1 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +70 -0
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js.map +1 -0
- package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts +8 -0
- package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts.map +1 -0
- package/lib/plugins/alertmanager-silences-query/get-silences-data.js +58 -0
- package/lib/plugins/alertmanager-silences-query/get-silences-data.js.map +1 -0
- package/lib/plugins/index.d.ts +19 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/plugins/index.js +30 -0
- package/lib/plugins/index.js.map +1 -0
- package/lib/plugins/silence-table/SilenceTable.d.ts +7 -0
- package/lib/plugins/silence-table/SilenceTable.d.ts.map +1 -0
- package/lib/plugins/silence-table/SilenceTable.js +36 -0
- package/lib/plugins/silence-table/SilenceTable.js.map +1 -0
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts +5 -0
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts.map +1 -0
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.js +129 -0
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.js.map +1 -0
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts +5 -0
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts.map +1 -0
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.js +55 -0
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.js.map +1 -0
- package/lib/plugins/silence-table/SilenceTablePanel.d.ts +11 -0
- package/lib/plugins/silence-table/SilenceTablePanel.d.ts.map +1 -0
- package/lib/plugins/silence-table/SilenceTablePanel.js +335 -0
- package/lib/plugins/silence-table/SilenceTablePanel.js.map +1 -0
- package/lib/plugins/silence-table/silence-table-model.d.ts +29 -0
- package/lib/plugins/silence-table/silence-table-model.d.ts.map +1 -0
- package/lib/plugins/silence-table/silence-table-model.js +90 -0
- package/lib/plugins/silence-table/silence-table-model.js.map +1 -0
- package/lib/plugins/silence-table/silence-table-sorting.d.ts +9 -0
- package/lib/plugins/silence-table/silence-table-sorting.d.ts.map +1 -0
- package/lib/plugins/silence-table/silence-table-sorting.js +60 -0
- package/lib/plugins/silence-table/silence-table-sorting.js.map +1 -0
- package/lib/plugins/types.d.ts +30 -0
- package/lib/plugins/types.d.ts.map +1 -0
- package/lib/plugins/types.js +17 -0
- package/lib/plugins/types.js.map +1 -0
- package/lib/setup-tests.d.ts +2 -0
- package/lib/setup-tests.d.ts.map +1 -0
- package/lib/setup-tests.js +16 -0
- package/lib/setup-tests.js.map +1 -0
- package/mf-manifest.json +631 -0
- package/mf-stats.json +752 -0
- package/package.json +115 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Copyright The Perses Authors
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { Box, Button, Checkbox, Divider, FormControl, FormControlLabel, IconButton, InputLabel, MenuItem, Select, Stack, TextField, Typography } from '@mui/material';
|
|
15
|
+
import { OptionsEditorGroup } from '@perses-dev/components';
|
|
16
|
+
import { produce } from 'immer';
|
|
17
|
+
import DeleteIcon from 'mdi-material-ui/Delete';
|
|
18
|
+
import PlusIcon from 'mdi-material-ui/Plus';
|
|
19
|
+
import { useCallback } from 'react';
|
|
20
|
+
const MODE_LABELS = {
|
|
21
|
+
auto: 'Auto (hash-derived colors)',
|
|
22
|
+
severity: 'Severity (built-in defaults)',
|
|
23
|
+
manual: 'Manual (overrides only)'
|
|
24
|
+
};
|
|
25
|
+
function LabelMappingEntry({ mapping, index, onUpdate, onRemove }) {
|
|
26
|
+
const handleAddOverride = useCallback(()=>{
|
|
27
|
+
onUpdate(index, (draft)=>{
|
|
28
|
+
if (!draft.overrides) draft.overrides = [];
|
|
29
|
+
draft.overrides.push({
|
|
30
|
+
value: '',
|
|
31
|
+
isRegex: false,
|
|
32
|
+
color: '#1976d2'
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}, [
|
|
36
|
+
index,
|
|
37
|
+
onUpdate
|
|
38
|
+
]);
|
|
39
|
+
const handleRemoveOverride = useCallback((overrideIndex)=>{
|
|
40
|
+
onUpdate(index, (draft)=>{
|
|
41
|
+
draft.overrides?.splice(overrideIndex, 1);
|
|
42
|
+
});
|
|
43
|
+
}, [
|
|
44
|
+
index,
|
|
45
|
+
onUpdate
|
|
46
|
+
]);
|
|
47
|
+
const handleUpdateOverride = useCallback((overrideIndex, field, fieldValue)=>{
|
|
48
|
+
onUpdate(index, (draft)=>{
|
|
49
|
+
const override = draft.overrides?.[overrideIndex];
|
|
50
|
+
if (override) {
|
|
51
|
+
if (field === 'isRegex') {
|
|
52
|
+
override.isRegex = fieldValue;
|
|
53
|
+
} else {
|
|
54
|
+
override[field] = fieldValue;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}, [
|
|
59
|
+
index,
|
|
60
|
+
onUpdate
|
|
61
|
+
]);
|
|
62
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
63
|
+
sx: {
|
|
64
|
+
border: 1,
|
|
65
|
+
borderColor: 'divider',
|
|
66
|
+
borderRadius: 1,
|
|
67
|
+
p: 2
|
|
68
|
+
},
|
|
69
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
70
|
+
spacing: 2,
|
|
71
|
+
children: [
|
|
72
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
73
|
+
direction: "row",
|
|
74
|
+
spacing: 1,
|
|
75
|
+
alignItems: "center",
|
|
76
|
+
justifyContent: "space-between",
|
|
77
|
+
children: [
|
|
78
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
79
|
+
variant: "subtitle2",
|
|
80
|
+
children: mapping.labelKey || 'New label'
|
|
81
|
+
}),
|
|
82
|
+
/*#__PURE__*/ _jsx(IconButton, {
|
|
83
|
+
size: "small",
|
|
84
|
+
onClick: ()=>onRemove(index),
|
|
85
|
+
"aria-label": "Remove label mapping",
|
|
86
|
+
children: /*#__PURE__*/ _jsx(DeleteIcon, {
|
|
87
|
+
fontSize: "small"
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}),
|
|
92
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
93
|
+
label: "Label key",
|
|
94
|
+
value: mapping.labelKey,
|
|
95
|
+
onChange: (e)=>onUpdate(index, (draft)=>{
|
|
96
|
+
draft.labelKey = e.target.value;
|
|
97
|
+
}),
|
|
98
|
+
size: "small",
|
|
99
|
+
fullWidth: true
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ _jsxs(FormControl, {
|
|
102
|
+
size: "small",
|
|
103
|
+
fullWidth: true,
|
|
104
|
+
children: [
|
|
105
|
+
/*#__PURE__*/ _jsx(InputLabel, {
|
|
106
|
+
id: `color-mode-label-${index}`,
|
|
107
|
+
children: "Mode"
|
|
108
|
+
}),
|
|
109
|
+
/*#__PURE__*/ _jsx(Select, {
|
|
110
|
+
labelId: `color-mode-label-${index}`,
|
|
111
|
+
value: mapping.mode,
|
|
112
|
+
onChange: (e)=>onUpdate(index, (draft)=>{
|
|
113
|
+
draft.mode = e.target.value;
|
|
114
|
+
}),
|
|
115
|
+
label: "Mode",
|
|
116
|
+
children: Object.keys(MODE_LABELS).map((mode)=>/*#__PURE__*/ _jsx(MenuItem, {
|
|
117
|
+
value: mode,
|
|
118
|
+
children: MODE_LABELS[mode]
|
|
119
|
+
}, mode))
|
|
120
|
+
})
|
|
121
|
+
]
|
|
122
|
+
}),
|
|
123
|
+
/*#__PURE__*/ _jsxs(Box, {
|
|
124
|
+
children: [
|
|
125
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
126
|
+
variant: "body2",
|
|
127
|
+
color: "text.secondary",
|
|
128
|
+
sx: {
|
|
129
|
+
mb: 1
|
|
130
|
+
},
|
|
131
|
+
children: "Overrides"
|
|
132
|
+
}),
|
|
133
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
134
|
+
spacing: 1,
|
|
135
|
+
children: [
|
|
136
|
+
(mapping.overrides ?? []).map((override, overrideIndex)=>/*#__PURE__*/ _jsxs(Stack, {
|
|
137
|
+
direction: "row",
|
|
138
|
+
spacing: 1,
|
|
139
|
+
alignItems: "center",
|
|
140
|
+
children: [
|
|
141
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
142
|
+
label: "Value / Pattern",
|
|
143
|
+
value: override.value,
|
|
144
|
+
onChange: (e)=>handleUpdateOverride(overrideIndex, 'value', e.target.value),
|
|
145
|
+
size: "small",
|
|
146
|
+
sx: {
|
|
147
|
+
flex: 1
|
|
148
|
+
}
|
|
149
|
+
}),
|
|
150
|
+
/*#__PURE__*/ _jsx(FormControlLabel, {
|
|
151
|
+
control: /*#__PURE__*/ _jsx(Checkbox, {
|
|
152
|
+
checked: override.isRegex,
|
|
153
|
+
onChange: (e)=>handleUpdateOverride(overrideIndex, 'isRegex', e.target.checked),
|
|
154
|
+
size: "small"
|
|
155
|
+
}),
|
|
156
|
+
label: "Regex"
|
|
157
|
+
}),
|
|
158
|
+
/*#__PURE__*/ _jsx("input", {
|
|
159
|
+
type: "color",
|
|
160
|
+
value: override.color,
|
|
161
|
+
onChange: (e)=>handleUpdateOverride(overrideIndex, 'color', e.target.value),
|
|
162
|
+
style: {
|
|
163
|
+
width: 36,
|
|
164
|
+
height: 28,
|
|
165
|
+
border: 'none',
|
|
166
|
+
cursor: 'pointer'
|
|
167
|
+
}
|
|
168
|
+
}),
|
|
169
|
+
/*#__PURE__*/ _jsx(IconButton, {
|
|
170
|
+
size: "small",
|
|
171
|
+
onClick: ()=>handleRemoveOverride(overrideIndex),
|
|
172
|
+
"aria-label": "Remove override",
|
|
173
|
+
children: /*#__PURE__*/ _jsx(DeleteIcon, {
|
|
174
|
+
fontSize: "small"
|
|
175
|
+
})
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
}, overrideIndex)),
|
|
179
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
180
|
+
size: "small",
|
|
181
|
+
startIcon: /*#__PURE__*/ _jsx(PlusIcon, {}),
|
|
182
|
+
onClick: handleAddOverride,
|
|
183
|
+
children: "Add override"
|
|
184
|
+
})
|
|
185
|
+
]
|
|
186
|
+
})
|
|
187
|
+
]
|
|
188
|
+
})
|
|
189
|
+
]
|
|
190
|
+
})
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
export function AlertTableLabelsEditor(props) {
|
|
194
|
+
const { value, onChange } = props;
|
|
195
|
+
const mappings = value.labelColorMappings ?? [];
|
|
196
|
+
const handleAddMapping = useCallback(()=>{
|
|
197
|
+
onChange(produce(value, (draft)=>{
|
|
198
|
+
if (!draft.labelColorMappings) draft.labelColorMappings = [];
|
|
199
|
+
draft.labelColorMappings.push({
|
|
200
|
+
labelKey: '',
|
|
201
|
+
mode: 'auto'
|
|
202
|
+
});
|
|
203
|
+
}));
|
|
204
|
+
}, [
|
|
205
|
+
value,
|
|
206
|
+
onChange
|
|
207
|
+
]);
|
|
208
|
+
const handleRemoveMapping = useCallback((index)=>{
|
|
209
|
+
onChange(produce(value, (draft)=>{
|
|
210
|
+
draft.labelColorMappings?.splice(index, 1);
|
|
211
|
+
}));
|
|
212
|
+
}, [
|
|
213
|
+
value,
|
|
214
|
+
onChange
|
|
215
|
+
]);
|
|
216
|
+
const handleUpdateMapping = useCallback((index, updater)=>{
|
|
217
|
+
onChange(produce(value, (draft)=>{
|
|
218
|
+
const mapping = draft.labelColorMappings?.[index];
|
|
219
|
+
if (mapping) {
|
|
220
|
+
updater(mapping);
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
223
|
+
}, [
|
|
224
|
+
value,
|
|
225
|
+
onChange
|
|
226
|
+
]);
|
|
227
|
+
return /*#__PURE__*/ _jsx(OptionsEditorGroup, {
|
|
228
|
+
title: "Label Color Mappings",
|
|
229
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
230
|
+
spacing: 2,
|
|
231
|
+
children: [
|
|
232
|
+
mappings.length === 0 && /*#__PURE__*/ _jsx(Typography, {
|
|
233
|
+
variant: "body2",
|
|
234
|
+
color: "text.secondary",
|
|
235
|
+
children: "No label color mappings configured. Add one to color label values in the table."
|
|
236
|
+
}),
|
|
237
|
+
mappings.map((mapping, index)=>/*#__PURE__*/ _jsxs(Box, {
|
|
238
|
+
children: [
|
|
239
|
+
index > 0 && /*#__PURE__*/ _jsx(Divider, {
|
|
240
|
+
sx: {
|
|
241
|
+
mb: 2
|
|
242
|
+
}
|
|
243
|
+
}),
|
|
244
|
+
/*#__PURE__*/ _jsx(LabelMappingEntry, {
|
|
245
|
+
mapping: mapping,
|
|
246
|
+
index: index,
|
|
247
|
+
onUpdate: handleUpdateMapping,
|
|
248
|
+
onRemove: handleRemoveMapping
|
|
249
|
+
})
|
|
250
|
+
]
|
|
251
|
+
}, index)),
|
|
252
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
253
|
+
variant: "outlined",
|
|
254
|
+
size: "small",
|
|
255
|
+
startIcon: /*#__PURE__*/ _jsx(PlusIcon, {}),
|
|
256
|
+
onClick: handleAddMapping,
|
|
257
|
+
children: "Add label mapping"
|
|
258
|
+
})
|
|
259
|
+
]
|
|
260
|
+
})
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
//# sourceMappingURL=AlertTableLabelsEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/plugins/alert-table/AlertTableLabelsEditor.tsx"],"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 {\n Box,\n Button,\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n TextField,\n Typography,\n} from '@mui/material';\nimport { OptionsEditorGroup } from '@perses-dev/components';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport DeleteIcon from 'mdi-material-ui/Delete';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport { ReactElement, useCallback } from 'react';\nimport { AlertTableOptions, LabelColorMapping, LabelColorOverride } from './alert-table-model';\n\nconst MODE_LABELS: Record<LabelColorMapping['mode'], string> = {\n auto: 'Auto (hash-derived colors)',\n severity: 'Severity (built-in defaults)',\n manual: 'Manual (overrides only)',\n};\n\nfunction LabelMappingEntry({\n mapping,\n index,\n onUpdate,\n onRemove,\n}: {\n mapping: LabelColorMapping;\n index: number;\n onUpdate: (index: number, updater: (draft: LabelColorMapping) => void) => void;\n onRemove: (index: number) => void;\n}): ReactElement {\n const handleAddOverride = useCallback((): void => {\n onUpdate(index, (draft) => {\n if (!draft.overrides) draft.overrides = [];\n draft.overrides.push({ value: '', isRegex: false, color: '#1976d2' });\n });\n }, [index, onUpdate]);\n\n const handleRemoveOverride = useCallback(\n (overrideIndex: number): void => {\n onUpdate(index, (draft) => {\n draft.overrides?.splice(overrideIndex, 1);\n });\n },\n [index, onUpdate]\n );\n\n const handleUpdateOverride = useCallback(\n (overrideIndex: number, field: keyof LabelColorOverride, fieldValue: string | boolean): void => {\n onUpdate(index, (draft) => {\n const override = draft.overrides?.[overrideIndex];\n if (override) {\n if (field === 'isRegex') {\n override.isRegex = fieldValue as boolean;\n } else {\n override[field] = fieldValue as string;\n }\n }\n });\n },\n [index, onUpdate]\n );\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 2 }}>\n <Stack spacing={2}>\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" justifyContent=\"space-between\">\n <Typography variant=\"subtitle2\">{mapping.labelKey || 'New label'}</Typography>\n <IconButton size=\"small\" onClick={() => onRemove(index)} aria-label=\"Remove label mapping\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n <TextField\n label=\"Label key\"\n value={mapping.labelKey}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.labelKey = e.target.value;\n })\n }\n size=\"small\"\n fullWidth\n />\n <FormControl size=\"small\" fullWidth>\n <InputLabel id={`color-mode-label-${index}`}>Mode</InputLabel>\n <Select\n labelId={`color-mode-label-${index}`}\n value={mapping.mode}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.mode = e.target.value as LabelColorMapping['mode'];\n })\n }\n label=\"Mode\"\n >\n {(Object.keys(MODE_LABELS) as Array<LabelColorMapping['mode']>).map((mode) => (\n <MenuItem key={mode} value={mode}>\n {MODE_LABELS[mode]}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Overrides\n </Typography>\n <Stack spacing={1}>\n {(mapping.overrides ?? []).map((override, overrideIndex) => (\n <Stack key={overrideIndex} direction=\"row\" spacing={1} alignItems=\"center\">\n <TextField\n label=\"Value / Pattern\"\n value={override.value}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'value', e.target.value)}\n size=\"small\"\n sx={{ flex: 1 }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={override.isRegex}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'isRegex', e.target.checked)}\n size=\"small\"\n />\n }\n label=\"Regex\"\n />\n <input\n type=\"color\"\n value={override.color}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'color', e.target.value)}\n style={{ width: 36, height: 28, border: 'none', cursor: 'pointer' }}\n />\n <IconButton\n size=\"small\"\n onClick={() => handleRemoveOverride(overrideIndex)}\n aria-label=\"Remove override\"\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n <Button size=\"small\" startIcon={<PlusIcon />} onClick={handleAddOverride}>\n Add override\n </Button>\n </Stack>\n </Box>\n </Stack>\n </Box>\n );\n}\n\nexport function AlertTableLabelsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement {\n const { value, onChange } = props;\n const mappings = value.labelColorMappings ?? [];\n\n const handleAddMapping = useCallback((): void => {\n onChange(\n produce(value, (draft) => {\n if (!draft.labelColorMappings) draft.labelColorMappings = [];\n draft.labelColorMappings.push({ labelKey: '', mode: 'auto' });\n })\n );\n }, [value, onChange]);\n\n const handleRemoveMapping = useCallback(\n (index: number): void => {\n onChange(\n produce(value, (draft) => {\n draft.labelColorMappings?.splice(index, 1);\n })\n );\n },\n [value, onChange]\n );\n\n const handleUpdateMapping = useCallback(\n (index: number, updater: (draft: LabelColorMapping) => void): void => {\n onChange(\n produce(value, (draft) => {\n const mapping = draft.labelColorMappings?.[index];\n if (mapping) {\n updater(mapping);\n }\n })\n );\n },\n [value, onChange]\n );\n\n return (\n <OptionsEditorGroup title=\"Label Color Mappings\">\n <Stack spacing={2}>\n {mappings.length === 0 && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No label color mappings configured. Add one to color label values in the table.\n </Typography>\n )}\n {mappings.map((mapping, index) => (\n <Box key={index}>\n {index > 0 && <Divider sx={{ mb: 2 }} />}\n <LabelMappingEntry\n mapping={mapping}\n index={index}\n onUpdate={handleUpdateMapping}\n onRemove={handleRemoveMapping}\n />\n </Box>\n ))}\n <Button variant=\"outlined\" size=\"small\" startIcon={<PlusIcon />} onClick={handleAddMapping}>\n Add label mapping\n </Button>\n </Stack>\n </OptionsEditorGroup>\n );\n}\n"],"names":["Box","Button","Checkbox","Divider","FormControl","FormControlLabel","IconButton","InputLabel","MenuItem","Select","Stack","TextField","Typography","OptionsEditorGroup","produce","DeleteIcon","PlusIcon","useCallback","MODE_LABELS","auto","severity","manual","LabelMappingEntry","mapping","index","onUpdate","onRemove","handleAddOverride","draft","overrides","push","value","isRegex","color","handleRemoveOverride","overrideIndex","splice","handleUpdateOverride","field","fieldValue","override","sx","border","borderColor","borderRadius","p","spacing","direction","alignItems","justifyContent","variant","labelKey","size","onClick","aria-label","fontSize","label","onChange","e","target","fullWidth","id","labelId","mode","Object","keys","map","mb","flex","control","checked","input","type","style","width","height","cursor","startIcon","AlertTableLabelsEditor","props","mappings","labelColorMappings","handleAddMapping","handleRemoveMapping","handleUpdateMapping","updater","title","length"],"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,SACEA,GAAG,EACHC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,WAAW,EACXC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,KAAK,EACLC,SAAS,EACTC,UAAU,QACL,gBAAgB;AACvB,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,SAASC,OAAO,QAAQ,QAAQ;AAChC,OAAOC,gBAAgB,yBAAyB;AAChD,OAAOC,cAAc,uBAAuB;AAC5C,SAAuBC,WAAW,QAAQ,QAAQ;AAGlD,MAAMC,cAAyD;IAC7DC,MAAM;IACNC,UAAU;IACVC,QAAQ;AACV;AAEA,SAASC,kBAAkB,EACzBC,OAAO,EACPC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EAMT;IACC,MAAMC,oBAAoBV,YAAY;QACpCQ,SAASD,OAAO,CAACI;YACf,IAAI,CAACA,MAAMC,SAAS,EAAED,MAAMC,SAAS,GAAG,EAAE;YAC1CD,MAAMC,SAAS,CAACC,IAAI,CAAC;gBAAEC,OAAO;gBAAIC,SAAS;gBAAOC,OAAO;YAAU;QACrE;IACF,GAAG;QAACT;QAAOC;KAAS;IAEpB,MAAMS,uBAAuBjB,YAC3B,CAACkB;QACCV,SAASD,OAAO,CAACI;YACfA,MAAMC,SAAS,EAAEO,OAAOD,eAAe;QACzC;IACF,GACA;QAACX;QAAOC;KAAS;IAGnB,MAAMY,uBAAuBpB,YAC3B,CAACkB,eAAuBG,OAAiCC;QACvDd,SAASD,OAAO,CAACI;YACf,MAAMY,WAAWZ,MAAMC,SAAS,EAAE,CAACM,cAAc;YACjD,IAAIK,UAAU;gBACZ,IAAIF,UAAU,WAAW;oBACvBE,SAASR,OAAO,GAAGO;gBACrB,OAAO;oBACLC,QAAQ,CAACF,MAAM,GAAGC;gBACpB;YACF;QACF;IACF,GACA;QAACf;QAAOC;KAAS;IAGnB,qBACE,KAACzB;QAAIyC,IAAI;YAAEC,QAAQ;YAAGC,aAAa;YAAWC,cAAc;YAAGC,GAAG;QAAE;kBAClE,cAAA,MAACnC;YAAMoC,SAAS;;8BACd,MAACpC;oBAAMqC,WAAU;oBAAMD,SAAS;oBAAGE,YAAW;oBAASC,gBAAe;;sCACpE,KAACrC;4BAAWsC,SAAQ;sCAAa3B,QAAQ4B,QAAQ,IAAI;;sCACrD,KAAC7C;4BAAW8C,MAAK;4BAAQC,SAAS,IAAM3B,SAASF;4BAAQ8B,cAAW;sCAClE,cAAA,KAACvC;gCAAWwC,UAAS;;;;;8BAGzB,KAAC5C;oBACC6C,OAAM;oBACNzB,OAAOR,QAAQ4B,QAAQ;oBACvBM,UAAU,CAACC,IACTjC,SAASD,OAAO,CAACI;4BACfA,MAAMuB,QAAQ,GAAGO,EAAEC,MAAM,CAAC5B,KAAK;wBACjC;oBAEFqB,MAAK;oBACLQ,SAAS;;8BAEX,MAACxD;oBAAYgD,MAAK;oBAAQQ,SAAS;;sCACjC,KAACrD;4BAAWsD,IAAI,CAAC,iBAAiB,EAAErC,OAAO;sCAAE;;sCAC7C,KAACf;4BACCqD,SAAS,CAAC,iBAAiB,EAAEtC,OAAO;4BACpCO,OAAOR,QAAQwC,IAAI;4BACnBN,UAAU,CAACC,IACTjC,SAASD,OAAO,CAACI;oCACfA,MAAMmC,IAAI,GAAGL,EAAEC,MAAM,CAAC5B,KAAK;gCAC7B;4BAEFyB,OAAM;sCAEL,AAACQ,OAAOC,IAAI,CAAC/C,aAAkDgD,GAAG,CAAC,CAACH,qBACnE,KAACvD;oCAAoBuB,OAAOgC;8CACzB7C,WAAW,CAAC6C,KAAK;mCADLA;;;;8BAMrB,MAAC/D;;sCACC,KAACY;4BAAWsC,SAAQ;4BAAQjB,OAAM;4BAAiBQ,IAAI;gCAAE0B,IAAI;4BAAE;sCAAG;;sCAGlE,MAACzD;4BAAMoC,SAAS;;gCACZvB,CAAAA,QAAQM,SAAS,IAAI,EAAE,AAAD,EAAGqC,GAAG,CAAC,CAAC1B,UAAUL,8BACxC,MAACzB;wCAA0BqC,WAAU;wCAAMD,SAAS;wCAAGE,YAAW;;0DAChE,KAACrC;gDACC6C,OAAM;gDACNzB,OAAOS,SAAST,KAAK;gDACrB0B,UAAU,CAACC,IAAMrB,qBAAqBF,eAAe,SAASuB,EAAEC,MAAM,CAAC5B,KAAK;gDAC5EqB,MAAK;gDACLX,IAAI;oDAAE2B,MAAM;gDAAE;;0DAEhB,KAAC/D;gDACCgE,uBACE,KAACnE;oDACCoE,SAAS9B,SAASR,OAAO;oDACzByB,UAAU,CAACC,IAAMrB,qBAAqBF,eAAe,WAAWuB,EAAEC,MAAM,CAACW,OAAO;oDAChFlB,MAAK;;gDAGTI,OAAM;;0DAER,KAACe;gDACCC,MAAK;gDACLzC,OAAOS,SAASP,KAAK;gDACrBwB,UAAU,CAACC,IAAMrB,qBAAqBF,eAAe,SAASuB,EAAEC,MAAM,CAAC5B,KAAK;gDAC5E0C,OAAO;oDAAEC,OAAO;oDAAIC,QAAQ;oDAAIjC,QAAQ;oDAAQkC,QAAQ;gDAAU;;0DAEpE,KAACtE;gDACC8C,MAAK;gDACLC,SAAS,IAAMnB,qBAAqBC;gDACpCmB,cAAW;0DAEX,cAAA,KAACvC;oDAAWwC,UAAS;;;;uCA7BbpB;8CAiCd,KAAClC;oCAAOmD,MAAK;oCAAQyB,yBAAW,KAAC7D;oCAAaqC,SAAS1B;8CAAmB;;;;;;;;;AAQtF;AAEA,OAAO,SAASmD,uBAAuBC,KAA4C;IACjF,MAAM,EAAEhD,KAAK,EAAE0B,QAAQ,EAAE,GAAGsB;IAC5B,MAAMC,WAAWjD,MAAMkD,kBAAkB,IAAI,EAAE;IAE/C,MAAMC,mBAAmBjE,YAAY;QACnCwC,SACE3C,QAAQiB,OAAO,CAACH;YACd,IAAI,CAACA,MAAMqD,kBAAkB,EAAErD,MAAMqD,kBAAkB,GAAG,EAAE;YAC5DrD,MAAMqD,kBAAkB,CAACnD,IAAI,CAAC;gBAAEqB,UAAU;gBAAIY,MAAM;YAAO;QAC7D;IAEJ,GAAG;QAAChC;QAAO0B;KAAS;IAEpB,MAAM0B,sBAAsBlE,YAC1B,CAACO;QACCiC,SACE3C,QAAQiB,OAAO,CAACH;YACdA,MAAMqD,kBAAkB,EAAE7C,OAAOZ,OAAO;QAC1C;IAEJ,GACA;QAACO;QAAO0B;KAAS;IAGnB,MAAM2B,sBAAsBnE,YAC1B,CAACO,OAAe6D;QACd5B,SACE3C,QAAQiB,OAAO,CAACH;YACd,MAAML,UAAUK,MAAMqD,kBAAkB,EAAE,CAACzD,MAAM;YACjD,IAAID,SAAS;gBACX8D,QAAQ9D;YACV;QACF;IAEJ,GACA;QAACQ;QAAO0B;KAAS;IAGnB,qBACE,KAAC5C;QAAmByE,OAAM;kBACxB,cAAA,MAAC5E;YAAMoC,SAAS;;gBACbkC,SAASO,MAAM,KAAK,mBACnB,KAAC3E;oBAAWsC,SAAQ;oBAAQjB,OAAM;8BAAiB;;gBAIpD+C,SAASd,GAAG,CAAC,CAAC3C,SAASC,sBACtB,MAACxB;;4BACEwB,QAAQ,mBAAK,KAACrB;gCAAQsC,IAAI;oCAAE0B,IAAI;gCAAE;;0CACnC,KAAC7C;gCACCC,SAASA;gCACTC,OAAOA;gCACPC,UAAU2D;gCACV1D,UAAUyD;;;uBANJ3D;8BAUZ,KAACvB;oBAAOiD,SAAQ;oBAAWE,MAAK;oBAAQyB,yBAAW,KAAC7D;oBAAaqC,SAAS6B;8BAAkB;;;;;AAMpG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { OptionsEditorProps } from '@perses-dev/plugin-system';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
import { AlertTableOptions } from './alert-table-model';
|
|
4
|
+
export declare function AlertTableOptionsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement;
|
|
5
|
+
//# sourceMappingURL=AlertTableOptionsEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertTableOptionsEditor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/alert-table/AlertTableOptionsEditor.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAe,YAAY,EAA+B,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAe,iBAAiB,EAAqB,MAAM,qBAAqB,CAAC;AAOxF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,YAAY,CA4GlG"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
// Copyright The Perses Authors
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { Autocomplete, Checkbox, Chip, FormControlLabel, TextField } from '@mui/material';
|
|
15
|
+
import { OptionsEditorGroup } from '@perses-dev/components';
|
|
16
|
+
import { produce } from 'immer';
|
|
17
|
+
import { useCallback } from 'react';
|
|
18
|
+
import { ALL_ALERT_ACTIONS } from './alert-table-model';
|
|
19
|
+
const ACTION_LABELS = {
|
|
20
|
+
silence: 'Silence alert',
|
|
21
|
+
runbook: 'View runbook'
|
|
22
|
+
};
|
|
23
|
+
export function AlertTableOptionsEditor(props) {
|
|
24
|
+
const { value, onChange } = props;
|
|
25
|
+
const effectiveActions = value.allowedActions ?? ALL_ALERT_ACTIONS;
|
|
26
|
+
const groupBy = value.defaultGroupBy ?? [
|
|
27
|
+
'alertname'
|
|
28
|
+
];
|
|
29
|
+
const handleGroupByChange = useCallback((_event, newValue)=>{
|
|
30
|
+
onChange(produce(value, (draft)=>{
|
|
31
|
+
draft.defaultGroupBy = newValue.length > 0 ? newValue : undefined;
|
|
32
|
+
}));
|
|
33
|
+
}, [
|
|
34
|
+
value,
|
|
35
|
+
onChange
|
|
36
|
+
]);
|
|
37
|
+
const handleRunbookKeyChange = useCallback((e)=>{
|
|
38
|
+
onChange(produce(value, (draft)=>{
|
|
39
|
+
const trimmed = e.target.value.trim();
|
|
40
|
+
draft.runbookAnnotationKey = trimmed || undefined;
|
|
41
|
+
}));
|
|
42
|
+
}, [
|
|
43
|
+
value,
|
|
44
|
+
onChange
|
|
45
|
+
]);
|
|
46
|
+
const handleToggle = useCallback((action, checked)=>{
|
|
47
|
+
onChange(produce(value, (draft)=>{
|
|
48
|
+
const current = draft.allowedActions ?? [
|
|
49
|
+
...ALL_ALERT_ACTIONS
|
|
50
|
+
];
|
|
51
|
+
if (checked) {
|
|
52
|
+
if (!current.includes(action)) current.push(action);
|
|
53
|
+
} else {
|
|
54
|
+
const idx = current.indexOf(action);
|
|
55
|
+
if (idx >= 0) current.splice(idx, 1);
|
|
56
|
+
}
|
|
57
|
+
draft.allowedActions = current;
|
|
58
|
+
}));
|
|
59
|
+
}, [
|
|
60
|
+
value,
|
|
61
|
+
onChange
|
|
62
|
+
]);
|
|
63
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
64
|
+
children: [
|
|
65
|
+
/*#__PURE__*/ _jsx(OptionsEditorGroup, {
|
|
66
|
+
title: "Group By",
|
|
67
|
+
children: /*#__PURE__*/ _jsx(Autocomplete, {
|
|
68
|
+
multiple: true,
|
|
69
|
+
freeSolo: true,
|
|
70
|
+
options: [],
|
|
71
|
+
value: groupBy,
|
|
72
|
+
onChange: handleGroupByChange,
|
|
73
|
+
renderTags: (tagValues, getTagProps)=>tagValues.map((option, index)=>{
|
|
74
|
+
const { key, ...rest } = getTagProps({
|
|
75
|
+
index
|
|
76
|
+
});
|
|
77
|
+
const isVariable = option.includes('$');
|
|
78
|
+
return /*#__PURE__*/ _jsx(Chip, {
|
|
79
|
+
label: option,
|
|
80
|
+
size: "small",
|
|
81
|
+
variant: isVariable ? 'filled' : 'outlined',
|
|
82
|
+
color: isVariable ? 'primary' : 'default',
|
|
83
|
+
...rest
|
|
84
|
+
}, key);
|
|
85
|
+
}),
|
|
86
|
+
renderInput: (params)=>/*#__PURE__*/ _jsx(TextField, {
|
|
87
|
+
...params,
|
|
88
|
+
size: "small",
|
|
89
|
+
placeholder: "Type a label key or $variable and press Enter",
|
|
90
|
+
helperText: "Label keys to group alerts by. Supports $variable interpolation."
|
|
91
|
+
})
|
|
92
|
+
})
|
|
93
|
+
}),
|
|
94
|
+
/*#__PURE__*/ _jsx(OptionsEditorGroup, {
|
|
95
|
+
title: "Actions",
|
|
96
|
+
children: ALL_ALERT_ACTIONS.map((action)=>/*#__PURE__*/ _jsx(FormControlLabel, {
|
|
97
|
+
control: /*#__PURE__*/ _jsx(Checkbox, {
|
|
98
|
+
checked: effectiveActions.includes(action),
|
|
99
|
+
onChange: (e)=>handleToggle(action, e.target.checked),
|
|
100
|
+
size: "small"
|
|
101
|
+
}),
|
|
102
|
+
label: ACTION_LABELS[action]
|
|
103
|
+
}, action))
|
|
104
|
+
}),
|
|
105
|
+
/*#__PURE__*/ _jsx(OptionsEditorGroup, {
|
|
106
|
+
title: "Runbook",
|
|
107
|
+
children: /*#__PURE__*/ _jsx(TextField, {
|
|
108
|
+
size: "small",
|
|
109
|
+
fullWidth: true,
|
|
110
|
+
value: value.runbookAnnotationKey ?? '',
|
|
111
|
+
onChange: handleRunbookKeyChange,
|
|
112
|
+
placeholder: "runbook_url",
|
|
113
|
+
helperText: "Annotation key used to extract the runbook URL. Defaults to runbook_url."
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=AlertTableOptionsEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/plugins/alert-table/AlertTableOptionsEditor.tsx"],"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 { Autocomplete, Checkbox, Chip, FormControlLabel, TextField } from '@mui/material';\nimport { OptionsEditorGroup } from '@perses-dev/components';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport { ChangeEvent, ReactElement, SyntheticEvent, useCallback } from 'react';\nimport { AlertAction, AlertTableOptions, ALL_ALERT_ACTIONS } from './alert-table-model';\n\nconst ACTION_LABELS: Record<AlertAction, string> = {\n silence: 'Silence alert',\n runbook: 'View runbook',\n};\n\nexport function AlertTableOptionsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement {\n const { value, onChange } = props;\n const effectiveActions = value.allowedActions ?? ALL_ALERT_ACTIONS;\n const groupBy = value.defaultGroupBy ?? ['alertname'];\n\n const handleGroupByChange = useCallback(\n (_event: SyntheticEvent, newValue: string[]): void => {\n onChange(\n produce(value, (draft) => {\n draft.defaultGroupBy = newValue.length > 0 ? newValue : undefined;\n })\n );\n },\n [value, onChange]\n );\n\n const handleRunbookKeyChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>): void => {\n onChange(\n produce(value, (draft) => {\n const trimmed = e.target.value.trim();\n draft.runbookAnnotationKey = trimmed || undefined;\n })\n );\n },\n [value, onChange]\n );\n\n const handleToggle = useCallback(\n (action: AlertAction, checked: boolean) => {\n onChange(\n produce(value, (draft) => {\n const current = draft.allowedActions ?? [...ALL_ALERT_ACTIONS];\n if (checked) {\n if (!current.includes(action)) current.push(action);\n } else {\n const idx = current.indexOf(action);\n if (idx >= 0) current.splice(idx, 1);\n }\n draft.allowedActions = current;\n })\n );\n },\n [value, onChange]\n );\n\n return (\n <>\n <OptionsEditorGroup title=\"Group By\">\n <Autocomplete<string, true, false, true>\n multiple\n freeSolo\n options={[] as string[]}\n value={groupBy}\n onChange={handleGroupByChange}\n renderTags={(tagValues, getTagProps): ReactElement[] =>\n tagValues.map((option, index) => {\n const { key, ...rest } = getTagProps({ index });\n const isVariable = option.includes('$');\n return (\n <Chip\n key={key}\n label={option}\n size=\"small\"\n variant={isVariable ? 'filled' : 'outlined'}\n color={isVariable ? 'primary' : 'default'}\n {...rest}\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n size=\"small\"\n placeholder=\"Type a label key or $variable and press Enter\"\n helperText=\"Label keys to group alerts by. Supports $variable interpolation.\"\n />\n )}\n />\n </OptionsEditorGroup>\n <OptionsEditorGroup title=\"Actions\">\n {ALL_ALERT_ACTIONS.map((action) => (\n <FormControlLabel\n key={action}\n control={\n <Checkbox\n checked={effectiveActions.includes(action)}\n onChange={(e) => handleToggle(action, e.target.checked)}\n size=\"small\"\n />\n }\n label={ACTION_LABELS[action]}\n />\n ))}\n </OptionsEditorGroup>\n <OptionsEditorGroup title=\"Runbook\">\n <TextField\n size=\"small\"\n fullWidth\n value={value.runbookAnnotationKey ?? ''}\n onChange={handleRunbookKeyChange}\n placeholder=\"runbook_url\"\n helperText=\"Annotation key used to extract the runbook URL. Defaults to runbook_url.\"\n />\n </OptionsEditorGroup>\n </>\n );\n}\n"],"names":["Autocomplete","Checkbox","Chip","FormControlLabel","TextField","OptionsEditorGroup","produce","useCallback","ALL_ALERT_ACTIONS","ACTION_LABELS","silence","runbook","AlertTableOptionsEditor","props","value","onChange","effectiveActions","allowedActions","groupBy","defaultGroupBy","handleGroupByChange","_event","newValue","draft","length","undefined","handleRunbookKeyChange","e","trimmed","target","trim","runbookAnnotationKey","handleToggle","action","checked","current","includes","push","idx","indexOf","splice","title","multiple","freeSolo","options","renderTags","tagValues","getTagProps","map","option","index","key","rest","isVariable","label","size","variant","color","renderInput","params","placeholder","helperText","control","fullWidth"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PanelProps } from '@perses-dev/plugin-system';
|
|
2
|
+
import { AlertsData } from '@perses-dev/spec';
|
|
3
|
+
import { ReactElement } from 'react';
|
|
4
|
+
import { AlertTableOptions } from './alert-table-model';
|
|
5
|
+
export type AlertTablePanelProps = PanelProps<AlertTableOptions, AlertsData>;
|
|
6
|
+
/**
|
|
7
|
+
* Alert hierarchical table panel component.
|
|
8
|
+
* Displays alerts grouped by configurable labels with deduplication.
|
|
9
|
+
*/
|
|
10
|
+
export declare function AlertTablePanel({ spec, queryResults, contentDimensions }: AlertTablePanelProps): ReactElement;
|
|
11
|
+
//# sourceMappingURL=AlertTablePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertTablePanel.d.ts","sourceRoot":"","sources":["../../../../src/plugins/alert-table/AlertTablePanel.tsx"],"names":[],"mappings":"AAoCA,OAAO,EACL,UAAU,EAKX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASrD,OAAO,EAAE,YAAY,EAAqD,MAAM,OAAO,CAAC;AAKxF,OAAO,EAEL,iBAAiB,EAUlB,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;AA6P7E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,oBAAoB,GAAG,YAAY,CAgX7G"}
|