https://github.com/user-attachments/assets/e8fecb5d-bc9b-425a-9c19-baca15f88b1c
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById';
|
|
import {
|
|
computeRecordGqlOperationFilter,
|
|
isDefined,
|
|
} from 'twenty-shared/utils';
|
|
import {
|
|
type BarChartConfiguration,
|
|
type NumberChartConfiguration,
|
|
} from '~/generated/graphql';
|
|
|
|
export const useGraphWidgetQueryCommon = ({
|
|
objectMetadataItemId,
|
|
configuration,
|
|
}: {
|
|
objectMetadataItemId: string;
|
|
configuration: BarChartConfiguration | NumberChartConfiguration;
|
|
}) => {
|
|
const { objectMetadataItem } = useObjectMetadataItemById({
|
|
objectId: objectMetadataItemId,
|
|
});
|
|
|
|
const aggregateFieldId = configuration.aggregateFieldMetadataId;
|
|
|
|
const aggregateField = objectMetadataItem.readableFields.find(
|
|
(field) => field.id === aggregateFieldId,
|
|
);
|
|
|
|
if (!isDefined(aggregateField)) {
|
|
throw new Error('Aggregate field not found');
|
|
}
|
|
|
|
const gqlOperationFilter = computeRecordGqlOperationFilter({
|
|
fields: objectMetadataItem.fields,
|
|
filterValueDependencies: {},
|
|
recordFilters: configuration.filter?.recordFilters ?? [],
|
|
recordFilterGroups: configuration.filter?.recordFilterGroups ?? [],
|
|
});
|
|
|
|
return {
|
|
objectMetadataItem,
|
|
gqlOperationFilter,
|
|
aggregateField,
|
|
};
|
|
};
|