diff --git a/.betterer.results.json b/.betterer.results.json index e6c8fad35dd42..ae7e7a2695e63 100644 --- a/.betterer.results.json +++ b/.betterer.results.json @@ -3,6 +3,10 @@ { "name": "Do not use any type assertions.", "files": [ + { + "path": "/e2e/scenes/utils/support/types.ts", + "count": 1 + }, { "path": "/e2e/utils/support/types.ts", "count": 1 @@ -21,7 +25,7 @@ }, { "path": "/packages/grafana-data/src/dataframe/processDataFrame.ts", - "count": 18 + "count": 15 }, { "path": "/packages/grafana-data/src/datetime/datemath.ts", @@ -31,33 +35,17 @@ "path": "/packages/grafana-data/src/datetime/durationutil.ts", "count": 1 }, - { - "path": "/packages/grafana-data/src/datetime/formatter.ts", - "count": 1 - }, { "path": "/packages/grafana-data/src/datetime/moment_wrapper.ts", "count": 8 }, - { - "path": "/packages/grafana-data/src/datetime/parser.ts", - "count": 9 - }, - { - "path": "/packages/grafana-data/src/datetime/rangeutil.ts", - "count": 1 - }, { "path": "/packages/grafana-data/src/field/displayProcessor.ts", "count": 3 }, - { - "path": "/packages/grafana-data/src/field/overrides/processors.ts", - "count": 3 - }, { "path": "/packages/grafana-data/src/panel/PanelPlugin.ts", - "count": 2 + "count": 1 }, { "path": "/packages/grafana-data/src/panel/registryFactories.ts", @@ -71,13 +59,9 @@ "path": "/packages/grafana-data/src/transformations/fieldReducer.ts", "count": 1 }, - { - "path": "/packages/grafana-data/src/transformations/transformers/utils.ts", - "count": 1 - }, { "path": "/packages/grafana-data/src/types/app.ts", - "count": 2 + "count": 3 }, { "path": "/packages/grafana-data/src/types/live.ts", @@ -115,10 +99,6 @@ "path": "/packages/grafana-prometheus/src/gcopypaste/app/features/live/data/amendTimeSeries.ts", "count": 4 }, - { - "path": "/packages/grafana-prometheus/src/gcopypaste/test/helpers/selectOptionInTest.ts", - "count": 1 - }, { "path": "/packages/grafana-prometheus/src/language_utils.ts", "count": 1 @@ -152,9 +132,13 @@ "count": 1 }, { - "path": "/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts", + "path": "/packages/grafana-runtime/src/services/pluginExtensions/usePluginComponent.ts", "count": 1 }, + { + "path": "/packages/grafana-runtime/src/services/pluginExtensions/usePluginExtensions.ts", + "count": 2 + }, { "path": "/packages/grafana-runtime/src/utils/queryResponse.ts", "count": 1 @@ -163,10 +147,6 @@ "path": "/packages/grafana-schema/src/veneer/dashboard.types.ts", "count": 5 }, - { - "path": "/packages/grafana-sql/src/components/visual-query-builder/SQLWhereRow.tsx", - "count": 1 - }, { "path": "/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx", "count": 1 @@ -193,7 +173,7 @@ }, { "path": "/packages/grafana-ui/src/components/Select/SelectBase.tsx", - "count": 3 + "count": 2 }, { "path": "/packages/grafana-ui/src/components/SingleStatShared/SingleStatBaseOptions.ts", @@ -221,7 +201,7 @@ }, { "path": "/packages/grafana-ui/src/components/VizRepeater/VizRepeater.tsx", - "count": 4 + "count": 2 }, { "path": "/packages/grafana-ui/src/components/uPlot/Plot.tsx", @@ -229,7 +209,7 @@ }, { "path": "/packages/grafana-ui/src/components/uPlot/config/UPlotAxisBuilder.ts", - "count": 2 + "count": 1 }, { "path": "/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.ts", @@ -237,7 +217,7 @@ }, { "path": "/packages/grafana-ui/src/components/uPlot/utils.ts", - "count": 2 + "count": 1 }, { "path": "/packages/grafana-ui/src/graveyard/GraphNG/GraphNG.tsx", @@ -287,10 +267,6 @@ "path": "/public/app/core/components/TimeSeries/utils.ts", "count": 1 }, - { - "path": "/public/app/core/components/connectWithCleanUp.tsx", - "count": 1 - }, { "path": "/public/app/core/services/backend_srv.ts", "count": 1 @@ -323,18 +299,10 @@ "path": "/public/app/core/utils/ticks.ts", "count": 2 }, - { - "path": "/public/app/features/admin/OrgRolePicker.tsx", - "count": 1 - }, { "path": "/public/app/features/alerting/state/alertDef.ts", "count": 1 }, - { - "path": "/public/app/features/alerting/unified/RuleList.tsx", - "count": 1 - }, { "path": "/public/app/features/alerting/unified/components/AnnotationDetailsField.tsx", "count": 1 @@ -383,6 +351,10 @@ "path": "/public/app/features/alerting/unified/components/rule-editor/RuleInspector.tsx", "count": 1 }, + { + "path": "/public/app/features/alerting/unified/components/rule-list/RuleList.v1.tsx", + "count": 1 + }, { "path": "/public/app/features/alerting/unified/components/silences/SilencesEditor.tsx", "count": 1 @@ -427,22 +399,6 @@ "path": "/public/app/features/auth-config/utils/data.ts", "count": 1 }, - { - "path": "/public/app/features/canvas/runtime/element.tsx", - "count": 5 - }, - { - "path": "/public/app/features/canvas/runtime/frame.tsx", - "count": 1 - }, - { - "path": "/public/app/features/canvas/runtime/root.tsx", - "count": 1 - }, - { - "path": "/public/app/features/canvas/runtime/scene.tsx", - "count": 2 - }, { "path": "/public/app/features/dashboard-scene/inspect/HelpWizard/utils.ts", "count": 1 @@ -457,12 +413,16 @@ }, { "path": "/public/app/features/dashboard-scene/saving/getDashboardChanges.ts", - "count": 2 + "count": 4 }, { "path": "/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx", "count": 1 }, + { + "path": "/public/app/features/dashboard-scene/serialization/buildNewDashboardSaveModel.ts", + "count": 1 + }, { "path": "/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts", "count": 8 @@ -579,10 +539,6 @@ "path": "/public/app/features/dimensions/utils.ts", "count": 1 }, - { - "path": "/public/app/features/explore/ContentOutline/ContentOutline.tsx", - "count": 1 - }, { "path": "/public/app/features/explore/TraceView/TraceView.tsx", "count": 2 @@ -865,8 +821,80 @@ }, { "path": "/public/app/features/variables/utils.ts", + "count": 1 + }, + { + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx", + "count": 4 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/RestoreBackupModal/RestoreBackupModal.service.ts", + "count": 1 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/AllChecksTab.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/ChangeCheckIntervalModal/ChangeCheckIntervalModal.constants.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleFromTemplate/AlertRuleFromTemplate.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/inventory/Tabs/Services/ClusterItem.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/inventory/Tabs/Services/Clusters.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/inventory/Tabs/Services/Clusters.utils.ts", + "count": 1 + }, + { + "path": "/public/app/percona/pmm-dump/PMMDump.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/pmm-dump/SendToSupportModal.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/settings/components/Communication/Email/Email.utils.ts", "count": 2 }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Filter/Filter.utils.ts", + "count": 7 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Filter/components/fields/RadioButtonField.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Filter/components/fields/SelectDropdownField.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/FieldAdapters/Field.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/core/reducers/navigation/navigation.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/core/reducers/services/services.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/helpers/cron/cron.ts", + "count": 1 + }, { "path": "/public/app/plugins/datasource/azuremonitor/azure_monitor/azure_monitor_datasource.ts", "count": 1 @@ -893,7 +921,7 @@ }, { "path": "/public/app/plugins/datasource/cloud-monitoring/datasource.ts", - "count": 2 + "count": 3 }, { "path": "/public/app/plugins/datasource/cloud-monitoring/functions.ts", @@ -915,10 +943,6 @@ "path": "/public/app/plugins/datasource/elasticsearch/ElasticResponse.ts", "count": 2 }, - { - "path": "/public/app/plugins/datasource/elasticsearch/LegacyQueryRunner.ts", - "count": 1 - }, { "path": "/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts", "count": 1 @@ -1031,10 +1055,6 @@ "path": "/public/app/plugins/datasource/influxdb/datasource.ts", "count": 2 }, - { - "path": "/public/app/plugins/datasource/influxdb/mocks.ts", - "count": 4 - }, { "path": "/public/app/plugins/datasource/jaeger/_importedDependencies/model/transform-trace-data.tsx", "count": 1 @@ -1048,7 +1068,7 @@ "count": 1 }, { - "path": "/public/app/plugins/datasource/opentsdb/datasource.ts", + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummaryDataSource.ts", "count": 1 }, { @@ -1087,38 +1107,14 @@ "path": "/public/app/plugins/panel/annolist/AnnoListPanel.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/barchart/BarChartPanel.tsx", - "count": 2 - }, { "path": "/public/app/plugins/panel/barchart/bars.ts", "count": 1 }, - { - "path": "/public/app/plugins/panel/barchart/module.tsx", - "count": 1 - }, { "path": "/public/app/plugins/panel/candlestick/CandlestickPanel.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/canvas/editor/element/APIEditor.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/panel/canvas/editor/inline/InlineEditBody.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/panel/canvas/editor/layer/layerEditor.tsx", - "count": 2 - }, { "path": "/public/app/plugins/panel/debug/CursorView.tsx", "count": 1 @@ -1175,25 +1171,17 @@ "path": "/public/app/plugins/panel/live/LivePanel.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/logs/LogsPanel.tsx", - "count": 1 - }, { "path": "/public/app/plugins/panel/nodeGraph/Edge.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/nodeGraph/EdgeLabel.tsx", - "count": 1 - }, { "path": "/public/app/plugins/panel/nodeGraph/NodeGraph.tsx", "count": 4 }, { "path": "/public/app/plugins/panel/nodeGraph/layout.ts", - "count": 2 + "count": 1 }, { "path": "/public/app/plugins/panel/timeseries/migrations.ts", @@ -1221,7 +1209,7 @@ }, { "path": "/public/app/plugins/panel/xychart/v2/scatter.ts", - "count": 6 + "count": 14 }, { "path": "/public/app/store/store.ts", @@ -1332,10 +1320,6 @@ "path": "/packages/grafana-data/src/transformations/transformers/reduce.ts", "count": 2 }, - { - "path": "/packages/grafana-data/src/transformations/transformers/utils.ts", - "count": 1 - }, { "path": "/packages/grafana-data/src/types/OptionsUIRegistryBuilder.ts", "count": 7 @@ -1486,7 +1470,7 @@ }, { "path": "/packages/grafana-prometheus/src/datasource.ts", - "count": 9 + "count": 6 }, { "path": "/packages/grafana-prometheus/src/gcopypaste/app/features/live/data/amendTimeSeries.ts", @@ -1546,7 +1530,7 @@ }, { "path": "/packages/grafana-runtime/src/services/backendSrv.ts", - "count": 13 + "count": 11 }, { "path": "/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts", @@ -1588,6 +1572,10 @@ "path": "/packages/grafana-ui/src/components/Forms/Legacy/Select/SelectOption.tsx", "count": 2 }, + { + "path": "/packages/grafana-ui/src/components/Forms/Legacy/Select/SelectOptionGroup.tsx", + "count": 3 + }, { "path": "/packages/grafana-ui/src/components/JSONFormatter/json_explorer/json_explorer.ts", "count": 2 @@ -1606,11 +1594,7 @@ }, { "path": "/packages/grafana-ui/src/components/Select/SelectBase.tsx", - "count": 7 - }, - { - "path": "/packages/grafana-ui/src/components/Select/SelectOptionGroup.tsx", - "count": 3 + "count": 4 }, { "path": "/packages/grafana-ui/src/components/Select/ValueContainer.tsx", @@ -1680,18 +1664,18 @@ "path": "/packages/grafana-ui/src/components/VizTooltip/VizTooltip.tsx", "count": 2 }, - { - "path": "/packages/grafana-ui/src/components/uPlot/PlotLegend.tsx", - "count": 1 - }, { "path": "/packages/grafana-ui/src/components/uPlot/config/UPlotAxisBuilder.ts", - "count": 3 + "count": 2 }, { "path": "/packages/grafana-ui/src/components/uPlot/types.ts", "count": 1 }, + { + "path": "/packages/grafana-ui/src/components/uPlot/utils.ts", + "count": 1 + }, { "path": "/packages/grafana-ui/src/graveyard/Graph/GraphContextMenu.tsx", "count": 1 @@ -1766,7 +1750,7 @@ }, { "path": "/public/app/core/TableModel.ts", - "count": 7 + "count": 2 }, { "path": "/public/app/core/components/DynamicImports/SafeDynamicImport.tsx", @@ -1776,41 +1760,25 @@ "path": "/public/app/core/components/GraphNG/GraphNG.tsx", "count": 6 }, - { - "path": "/public/app/core/components/OptionsUI/registry.tsx", - "count": 11 - }, { "path": "/public/app/core/components/TagFilter/TagFilter.tsx", - "count": 5 - }, - { - "path": "/public/app/core/components/TagFilter/TagOption.tsx", - "count": 1 + "count": 4 }, { "path": "/public/app/core/components/TimeSeries/utils.ts", "count": 2 }, - { - "path": "/public/app/core/components/connectWithCleanUp.tsx", - "count": 1 - }, { "path": "/public/app/core/navigation/types.ts", "count": 1 }, - { - "path": "/public/app/core/reducers/root.ts", - "count": 1 - }, { "path": "/public/app/core/services/ResponseQueue.ts", "count": 1 }, { "path": "/public/app/core/services/backend_srv.ts", - "count": 9 + "count": 5 }, { "path": "/public/app/core/services/context_srv.ts", @@ -1832,10 +1800,6 @@ "path": "/public/app/core/time_series2.ts", "count": 19 }, - { - "path": "/public/app/core/utils/ConfigProvider.tsx", - "count": 2 - }, { "path": "/public/app/core/utils/connectWithReduxStore.tsx", "count": 8 @@ -1848,10 +1812,6 @@ "path": "/public/app/core/utils/fetch.ts", "count": 1 }, - { - "path": "/public/app/core/utils/flatten.ts", - "count": 1 - }, { "path": "/public/app/core/utils/object.ts", "count": 2 @@ -1874,7 +1834,7 @@ }, { "path": "/public/app/features/alerting/state/query_part.ts", - "count": 11 + "count": 10 }, { "path": "/public/app/features/alerting/state/reducers.ts", @@ -1945,24 +1905,20 @@ "count": 2 }, { - "path": "/public/app/features/canvas/element.ts", - "count": 5 - }, - { - "path": "/public/app/features/canvas/runtime/element.tsx", + "path": "/public/app/features/dashboard-scene/pages/DashboardScenePage.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/pages/DashboardScenePage.tsx", + "path": "/public/app/features/dashboard-scene/saving/getDashboardChanges.ts", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/saving/DetectChangesWorker.ts", - "count": 2 + "path": "/public/app/features/dashboard-scene/scene/NavToolbarActions.test.tsx", + "count": 1 }, { - "path": "/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/serialization/angularMigration.test.ts", + "count": 1 }, { "path": "/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts", @@ -2008,14 +1964,6 @@ "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx", "count": 1 }, - { - "path": "/public/app/features/dashboard/components/PanelEditor/OverrideCategoryTitle.tsx", - "count": 1 - }, - { - "path": "/public/app/features/dashboard/components/PanelEditor/getFieldOverrideElements.tsx", - "count": 1 - }, { "path": "/public/app/features/dashboard/components/PanelEditor/getVisualizationOptions.tsx", "count": 3 @@ -2074,7 +2022,7 @@ }, { "path": "/public/app/features/dashboard/state/DashboardMigrator.ts", - "count": 27 + "count": 24 }, { "path": "/public/app/features/dashboard/state/DashboardModel.repeat.test.ts", @@ -2094,7 +2042,7 @@ }, { "path": "/public/app/features/dashboard/state/PanelModel.ts", - "count": 20 + "count": 17 }, { "path": "/public/app/features/dashboard/state/TimeModel.ts", @@ -2148,10 +2096,6 @@ "path": "/public/app/features/explore/Logs/Logs.tsx", "count": 1 }, - { - "path": "/public/app/features/explore/Logs/LogsMetaRow.tsx", - "count": 1 - }, { "path": "/public/app/features/explore/TraceView/components/model/link-patterns.tsx", "count": 10 @@ -2180,14 +2124,6 @@ "path": "/public/app/features/inspector/QueryInspector.tsx", "count": 1 }, - { - "path": "/public/app/features/library-panels/components/LibraryPanelsView/actions.ts", - "count": 1 - }, - { - "path": "/public/app/features/library-panels/utils.ts", - "count": 1 - }, { "path": "/public/app/features/live/centrifuge/channel.ts", "count": 1 @@ -2198,7 +2134,7 @@ }, { "path": "/public/app/features/manage-dashboards/state/actions.ts", - "count": 14 + "count": 13 }, { "path": "/public/app/features/manage-dashboards/state/reducers.ts", @@ -2216,10 +2152,6 @@ "path": "/public/app/features/panel/panellinks/link_srv.ts", "count": 4 }, - { - "path": "/public/app/features/plugins/admin/hooks/useHistory.tsx", - "count": 1 - }, { "path": "/public/app/features/plugins/admin/types.ts", "count": 1 @@ -2228,6 +2160,10 @@ "path": "/public/app/features/plugins/datasource_srv.ts", "count": 8 }, + { + "path": "/public/app/features/plugins/extensions/getPluginExtensions.test.tsx", + "count": 1 + }, { "path": "/public/app/features/plugins/tests/datasource_srv.test.ts", "count": 3 @@ -2246,7 +2182,7 @@ }, { "path": "/public/app/features/query/state/updateQueries.test.ts", - "count": 11 + "count": 9 }, { "path": "/public/app/features/search/service/sql.ts", @@ -2282,7 +2218,7 @@ }, { "path": "/public/app/features/templating/template_srv.ts", - "count": 10 + "count": 9 }, { "path": "/public/app/features/trails/ActionTabs/utils.ts", @@ -2306,7 +2242,7 @@ }, { "path": "/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/utils.ts", - "count": 3 + "count": 1 }, { "path": "/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/valueMatchersUI.ts", @@ -2390,7 +2326,7 @@ }, { "path": "/public/app/features/variables/inspect/utils.ts", - "count": 8 + "count": 6 }, { "path": "/public/app/features/variables/pickers/OptionsPicker/actions.ts", @@ -2460,6 +2396,54 @@ "path": "/public/app/features/variables/utils.ts", "count": 6 }, + { + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx", + "count": 4 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/CheckActions/CheckActions.types.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/ExpandableCell/ExpandableCell.types.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/FormElement/FormElement.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/MultiCheckbox/MultiCheckboxField.types.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/SearchFilter/SearchFilter.types.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/helpers/cron/cron.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/helpers/promises.test.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/helpers/promises.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/helpers/testUtils.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/shared/helpers/validator.types.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/helpers/validators.ts", + "count": 6 + }, { "path": "/public/app/plugins/datasource/alertmanager/DataSource.ts", "count": 1 @@ -2496,10 +2480,6 @@ "path": "/public/app/plugins/datasource/cloudwatch/types.ts", "count": 7 }, - { - "path": "/public/app/plugins/datasource/cloudwatch/utils/logsRetry.ts", - "count": 1 - }, { "path": "/public/app/plugins/datasource/elasticsearch/ElasticResponse.ts", "count": 30 @@ -2508,10 +2488,6 @@ "path": "/public/app/plugins/datasource/elasticsearch/LanguageProvider.ts", "count": 4 }, - { - "path": "/public/app/plugins/datasource/elasticsearch/LegacyQueryRunner.ts", - "count": 2 - }, { "path": "/public/app/plugins/datasource/elasticsearch/QueryBuilder.ts", "count": 8 @@ -2562,11 +2538,11 @@ }, { "path": "/public/app/plugins/datasource/graphite/datasource.ts", - "count": 49 + "count": 27 }, { "path": "/public/app/plugins/datasource/graphite/gfunc.ts", - "count": 9 + "count": 4 }, { "path": "/public/app/plugins/datasource/graphite/graphite_query.ts", @@ -2602,7 +2578,7 @@ }, { "path": "/public/app/plugins/datasource/influxdb/influx_query_model.ts", - "count": 12 + "count": 5 }, { "path": "/public/app/plugins/datasource/influxdb/influx_series.ts", @@ -2618,7 +2594,7 @@ }, { "path": "/public/app/plugins/datasource/influxdb/response_parser.ts", - "count": 2 + "count": 1 }, { "path": "/public/app/plugins/datasource/jaeger/_importedDependencies/types/trace.ts", @@ -2642,7 +2618,7 @@ }, { "path": "/public/app/plugins/datasource/loki/datasource.ts", - "count": 3 + "count": 2 }, { "path": "/public/app/plugins/datasource/loki/streaming.ts", @@ -2654,12 +2630,28 @@ }, { "path": "/public/app/plugins/datasource/opentsdb/datasource.ts", - "count": 44 + "count": 18 }, { "path": "/public/app/plugins/datasource/opentsdb/migrations.ts", "count": 1 }, + { + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.service.ts", + "count": 4 + }, + { + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummaryDataSource.test.ts", + "count": 4 + }, + { + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummaryDataSource.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/QueryEditor/QueryEditor.tsx", + "count": 1 + }, { "path": "/public/app/plugins/datasource/prometheus/configuration/AzureCredentialsConfig.ts", "count": 18 @@ -2674,7 +2666,7 @@ }, { "path": "/public/app/plugins/datasource/tempo/datasource.ts", - "count": 4 + "count": 2 }, { "path": "/public/app/plugins/datasource/tempo/language_provider.ts", @@ -2701,21 +2693,13 @@ "count": 1 }, { - "path": "/public/app/plugins/panel/candlestick/CandlestickPanel.tsx", + "path": "/public/app/plugins/panel/barchart/utils.ts", "count": 1 }, { - "path": "/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx", + "path": "/public/app/plugins/panel/candlestick/CandlestickPanel.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/canvas/editor/inline/InlineEditBody.tsx", - "count": 2 - }, - { - "path": "/public/app/plugins/panel/canvas/editor/layer/layerEditor.tsx", - "count": 2 - }, { "path": "/public/app/plugins/panel/debug/CursorView.tsx", "count": 1 @@ -2772,6 +2756,14 @@ "path": "/public/app/plugins/panel/piechart/migrations.ts", "count": 2 }, + { + "path": "/public/app/plugins/panel/pmm-pt-summary-panel/PTSummary.test.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/pmm-pt-summary-panel/module.ts", + "count": 1 + }, { "path": "/public/app/plugins/panel/stat/StatMigrations.ts", "count": 1 @@ -2816,10 +2808,6 @@ "path": "/public/app/plugins/panel/xychart/AutoEditor.tsx", "count": 1 }, - { - "path": "/public/app/plugins/panel/xychart/XYChartPanel.tsx", - "count": 1 - }, { "path": "/public/app/plugins/panel/xychart/scatter.ts", "count": 4 @@ -2866,7 +2854,7 @@ }, { "path": "/public/test/core/redux/reduxTester.ts", - "count": 6 + "count": 5 }, { "path": "/public/test/core/thunk/thunkTester.ts", @@ -2899,3359 +2887,6222 @@ ] }, { - "name": "Styles should be written using objects.", + "name": "'HorizontalGroup' import from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", "files": [ { - "path": "/packages/grafana-flamegraph/src/FlameGraph/FlameGraph.tsx", - "count": 5 + "path": "/packages/grafana-prometheus/src/components/PrometheusMetricsBrowser.tsx", + "count": 1 }, { - "path": "/packages/grafana-flamegraph/src/FlameGraph/FlameGraphMetadata.tsx", - "count": 4 + "path": "/packages/grafana-sql/src/components/query-editor-raw/QueryToolbox.tsx", + "count": 1 }, { - "path": "/packages/grafana-flamegraph/src/FlameGraph/FlameGraphTooltip.tsx", - "count": 6 + "path": "/packages/grafana-ui/src/components/Forms/FieldArray.story.tsx", + "count": 1 }, { - "path": "/packages/grafana-flamegraph/src/FlameGraphHeader.tsx", - "count": 13 + "path": "/packages/grafana-ui/src/components/Layout/Layout.story.tsx", + "count": 1 }, { - "path": "/packages/grafana-flamegraph/src/TopTable/FlameGraphTopTableContainer.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/components/PromExemplarField.tsx", - "count": 3 + "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/components/PromExploreExtraField.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/DashboardSettings/VersionsSettings.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/components/PrometheusMetricsBrowser.tsx", - "count": 12 + "path": "/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/components/monaco-query-field/MonacoQueryField.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/PanelEditor/DynamicConfigValueEditor.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/configuration/ConfigEditor.tsx", - "count": 16 + "path": "/public/app/features/dashboard/components/PanelEditor/OverrideCategoryTitle.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/configuration/ExemplarsSettings.tsx", + "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx", "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx", - "count": 4 + "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveProvisionedDashboardForm.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/QueryPatternsModal.tsx", - "count": 2 + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/LabelFilters.tsx", + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx", "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/MetricSelect.tsx", - "count": 9 + "path": "/public/app/features/geo/editor/locationModeEditor.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/PromQueryCodeEditor.tsx", + "path": "/public/app/features/inspector/InspectDataOptions.tsx", "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/AdditionalSettings.tsx", - "count": 3 + "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/ResultsTable.tsx", - "count": 13 + "path": "/public/app/features/plugins/admin/components/InstallControls/ExternallyManagedButton.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/components/metrics-modal/styles.ts", - "count": 19 + "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx", + "count": 1 }, { - "path": "/packages/grafana-prometheus/src/querybuilder/shared/QueryBuilderHints.tsx", - "count": 2 + "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx", + "count": 1 }, { - "path": "/packages/grafana-sql/src/components/query-editor-raw/QueryToolbox.tsx", - "count": 5 + "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", + "count": 1 }, { - "path": "/packages/grafana-sql/src/components/query-editor-raw/QueryValidator.tsx", - "count": 3 + "path": "/public/app/features/plugins/admin/components/PluginListItemBadges.tsx", + "count": 1 }, { - "path": "/packages/grafana-sql/src/components/query-editor-raw/RawEditor.tsx", - "count": 2 + "path": "/public/app/features/plugins/components/PluginsErrorsInfo.tsx", + "count": 1 }, { - "path": "/public/app/core/components/AppChrome/TopBar/TopSearchBarCommandPaletteTrigger.tsx", + "path": "/public/app/features/query/components/QueryGroup.tsx", "count": 1 }, { - "path": "/public/app/core/components/NestedFolderPicker/Trigger.tsx", + "path": "/public/app/features/transformers/calculateHeatmap/editor/AxisEditor.tsx", "count": 1 }, { - "path": "/public/app/core/components/PageHeader/PageHeader.tsx", - "count": 2 + "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/ReduceRowOptionsEditor.tsx", + "count": 1 }, { - "path": "/public/app/core/components/PanelTypeFilter/PanelTypeFilter.tsx", - "count": 2 + "path": "/public/app/features/transformers/editors/EnumMappingEditor.tsx", + "count": 1 }, { - "path": "/public/app/core/components/QueryOperationRow/OperationRowHelp.tsx", + "path": "/public/app/features/transformers/editors/EnumMappingRow.tsx", "count": 1 }, { - "path": "/public/app/core/components/QueryOperationRow/QueryOperationRow.tsx", - "count": 2 + "path": "/public/app/features/transformers/editors/FilterByRefIdTransformerEditor.tsx", + "count": 1 }, { - "path": "/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx", - "count": 7 + "path": "/public/app/features/transformers/joinByLabels/JoinByLabelsTransformerEditor.tsx", + "count": 1 }, { - "path": "/public/app/core/components/RolePicker/RolePickerInput.tsx", - "count": 7 + "path": "/public/app/features/transformers/partitionByValues/PartitionByValuesEditor.tsx", + "count": 1 }, { - "path": "/public/app/core/components/RolePicker/ValueContainer.tsx", + "path": "/public/app/features/variables/editor/VariableEditorEditor.tsx", "count": 1 }, { - "path": "/public/app/core/components/TagFilter/TagFilter.tsx", - "count": 2 + "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", + "count": 1 }, { - "path": "/public/app/core/components/TagFilter/TagOption.tsx", - "count": 2 + "path": "/public/app/percona/backup/components/BackupInventory/RestoreBackupModal/RestoreBackupModal.tsx", + "count": 1 }, { - "path": "/public/app/core/components/Upgrade/ProBadge.tsx", + "path": "/public/app/percona/backup/components/StorageLocations/AddStorageLocationModal/AddStorageLocationModal.tsx", "count": 1 }, { - "path": "/public/app/core/components/Upgrade/UpgradeBox.tsx", - "count": 18 + "path": "/public/app/percona/check/components/AllChecksTab/ChangeCheckIntervalModal/ChangeCheckIntervalModal.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/LicenseChrome.tsx", - "count": 3 + "path": "/public/app/percona/edit-instance/EditInstance.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/UpgradePage.tsx", - "count": 5 + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AddAlertRuleTemplateModal/AddAlertRuleTemplateModal.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx", - "count": 8 + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/EditAlertRuleTemplateModal/EditAlertRuleTemplateModal.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/UserListPublicDashboardPage/DeleteUserModalButton.tsx", - "count": 2 + "path": "/public/app/percona/inventory/Tabs/Agents.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/UserOrgs.tsx", - "count": 17 + "path": "/public/app/percona/inventory/Tabs/Nodes.tsx", + "count": 1 }, { - "path": "/public/app/features/admin/UserPermissions.tsx", + "path": "/public/app/percona/inventory/Tabs/Services.tsx", "count": 1 }, { - "path": "/public/app/features/admin/UserProfile.tsx", - "count": 3 + "path": "/public/app/percona/inventory/Tabs/Services/ClusterItem.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/AlertWarning.tsx", + "path": "/public/app/percona/inventory/Tabs/Services/ServicesTable.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/AlertsFolderView.tsx", - "count": 5 + "path": "/public/app/percona/pmm-dump/PMMDump.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/GrafanaRuleQueryViewer.tsx", - "count": 15 + "path": "/public/app/percona/rbac/AccessRoleHeader/AccessRoleHeader.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/NotificationPolicies.tsx", + "path": "/public/app/percona/shared/components/Elements/DeleteModal/DeleteModal.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/PanelAlertTabContent.tsx", - "count": 3 + "path": "/public/app/percona/shared/components/Elements/FilterSection/withFilterTypes.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/RedirectToRuleViewer.tsx", - "count": 4 + "path": "/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/RuleList.tsx", - "count": 4 + "path": "/public/app/plugins/datasource/azuremonitor/components/MetricsQueryEditor/DimensionFields.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/AlertLabel.tsx", + "path": "/public/app/plugins/datasource/azuremonitor/components/TracesQueryEditor/Filter.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/AlertLabels.tsx", + "path": "/public/app/plugins/datasource/cloud-monitoring/components/GraphPeriod.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/AlertManagerPicker.tsx", + "path": "/public/app/plugins/datasource/cloud-monitoring/components/LabelFilter.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/AlertStateDot.tsx", + "path": "/public/app/plugins/datasource/graphite/components/GraphiteFunctionEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/AnnotationDetailsField.tsx", + "path": "/public/app/plugins/datasource/influxdb/components/editor/query/influxql/code/RawInfluxQLEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/DetailsField.tsx", - "count": 3 + "path": "/public/app/plugins/datasource/jaeger/components/QueryEditor.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/DynamicTable.tsx", - "count": 7 + "path": "/public/app/plugins/datasource/tempo/QueryField.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/DynamicTableWithGuidelines.tsx", - "count": 6 + "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/DurationInput.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/EmptyArea.tsx", + "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/GroupByField.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/EmptyAreaWithCTA.tsx", - "count": 3 + "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/SearchField.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/Expression.tsx", + "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/TraceQLSearch.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/GrafanaAlertmanagerDeliveryWarning.tsx", + "path": "/public/app/plugins/datasource/zipkin/QueryField.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/Label.tsx", - "count": 3 - }, - { - "path": "/public/app/features/alerting/unified/components/MetaText.tsx", + "path": "/public/app/plugins/panel/barchart/TickSpacingEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/Spacer.tsx", + "path": "/public/app/plugins/panel/geomap/editor/StyleEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/StateColoredText.tsx", - "count": 4 - }, - { - "path": "/public/app/features/alerting/unified/components/StateTag.tsx", - "count": 9 - }, - { - "path": "/public/app/features/alerting/unified/components/Tokenize.tsx", - "count": 4 + "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/Well.tsx", + "path": "/public/app/plugins/panel/timeseries/InsertNullsEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/admin/AlertmanagerConfig.tsx", + "path": "/public/app/plugins/panel/timeseries/LineStyleEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/admin/AlertmanagerConfigSelector.tsx", + "path": "/public/app/plugins/panel/timeseries/SpanNullsEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/admin/ExternalAlertmanagerDataSources.tsx", - "count": 5 - }, + "path": "/public/app/plugins/panel/timeseries/plugins/annotations2/AnnotationTooltip2.tsx", + "count": 1 + } + ] + }, + { + "name": "No untranslated strings. Wrap text with ", + "files": [ { - "path": "/public/app/features/alerting/unified/components/admin/ExternalAlertmanagers.tsx", - "count": 4 + "path": "/packages/grafana-ui/src/components/AutoSaveField/AutoSaveField.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/alert-groups/AlertDetails.tsx", + "path": "/packages/grafana-ui/src/components/AutoSaveField/EllipsisAnimated.tsx", "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/alert-groups/AlertGroupAlertsTable.tsx", + "path": "/packages/grafana-ui/src/components/ColorPicker/ColorPickerPopover.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/alert-groups/AlertGroupFilter.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/ConfirmButton/ConfirmButton.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/export/FileExportPreview.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/expressions/Expression.tsx", - "count": 25 + "path": "/packages/grafana-ui/src/components/DataLinks/DataLinksInlineEditor/DataLinkEditorModalContent.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/expressions/ExpressionStatusIndicator.tsx", + "path": "/packages/grafana-ui/src/components/DataLinks/DataLinksInlineEditor/DataLinksInlineEditor.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/DataLinks/DataLinksInlineEditor/DataLinksListItem.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx", - "count": 4 + "path": "/packages/grafana-ui/src/components/DataLinks/FieldLinkList.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx", - "count": 5 + "path": "/packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingsTable.tsx", + "path": "/packages/grafana-ui/src/components/DataSourceSettings/CertificationKey.tsx", + "count": 1 + }, + { + "path": "/packages/grafana-ui/src/components/DataSourceSettings/CustomHeadersSettings.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/notification-policies/EditNotificationPolicyForm.tsx", - "count": 4 + "path": "/packages/grafana-ui/src/components/DataSourceSettings/DataSourceHttpSettings.tsx", + "count": 19 }, { - "path": "/public/app/features/alerting/unified/components/notification-policies/Matchers.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/DataSourceSettings/SecureSocksProxySettings.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/notification-policies/PromDurationDocs.tsx", - "count": 4 + "path": "/packages/grafana-ui/src/components/DataSourceSettings/TLSAuthSettings.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/notification-policies/formStyles.ts", - "count": 6 + "path": "/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/receivers/AlertInstanceModalSelector.tsx", - "count": 18 + "path": "/packages/grafana-ui/src/components/DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker.tsx", + "count": 9 }, { - "path": "/public/app/features/alerting/unified/components/receivers/PayloadEditor.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/FileDropzone/FileDropzone.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/receivers/ReceiversSection.tsx", + "path": "/packages/grafana-ui/src/components/FileDropzone/FileListItem.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/receivers/TemplateDataDocs.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/FilterInput/FilterInput.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/receivers/TemplateForm.tsx", + "path": "/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/ChannelSubForm.tsx", - "count": 5 + "path": "/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/CollapsibleSection.tsx", - "count": 5 + "path": "/packages/grafana-ui/src/components/Select/SelectBase.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/GenerateAlertDataModal.tsx", - "count": 6 + "path": "/packages/grafana-ui/src/components/Table/FilterList.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/ReceiverForm.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/Table/FilterPopup.tsx", + "count": 4 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/TestContactPointModal.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/Table/Table.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/fields/KeyValueMapInput.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/Table/TableCellInspector.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/fields/OptionField.tsx", + "path": "/packages/grafana-ui/src/components/TableInputCSV/TableInputCSV.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/fields/StringArrayInput.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/Tags/TagList.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/receivers/form/fields/styles.ts", - "count": 5 + "path": "/packages/grafana-ui/src/components/TagsInput/TagsInput.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/AnnotationsStep.tsx", - "count": 11 + "path": "/packages/grafana-ui/src/components/ThemeDemos/EmotionPerfTest.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/CloudAlertPreview.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/ThemeDemos/ThemeDemo.tsx", + "count": 31 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx", - "count": 3 + "path": "/packages/grafana-ui/src/components/UsersIndicator/UserIcon.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/CustomAnnotationHeaderField.tsx", - "count": 2 + "path": "/packages/grafana-ui/src/components/VizLegend/VizLegendTableItem.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/DashboardAnnotationField.tsx", - "count": 4 + "path": "/packages/grafana-ui/src/components/VizTooltip/VizTooltipFooter.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/DashboardPicker.tsx", - "count": 15 + "path": "/packages/grafana-ui/src/graveyard/Graph/Graph.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/ExpressionEditor.tsx", - "count": 2 + "path": "/public/app/core/components/AccessControl/PermissionListItem.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/ExpressionsEditor.tsx", + "path": "/public/app/core/components/AppChrome/AppChrome.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/FolderAndGroup.tsx", - "count": 4 + "path": "/public/app/core/components/AppChrome/TopBar/SignInLink.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx", - "count": 11 + "path": "/public/app/core/components/AppChrome/TopBar/TopSearchBarCommandPaletteTrigger.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/GroupAndNamespaceFields.tsx", - "count": 2 + "path": "/public/app/core/components/AppNotifications/AppNotificationItem.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/NeedHelpInfo.tsx", - "count": 2 + "path": "/public/app/core/components/EmptyListCTA/EmptyListCTA.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/PreviewRule.tsx", + "path": "/public/app/core/components/FolderFilter/FolderFilter.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/PreviewRuleResult.tsx", + "path": "/public/app/core/components/ForgottenPassword/ChangePassword.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/QueryEditor.tsx", - "count": 1 + "path": "/public/app/core/components/ForgottenPassword/ForgottenPassword.tsx", + "count": 6 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/QueryOptions.tsx", + "path": "/public/app/core/components/FormPrompt/FormPrompt.tsx", "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx", - "count": 2 + "path": "/public/app/core/components/Login/LoginLayout.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/RecordingRuleEditor.tsx", + "path": "/public/app/core/components/Login/LoginServiceButtons.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/RuleEditorSection.tsx", - "count": 3 + "path": "/public/app/core/components/NestedFolderPicker/NestedFolderList.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/RuleFolderPicker.tsx", - "count": 2 + "path": "/public/app/core/components/PageNotFound/EntityNotFound.tsx", + "count": 5 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/RuleInspector.tsx", - "count": 3 + "path": "/public/app/core/components/PanelTypeFilter/PanelTypeFilter.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx", + "path": "/public/app/core/components/PluginHelp/PluginHelp.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPolicyMatchers.tsx", - "count": 2 + "path": "/public/app/core/components/RolePicker/BuiltinRoleSelector.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx", - "count": 7 + "path": "/public/app/core/components/RolePicker/RolePickerInput.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreviewByAlertManager.tsx", - "count": 5 + "path": "/public/app/core/components/RolePicker/RolePickerMenu.tsx", + "count": 4 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationRoute.tsx", - "count": 9 + "path": "/public/app/core/components/RolePicker/RolePickerSubMenu.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationRouteDetailsModal.tsx", - "count": 11 + "path": "/public/app/core/components/Select/OldFolderPicker.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/CloudDataSourceSelector.tsx", + "path": "/public/app/core/components/Signup/SignupPage.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/QueryAndExpressionsStep.tsx", - "count": 4 + "path": "/public/app/core/components/Signup/VerifyEmail.tsx", + "count": 5 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/RuleType.tsx", - "count": 2 + "path": "/public/app/core/components/TagFilter/TagFilter.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/RuleTypePicker.tsx", - "count": 1 + "path": "/public/app/core/components/Upgrade/UpgradeBox.tsx", + "count": 6 }, { - "path": "/public/app/features/alerting/unified/components/rule-viewer/RuleViewerLayout.tsx", + "path": "/public/app/core/components/help/HelpModal.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/ActionButton.tsx", - "count": 1 + "path": "/public/app/core/navigation/GrafanaRouteError.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/rules/AlertInstanceStateFilter.tsx", - "count": 1 + "path": "/public/app/core/navigation/RouterDebugger.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/CloudRules.tsx", + "path": "/public/app/core/navigation/testRoutes.tsx", + "count": 6 + }, + { + "path": "/public/app/features/admin/AdminEditOrgPage.tsx", "count": 4 }, { - "path": "/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx", - "count": 5 + "path": "/public/app/features/admin/AdminFeatureTogglesPage.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/rules/GrafanaRules.tsx", - "count": 4 + "path": "/public/app/features/admin/AdminFeatureTogglesTable.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/rules/NoRulesCTA.tsx", + "path": "/public/app/features/admin/AdminListOrgsPage.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/ReorderRuleGroupModal.tsx", - "count": 7 + "path": "/public/app/features/admin/AdminOrgsTable.tsx", + "count": 5 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleActionsButtons.tsx", + "path": "/public/app/features/admin/AdminSettings.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleConfigStatus.tsx", - "count": 2 + "path": "/public/app/features/admin/ServerStats.tsx", + "count": 6 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetails.tsx", - "count": 3 + "path": "/public/app/features/admin/UpgradePage.tsx", + "count": 11 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx", + "path": "/public/app/features/admin/UserCreatePage.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsAnnotations.tsx", + "path": "/public/app/features/admin/UserLdapSyncInfo.tsx", + "count": 9 + }, + { + "path": "/public/app/features/admin/UserListAdminPage.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsDataSources.tsx", + "path": "/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsExpression.tsx", + "path": "/public/app/features/admin/UserListPublicDashboardPage/UserListPublicDashboardPage.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsMatchingInstances.tsx", - "count": 5 + "path": "/public/app/features/admin/UserOrgs.tsx", + "count": 12 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleHealth.tsx", - "count": 1 + "path": "/public/app/features/admin/UserPermissions.tsx", + "count": 5 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleListErrors.tsx", - "count": 3 + "path": "/public/app/features/admin/UserProfile.tsx", + "count": 5 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleListStateSection.tsx", - "count": 3 + "path": "/public/app/features/admin/UserSessions.tsx", + "count": 7 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleState.tsx", + "path": "/public/app/features/admin/Users/AnonUsersTable.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RulesGroup.tsx", - "count": 12 + "path": "/public/app/features/admin/Users/OrgUsersTable.tsx", + "count": 4 }, { - "path": "/public/app/features/alerting/unified/components/rules/RulesTable.tsx", - "count": 4 + "path": "/public/app/features/admin/Users/UsersTable.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/state-history/LogRecordViewer.tsx", - "count": 5 + "path": "/public/app/features/admin/ldap/LdapConnectionStatus.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/state-history/LokiStateHistory.tsx", - "count": 6 + "path": "/public/app/features/admin/ldap/LdapPage.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/state-history/StateHistory.tsx", - "count": 3 + "path": "/public/app/features/admin/ldap/LdapSyncInfo.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/silences/Matchers.tsx", + "path": "/public/app/features/admin/ldap/LdapUserGroups.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/silences/MatchersField.tsx", - "count": 5 + "path": "/public/app/features/admin/ldap/LdapUserInfo.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilenceDetails.tsx", + "path": "/public/app/features/admin/ldap/LdapUserPermissions.tsx", "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencePeriod.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/AlertGroups.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencedAlertsTable.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/AlertWarning.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencedInstancesPreview.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/AlertsFolderView.tsx", + "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencesEditor.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/ExistingRuleEditor.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencesFilter.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/GrafanaRuleQueryViewer.tsx", + "count": 14 + }, + { + "path": "/public/app/features/alerting/unified/PanelAlertTabContent.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/silences/SilencesTable.tsx", + "path": "/public/app/features/alerting/unified/RedirectToRuleViewer.tsx", "count": 5 }, { - "path": "/public/app/features/alerting/unified/hooks/useStateHistoryModal.tsx", + "path": "/public/app/features/alerting/unified/RuleEditor.tsx", "count": 2 }, { - "path": "/public/app/features/alerting/unified/styles/notifications.ts", + "path": "/public/app/features/alerting/unified/Settings.tsx", "count": 3 }, { - "path": "/public/app/features/alerting/unified/styles/pagination.ts", - "count": 1 + "path": "/public/app/features/alerting/unified/components/AlertLabels.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/styles/table.ts", - "count": 5 + "path": "/public/app/features/alerting/unified/components/GrafanaAlertmanagerDeliveryWarning.tsx", + "count": 4 }, { - "path": "/public/app/features/api-keys/ApiKeysTable.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/InfoPausedRule.tsx", + "count": 1 }, { - "path": "/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx", + "path": "/public/app/features/alerting/unified/components/InvalidIntervalWarning.tsx", "count": 3 }, { - "path": "/public/app/features/canvas/runtime/scene.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/MoreButton.tsx", + "count": 1 }, { - "path": "/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx", + "path": "/public/app/features/alerting/unified/components/NoAlertManagerWarning.tsx", "count": 2 }, { - "path": "/public/app/features/connections/tabs/ConnectData/CategoryHeader/CategoryHeader.tsx", + "path": "/public/app/features/alerting/unified/components/Provisioning.tsx", + "count": 3 + }, + { + "path": "/public/app/features/alerting/unified/components/alert-groups/AlertDetails.tsx", + "count": 4 + }, + { + "path": "/public/app/features/alerting/unified/components/alert-groups/AlertGroup.tsx", "count": 2 }, { - "path": "/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx", - "count": 9 + "path": "/public/app/features/alerting/unified/components/alert-groups/AlertGroupAlertsTable.tsx", + "count": 1 }, { - "path": "/public/app/features/correlations/CorrelationsPage.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/alert-groups/AlertGroupFilter.tsx", + "count": 1 }, { - "path": "/public/app/features/correlations/Forms/AddCorrelationForm.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/alert-groups/AlertStateFilter.tsx", + "count": 1 }, { - "path": "/public/app/features/correlations/Forms/ConfigureCorrelationBasicInfoForm.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/alert-groups/GroupBy.tsx", + "count": 1 }, { - "path": "/public/app/features/correlations/Forms/ConfigureCorrelationSourceForm.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/alert-groups/MatcherFilter.tsx", + "count": 5 }, { - "path": "/public/app/features/dashboard/components/AddWidgetModal/AddWidgetModal.tsx", + "path": "/public/app/features/alerting/unified/components/bridges/DeclareIncidentButton.tsx", "count": 3 }, { - "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/contact-points/ContactPoints.tsx", + "count": 14 }, { - "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx", + "path": "/public/app/features/alerting/unified/components/contact-points/components/ContactPointsFilter.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DashNav/DashNavButton.tsx", + "path": "/public/app/features/alerting/unified/components/contact-points/components/GlobalConfigAlert.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardFailed.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/contact-points/components/Modals.tsx", + "count": 4 }, { - "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/export/FileExportPreview.tsx", + "count": 9 }, { - "path": "/public/app/features/dashboard/components/DashboardSettings/ListNewButton.tsx", + "path": "/public/app/features/alerting/unified/components/export/GrafanaModifyExport.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DeleteDashboard/DeleteDashboardModal.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/expressions/Expression.tsx", + "count": 12 }, { - "path": "/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/expressions/ExpressionStatusIndicator.tsx", + "count": 1 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/DynamicConfigValueEditor.tsx", + "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx", "count": 2 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPane.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx", + "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneOptions.tsx", - "count": 10 + "path": "/public/app/features/alerting/unified/components/mute-timings/MuteTimingsTable.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OverrideCategoryTitle.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/notification-policies/ContactPointSelector.tsx", + "count": 1 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx", - "count": 10 + "path": "/public/app/features/alerting/unified/components/notification-policies/EditDefaultPolicyForm.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditorTabs.tsx", + "path": "/public/app/features/alerting/unified/components/notification-policies/EditNotificationPolicyForm.tsx", "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/VisualizationButton.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/notification-policies/Filters.tsx", + "count": 4 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx", - "count": 10 + "path": "/public/app/features/alerting/unified/components/notification-policies/Modals.tsx", + "count": 14 }, { - "path": "/public/app/features/dashboard/components/PublicDashboardNotAvailable/PublicDashboardNotAvailable.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/notification-policies/Policy.tsx", + "count": 19 }, { - "path": "/public/app/features/dashboard/components/RowOptions/RowOptionsModal.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/notification-policies/PromDurationDocs.tsx", + "count": 7 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardErrorProxy.tsx", + "path": "/public/app/features/alerting/unified/components/panel-alerts-tab/NewRuleFromPanelButton.tsx", "count": 3 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/UnsavedChangesModal.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/AlertInstanceModalSelector.tsx", + "count": 3 + }, + { + "path": "/public/app/features/alerting/unified/components/receivers/DuplicateTemplateView.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardForm.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/EditReceiverView.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveProvisionedDashboardForm.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/EditTemplateView.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/GlobalConfigForm.tsx", "count": 3 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/EmailSharingConfiguration.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/receivers/PayloadEditor.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/SettingsSummary.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/ReceiversSection.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/AcknowledgeCheckboxes.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/receivers/TemplateDataDocs.tsx", + "count": 12 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/CreatePublicDashboard.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/receivers/TemplateForm.tsx", + "count": 7 }, { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ModalAlerts/UnsupportedDataSourcesAlert.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/TemplatePreview.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/SubMenu/AnnotationPicker.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/receivers/TemplatesTable.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/SubMenu/SubMenu.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/receivers/form/ChannelOptions.tsx", + "count": 1 }, { - "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationEditor.tsx", - "count": 10 + "path": "/public/app/features/alerting/unified/components/receivers/form/ChannelSubForm.tsx", + "count": 3 }, { - "path": "/public/app/features/datasources/components/BasicSettings.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/form/CloudReceiverForm.tsx", "count": 1 }, { - "path": "/public/app/features/datasources/components/DataSourceTestingStatus.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/receivers/form/GenerateAlertDataModal.tsx", + "count": 3 }, { - "path": "/public/app/features/datasources/components/DataSourceTypeCardList.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/form/GrafanaReceiverForm.tsx", "count": 1 }, { - "path": "/public/app/features/datasources/components/picker/DataSourceCard.tsx", - "count": 9 - }, - { - "path": "/public/app/features/datasources/components/picker/DataSourceList.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/receivers/form/ReceiverForm.tsx", + "count": 5 }, { - "path": "/public/app/features/datasources/components/picker/DataSourceLogo.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/receivers/form/TestContactPointModal.tsx", + "count": 6 }, { - "path": "/public/app/features/datasources/components/picker/DataSourceModal.tsx", - "count": 10 + "path": "/public/app/features/alerting/unified/components/receivers/form/fields/KeyValueMapInput.tsx", + "count": 3 }, { - "path": "/public/app/features/dimensions/editors/ColorDimensionEditor.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/receivers/form/fields/StringArrayInput.tsx", + "count": 1 }, { - "path": "/public/app/features/dimensions/editors/FileUploader.tsx", - "count": 8 + "path": "/public/app/features/alerting/unified/components/receivers/form/fields/SubformArrayField.tsx", + "count": 1 }, { - "path": "/public/app/features/dimensions/editors/FolderPickerTab.tsx", + "path": "/public/app/features/alerting/unified/components/receivers/form/fields/SubformField.tsx", "count": 1 }, { - "path": "/public/app/features/dimensions/editors/ResourceCards.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.tsx", + "count": 4 }, { - "path": "/public/app/features/dimensions/editors/ResourcePicker.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/AlertRuleNameInput.tsx", "count": 2 }, { - "path": "/public/app/features/dimensions/editors/ResourcePickerPopover.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/rule-editor/AnnotationsStep.tsx", + "count": 3 }, { - "path": "/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rule-editor/CloudAlertPreview.tsx", + "count": 5 }, { - "path": "/public/app/features/dimensions/editors/ScaleDimensionEditor.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/CustomAnnotationHeaderField.tsx", "count": 1 }, { - "path": "/public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx", - "count": 8 + "path": "/public/app/features/alerting/unified/components/rule-editor/DashboardAnnotationField.tsx", + "count": 2 }, { - "path": "/public/app/features/dimensions/editors/URLPickerTab.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/DashboardPicker.tsx", + "count": 9 }, { - "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditorModal.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rule-editor/ExpressionEditor.tsx", + "count": 3 }, { - "path": "/public/app/features/explore/Logs/LiveLogs.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/rule-editor/FolderAndGroup.tsx", + "count": 15 }, { - "path": "/public/app/features/explore/Logs/LogsMetaRow.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/NeedHelpInfo.tsx", "count": 1 }, { - "path": "/public/app/features/explore/Logs/LogsNavigation.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/rule-editor/NotificationsStep.tsx", + "count": 14 }, { - "path": "/public/app/features/explore/Logs/LogsNavigationPages.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/rule-editor/PreviewRule.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/Logs/LogsSamplePanel.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/PreviewRuleResult.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/Logs/LogsVolumePanel.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/QueryOptions.tsx", "count": 3 }, { - "path": "/public/app/features/explore/Logs/LogsVolumePanelList.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/rule-editor/QueryRows.tsx", + "count": 5 }, { - "path": "/public/app/features/explore/Logs/utils/LogsCrossFadeTransition.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx", "count": 4 }, { - "path": "/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/RecordingRuleEditor.tsx", "count": 1 }, { - "path": "/public/app/features/explore/PrometheusListView/ItemLabels.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/RuleEditorSection.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/PrometheusListView/ItemValues.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/RuleFolderPicker.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/PrometheusListView/RawListContainer.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rule-editor/RuleInspector.tsx", + "count": 4 }, { - "path": "/public/app/features/explore/PrometheusListView/RawListItem.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/PrometheusListView/RawListItemAttributes.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx", + "count": 5 }, { - "path": "/public/app/features/explore/RichHistory/RichHistoryCard.tsx", - "count": 14 + "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/ModifyExportRuleForm.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/RichHistory/RichHistoryQueriesTab.tsx", - "count": 14 + "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/AlertManagerRouting.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/RichHistory/RichHistorySettingsTab.tsx", - "count": 5 + "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/contactPoint/ContactPointSelector.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/RichHistory/RichHistoryStarredTab.tsx", - "count": 7 + "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.tsx", + "count": 6 }, { - "path": "/public/app/features/explore/TraceView/TraceView.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/labels/LabelsButtons.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/Actions/ActionButton.tsx", - "count": 1 - }, - { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rule-editor/labels/LabelsField.tsx", + "count": 7 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/labels/LabelsFieldInForm.tsx", "count": 5 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPolicyMatchers.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx", + "count": 5 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/GraphTicks.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreviewByAlertManager.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/Scrubber.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationRoute.tsx", "count": 5 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/TickLabels.tsx", - "count": 2 - }, - { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationRouteDetailsModal.tsx", "count": 8 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx", - "count": 9 - }, - { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanBarRow.tsx", - "count": 22 + "path": "/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/QueryAndExpressionsStep.tsx", + "count": 7 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianKeyValues.tsx", + "path": "/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/SmartAlertTypeDetector.tsx", "count": 8 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianLogs.tsx", - "count": 4 - }, - { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianReferences.tsx", - "count": 14 + "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/GrafanaManagedAlert.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianText.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/MimirOrLokiAlert.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/MimirOrLokiRecordingRule.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/TextList.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-editor/rule-types/RuleTypePicker.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx", - "count": 11 + "path": "/public/app/features/alerting/unified/components/rule-list/AlertRuleListItem.tsx", + "count": 7 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetailRow.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/rule-list/EvaluationGroup.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanLinks.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/rule-list/RuleList.v1.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanTreeOffset.tsx", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rule-list/RuleList.v2.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/Ticks.tsx", - "count": 4 + "path": "/public/app/features/alerting/unified/components/rule-viewer/FederatedRuleWarning.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx", + "path": "/public/app/features/alerting/unified/components/rule-viewer/PausedBadge.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.tsx", - "count": 8 - }, - { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineHeaderRow.tsx", + "path": "/public/app/features/alerting/unified/components/rule-viewer/RuleViewer.tsx", "count": 3 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineViewingLayer.tsx", - "count": 8 + "path": "/public/app/features/alerting/unified/components/rule-viewer/tabs/Details.tsx", + "count": 11 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rule-viewer/tabs/Query.tsx", + "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.tsx", + "path": "/public/app/features/alerting/unified/components/rule-viewer/tabs/Routing.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/common/BreakableText.tsx", + "path": "/public/app/features/alerting/unified/components/rules/AlertInstanceStateFilter.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/common/CopyIcon.tsx", + "path": "/public/app/features/alerting/unified/components/rules/AlertStateTag.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/common/LabeledList.tsx", + "path": "/public/app/features/alerting/unified/components/rules/CloneRule.tsx", "count": 4 }, { - "path": "/public/app/features/explore/TraceView/components/common/NewWindowIcon.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/CloudRules.tsx", + "count": 4 }, { - "path": "/public/app/features/explore/TraceView/components/common/TraceName.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx", + "count": 6 }, { - "path": "/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/rules/GrafanaRules.tsx", + "count": 3 }, { - "path": "/public/app/features/expressions/components/Condition.tsx", + "path": "/public/app/features/alerting/unified/components/rules/RuleConfigStatus.tsx", "count": 3 }, { - "path": "/public/app/features/expressions/components/Math.tsx", - "count": 7 + "path": "/public/app/features/alerting/unified/components/rules/RuleDetails.tsx", + "count": 1 }, { - "path": "/public/app/features/geo/editor/GazetteerPathEditor.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsButtons.tsx", + "count": 5 }, { - "path": "/public/app/features/geo/editor/locationModeEditor.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsMatchingInstances.tsx", + "count": 5 }, { - "path": "/public/app/features/inspector/DetailText.tsx", + "path": "/public/app/features/alerting/unified/components/rules/RuleHealth.tsx", "count": 1 }, { - "path": "/public/app/features/inspector/InspectStatsTab.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/RuleListErrors.tsx", + "count": 11 }, { - "path": "/public/app/features/inspector/InspectStatsTable.tsx", + "path": "/public/app/features/alerting/unified/components/rules/RuleListStateSection.tsx", "count": 2 }, { - "path": "/public/app/features/inspector/InspectStatsTraceIdsTable.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/rules/RuleState.tsx", + "count": 5 }, { - "path": "/public/app/features/inspector/QueryInspector.tsx", + "path": "/public/app/features/alerting/unified/components/rules/RuleStats.tsx", "count": 1 }, { - "path": "/public/app/features/inspector/styles.ts", - "count": 11 + "path": "/public/app/features/alerting/unified/components/rules/RulesFilter.tsx", + "count": 14 }, { - "path": "/public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx", - "count": 3 + "path": "/public/app/features/alerting/unified/components/rules/RulesGroup.tsx", + "count": 8 }, { - "path": "/public/app/features/library-panels/components/OpenLibraryPanelModal/OpenLibraryPanelModal.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/state-history/LogRecordViewer.tsx", + "count": 2 }, { - "path": "/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/rules/state-history/LokiStateHistory.tsx", + "count": 7 }, { - "path": "/public/app/features/library-panels/styles.ts", - "count": 6 + "path": "/public/app/features/alerting/unified/components/rules/state-history/StateHistory.tsx", + "count": 3 }, { - "path": "/public/app/features/live/LiveConnectionWarning.tsx", - "count": 2 + "path": "/public/app/features/alerting/unified/components/settings/AlertmanagerCard.tsx", + "count": 3 }, { - "path": "/public/app/features/logs/components/LoadingIndicator.tsx", - "count": 1 + "path": "/public/app/features/alerting/unified/components/settings/AlertmanagerConfig.tsx", + "count": 4 }, { - "path": "/public/app/features/logs/components/LogDetailsRow.tsx", + "path": "/public/app/features/alerting/unified/components/settings/VersionManager.tsx", "count": 7 }, { - "path": "/public/app/features/logs/components/LogLabelStats.tsx", + "path": "/public/app/features/alerting/unified/components/silences/MatchersField.tsx", + "count": 2 + }, + { + "path": "/public/app/features/alerting/unified/components/silences/SilenceDetails.tsx", "count": 5 }, { - "path": "/public/app/features/logs/components/LogLabelStatsRow.tsx", - "count": 8 + "path": "/public/app/features/alerting/unified/components/silences/SilencedAlertsTableRow.tsx", + "count": 1 }, { - "path": "/public/app/features/logs/components/LogLabels.tsx", + "path": "/public/app/features/alerting/unified/components/silences/SilencedInstancesPreview.tsx", + "count": 4 + }, + { + "path": "/public/app/features/alerting/unified/components/silences/SilencesEditor.tsx", "count": 3 }, { - "path": "/public/app/features/logs/components/LogRowMessageDisplayedFields.tsx", + "path": "/public/app/features/alerting/unified/components/silences/SilencesFilter.tsx", + "count": 4 + }, + { + "path": "/public/app/features/alerting/unified/home/GettingStarted.tsx", + "count": 16 + }, + { + "path": "/public/app/features/alerting/unified/home/Insights.tsx", "count": 1 }, { - "path": "/public/app/features/logs/components/getLogRowStyles.ts", - "count": 36 + "path": "/public/app/features/alerting/unified/home/PluginIntegrations.tsx", + "count": 1 }, { - "path": "/public/app/features/logs/components/log-context/LogRowContextModal.tsx", - "count": 13 + "path": "/public/app/features/alerting/unified/insights/RatingModal.tsx", + "count": 2 }, { - "path": "/public/app/features/manage-dashboards/DashboardImportPage.tsx", + "path": "/public/app/features/annotations/components/AnnotationResultMapper.tsx", "count": 3 }, { - "path": "/public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx", - "count": 2 + "path": "/public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx", + "count": 5 }, { - "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/DeletePublicDashboardModal.tsx", - "count": 2 + "path": "/public/app/features/api-keys/ApiKeysPage.tsx", + "count": 10 }, { - "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx", + "path": "/public/app/features/api-keys/ApiKeysTable.tsx", + "count": 5 + }, + { + "path": "/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx", "count": 6 }, { - "path": "/public/app/features/panel/components/VizTypePicker/VisualizationSuggestionCard.tsx", - "count": 5 + "path": "/public/app/features/auth-config/AuthDrawer.tsx", + "count": 7 }, { - "path": "/public/app/features/playlist/PlaylistTableRows.tsx", + "path": "/public/app/features/auth-config/AuthProvidersListPage.tsx", "count": 4 }, { - "path": "/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx", - "count": 1 + "path": "/public/app/features/auth-config/ProviderConfigForm.tsx", + "count": 3 }, { - "path": "/public/app/features/plugins/admin/components/Badges/sharedStyles.ts", - "count": 1 + "path": "/public/app/features/auth-config/components/ConfigureAuthCTA.tsx", + "count": 3 }, { - "path": "/public/app/features/plugins/admin/components/HorizontalGroup.tsx", - "count": 1 + "path": "/public/app/features/auth-config/fields.tsx", + "count": 9 }, { - "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx", + "path": "/public/app/features/browse-dashboards/components/BrowseView.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", + "path": "/public/app/features/browse-dashboards/components/NameCell.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/PluginDetailsHeaderDependencies.tsx", - "count": 2 + "path": "/public/app/features/canvas/elements/notFound.tsx", + "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/PluginDetailsHeaderSignature.tsx", + "path": "/public/app/features/canvas/runtime/ables.tsx", "count": 2 }, { - "path": "/public/app/features/plugins/admin/components/PluginDetailsPage.tsx", - "count": 3 - }, - { - "path": "/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx", - "count": 4 + "path": "/public/app/features/canvas/runtime/frame.tsx", + "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/PluginSubtitle.tsx", + "path": "/public/app/features/commandPalette/ResultItem.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/PluginUsage.tsx", + "path": "/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx", "count": 2 }, { - "path": "/public/app/features/plugins/admin/components/VersionList.tsx", - "count": 3 + "path": "/public/app/features/connections/pages/DataSourceDetailsPage.tsx", + "count": 5 }, { - "path": "/public/app/features/plugins/admin/hooks/usePluginInfo.tsx", + "path": "/public/app/features/connections/tabs/ConnectData/ConnectData.tsx", "count": 1 }, { - "path": "/public/app/features/query/components/QueryEditorRowHeader.tsx", - "count": 8 + "path": "/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx", + "count": 6 }, { - "path": "/public/app/features/query/components/QueryGroup.tsx", - "count": 7 + "path": "/public/app/features/correlations/components/EmptyCorrelationsCTA.tsx", + "count": 2 }, { - "path": "/public/app/features/query/components/QueryGroupOptions.tsx", + "path": "/public/app/features/dashboard-scene/embedding/EmbeddedDashboardTestPage.tsx", "count": 1 }, { - "path": "/public/app/features/search/page/components/ActionRow.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/inspect/HelpWizard/HelpWizard.tsx", + "count": 11 }, { - "path": "/public/app/features/search/page/components/SearchResultsTable.tsx", - "count": 13 + "path": "/public/app/features/dashboard-scene/inspect/InspectDataTab.tsx", + "count": 1 }, { - "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx", + "path": "/public/app/features/dashboard-scene/inspect/InspectJsonTab.tsx", "count": 1 }, { - "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfileRow.tsx", + "path": "/public/app/features/dashboard-scene/inspect/PanelInspectDrawer.tsx", "count": 1 }, { - "path": "/public/app/features/serviceaccounts/components/ServiceAccountTokensTable.tsx", - "count": 7 + "path": "/public/app/features/dashboard-scene/panel-edit/LibraryVizPanelInfo.tsx", + "count": 1 }, { - "path": "/public/app/features/storage/Breadcrumb.tsx", + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/EmptyTransformationsMessage.tsx", "count": 1 }, { - "path": "/public/app/features/storage/FileView.tsx", - "count": 7 + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/NewAlertRuleButton.tsx", + "count": 3 }, { - "path": "/public/app/features/storage/FolderView.tsx", - "count": 5 + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx", + "count": 2 }, { - "path": "/public/app/features/storage/RootView.tsx", + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx", "count": 2 }, { - "path": "/public/app/features/storage/StoragePage.tsx", - "count": 6 + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx", + "count": 2 }, { - "path": "/public/app/features/storage/UploadButton.tsx", + "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/TransformationsDrawer.tsx", "count": 1 }, { - "path": "/public/app/features/transformers/configFromQuery/ConfigFromQueryTransformerEditor.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/panel-edit/SaveLibraryVizPanelModal.tsx", + "count": 7 }, { - "path": "/public/app/features/transformers/editors/GroupByTransformerEditor.tsx", - "count": 3 + "path": "/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx", + "count": 4 }, { - "path": "/public/app/features/transformers/editors/OrganizeFieldsTransformerEditor.tsx", + "path": "/public/app/features/dashboard-scene/saving/SaveDashboardAsForm.tsx", "count": 3 }, { - "path": "/public/app/features/transformers/extractFields/components/JSONPathEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/saving/SaveDashboardForm.tsx", + "count": 6 }, { - "path": "/public/app/features/transformers/fieldToConfigMapping/FieldToConfigMappingEditor.tsx", - "count": 3 + "path": "/public/app/features/dashboard-scene/saving/SaveProvisionedDashboardForm.tsx", + "count": 8 }, { - "path": "/public/app/features/transformers/prepareTimeSeries/PrepareTimeSeriesEditor.tsx", + "path": "/public/app/features/dashboard-scene/saving/shared.tsx", "count": 1 }, { - "path": "/public/app/features/transformers/spatial/SpatialTransformerEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx", + "count": 13 }, { - "path": "/public/app/features/users/TokenRevokedModal.tsx", + "path": "/public/app/features/dashboard-scene/scene/row-actions/RowActions.tsx", "count": 3 }, { - "path": "/public/app/features/variables/editor/VariableEditorList.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/scene/row-actions/RowOptionsForm.tsx", + "count": 2 }, { - "path": "/public/app/features/variables/editor/VariableEditorListRow.tsx", + "path": "/public/app/features/dashboard-scene/settings/DeleteDashboardButton.tsx", "count": 7 }, { - "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", + "path": "/public/app/features/dashboard-scene/settings/JsonModelEditView.tsx", "count": 5 }, { - "path": "/public/app/features/variables/pickers/shared/VariableLink.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/settings/annotations/AnnotationSettingsEdit.tsx", + "count": 3 }, { - "path": "/public/app/features/visualization/data-hover/DataHoverRows.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/annotations/AnnotationSettingsList.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/cloud-monitoring/components/CloudMonitoringCheatSheet.tsx", + "path": "/public/app/features/dashboard-scene/settings/links/DashboardLinkForm.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/cloud-monitoring/components/VisualMetricQueryEditor.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/links/DashboardLinkList.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/cloudwatch/components/CheatSheet/LogsCheatSheet.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/settings/variables/VariableEditorForm.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/cloudwatch/components/ConfigEditor/XrayLinkConfig.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/variables/VariableEditorList.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/LogsQueryEditor/LogsQueryEditor.tsx", + "path": "/public/app/features/dashboard-scene/settings/variables/components/AdHocVariableForm.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/DynamicLabelsField.tsx", + "path": "/public/app/features/dashboard-scene/settings/variables/components/ConstantVariableForm.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/cloudwatch/components/shared/LogGroups/LegacyLogGroupNamesSelection.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/variables/components/CustomVariableForm.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/AddRemove.tsx", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/variables/components/DataSourceVariableForm.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/MetricPicker.tsx", + "path": "/public/app/features/dashboard-scene/settings/variables/components/GroupByVariableForm.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/FiltersSettingsEditor/index.tsx", - "count": 3 + "path": "/public/app/features/dashboard-scene/settings/variables/components/IntervalVariableForm.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/SettingsEditor/BucketScriptSettingsEditor/index.tsx", - "count": 3 + "path": "/public/app/features/dashboard-scene/settings/variables/components/QueryEditor.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/SettingsEditor/TopMetricsSettingsEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/settings/variables/components/QueryVariableForm.tsx", + "count": 6 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/styles.ts", + "path": "/public/app/features/dashboard-scene/settings/variables/components/TextBoxVariableForm.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/QueryEditorRow.tsx", + "path": "/public/app/features/dashboard-scene/settings/variables/components/VariableValuesPreview.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/SettingsEditorContainer.tsx", - "count": 5 + "path": "/public/app/features/dashboard-scene/settings/version-history/RevertDashboardModal.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/index.tsx", + "path": "/public/app/features/dashboard-scene/settings/version-history/VersionHistoryButtons.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/styles.ts", - "count": 1 + "path": "/public/app/features/dashboard-scene/settings/version-history/VersionHistoryComparison.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx", - "count": 6 + "path": "/public/app/features/dashboard-scene/settings/version-history/VersionHistoryHeader.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx", - "count": 3 + "path": "/public/app/features/dashboard-scene/settings/version-history/VersionHistoryTable.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/grafana-pyroscope-datasource/QueryEditor/LabelsEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard-scene/sharing/ShareButton/ShareButton.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx", + "path": "/public/app/features/dashboard-scene/sharing/ShareExportTab.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/grafana/components/QueryEditor.tsx", + "path": "/public/app/features/dashboard-scene/sharing/public-dashboards/ConfigPublicDashboard.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/grafana/components/TimePickerInput.tsx", - "count": 4 + "path": "/public/app/features/dashboard-scene/solo/SoloPanelPage.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/grafana/components/TimeRegionEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx", + "count": 4 }, { - "path": "/public/app/plugins/datasource/graphite/components/AddGraphiteFunction.tsx", - "count": 1 + "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/graphite/components/FunctionParamEditor.tsx", + "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/graphite/components/GraphiteFunctionEditor.tsx", - "count": 1 + "path": "/public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/graphite/components/GraphiteQueryEditor.tsx", + "path": "/public/app/features/dashboard/components/DashboardSettings/DashboardSettings.tsx", "count": 3 }, { - "path": "/public/app/plugins/datasource/graphite/components/MetricTankMetaInspector.tsx", - "count": 10 + "path": "/public/app/features/dashboard/components/DeleteDashboard/DeleteDashboardModal.tsx", + "count": 7 }, { - "path": "/public/app/plugins/datasource/graphite/components/TagsSection.tsx", - "count": 1 + "path": "/public/app/features/dashboard/components/GenAI/GenAIHistory.tsx", + "count": 4 }, { - "path": "/public/app/plugins/datasource/influxdb/components/editor/query/flux/FluxQueryEditor.tsx", - "count": 3 + "path": "/public/app/features/dashboard/components/GenAI/MinimalisticPagination.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx", + "count": 12 }, { - "path": "/public/app/plugins/datasource/influxdb/components/editor/query/influxql/visual/VisualInfluxQLEditor.tsx", + "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneOptions.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/jaeger/CheatSheet.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/jaeger/configuration/ConfigEditor.tsx", + "path": "/public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/PublicDashboardNotAvailable/PublicDashboardNotAvailable.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/loki/components/LokiContextUi.tsx", - "count": 11 + "path": "/public/app/features/dashboard/components/RowOptions/RowOptionsForm.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/loki/components/LokiLabelBrowser.tsx", - "count": 14 + "path": "/public/app/features/dashboard/components/SaveDashboard/DashboardValidation.tsx", + "count": 1 }, { - "path": "/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.tsx", + "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardButton.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/loki/configuration/DerivedField.tsx", - "count": 7 + "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardDiff.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/loki/configuration/DerivedFields.tsx", - "count": 5 + "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardErrorProxy.tsx", + "count": 10 }, { - "path": "/public/app/plugins/datasource/loki/querybuilder/components/LabelBrowserModal.tsx", - "count": 1 + "path": "/public/app/features/dashboard/components/SaveDashboard/UnsavedChangesModal.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.tsx", + "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardAsForm.tsx", "count": 3 }, { - "path": "/public/app/plugins/datasource/loki/querybuilder/components/QueryPattern.tsx", - "count": 4 + "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardForm.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/loki/querybuilder/components/QueryPatternsModal.tsx", - "count": 3 + "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveProvisionedDashboardForm.tsx", + "count": 8 }, { - "path": "/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx", + "path": "/public/app/features/dashboard/components/ShareModal/ShareLink.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/parca/QueryEditor/LabelsEditor.tsx", + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboard.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationEditor.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/zipkin/ConfigEditor.tsx", + "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationPicker.tsx", + "count": 4 + }, + { + "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationPickerNg.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/alertlist/AlertInstances.tsx", - "count": 2 + "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationsEditor.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/alertlist/UnifiedAlertList.tsx", - "count": 17 + "path": "/public/app/features/dashboard/components/VersionHistory/RevertDashboardModal.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/alertlist/unified-alerting/UngroupedView.tsx", - "count": 7 + "path": "/public/app/features/dashboard/components/VersionHistory/VersionHistoryComparison.tsx", + "count": 5 }, { - "path": "/public/app/plugins/panel/annolist/AnnoListPanel.tsx", - "count": 1 + "path": "/public/app/features/dashboard/components/VersionHistory/VersionHistoryTable.tsx", + "count": 5 }, { - "path": "/public/app/plugins/panel/canvas/globalStyles.ts", - "count": 1 + "path": "/public/app/features/dashboard/containers/NewDashboardWithDS.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/dashlist/styles.ts", - "count": 7 + "path": "/public/app/features/dashboard/containers/SoloPanelPage.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/datagrid/utils.ts", + "path": "/public/app/features/datasources/components/ButtonRow.tsx", "count": 3 }, { - "path": "/public/app/plugins/panel/gettingstarted/components/DocsCard.tsx", + "path": "/public/app/features/datasources/components/CloudInfoBox.tsx", "count": 5 }, { - "path": "/public/app/plugins/panel/gettingstarted/components/TutorialCard.tsx", - "count": 6 + "path": "/public/app/features/datasources/components/DashboardsTable.tsx", + "count": 1 }, { - "path": "/public/app/plugins/panel/gettingstarted/components/sharedStyles.ts", + "path": "/public/app/features/datasources/components/DataSourceCategories.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/live/LiveChannelEditor.tsx", + "path": "/public/app/features/datasources/components/DataSourceLoadError.tsx", + "count": 2 + }, + { + "path": "/public/app/features/datasources/components/DataSourcePluginConfigPage.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/live/LivePanel.tsx", - "count": 7 + "path": "/public/app/features/datasources/components/DataSourcePluginState.tsx", + "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/EdgeLabel.tsx", - "count": 3 + "path": "/public/app/features/datasources/components/DataSourceTestingStatus.tsx", + "count": 5 }, { - "path": "/public/app/plugins/panel/nodeGraph/Legend.tsx", + "path": "/public/app/features/datasources/components/DataSourcesListCard.tsx", "count": 2 }, { - "path": "/public/app/plugins/panel/nodeGraph/Marker.tsx", - "count": 3 + "path": "/public/app/features/datasources/components/EditDataSourceActions.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/nodeGraph/Node.tsx", - "count": 9 + "path": "/public/app/features/datasources/components/NewDataSource.tsx", + "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/NodeGraph.tsx", - "count": 10 + "path": "/public/app/features/datasources/components/picker/DataSourcePicker.tsx", + "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", + "path": "/public/app/features/dimensions/editors/FileUploader.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/editor/ArcOptionsEditor.tsx", + "path": "/public/app/features/dimensions/editors/ResourceDimensionEditor.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/useContextMenu.tsx", - "count": 2 + "path": "/public/app/features/dimensions/editors/ResourcePicker.tsx", + "count": 1 }, { - "path": "/public/app/plugins/panel/piechart/PieChart.tsx", - "count": 5 + "path": "/public/app/features/dimensions/editors/ResourcePickerPopover.tsx", + "count": 4 }, { - "path": "/public/app/plugins/panel/table/TablePanel.tsx", - "count": 2 + "path": "/public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx", + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/text/TextPanel.tsx", - "count": 2 + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx", + "count": 5 }, { - "path": "/public/app/plugins/panel/text/TextPanelEditor.tsx", - "count": 1 + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditorModal.tsx", + "count": 6 }, { - "path": "/public/app/plugins/panel/timeseries/TimezonesEditor.tsx", + "path": "/public/app/features/explore/CorrelationEditorModeBar.tsx", "count": 2 }, { - "path": "/public/app/plugins/panel/timeseries/plugins/ThresholdDragHandle.tsx", + "path": "/public/app/features/explore/CorrelationHelper.tsx", "count": 7 }, { - "path": "/public/app/plugins/panel/traces/TracesPanel.tsx", - "count": 1 + "path": "/public/app/features/explore/CorrelationTransformationAddModal.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/welcome/Welcome.tsx", - "count": 6 + "path": "/public/app/features/explore/CorrelationUnsavedChangesModal.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/xychart/AutoEditor.tsx", + "path": "/public/app/features/explore/ExploreToolbar.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/FeatureTogglePage.tsx", "count": 2 - } - ] - }, - { - "name": "'HorizontalGroup' import from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", - "files": [ - { - "path": "/packages/grafana-prometheus/src/components/PrometheusMetricsBrowser.tsx", - "count": 1 }, { - "path": "/packages/grafana-runtime/src/components/DataSourcePicker.tsx", - "count": 1 + "path": "/public/app/features/explore/LiveTailButton.tsx", + "count": 3 }, { - "path": "/packages/grafana-sql/src/components/query-editor-raw/QueryToolbox.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/LiveLogs.tsx", + "count": 4 }, { - "path": "/packages/grafana-ui/src/components/Forms/FieldArray.story.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/Logs.tsx", + "count": 3 }, { - "path": "/packages/grafana-ui/src/components/Layout/Layout.story.tsx", + "path": "/public/app/features/explore/Logs/LogsFeedback.tsx", "count": 1 }, { - "path": "/public/app/core/components/ForgottenPassword/ForgottenPassword.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/LogsMetaRow.tsx", + "count": 2 }, { - "path": "/public/app/features/admin/UserOrgs.tsx", + "path": "/public/app/features/explore/Logs/LogsNavigation.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/admin/AlertmanagerConfigSelector.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/LogsSamplePanel.tsx", + "count": 4 }, { - "path": "/public/app/features/alerting/unified/components/receivers/GlobalConfigForm.tsx", + "path": "/public/app/features/explore/Logs/LogsTableEmptyFields.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/PreviewRule.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/LogsTableMultiSelect.tsx", + "count": 3 }, { - "path": "/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx", + "path": "/public/app/features/explore/Logs/LogsTableNavField.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/MultipleDataSourcePicker.tsx", - "count": 1 + "path": "/public/app/features/explore/Logs/LogsVolumePanelList.tsx", + "count": 2 }, { - "path": "/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx", + "path": "/public/app/features/explore/MetaInfoText.tsx", "count": 1 }, { - "path": "/public/app/features/alerting/unified/components/rules/RulesGroup.tsx", - "count": 1 + "path": "/public/app/features/explore/NoDataSourceCallToAction.tsx", + "count": 3 }, { - "path": "/public/app/features/api-keys/ApiKeysTable.tsx", - "count": 1 + "path": "/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx", + "count": 2 }, { - "path": "/public/app/features/correlations/Forms/CorrelationFormNavigation.tsx", + "path": "/public/app/features/explore/PrometheusListView/RawListContainer.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/inspect/HelpWizard/HelpWizard.tsx", - "count": 1 + "path": "/public/app/features/explore/PrometheusListView/RawListItemAttributes.tsx", + "count": 4 }, { - "path": "/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx", + "path": "/public/app/features/explore/QueryLibrary/QueryTemplatesTable/AddedByCell.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/settings/VersionsEditView.tsx", + "path": "/public/app/features/explore/QueryLibrary/QueryTemplatesTable/QueryDescriptionCell.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/settings/annotations/AnnotationSettingsEdit.tsx", - "count": 1 + "path": "/public/app/features/explore/RichHistory/RichHistoryAddToLibraryForm.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard-scene/settings/links/DashboardLinkList.tsx", + "path": "/public/app/features/explore/RichHistory/RichHistoryStarredTab.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx", + "path": "/public/app/features/explore/SupplementaryResultError.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", + "path": "/public/app/features/explore/TraceView/TraceView.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DashboardSettings/VersionsSettings.tsx", + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/Actions/TracePageActions.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx", + "count": 8 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/DynamicConfigValueEditor.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OverrideCategoryTitle.tsx", + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx", + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveProvisionedDashboardForm.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx", + "count": 3 }, { - "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanBar.tsx", + "count": 3 }, { - "path": "/public/app/features/explore/CorrelationEditorModeBar.tsx", + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianKeyValues.tsx", "count": 1 }, { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianLogs.tsx", + "count": 4 }, { - "path": "/public/app/features/geo/editor/locationModeEditor.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianReferences.tsx", + "count": 4 }, { - "path": "/public/app/features/inspector/InspectDataOptions.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianText.tsx", + "count": 2 }, { - "path": "/public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx", + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/InstallControls/ExternallyManagedButton.tsx", + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx", + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineHeaderRow.tsx", "count": 1 }, { - "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx", - "count": 1 + "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DraggableManagerDemo.tsx", + "count": 7 }, { - "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", - "count": 1 + "path": "/public/app/features/explore/extensions/AddToDashboard/AddToDashboardForm.tsx", + "count": 3 }, { - "path": "/public/app/features/plugins/admin/components/PluginListItemBadges.tsx", - "count": 1 + "path": "/public/app/features/explore/extensions/ConfirmNavigationModal.tsx", + "count": 4 }, { - "path": "/public/app/features/plugins/components/PluginsErrorsInfo.tsx", + "path": "/public/app/features/explore/extensions/ToolbarExtensionPoint.tsx", "count": 1 }, { - "path": "/public/app/features/query/components/QueryGroup.tsx", + "path": "/public/app/features/explore/spec/helper/setup.tsx", "count": 1 }, { - "path": "/public/app/features/serviceaccounts/ServiceAccountPage.tsx", - "count": 1 + "path": "/public/app/features/expressions/components/Condition.tsx", + "count": 3 }, { - "path": "/public/app/features/storage/RootView.tsx", - "count": 1 + "path": "/public/app/features/expressions/components/Math.tsx", + "count": 10 }, { - "path": "/public/app/features/storage/StoragePage.tsx", - "count": 1 + "path": "/public/app/features/expressions/components/Threshold.tsx", + "count": 3 }, { - "path": "/public/app/features/transformers/calculateHeatmap/editor/AxisEditor.tsx", - "count": 1 + "path": "/public/app/features/geo/editor/GazetteerPathEditor.tsx", + "count": 3 }, { - "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/ReduceRowOptionsEditor.tsx", + "path": "/public/app/features/gops/configuration-tracker/components/ConfigCard.tsx", "count": 1 }, { - "path": "/public/app/features/transformers/editors/EnumMappingEditor.tsx", - "count": 1 + "path": "/public/app/features/gops/configuration-tracker/components/ConfigureIRM.tsx", + "count": 2 }, { - "path": "/public/app/features/transformers/editors/EnumMappingRow.tsx", + "path": "/public/app/features/gops/configuration-tracker/components/Essentials.tsx", "count": 1 }, { - "path": "/public/app/features/transformers/editors/FilterByRefIdTransformerEditor.tsx", + "path": "/public/app/features/gops/configuration-tracker/components/ProgressBar.tsx", "count": 1 }, { - "path": "/public/app/features/transformers/joinByLabels/JoinByLabelsTransformerEditor.tsx", - "count": 1 + "path": "/public/app/features/inspector/InspectDataTab.tsx", + "count": 2 }, { - "path": "/public/app/features/transformers/partitionByValues/PartitionByValuesEditor.tsx", - "count": 1 + "path": "/public/app/features/inspector/InspectErrorTab.tsx", + "count": 5 }, { - "path": "/public/app/features/variables/editor/VariableEditorEditor.tsx", - "count": 1 + "path": "/public/app/features/inspector/InspectJSONTab.tsx", + "count": 2 }, { - "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", - "count": 1 + "path": "/public/app/features/inspector/QueryInspector.tsx", + "count": 4 }, { - "path": "/public/app/plugins/datasource/azuremonitor/components/MetricsQueryEditor/DimensionFields.tsx", + "path": "/public/app/features/invites/InviteeRow.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/azuremonitor/components/TracesQueryEditor/Filter.tsx", - "count": 1 + "path": "/public/app/features/invites/InviteesTable.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/cloud-monitoring/components/GraphPeriod.tsx", - "count": 1 + "path": "/public/app/features/invites/SignupInvited.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/cloud-monitoring/components/LabelFilter.tsx", - "count": 1 + "path": "/public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/grafana/components/TimeRegionEditor.tsx", - "count": 1 + "path": "/public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/graphite/components/GraphiteFunctionEditor.tsx", + "path": "/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/influxdb/components/editor/query/influxql/code/RawInfluxQLEditor.tsx", - "count": 1 + "path": "/public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx", + "count": 7 }, { - "path": "/public/app/plugins/datasource/jaeger/components/QueryEditor.tsx", - "count": 1 + "path": "/public/app/features/live/dashboard/DashboardChangedModal.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/loki/components/LokiLabelBrowser.tsx", + "path": "/public/app/features/logs/components/InfiniteScroll.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.tsx", - "count": 1 + "path": "/public/app/features/logs/components/LogDetails.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/tempo/QueryField.tsx", - "count": 1 + "path": "/public/app/features/logs/components/LogLabelStats.tsx", + "count": 3 }, { - "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/DurationInput.tsx", - "count": 1 + "path": "/public/app/features/logs/components/LogRows.tsx", + "count": 2 }, { - "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/GroupByField.tsx", + "path": "/public/app/features/logs/components/log-context/LogContextButtons.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/SearchField.tsx", - "count": 1 + "path": "/public/app/features/logs/components/log-context/LogRowContextModal.tsx", + "count": 5 }, { - "path": "/public/app/plugins/datasource/tempo/SearchTraceQLEditor/TraceQLSearch.tsx", + "path": "/public/app/features/manage-dashboards/DashboardImportPage.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/zipkin/QueryField.tsx", - "count": 1 + "path": "/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/barchart/TickSpacingEditor.tsx", - "count": 1 + "path": "/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx", + "count": 4 }, { - "path": "/public/app/plugins/panel/canvas/editor/element/ParamsEditor.tsx", - "count": 1 + "path": "/public/app/features/migrate-to-cloud/onprem/NameCell.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx", + "path": "/public/app/features/migrate-to-cloud/onprem/Page.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/canvas/editor/layer/TreeNavigationEditor.tsx", + "path": "/public/app/features/notifications/StoredNotifications.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/canvas/editor/panZoomHelp.tsx", - "count": 1 + "path": "/public/app/features/org/NewOrgPage.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/geomap/editor/StyleEditor.tsx", + "path": "/public/app/features/org/OrgProfile.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", + "path": "/public/app/features/org/SelectOrgPage.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/timeseries/InsertNullsEditor.tsx", - "count": 1 + "path": "/public/app/features/org/UserInviteForm.tsx", + "count": 6 }, { - "path": "/public/app/plugins/panel/timeseries/LineStyleEditor.tsx", + "path": "/public/app/features/org/UserInvitePage.tsx", "count": 1 }, { - "path": "/public/app/plugins/panel/timeseries/SpanNullsEditor.tsx", - "count": 1 + "path": "/public/app/features/panel/components/PanelDataErrorView.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/timeseries/plugins/annotations2/AnnotationTooltip2.tsx", - "count": 1 - } - ] - }, - { - "name": "'VerticalGroup' import from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", - "files": [ - { - "path": "/packages/grafana-ui/src/components/Alert/InlineBanner.story.tsx", - "count": 1 + "path": "/public/app/features/panel/components/PanelPluginError.tsx", + "count": 2 }, { - "path": "/packages/grafana-ui/src/components/Alert/Toast.story.tsx", - "count": 1 + "path": "/public/app/features/panel/components/PanelRenderer.tsx", + "count": 4 }, { - "path": "/packages/grafana-ui/src/components/InfoBox/InfoBox.story.tsx", - "count": 1 + "path": "/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx", + "count": 2 }, { - "path": "/packages/grafana-ui/src/components/Layout/Layout.story.tsx", + "path": "/public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx", "count": 1 }, { - "path": "/packages/grafana-ui/src/components/PageLayout/PageToolbar.story.tsx", - "count": 1 + "path": "/public/app/features/playlist/PlaylistTableRows.tsx", + "count": 3 }, { - "path": "/public/app/core/components/AppNotifications/AppNotificationList.tsx", + "path": "/public/app/features/playlist/StartModal.tsx", "count": 1 }, { - "path": "/public/app/core/components/ForgottenPassword/ChangePassword.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/AppConfigWrapper.tsx", + "count": 3 }, { - "path": "/public/app/core/components/Login/LoginServiceButtons.tsx", + "path": "/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx", "count": 1 }, { - "path": "/public/app/core/components/Login/UserSignup.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard-scene/settings/annotations/AnnotationSettingsList.tsx", + "path": "/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/settings/variables/components/SelectionOptionsForm.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/InstallControls/ExternallyManagedButton.tsx", + "count": 4 }, { - "path": "/public/app/features/dashboard-scene/sharing/ShareExportTab.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx", + "count": 10 }, { - "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx", + "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDashboards.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDetailsBody.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationPicker.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx", + "count": 4 }, { - "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDetailsDisabledError.tsx", + "count": 7 }, { - "path": "/public/app/features/explore/extensions/ConfirmNavigationModal.tsx", + "path": "/public/app/features/plugins/admin/components/PluginDetailsHeaderDependencies.tsx", "count": 1 }, { - "path": "/public/app/features/inspector/InspectDataOptions.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDetailsPage.tsx", + "count": 4 }, { - "path": "/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginDetailsSignature.tsx", + "count": 2 }, { - "path": "/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx", + "path": "/public/app/features/plugins/admin/components/PluginListItem.tsx", "count": 1 }, { - "path": "/public/app/features/org/OrgDetailsPage.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx", + "count": 2 }, { - "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/PluginUsage.tsx", + "count": 3 }, { - "path": "/public/app/features/profile/UserProfileEditPage.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/components/VersionList.tsx", + "count": 6 }, { - "path": "/public/app/features/sandbox/BenchmarksPage.tsx", - "count": 1 + "path": "/public/app/features/plugins/admin/pages/Browse.tsx", + "count": 3 }, { - "path": "/public/app/features/storage/RootView.tsx", - "count": 1 + "path": "/public/app/features/plugins/angularDeprecation/AngularDeprecationNotice.tsx", + "count": 2 }, { - "path": "/public/app/features/transformers/editors/EnumMappingEditor.tsx", - "count": 1 + "path": "/public/app/features/plugins/angularDeprecation/AngularDeprecationPluginNotice.tsx", + "count": 2 }, { - "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", - "count": 1 + "path": "/public/app/features/plugins/angularDeprecation/AngularMigrationNotice.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/canvas/components/CanvasTooltip.tsx", - "count": 1 + "path": "/public/app/features/plugins/components/AppRootPage.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/canvas/editor/element/ParamsEditor.tsx", - "count": 1 + "path": "/public/app/features/plugins/components/PluginsErrorsInfo.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx", - "count": 1 + "path": "/public/app/features/profile/FeatureTogglePage.tsx", + "count": 2 }, { - "path": "/public/app/plugins/panel/canvas/editor/panZoomHelp.tsx", - "count": 1 + "path": "/public/app/features/profile/UserSessions.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/geomap/editor/MapViewEditor.tsx", - "count": 1 + "path": "/public/app/features/profile/UserTeams.tsx", + "count": 4 }, { - "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", - "count": 1 + "path": "/public/app/features/query/components/QueryEditorRowHeader.tsx", + "count": 3 }, { - "path": "/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx", - "count": 1 - } - ] - }, - { - "name": "'VerticalGroup' import from '../Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", - "files": [ - { - "path": "/packages/grafana-ui/src/components/Dropdown/Dropdown.story.tsx", - "count": 1 + "path": "/public/app/features/query/components/QueryErrorAlert.tsx", + "count": 2 }, { - "path": "/packages/grafana-ui/src/components/Forms/Checkbox.story.tsx", - "count": 1 + "path": "/public/app/features/query/components/QueryGroup.tsx", + "count": 4 }, { - "path": "/packages/grafana-ui/src/components/Link/TextLink.story.tsx", - "count": 1 + "path": "/public/app/features/query/components/QueryGroupOptions.tsx", + "count": 39 }, { - "path": "/packages/grafana-ui/src/components/Menu/Menu.story.tsx", - "count": 1 + "path": "/public/app/features/sandbox/TestStuffPage.tsx", + "count": 3 }, { - "path": "/packages/grafana-ui/src/components/TagsInput/TagsInput.story.tsx", + "path": "/public/app/features/search/page/components/ActionRow.tsx", "count": 1 }, { - "path": "/packages/grafana-ui/src/components/Text/Text.story.tsx", + "path": "/public/app/features/search/page/components/SearchResultsTable.tsx", "count": 1 }, { - "path": "/packages/grafana-ui/src/components/ThemeDemos/EmotionPerfTest.tsx", - "count": 1 - } - ] - }, - { - "name": "Use data-testid for E2E selectors instead of aria-label", - "files": [ - { - "path": "/packages/grafana-ui/src/components/ValuePicker/ValuePicker.tsx", + "path": "/public/app/features/search/page/components/columns.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard-scene/inspect/InspectJsonTab.tsx", + "path": "/public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx", - "count": 4 + "path": "/public/app/features/serviceaccounts/ServiceAccountPage.tsx", + "count": 5 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPane.tsx", - "count": 1 + "path": "/public/app/features/serviceaccounts/ServiceAccountTable.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneCategory.tsx", - "count": 2 + "path": "/public/app/features/serviceaccounts/ServiceAccountsListPage.tsx", + "count": 3 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx", - "count": 1 + "path": "/public/app/features/serviceaccounts/components/CreateTokenModal.tsx", + "count": 4 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx", - "count": 3 + "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx", + "count": 2 }, { - "path": "/public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx", + "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfileRow.tsx", "count": 1 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardButton.tsx", - "count": 2 + "path": "/public/app/features/serviceaccounts/components/ServiceAccountTokensTable.tsx", + "count": 7 }, { - "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardForm.tsx", + "path": "/public/app/features/serviceaccounts/components/ServiceAccountsListItem.tsx", "count": 3 }, { - "path": "/public/app/features/dashboard/containers/DashboardPage.tsx", - "count": 1 - }, - { - "path": "/public/app/features/datasources/components/DataSourceTypeCard.tsx", - "count": 1 + "path": "/public/app/features/storage/AddRootView.tsx", + "count": 2 }, { - "path": "/public/app/features/inspector/InspectDataTab.tsx", + "path": "/public/app/features/storage/CreateNewFolderModal.tsx", "count": 1 }, { - "path": "/public/app/features/inspector/InspectJSONTab.tsx", - "count": 1 + "path": "/public/app/features/storage/FileView.tsx", + "count": 4 }, { - "path": "/public/app/features/inspector/InspectStatsTab.tsx", - "count": 1 + "path": "/public/app/features/storage/FolderView.tsx", + "count": 2 }, { - "path": "/public/app/features/inspector/QueryInspector.tsx", + "path": "/public/app/features/storage/RootView.tsx", "count": 2 }, { - "path": "/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx", + "path": "/public/app/features/storage/StorageFolderPage.tsx", "count": 1 }, { - "path": "/public/app/features/playlist/PlaylistForm.tsx", + "path": "/public/app/features/storage/StoragePage.tsx", "count": 2 }, { - "path": "/public/app/features/query/components/QueryEditorRow.tsx", - "count": 1 + "path": "/public/app/features/storage/UploadButton.tsx", + "count": 3 }, { - "path": "/public/app/features/query/components/QueryEditorRowHeader.tsx", - "count": 1 + "path": "/public/app/features/support-bundles/SupportBundles.tsx", + "count": 6 }, { - "path": "/public/app/features/query/components/QueryGroup.tsx", - "count": 2 + "path": "/public/app/features/support-bundles/SupportBundlesCreate.tsx", + "count": 3 }, { - "path": "/public/app/features/variables/editor/VariableEditorList.tsx", - "count": 2 + "path": "/public/app/features/teams/CreateTeam.tsx", + "count": 1 }, { - "path": "/public/app/features/variables/editor/VariableEditorListRow.tsx", + "path": "/public/app/features/teams/TeamGroupSync.tsx", "count": 4 }, { - "path": "/public/app/features/variables/pickers/shared/VariableOptions.tsx", - "count": 1 - } - ] - }, - { - "name": "'HorizontalGroup' import from './Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", - "files": [ - { - "path": "/packages/grafana-ui/src/components/index.ts", + "path": "/public/app/features/teams/TeamList.tsx", "count": 1 - } - ] - }, - { - "name": "'VerticalGroup' import from './Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", - "files": [ + }, { - "path": "/packages/grafana-ui/src/components/index.ts", + "path": "/public/app/features/teams/TeamSettings.tsx", "count": 1 - } - ] - }, - { - "name": "Do not re-export imported variable (`updateNavIndex`)", - "files": [ + }, { - "path": "/public/app/core/actions/index.ts", + "path": "/public/app/features/trails/ActionTabs/AddToFiltersGraphAction.tsx", "count": 1 - } - ] - }, - { - "name": "Do not re-export imported variable (`updateConfigurationSubtitle`)", - "files": [ + }, { - "path": "/public/app/core/actions/index.ts", + "path": "/public/app/features/trails/ActionTabs/BreakdownScene.tsx", "count": 1 - } - ] - }, - { - "name": "Do not re-export imported variable (`notifyApp`)", - "files": [ + }, { - "path": "/public/app/core/actions/index.ts", - "count": 1 - } - ] - }, - { - "name": "Do not re-export imported variable (`hideAppNotification`)", - "files": [ + "path": "/public/app/features/trails/ActionTabs/MetricOverviewScene.tsx", + "count": 7 + }, { - "path": "/public/app/core/actions/index.ts", - "count": 1 - } - ] - }, - { - "name": "Do not use export all (`export * from ...`)", - "files": [ + "path": "/public/app/features/trails/DataTrailCard.tsx", + "count": 2 + }, { - "path": "/public/app/core/components/AccessControl/index.ts", - "count": 1 + "path": "/public/app/features/trails/DataTrailSettings.tsx", + "count": 2 }, { - "path": "/public/app/features/auth-config/index.ts", + "path": "/public/app/features/trails/DataTrailsHistory.tsx", "count": 1 }, { - "path": "/public/app/features/browse-dashboards/state/index.ts", + "path": "/public/app/features/trails/DataTrailsHome.tsx", "count": 3 }, { - "path": "/public/app/features/canvas/index.ts", - "count": 3 + "path": "/public/app/features/trails/MetricScene.tsx", + "count": 2 }, { - "path": "/public/app/features/connections/components/ConnectionsRedirectNotice/index.ts", - "count": 1 + "path": "/public/app/features/trails/MetricSelect/MetricSelectScene.tsx", + "count": 3 }, { - "path": "/public/app/features/connections/tabs/ConnectData/CardGrid/index.tsx", - "count": 1 + "path": "/public/app/features/trails/MetricsHeader.tsx", + "count": 2 }, { - "path": "/public/app/features/connections/tabs/ConnectData/CategoryHeader/index.tsx", - "count": 1 + "path": "/public/app/features/trails/TrailStore/utils.tsx", + "count": 3 }, { - "path": "/public/app/features/connections/tabs/ConnectData/NoAccessModal/index.tsx", + "path": "/public/app/features/transformers/FilterByValueTransformer/FilterByValueTransformerEditor.tsx", "count": 1 }, { - "path": "/public/app/features/connections/tabs/ConnectData/Search/index.tsx", - "count": 1 + "path": "/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/RangeMatcherEditor.tsx", + "count": 2 }, { - "path": "/public/app/features/connections/tabs/ConnectData/index.tsx", + "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/UnaryOperationEditor.tsx", "count": 1 }, { - "path": "/public/app/features/correlations/components/Wizard/index.ts", + "path": "/public/app/features/transformers/editors/EnumMappingEditor.tsx", "count": 2 }, { - "path": "/public/app/features/dashboard/components/ShareModal/index.ts", + "path": "/public/app/features/transformers/editors/FilterByRefIdTransformerEditor.tsx", "count": 1 }, { - "path": "/public/app/features/dataframe-import/index.ts", - "count": 2 + "path": "/public/app/features/transformers/editors/FormatTimeTransformerEditor.tsx", + "count": 3 }, { - "path": "/public/app/features/datasources/__mocks__/index.ts", - "count": 2 + "path": "/public/app/features/transformers/editors/MergeTransformerEditor.tsx", + "count": 1 }, { - "path": "/public/app/features/datasources/state/index.ts", - "count": 7 + "path": "/public/app/features/transformers/editors/OrganizeFieldsTransformerEditor.tsx", + "count": 1 }, { - "path": "/public/app/features/dimensions/editors/index.ts", - "count": 6 + "path": "/public/app/features/transformers/extractFields/components/JSONPathEditor.tsx", + "count": 4 }, { - "path": "/public/app/features/dimensions/index.ts", - "count": 8 + "path": "/public/app/features/transformers/fieldToConfigMapping/FieldToConfigMappingEditor.tsx", + "count": 4 }, { - "path": "/public/app/features/explore/TraceView/components/index.ts", - "count": 3 + "path": "/public/app/features/transformers/joinByLabels/JoinByLabelsTransformerEditor.tsx", + "count": 2 }, { - "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", + "path": "/public/app/features/transformers/partitionByValues/PartitionByValuesEditor.tsx", "count": 1 }, { - "path": "/public/app/features/migrate-to-cloud/api/index.ts", - "count": 1 + "path": "/public/app/features/transformers/prepareTimeSeries/PrepareTimeSeriesEditor.tsx", + "count": 14 }, { - "path": "/public/app/features/plugins/admin/__mocks__/index.ts", - "count": 1 + "path": "/public/app/features/users/TokenRevokedModal.tsx", + "count": 5 }, { - "path": "/public/app/features/search/service/index.ts", + "path": "/public/app/features/users/UsersActionBar.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/azuremonitor/azureMetadata/index.ts", + "path": "/public/app/features/variables/editor/VariableEditorEditor.tsx", + "count": 4 + }, + { + "path": "/public/app/features/variables/editor/VariableEditorList.tsx", + "count": 3 + }, + { + "path": "/public/app/features/variables/inspect/VariablesDependenciesButton.tsx", + "count": 1 + }, + { + "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", + "count": 4 + }, + { + "path": "/public/app/features/variables/pickers/PickerRenderer.tsx", + "count": 1 + }, + { + "path": "/public/app/features/variables/pickers/shared/VariableOptions.tsx", "count": 2 }, { - "path": "/public/app/plugins/datasource/azuremonitor/types/index.ts", + "path": "/public/app/features/variables/textbox/TextBoxVariableEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/visualization/data-hover/DataHoverRows.tsx", + "count": 2 + }, + { + "path": "/public/app/features/visualization/data-hover/DataHoverView.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/InstancesColumns.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/add-instance/components/Discovery/components/Instances/InstancesColumns.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventory.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/RestoreHistory.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/entitlements/components/Advisor/Advisor.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/entitlements/components/SectionContent/SectionContent.tsx", + "count": 7 + }, + { + "path": "/public/app/percona/entitlements/components/SectionLabel/SectionLabel.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleFromTemplate/AlertRuleFromTemplate.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplateActions/AlertRuleTemplateActions.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Alerts/Alerts.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/TemplateForm/EvaluateEvery/EvaluateEvery.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/inventory/Tabs/Agents.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/pmm-dump/PMMDump.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/settings/components/Communication/Communication.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/settings/components/Platform/Connect/PMMServerURLWarning/PMMServerUrlWarning.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/AnotherTableInstance/Table.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/FilterSection/withFilterTypes.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/TextInput/TextInputField.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/LoginFooter/LoginFooter.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/tour/components/NextButton.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/tour/steps/product/product.steps.tsx", + "count": 3 + } + ] + }, + { + "name": "'VerticalGroup' import from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/packages/grafana-ui/src/components/InfoBox/InfoBox.story.tsx", + "count": 1 + }, + { + "path": "/packages/grafana-ui/src/components/Layout/Layout.story.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/TransformationsEditor/TransformationPicker.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/InspectDataOptions.tsx", + "count": 1 + }, + { + "path": "/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx", + "count": 1 + }, + { + "path": "/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", + "count": 1 + }, + { + "path": "/public/app/features/transformers/editors/EnumMappingEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/geomap/editor/MapViewEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx", + "count": 1 + } + ] + }, + { + "name": "Use data-testid for E2E selectors instead of aria-label", + "files": [ + { + "path": "/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx", + "count": 1 + }, + { + "path": "/packages/grafana-ui/src/components/ValuePicker/ValuePicker.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/SaveDashboard/SaveDashboardButton.tsx", + "count": 2 + }, + { + "path": "/public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardForm.tsx", "count": 3 }, { - "path": "/public/app/plugins/datasource/cloudwatch/types.ts", + "path": "/public/app/features/dashboard/containers/DashboardPage.tsx", + "count": 1 + }, + { + "path": "/public/app/features/datasources/components/DataSourceTypeCard.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/InspectDataTab.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/InspectStatsTab.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/QueryInspector.tsx", + "count": 2 + }, + { + "path": "/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx", + "count": 1 + }, + { + "path": "/public/app/features/playlist/PlaylistForm.tsx", + "count": 2 + }, + { + "path": "/public/app/features/query/components/QueryEditorRow.tsx", + "count": 1 + }, + { + "path": "/public/app/features/query/components/QueryEditorRowHeader.tsx", + "count": 1 + }, + { + "path": "/public/app/features/query/components/QueryGroup.tsx", + "count": 2 + }, + { + "path": "/public/app/features/variables/editor/VariableEditorList.tsx", + "count": 2 + }, + { + "path": "/public/app/features/variables/editor/VariableEditorListRow.tsx", + "count": 4 + }, + { + "path": "/public/app/features/variables/pickers/shared/VariableOptions.tsx", + "count": 1 + } + ] + }, + { + "name": "'HorizontalGroup' import from './Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/packages/grafana-ui/src/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "'VerticalGroup' import from './Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/packages/grafana-ui/src/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`updateNavIndex`)", + "files": [ + { + "path": "/public/app/core/actions/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`updateConfigurationSubtitle`)", + "files": [ + { + "path": "/public/app/core/actions/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`notifyApp`)", + "files": [ + { + "path": "/public/app/core/actions/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`hideAppNotification`)", + "files": [ + { + "path": "/public/app/core/actions/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not use export all (`export * from ...`)", + "files": [ + { + "path": "/public/app/core/components/AccessControl/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/auth-config/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/browse-dashboards/state/index.ts", + "count": 3 + }, + { + "path": "/public/app/features/connections/components/ConnectionsRedirectNotice/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/CardGrid/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/CategoryHeader/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/NoAccessModal/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/Search/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/correlations/components/Wizard/index.ts", + "count": 2 + }, + { + "path": "/public/app/features/dashboard/components/ShareModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/dataframe-import/index.ts", + "count": 2 + }, + { + "path": "/public/app/features/datasources/__mocks__/index.ts", + "count": 2 + }, + { + "path": "/public/app/features/datasources/state/index.ts", + "count": 7 + }, + { + "path": "/public/app/features/dimensions/editors/index.ts", + "count": 6 + }, + { + "path": "/public/app/features/dimensions/index.ts", + "count": 8 + }, + { + "path": "/public/app/features/explore/TraceView/components/index.ts", + "count": 3 + }, + { + "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/migrate-to-cloud/api/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/__mocks__/index.ts", + "count": 1 + }, + { + "path": "/public/app/features/search/service/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/AddBackupPage/RetryModeSelector/index.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventoryActions/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventoryDetails/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/RestoreBackupModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BucketBlock/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/DBIcon/assets/index.ts", + "count": 6 + }, + { + "path": "/public/app/percona/backup/components/DBIcon/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/DescriptionBlock/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/DetailedDate/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/KeysBlock/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/RestoreHistoryActions/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/RestoreHistoryDetails/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackupsActions/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackupsDetails/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/Status/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/AddStorageLocationModal/LocalFields/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/AddStorageLocationModal/S3Fields/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/AddStorageLocationModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/RemoveStorageLocationModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/StorageLocationDetails/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/StorageLocationsActions/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleFromTemplate/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AddAlertRuleTemplateModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/EditAlertRuleTemplateModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Alerts/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Severity/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/integrated-alerting/hooks/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AddEditRole/components/AddEditRoleForm/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/AnotherTableInstance/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Checkbox/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/Chip/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/DeleteModal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Dropdown/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/EmptyBlock/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/ExpandableCell/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/FeatureLoader/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Icon/icons/index.ts", + "count": 5 + }, + { + "path": "/public/app/percona/shared/components/Elements/Icon/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/LinkTooltipCore/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/LoaderButton/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Modal/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/MultipleActions/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/Overlay/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/PermissionLoader/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/PlatformConnectedLoader/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/SecretToggler/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/SilenceBell/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Pagination/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Selection/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/TableContent/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/WarningBlock/index.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/AsyncSelectField/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/AsyncSelectFieldCore/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/Label/index.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/LabelCore/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/MultiSelectField/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/NumberInput/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/PasswordInput/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/RadioButtonGroup/RadioButton/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/RadioButtonGroup/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/SelectField/index.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/SelectFieldCore/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/TextInput/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/TextareaInput/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/PerconaBootstrapper/PerconaNavigation/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/PerconaBootstrapper/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/core/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/core/reducers/navigation/index.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/core/reducers/nodes/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/core/reducers/services/index.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/core/reducers/tour/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/helpers/logger/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/helpers/types/index.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/helpers/utils/index.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/azuremonitor/azureMetadata/index.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/azuremonitor/types/index.ts", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/types.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/types.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/heatmap/types.ts", + "count": 1 + }, + { + "path": "/public/app/types/index.ts", + "count": 21 + } + ] + }, + { + "name": "Styles should be written using objects.", + "files": [ + { + "path": "/public/app/core/components/AppChrome/TopBar/TopSearchBarCommandPaletteTrigger.tsx", + "count": 1 + }, + { + "path": "/public/app/core/components/NestedFolderPicker/Trigger.tsx", + "count": 1 + }, + { + "path": "/public/app/core/components/PanelTypeFilter/PanelTypeFilter.tsx", + "count": 2 + }, + { + "path": "/public/app/core/components/QueryOperationRow/OperationRowHelp.tsx", + "count": 1 + }, + { + "path": "/public/app/core/components/QueryOperationRow/QueryOperationRow.tsx", + "count": 2 + }, + { + "path": "/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx", + "count": 7 + }, + { + "path": "/public/app/core/components/RolePicker/RolePickerInput.tsx", + "count": 7 + }, + { + "path": "/public/app/core/components/RolePicker/ValueContainer.tsx", + "count": 1 + }, + { + "path": "/public/app/core/components/TagFilter/TagFilter.tsx", + "count": 2 + }, + { + "path": "/public/app/core/components/Upgrade/ProBadge.tsx", + "count": 1 + }, + { + "path": "/public/app/core/components/Upgrade/UpgradeBox.tsx", + "count": 18 + }, + { + "path": "/public/app/features/admin/LicenseChrome.tsx", + "count": 3 + }, + { + "path": "/public/app/features/admin/UpgradePage.tsx", + "count": 5 + }, + { + "path": "/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx", + "count": 8 + }, + { + "path": "/public/app/features/admin/UserOrgs.tsx", + "count": 17 + }, + { + "path": "/public/app/features/admin/UserPermissions.tsx", + "count": 1 + }, + { + "path": "/public/app/features/admin/UserProfile.tsx", + "count": 3 + }, + { + "path": "/public/app/features/alerting/unified/components/rules/NoRulesCTA.tsx", + "count": 1 + }, + { + "path": "/public/app/features/api-keys/ApiKeys.styles.ts", + "count": 1 + }, + { + "path": "/public/app/features/api-keys/ApiKeysTable.tsx", + "count": 2 + }, + { + "path": "/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx", + "count": 3 + }, + { + "path": "/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx", + "count": 2 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/CategoryHeader/CategoryHeader.tsx", + "count": 2 + }, + { + "path": "/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx", + "count": 9 + }, + { + "path": "/public/app/features/correlations/CorrelationsPage.tsx", + "count": 4 + }, + { + "path": "/public/app/features/correlations/Forms/AddCorrelationForm.tsx", + "count": 2 + }, + { + "path": "/public/app/features/correlations/Forms/ConfigureCorrelationBasicInfoForm.tsx", + "count": 2 + }, + { + "path": "/public/app/features/correlations/Forms/ConfigureCorrelationSourceForm.tsx", + "count": 2 + }, + { + "path": "/public/app/features/datasources/components/BasicSettings.tsx", + "count": 1 + }, + { + "path": "/public/app/features/datasources/components/DataSourceTestingStatus.tsx", + "count": 2 + }, + { + "path": "/public/app/features/datasources/components/DataSourceTypeCardList.tsx", + "count": 1 + }, + { + "path": "/public/app/features/datasources/components/picker/DataSourceCard.tsx", + "count": 9 + }, + { + "path": "/public/app/features/datasources/components/picker/DataSourceList.tsx", + "count": 4 + }, + { + "path": "/public/app/features/datasources/components/picker/DataSourceLogo.tsx", + "count": 1 + }, + { + "path": "/public/app/features/datasources/components/picker/DataSourceModal.tsx", + "count": 10 + }, + { + "path": "/public/app/features/dimensions/editors/ColorDimensionEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/features/dimensions/editors/FileUploader.tsx", + "count": 8 + }, + { + "path": "/public/app/features/dimensions/editors/FolderPickerTab.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dimensions/editors/ResourceCards.tsx", + "count": 5 + }, + { + "path": "/public/app/features/dimensions/editors/ResourcePicker.tsx", + "count": 2 + }, + { + "path": "/public/app/features/dimensions/editors/ResourcePickerPopover.tsx", + "count": 5 + }, + { + "path": "/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dimensions/editors/ScaleDimensionEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx", + "count": 8 + }, + { + "path": "/public/app/features/dimensions/editors/URLPickerTab.tsx", + "count": 3 + }, + { + "path": "/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditorModal.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/Logs/LiveLogs.tsx", + "count": 5 + }, + { + "path": "/public/app/features/explore/Logs/LogsMetaRow.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/Logs/LogsNavigation.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/Logs/LogsNavigationPages.tsx", + "count": 5 + }, + { + "path": "/public/app/features/explore/Logs/LogsSamplePanel.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/Logs/LogsVolumePanel.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/Logs/LogsVolumePanelList.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/Logs/utils/LogsCrossFadeTransition.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/PrometheusListView/ItemLabels.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/PrometheusListView/ItemValues.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/PrometheusListView/RawListContainer.tsx", + "count": 6 + }, + { + "path": "/public/app/features/explore/PrometheusListView/RawListItem.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/PrometheusListView/RawListItemAttributes.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/RichHistory/RichHistoryCard.tsx", + "count": 14 + }, + { + "path": "/public/app/features/explore/RichHistory/RichHistoryQueriesTab.tsx", + "count": 14 + }, + { + "path": "/public/app/features/explore/RichHistory/RichHistorySettingsTab.tsx", + "count": 5 + }, + { + "path": "/public/app/features/explore/RichHistory/RichHistoryStarredTab.tsx", + "count": 7 + }, + { + "path": "/public/app/features/explore/TraceView/TraceView.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/Actions/ActionButton.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx", + "count": 6 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx", + "count": 5 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx", + "count": 6 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/GraphTicks.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/Scrubber.tsx", + "count": 5 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/TickLabels.tsx", + "count": 2 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx", + "count": 8 + }, + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanBarRow.tsx", + "count": 22 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianKeyValues.tsx", + "count": 8 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianLogs.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianReferences.tsx", + "count": 14 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianText.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/KeyValuesTable.tsx", + "count": 6 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/TextList.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx", + "count": 11 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetailRow.tsx", + "count": 2 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanLinks.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanTreeOffset.tsx", + "count": 6 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/Ticks.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.tsx", + "count": 8 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineHeaderRow.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineViewingLayer.tsx", + "count": 8 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx", + "count": 3 + }, + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/common/BreakableText.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/common/CopyIcon.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/common/LabeledList.tsx", + "count": 4 + }, + { + "path": "/public/app/features/explore/TraceView/components/common/NewWindowIcon.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/common/TraceName.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx", + "count": 2 + }, + { + "path": "/public/app/features/expressions/components/Condition.tsx", + "count": 3 + }, + { + "path": "/public/app/features/expressions/components/Math.tsx", + "count": 7 + }, + { + "path": "/public/app/features/geo/editor/GazetteerPathEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/geo/editor/locationModeEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/features/inspector/DetailText.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/InspectStatsTab.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/InspectStatsTable.tsx", + "count": 2 + }, + { + "path": "/public/app/features/inspector/InspectStatsTraceIdsTable.tsx", + "count": 2 + }, + { + "path": "/public/app/features/inspector/QueryInspector.tsx", + "count": 1 + }, + { + "path": "/public/app/features/inspector/styles.ts", + "count": 11 + }, + { + "path": "/public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx", + "count": 3 + }, + { + "path": "/public/app/features/library-panels/components/OpenLibraryPanelModal/OpenLibraryPanelModal.tsx", + "count": 1 + }, + { + "path": "/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx", + "count": 1 + }, + { + "path": "/public/app/features/library-panels/styles.ts", + "count": 6 + }, + { + "path": "/public/app/features/live/LiveConnectionWarning.tsx", + "count": 2 + }, + { + "path": "/public/app/features/logs/components/LoadingIndicator.tsx", + "count": 1 + }, + { + "path": "/public/app/features/logs/components/LogDetailsRow.tsx", + "count": 7 + }, + { + "path": "/public/app/features/logs/components/LogLabelStats.tsx", + "count": 5 + }, + { + "path": "/public/app/features/logs/components/LogLabelStatsRow.tsx", + "count": 8 + }, + { + "path": "/public/app/features/logs/components/LogLabels.tsx", + "count": 3 + }, + { + "path": "/public/app/features/logs/components/LogRowMessageDisplayedFields.tsx", + "count": 1 + }, + { + "path": "/public/app/features/logs/components/getLogRowStyles.ts", + "count": 36 + }, + { + "path": "/public/app/features/logs/components/log-context/LogRowContextModal.tsx", + "count": 13 + }, + { + "path": "/public/app/features/manage-dashboards/DashboardImportPage.tsx", + "count": 3 + }, + { + "path": "/public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx", + "count": 2 + }, + { + "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/DeletePublicDashboardModal.tsx", + "count": 2 + }, + { + "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx", + "count": 6 + }, + { + "path": "/public/app/features/panel/components/VizTypePicker/VisualizationSuggestionCard.tsx", + "count": 5 + }, + { + "path": "/public/app/features/playlist/PlaylistTableRows.tsx", + "count": 4 + }, + { + "path": "/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/Badges/sharedStyles.ts", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/HorizontalGroup.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginActions.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginDetailsHeaderDependencies.tsx", + "count": 2 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginDetailsHeaderSignature.tsx", + "count": 2 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginDetailsPage.tsx", + "count": 3 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx", + "count": 4 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginSubtitle.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginUsage.tsx", + "count": 2 + }, + { + "path": "/public/app/features/plugins/admin/components/VersionList.tsx", + "count": 3 + }, + { + "path": "/public/app/features/plugins/admin/hooks/usePluginInfo.tsx", + "count": 1 + }, + { + "path": "/public/app/features/query/components/QueryEditorRowHeader.tsx", + "count": 8 + }, + { + "path": "/public/app/features/query/components/QueryGroup.tsx", + "count": 7 + }, + { + "path": "/public/app/features/query/components/QueryGroupOptions.tsx", + "count": 1 + }, + { + "path": "/public/app/features/search/page/components/ActionRow.tsx", + "count": 2 + }, + { + "path": "/public/app/features/search/page/components/SearchResultsTable.tsx", + "count": 13 + }, + { + "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx", + "count": 1 + }, + { + "path": "/public/app/features/serviceaccounts/components/ServiceAccountProfileRow.tsx", + "count": 1 + }, + { + "path": "/public/app/features/serviceaccounts/components/ServiceAccountTokensTable.tsx", + "count": 7 + }, + { + "path": "/public/app/features/storage/Breadcrumb.tsx", + "count": 1 + }, + { + "path": "/public/app/features/storage/FileView.tsx", + "count": 7 + }, + { + "path": "/public/app/features/storage/FolderView.tsx", + "count": 5 + }, + { + "path": "/public/app/features/storage/RootView.tsx", + "count": 2 + }, + { + "path": "/public/app/features/storage/StoragePage.tsx", + "count": 6 + }, + { + "path": "/public/app/features/storage/UploadButton.tsx", + "count": 1 + }, + { + "path": "/public/app/features/transformers/configFromQuery/ConfigFromQueryTransformerEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/transformers/editors/GroupByTransformerEditor.tsx", + "count": 3 + }, + { + "path": "/public/app/features/transformers/extractFields/components/JSONPathEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/features/transformers/fieldToConfigMapping/FieldToConfigMappingEditor.tsx", + "count": 3 + }, + { + "path": "/public/app/features/transformers/prepareTimeSeries/PrepareTimeSeriesEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/features/transformers/spatial/SpatialTransformerEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/features/users/TokenRevokedModal.tsx", + "count": 3 + }, + { + "path": "/public/app/features/variables/editor/VariableEditorList.tsx", + "count": 1 + }, + { + "path": "/public/app/features/variables/editor/VariableEditorListRow.tsx", + "count": 7 + }, + { + "path": "/public/app/features/variables/inspect/VariablesUnknownTable.tsx", + "count": 5 + }, + { + "path": "/public/app/features/variables/pickers/shared/VariableLink.tsx", + "count": 2 + }, + { + "path": "/public/app/features/visualization/data-hover/DataHoverRows.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/add-instance/components/AddInstance/AddInstance.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.styles.ts", + "count": 8 + }, + { + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.styles.tsx", + "count": 11 + }, + { + "path": "/public/app/percona/add-instance/components/AzureDiscovery/Discovery.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/add-instance/components/AzureDiscovery/components/Credentials/Credentials.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/Instances.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/add-instance/components/Discovery/Discovery.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/add-instance/components/Discovery/components/Credentials/Credentials.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/add-instance/components/Discovery/components/DiscoveryDocs/DiscoveryDocs.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/add-instance/components/Discovery/components/Instances/Instances.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/add-instance/panel.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/AddBackupPage/AddBackupPage.styles.ts", + "count": 16 + }, + { + "path": "/public/app/percona/backup/components/AddBackupPage/RetryModeSelector/RetryModeSelector.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/backup/components/AddBackupPage/ScheduleSection/ScheduleSection.styles.ts", + "count": 6 + }, + { + "path": "/public/app/percona/backup/components/AddBackupPage/ScheduleSection/ScheduleSectionFields/ScheduleSectionFields.styles.ts", + "count": 7 + }, + { + "path": "/public/app/percona/backup/components/BackupErrorSection/BackupErrorSection.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventory.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventoryActions/BackupInventoryActions.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/BackupInventoryDetails/BackupInventoryDetails.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/BackupInventory/RestoreBackupModal/RestoreBackupModal.styles.ts", + "count": 6 + }, + { + "path": "/public/app/percona/backup/components/BucketBlock/BucketBlock.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/ChunkedLogsViewer/ChunkedLogsViewer.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/DBIcon/DBIcon.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/DescriptionBlock/DescriptionBlock.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/DetailedDate/DetailedDate.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/KeysBlock/KeysBlock.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/RestoreHistoryActions/RestoreHistoryActions.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/RestoreHistory/RestoreHistoryDetails/RestoreHistoryDetails.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackupsActions/ScheduledBackupsActions.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/ScheduledBackups/ScheduledBackupsDetails/ScheduledBackupsDetails.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/Status/Status.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/AddStorageLocationModal/AddStorageLocationModal.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/StorageLocationDetails/StorageLocationDetails.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/StorageLocations.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/backup/components/StorageLocations/StorageLocationsActions/StorageLocationsActions.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/check/CheckPanel.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/AllChecksTab.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/ChangeCheckIntervalModal/ChangeCheckIntervalModal.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/check/components/AllChecksTab/CheckActions/CheckActions.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/check/components/CheckInfoAlert/CheckInfoAlert.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/check/components/FailedChecksTab/Failures/Failures.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/check/components/ServiceChecks/ServiceChecks.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/edit-instance/EditInstance.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/entitlements/Entitlements.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/entitlements/components/Advisor/Advisor.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/entitlements/components/SectionLabel/SectionLabel.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/environment-overview/EnvironmentOverview.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/environment-overview/components/ContactWidget/Contact.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/environment-overview/components/WidgetWrapper/WidgetWrapper.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleFromTemplate/AlertRuleFromTemplate.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AddAlertRuleTemplateModal/AddAlertRuleTemplateModal.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplateActions/AlertRuleTemplateActions.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/integrated-alerting/components/AlertRuleTemplate/EditAlertRuleTemplateModal/EditAlertRuleTemplateModal.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Alerts/AlertDetails/AlertDetails.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Alerts/Alerts.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/integrated-alerting/components/Severity/Severity.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/TemplateForm/AdvancedRuleSection/AdvancedRuleSection.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/TemplateForm/EvaluateEvery/EvaluateEvery.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/integrated-alerting/components/TemplateForm/TemplateForm.styles.ts", + "count": 12 + }, + { + "path": "/public/app/percona/inventory/Tabs/Tabs.styles.ts", + "count": 12 + }, + { + "path": "/public/app/percona/inventory/components/StatusBadge/StatusBadge.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/inventory/components/StatusInfo/StatusInfo.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/inventory/components/StatusLink/StatusLink.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/pmm-dump/PmmDump.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/pmm-dump/SendToSupportModal.tsx", + "count": 1 + }, + { + "path": "/public/app/percona/pmm-dump/components/ExportDataset/ExportDataset.styles.ts", + "count": 21 + }, + { + "path": "/public/app/percona/rbac/AccessRoleCell/AccessRolesCell.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/AccessRole.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/components/AccessRolesTable/AccessRolesTable.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/components/AccessRolesTable/Table/Table.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/components/MetricsCell/MetricsCell.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/components/NameCell/NameCell.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AccessRoles/components/OptionsCell/OptionsCell.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/rbac/AddEditRole/components/AddEditRoleForm/AddEditRoleForm.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/rbac/AddEditRole/components/LabelsField/components/LabelsBuilder/LabelsBuilder.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/settings/Settings.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/settings/components/Advanced/Advanced.styles.ts", + "count": 16 + }, + { + "path": "/public/app/percona/settings/components/Communication/Communication.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/settings/components/Communication/Email/Email.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/settings/components/Communication/Email/TestEmailSettings/TestEmailSettings.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/settings/components/Diagnostics/Diagnostics.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/settings/components/MetricsResolution/MetricsResolution.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/settings/components/Platform/Connect/Connect.styles.ts", + "count": 7 + }, + { + "path": "/public/app/percona/settings/components/Platform/Connect/PMMServerURLWarning/PMMServerUrlWarning.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/settings/components/Platform/Connected/Connected.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/settings/components/Platform/Connected/ModalBody/ModalBody.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/settings/components/SSHKey/SSHKey.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/AnotherTableInstance/Table.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/shared/components/Elements/CheckPermissions/CheckPermissions.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Checkbox/Checkbox.styles.ts", + "count": 7 + }, + { + "path": "/public/app/percona/shared/components/Elements/Chip/Chip.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/CustomCollapsableSection/CustomCollapsableSection.styles.ts", + "count": 7 + }, + { + "path": "/public/app/percona/shared/components/Elements/CustomCollapsableSection/UpgradePlanWrapper/UpgradePlanWrapper.style.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Elements/DeleteModal/DeleteModal.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/DetailsRow/DetailsRow.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/components/Elements/Dropdown/Dropdown.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/EmptyBlock/EmptyBlock.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/ExpandAndActionsCol/ExpandAndActionsCol.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/ExpandableCell/ExpandableCell.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/ExpandableRowButton/ExpandableRowButton.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/FeatureLoader/FeatureLoader.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/FilterSection/FilterSection.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/Icons/Ellipsis.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Icons/Icons.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/LinkTooltip/LinkTooltip.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/LinkTooltipCore/LinkTooltipCore.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/Modal/Modal.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/shared/components/Elements/MultipleActions/MultipleActions.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/components/Elements/Overlay/Overlay.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Elements/PageSwitcher/PageSwitcher.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/PageSwitcherCard/PageSwitcherCard.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/components/Elements/PermissionLoader/PermissionLoader.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/SecretToggler/SecretToggler.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Elements/ServiceIconWithText/ServiceIconWithText.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Filter/Filter.styles.ts", + "count": 8 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Filter/components/fields/RadioButtonField.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Pagination/Pagination.styles.ts", + "count": 3 + }, + { + "path": "/public/app/percona/shared/components/Elements/Table/Table.styles.ts", + "count": 6 + }, + { + "path": "/public/app/percona/shared/components/Elements/TabsVertical/TabsVertical.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Elements/TechnicalPreview/TechnicalPreview.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Elements/WarningBlock/WarningBlock.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/AsyncSelectFieldCore/AsyncSelectFieldCore.styles.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/FieldAdapters/Field.tsx", + "count": 6 + }, + { + "path": "/public/app/percona/shared/components/Form/FieldAdapters/FieldAdapters.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Form/FieldSet/FieldSet.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/FormElement/FormElement.tsx", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Form/Label/Label.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/Form/LabelCore/LabelCore.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/MultiCheckbox/MultiCheckboxField.styles.ts", + "count": 6 + }, + { + "path": "/public/app/percona/shared/components/Form/NumberInput/NumberInput.styles.ts", + "count": 11 + }, + { + "path": "/public/app/percona/shared/components/Form/PasswordInput/PasswordInput.styles.ts", + "count": 8 + }, + { + "path": "/public/app/percona/shared/components/Form/RadioButtonGroup/RadioButton/RadioButton.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/RadioButtonGroup/RadioButtonGroup.styles.ts", + "count": 6 + }, + { + "path": "/public/app/percona/shared/components/Form/SelectFieldCore/SelectFieldCore.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/shared/components/Form/Switch/Switch.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/components/Form/TextInput/TextInput.styles.ts", + "count": 15 + }, + { + "path": "/public/app/percona/shared/components/Form/TextareaInput/TextareaInput.styles.ts", + "count": 8 + }, + { + "path": "/public/app/percona/shared/components/Form/withSelectStyles/withSelectStyles.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/LoginFooter/LoginFooter.styles.ts", + "count": 1 + }, + { + "path": "/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.styles.ts", + "count": 5 + }, + { + "path": "/public/app/percona/shared/components/SearchFilter/SearchFilter.styles.ts", + "count": 4 + }, + { + "path": "/public/app/percona/shared/helpers/getExpandAndActionsCol.tsx", + "count": 2 + }, + { + "path": "/public/app/percona/tickets/Tickets.styles.ts", + "count": 2 + }, + { + "path": "/public/app/percona/tour/components/Close.styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloud-monitoring/components/CloudMonitoringCheatSheet.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloud-monitoring/components/VisualMetricQueryEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/CheatSheet/LogsCheatSheet.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/ConfigEditor/XrayLinkConfig.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/LogsQueryEditor/LogsQueryEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/DynamicLabelsField.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/shared/LogGroups/LegacyLogGroupNamesSelection.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/AddRemove.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/MetricPicker.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/SettingsEditor/FiltersSettingsEditor/index.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/SettingsEditor/BucketScriptSettingsEditor/index.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/SettingsEditor/TopMetricsSettingsEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/QueryEditorRow.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/SettingsEditorContainer.tsx", + "count": 5 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/index.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/components/QueryEditor/styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx", + "count": 6 + }, + { + "path": "/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/grafana-pyroscope-datasource/QueryEditor/LabelsEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/grafana/components/QueryEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/grafana/components/TimePickerInput.tsx", + "count": 4 + }, + { + "path": "/public/app/plugins/datasource/grafana/components/TimeRegionEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/AddGraphiteFunction.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/FunctionParamEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/GraphiteFunctionEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/GraphiteQueryEditor.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/MetricTankMetaInspector.tsx", + "count": 10 + }, + { + "path": "/public/app/plugins/datasource/graphite/components/TagsSection.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/influxdb/components/editor/query/flux/FluxQueryEditor.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/influxdb/components/editor/query/influxql/visual/VisualInfluxQLEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/jaeger/CheatSheet.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/jaeger/configuration/ConfigEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/loki/components/LokiContextUi.tsx", + "count": 11 + }, + { + "path": "/public/app/plugins/datasource/loki/components/LokiLabelBrowser.tsx", + "count": 14 + }, + { + "path": "/public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/loki/configuration/DerivedField.tsx", + "count": 7 + }, + { + "path": "/public/app/plugins/datasource/loki/configuration/DerivedFields.tsx", + "count": 5 + }, + { + "path": "/public/app/plugins/datasource/loki/querybuilder/components/LabelBrowserModal.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/loki/querybuilder/components/LokiQueryCodeEditor.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/loki/querybuilder/components/QueryPattern.tsx", + "count": 4 + }, + { + "path": "/public/app/plugins/datasource/loki/querybuilder/components/QueryPatternsModal.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/datasource/opentsdb/components/OpenTsdbQueryEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/parca/QueryEditor/LabelsEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/datasource/zipkin/ConfigEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/alertlist/AlertInstances.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/alertlist/UnifiedAlertList.tsx", + "count": 17 + }, + { + "path": "/public/app/plugins/panel/alertlist/unified-alerting/UngroupedView.tsx", + "count": 7 + }, + { + "path": "/public/app/plugins/panel/dashlist/styles.ts", + "count": 7 + }, + { + "path": "/public/app/plugins/panel/datagrid/utils.ts", + "count": 3 + }, + { + "path": "/public/app/plugins/panel/gettingstarted/components/DocsCard.tsx", + "count": 5 + }, + { + "path": "/public/app/plugins/panel/gettingstarted/components/TutorialCard.tsx", + "count": 6 + }, + { + "path": "/public/app/plugins/panel/gettingstarted/components/sharedStyles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/live/LiveChannelEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/live/LivePanel.tsx", + "count": 7 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/EdgeLabel.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/Legend.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/Marker.tsx", + "count": 3 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/Node.tsx", + "count": 9 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/NodeGraph.tsx", + "count": 10 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/ViewControls.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/editor/ArcOptionsEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/nodeGraph/useContextMenu.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/piechart/PieChart.tsx", + "count": 5 + }, + { + "path": "/public/app/plugins/panel/pmm-check/CheckPanel.styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/pmm-check/components/Failed/Failed.styles.ts", + "count": 12 + }, + { + "path": "/public/app/plugins/panel/pmm-pt-summary-panel/PTSummary.styles.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/pmm-update/UpdatePanel.styles.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/AvailableUpdate/AvailableUpdate.styles.ts", + "count": 5 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/CenteredButton/CenteredButton.styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/CurrentVersion/CurrentVersion.styles.ts", + "count": 3 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/InfoBox/InfoBox.styles.ts", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/LastCheck/LastCheck.styles.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/pmm-update/components/ProgressModal/ProgressModal.styles.ts", + "count": 8 + }, + { + "path": "/public/app/plugins/panel/table/TablePanel.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/text/TextPanel.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/text/TextPanelEditor.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/timeseries/TimezonesEditor.tsx", + "count": 2 + }, + { + "path": "/public/app/plugins/panel/timeseries/plugins/ThresholdDragHandle.tsx", + "count": 7 + }, + { + "path": "/public/app/plugins/panel/traces/TracesPanel.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/panel/welcome/Welcome.tsx", + "count": 6 + }, + { + "path": "/public/app/plugins/panel/xychart/AutoEditor.tsx", + "count": 2 + } + ] + }, + { + "name": "Do not re-export imported variable (`./LocalStorageValueProvider`)", + "files": [ + { + "path": "/public/app/core/components/LocalStorageValueProvider/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`config`)", + "files": [ + { + "path": "/public/app/core/config.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloud-monitoring/webpack.config.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/grafana-testdata-datasource/webpack.config.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/parca/webpack.config.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/tempo/webpack.config.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/zipkin/webpack.config.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`Settings`)", + "files": [ + { + "path": "/public/app/core/config.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`profiler`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`appEvents`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`colors`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`assignModelProperties`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`contextSrv`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`JsonExplorer`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`TimeSeries`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`updateLegendValues`)", + "files": [ + { + "path": "/public/app/core/core.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`RichHistorySearchFilters`)", + "files": [ + { + "path": "/public/app/core/utils/richHistory.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`RichHistorySettings`)", + "files": [ + { + "path": "/public/app/core/utils/richHistory.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`SortOrder`)", + "files": [ + { + "path": "/public/app/core/utils/richHistory.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`app/features/explore/extensions/ToolbarExtensionPointMenu`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/extensions/AlertInstanceExtensionPointMenu.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`DataSourcesResponse`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`AdminConfigResponse`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`AlertmanagersResponse`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`InternalAlertmanagerConfiguration`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`VanillaAlertmanagerConfiguration`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`alertmanagerConfigurationHistory`)", + "files": [ + { + "path": "/public/app/features/alerting/unified/components/settings/__mocks__/server.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`@reduxjs/toolkit/query/react`)", + "files": [ + { + "path": "/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./AddNewConnectionPage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DataSourceDetailsPage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DataSourcesListPage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DataSourceDashboardsPage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./EditDataSourcePage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./NewDataSourcePage`)", + "files": [ + { + "path": "/public/app/features/connections/pages/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./AnnotationSettingsEdit`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/annotations/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/AnnotationSettings/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./AnnotationSettingsList`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/annotations/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/AnnotationSettings/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./HistorySrv`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./VersionHistoryTable`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./VersionHistoryHeader`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./VersionHistoryButtons`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./VersionHistoryComparison`)", + "files": [ + { + "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./AddLibraryPanelWidget`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/AddLibraryPanelWidget/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DashboardExporter`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/DashExportModal/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`DashNav`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/DashNav/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DashboardRow`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/DashboardRow/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DashboardSettings`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/DashboardSettings/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./LinkSettingsEdit`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/LinksSettings/index.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./LinkSettingsList`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/LinksSettings/index.tsx", + "count": 1 + } + ] + }, + { + "name": "'Layout' import from '@grafana/ui/src/components/Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/Configuration.tsx", + "count": 1 + }, + { + "path": "/public/app/features/plugins/admin/components/PluginDetailsPage.tsx", + "count": 1 + } + ] + }, + { + "name": "'HorizontalGroup' import from '@grafana/ui/src' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/AcknowledgeCheckboxes.tsx", + "count": 1 + } + ] + }, + { + "name": "'VerticalGroup' import from '@grafana/ui/src' is restricted from being used by a pattern. Use Stack component instead.", + "files": [ + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/Configuration.tsx", + "count": 1 + }, + { + "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/AcknowledgeCheckboxes.tsx", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./ShareModal`)", + "files": [ + { + "path": "/public/app/features/dashboard/components/ShareModal/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./DashboardModel`)", + "files": [ + { + "path": "/public/app/features/dashboard/state/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./PanelModel`)", + "files": [ + { + "path": "/public/app/features/dashboard/state/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./TracePageHeader`)", + "files": [ + { + "path": "/public/app/features/explore/TraceView/components/TracePageHeader/index.tsx", + "count": 1 + }, + { + "path": "/public/app/features/explore/TraceView/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./TimelineHeaderRow`)", + "files": [ + { + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/index.tsx", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`../utils/date`)", + "files": [ { - "path": "/public/app/plugins/datasource/elasticsearch/types.ts", + "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/utils.tsx", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./TraceTimelineViewer`)", + "files": [ { - "path": "/public/app/plugins/panel/heatmap/types.ts", + "path": "/public/app/features/explore/TraceView/components/index.ts", "count": 1 - }, - { - "path": "/public/app/types/index.ts", - "count": 21 } ] }, { - "name": "Do not re-export imported variable (`./LocalStorageValueProvider`)", + "name": "Do not re-export imported variable (`./settings/SpanBarSettings`)", "files": [ { - "path": "/public/app/core/components/LocalStorageValueProvider/index.tsx", + "path": "/public/app/features/explore/TraceView/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`config`)", + "name": "Do not re-export imported variable (`./TraceTimelineViewer/SpanDetail/DetailState`)", "files": [ { - "path": "/public/app/core/config.ts", + "path": "/public/app/features/explore/TraceView/components/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./model/transform-trace-data`)", + "files": [ { - "path": "/public/app/plugins/datasource/cloud-monitoring/webpack.config.ts", + "path": "/public/app/features/explore/TraceView/components/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./utils/filter-spans`)", + "files": [ { - "path": "/public/app/plugins/datasource/grafana-testdata-datasource/webpack.config.ts", + "path": "/public/app/features/explore/TraceView/components/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./PathElem`)", + "files": [ { - "path": "/public/app/plugins/datasource/parca/webpack.config.ts", + "path": "/public/app/features/explore/TraceView/components/model/ddg/types.tsx", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./trace`)", + "files": [ { - "path": "/public/app/plugins/datasource/tempo/webpack.config.ts", + "path": "/public/app/features/explore/TraceView/components/types/index.tsx", "count": 1 }, { - "path": "/public/app/plugins/datasource/zipkin/webpack.config.ts", + "path": "/public/app/plugins/datasource/jaeger/_importedDependencies/types/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`profiler`)", + "name": "Do not re-export imported variable (`../settings/SpanBarSettings`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/types/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`appEvents`)", + "name": "Do not re-export imported variable (`./TTraceTimeline`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/types/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`colors`)", + "name": "Do not re-export imported variable (`./TNil`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/types/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`assignModelProperties`)", + "name": "Do not re-export imported variable (`./links`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/types/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`contextSrv`)", + "name": "Do not re-export imported variable (`./DraggableManagerDemo`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/demo/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`JsonExplorer`)", + "name": "Do not re-export imported variable (`./EUpdateTypes`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`TimeSeries`)", + "name": "Do not re-export imported variable (`./DraggableManager`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`updateLegendValues`)", + "name": "Do not re-export imported variable (`./external.utils`)", "files": [ { - "path": "/public/app/core/core.ts", + "path": "/public/app/features/explore/hooks/useStateSync/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`RichHistorySearchFilters`)", + "name": "Do not re-export imported variable (`./remotePlugin.mock`)", "files": [ { - "path": "/public/app/core/utils/richHistory.ts", + "path": "/public/app/features/plugins/admin/__mocks__/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`RichHistorySettings`)", + "name": "Do not re-export imported variable (`./localPlugin.mock`)", "files": [ { - "path": "/public/app/core/utils/richHistory.ts", + "path": "/public/app/features/plugins/admin/__mocks__/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`SortOrder`)", + "name": "Do not re-export imported variable (`./PluginDisabledBadge`)", "files": [ { - "path": "/public/app/core/utils/richHistory.ts", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 } ] }, { - "name": "'HorizontalGroup' import from '@grafana/ui/src' is restricted from being used by a pattern. Use Stack component instead.", + "name": "Do not re-export imported variable (`./PluginInstallBadge`)", "files": [ { - "path": "/public/app/features/admin/UserListPublicDashboardPage/UserListPublicDashboardPage.tsx", - "count": 1 - }, - { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./PluginEnterpriseBadge`)", + "files": [ { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/AcknowledgeCheckboxes.tsx", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./PluginUpdateAvailableBadge`)", + "files": [ { - "path": "/public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`app/features/explore/extensions/ToolbarExtensionPointMenu`)", + "name": "Do not re-export imported variable (`./PluginAngularBadge`)", "files": [ { - "path": "/public/app/features/alerting/unified/components/extensions/AlertInstanceExtensionPointMenu.tsx", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`@reduxjs/toolkit/query/react`)", + "name": "Do not re-export imported variable (`./PluginDeprecatedBadge`)", "files": [ { - "path": "/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts", + "path": "/public/app/features/plugins/admin/components/Badges/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./frame`)", + "name": "Do not re-export imported variable (`./GetStartedWithPlugin`)", "files": [ { - "path": "/public/app/features/canvas/index.ts", + "path": "/public/app/features/plugins/admin/components/GetStartedWithPlugin/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`Placement`)", + "name": "Do not re-export imported variable (`./InstallControlsWarning`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/plugins/admin/components/InstallControls/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`Constraint`)", + "name": "Do not re-export imported variable (`./InstallControlsButton`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/plugins/admin/components/InstallControls/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`HorizontalConstraint`)", + "name": "* import is invalid because 'Layout,HorizontalGroup,VerticalGroup' from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/plugins/loader/sharedDependencies.ts", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/azuremonitor/components/QueryEditor/QueryEditor.test.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/azuremonitor/components/VariableEditor/VariableEditor.test.tsx", + "count": 1 + }, + { + "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/MetricsQueryEditor.test.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`VerticalConstraint`)", + "name": "Do not re-export imported variable (`./searcher`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/search/service/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`BackgroundImageSize`)", + "name": "Do not re-export imported variable (`CalculateFieldTransformerEditor`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`LineConfig`)", + "name": "Do not re-export imported variable (`calculateFieldTransformRegistryItem`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`BackgroundConfig`)", + "name": "Do not re-export imported variable (`./OptionsPicker/OptionsPicker`)", "files": [ { - "path": "/public/app/features/canvas/types.ts", + "path": "/public/app/features/variables/pickers/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./AddNewConnectionPage`)", + "name": "Do not re-export imported variable (`@grafana/data`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/features/variables/types.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DataSourceDetailsPage`)", + "name": "Do not re-export imported variable (`VariableModel`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/features/variables/types.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DataSourcesListPage`)", + "name": "Do not re-export imported variable (`./AdditionalOptions/AdditionalOptions`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DataSourceDashboardsPage`)", + "name": "Do not re-export imported variable (`./Labels/Labels`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./EditDataSourcePage`)", + "name": "Do not re-export imported variable (`./MainDetails/MainDetails`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./NewDataSourcePage`)", + "name": "Do not re-export imported variable (`./PostgreSQLConnectionDetails/PostgreSQLConnectionDetails`)", "files": [ { - "path": "/public/app/features/connections/pages/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./AnnotationSettingsEdit`)", + "name": "Do not re-export imported variable (`./MongoDBConnectionDetails/MongoDBConnectionDetails`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/annotations/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./MySQLConnectionDetails/MySQLConnectionDetails`)", + "files": [ { - "path": "/public/app/features/dashboard/components/AnnotationSettings/index.tsx", + "path": "/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./AnnotationSettingsList`)", + "name": "Do not re-export imported variable (`./ChangeCheckIntervalModal`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/annotations/index.tsx", + "path": "/public/app/percona/check/components/AllChecksTab/ChangeCheckIntervalModal/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`./AllChecksTab/AllChecksTab`)", + "files": [ { - "path": "/public/app/features/dashboard/components/AnnotationSettings/index.tsx", + "path": "/public/app/percona/check/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./HistorySrv`)", + "name": "Do not re-export imported variable (`./FailedChecksTab/FailedChecksTab`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "path": "/public/app/percona/check/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./VersionHistoryTable`)", + "name": "Do not re-export imported variable (`./Agents`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "path": "/public/app/percona/inventory/Tabs/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./VersionHistoryHeader`)", + "name": "Do not re-export imported variable (`./Nodes`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "path": "/public/app/percona/inventory/Tabs/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./VersionHistoryButtons`)", + "name": "Do not re-export imported variable (`./Services`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "path": "/public/app/percona/inventory/Tabs/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./VersionHistoryComparison`)", + "name": "Do not re-export imported variable (`DeleteServiceModal`)", "files": [ { - "path": "/public/app/features/dashboard-scene/settings/version-history/index.ts", + "path": "/public/app/percona/inventory/components/DeleteServiceModal/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./AddLibraryPanelWidget`)", + "name": "Do not re-export imported variable (`DeleteServicesModal`)", "files": [ { - "path": "/public/app/features/dashboard/components/AddLibraryPanelWidget/index.ts", + "path": "/public/app/percona/inventory/components/DeleteServicesModal/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DashboardExporter`)", + "name": "Do not re-export imported variable (`AccessRoleCell`)", "files": [ { - "path": "/public/app/features/dashboard/components/DashExportModal/index.ts", + "path": "/public/app/percona/rbac/AccessRoleCell/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`DashNav`)", + "name": "Do not re-export imported variable (`AccessRoleHeader`)", "files": [ { - "path": "/public/app/features/dashboard/components/DashNav/index.ts", + "path": "/public/app/percona/rbac/AccessRoleHeader/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DashboardRow`)", + "name": "Do not re-export imported variable (`Table`)", "files": [ { - "path": "/public/app/features/dashboard/components/DashboardRow/index.ts", + "path": "/public/app/percona/rbac/AccessRoles/components/AccessRolesTable/Table/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DashboardSettings`)", + "name": "Do not re-export imported variable (`DeleteRoleModal`)", "files": [ { - "path": "/public/app/features/dashboard/components/DashboardSettings/index.ts", + "path": "/public/app/percona/rbac/AccessRoles/components/DeleteRoleModal/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./LinkSettingsEdit`)", + "name": "Do not re-export imported variable (`MetricsCell`)", "files": [ { - "path": "/public/app/features/dashboard/components/LinksSettings/index.tsx", + "path": "/public/app/percona/rbac/AccessRoles/components/MetricsCell/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./LinkSettingsList`)", + "name": "Do not re-export imported variable (`MetricsColumn`)", "files": [ { - "path": "/public/app/features/dashboard/components/LinksSettings/index.tsx", + "path": "/public/app/percona/rbac/AccessRoles/components/MetricsColumn/index.ts", "count": 1 } ] }, { - "name": "'Layout' import from '@grafana/ui/src/components/Layout/Layout' is restricted from being used by a pattern. Use Stack component instead.", + "name": "Do not re-export imported variable (`NameCell`)", "files": [ { - "path": "/public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx", + "path": "/public/app/percona/rbac/AccessRoles/components/NameCell/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`OptionsCell`)", + "files": [ { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx", + "path": "/public/app/percona/rbac/AccessRoles/components/OptionsCell/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`AddRolePage`)", + "files": [ { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/Configuration.tsx", + "path": "/public/app/percona/rbac/AddEditRole/AddRolePage/index.ts", "count": 1 - }, + } + ] + }, + { + "name": "Do not re-export imported variable (`EditRolePage`)", + "files": [ { - "path": "/public/app/features/plugins/admin/components/PluginDetailsPage.tsx", + "path": "/public/app/percona/rbac/AddEditRole/EditRolePage/index.ts", "count": 1 } ] }, { - "name": "'VerticalGroup' import from '@grafana/ui/src' is restricted from being used by a pattern. Use Stack component instead.", + "name": "Do not re-export imported variable (`AddEditRoleForm`)", "files": [ { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/Configuration.tsx", - "count": 1 - }, - { - "path": "/public/app/features/dashboard/components/ShareModal/SharePublicDashboard/CreatePublicDashboard/AcknowledgeCheckboxes.tsx", + "path": "/public/app/percona/rbac/AddEditRole/components/AddEditRoleForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./ShareModal`)", + "name": "Do not re-export imported variable (`LabelsBuilder`)", "files": [ { - "path": "/public/app/features/dashboard/components/ShareModal/index.ts", + "path": "/public/app/percona/rbac/AddEditRole/components/LabelsField/components/LabelsBuilder/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DashboardModel`)", + "name": "Do not re-export imported variable (`LabelsField`)", "files": [ { - "path": "/public/app/features/dashboard/state/index.ts", + "path": "/public/app/percona/rbac/AddEditRole/components/LabelsField/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PanelModel`)", + "name": "Do not re-export imported variable (`./useAccessRolesEnabled`)", "files": [ { - "path": "/public/app/features/dashboard/state/index.ts", + "path": "/public/app/percona/rbac/hooks/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TracePageHeader`)", + "name": "Do not re-export imported variable (`./useFetchAccessRoles`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/TracePageHeader/index.tsx", - "count": 1 - }, - { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/rbac/hooks/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TimelineHeaderRow`)", + "name": "Do not re-export imported variable (`./Advanced/Advanced`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/index.tsx", + "path": "/public/app/percona/settings/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`../utils/date`)", + "name": "Do not re-export imported variable (`./Diagnostics/Diagnostics`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/TraceTimelineViewer/utils.tsx", + "path": "/public/app/percona/settings/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TraceTimelineViewer`)", + "name": "Do not re-export imported variable (`./MetricsResolution/MetricsResolution`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/settings/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./settings/SpanBarSettings`)", + "name": "Do not re-export imported variable (`./SSHKey/SSHKey`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/settings/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TraceTimelineViewer/SpanDetail/DetailState`)", + "name": "Do not re-export imported variable (`./Platform/Platform`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/settings/components/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./model/transform-trace-data`)", + "name": "Do not re-export imported variable (`./Table`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/shared/components/Elements/AnotherTableInstance/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./utils/filter-spans`)", + "name": "Do not re-export imported variable (`./Close`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/index.ts", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PathElem`)", + "name": "Do not re-export imported variable (`./Database`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/model/ddg/types.tsx", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`PathElem`)", + "name": "Do not re-export imported variable (`./Filter`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/model/ddg/types.tsx", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./trace`)", + "name": "Do not re-export imported variable (`./Info`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/types/index.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/datasource/jaeger/_importedDependencies/types/index.tsx", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`../settings/SpanBarSettings`)", + "name": "Do not re-export imported variable (`./Search`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/types/index.tsx", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TTraceTimeline`)", + "name": "Do not re-export imported variable (`./Ellipsis`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/types/index.tsx", + "path": "/public/app/percona/shared/components/Elements/Icons/index.tsx", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./TNil`)", + "name": "Do not re-export imported variable (`./FormElement/FormElement`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/types/index.tsx", + "path": "/public/app/percona/shared/components/Form/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./links`)", + "name": "Do not re-export imported variable (`./LoginFooter`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/types/index.tsx", + "path": "/public/app/percona/shared/components/LoginFooter/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DraggableManagerDemo`)", + "name": "Do not re-export imported variable (`./MegaMenuItem`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/demo/index.tsx", + "path": "/public/app/percona/shared/components/MegaMenuItem/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./EUpdateTypes`)", + "name": "Do not re-export imported variable (`PerconaTourBootstrapper`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", + "path": "/public/app/percona/shared/components/PerconaBootstrapper/PerconaTour/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./DraggableManager`)", + "name": "Do not re-export imported variable (`./SearchFilter`)", "files": [ { - "path": "/public/app/features/explore/TraceView/components/utils/DraggableManager/index.tsx", + "path": "/public/app/percona/shared/components/SearchFilter/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./external.utils`)", + "name": "Do not re-export imported variable (`navigationReducer`)", "files": [ { - "path": "/public/app/features/explore/hooks/useStateSync/index.ts", + "path": "/public/app/percona/shared/core/reducers/navigation/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./remotePlugin.mock`)", + "name": "Do not re-export imported variable (`nodesReducer`)", "files": [ { - "path": "/public/app/features/plugins/admin/__mocks__/index.ts", + "path": "/public/app/percona/shared/core/reducers/nodes/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./localPlugin.mock`)", + "name": "Do not re-export imported variable (`servicesReducer`)", "files": [ { - "path": "/public/app/features/plugins/admin/__mocks__/index.ts", + "path": "/public/app/percona/shared/core/reducers/services/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginDisabledBadge`)", + "name": "Do not re-export imported variable (`tourReducer`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/core/reducers/tour/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginInstallBadge`)", + "name": "Do not re-export imported variable (`./compose`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginEnterpriseBadge`)", + "name": "Do not re-export imported variable (`./containsLowercase`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginUpdateAvailableBadge`)", + "name": "Do not re-export imported variable (`./containsNumber`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginAngularBadge`)", + "name": "Do not re-export imported variable (`./containsUppercase`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./PluginDeprecatedBadge`)", + "name": "Do not re-export imported variable (`./email`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/Badges/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./GetStartedWithPlugin`)", + "name": "Do not re-export imported variable (`./greaterThan`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/GetStartedWithPlugin/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./InstallControlsWarning`)", + "name": "Do not re-export imported variable (`./lessThan`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/InstallControls/index.tsx", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./InstallControlsButton`)", + "name": "Do not re-export imported variable (`./minLength`)", "files": [ { - "path": "/public/app/features/plugins/admin/components/InstallControls/index.tsx", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "* import is invalid because 'Layout,HorizontalGroup,VerticalGroup' from '@grafana/ui' is restricted from being used by a pattern. Use Stack component instead.", + "name": "Do not re-export imported variable (`./maxLength`)", "files": [ { - "path": "/public/app/features/plugins/loader/sharedDependencies.ts", - "count": 1 - }, - { - "path": "/public/app/plugins/datasource/azuremonitor/components/QueryEditor/QueryEditor.test.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/datasource/azuremonitor/components/VariableEditor/VariableEditor.test.tsx", - "count": 1 - }, - { - "path": "/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/MetricsQueryEditor.test.tsx", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./searcher`)", + "name": "Do not re-export imported variable (`./required`)", "files": [ { - "path": "/public/app/features/search/service/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`CalculateFieldTransformerEditor`)", + "name": "Do not re-export imported variable (`./requiredTrue`)", "files": [ { - "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`calculateFieldTransformRegistryItem`)", + "name": "Do not re-export imported variable (`./minTags`)", "files": [ { - "path": "/public/app/features/transformers/editors/CalculateFieldTransformerEditor/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`./OptionsPicker/OptionsPicker`)", + "name": "Do not re-export imported variable (`./int32`)", "files": [ { - "path": "/public/app/features/variables/pickers/index.ts", + "path": "/public/app/percona/shared/helpers/validatorsForm/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`@grafana/data`)", + "name": "Do not re-export imported variable (`getAlertingTourSteps`)", "files": [ { - "path": "/public/app/features/variables/types.ts", + "path": "/public/app/percona/tour/steps/alerting/index.ts", "count": 1 } ] }, { - "name": "Do not re-export imported variable (`VariableHide`)", + "name": "Do not re-export imported variable (`getProductTourSteps`)", "files": [ { - "path": "/public/app/features/variables/types.ts", + "path": "/public/app/percona/tour/steps/product/index.ts", "count": 1 } ] @@ -6721,6 +9572,15 @@ } ] }, + { + "name": "Do not re-export imported variable (`ElasticsearchQuery`)", + "files": [ + { + "path": "/public/app/plugins/datasource/elasticsearch/types.ts", + "count": 1 + } + ] + }, { "name": "Do not re-export imported variable (`./StreamingClientEditor`)", "files": [ @@ -6775,6 +9635,15 @@ } ] }, + { + "name": "Do not re-export imported variable (`Datasource`)", + "files": [ + { + "path": "/public/app/plugins/datasource/mixed/module.ts", + "count": 1 + } + ] + }, { "name": "Do not re-export imported variable (`Options`)", "files": [ @@ -6873,6 +9742,132 @@ } ] }, + { + "name": "Do not re-export imported variable (`./Failed/Failed`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-check/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./AvailableUpdate/AvailableUpdate`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./CenteredButton/CenteredButton`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./CurrentVersion/CurrentVersion`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./InfoBox/InfoBox`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./LastCheck/LastCheck`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./ProgressModal/ProgressModal`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./ProgressModalHeader/ProgressModalHeader`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/components/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./useApiCall`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./useClickOutside`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./useInitializeUpdate`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./usePerformUpdate`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./useToggleOnAltClick`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, + { + "name": "Do not re-export imported variable (`./useVersionDetails`)", + "files": [ + { + "path": "/public/app/plugins/panel/pmm-update/hooks/index.ts", + "count": 1 + } + ] + }, { "name": "Do not re-export imported variable (`loadPluginCss`)", "files": [ @@ -6918,10 +9913,6 @@ "path": "/packages/grafana-ui/src/components/ButtonCascader/ButtonCascader.story.tsx", "count": 1 }, - { - "path": "/packages/grafana-ui/src/components/ColorPicker/ColorPickerPopover.story.tsx", - "count": 1 - }, { "path": "/packages/grafana-ui/src/components/DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker.story.tsx", "count": 1 @@ -7001,6 +9992,10 @@ { "name": "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "files": [ + { + "path": "/e2e/scenes/utils/flows/addDataSource.ts", + "count": 1 + }, { "path": "/e2e/utils/flows/addDataSource.ts", "count": 1 @@ -7011,7 +10006,7 @@ }, { "path": "/packages/grafana-prometheus/src/components/PromQueryField.tsx", - "count": 6 + "count": 4 }, { "path": "/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx", @@ -7079,7 +10074,7 @@ }, { "path": "/packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx", - "count": 8 + "count": 3 }, { "path": "/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx", @@ -7101,6 +10096,14 @@ "path": "/packages/grafana-ui/src/components/Segment/SegmentInput.tsx", "count": 2 }, + { + "path": "/packages/grafana-ui/src/themes/GlobalStyles/legacySelect.ts", + "count": 29 + }, + { + "path": "/public/app/angular/components/PageHeader/PageHeader.tsx", + "count": 2 + }, { "path": "/public/app/angular/components/code_editor/code_editor.ts", "count": 1 @@ -7141,10 +10144,6 @@ "path": "/public/app/core/components/AccessControl/PermissionList.tsx", "count": 1 }, - { - "path": "/public/app/core/components/PageHeader/PageHeader.tsx", - "count": 2 - }, { "path": "/public/app/features/admin/UserLdapSyncInfo.tsx", "count": 3 @@ -7169,10 +10168,6 @@ "path": "/public/app/features/dashboard/components/SubMenu/AnnotationPicker.tsx", "count": 2 }, - { - "path": "/public/app/features/dashboard/components/SubMenu/SubMenuItems.tsx", - "count": 1 - }, { "path": "/public/app/features/datasources/components/BasicSettings.tsx", "count": 3 @@ -7205,14 +10200,6 @@ "path": "/public/app/features/query/components/QueryGroupOptions.tsx", "count": 17 }, - { - "path": "/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/RangeMatcherEditor.tsx", - "count": 3 - }, - { - "path": "/public/app/features/transformers/editors/OrganizeFieldsTransformerEditor.tsx", - "count": 5 - }, { "path": "/public/app/features/variables/adhoc/picker/AdHocFilter.tsx", "count": 1 @@ -7235,7 +10222,7 @@ }, { "path": "/public/app/features/variables/pickers/PickerRenderer.tsx", - "count": 5 + "count": 4 }, { "path": "/public/app/features/variables/pickers/shared/VariableInput.tsx", @@ -7325,10 +10312,6 @@ "path": "/public/app/plugins/datasource/influxdb/components/editor/query/influxql/visual/TagsSection.tsx", "count": 1 }, - { - "path": "/public/app/plugins/datasource/influxdb/components/editor/variable/VariableQueryEditor.tsx", - "count": 4 - }, { "path": "/public/app/plugins/datasource/loki/components/LokiQueryField.tsx", "count": 3 @@ -7345,6 +10328,10 @@ "path": "/public/app/plugins/datasource/opentsdb/components/AnnotationEditor.tsx", "count": 3 }, + { + "path": "/public/app/plugins/datasource/pmm-pt-summary-datasource/QueryEditor/QueryEditor.tsx", + "count": 1 + }, { "path": "/public/app/plugins/datasource/prometheus/configuration/AzureAuthSettings.tsx", "count": 1 diff --git a/.gitignore b/.gitignore index c3bfa3b407e63..3d32ea45a5f9c 100644 --- a/.gitignore +++ b/.gitignore @@ -220,3 +220,6 @@ public/app/plugins/**/dist/ # Locally enabling the Go race detector until we can globally do so .go-race-enabled-locally + +# NX +.nx/cache diff --git a/.prettierignore b/.prettierignore index 76bf2adf696e3..65d29238f07ea 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ +.nx .git .github .yarn diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.test.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.test.tsx index 4c1b08e7e71db..ed5183d5e4e35 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.test.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.test.tsx @@ -39,7 +39,7 @@ describe('AddRemoteInstanceService:: ', () => { }, add_node: { node_name: 'localhost', - node_type: 'REMOTE_NODE', + node_type: 'NODE_TYPE_REMOTE_NODE', }, listen_port: '80', metrics_mode: 1, @@ -86,7 +86,7 @@ describe('AddRemoteInstanceService:: ', () => { }, add_node: { node_name: 'localhost', - node_type: 'REMOTE_NODE', + node_type: 'NODE_TYPE_REMOTE_NODE', }, pmm_agent_id: 'pmm-server', port: '80', diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx index 01393ad13ddf3..01b755575a7fb 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.service.tsx @@ -24,69 +24,67 @@ import { HaProxyPayload, ProxySQLPayload, MongoDBPayload, + AddServicePayload, } from './AddRemoteInstance.types'; +const BASE_URL = '/services'; + class AddRemoteInstanceService { static async addMysql(body: MySQLPayload, token?: CancelToken) { - return apiManagement.post( - '/MySQL/Add', - body, + return apiManagement.post( + BASE_URL, + { mysql: body }, false, token ); } static async addPostgresql(body: PostgreSQLPayload, token?: CancelToken) { - return apiManagement.post( - '/PostgreSQL/Add', - body, + return apiManagement.post( + BASE_URL, + { postgresql: body }, false, token ); } static async addProxysql(body: ProxySQLPayload, token?: CancelToken) { - return apiManagement.post( - '/ProxySQL/Add', - body, + return apiManagement.post( + BASE_URL, + { proxysql: body }, false, token ); } static async addHaproxy(body: HaProxyPayload, token?: CancelToken) { - return apiManagement.post( - '/HAProxy/Add', - body, + return apiManagement.post( + BASE_URL, + { haproxy: body }, false, token ); } static async addMongodb(body: MongoDBPayload, token?: CancelToken) { - return apiManagement.post( - '/MongoDB/Add', - body, + return apiManagement.post( + BASE_URL, + { mongodb: body }, false, token ); } static async addRDS(body: RDSPayload, token?: CancelToken) { - return apiManagement.post('/RDS/Add', body, false, token); + return apiManagement.post(BASE_URL, { rds: body }, false, token); } static async addAzure(body: MSAzurePayload, token?: CancelToken) { - return apiManagement.post<{} | ErrorResponse, RemoteInstancePayload>( - '/azure/AzureDatabase/Add', - body, - false, - token - ); + return apiManagement.post<{} | ErrorResponse, RemoteInstancePayload>(`${BASE_URL}/azure`, body, false, token); } static async addExternal(body: ExternalPayload, token?: CancelToken) { - return apiManagement.post('/External/Add', body, false, token); + return apiManagement.post(BASE_URL, { external: body }, false, token); } static addRemote(type: InstanceAvailableType, data: RemoteInstancePayload, token?: CancelToken) { @@ -147,7 +145,7 @@ export const toPayload = (values: any, discoverName?: string, type?: InstanceAva if (!values.isAzure && data.add_node === undefined) { data.add_node = { node_name: data.service_name, - node_type: 'REMOTE_NODE', + node_type: 'NODE_TYPE_REMOTE_NODE', }; } @@ -214,7 +212,7 @@ export const toExternalServicePayload = (values: any): ExternalPayload => { if (data.add_node === undefined) { data.add_node = { node_name: data.service_name, - node_type: 'REMOTE_NODE', + node_type: 'NODE_TYPE_REMOTE_NODE', }; } diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.test.ts b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.test.ts index 269130137fa2b..0c9ff829f3c02 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.test.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.test.ts @@ -1,5 +1,7 @@ import { Databases } from 'app/percona/shared/core'; +import { DiscoverRDSEngine } from '../Discovery/Discovery.types'; + import { getInstanceData } from './AddRemoteInstance.tools'; describe('Get instance data:: ', () => { @@ -41,7 +43,7 @@ describe('Get instance data:: ', () => { }; const testInstance = { instanceType: 'PostgreSQL', - discoverName: 'DISCOVER_RDS_POSTGRESQL', + discoverName: DiscoverRDSEngine.POSTGRESQL, remoteInstanceCredentials: { isRDS: true, address: 'test address', diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.tsx index 9e31d6917d914..9d00a10c1a547 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tools.tsx @@ -3,6 +3,7 @@ import { Databases } from 'app/percona/shared/core'; import { logger } from 'app/percona/shared/helpers/logger'; import { InstanceAvailableType, INSTANCE_TYPES_LABELS } from '../../panel.types'; +import { DiscoverAzureDatabaseType, DiscoverRDSEngine } from '../Discovery/Discovery.types'; import { DEFAULT_PORTS } from './AddRemoteInstance.constants'; import { InstanceData } from './AddRemoteInstance.types'; @@ -31,19 +32,19 @@ const getAzureCredentials = (credentials: any, instanceType: string) => { switch (instanceType) { case Databases.postgresql: instance.instanceType = INSTANCE_TYPES_LABELS[Databases.postgresql]; - instance.discoverName = 'DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL'; + instance.discoverName = DiscoverAzureDatabaseType.POSTGRESQL; instance.remoteInstanceCredentials.port = instance.remoteInstanceCredentials.port || DEFAULT_PORTS[Databases.postgresql]; break; case Databases.mysql: instance.instanceType = INSTANCE_TYPES_LABELS[Databases.mysql]; - instance.discoverName = 'DISCOVER_AZURE_DATABASE_TYPE_MYSQL'; + instance.discoverName = DiscoverAzureDatabaseType.MYSQL; instance.remoteInstanceCredentials.port = instance.remoteInstanceCredentials.port || DEFAULT_PORTS[Databases.mysql]; break; case Databases.mariadb: instance.instanceType = INSTANCE_TYPES_LABELS[Databases.mariadb]; - instance.discoverName = 'DISCOVER_AZURE_DATABASE_TYPE_MARIADB'; + instance.discoverName = DiscoverAzureDatabaseType.MARIADB; instance.remoteInstanceCredentials.port = instance.remoteInstanceCredentials.port || DEFAULT_PORTS[Databases.mysql]; break; @@ -72,13 +73,13 @@ const getRDSCredentials = (credentials: any, instanceType: InstanceAvailableType switch (instanceType) { case Databases.postgresql: instance.instanceType = INSTANCE_TYPES_LABELS[Databases.postgresql]; - instance.discoverName = 'DISCOVER_RDS_POSTGRESQL'; + instance.discoverName = DiscoverRDSEngine.POSTGRESQL; instance.remoteInstanceCredentials.port = instance.remoteInstanceCredentials.port || DEFAULT_PORTS[Databases.postgresql]; break; case Databases.mysql: instance.instanceType = INSTANCE_TYPES_LABELS[Databases.mysql]; - instance.discoverName = 'DISCOVER_RDS_MYSQL'; + instance.discoverName = DiscoverRDSEngine.MYSQL; instance.remoteInstanceCredentials.port = instance.remoteInstanceCredentials.port || DEFAULT_PORTS[Databases.mysql]; break; diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts index 18d2efc111372..61785c8f1105b 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts @@ -221,6 +221,16 @@ export type RemoteInstancePayload = | MongoDBPayload | ExternalPayload; +export type AddServicePayload = { + mysql?: MySQLPayload; + mongodb?: MongoDBPayload; + postgresql?: PostgreSQLPayload; + proxysql?: ProxySQLPayload; + haproxy?: HaProxyPayload; + external?: ExternalPayload; + rds?: RDSPayload; +}; + export interface ErrorResponse { error: string; code: number; diff --git a/public/app/percona/add-instance/components/AzureDiscovery/Discovery.service.ts b/public/app/percona/add-instance/components/AzureDiscovery/Discovery.service.ts index aa23979eaa1ff..5cd22bef5632a 100644 --- a/public/app/percona/add-instance/components/AzureDiscovery/Discovery.service.ts +++ b/public/app/percona/add-instance/components/AzureDiscovery/Discovery.service.ts @@ -11,7 +11,7 @@ class DiscoveryService { token?: CancelToken ) { return apiManagement.post( - '/azure/AzureDatabase/Discover', + '/services:discoverAzure', { azure_client_id, azure_client_secret, diff --git a/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/InstancesColumns.tsx b/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/InstancesColumns.tsx index 219b5bb58fe46..5a126cda2bd16 100644 --- a/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/InstancesColumns.tsx +++ b/public/app/percona/add-instance/components/AzureDiscovery/components/Instances/InstancesColumns.tsx @@ -5,6 +5,7 @@ import { Button } from '@grafana/ui'; import { InstanceAvailableType, SelectInstance } from 'app/percona/add-instance/panel.types'; import { DATABASE_LABELS, Databases } from 'app/percona/shared/core'; +import { DiscoverAzureDatabaseType } from '../../../Discovery/Discovery.types'; import { Instance } from '../../Discovery.types'; import { AzureCredentialsForm } from '../Credentials/Credentials.types'; @@ -13,13 +14,13 @@ import { styles } from './Instances.styles'; const getEngineType = (type?: string) => { switch (type) { - case 'DISCOVER_AZURE_DATABASE_TYPE_MYSQL': + case DiscoverAzureDatabaseType.MYSQL: return DATABASE_LABELS[Databases.mysql]; - case 'DISCOVER_AZURE_DATABASE_TYPE_MARIADB': + case DiscoverAzureDatabaseType.MARIADB: return DATABASE_LABELS[Databases.mariadb]; - case 'DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL': + case DiscoverAzureDatabaseType.POSTGRESQL: return DATABASE_LABELS[Databases.postgresql]; - case 'DISCOVER_AZURE_DATABASE_INVALID': + case DiscoverAzureDatabaseType.INVALID: return 'Unknown type'; default: return 'Unknown type'; @@ -28,10 +29,10 @@ const getEngineType = (type?: string) => { const getDatabaseType = (type?: string): InstanceAvailableType => { switch (type) { - case 'DISCOVER_AZURE_DATABASE_TYPE_MYSQL': - case 'DISCOVER_AZURE_DATABASE_TYPE_MARIADB': + case DiscoverAzureDatabaseType.MYSQL: + case DiscoverAzureDatabaseType.MARIADB: return Databases.mysql; - case 'DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL': + case DiscoverAzureDatabaseType.POSTGRESQL: return Databases.postgresql; default: return ''; diff --git a/public/app/percona/add-instance/components/Discovery/Discovery.service.ts b/public/app/percona/add-instance/components/Discovery/Discovery.service.ts index 9d4bfc7f39d5b..4c107bd419d0b 100644 --- a/public/app/percona/add-instance/components/Discovery/Discovery.service.ts +++ b/public/app/percona/add-instance/components/Discovery/Discovery.service.ts @@ -18,7 +18,7 @@ class DiscoveryService { ) { return apiManagement .post( - '/RDS/Discover', + '/services:discoverRDS', { aws_access_key, aws_secret_key, diff --git a/public/app/percona/add-instance/components/Discovery/Discovery.types.ts b/public/app/percona/add-instance/components/Discovery/Discovery.types.ts index 774ab4575a0aa..65eb2c4d1d182 100644 --- a/public/app/percona/add-instance/components/Discovery/Discovery.types.ts +++ b/public/app/percona/add-instance/components/Discovery/Discovery.types.ts @@ -17,3 +17,16 @@ export interface Instance { export interface RDSInstances { rds_instances: Instance[]; } + +export enum DiscoverRDSEngine { + POSTGRESQL = 'DISCOVER_RDS_ENGINE_POSTGRESQL', + MYSQL = 'DISCOVER_RDS_ENGINE_MYSQL', + UNSPECIFIED = 'DISCOVER_RDS_ENGINE_UNSPECIFIED', +} + +export enum DiscoverAzureDatabaseType { + POSTGRESQL = 'DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL', + MYSQL = 'DISCOVER_AZURE_DATABASE_TYPE_MYSQL', + MARIADB = 'DISCOVER_AZURE_DATABASE_TYPE_MARIADB', + INVALID = 'DISCOVER_AZURE_DATABASE_INVALID', +} diff --git a/public/app/percona/add-instance/components/Discovery/components/Instances/InstancesColumns.tsx b/public/app/percona/add-instance/components/Discovery/components/Instances/InstancesColumns.tsx index dc83298d7108f..98fd2cba4bf83 100644 --- a/public/app/percona/add-instance/components/Discovery/components/Instances/InstancesColumns.tsx +++ b/public/app/percona/add-instance/components/Discovery/components/Instances/InstancesColumns.tsx @@ -5,18 +5,18 @@ import { Button } from '@grafana/ui'; import { SelectInstance } from 'app/percona/add-instance/panel.types'; import { DATABASE_LABELS, Databases } from 'app/percona/shared/core'; -import { Instance } from '../../Discovery.types'; +import { DiscoverRDSEngine, Instance } from '../../Discovery.types'; import { RDSCredentialsForm } from '../Credentials/Credentials.types'; import { styles } from './Instances.styles'; const getEngineType = (type?: string) => { switch (type) { - case 'DISCOVER_RDS_MYSQL': + case DiscoverRDSEngine.MYSQL: return DATABASE_LABELS[Databases.mysql]; - case 'DISCOVER_RDS_POSTGRESQL': + case DiscoverRDSEngine.POSTGRESQL: return DATABASE_LABELS[Databases.postgresql]; - case 'DISCOVER_RDS_INVALID': + case DiscoverRDSEngine.UNSPECIFIED: return 'Unknown type'; default: return 'Unknown type'; @@ -25,9 +25,9 @@ const getEngineType = (type?: string) => { const getDatabaseType = (type?: string) => { switch (type) { - case 'DISCOVER_RDS_MYSQL': + case DiscoverRDSEngine.MYSQL: return Databases.mysql; - case 'DISCOVER_RDS_POSTGRESQL': + case DiscoverRDSEngine.POSTGRESQL: return Databases.postgresql; default: return ''; diff --git a/public/app/percona/backup/Backup.service.ts b/public/app/percona/backup/Backup.service.ts index 0a43be8b930f6..8dcf7859860a9 100644 --- a/public/app/percona/backup/Backup.service.ts +++ b/public/app/percona/backup/Backup.service.ts @@ -7,7 +7,7 @@ import { getCronStringFromValues } from '../shared/helpers/cron/cron'; import { BackupMode, BackupType, DataModel, RetryMode } from './Backup.types'; import { AddBackupFormProps } from './components/AddBackupPage/AddBackupPage.types'; -const BASE_URL = '/v1/management/backup/Backups'; +const BASE_URL = '/v1/backups'; export const BackupService = { backup(values: AddBackupFormProps, token?: CancelToken) { @@ -98,7 +98,7 @@ export const BackupService = { token?: CancelToken ) { return api.post( - `${BASE_URL}/Start`, + `${BASE_URL}:start`, { service_id: serviceId, location_id: locationId, @@ -127,7 +127,7 @@ export const BackupService = { dataModel: DataModel, folder: string ) { - return api.post(`${BASE_URL}/Schedule`, { + return api.post(`${BASE_URL}:schedule`, { service_id: serviceId, location_id: locationId, cron_expression: cronExpression, @@ -152,7 +152,7 @@ export const BackupService = { retryTimes: number, retention: number ) { - return api.post(`${BASE_URL}/ChangeScheduled`, { + return api.put(`${BASE_URL}:changeScheduled`, { scheduled_backup_id: id, enabled, cron_expression: cronExpression, diff --git a/public/app/percona/backup/Backup.types.ts b/public/app/percona/backup/Backup.types.ts index 046b1ab52e6f3..b30b9d5943d7f 100644 --- a/public/app/percona/backup/Backup.types.ts +++ b/public/app/percona/backup/Backup.types.ts @@ -1,7 +1,7 @@ export enum DataModel { - DATA_MODEL_INVALID = 'DATA_MODEL_INVALID', - PHYSICAL = 'PHYSICAL', - LOGICAL = 'LOGICAL', + DATA_MODEL_INVALID = 'DATA_MODEL_UNSPECIFIED', + PHYSICAL = 'DATA_MODEL_PHYSICAL', + LOGICAL = 'DATA_MODEL_LOGICAL', } export enum BackupStatus { @@ -29,10 +29,10 @@ export enum RetryMode { } export enum BackupMode { - INVALID = 'BACKUP_MODE_INVALID', - SNAPSHOT = 'SNAPSHOT', - INCREMENTAL = 'INCREMENTAL', - PITR = 'PITR', + INVALID = 'BACKUP_MODE_UNSPECIFIED', + SNAPSHOT = 'BACKUP_MODE_SNAPSHOT', + INCREMENTAL = 'BACKUP_MODE_INCREMENTAL', + PITR = 'BACKUP_MODE_PITR', } export enum BackupType { diff --git a/public/app/percona/backup/components/BackupInventory/BackupInventory.service.ts b/public/app/percona/backup/components/BackupInventory/BackupInventory.service.ts index f2d323abdd3b9..75554bf597a6c 100644 --- a/public/app/percona/backup/components/BackupInventory/BackupInventory.service.ts +++ b/public/app/percona/backup/components/BackupInventory/BackupInventory.service.ts @@ -9,11 +9,11 @@ import { BackupLogResponse, BackupLogs, DataModel } from '../../Backup.types'; import { Backup, BackupResponse, Timeranges, TimerangesResponse } from './BackupInventory.types'; import { formatDate } from './BackupInventory.utils'; -const BASE_URL = '/v1/management/backup'; +const BASE_URL = '/v1/backups'; export const BackupInventoryService = { - async list(token?: CancelToken): Promise { - const { artifacts = [] } = await api.post(`${BASE_URL}/Artifacts/List`, {}, false, token); + async list(cancelToken?: CancelToken): Promise { + const { artifacts = [] } = await api.get(`${BASE_URL}/artifacts`, false, { cancelToken }); return artifacts.map( ({ artifact_id, @@ -45,9 +45,9 @@ export const BackupInventoryService = { ); }, async listPitrTimeranges(artifactId: string): Promise>> { - const { timeranges = [] } = await api.post(`${BASE_URL}/Artifacts/ListPITRTimeranges`, { - artifact_id: artifactId, - }); + const { timeranges = [] } = await api.get( + `${BASE_URL}/artifacts/${artifactId}/pitr-timeranges` + ); return timeranges.map((value) => ({ label: `${formatDate(value.start_timestamp)} / ${formatDate(value.end_timestamp)}`, value: { startTimestamp: value.start_timestamp, endTimestamp: value.end_timestamp }, @@ -55,7 +55,7 @@ export const BackupInventoryService = { }, async restore(serviceId: string, artifactId: string, pitrTimestamp?: string, token?: CancelToken) { return api.post( - `${BASE_URL}/Backups/Restore`, + `${BASE_URL}/restore:start`, { service_id: serviceId, artifact_id: artifactId, @@ -76,7 +76,7 @@ export const BackupInventoryService = { token?: CancelToken ) { return api.post( - `${BASE_URL}/Backups/Start`, + `${BASE_URL}:start`, { service_id: serviceId, location_id: locationId, @@ -91,18 +91,18 @@ export const BackupInventoryService = { ); }, async delete(artifactId: string, removeFiles: boolean) { - return api.post(`${BASE_URL}/Artifacts/Delete`, { artifact_id: artifactId, remove_files: removeFiles }); + return api.delete(`${BASE_URL}/artifacts/${artifactId}`, false, undefined, { + remove_files: removeFiles, + }); }, - async getLogs(artifactId: string, offset: number, limit: number, token?: CancelToken): Promise { - const { logs = [], end } = await api.post( - `${BASE_URL}/Backups/GetLogs`, - { - artifact_id: artifactId, - offset, - limit, - }, + async getLogs(artifactId: string, offset: number, limit: number, cancelToken?: CancelToken): Promise { + const { logs = [], end } = await api.get( + `${BASE_URL}/${artifactId}/logs`, false, - token + { + cancelToken, + params: { offset, limit }, + } ); return { @@ -111,11 +111,8 @@ export const BackupInventoryService = { }; }, async listCompatibleServices(artifactId: string): Promise { - const { mysql = [], mongodb = [] } = await api.post( - `${BASE_URL}/Backups/ListArtifactCompatibleServices`, - { - artifact_id: artifactId, - } + const { mysql = [], mongodb = [] } = await api.get( + `${BASE_URL}/${artifactId}/compatible-services` ); const result: DBServiceList = { diff --git a/public/app/percona/backup/components/BackupInventory/BackupInventory.tsx b/public/app/percona/backup/components/BackupInventory/BackupInventory.tsx index 05f00639c9c77..a30f612d96366 100644 --- a/public/app/percona/backup/components/BackupInventory/BackupInventory.tsx +++ b/public/app/percona/backup/components/BackupInventory/BackupInventory.tsx @@ -287,7 +287,7 @@ export const BackupInventory: FC = () => { const onBackupClick = (backup: BackupRow | null) => { if (backup) { - locationService.push(`/backup${backup.id}/edit`); + locationService.push(`/backup/${backup.id}/edit`); } else { locationService.push(NEW_BACKUP_URL); } diff --git a/public/app/percona/backup/components/RestoreHistory/RestoreHistory.service.ts b/public/app/percona/backup/components/RestoreHistory/RestoreHistory.service.ts index 609660a9cb599..000bca1d25a98 100644 --- a/public/app/percona/backup/components/RestoreHistory/RestoreHistory.service.ts +++ b/public/app/percona/backup/components/RestoreHistory/RestoreHistory.service.ts @@ -6,11 +6,11 @@ import { BackupLogResponse, BackupLogs } from '../../Backup.types'; import { Restore, RestoreResponse } from './RestoreHistory.types'; -const BASE_URL = '/v1/management/backup'; +const BASE_URL = '/v1/backups'; export const RestoreHistoryService = { - async list(token?: CancelToken): Promise { - const { items = [] } = await api.post(`${BASE_URL}/RestoreHistory/List`, {}, false, token); + async list(cancelToken?: CancelToken): Promise { + const { items = [] } = await api.get(`${BASE_URL}/restores`, false, { cancelToken }); return items.map( ({ restore_id, @@ -43,16 +43,11 @@ export const RestoreHistoryService = { }) ); }, - async getLogs(restoreId: string, offset: number, limit: number, token?: CancelToken): Promise { - const { logs = [], end } = await api.post( - `${BASE_URL}/Backups/GetLogs`, - { - restore_id: restoreId, - offset, - limit, - }, + async getLogs(restoreId: string, offset: number, limit: number, cancelToken?: CancelToken): Promise { + const { logs = [], end } = await api.get( + `${BASE_URL}/${restoreId}/logs`, false, - token + { cancelToken, params: { offset, limit } } ); return { diff --git a/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.service.ts b/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.service.ts index 2d5181027f828..524db1b65f409 100644 --- a/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.service.ts +++ b/public/app/percona/backup/components/ScheduledBackups/ScheduledBackups.service.ts @@ -6,16 +6,13 @@ import { BackupMode, DataModel } from '../../Backup.types'; import { ScheduledBackup, ScheduledBackupResponse } from './ScheduledBackups.types'; -const BASE_URL = '/v1/management/backup/Backups'; +const BASE_URL = '/v1/backups'; export const ScheduledBackupsService = { - async list(token?: CancelToken): Promise { - const { scheduled_backups = [] } = await api.post( - `${BASE_URL}/ListScheduled`, - {}, - false, - token - ); + async list(cancelToken?: CancelToken): Promise { + const { scheduled_backups = [] } = await api.get(`${BASE_URL}/scheduled`, false, { + cancelToken, + }); return scheduled_backups.map( ({ @@ -72,7 +69,7 @@ export const ScheduledBackupsService = { mode: BackupMode, dataModel: DataModel ) { - return api.post(`${BASE_URL}/Schedule`, { + return api.post(`${BASE_URL}:schedule`, { service_id: serviceId, location_id: locationId, cron_expression: cronExpression, @@ -87,9 +84,9 @@ export const ScheduledBackupsService = { }); }, async toggle(id: string, enabled: boolean) { - return api.post(`${BASE_URL}/ChangeScheduled`, { scheduled_backup_id: id, enabled }); + return api.put(`${BASE_URL}:changeScheduled`, { scheduled_backup_id: id, enabled }); }, async delete(id: string) { - return api.post(`${BASE_URL}/RemoveScheduled`, { scheduled_backup_id: id }); + return api.delete(`${BASE_URL}/scheduled/${id}`); }, }; diff --git a/public/app/percona/backup/components/StorageLocations/StorageLocations.service.ts b/public/app/percona/backup/components/StorageLocations/StorageLocations.service.ts index bc434cb143758..5afb9d3f46fb9 100644 --- a/public/app/percona/backup/components/StorageLocations/StorageLocations.service.ts +++ b/public/app/percona/backup/components/StorageLocations/StorageLocations.service.ts @@ -4,22 +4,22 @@ import { api } from 'app/percona/shared/helpers/api'; import { StorageLocationListReponse, StorageLocationReponse } from './StorageLocations.types'; -const BASE_URL = '/v1/management/backup/Locations'; +const BASE_URL = '/v1/backups/locations'; export const StorageLocationsService = { async list(token?: CancelToken): Promise { - return api.post(`${BASE_URL}/List`, {}); + return api.get(BASE_URL, false, { cancelToken: token }); }, async add(payload: Partial, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Add`, payload, false, token); + return api.post(BASE_URL, payload, false, token); }, async update(payload: Partial, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Change`, payload, false, token); + return api.put(`${BASE_URL}/${payload.location_id}`, payload, false, token); }, async testLocation(payload: Partial, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/TestConfig`, payload, false, token); + return api.post(`${BASE_URL}:testConfig`, payload, false, token); }, async delete(locationID: string, force: boolean, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Remove`, { location_id: locationID, force }); + return api.delete(`${BASE_URL}/${locationID}`, false, token, { force }); }, }; diff --git a/public/app/percona/check/Check.service.ts b/public/app/percona/check/Check.service.ts index d34e28ed9a874..a7b7b7441881f 100644 --- a/public/app/percona/check/Check.service.ts +++ b/public/app/percona/check/Check.service.ts @@ -24,18 +24,19 @@ const order = { [Severity.SEVERITY_INFO]: 7, [Severity.SEVERITY_DEBUG]: 8, }; -const BASE_URL = '/v1/management/SecurityChecks'; +const BASE_URL = '/v1/advisors'; /** * A service-like object to store the API methods */ export const CheckService = { async getAllFailedChecks(token?: CancelToken, disableNotifications?: boolean): Promise { - const { result = [] } = await api.post( - `${BASE_URL}/ListFailedServices`, - {}, + const { result = [] } = await api.get( + `${BASE_URL}/failedServices`, disableNotifications, - token + { + cancelToken: token, + } ); return result @@ -76,13 +77,19 @@ export const CheckService = { ): Promise> { const { results = [], - page_totals: { total_items: totalItems = 0, total_pages: totalPages = 1 }, - } = await api.post( - `${BASE_URL}/FailedChecks`, - { service_id: serviceId, page_params: { page_size: pageSize, index: pageIndex } }, - false, - token - ); + total_items: totalItems = 0, + total_pages: totalPages = 1, + } = await api.get< + CheckResultForServicePayload, + { + service_id: string; + page_size: number; + page_index: number; + } + >(`${BASE_URL}/checks/failed`, false, { + cancelToken: token, + params: { service_id: serviceId, page_size: pageSize, page_index: pageIndex }, + }); return { totals: { @@ -118,7 +125,7 @@ export const CheckService = { }, runDbChecks(checkNames: string[], token?: CancelToken): Promise { return api.post<{}, {}>( - '/v1/management/SecurityChecks/Start', + `${BASE_URL}/checks:start`, { names: checkNames, }, @@ -128,7 +135,7 @@ export const CheckService = { }, runIndividualDbCheck(checkName: string, token?: CancelToken): Promise { return api.post<{}, {}>( - '/v1/management/SecurityChecks/Start', + `${BASE_URL}/checks:start`, { names: [checkName], }, @@ -137,6 +144,6 @@ export const CheckService = { ); }, changeCheck(body: ChangeCheckBody, token?: CancelToken): Promise { - return api.post<{}, ChangeCheckBody>('/v1/management/SecurityChecks/Change', body, false, token); + return api.post<{}, ChangeCheckBody>(`${BASE_URL}/checks:batchChange`, body, false, token); }, }; diff --git a/public/app/percona/check/components/AllChecksTab/AllChecksTab.test.tsx b/public/app/percona/check/components/AllChecksTab/AllChecksTab.test.tsx index a215ae350658d..75d590dde4525 100644 --- a/public/app/percona/check/components/AllChecksTab/AllChecksTab.test.tsx +++ b/public/app/percona/check/components/AllChecksTab/AllChecksTab.test.tsx @@ -69,7 +69,7 @@ describe('AllChecksTab::', () => { store={configureStore({ percona: { user: { isAuthorized: true, isPlatformUser: false }, - settings: { result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { result: { advisorEnabled: true, isConnectedToPortal: false } }, advisors: { loading: false, result: advisorsArray, @@ -193,7 +193,7 @@ const AllChecksTabTesting = () => { store={configureStore({ percona: { user: { isAuthorized: true, isPlatformUser: false }, - settings: { result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { result: { advisorEnabled: true, isConnectedToPortal: false } }, advisors: { loading: false, result: advisorsArray, diff --git a/public/app/percona/check/components/AllChecksTab/AllChecksTab.tsx b/public/app/percona/check/components/AllChecksTab/AllChecksTab.tsx index bf8edb3195bb2..7a9dac1661451 100644 --- a/public/app/percona/check/components/AllChecksTab/AllChecksTab.tsx +++ b/public/app/percona/check/components/AllChecksTab/AllChecksTab.tsx @@ -175,7 +175,7 @@ export const AllChecksTab: FC> ); // eslint-disable-next-line react-hooks/exhaustive-deps - const featureSelector = useCallback(getPerconaSettingFlag('sttEnabled'), []); + const featureSelector = useCallback(getPerconaSettingFlag('advisorEnabled'), []); const isFilterSet = (queryParams: UrlQueryMap, advisorName: string) => { return Object.keys(queryParams).includes(advisorName); diff --git a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.test.tsx b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.test.tsx index 361930d03df04..dfcb5737c1e38 100644 --- a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.test.tsx +++ b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.test.tsx @@ -31,7 +31,7 @@ describe('FailedChecksTab::', () => { store={configureStore({ percona: { user: { isAuthorized: true, isPlatformUser: false }, - settings: { result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > @@ -54,7 +54,7 @@ describe('FailedChecksTab::', () => { store={configureStore({ percona: { user: { isAuthorized: true, isPlatformUser: false }, - settings: { result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > @@ -72,7 +72,7 @@ describe('FailedChecksTab::', () => { store={configureStore({ percona: { user: { isAuthorized: true, isPlatformUser: false }, - settings: { result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > diff --git a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.tsx b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.tsx index 981d083ac73eb..83d78ebb27332 100644 --- a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.tsx +++ b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.tsx @@ -20,7 +20,6 @@ import { ChecksInfoAlert } from '../CheckInfoAlert/CheckInfoAlert'; import { GET_ACTIVE_ALERTS_CANCEL_TOKEN } from './FailedChecksTab.constants'; import { Messages } from './FailedChecksTab.messages'; import { getStyles } from './FailedChecksTab.styles'; -import { stripServiceId } from './FailedChecksTab.utils'; import { Failures } from './Failures/Failures'; export const FailedChecksTab: FC = () => { @@ -64,7 +63,7 @@ export const FailedChecksTab: FC = () => { const getRowProps = (row: Row): ExtendedTableRowProps => ({ key: row.original.serviceId, className: styles.row, - onClick: () => locationService.push(`/advisors/insights/${stripServiceId(row.original.serviceId)}`), + onClick: () => locationService.push(`/advisors/insights/${row.original.serviceId}`), }); const getCellProps = (cellInfo: Cell): ExtendedTableCellProps => ({ @@ -78,7 +77,7 @@ export const FailedChecksTab: FC = () => { }, []); // eslint-disable-next-line react-hooks/exhaustive-deps - const featureSelector = useCallback(getPerconaSettingFlag('sttEnabled'), []); + const featureSelector = useCallback(getPerconaSettingFlag('advisorEnabled'), []); return ( diff --git a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.test.ts b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.test.ts deleted file mode 100644 index c5645425f7ed2..0000000000000 --- a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { formatServiceId, stripServiceId } from './FailedChecksTab.utils'; - -jest.mock('app/percona/shared/helpers/logger', () => { - const originalModule = jest.requireActual('app/percona/shared/helpers/logger'); - return { - ...originalModule, - logger: { - error: jest.fn(), - }, - }; -}); - -describe('FailedChecksTab::utils', () => { - afterEach(() => { - jest.resetAllMocks(); - }); - - test('stripServiceId', () => { - expect(stripServiceId('')).toBe(''); - expect(stripServiceId('service_id/service1')).toBe(''); - expect(stripServiceId('/service_idservice1')).toBe(''); - expect(stripServiceId('/service_id/')).toBe(''); - expect(stripServiceId('/service_id/service1')).toBe('service1'); - }); - - test('formatServiceId', () => { - expect(formatServiceId('')).toBe('/service_id/'); - expect(formatServiceId('service1')).toBe('/service_id/service1'); - }); -}); diff --git a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.ts b/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.ts deleted file mode 100644 index 7be9b72492048..0000000000000 --- a/public/app/percona/check/components/FailedChecksTab/FailedChecksTab.utils.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const stripServiceId = (serviceId: string) => { - const regex = /\/service_id\/(.*)/gm; - const match = regex.exec(serviceId); - - if (match && match.length > 0) { - return match[1] || ''; - } - - return ''; -}; - -export const formatServiceId = (serviceId: string) => `/service_id/${serviceId}`; diff --git a/public/app/percona/check/components/ServiceChecks/ServiceChecks.tsx b/public/app/percona/check/components/ServiceChecks/ServiceChecks.tsx index aeed4a959533b..ecee15c22b168 100644 --- a/public/app/percona/check/components/ServiceChecks/ServiceChecks.tsx +++ b/public/app/percona/check/components/ServiceChecks/ServiceChecks.tsx @@ -17,14 +17,13 @@ import { logger } from 'app/percona/shared/helpers/logger'; import { CheckService } from '../../Check.service'; import { ServiceFailedCheck } from '../../types'; -import { formatServiceId } from '../FailedChecksTab/FailedChecksTab.utils'; import { SERVICE_CHECKS_CANCEL_TOKEN, SERVICE_CHECKS_TABLE_ID } from './ServiceChecks.constants'; import { Messages } from './ServiceChecks.messages'; import { getStyles } from './ServiceChecks.styles'; export const ServiceChecks: FC> = ({ match }) => { - const serviceId = formatServiceId(match.params.service); + const serviceId = match.params.service; const [pageSize, setPageSize] = useStoredTablePageSize(SERVICE_CHECKS_TABLE_ID); const [pageIndex, setPageindex] = useState(0); const [totalItems, setTotalItems] = useState(0); diff --git a/public/app/percona/edit-instance/EditInstance.tsx b/public/app/percona/edit-instance/EditInstance.tsx index ec2e91abcc514..eb05fc4edc019 100644 --- a/public/app/percona/edit-instance/EditInstance.tsx +++ b/public/app/percona/edit-instance/EditInstance.tsx @@ -40,10 +40,7 @@ const EditInstancePage: FC = () => { const fetchService = async (serviceId: string) => { setIsLoading(true); - const result = await InventoryService.getService( - '/service_id/' + serviceId, - generateToken(FETCH_SERVICE_CANCEL_TOKEN) - ); + const result = await InventoryService.getService(serviceId, generateToken(FETCH_SERVICE_CANCEL_TOKEN)); const service = getService(result); setService(service); diff --git a/public/app/percona/entitlements/Entitlements.service.ts b/public/app/percona/entitlements/Entitlements.service.ts index 65c72c336d225..b4b7b04c1034a 100644 --- a/public/app/percona/entitlements/Entitlements.service.ts +++ b/public/app/percona/entitlements/Entitlements.service.ts @@ -4,15 +4,14 @@ import { api } from 'app/percona/shared/helpers/api'; import { EntitlementsResponse, Entitlement } from './Entitlements.types'; -const BASE_URL = '/v1/Platform'; +const BASE_URL = '/v1/platform'; const EntitlementsService = { async list(token?: CancelToken): Promise { - const { entitlements = [] } = await api.post( - `${BASE_URL}/SearchOrganizationEntitlements`, - {}, + const { entitlements = [] } = await api.get( + `${BASE_URL}/organization/entitlements`, false, - token + { cancelToken: token } ); return entitlements.map( ({ diff --git a/public/app/percona/environment-overview/components/ContactWidget/Contact.service.ts b/public/app/percona/environment-overview/components/ContactWidget/Contact.service.ts index ca5a0632577f2..e3c4e6eb21b36 100644 --- a/public/app/percona/environment-overview/components/ContactWidget/Contact.service.ts +++ b/public/app/percona/environment-overview/components/ContactWidget/Contact.service.ts @@ -4,14 +4,14 @@ import { api } from 'app/percona/shared/helpers/api'; import { CustomerSuccess, CustomerSuccessResponse } from './Contact.types'; -const BASE_URL = '/v1/Platform'; +const BASE_URL = '/v1/platform'; export const ContactService = { async getContact(token?: CancelToken): Promise { const { customer_success: { name, email }, new_ticket_url, - } = await api.post(`${BASE_URL}/GetContactInformation`, {}, false, token); + } = await api.get(`${BASE_URL}/contact`, false, { cancelToken: token }); return { name, email, newTicketUrl: new_ticket_url }; }, }; diff --git a/public/app/percona/environment-overview/components/ContactWidget/Contact.test.tsx b/public/app/percona/environment-overview/components/ContactWidget/Contact.test.tsx index b035ab66fcb71..6f32c99bef55f 100644 --- a/public/app/percona/environment-overview/components/ContactWidget/Contact.test.tsx +++ b/public/app/percona/environment-overview/components/ContactWidget/Contact.test.tsx @@ -27,7 +27,7 @@ const MockWrapper: FC = ({ children }) => { describe('Contact widget', () => { it('render contact when data were fetched successfully', async () => { - jest.spyOn(ContactService, 'getContact').mockImplementationOnce((undefined) => { + jest.spyOn(ContactService, 'getContact').mockImplementationOnce(() => { return Promise.resolve({ name: 'Test name', email: 'test@test.com', diff --git a/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.service.ts b/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.service.ts index 4b13fa4f4510e..1e2b6ce870ade 100644 --- a/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.service.ts +++ b/public/app/percona/integrated-alerting/components/AlertRuleTemplate/AlertRuleTemplate.service.ts @@ -11,39 +11,44 @@ import { TemplatesListAPI, } from './AlertRuleTemplate.types'; -const BASE_URL = `/v1/management/alerting/Templates`; +const BASE_URL = `/v1/alerting/templates`; export const AlertRuleTemplateService = { async upload(payload: UploadAlertRuleTemplatePayload, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Create`, payload, false, token); + return api.post(BASE_URL, payload, false, token); }, async list(payload: AlertRuleTemplateGetPayload, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/List`, { ...payload, reload: true }, true, token).then( - ({ totals, templates = [] }): TemplatesList => ({ - totals, - templates: templates.map((template) => ({ - ...template, - params: template.params?.map((param) => ({ - ...param, - float: param.float - ? { - hasMin: param.float.has_min, - hasDefault: param.float.has_default, - hasMax: param.float.has_max, - min: param.float.min, - max: param.float.max, - default: param.float.default, - } - : undefined, - })), - })), + return api + .get(BASE_URL, false, { + cancelToken: token, + params: { ...payload }, }) - ); + .then( + ({ totals, templates = [] }): TemplatesList => ({ + totals, + templates: templates.map((template) => ({ + ...template, + params: template.params?.map((param) => ({ + ...param, + float: param.float + ? { + hasMin: param.float.has_min, + hasDefault: param.float.has_default, + hasMax: param.float.has_max, + min: param.float.min, + max: param.float.max, + default: param.float.default, + } + : undefined, + })), + })), + }) + ); }, - async update(payload: UpdateAlertRuleTemplatePayload, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Update`, payload, false, token); + async update(payload: UpdateAlertRuleTemplatePayload): Promise { + return api.put(`${BASE_URL}/${payload.name}`, { yaml: payload.yaml }); }, async delete(payload: DeleteAlertRuleTemplatePayload, token?: CancelToken): Promise { - return api.post(`${BASE_URL}/Delete`, payload, false, token); + return api.delete(`${BASE_URL}/${payload.name}`, false, token); }, }; diff --git a/public/app/percona/inventory/Inventory.service.ts b/public/app/percona/inventory/Inventory.service.ts index eda4869e939db..22f0a061ed169 100644 --- a/public/app/percona/inventory/Inventory.service.ts +++ b/public/app/percona/inventory/Inventory.service.ts @@ -9,7 +9,6 @@ import { CompatibleServiceListPayload, DBServiceList, NodeListDBPayload, - RemoveAgentBody, RemoveNodeBody, ServiceAgentListPayload, } from './Inventory.types'; @@ -18,24 +17,23 @@ const BASE_URL = `/v1/inventory`; export const InventoryService = { getAgents(serviceId: string | undefined, nodeId: string | undefined, token?: CancelToken) { - return api.post( - '/v1/management/Agent/List', - { service_id: serviceId, node_id: nodeId }, - false, - token - ); + return api.get('/v1/management/agents', false, { + cancelToken: token, + params: { + service_id: serviceId, + node_id: nodeId, + }, + }); }, - removeAgent(body: RemoveAgentBody, token?: CancelToken) { - return api.post(`${BASE_URL}/Agents/Remove`, body, false, token); + removeAgent(agentId: string, forceMode = false, token?: CancelToken) { + // todo: address forceMode + return api.delete(`${BASE_URL}/agents/${agentId}`, false, token, { force: forceMode }); }, // TODO unify typings and this function with getServices() async getDbServices(token?: CancelToken): Promise { - const response = await api.post( - `${BASE_URL}/Services/List`, - {}, - false, - token - ); + const response = await api.get(`${BASE_URL}/services`, false, { + cancelToken: token, + }); const result: DBServiceList = {}; // eslint-disable-next-line @typescript-eslint/consistent-type-assertions @@ -53,13 +51,13 @@ export const InventoryService = { return result; }, - getNodes(body = {}, token?: CancelToken) { - return api.post(`/v1/management/Node/List`, body, false, token); + getNodes(token?: CancelToken) { + return api.get(`/v1/management/nodes`, false, { cancelToken: token }); }, removeNode(body: RemoveNodeBody, token?: CancelToken) { - return api.post(`/v1/management/Node/Unregister`, body, false, token); + return api.delete(`${BASE_URL}/nodes/${body.node_id}`, false, token, { force: true }); }, - getService(serviceId: string, token?: CancelToken) { - return api.post(`${BASE_URL}/Services/Get`, { service_id: serviceId }, false, token); + getService(serviceId: string, cancelToken?: CancelToken) { + return api.get(`${BASE_URL}/services/${serviceId}`, false, { cancelToken }); }, }; diff --git a/public/app/percona/inventory/Inventory.types.ts b/public/app/percona/inventory/Inventory.types.ts index a3acfb9408eb8..66504b6052797 100644 --- a/public/app/percona/inventory/Inventory.types.ts +++ b/public/app/percona/inventory/Inventory.types.ts @@ -51,12 +51,12 @@ export enum AgentType { } export enum ServiceAgentStatus { - STARTING = 'STARTING', - RUNNING = 'RUNNING', - WAITING = 'WAITING', - STOPPING = 'STOPPING', - DONE = 'DONE', - UNKNOWN = 'UNKNOWN', + STARTING = 'AGENT_STATUS_STARTING', + RUNNING = 'AGENT_STATUS_RUNNING', + WAITING = 'AGENT_STATUS_WAITING', + STOPPING = 'AGENT_STATUS_STOPPING', + DONE = 'AGENT_STATUS_DONE', + UNKNOWN = 'AGENT_STATUS_UNKNOWN', } export enum MonitoringStatus { @@ -92,8 +92,7 @@ export interface Agent { } export interface RemoveAgentBody { - agent_id: string; - force: boolean; + id: string; } export interface RemoveNodeBody { node_id: string; diff --git a/public/app/percona/inventory/Tabs/Agents.tsx b/public/app/percona/inventory/Tabs/Agents.tsx index 9e49de0dd20d0..ae4a20a15b907 100644 --- a/public/app/percona/inventory/Tabs/Agents.tsx +++ b/public/app/percona/inventory/Tabs/Agents.tsx @@ -7,7 +7,6 @@ import { AppEvents } from '@grafana/data'; import { Badge, Button, HorizontalGroup, Icon, Link, Modal, TagList, useStyles2 } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; -import { formatServiceId } from 'app/percona/check/components/FailedChecksTab/FailedChecksTab.utils'; import { Agent, FlattenAgent, ServiceAgentStatus } from 'app/percona/inventory/Inventory.types'; import { SelectedTableRows } from 'app/percona/shared/components/Elements/AnotherTableInstance/Table.types'; import { CheckboxField } from 'app/percona/shared/components/Elements/Checkbox'; @@ -21,7 +20,6 @@ import { fetchNodesAction } from 'app/percona/shared/core/reducers/nodes/nodes'; import { fetchServicesAction } from 'app/percona/shared/core/reducers/services'; import { getNodes, getServices } from 'app/percona/shared/core/selectors'; import { isApiCancelError } from 'app/percona/shared/helpers/api'; -import { capitalizeText } from 'app/percona/shared/helpers/capitalizeText'; import { getExpandAndActionsCol } from 'app/percona/shared/helpers/getExpandAndActionsCol'; import { logger } from 'app/percona/shared/helpers/logger'; import { filterFulfilled, processPromiseResults } from 'app/percona/shared/helpers/promises'; @@ -33,8 +31,8 @@ import { GET_AGENTS_CANCEL_TOKEN, GET_NODES_CANCEL_TOKEN, GET_SERVICES_CANCEL_TO import { Messages } from '../Inventory.messages'; import { InventoryService } from '../Inventory.service'; -import { beautifyAgentType, getAgentStatusColor, toAgentModel } from './Agents.utils'; -import { formatNodeId } from './Nodes.utils'; +import { beautifyAgentType, getAgentStatusColor, getAgentStatusText, toAgentModel } from './Agents.utils'; +import { getTagsFromLabels } from './Services.utils'; import { getStyles } from './Tabs.styles'; export const Agents: FC> = ({ match }) => { @@ -42,19 +40,18 @@ export const Agents: FC([]); const [selected, setSelectedRows] = useState([]); - const serviceId = match.params.serviceId ? formatServiceId(match.params.serviceId) : undefined; const nodeId = match.params.nodeId ? match.params.nodeId === 'pmm-server' ? 'pmm-server' - : formatNodeId(match.params.nodeId) + : match.params.nodeId : undefined; - const navModel = usePerconaNavModel(serviceId ? 'inventory-services' : 'inventory-nodes'); + const navModel = usePerconaNavModel(match.params.serviceId ? 'inventory-services' : 'inventory-nodes'); const [generateToken] = useCancelToken(); const { isLoading: servicesLoading, services } = useSelector(getServices); const { isLoading: nodesLoading, nodes } = useSelector(getNodes); const styles = useStyles2(getStyles); - const service = services.find((s) => s.params.serviceId === serviceId); + const service = services.find((s) => s.params.serviceId === match.params.serviceId); const node = nodes.find((s) => s.nodeId === nodeId); const flattenAgents = useMemo(() => data.map((value) => ({ type: value.type, ...value.params })), [data]); @@ -64,7 +61,7 @@ export const Agents: FC ( - + ), type: FilterFieldTypes.DROPDOWN, options: [ @@ -114,7 +111,7 @@ export const Agents: FC {!!labelKeys.length && ( - `${label}=${labels![label]}`)} - /> + )} @@ -154,23 +147,21 @@ export const Agents: FC Messages.agents.deleteConfirmation(selected.length), [selected]); useEffect(() => { - if (!service && serviceId) { + if (!service && match.params.serviceId) { dispatch(fetchServicesAction({ token: generateToken(GET_SERVICES_CANCEL_TOKEN) })); } else if (!node && nodeId) { dispatch(fetchNodesAction({ token: generateToken(GET_NODES_CANCEL_TOKEN) })); } else { loadData(); } - }, [generateToken, loadData, service, nodeId, serviceId, node]); + }, [generateToken, loadData, service, nodeId, match.params.serviceId, node]); const removeAgents = useCallback( async (agents: Array>, forceMode: boolean) => { try { setLoading(true); // eslint-disable-next-line max-len - const requests = agents.map((agent) => - InventoryService.removeAgent({ agent_id: agent.original.agentId, force: forceMode }) - ); + const requests = agents.map((agent) => InventoryService.removeAgent(agent.original.agentId, forceMode)); const results = await processPromiseResults(requests); const successfullyDeleted = results.filter(filterFulfilled).length; diff --git a/public/app/percona/inventory/Tabs/Agents.utils.ts b/public/app/percona/inventory/Tabs/Agents.utils.ts index b6fecead62b1c..d9733851b4f99 100644 --- a/public/app/percona/inventory/Tabs/Agents.utils.ts +++ b/public/app/percona/inventory/Tabs/Agents.utils.ts @@ -1,4 +1,5 @@ import { BadgeColor } from '@grafana/ui'; +import { capitalizeText } from 'app/percona/shared/helpers/capitalizeText'; import { payloadToCamelCase } from 'app/percona/shared/helpers/payloadToCamelCase'; import { Agent, AgentType, ServiceAgentPayload, ServiceAgentStatus } from '../Inventory.types'; @@ -13,7 +14,7 @@ export const toAgentModel = (agentList: ServiceAgentPayload[]): Agent[] => { const extraLabels: Record = {}; let agentStatus = status || ServiceAgentStatus.UNKNOWN; - if (isConnected !== undefined) { + if (!status) { agentStatus = isConnected ? ServiceAgentStatus.RUNNING : ServiceAgentStatus.UNKNOWN; } @@ -22,7 +23,7 @@ export const toAgentModel = (agentList: ServiceAgentPayload[]): Agent[] => { .forEach(([key, value]: [string, string | object | []]) => { if (Array.isArray(value) || typeof value !== 'object') { extraLabels[key] = value.toString(); - } else { + } else if (!!value) { Object.entries(value).forEach(([nestedKey, nestedValue]: [string, string]) => { extraLabels[nestedKey] = nestedValue.toString(); }); @@ -49,6 +50,8 @@ export const toAgentModel = (agentList: ServiceAgentPayload[]): Agent[] => { return result; }; +export const getAgentStatusText = (status: ServiceAgentStatus): string => capitalizeText(status.split('_')[2] || ''); + export const beautifyAgentType = (type: AgentType): string => type.replace(/^\w/, (c) => c.toUpperCase()).replace(/[_-]/g, ' '); diff --git a/public/app/percona/inventory/Tabs/Nodes.tsx b/public/app/percona/inventory/Tabs/Nodes.tsx index 8ae589e364239..b35e5f476c362 100644 --- a/public/app/percona/inventory/Tabs/Nodes.tsx +++ b/public/app/percona/inventory/Tabs/Nodes.tsx @@ -18,7 +18,6 @@ import { RemoveNodeParams } from 'app/percona/shared/core/reducers/nodes'; import { fetchNodesAction, removeNodesAction } from 'app/percona/shared/core/reducers/nodes/nodes'; import { getNodes } from 'app/percona/shared/core/selectors'; import { isApiCancelError } from 'app/percona/shared/helpers/api'; -import { capitalizeText } from 'app/percona/shared/helpers/capitalizeText'; import { getExpandAndActionsCol } from 'app/percona/shared/helpers/getExpandAndActionsCol'; import { logger } from 'app/percona/shared/helpers/logger'; import { NodeType } from 'app/percona/shared/services/nodes/Nodes.types'; @@ -33,8 +32,13 @@ import { FlattenNode, MonitoringStatus, Node } from '../Inventory.types'; import { StatusBadge } from '../components/StatusBadge/StatusBadge'; import { StatusLink } from '../components/StatusLink/StatusLink'; -import { getServiceLink, stripNodeId } from './Nodes.utils'; -import { getBadgeColorForServiceStatus, getBadgeIconForServiceStatus } from './Services.utils'; +import { getServiceLink } from './Nodes.utils'; +import { + getBadgeColorForServiceStatus, + getBadgeIconForServiceStatus, + getBadgeTextForServiceStatus, + getTagsFromLabels, +} from './Services.utils'; import { getStyles } from './Tabs.styles'; export const NodesTab = () => { @@ -84,7 +88,7 @@ export const NodesTab = () => { accessor: 'status', Cell: ({ value }: { value: ServiceStatus }) => ( @@ -129,7 +133,7 @@ export const NodesTab = () => { Cell: ({ value, row }) => ( ), @@ -199,7 +203,7 @@ export const NodesTab = () => { @@ -220,11 +224,7 @@ export const NodesTab = () => { )} {!!labelKeys.length && ( - `${label}=${labels![label]}`)} - /> + )} {!!extraPropertiesKeys.length && ( @@ -232,7 +232,7 @@ export const NodesTab = () => { `${prop}=${extraProperties![prop]}`)} + tags={getTagsFromLabels(extraPropertiesKeys, extraProperties)} /> )} diff --git a/public/app/percona/inventory/Tabs/Nodes.utils.ts b/public/app/percona/inventory/Tabs/Nodes.utils.ts index b7fc329abefb0..f5aa1ef07a668 100644 --- a/public/app/percona/inventory/Tabs/Nodes.utils.ts +++ b/public/app/percona/inventory/Tabs/Nodes.utils.ts @@ -1,19 +1,3 @@ -import { stripServiceId } from './Services.utils'; - -export const stripNodeId = (nodeId: string) => { - const regex = /\/node_id\/(.*)/gm; - const match = regex.exec(nodeId); - - if (match && match.length > 0) { - return match[1] || ''; - } - - return ''; -}; - -export const formatNodeId = (nodeId: string) => `/node_id/${nodeId}`; - export const getServiceLink = (serviceId: string) => { - const strippedId = stripServiceId(serviceId); - return `/inventory/services?search-text-input=${strippedId}&search-select=serviceId`; + return `/inventory/services?search-text-input=${serviceId}&search-select=serviceId`; }; diff --git a/public/app/percona/inventory/Tabs/Services.utils.ts b/public/app/percona/inventory/Tabs/Services.utils.ts index f0dac00394ec4..959c1bf5881ca 100644 --- a/public/app/percona/inventory/Tabs/Services.utils.ts +++ b/public/app/percona/inventory/Tabs/Services.utils.ts @@ -4,8 +4,6 @@ import { DbAgent, ServiceStatus } from 'app/percona/shared/services/services/Ser import { FlattenService, MonitoringStatus, ServiceAgentStatus } from '../Inventory.types'; -import { stripNodeId } from './Nodes.utils'; - const SERVICE_STATUS_TO_BADGE_COLOR: Record = { [ServiceStatus.UP]: 'green', [ServiceStatus.DOWN]: 'red', @@ -39,7 +37,7 @@ export const getBadgeTextForServiceStatus = (status: ServiceStatus): string => { return 'N/A'; } - return capitalizeText(status); + return capitalizeText(status.split('_')[1] || ''); }; export const getAgentsMonitoringStatus = (agents: DbAgent[]) => { @@ -50,18 +48,10 @@ export const getAgentsMonitoringStatus = (agents: DbAgent[]) => { return allAgentsOk ? MonitoringStatus.OK : MonitoringStatus.FAILED; }; -export const stripServiceId = (serviceId: string) => { - const regex = /\/service_id\/(.*)/gm; - const match = regex.exec(serviceId); - - if (match && match.length > 0) { - return match[1] || ''; - } - - return ''; -}; - export const getNodeLink = (service: FlattenService) => { - const nodeId = service.nodeId === 'pmm-server' ? 'pmm-server' : stripNodeId(service.nodeId); + const nodeId = service.nodeId === 'pmm-server' ? 'pmm-server' : service.nodeId; return `/inventory/nodes?search-text-input=${nodeId}&search-select=nodeId`; }; + +export const getTagsFromLabels = (labelKeys: string[], labels: Record) => + labelKeys.filter((label) => labels[label] !== '').map((label) => `${label}=${labels![label]}`); diff --git a/public/app/percona/inventory/Tabs/Services/ServicesTable.tsx b/public/app/percona/inventory/Tabs/Services/ServicesTable.tsx index 6684d2adb6039..7f28e278e66b8 100644 --- a/public/app/percona/inventory/Tabs/Services/ServicesTable.tsx +++ b/public/app/percona/inventory/Tabs/Services/ServicesTable.tsx @@ -21,7 +21,7 @@ import { getBadgeTextForServiceStatus, getBadgeIconForServiceStatus, getNodeLink, - stripServiceId, + getTagsFromLabels, } from '../Services.utils'; import { getStyles } from '../Tabs.styles'; @@ -148,7 +148,7 @@ const ServicesTable: FC = ({ accessor: 'agentsStatus', width: '70px', Cell: ({ value, row }) => ( - + ), type: FilterFieldTypes.RADIO_BUTTON, options: [ @@ -188,11 +188,7 @@ const ServicesTable: FC = ({ {!!agents.length && ( - + )} @@ -200,11 +196,7 @@ const ServicesTable: FC = ({ {!!labelKeys.length && ( - `${label}=${labels![label]}`)} - /> + )} diff --git a/public/app/percona/pmm-dump/PMMDump.service.ts b/public/app/percona/pmm-dump/PMMDump.service.ts index 9d3f2faa9013a..09caedadc6593 100644 --- a/public/app/percona/pmm-dump/PMMDump.service.ts +++ b/public/app/percona/pmm-dump/PMMDump.service.ts @@ -12,7 +12,7 @@ import { ExportResponse, } from './PmmDump.types'; -const BASE_URL = '/v1/management/dump/Dumps'; +const BASE_URL = '/v1/dumps'; const link = document.createElement('a'); const delay = (ms: number): Promise => { @@ -21,15 +21,10 @@ const delay = (ms: number): Promise => { export const PMMDumpService = { async getLogs(artifactId: string, offset: number, limit: number, token?: CancelToken): Promise { - const { logs = [], end } = await api.post( - `${BASE_URL}/GetLogs`, - { - dump_id: artifactId, - offset, - limit, - }, + const { logs = [], end } = await api.get( + `${BASE_URL}/${artifactId}/logs`, false, - token + { cancelToken: token, params: { offset, limit } } ); return { logs: logs.map(({ chunk_id = 0, data, time }) => ({ id: chunk_id, data, time })), @@ -37,11 +32,11 @@ export const PMMDumpService = { }; }, async list(): Promise { - const response = await api.post(`${BASE_URL}/List`, undefined); + const response = await api.get(BASE_URL); return response.dumps || []; }, async delete(dumpIds: string[]) { - await api.post(`${BASE_URL}/Delete`, { dump_ids: dumpIds }); + await api.post(`${BASE_URL}:batchDelete`, { dump_ids: dumpIds }); }, async downloadAll(dumpIds: string[], index = 0): Promise { for (let i = index; i < dumpIds.length; i++) { @@ -62,10 +57,10 @@ export const PMMDumpService = { }); }, async sendToSupport(body: SendToSupportRequestBody) { - await api.post(`${BASE_URL}/Upload`, body, true); + await api.post(`${BASE_URL}:upload`, body, true); }, async trigger(body: ExportDatasetProps, token?: CancelToken): Promise { - const res = await api.post(`${BASE_URL}/Start`, body, false, token); + const res = await api.post(`${BASE_URL}:start`, body, false, token); return res.dump_id; }, }; diff --git a/public/app/percona/settings/Settings.service.ts b/public/app/percona/settings/Settings.service.ts index 08e9f9b5edb49..c17d21479b1a8 100644 --- a/public/app/percona/settings/Settings.service.ts +++ b/public/app/percona/settings/Settings.service.ts @@ -10,14 +10,16 @@ export type SettingsCallback = (settings: Settings) => void; export const SettingsService = { async getSettings(token?: CancelToken, disableNotifications = false): Promise { - const { settings }: SettingsAPIResponse = await api.post('/v1/Settings/Get', {}, disableNotifications, token); + const { settings }: SettingsAPIResponse = await api.get('/v1/server/settings', disableNotifications, { + cancelToken: token, + }); return toModel(settings); }, async setSettings(body: Partial, token?: CancelToken): Promise { let response; try { - const { settings } = await api.post>( - '/v1/Settings/Change', + const { settings } = await api.put>( + '/v1/server/settings', body, false, token @@ -32,8 +34,8 @@ export const SettingsService = { }; const toModel = (response: SettingsPayload): Settings => ({ - awsPartitions: response.aws_partitions, - updatesDisabled: response.updates_disabled, + awsPartitions: response.aws_partitions.values, + updatesEnabled: response.enable_updates, telemetryEnabled: response.telemetry_enabled, telemetrySummaries: response.telemetry_summaries || [], metricsResolutions: response.metrics_resolutions, @@ -41,7 +43,7 @@ const toModel = (response: SettingsPayload): Settings => ({ sshKey: response.ssh_key, alertManagerUrl: response.alert_manager_url, alertManagerRules: response.alert_manager_rules, - sttEnabled: response.stt_enabled, + advisorEnabled: response.advisor_enabled, platformEmail: response.platform_email, azureDiscoverEnabled: response.azurediscover_enabled, alertingEnabled: response.alerting_enabled, @@ -50,10 +52,10 @@ const toModel = (response: SettingsPayload): Settings => ({ slack: response.slack_alerting_settings || {}, }, publicAddress: response.pmm_public_address, - sttCheckIntervals: { - rareInterval: response.stt_check_intervals.rare_interval, - standardInterval: response.stt_check_intervals.standard_interval, - frequentInterval: response.stt_check_intervals.frequent_interval, + advisorRunIntervals: { + rareInterval: response.advisor_run_intervals.rare_interval, + standardInterval: response.advisor_run_intervals.standard_interval, + frequentInterval: response.advisor_run_intervals.frequent_interval, }, backupEnabled: response.backup_management_enabled, isConnectedToPortal: response.connected_to_platform, diff --git a/public/app/percona/settings/Settings.types.ts b/public/app/percona/settings/Settings.types.ts index bcc6c3902941d..49c066196a94d 100644 --- a/public/app/percona/settings/Settings.types.ts +++ b/public/app/percona/settings/Settings.types.ts @@ -19,19 +19,19 @@ export interface AlertingSettings { slack: SlackSettings; } -export enum SttCheckIntervals { +export enum AdvisorRunIntervals { rareInterval = 'rareInterval', standardInterval = 'standardInterval', frequentInterval = 'frequentInterval', } -export interface SttCheckIntervalsSettings { - [SttCheckIntervals.rareInterval]: string; - [SttCheckIntervals.standardInterval]: string; - [SttCheckIntervals.frequentInterval]: string; +export interface AdvisorRunIntervalsSettings { + [AdvisorRunIntervals.rareInterval]: string; + [AdvisorRunIntervals.standardInterval]: string; + [AdvisorRunIntervals.frequentInterval]: string; } -export interface SttCheckIntervalsPayload { +export interface AdvisorRunIntervalsPayload { rare_interval: string; standard_interval: string; frequent_interval: string; @@ -56,21 +56,13 @@ export interface AdvancedPayload { export interface AdvancedChangePayload extends AdvancedPayload { enable_telemetry: boolean; - disable_telemetry: boolean; - enable_stt: boolean; - disable_stt: boolean; - remove_pmm_public_address: boolean; enable_alerting?: boolean; - disable_alerting?: boolean; + enable_advisor: boolean; + advisor_run_intervals?: AdvisorRunIntervalsPayload; enable_backup_management: boolean; - disable_backup_management: boolean; - disable_azurediscover?: boolean; enable_azurediscover?: boolean; - stt_check_intervals?: SttCheckIntervalsPayload; enable_updates?: boolean; - disable_updates?: boolean; enable_access_control?: boolean; - disable_access_control?: boolean; } export interface MetricsResolutionsPayload { @@ -100,15 +92,17 @@ export interface SettingsPayload EmailPayload, SlackPayload, SSHPayload { - aws_partitions: string[]; + aws_partitions: { + values: string[]; + }; platform_email: string; - updates_disabled: boolean; + enable_updates: boolean; telemetry_enabled: boolean; - stt_enabled: boolean; + advisor_enabled: boolean; alerting_enabled: boolean; backup_management_enabled: boolean; azurediscover_enabled: boolean; - stt_check_intervals: SttCheckIntervalsPayload; + advisor_run_intervals: AdvisorRunIntervalsPayload; connected_to_platform: boolean; telemetry_summaries: string[]; default_role_id: number; @@ -124,10 +118,10 @@ export type SettingsAPIChangePayload = | SSHPayload; export interface Settings { - sttEnabled: boolean; + advisorEnabled: boolean; backupEnabled: boolean; alertingEnabled: boolean; - updatesDisabled: boolean; + updatesEnabled: boolean; telemetryEnabled: boolean; metricsResolutions: MetricsResolutions; dataRetention: string; @@ -139,7 +133,7 @@ export interface Settings { platformEmail?: string; publicAddress?: string; alertingSettings: AlertingSettings; - sttCheckIntervals: SttCheckIntervalsSettings; + advisorRunIntervals: AdvisorRunIntervalsSettings; isConnectedToPortal?: boolean; telemetrySummaries: string[]; defaultRoleId: number; diff --git a/public/app/percona/settings/__mocks__/Settings.service.ts b/public/app/percona/settings/__mocks__/Settings.service.ts index 3ffeaa81d2ec8..7deef0502a503 100644 --- a/public/app/percona/settings/__mocks__/Settings.service.ts +++ b/public/app/percona/settings/__mocks__/Settings.service.ts @@ -3,7 +3,7 @@ import { Settings, SettingsAPIChangePayload } from '../Settings.types'; export const SettingsService = jest.genMockFromModule('../Settings.service').SettingsService; export const stub: Settings = { - updatesDisabled: true, + updatesEnabled: false, telemetryEnabled: true, backupEnabled: false, enableAccessControl: false, @@ -18,7 +18,7 @@ export const stub: Settings = { awsPartitions: [], alertManagerUrl: 'alert.foo.com', alertManagerRules: '', - sttEnabled: true, + advisorEnabled: true, alertingEnabled: true, alertingSettings: { email: { @@ -31,7 +31,7 @@ export const stub: Settings = { url: 'slack.foo.com', }, }, - sttCheckIntervals: { + advisorRunIntervals: { rareInterval: '10s', standardInterval: '10s', frequentInterval: '10s', diff --git a/public/app/percona/settings/components/Advanced/Advanced.constants.ts b/public/app/percona/settings/components/Advanced/Advanced.constants.ts index 1f96417245beb..f7fc1d92dac00 100644 --- a/public/app/percona/settings/components/Advanced/Advanced.constants.ts +++ b/public/app/percona/settings/components/Advanced/Advanced.constants.ts @@ -1,5 +1,5 @@ import { Messages } from 'app/percona/settings/Settings.messages'; -import { SttCheckIntervals } from 'app/percona/settings/Settings.types'; +import { AdvisorRunIntervals } from 'app/percona/settings/Settings.types'; import { AdvancedFormProps } from './Advanced.types'; @@ -20,15 +20,15 @@ const { export const STT_CHECK_INTERVALS = [ { label: sttRareIntervalLabel, - name: SttCheckIntervals.rareInterval, + name: AdvisorRunIntervals.rareInterval, }, { label: sttStandardIntervalLabel, - name: SttCheckIntervals.standardInterval, + name: AdvisorRunIntervals.standardInterval, }, { label: sttFrequentIntervalLabel, - name: SttCheckIntervals.frequentInterval, + name: AdvisorRunIntervals.frequentInterval, }, ]; diff --git a/public/app/percona/settings/components/Advanced/Advanced.test.tsx b/public/app/percona/settings/components/Advanced/Advanced.test.tsx index 4ce4870523278..76b4de1c00fff 100644 --- a/public/app/percona/settings/components/Advanced/Advanced.test.tsx +++ b/public/app/percona/settings/components/Advanced/Advanced.test.tsx @@ -21,13 +21,17 @@ describe('Advanced::', () => { settings: { loading: false, result: { - sttCheckIntervals: { rareInterval: '280800s', standardInterval: '86400s', frequentInterval: '14400s' }, + advisorRunIntervals: { + rareInterval: '280800s', + standardInterval: '86400s', + frequentInterval: '14400s', + }, dataRetention: '2592000s', telemetryEnabled: true, telemetrySummaries: ['summary1', 'summary2'], - updatesDisabled: true, + updatesEnabled: false, backupEnabled: false, - sttEnabled: true, + advisorEnabled: true, azureDiscoverEnabled: true, publicAddress: 'localhost', alertingEnabled: true, @@ -54,13 +58,17 @@ describe('Advanced::', () => { settings: { loading: false, result: { - sttCheckIntervals: { rareInterval: '280800s', standardInterval: '86400s', frequentInterval: '14400s' }, + advisorRunIntervals: { + rareInterval: '280800s', + standardInterval: '86400s', + frequentInterval: '14400s', + }, dataRetention: '2592000s', telemetryEnabled: true, telemetrySummaries: ['summary1', 'summary2'], - updatesDisabled: true, + updatesEnabled: false, backupEnabled: false, - sttEnabled: true, + advisorEnabled: true, azureDiscoverEnabled: true, publicAddress: 'localhost', alertingEnabled: true, @@ -98,13 +106,17 @@ describe('Advanced::', () => { settings: { loading: false, result: { - sttCheckIntervals: { rareInterval: '280800s', standardInterval: '86400s', frequentInterval: '14400s' }, + advisorRunIntervals: { + rareInterval: '280800s', + standardInterval: '86400s', + frequentInterval: '14400s', + }, dataRetention: '2592000s', telemetryEnabled: true, telemetrySummaries: ['summary1', 'summary2'], - updatesDisabled: true, + updatesEnabled: false, backupEnabled: false, - sttEnabled: true, + advisorEnabled: true, azureDiscoverEnabled: true, publicAddress: 'localhost', alertingEnabled: true, @@ -132,13 +144,17 @@ describe('Advanced::', () => { settings: { loading: false, result: { - sttCheckIntervals: { rareInterval: '280800s', standardInterval: '86400s', frequentInterval: '14400s' }, + advisorRunIntervals: { + rareInterval: '280800s', + standardInterval: '86400s', + frequentInterval: '14400s', + }, dataRetention: '2592000s', telemetryEnabled: true, telemetrySummaries: ['summary1', 'summary2'], - updatesDisabled: true, + updatesEnabled: false, backupEnabled: false, - sttEnabled: false, + advisorEnabled: false, azureDiscoverEnabled: true, publicAddress: 'localhost', alertingEnabled: true, @@ -157,7 +173,11 @@ describe('Advanced::', () => { // expect(spy.calls.mostRecent().args[0].body.stt_check_intervals).toBeUndefined(); expect(spy).toHaveBeenLastCalledWith( - expect.objectContaining({ body: expect.objectContaining({ stt_check_intervals: undefined }) }) + expect.objectContaining({ + body: expect.objectContaining({ + advisor_run_intervals: undefined, + }), + }) ); }); @@ -172,13 +192,17 @@ describe('Advanced::', () => { settings: { loading: false, result: { - sttCheckIntervals: { rareInterval: '280800s', standardInterval: '86400s', frequentInterval: '14400s' }, + advisorRunIntervals: { + rareInterval: '280800s', + standardInterval: '86400s', + frequentInterval: '14400s', + }, dataRetention: '2592000s', telemetryEnabled: true, telemetrySummaries: ['summary1', 'summary2'], - updatesDisabled: true, + updatesEnabled: false, backupEnabled: false, - sttEnabled: true, + advisorEnabled: true, azureDiscoverEnabled: true, publicAddress: 'localhost', alertingEnabled: true, @@ -198,7 +222,15 @@ describe('Advanced::', () => { // expect(spy.calls.mostRecent().args[0].body.stt_check_intervals).toBeDefined(); expect(spy).toHaveBeenLastCalledWith( - expect.objectContaining({ body: expect.objectContaining({ stt_check_intervals: expect.anything() }) }) + expect.objectContaining({ + body: expect.objectContaining({ + advisor_run_intervals: { + frequent_interval: '14400s', + rare_interval: '280800s', + standard_interval: '86400s', + }, + }), + }) ); }); }); diff --git a/public/app/percona/settings/components/Advanced/Advanced.tsx b/public/app/percona/settings/components/Advanced/Advanced.tsx index 744d2d7dda3fc..2609dd8ca1042 100644 --- a/public/app/percona/settings/components/Advanced/Advanced.tsx +++ b/public/app/percona/settings/components/Advanced/Advanced.tsx @@ -44,12 +44,12 @@ export const Advanced: FC = () => { const { result: settings } = useSelector(getPerconaSettings); const dispatch = useAppDispatch(); const { - sttCheckIntervals, + advisorRunIntervals: sttCheckIntervals, dataRetention, telemetryEnabled, - updatesDisabled, + updatesEnabled, backupEnabled, - sttEnabled, + advisorEnabled: sttEnabled, azureDiscoverEnabled, publicAddress, alertingEnabled, @@ -100,7 +100,7 @@ export const Advanced: FC = () => { const initialValues: AdvancedFormProps = { retention: convertSecondsToDays(dataRetention), telemetry: telemetryEnabled, - updates: !updatesDisabled, + updates: updatesEnabled, backup: backupEnabled, stt: sttEnabled, azureDiscover: azureDiscoverEnabled, @@ -137,23 +137,15 @@ export const Advanced: FC = () => { const body: AdvancedChangePayload = { data_retention: `${+retention * SECONDS_IN_DAY}s`, - disable_telemetry: !telemetry, enable_telemetry: telemetry, - disable_stt: !stt, - enable_stt: stt, - disable_azurediscover: !azureDiscover, + enable_advisor: stt, enable_azurediscover: azureDiscover, pmm_public_address: publicAddress, - remove_pmm_public_address: !publicAddress, - enable_alerting: alerting ? true : undefined, - disable_alerting: !alerting ? true : undefined, - stt_check_intervals: !!stt ? sttCheckIntervals : undefined, + enable_alerting: alerting, + advisor_run_intervals: !!stt ? sttCheckIntervals : undefined, enable_backup_management: backup, - disable_backup_management: !backup, enable_updates: updates, - disable_updates: !updates, enable_access_control: accessControl, - disable_access_control: !accessControl, }; setLoading(true); diff --git a/public/app/percona/settings/components/Advanced/Advanced.utils.ts b/public/app/percona/settings/components/Advanced/Advanced.utils.ts index 047e6103a97e3..e52d923e83f25 100644 --- a/public/app/percona/settings/components/Advanced/Advanced.utils.ts +++ b/public/app/percona/settings/components/Advanced/Advanced.utils.ts @@ -1,6 +1,6 @@ import moment from 'moment/moment'; -import { SttCheckIntervalsSettings } from 'app/percona/settings/Settings.types'; +import { AdvisorRunIntervalsSettings } from 'app/percona/settings/Settings.types'; import { HOURS, MINUTES_IN_HOUR, SECONDS_IN_DAY } from './Advanced.constants'; @@ -24,7 +24,7 @@ export const convertSecondsStringToHour = (seconds: string) => export const convertHoursStringToSeconds = (hours: string) => moment.duration(parseFloat(hours), 'hours').asSeconds(); -export const convertCheckIntervalsToHours = (sttCheckIntervals: SttCheckIntervalsSettings) => { +export const convertCheckIntervalsToHours = (sttCheckIntervals: AdvisorRunIntervalsSettings) => { const { rareInterval: rawRareInterval, standardInterval: rawStandardInterval, diff --git a/public/app/percona/settings/components/Platform/Platform.service.ts b/public/app/percona/settings/components/Platform/Platform.service.ts index 98945b9f9b332..50ed1d367ec5a 100644 --- a/public/app/percona/settings/components/Platform/Platform.service.ts +++ b/public/app/percona/settings/components/Platform/Platform.service.ts @@ -4,15 +4,15 @@ import { ConnectRequest } from './types'; export const PlatformService = { connect(body: ConnectRequest): Promise { - return api.post('/v1/Platform/Connect', body, true); + return api.post('/v1/platform:connect', body, true); }, disconnect(): Promise { - return api.post('/v1/Platform/Disconnect', {}); + return api.post('/v1/platform:disconnect', {}); }, forceDisconnect(): Promise { - return api.post('/v1/Platform/Disconnect', { force: true }, true); + return api.post('/v1/platform:disconnect', { force: true }, true); }, getServerInfo(): Promise<{ pmm_server_id: string; pmm_server_name: string; pmm_server_telemetry_id: string }> { - return api.post(`/v1/Platform/ServerInfo`, {}, true); + return api.get(`/v1/platform/server`, true); }, }; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx index be1a330158e97..0b22adf67c833 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx @@ -18,6 +18,7 @@ import { useAppDispatch } from 'app/store/store'; import { Telemetry } from '../../../ui-events/components/Telemetry'; import usePerconaTour from '../../core/hooks/tour'; +import { logger } from '../../helpers/logger'; import { isPmmAdmin } from '../../helpers/permissions'; import { Messages } from './PerconaBootstrapper.messages'; @@ -61,6 +62,8 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { // @ts-ignore if (e.response?.status === 401) { setAuthorized(false); + } else { + logger.error(e); } } }; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNavigation/PerconaNavigation.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNavigation/PerconaNavigation.tsx index 685c7c1f87330..7ae37b82260ea 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNavigation/PerconaNavigation.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNavigation/PerconaNavigation.tsx @@ -44,7 +44,7 @@ import { const PerconaNavigation: FC = () => { const [folders, setFolders] = useState([]); const { result } = useSelector(getPerconaSettings); - const { alertingEnabled, sttEnabled, backupEnabled } = result || {}; + const { alertingEnabled, advisorEnabled, backupEnabled } = result || {}; const { isPlatformUser, isAuthorized } = useSelector(getPerconaUser); const categorizedAdvisors = useSelector(getCategorizedAdvisors); const isLoggedIn = !!contextSrv.user.isSignedIn; @@ -130,7 +130,7 @@ const PerconaNavigation: FC = () => { dispatch(updateNavIndex(iaMenuItem)); } - if (sttEnabled) { + if (advisorEnabled) { updatedNavTree.push(advisorsPage); } diff --git a/public/app/percona/shared/core/reducers/index.ts b/public/app/percona/shared/core/reducers/index.ts index 96e7f1aebf63d..9b1e745f3971a 100644 --- a/public/app/percona/shared/core/reducers/index.ts +++ b/public/app/percona/shared/core/reducers/index.ts @@ -25,7 +25,7 @@ import perconaUserReducers from './user/user'; import usersReducers from './users/users'; const initialSettingsState: Settings = { - updatesDisabled: true, + updatesEnabled: false, telemetryEnabled: false, backupEnabled: false, metricsResolutions: { @@ -39,7 +39,7 @@ const initialSettingsState: Settings = { awsPartitions: [], alertManagerUrl: '', alertManagerRules: '', - sttEnabled: false, + advisorEnabled: false, alertingEnabled: false, alertingSettings: { email: { @@ -52,7 +52,7 @@ const initialSettingsState: Settings = { url: '', }, }, - sttCheckIntervals: { + advisorRunIntervals: { rareInterval: '10s', standardInterval: '10s', frequentInterval: '10s', diff --git a/public/app/percona/shared/core/reducers/services/services.ts b/public/app/percona/shared/core/reducers/services/services.ts index a841f0a5336f3..872c696d272c7 100644 --- a/public/app/percona/shared/core/reducers/services/services.ts +++ b/public/app/percona/shared/core/reducers/services/services.ts @@ -16,9 +16,6 @@ import { } from './services.types'; import { didStandardLabelsChange, - hasLabelsToAddOrUpdate, - hasLabelsToRemove, - toCustomLabelsBodies, toDbServicesModel, toListServicesBody, toRemoveServiceBody, @@ -113,23 +110,11 @@ export const updateServiceAction = createAsyncThunk('percona/updateService', (pa withSerializedError( (async (): Promise => { const updateBody = toUpdateServiceBody(params); - const [addLabelsBody, removeLabelsBody] = toCustomLabelsBodies(params); - const requests: Array> = []; if (didStandardLabelsChange(params)) { - requests.push(ServicesService.updateService(updateBody)); + await ServicesService.updateService(updateBody); } - if (hasLabelsToAddOrUpdate(addLabelsBody)) { - requests.push(ServicesService.addCustomLabels(addLabelsBody)); - } - - if (hasLabelsToRemove(removeLabelsBody)) { - requests.push(ServicesService.removeCustomLabels(removeLabelsBody)); - } - - await Promise.all(requests); - thunkAPI.dispatch(fetchServicesAction({})); })() ) diff --git a/public/app/percona/shared/core/reducers/services/services.utils.ts b/public/app/percona/shared/core/reducers/services/services.utils.ts index ff50cba690b0e..0872258c39ea4 100644 --- a/public/app/percona/shared/core/reducers/services/services.utils.ts +++ b/public/app/percona/shared/core/reducers/services/services.utils.ts @@ -1,8 +1,7 @@ +import { capitalizeText } from 'app/percona/shared/helpers/capitalizeText'; import { payloadToCamelCase } from 'app/percona/shared/helpers/payloadToCamelCase'; import { - AddCustomLabelsBody, ListServicesBody, - RemoveCustomLabelsBody, RemoveServiceBody, Service, ServiceListPayload, @@ -56,59 +55,11 @@ export const toUpdateServiceBody = ({ serviceId, labels, current }: UpdateServic replication_set: toLabelValue(current.replication_set, labels.replication_set), }); -export const toCustomLabelsBodies = (params: UpdateServiceParams): [AddCustomLabelsBody, RemoveCustomLabelsBody] => { - const original = params.current.custom_labels; - - if (!original) { - return [ - { - service_id: params.serviceId, - custom_labels: params.custom_labels, - }, - { - service_id: params.serviceId, - custom_label_keys: [], - }, - ]; - } - - const toAddOrUpdate: Record = {}; - const toRemove: string[] = []; - - for (const label of Object.keys({ - ...original, - ...params.custom_labels, - })) { - if (original[label] !== undefined && params.custom_labels[label] === undefined) { - toRemove.push(label); - } else if (original[label] === undefined && params.custom_labels[label] !== undefined) { - toAddOrUpdate[label] = params.custom_labels[label]; - } else if (original[label] !== params.custom_labels[label]) { - toAddOrUpdate[label] = params.custom_labels[label]; - } - } - - return [ - { - service_id: params.serviceId, - custom_labels: toAddOrUpdate, - }, - { - service_id: params.serviceId, - custom_label_keys: toRemove, - }, - ]; -}; - export const didStandardLabelsChange = ({ current, labels }: UpdateServiceParams): boolean => current.enviroment !== labels.environment || current.cluster !== labels.cluster || current.replication_set !== labels.replication_set; -export const hasLabelsToAddOrUpdate = (body: AddCustomLabelsBody): boolean => !!Object.keys(body.custom_labels).length; - -export const hasLabelsToRemove = (body: RemoveCustomLabelsBody): boolean => !!body.custom_label_keys.length; - export const toDbServicesModel = (serviceList: ServiceListPayload): Service[] => { const result: Service[] = []; const { services = [] } = serviceList; @@ -148,3 +99,5 @@ export const toDbServicesModel = (serviceList: ServiceListPayload): Service[] => return result; }; + +export const getServiceStatusText = (status: ServiceStatus): string => capitalizeText(status.split('_')[1] || ''); diff --git a/public/app/percona/shared/core/types.ts b/public/app/percona/shared/core/types.ts index 67e9c096163d6..24ab48478f9f7 100644 --- a/public/app/percona/shared/core/types.ts +++ b/public/app/percona/shared/core/types.ts @@ -34,10 +34,8 @@ export interface ApiErrorResponse { } export interface PaginatedPayload { - page_totals: { - total_items: number; - total_pages: number; - }; + total_items: number; + total_pages: number; } export interface ApiParamBody { diff --git a/public/app/percona/shared/helpers/api.ts b/public/app/percona/shared/helpers/api.ts index 560cbc92b9a24..644ec4ffbaa8b 100644 --- a/public/app/percona/shared/helpers/api.ts +++ b/public/app/percona/shared/helpers/api.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-assertions,@typescript-eslint/no-explicit-any */ -import axios, { CancelToken, AxiosInstance } from 'axios'; +import axios, { CancelToken, AxiosInstance, AxiosRequestConfig } from 'axios'; import { AppEvents } from '@grafana/data'; import { appEvents } from 'app/core/app_events'; @@ -18,22 +18,28 @@ export class ApiRequest { async get( path: string, disableNotifications = false, - query?: { params: B; cancelToken?: CancelToken } + query?: { params?: B; cancelToken?: CancelToken } ): Promise { return this.axiosInstance .get(path, query) .then((response): T => response.data) .catch((e) => { - if (!disableNotifications) { + if (!disableNotifications && !axios.isCancel(e)) { appEvents.emit(AppEvents.alertError, [e.message]); } throw e; }); } - async post(path: string, body: B, disableNotifications = false, cancelToken?: CancelToken): Promise { + async post( + path: string, + body: B, + disableNotifications = false, + cancelToken?: CancelToken, + params?: AxiosRequestConfig['params'] + ): Promise { return this.axiosInstance - .post(path, body, { cancelToken }) + .post(path, body, { cancelToken, params }) .then((response): T => response.data) .catch((e) => { if (!disableNotifications && !axios.isCancel(e)) { @@ -44,32 +50,43 @@ export class ApiRequest { }); } - async delete(path: string): Promise { + async delete( + path: string, + disableNotifications = false, + cancelToken?: CancelToken, + params?: AxiosRequestConfig['params'] + ): Promise { return this.axiosInstance - .delete(path) + .delete(path, { cancelToken, params }) .then((response): T => response.data) .catch((e) => { - // Notify.error(e.message); + if (!disableNotifications) { + appEvents.emit(AppEvents.alertError, [e.response.data?.message ?? 'Unknown error']); + } throw e; }); } - async patch(path: string, body: B): Promise { + async patch(path: string, body: B, disableNotifications = false, cancelToken?: CancelToken): Promise { return this.axiosInstance - .patch(path, body) + .patch(path, body, { cancelToken }) .then((response): T => response.data) .catch((e) => { - // Notify.error(e.message); + if (!disableNotifications) { + appEvents.emit(AppEvents.alertError, [e.response.data?.message ?? 'Unknown error']); + } throw e; }); } - async put(path: string, body: B): Promise { + async put(path: string, body: B, disableNotifications = false, cancelToken?: CancelToken): Promise { return this.axiosInstance - .put(path, body) + .put(path, body, { cancelToken }) .then((response): T => response.data) .catch((e) => { - // Notify.error(e.message); + if (!disableNotifications) { + appEvents.emit(AppEvents.alertError, [e.response.data?.message ?? 'Unknown error']); + } throw e; }); } diff --git a/public/app/percona/shared/services/AlertRules/AlertRules.service.ts b/public/app/percona/shared/services/AlertRules/AlertRules.service.ts index 2371c8c058316..2a6673242ad03 100644 --- a/public/app/percona/shared/services/AlertRules/AlertRules.service.ts +++ b/public/app/percona/shared/services/AlertRules/AlertRules.service.ts @@ -4,10 +4,10 @@ import { api } from 'app/percona/shared/helpers/api'; import { AlertRuleCreatePayload } from '../../core'; -const BASE_URL = `/v1/management/alerting/Rules`; +const BASE_URL = `/v1/alerting/rules`; export const AlertRulesService = { async create(payload: AlertRuleCreatePayload, token?: CancelToken, disableNotifications?: boolean) { - return api.post(`${BASE_URL}/Create`, payload, disableNotifications, token); + return api.post(BASE_URL, payload, disableNotifications, token); }, }; diff --git a/public/app/percona/shared/services/actions/Actions.service.ts b/public/app/percona/shared/services/actions/Actions.service.ts index 74dee419f8cf7..419d8848fd2bf 100644 --- a/public/app/percona/shared/services/actions/Actions.service.ts +++ b/public/app/percona/shared/services/actions/Actions.service.ts @@ -1,9 +1,9 @@ -import { apiManagement } from '../../helpers/api'; +import { api } from '../../helpers/api'; import { ActionRequest, ActionResponse } from './Actions.types'; export const ActionsService = { getActionResult(body: ActionRequest) { - return apiManagement.post, ActionRequest>('/Actions/Get', body); + return api.get, ActionRequest>(`/v1/actions/${body.action_id}`); }, }; diff --git a/public/app/percona/shared/services/advisors/Advisors.service.ts b/public/app/percona/shared/services/advisors/Advisors.service.ts index f0106b396d585..6373e59f72079 100644 --- a/public/app/percona/shared/services/advisors/Advisors.service.ts +++ b/public/app/percona/shared/services/advisors/Advisors.service.ts @@ -4,10 +4,10 @@ import { api } from '../../helpers/api'; import { Advisor } from './Advisors.types'; -const BASE_URL = `/v1/management/Advisors`; +const BASE_URL = `/v1/advisors`; export const AdvisorsService = { async list(token?: CancelToken, disableNotifications?: boolean): Promise<{ advisors: Advisor[] }> { - return api.post<{ advisors: Advisor[] }, void>(`${BASE_URL}/List`, undefined, disableNotifications, token); + return api.get<{ advisors: Advisor[] }, void>(`${BASE_URL}`, disableNotifications, { cancelToken: token }); }, }; diff --git a/public/app/percona/shared/services/roles/Roles.service.ts b/public/app/percona/shared/services/roles/Roles.service.ts index ff2fac753ad52..1de189aae2c94 100644 --- a/public/app/percona/shared/services/roles/Roles.service.ts +++ b/public/app/percona/shared/services/roles/Roles.service.ts @@ -7,7 +7,6 @@ import { CreateAccessRole, CreateAccessRolePayload, DeleteAccessRole, - DeleteAccessRolePayload, GetRoleParams, ListRolesResponse, SetDefaultRolePayload, @@ -16,37 +15,36 @@ import { } from './Roles.types'; import { toAccessRole, toCreateBody, toUpdateBody } from './Roles.utils'; -const BASE_URL = '/v1/management/Role'; +const BASE_URL = '/v1/accesscontrol/roles'; const RolesService = { async get(roleId: number): Promise { - const response = await api.post(`${BASE_URL}/Get`, { role_id: roleId }); + const response = await api.get(`${BASE_URL}/${roleId}`); return toAccessRole(response); }, async list(): Promise { - const response = await api.post(`${BASE_URL}/List`, undefined); + const response = await api.get(BASE_URL); return response.roles.map((role) => toAccessRole(role)); }, async create(role: CreateAccessRole): Promise { - await api.post(`${BASE_URL}/Create`, toCreateBody(role)); + await api.post(BASE_URL, toCreateBody(role)); }, async update(role: UpdateAccessRole): Promise { - await api.post(`${BASE_URL}/Update`, toUpdateBody(role)); + await api.put(`${BASE_URL}/${role.roleId}`, toUpdateBody(role)); }, async delete(role: DeleteAccessRole): Promise { - await api.post(`${BASE_URL}/Delete`, { - role_id: role.toDeleteId, + await api.delete(`${BASE_URL}/${role.toDeleteId}`, false, undefined, { replacement_role_id: role.replacementRoleId, }); }, async assign(roleIds: number[], userId: number): Promise { - await api.post(`${BASE_URL}/Assign`, { + await api.post(`${BASE_URL}:assign`, { role_ids: roleIds, user_id: userId, }); }, async setDefault(roleId: number): Promise { - await api.post(`${BASE_URL}/SetDefault`, { + await api.post(`${BASE_URL}:setDefault`, { role_id: roleId, }); }, diff --git a/public/app/percona/shared/services/services/Services.service.ts b/public/app/percona/shared/services/services/Services.service.ts index a39373c8a5b2d..009269732340c 100644 --- a/public/app/percona/shared/services/services/Services.service.ts +++ b/public/app/percona/shared/services/services/Services.service.ts @@ -3,10 +3,8 @@ import { CancelToken } from 'axios'; import { api } from 'app/percona/shared/helpers/api'; import { - AddCustomLabelsBody, ListServicesBody, ListTypesPayload, - RemoveCustomLabelsBody, RemoveServiceBody, ServiceListPayload, UpdateServiceBody, @@ -14,21 +12,19 @@ import { export const ServicesService = { getActive(token?: CancelToken, disableNotifications?: boolean) { - return api.post('/v1/inventory/Services/ListTypes', {}, disableNotifications, token); + return api.post('/v1/inventory/services:getTypes', {}, disableNotifications, token); }, - getServices(body: Partial = {}, token?: CancelToken) { - return api.post>('/v1/management/Service/List', body, false, token); + getServices(params: Partial = {}, token?: CancelToken) { + return api.get>('/v1/management/services', false, { + cancelToken: token, + params, + }); }, removeService(body: RemoveServiceBody, token?: CancelToken) { - return api.post<{}, RemoveServiceBody>('/v1/inventory/Services/Remove', body, false, token); + return api.delete<{}>(`/v1/inventory/services/${body.service_id}`, false, token, { force: body.force }); }, updateService(body: UpdateServiceBody, token?: CancelToken) { - return api.post<{}, UpdateServiceBody>('/v1/inventory/Services/Change', body, false, token); - }, - addCustomLabels(body: AddCustomLabelsBody, token?: CancelToken) { - return api.post<{}, UpdateServiceBody>('/v1/inventory/Services/CustomLabels/Add', body, false, token); - }, - removeCustomLabels(body: RemoveCustomLabelsBody, token?: CancelToken) { - return api.post<{}, UpdateServiceBody>('/v1/inventory/Services/CustomLabels/Remove', body, false, token); + const serviceId = body.service_id.replace('/service_id/', ''); + return api.put<{}, UpdateServiceBody>(`/v1/inventory/services/${serviceId}`, body, false, token); }, }; diff --git a/public/app/percona/shared/services/services/Services.types.ts b/public/app/percona/shared/services/services/Services.types.ts index a62fbc76ce72f..92bbaa41fab72 100644 --- a/public/app/percona/shared/services/services/Services.types.ts +++ b/public/app/percona/shared/services/services/Services.types.ts @@ -3,19 +3,19 @@ import { ServiceAgentStatus } from 'app/percona/inventory/Inventory.types'; import { Databases } from '../../core'; export enum ServiceType { - invalid = 'SERVICE_TYPE_INVALID', - mysql = 'MYSQL_SERVICE', - mongodb = 'MONGODB_SERVICE', - posgresql = 'POSTGRESQL_SERVICE', - proxysql = 'PROXYSQL_SERVICE', - haproxy = 'HAPROXY_SERVICE', - external = 'EXTERNAL_SERVICE', + unspecified = 'SERVICE_TYPE_UNSPECIFIED', + mysql = 'SERVICE_TYPE_MYSQL_SERVICE', + mongodb = 'SERVICE_TYPE_MONGODB_SERVICE', + posgresql = 'SERVICE_TYPE_POSTGRESQL_SERVICE', + proxysql = 'SERVICE_TYPE_PROXYSQL_SERVICE', + haproxy = 'SERVICE_TYPE_HAPROXY_SERVICE', + external = 'SERVICE_TYPE_EXTERNAL_SERVICE', } export enum ServiceStatus { - UP = 'UP', - DOWN = 'DOWN', - UNKNOWN = 'UNKNOWN', + UP = 'STATUS_UP', + DOWN = 'STATUS_DOWN', + UNKNOWN = 'STATUS_UNKNOWN', NA = 'N/A', } @@ -109,13 +109,3 @@ export interface UpdateServiceBody { replication_set?: string; external_group?: string; } - -export interface AddCustomLabelsBody { - service_id: string; - custom_labels: Record; -} - -export interface RemoveCustomLabelsBody { - service_id: string; - custom_label_keys: string[]; -} diff --git a/public/app/percona/shared/services/user/User.service.ts b/public/app/percona/shared/services/user/User.service.ts index b3a8d6503a9b4..2759cc2c6495d 100644 --- a/public/app/percona/shared/services/user/User.service.ts +++ b/public/app/percona/shared/services/user/User.service.ts @@ -4,28 +4,25 @@ import { api } from 'app/percona/shared/helpers/api'; import { UserStatusResponse, UserDetailsResponse, UserDetailsPutPayload, UserListResponse } from './User.types'; -const BASE_URL = '/v1/Platform'; +const BASE_URL = '/v1/platform'; export const UserService = { async getUserStatus(cancelToken?: CancelToken, disableNotifications = false): Promise { - const { is_platform_user }: UserStatusResponse = await api.post( - `${BASE_URL}/UserStatus`, - {}, - disableNotifications, - cancelToken - ); + const { is_platform_user }: UserStatusResponse = await api.get(`${BASE_URL}/user`, disableNotifications, { + cancelToken, + }); return is_platform_user; }, - getUserDetails: async (): Promise => await api.get('/v1/user', true), + getUserDetails: async (): Promise => await api.get('/v1/users/me', true), async setProductTourCompleted(completed: boolean): Promise { const payload: UserDetailsPutPayload = { product_tour_completed: completed }; - return await api.put('/v1/user', payload); + return await api.put('/v1/users/me', payload); }, async setAlertingTourCompeted(completed: boolean): Promise { const payload: UserDetailsPutPayload = { alerting_tour_completed: completed }; - return await api.put('/v1/user', payload); + return await api.put('/v1/users/me', payload); }, async getUsersList(): Promise { - return await api.post('/v1/user/list', undefined); + return await api.get('/v1/users'); }, }; diff --git a/public/app/percona/tickets/Tickets.service.ts b/public/app/percona/tickets/Tickets.service.ts index d711ddf30fdf4..a25735875f490 100644 --- a/public/app/percona/tickets/Tickets.service.ts +++ b/public/app/percona/tickets/Tickets.service.ts @@ -4,7 +4,7 @@ import { api } from 'app/percona/shared/helpers/api'; import { Ticket, TicketResponse } from './Tickets.types'; -const BASE_URL = '/v1/Platform'; +const BASE_URL = '/v1/platform'; export const TicketsService = { async list(token?: CancelToken): Promise { diff --git a/public/app/percona/tour/steps/product/product.steps.tsx b/public/app/percona/tour/steps/product/product.steps.tsx index a56c5dbeae6fd..caa7f11e2da3a 100644 --- a/public/app/percona/tour/steps/product/product.steps.tsx +++ b/public/app/percona/tour/steps/product/product.steps.tsx @@ -68,7 +68,7 @@ export const getProductTourSteps = ( ), }, - ...(isPmmAdmin && !!settings?.sttEnabled + ...(isPmmAdmin && !!settings?.advisorEnabled ? [ { selector: '[aria-label="Advisors"]', diff --git a/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.service.ts b/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.service.ts index eff4cda71c83c..9629563c08107 100644 --- a/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.service.ts +++ b/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.service.ts @@ -1,33 +1,40 @@ import { getTemplateSrv } from '@grafana/runtime'; -import { apiManagement } from 'app/percona/shared/helpers/api'; +import { api } from 'app/percona/shared/helpers/api'; import { PTSummaryRequest, PTSummaryResponse, DatabaseSummaryRequest } from './PTSummary.types'; +const BASE_URL = '/v1/actions'; + export const PTSummaryService = { async getPTSummary(variableName: string) { const body: PTSummaryRequest = { node_id: getTemplateSrv().replace(`$${variableName || 'node_id'}`) }; - - return apiManagement.post('/Actions/StartPTSummary', body, true); + return api.post(`${BASE_URL}:startNodeAction`, body, true); }, async getMysqlPTSummary(variableName: string) { const body: DatabaseSummaryRequest = { - service_id: getTemplateSrv().replace(`$${variableName || 'service_name'}`), + pt_mysql_summary: { + service_id: getTemplateSrv().replace(`$${variableName || 'service_name'}`), + }, }; - return apiManagement.post('/Actions/StartPTMySQLSummary', body, true); + return api.post(`${BASE_URL}:startServiceAction`, body, true); }, async getPostgresqlPTSummary(variableName: string) { const body: DatabaseSummaryRequest = { - service_id: getTemplateSrv().replace(`$${variableName || 'service_name'}`), + pt_postgres_summary: { + service_id: getTemplateSrv().replace(`$${variableName || 'service_name'}`), + }, }; - return apiManagement.post('/Actions/StartPTPgSummary', body, true); + return api.post(`${BASE_URL}:startServiceAction`, body, true); }, async getMongodbPTSummary(variableName: string) { const body: DatabaseSummaryRequest = { - service_id: getTemplateSrv().replace(`$${variableName || 'service-name'}`), + pt_mongodb_summary: { + service_id: getTemplateSrv().replace(`$${variableName || 'service-name'}`), + }, }; - return apiManagement.post('/Actions/StartPTMongoDBSummary', body, true); + return api.post(`${BASE_URL}:startServiceAction`, body, true); }, }; diff --git a/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.types.ts b/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.types.ts index 2015f4c2dbd14..8abb6d3fb1489 100644 --- a/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.types.ts +++ b/public/app/plugins/datasource/pmm-pt-summary-datasource/PTSummary.types.ts @@ -3,7 +3,15 @@ export interface PTSummaryRequest { } export interface DatabaseSummaryRequest { - service_id: string; + pt_mongodb_summary?: { + service_id: string; + }; + pt_mysql_summary?: { + service_id: string; + }; + pt_postgres_summary?: { + service_id: string; + }; } export interface PTSummaryResponse { diff --git a/public/app/plugins/panel/pmm-check/components/Failed/Failed.test.tsx b/public/app/plugins/panel/pmm-check/components/Failed/Failed.test.tsx index cb1843e93a5d5..3e9820fc756d6 100644 --- a/public/app/plugins/panel/pmm-check/components/Failed/Failed.test.tsx +++ b/public/app/plugins/panel/pmm-check/components/Failed/Failed.test.tsx @@ -48,7 +48,7 @@ describe('Failed::', () => { store={configureStore({ percona: { user: { isAuthorized: true }, - settings: { loading: false, result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { loading: false, result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > @@ -99,7 +99,7 @@ describe('Failed::', () => { store={configureStore({ percona: { user: { isAuthorized: true }, - settings: { loading: false, result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { loading: false, result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > @@ -116,7 +116,7 @@ describe('Failed::', () => { store={configureStore({ percona: { user: { isAuthorized: false }, - settings: { loading: false, result: { sttEnabled: true, isConnectedToPortal: false } }, + settings: { loading: false, result: { advisorEnabled: true, isConnectedToPortal: false } }, }, } as StoreState)} > diff --git a/public/app/plugins/panel/pmm-check/components/Failed/Failed.tsx b/public/app/plugins/panel/pmm-check/components/Failed/Failed.tsx index 916a8e7b6daba..3059ff422fdac 100644 --- a/public/app/plugins/panel/pmm-check/components/Failed/Failed.tsx +++ b/public/app/plugins/panel/pmm-check/components/Failed/Failed.tsx @@ -55,7 +55,7 @@ export const Failed: FC = () => { ); } - if (!settings?.sttEnabled) { + if (!settings?.advisorEnabled) { return (
{Messages.featureDisabled} diff --git a/public/app/plugins/panel/pmm-update/UpdatePanel.service.ts b/public/app/plugins/panel/pmm-update/UpdatePanel.service.ts index 5de0ef58afa2e..d27f288fb052f 100644 --- a/public/app/plugins/panel/pmm-update/UpdatePanel.service.ts +++ b/public/app/plugins/panel/pmm-update/UpdatePanel.service.ts @@ -1,15 +1,17 @@ import { api } from 'app/percona/shared/helpers/api'; import { - GetUpdatesBody, + GetUpdatesParams, GetUpdateStatusBody, GetUpdatesResponse, GetUpdateStatusResponse, StartUpdateResponse, } from './types'; -export const getCurrentVersion = (body: GetUpdatesBody = { force: false }) => - api.post('/v1/Updates/Check', body, true); -export const startUpdate = () => api.post('/v1/Updates/Start', {}); +export const getCurrentVersion = (params: GetUpdatesParams = { force: false }) => + api.get(`/v1/server/updates`, false, { + params, + }); +export const startUpdate = () => api.post('/v1/server/updates:start', {}); export const getUpdateStatus = (body: GetUpdateStatusBody) => - api.post('/v1/Updates/Status', body); + api.post('/v1/server/updates:getStatus', body); diff --git a/public/app/plugins/panel/pmm-update/UpdatePanel.tsx b/public/app/plugins/panel/pmm-update/UpdatePanel.tsx index a864a23ba82af..05c56f87594f3 100644 --- a/public/app/plugins/panel/pmm-update/UpdatePanel.tsx +++ b/public/app/plugins/panel/pmm-update/UpdatePanel.tsx @@ -55,7 +55,7 @@ export const UpdatePanel: FC<{}> = () => { <>
- {isUpdateAvailable && !isDefaultView && !settings?.updatesDisabled && isAuthorized && !isLoading && isOnline ? ( + {isUpdateAvailable && !isDefaultView && settings?.updatesEnabled && isAuthorized && !isLoading && isOnline ? ( ) : null} {isLoading ? ( @@ -64,7 +64,7 @@ export const UpdatePanel: FC<{}> = () => {
) : ( <> - {(isUpdateAvailable || forceUpdate) && !settings?.updatesDisabled && isAuthorized && isOnline ? ( + {(isUpdateAvailable || forceUpdate) && settings?.updatesEnabled && isAuthorized && isOnline ? (
{/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */}