mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
fix: added migration to filter expression for crud operations of variable
This commit is contained in:
parent
a11cd5cc3e
commit
b7d6d54ddc
@ -1,4 +1,5 @@
|
|||||||
import { CustomMultiSelect } from 'components/NewSelect';
|
import { CustomMultiSelect } from 'components/NewSelect';
|
||||||
|
import { PANEL_GROUP_TYPES } from 'constants/queryBuilder';
|
||||||
import { generateGridTitle } from 'container/GridPanelSwitch/utils';
|
import { generateGridTitle } from 'container/GridPanelSwitch/utils';
|
||||||
import { useDashboard } from 'providers/Dashboard/Dashboard';
|
import { useDashboard } from 'providers/Dashboard/Dashboard';
|
||||||
|
|
||||||
@ -17,10 +18,15 @@ export function WidgetSelector({
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Filter and deduplicate widgets by ID, keeping only those with layout entries
|
// Filter and deduplicate widgets by ID, keeping only those with layout entries
|
||||||
|
// and excluding row widgets since they are not panels that can have variables
|
||||||
const widgets = Object.values(
|
const widgets = Object.values(
|
||||||
(selectedDashboard?.data?.widgets || []).reduce(
|
(selectedDashboard?.data?.widgets || []).reduce(
|
||||||
(acc: Record<string, any>, widget) => {
|
(acc: Record<string, any>, widget) => {
|
||||||
if (widget.id && layoutIds.has(widget.id)) {
|
if (
|
||||||
|
widget.id &&
|
||||||
|
layoutIds.has(widget.id) &&
|
||||||
|
widget.panelTypes !== PANEL_GROUP_TYPES.ROW
|
||||||
|
) {
|
||||||
acc[widget.id] = widget;
|
acc[widget.id] = widget;
|
||||||
}
|
}
|
||||||
return acc;
|
return acc;
|
||||||
|
|||||||
@ -1,4 +1,8 @@
|
|||||||
/* eslint-disable sonarjs/cognitive-complexity */
|
/* eslint-disable sonarjs/cognitive-complexity */
|
||||||
|
import {
|
||||||
|
convertFiltersToExpressionWithExistingQuery,
|
||||||
|
removeKeysFromExpression,
|
||||||
|
} from 'components/QueryBuilderV2/utils';
|
||||||
import { cloneDeep, isArray, isEmpty } from 'lodash-es';
|
import { cloneDeep, isArray, isEmpty } from 'lodash-es';
|
||||||
import { Dashboard, Widgets } from 'types/api/dashboard/getAll';
|
import { Dashboard, Widgets } from 'types/api/dashboard/getAll';
|
||||||
import {
|
import {
|
||||||
@ -47,13 +51,18 @@ const updateQueryFilters = (
|
|||||||
newItems.push(filter);
|
newItems.push(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
const newFilterToUpdate = {
|
||||||
...queryData,
|
|
||||||
filters: {
|
|
||||||
...queryData.filters,
|
...queryData.filters,
|
||||||
items: newItems,
|
items: newItems,
|
||||||
op: queryData.filters?.op || 'AND',
|
op: queryData.filters?.op || 'AND',
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
...queryData,
|
||||||
|
...convertFiltersToExpressionWithExistingQuery(
|
||||||
|
newFilterToUpdate,
|
||||||
|
queryData.filter?.expression,
|
||||||
|
),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -113,6 +122,13 @@ const removeIfPresent = (
|
|||||||
items: newItems,
|
items: newItems,
|
||||||
op: queryData.filters?.op || 'AND',
|
op: queryData.filters?.op || 'AND',
|
||||||
},
|
},
|
||||||
|
filter: {
|
||||||
|
...queryData.filter,
|
||||||
|
expression: removeKeysFromExpression(
|
||||||
|
queryData.filter?.expression ?? '',
|
||||||
|
filter.key?.key ? [filter.key.key] : [],
|
||||||
|
),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ export const useAddDynamicVariableToPanels = (): ((
|
|||||||
`$${name}`,
|
`$${name}`,
|
||||||
'',
|
'',
|
||||||
'IN',
|
'IN',
|
||||||
); // todo - Sagar: make a logic to have correct type and other details
|
);
|
||||||
|
|
||||||
return addTagFiltersToDashboard(
|
return addTagFiltersToDashboard(
|
||||||
dashboard,
|
dashboard,
|
||||||
|
|||||||
@ -105,6 +105,7 @@ export const createDynamicVariableToWidgetsMap = (
|
|||||||
widgets.forEach((widget) => {
|
widgets.forEach((widget) => {
|
||||||
if (widget.query?.builder?.queryData) {
|
if (widget.query?.builder?.queryData) {
|
||||||
widget.query.builder.queryData.forEach((queryData: IBuilderQuery) => {
|
widget.query.builder.queryData.forEach((queryData: IBuilderQuery) => {
|
||||||
|
// Check filter items for dynamic variables
|
||||||
queryData.filters?.items?.forEach((filter: TagFilterItem) => {
|
queryData.filters?.items?.forEach((filter: TagFilterItem) => {
|
||||||
// For each filter, check if it uses any dynamic variable
|
// For each filter, check if it uses any dynamic variable
|
||||||
dynamicVariables.forEach((variable) => {
|
dynamicVariables.forEach((variable) => {
|
||||||
@ -120,6 +121,19 @@ export const createDynamicVariableToWidgetsMap = (
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Check filter expression for dynamic variables
|
||||||
|
if (queryData.filter?.expression) {
|
||||||
|
dynamicVariables.forEach((variable) => {
|
||||||
|
if (
|
||||||
|
variable.dynamicVariablesAttribute &&
|
||||||
|
queryData.filter?.expression?.includes(`$${variable.name}`) &&
|
||||||
|
!dynamicVariableToWidgetsMap[variable.id].includes(widget.id)
|
||||||
|
) {
|
||||||
|
dynamicVariableToWidgetsMap[variable.id].push(widget.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user