13f09d8946
Follow-up cleanup to #20172.
45 lines
1.2 KiB
TypeScript
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 [];
|
|
}
|
|
};
|