Files
twenty/packages/twenty-front/src/modules/page-layout/utils/extractFieldMetadataIdsFromWidget.ts
T
2026-05-29 11:08:50 +02:00

45 lines
1.2 KiB
TypeScript

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