Files
twenty/packages/twenty-front/src/modules/page-layout/utils/extractFieldMetadataIdsFromWidget.ts
T
nitin 44f97058ac Tidy up validation for configuration (#14939)
closes https://github.com/twentyhq/core-team-issues/issues/1605

TODO:  
~~- add stories~~
~~- add base graph on companies when creating a new graph widget~~
2025-10-09 20:34:51 +00:00

44 lines
1.0 KiB
TypeScript

import { isDefined } from 'twenty-shared/utils';
import {
type PageLayoutWidget,
WidgetType,
} from '~/generated-metadata/graphql';
export const extractFieldMetadataIdsFromWidget = (
widget: PageLayoutWidget,
): string[] => {
if (widget.type !== WidgetType.GRAPH || !widget.configuration) {
return [];
}
const config = widget.configuration;
switch (config.__typename) {
case 'BarChartConfiguration':
case 'LineChartConfiguration':
return [
config.aggregateFieldMetadataId,
config.groupByFieldMetadataIdX,
config.groupByFieldMetadataIdY,
].filter(isDefined);
case 'PieChartConfiguration':
return [
config.aggregateFieldMetadataId,
config.groupByFieldMetadataId,
].filter(isDefined);
case 'NumberChartConfiguration':
return [config.aggregateFieldMetadataId].filter(isDefined);
case 'GaugeChartConfiguration':
return [config.aggregateFieldMetadataId].filter(isDefined);
case 'IframeConfiguration':
return [];
default:
return [];
}
};