signoz/frontend/src/utils/convertNewToOldQueryBuilder.ts
Abhi kumar 3a2eab2019
fixes: includes fixes required in the new QB (#8675)
* fix: removed unused code for querycontext (#8674)

* Update frontend/src/utils/queryValidationUtils.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat: added tooltips in metric aggregations

* feat: enabled legend enhancement for explorer pages and alert page

* feat: updated the error state in explorer pages with new APIError

* fix: cloned panel query shows previous query (#8681)

* fix: cloned panel query shows previous query

* chore: removed comments

* chore: added null check

* fix: added fix for auto run query in dashboard panel + trace view issue

---------

Co-authored-by: Abhi Kumar <abhikumar@Mac.lan>

* feat: added new SubstituteVars api and enable v5 for creating new alerts (#8683)

* feat: added new SubstituteVars api and enable v5 for creating new alerts

* feat: add warning notification for query response

* feat: fixed failing test case

* fix: metric histogram UI config state in edit mode

* fix: fixed table columns getting duplicate data (#8685)

* fix: added fix for conversion of QB function to filter expression. (#8684)

* fix: added fix for QB filters for functions

* chore: minor fix

---------

Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com>

* feat: query builder fixes and enhancement (#8692)

* feat: legend format fixes around single and multiple aggregation

* feat: fixed table unit and metric units

* feat: add fallbacks to columnWidth and columnUnits for old-dashboards

* feat: fixed metric edit issue and having filter suggestion duplications

* feat: fix and cleanup functions across product for v5

* chore: add tooltips with links to documentation (#8676)

* fix: added fix for query validation and empty query error (#8694)

* fix: added fix for selected columns being empty in logs explorer (#8709)

* feat: added columnUnit changes for old dashboard migrations (#8706)

* fix: fixed keyfetching logic (#8712)

* chore: lint fix

* fix: fixed logs explorer test

* feat: fix type checks

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: SagarRajput-7 <sagar@signoz.io>
Co-authored-by: Abhi Kumar <abhikumar@Mac.lan>
Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com>
Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2025-08-06 00:16:20 +05:30

74 lines
1.9 KiB
TypeScript

import {
IBuilderFormula,
IBuilderQuery,
} from 'types/api/queryBuilder/queryBuilderData';
import { BuilderQuery, QueryBuilderFormula } from 'types/api/v5/queryRange';
import { DataSource } from 'types/common/queryBuilder';
// Helper functions
const getDataSourceFromSignal = (signal: string): DataSource => {
switch (signal) {
case 'metrics':
return DataSource.METRICS;
case 'logs':
return DataSource.LOGS;
case 'traces':
return DataSource.TRACES;
default:
return DataSource.METRICS;
}
};
/**
* Converts new BuilderQuery to old IBuilderQuery
*/
export const convertBuilderQueryToIBuilderQuery = (
builderQuery: BuilderQuery,
): IBuilderQuery => {
// Determine data source based on signal
const dataSource = getDataSourceFromSignal(builderQuery.signal);
const result: IBuilderQuery = ({
...builderQuery,
queryName: builderQuery.name,
dataSource,
legend: builderQuery.legend,
groupBy: builderQuery.groupBy?.map((group) => ({
key: group?.name,
dataType: group?.fieldDataType,
type: group?.fieldContext,
isColumn: group?.isColumn ?? true,
isJSON: group?.isJSON || false,
id: `${group?.name}--${group?.fieldDataType}--${group?.fieldContext}--${group?.isColumn}`,
})),
orderBy: builderQuery.order?.map((order) => ({
columnName: order?.key?.name,
order: order?.direction,
})),
} as unknown) as IBuilderQuery;
return result;
};
/**
* Converts new QueryBuilderFormula to old IBuilderFormula
*/
export const convertQueryBuilderFormulaToIBuilderFormula = (
formula: QueryBuilderFormula,
): IBuilderFormula => {
const result: IBuilderFormula = ({
...formula,
expression: formula.expression,
queryName: formula.name,
legend: formula.legend,
limit: formula.limit || null,
orderBy: formula.order?.map((order) => ({
columnName: order?.key?.name,
order: order?.direction,
})),
} as unknown) as IBuilderFormula;
return result;
};