[Dashboards] Update default bar chart config (#17375)
https://github.com/user-attachments/assets/f7f11048-f27b-4c81-8626-71351a278f2b
This commit is contained in:
@@ -1,77 +0,0 @@
|
||||
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { type GraphWidgetFieldSelection } from '@/page-layout/types/GraphWidgetFieldSelection';
|
||||
|
||||
export const useCompanyDefaultChartConfig = () => {
|
||||
const companyObjectMetadata = useRecoilValue(
|
||||
objectMetadataItemFamilySelector({
|
||||
objectName: CoreObjectNameSingular.Company,
|
||||
objectNameType: 'singular',
|
||||
}),
|
||||
);
|
||||
|
||||
const buildBarChartFieldSelection = ():
|
||||
| GraphWidgetFieldSelection
|
||||
| undefined => {
|
||||
if (!isDefined(companyObjectMetadata)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const labelIdentifierField = companyObjectMetadata.fields.find(
|
||||
(field) =>
|
||||
field.id === companyObjectMetadata.labelIdentifierFieldMetadataId,
|
||||
);
|
||||
|
||||
const employeesField = companyObjectMetadata.fields.find(
|
||||
(field) => field.name === 'employees',
|
||||
);
|
||||
|
||||
const arrField = companyObjectMetadata.fields.find(
|
||||
(field) => field.name === 'annualRecurringRevenue',
|
||||
);
|
||||
|
||||
const aggregateField = employeesField ?? arrField;
|
||||
|
||||
if (!isDefined(labelIdentifierField) || !isDefined(aggregateField)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
objectMetadataId: companyObjectMetadata.id,
|
||||
groupByFieldMetadataIdX: labelIdentifierField.id,
|
||||
aggregateFieldMetadataId: aggregateField.id,
|
||||
};
|
||||
};
|
||||
|
||||
const buildNumberChartFieldSelection = ():
|
||||
| GraphWidgetFieldSelection
|
||||
| undefined => {
|
||||
if (!isDefined(companyObjectMetadata)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const employeesField = companyObjectMetadata.fields.find(
|
||||
(field) => field.name === 'employees',
|
||||
);
|
||||
|
||||
const arrField = companyObjectMetadata.fields.find(
|
||||
(field) => field.name === 'annualRecurringRevenue',
|
||||
);
|
||||
|
||||
const aggregateField = employeesField ?? arrField;
|
||||
|
||||
if (!isDefined(aggregateField)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
objectMetadataId: companyObjectMetadata.id,
|
||||
aggregateFieldMetadataId: aggregateField.id,
|
||||
};
|
||||
};
|
||||
|
||||
return { buildBarChartFieldSelection, buildNumberChartFieldSelection };
|
||||
};
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { type GraphWidgetFieldSelection } from '@/page-layout/types/GraphWidgetFieldSelection';
|
||||
|
||||
export const useOpportunityDefaultChartConfig = () => {
|
||||
const opportunityObjectMetadata = useRecoilValue(
|
||||
objectMetadataItemFamilySelector({
|
||||
objectName: CoreObjectNameSingular.Opportunity,
|
||||
objectNameType: 'singular',
|
||||
}),
|
||||
);
|
||||
|
||||
const buildBarChartFieldSelection = ():
|
||||
| GraphWidgetFieldSelection
|
||||
| undefined => {
|
||||
if (!isDefined(opportunityObjectMetadata)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const stageField = opportunityObjectMetadata.fields.find(
|
||||
(field) => field.name === 'stage',
|
||||
);
|
||||
|
||||
const amountField = opportunityObjectMetadata.fields.find(
|
||||
(field) => field.name === 'amount',
|
||||
);
|
||||
|
||||
if (!isDefined(stageField) || !isDefined(amountField)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
objectMetadataId: opportunityObjectMetadata.id,
|
||||
groupByFieldMetadataIdX: stageField.id,
|
||||
aggregateFieldMetadataId: amountField.id,
|
||||
};
|
||||
};
|
||||
|
||||
const buildNumberChartFieldSelection = ():
|
||||
| GraphWidgetFieldSelection
|
||||
| undefined => {
|
||||
if (!isDefined(opportunityObjectMetadata)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const amountField = opportunityObjectMetadata.fields.find(
|
||||
(field) => field.name === 'amount',
|
||||
);
|
||||
|
||||
if (!isDefined(amountField)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
objectMetadataId: opportunityObjectMetadata.id,
|
||||
aggregateFieldMetadataId: amountField.id,
|
||||
};
|
||||
};
|
||||
|
||||
return { buildBarChartFieldSelection, buildNumberChartFieldSelection };
|
||||
};
|
||||
Reference in New Issue
Block a user