|
@@ -154,6 +154,7 @@ interface State {
|
|
|
dataUnit?: string;
|
|
|
description?: string;
|
|
|
errors?: Record<string, any>;
|
|
|
+ id?: string;
|
|
|
selectedDashboard?: DashboardDetails['id'];
|
|
|
thresholds?: ThresholdsConfig | null;
|
|
|
widgetToBeUpdated?: Widget;
|
|
@@ -217,7 +218,17 @@ function WidgetBuilder({
|
|
|
DashboardWidgetSource.ISSUE_DETAILS,
|
|
|
].includes(source);
|
|
|
|
|
|
- const dataSet = dataset ? dataset : DataSet.EVENTS;
|
|
|
+ const defaultWidgetType = organization.features.includes(
|
|
|
+ 'performance-discover-dataset-selector'
|
|
|
+ )
|
|
|
+ ? WidgetType.ERRORS
|
|
|
+ : WidgetType.DISCOVER;
|
|
|
+ const defaultDataset = organization.features.includes(
|
|
|
+ 'performance-discover-dataset-selector'
|
|
|
+ )
|
|
|
+ ? DataSet.ERRORS
|
|
|
+ : DataSet.EVENTS;
|
|
|
+ const dataSet = dataset ? dataset : defaultDataset;
|
|
|
|
|
|
const api = useApi();
|
|
|
|
|
@@ -314,7 +325,7 @@ function WidgetBuilder({
|
|
|
queries = normalizeQueries({
|
|
|
displayType: newDisplayType,
|
|
|
queries: widgetFromDashboard.queries,
|
|
|
- widgetType: widgetFromDashboard.widgetType ?? WidgetType.DISCOVER,
|
|
|
+ widgetType: widgetFromDashboard.widgetType ?? defaultWidgetType,
|
|
|
}).map(query => ({
|
|
|
...query,
|
|
|
// Use the last aggregate because that's where the y-axis is stored
|
|
@@ -326,11 +337,12 @@ function WidgetBuilder({
|
|
|
queries = normalizeQueries({
|
|
|
displayType: newDisplayType,
|
|
|
queries: widgetFromDashboard.queries,
|
|
|
- widgetType: widgetFromDashboard.widgetType ?? WidgetType.DISCOVER,
|
|
|
+ widgetType: widgetFromDashboard.widgetType ?? defaultWidgetType,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
setState({
|
|
|
+ id: widgetFromDashboard.id,
|
|
|
title: widgetFromDashboard.title,
|
|
|
description: widgetFromDashboard.description,
|
|
|
displayType: newDisplayType,
|
|
@@ -342,7 +354,7 @@ function WidgetBuilder({
|
|
|
thresholds: widgetFromDashboard.thresholds ?? defaultThresholds,
|
|
|
dataSet: widgetFromDashboard.widgetType
|
|
|
? WIDGET_TYPE_TO_DATA_SET[widgetFromDashboard.widgetType]
|
|
|
- : DataSet.EVENTS,
|
|
|
+ : defaultDataset,
|
|
|
limit: newLimit,
|
|
|
prebuiltWidgetId: null,
|
|
|
queryConditionsValid: true,
|
|
@@ -372,6 +384,7 @@ function WidgetBuilder({
|
|
|
const widgetType = DATA_SET_TO_WIDGET_TYPE[state.dataSet];
|
|
|
|
|
|
const currentWidget = {
|
|
|
+ id: state.id,
|
|
|
title: state.title,
|
|
|
description: state.description,
|
|
|
displayType: state.displayType,
|
|
@@ -417,12 +430,12 @@ function WidgetBuilder({
|
|
|
'queries',
|
|
|
normalizeQueries({
|
|
|
displayType: newDisplayType,
|
|
|
- queries: [{...getDatasetConfig(WidgetType.DISCOVER).defaultWidgetQuery}],
|
|
|
- widgetType: WidgetType.DISCOVER,
|
|
|
+ queries: [{...getDatasetConfig(defaultWidgetType).defaultWidgetQuery}],
|
|
|
+ widgetType: defaultWidgetType,
|
|
|
})
|
|
|
);
|
|
|
- set(newState, 'dataSet', DataSet.EVENTS);
|
|
|
- setDataSetConfig(getDatasetConfig(WidgetType.DISCOVER));
|
|
|
+ set(newState, 'dataSet', defaultDataset);
|
|
|
+ setDataSetConfig(getDatasetConfig(defaultWidgetType));
|
|
|
return {...newState, errors: undefined};
|
|
|
}
|
|
|
|
|
@@ -717,7 +730,7 @@ function WidgetBuilder({
|
|
|
newQuery.orderby = '';
|
|
|
} else if (!newQuery.orderby) {
|
|
|
const orderOptions = generateOrderOptions({
|
|
|
- widgetType: widgetType ?? WidgetType.DISCOVER,
|
|
|
+ widgetType: widgetType ?? defaultWidgetType,
|
|
|
columns: query.columns,
|
|
|
aggregates: query.aggregates,
|
|
|
});
|
|
@@ -827,7 +840,10 @@ function WidgetBuilder({
|
|
|
if (widgetToBeUpdated) {
|
|
|
let nextWidgetList = [...dashboard.widgets];
|
|
|
const updateWidgetIndex = getUpdateWidgetIndex();
|
|
|
- const nextWidgetData = {...widgetData, id: widgetToBeUpdated.id};
|
|
|
+ const nextWidgetData = {
|
|
|
+ ...widgetData,
|
|
|
+ id: widgetToBeUpdated.id,
|
|
|
+ };
|
|
|
|
|
|
// Only modify and re-compact if the default height has changed
|
|
|
if (
|
|
@@ -845,7 +861,7 @@ function WidgetBuilder({
|
|
|
goToDashboards(dashboardId ?? NEW_DASHBOARD_ID);
|
|
|
trackAnalytics('dashboards_views.widget_builder.save', {
|
|
|
organization,
|
|
|
- data_set: widgetData.widgetType ?? WidgetType.DISCOVER,
|
|
|
+ data_set: widgetData.widgetType ?? defaultWidgetType,
|
|
|
new_widget: false,
|
|
|
});
|
|
|
return;
|
|
@@ -856,7 +872,7 @@ function WidgetBuilder({
|
|
|
goToDashboards(dashboardId ?? NEW_DASHBOARD_ID);
|
|
|
trackAnalytics('dashboards_views.widget_builder.save', {
|
|
|
organization,
|
|
|
- data_set: widgetData.widgetType ?? WidgetType.DISCOVER,
|
|
|
+ data_set: widgetData.widgetType ?? defaultWidgetType,
|
|
|
new_widget: true,
|
|
|
});
|
|
|
}
|
|
@@ -995,6 +1011,12 @@ function WidgetBuilder({
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ function handleUpdateWidgetSplitDecision(splitDecision: WidgetType) {
|
|
|
+ setState(prevState => {
|
|
|
+ return {...cloneDeep(prevState), dataSet: WIDGET_TYPE_TO_DATA_SET[splitDecision]};
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
function isFormInvalid() {
|
|
|
if (
|
|
|
(notDashboardsOrigin && !state.selectedDashboard) ||
|
|
@@ -1143,6 +1165,9 @@ function WidgetBuilder({
|
|
|
}}
|
|
|
noDashboardsMEPProvider
|
|
|
isWidgetInvalid={!state.queryConditionsValid}
|
|
|
+ onWidgetSplitDecision={
|
|
|
+ handleUpdateWidgetSplitDecision
|
|
|
+ }
|
|
|
/>
|
|
|
<DataSetStep
|
|
|
dataSet={state.dataSet}
|
|
@@ -1265,7 +1290,7 @@ function WidgetBuilder({
|
|
|
setLatestLibrarySelectionTitle(prebuiltWidget.title);
|
|
|
setDataSetConfig(
|
|
|
getDatasetConfig(
|
|
|
- prebuiltWidget.widgetType || WidgetType.DISCOVER
|
|
|
+ prebuiltWidget.widgetType || defaultWidgetType
|
|
|
)
|
|
|
);
|
|
|
const {id, ...prebuiltWidgetProps} = prebuiltWidget;
|
|
@@ -1274,7 +1299,7 @@ function WidgetBuilder({
|
|
|
...prebuiltWidgetProps,
|
|
|
dataSet: prebuiltWidget.widgetType
|
|
|
? WIDGET_TYPE_TO_DATA_SET[prebuiltWidget.widgetType]
|
|
|
- : DataSet.EVENTS,
|
|
|
+ : defaultDataset,
|
|
|
userHasModified: false,
|
|
|
prebuiltWidgetId: id || null,
|
|
|
});
|