Convert metadata tables to camelCase (#2400)
* Convert metadata tables to camelCase * datasourcemetadataid to datasourceid * refactor metadata folders * fix command * move commands out of metadata * fix seed * rename objectId and fieldId in objectMetadataId and fieldMetadataId in FE * fix field-metadata * Fix * Fix * remove logs --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -19,7 +19,7 @@ export const useBoardCardFields = () => {
|
||||
) => {
|
||||
setBoardCardFields((previousFields) =>
|
||||
previousFields.map((previousField) =>
|
||||
previousField.fieldId === field.fieldId
|
||||
previousField.fieldMetadataId === field.fieldMetadataId
|
||||
? { ...previousField, isVisible: !field.isVisible }
|
||||
: previousField,
|
||||
),
|
||||
|
||||
@ -12,5 +12,5 @@ export const boardCardFieldsByKeyScopedSelector = selectorFamily({
|
||||
({ get }) =>
|
||||
get(boardCardFieldsScopedState(scopeId)).reduce<
|
||||
Record<string, BoardFieldDefinition<FieldMetadata>>
|
||||
>((result, field) => ({ ...result, [field.fieldId]: field }), {}),
|
||||
>((result, field) => ({ ...result, [field.fieldMetadataId]: field }), {}),
|
||||
});
|
||||
|
||||
@ -9,10 +9,10 @@ export const hiddenBoardCardFieldsScopedSelector = selectorFamily({
|
||||
(scopeId: string) =>
|
||||
({ get }) => {
|
||||
const fields = get(boardCardFieldsScopedState(scopeId));
|
||||
const fieldKeys = fields.map(({ fieldId }) => fieldId);
|
||||
const fieldKeys = fields.map(({ fieldMetadataId }) => fieldMetadataId);
|
||||
const otherAvailableKeys = get(
|
||||
availableBoardCardFieldsScopedState(scopeId),
|
||||
).filter(({ fieldId }) => !fieldKeys.includes(fieldId));
|
||||
).filter(({ fieldMetadataId }) => !fieldKeys.includes(fieldMetadataId));
|
||||
|
||||
return [
|
||||
...fields.filter((field) => !field.isVisible),
|
||||
|
||||
@ -12,5 +12,5 @@ export const savedBoardCardFieldsByKeyFamilySelector = selectorFamily({
|
||||
({ get }) =>
|
||||
get(savedBoardCardFieldsFamilyState(viewId)).reduce<
|
||||
Record<string, BoardFieldDefinition<FieldMetadata>>
|
||||
>((result, field) => ({ ...result, [field.fieldId]: field }), {}),
|
||||
>((result, field) => ({ ...result, [field.fieldMetadataId]: field }), {}),
|
||||
});
|
||||
|
||||
@ -9,7 +9,7 @@ export const useFieldInitialValue = () => {
|
||||
|
||||
const fieldInitialValue = useRecoilValue(
|
||||
entityFieldInitialValueFamilyState({
|
||||
fieldId: fieldDefinition.fieldId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
entityId,
|
||||
}),
|
||||
);
|
||||
|
||||
@ -10,7 +10,7 @@ export const useIsFieldEmpty = () => {
|
||||
const isFieldEmpty = useRecoilValue(
|
||||
isEntityFieldEmptyFamilySelector({
|
||||
fieldDefinition: {
|
||||
fieldId: fieldDefinition.fieldId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
label: fieldDefinition.label,
|
||||
type: fieldDefinition.type,
|
||||
metadata: fieldDefinition.metadata,
|
||||
|
||||
@ -27,7 +27,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'date',
|
||||
fieldMetadataId: 'date',
|
||||
label: 'Date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
|
||||
@ -32,7 +32,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'double-text',
|
||||
fieldMetadataId: 'double-text',
|
||||
label: 'Double-Text',
|
||||
type: 'DOUBLE_TEXT',
|
||||
metadata: {
|
||||
|
||||
@ -26,7 +26,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'email',
|
||||
fieldMetadataId: 'email',
|
||||
label: 'Email',
|
||||
type: 'EMAIL',
|
||||
metadata: {
|
||||
|
||||
@ -25,7 +25,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'money',
|
||||
fieldMetadataId: 'money',
|
||||
label: 'Money',
|
||||
type: 'MONEY_AMOUNT',
|
||||
metadata: {
|
||||
|
||||
@ -25,7 +25,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'number',
|
||||
fieldMetadataId: 'number',
|
||||
label: 'Number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
|
||||
@ -26,7 +26,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'phone',
|
||||
fieldMetadataId: 'phone',
|
||||
label: 'Phone',
|
||||
type: 'PHONE',
|
||||
metadata: {
|
||||
|
||||
@ -25,7 +25,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'text',
|
||||
fieldMetadataId: 'text',
|
||||
label: 'Text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
|
||||
@ -26,7 +26,7 @@ const meta: Meta = {
|
||||
value={{
|
||||
entityId: '',
|
||||
fieldDefinition: {
|
||||
fieldId: 'URL',
|
||||
fieldMetadataId: 'URL',
|
||||
label: 'URL',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
|
||||
@ -34,7 +34,7 @@ const BooleanFieldInputWithContext = ({
|
||||
return (
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'boolean',
|
||||
fieldMetadataId: 'boolean',
|
||||
label: 'Boolean',
|
||||
type: 'BOOLEAN',
|
||||
metadata: {
|
||||
|
||||
@ -44,7 +44,7 @@ const ChipFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'chip',
|
||||
fieldMetadataId: 'chip',
|
||||
label: 'Chip',
|
||||
type: 'CHIP',
|
||||
metadata: {
|
||||
|
||||
@ -44,7 +44,7 @@ const DateFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'date',
|
||||
fieldMetadataId: 'date',
|
||||
label: 'Date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
|
||||
@ -57,7 +57,7 @@ const DoubleTextChipFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'double-text-chip',
|
||||
fieldMetadataId: 'double-text-chip',
|
||||
label: 'Double-Text-Chip',
|
||||
type: 'DOUBLE_TEXT_CHIP',
|
||||
metadata: {
|
||||
|
||||
@ -55,7 +55,7 @@ const DoubleTextFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'double-text',
|
||||
fieldMetadataId: 'double-text',
|
||||
label: 'Double-Text',
|
||||
type: 'DOUBLE_TEXT',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const EmailFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'email',
|
||||
fieldMetadataId: 'email',
|
||||
label: 'Email',
|
||||
type: 'EMAIL',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const MoneyFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'moneyAmount',
|
||||
fieldMetadataId: 'moneyAmount',
|
||||
label: 'MoneyAmout',
|
||||
type: 'MONEY_AMOUNT',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const NumberFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'number',
|
||||
fieldMetadataId: 'number',
|
||||
label: 'Number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const PhoneFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'phone',
|
||||
fieldMetadataId: 'phone',
|
||||
label: 'Phone',
|
||||
type: 'PHONE',
|
||||
metadata: {
|
||||
|
||||
@ -41,7 +41,7 @@ const ProbabilityFieldInputWithContext = ({
|
||||
return (
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'probability',
|
||||
fieldMetadataId: 'probability',
|
||||
label: 'Probability',
|
||||
type: 'PROBABILITY',
|
||||
metadata: {
|
||||
|
||||
@ -46,7 +46,7 @@ const RelationFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'relation',
|
||||
fieldMetadataId: 'relation',
|
||||
label: 'Relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const TextFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'text',
|
||||
fieldMetadataId: 'text',
|
||||
label: 'Text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
|
||||
@ -43,7 +43,7 @@ const URLFieldInputWithContext = ({
|
||||
<div>
|
||||
<FieldContextProvider
|
||||
fieldDefinition={{
|
||||
fieldId: 'url',
|
||||
fieldMetadataId: 'url',
|
||||
label: 'URL',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
|
||||
@ -4,7 +4,7 @@ import { FieldInitialValue } from '../types/FieldInitialValue';
|
||||
|
||||
export const entityFieldInitialValueFamilyState = atomFamily<
|
||||
FieldInitialValue | undefined,
|
||||
{ entityId: string; fieldId: string }
|
||||
{ entityId: string; fieldMetadataId: string }
|
||||
>({
|
||||
key: 'entityFieldInitialValueFamilyState',
|
||||
default: undefined,
|
||||
|
||||
@ -33,7 +33,7 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
|
||||
}: {
|
||||
fieldDefinition: Pick<
|
||||
FieldDefinition<FieldMetadata>,
|
||||
'type' | 'metadata' | 'fieldId' | 'label'
|
||||
'type' | 'metadata' | 'fieldMetadataId' | 'label'
|
||||
>;
|
||||
entityId: string;
|
||||
}) => {
|
||||
|
||||
@ -5,7 +5,7 @@ import { FieldMetadata } from './FieldMetadata';
|
||||
import { FieldType } from './FieldType';
|
||||
|
||||
export type FieldDefinition<T extends FieldMetadata> = {
|
||||
fieldId: string;
|
||||
fieldMetadataId: string;
|
||||
label: string;
|
||||
Icon?: IconComponent;
|
||||
type: FieldType;
|
||||
|
||||
@ -14,7 +14,7 @@ export const ObjectFilterDropdownDateSearchInput = () => {
|
||||
if (!filterDefinitionUsedInDropdown || !selectedOperandInDropdown) return;
|
||||
|
||||
selectFilter?.({
|
||||
fieldId: filterDefinitionUsedInDropdown.fieldId,
|
||||
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
value: date.toISOString(),
|
||||
operand: selectedOperandInDropdown,
|
||||
displayValue: date.toLocaleDateString(),
|
||||
|
||||
@ -42,7 +42,7 @@ export const ObjectFilterDropdownEntitySearchSelect = ({
|
||||
|
||||
selectFilter?.({
|
||||
displayValue: selectedEntity.name,
|
||||
fieldId: filterDefinitionUsedInDropdown.fieldId,
|
||||
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
operand: selectedOperandInDropdown,
|
||||
value: selectedEntity.id,
|
||||
displayAvatarUrl: selectedEntity.avatarUrl,
|
||||
@ -72,7 +72,7 @@ export const ObjectFilterDropdownEntitySearchSelect = ({
|
||||
|
||||
selectFilter?.({
|
||||
displayValue: filterDefinitionUsedInDropdown.selectAllLabel,
|
||||
fieldId: filterDefinitionUsedInDropdown.fieldId,
|
||||
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
operand: ViewFilterOperand.IsNotNull,
|
||||
value: '',
|
||||
definition: filterDefinitionUsedInDropdown,
|
||||
|
||||
@ -20,7 +20,7 @@ export const ObjectFilterDropdownNumberSearchInput = () => {
|
||||
placeholder={filterDefinitionUsedInDropdown.label}
|
||||
onChange={(event: ChangeEvent<HTMLInputElement>) => {
|
||||
selectFilter?.({
|
||||
fieldId: filterDefinitionUsedInDropdown.fieldId,
|
||||
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
value: event.target.value,
|
||||
operand: selectedOperandInDropdown,
|
||||
displayValue: event.target.value,
|
||||
|
||||
@ -26,7 +26,7 @@ export const ObjectFilterDropdownOperandSelect = () => {
|
||||
|
||||
if (filterDefinitionUsedInDropdown && selectedFilter) {
|
||||
selectFilter?.({
|
||||
fieldId: selectedFilter.fieldId,
|
||||
fieldMetadataId: selectedFilter.fieldMetadataId,
|
||||
displayValue: selectedFilter.displayValue,
|
||||
operand: newOperand,
|
||||
value: selectedFilter.value,
|
||||
|
||||
@ -26,7 +26,7 @@ export const ObjectFilterDropdownTextSearchInput = () => {
|
||||
setObjectFilterDropdownSearchInput(event.target.value);
|
||||
|
||||
selectFilter?.({
|
||||
fieldId: filterDefinitionUsedInDropdown.fieldId,
|
||||
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
value: event.target.value,
|
||||
operand: selectedOperandInDropdown,
|
||||
displayValue: event.target.value,
|
||||
|
||||
@ -3,7 +3,7 @@ import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
|
||||
import { FilterDefinition } from './FilterDefinition';
|
||||
|
||||
export type Filter = {
|
||||
fieldId: string;
|
||||
fieldMetadataId: string;
|
||||
value: string;
|
||||
displayValue: string;
|
||||
displayAvatarUrl?: string;
|
||||
|
||||
@ -3,7 +3,7 @@ import { IconComponent } from '@/ui/display/icon/types/IconComponent';
|
||||
import { FilterType } from './FilterType';
|
||||
|
||||
export type FilterDefinition = {
|
||||
fieldId: string;
|
||||
fieldMetadataId: string;
|
||||
label: string;
|
||||
Icon: IconComponent;
|
||||
type: FilterType;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { FilterDefinition } from './FilterDefinition';
|
||||
|
||||
export type FilterDefinitionByEntity<T> = FilterDefinition & {
|
||||
fieldId: keyof T;
|
||||
fieldMetadataId: keyof T;
|
||||
};
|
||||
|
||||
@ -18,7 +18,7 @@ export const turnFilterIntoWhereClause = (
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.IsNotNull:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
not: null,
|
||||
},
|
||||
};
|
||||
@ -28,14 +28,14 @@ export const turnFilterIntoWhereClause = (
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.Contains:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
contains: filter.value,
|
||||
mode: QueryMode.Insensitive,
|
||||
},
|
||||
};
|
||||
case ViewFilterOperand.DoesNotContain:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
not: {
|
||||
contains: filter.value,
|
||||
mode: QueryMode.Insensitive,
|
||||
@ -51,13 +51,13 @@ export const turnFilterIntoWhereClause = (
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.GreaterThan:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
gte: parseFloat(filter.value),
|
||||
},
|
||||
};
|
||||
case ViewFilterOperand.LessThan:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
lte: parseFloat(filter.value),
|
||||
},
|
||||
};
|
||||
@ -70,13 +70,13 @@ export const turnFilterIntoWhereClause = (
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.GreaterThan:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
gte: filter.value,
|
||||
},
|
||||
};
|
||||
case ViewFilterOperand.LessThan:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
lte: filter.value,
|
||||
},
|
||||
};
|
||||
@ -89,13 +89,13 @@ export const turnFilterIntoWhereClause = (
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.Is:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
equals: filter.value,
|
||||
},
|
||||
};
|
||||
case ViewFilterOperand.IsNot:
|
||||
return {
|
||||
[filter.fieldId]: {
|
||||
[filter.fieldMetadataId]: {
|
||||
not: { equals: filter.value },
|
||||
},
|
||||
};
|
||||
|
||||
@ -17,11 +17,11 @@ export const turnFiltersIntoWhereClauseV2 = (
|
||||
|
||||
filters.forEach((filter) => {
|
||||
const correspondingField = fields.find(
|
||||
(field) => field.id === filter.fieldId,
|
||||
(field) => field.id === filter.fieldMetadataId,
|
||||
);
|
||||
if (!correspondingField) {
|
||||
throw new Error(
|
||||
`Could not find field ${filter.fieldId} in metadata object`,
|
||||
`Could not find field ${filter.fieldMetadataId} in metadata object`,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ export const ObjectSortDropdownButton = ({
|
||||
const handleAddSort = (selectedSortDefinition: SortDefinition) => {
|
||||
toggleDropdown();
|
||||
onSortSelect?.({
|
||||
fieldId: selectedSortDefinition.fieldId,
|
||||
fieldMetadataId: selectedSortDefinition.fieldMetadataId,
|
||||
direction: selectedSortDirection,
|
||||
definition: selectedSortDefinition,
|
||||
});
|
||||
|
||||
@ -2,7 +2,7 @@ import { SortDefinition } from './SortDefinition';
|
||||
import { SortDirection } from './SortDirection';
|
||||
|
||||
export type Sort = {
|
||||
fieldId: string;
|
||||
fieldMetadataId: string;
|
||||
direction: SortDirection;
|
||||
definition: SortDefinition;
|
||||
};
|
||||
|
||||
@ -3,7 +3,7 @@ import { IconComponent } from '@/ui/display/icon/types/IconComponent';
|
||||
import { SortDirection } from './SortDirection';
|
||||
|
||||
export type SortDefinition = {
|
||||
fieldId: string;
|
||||
fieldMetadataId: string;
|
||||
label: string;
|
||||
Icon?: IconComponent;
|
||||
getOrderByTemplate?: (direction: SortDirection) => any[];
|
||||
|
||||
@ -10,7 +10,7 @@ export const reduceSortsToOrderBy = (sorts: Sort[]): any[] =>
|
||||
if (sort.definition.getOrderByTemplate) {
|
||||
return sort.definition.getOrderByTemplate(direction);
|
||||
} else {
|
||||
return [{ [sort.definition.fieldId]: direction }];
|
||||
return [{ [sort.definition.fieldMetadataId]: direction }];
|
||||
}
|
||||
})
|
||||
.flat();
|
||||
|
||||
@ -9,11 +9,11 @@ export const turnSortsIntoOrderByV2 = (
|
||||
const sortsObject: Record<string, 'AscNullsFirst' | 'DescNullsLast'> = {};
|
||||
sorts.forEach((sort) => {
|
||||
const correspondingField = fields.find(
|
||||
(field) => field.id === sort.fieldId,
|
||||
(field) => field.id === sort.fieldMetadataId,
|
||||
);
|
||||
if (!correspondingField) {
|
||||
throw new Error(
|
||||
`Could not find field ${sort.fieldId} in metadata object`,
|
||||
`Could not find field ${sort.fieldMetadataId} in metadata object`,
|
||||
);
|
||||
}
|
||||
const direction =
|
||||
|
||||
@ -21,7 +21,7 @@ export const ColumnHeadWithDropdown = ({
|
||||
primaryColumnKey,
|
||||
}: ColumnHeadWithDropdownProps) => {
|
||||
return (
|
||||
<DropdownScope dropdownScopeId={column.fieldId + '-header'}>
|
||||
<DropdownScope dropdownScopeId={column.fieldMetadataId + '-header'}>
|
||||
<Dropdown
|
||||
clickableComponent={<ColumnHead column={column} />}
|
||||
dropdownComponents={
|
||||
@ -34,7 +34,7 @@ export const ColumnHeadWithDropdown = ({
|
||||
}
|
||||
dropdownOffset={{ x: -1 }}
|
||||
dropdownPlacement="bottom-start"
|
||||
dropdownHotkeyScope={{ scope: column.fieldId + '-header' }}
|
||||
dropdownHotkeyScope={{ scope: column.fieldMetadataId + '-header' }}
|
||||
/>
|
||||
</DropdownScope>
|
||||
);
|
||||
|
||||
@ -46,7 +46,7 @@ export const RecordTableColumnDropdownMenu = ({
|
||||
handleColumnVisibilityChange(column);
|
||||
};
|
||||
|
||||
return column.fieldId === primaryColumnKey ? (
|
||||
return column.fieldMetadataId === primaryColumnKey ? (
|
||||
<></>
|
||||
) : (
|
||||
<DropdownMenuItemsContainer>
|
||||
|
||||
@ -156,7 +156,7 @@ export const RecordTableHeader = () => {
|
||||
|
||||
if (nextWidth !== tableColumnsByKey[resizedFieldKey].size) {
|
||||
const nextColumns = tableColumns.map((column) =>
|
||||
column.fieldId === resizedFieldKey
|
||||
column.fieldMetadataId === resizedFieldKey
|
||||
? { ...column, size: nextWidth }
|
||||
: column,
|
||||
);
|
||||
@ -194,11 +194,13 @@ export const RecordTableHeader = () => {
|
||||
</th>
|
||||
{visibleTableColumns.map((column) => (
|
||||
<StyledColumnHeaderCell
|
||||
key={column.fieldId}
|
||||
isResizing={resizedFieldKey === column.fieldId}
|
||||
key={column.fieldMetadataId}
|
||||
isResizing={resizedFieldKey === column.fieldMetadataId}
|
||||
columnWidth={Math.max(
|
||||
tableColumnsByKey[column.fieldId].size +
|
||||
(resizedFieldKey === column.fieldId ? resizeFieldOffset : 0),
|
||||
tableColumnsByKey[column.fieldMetadataId].size +
|
||||
(resizedFieldKey === column.fieldMetadataId
|
||||
? resizeFieldOffset
|
||||
: 0),
|
||||
COLUMN_MIN_WIDTH,
|
||||
)}
|
||||
>
|
||||
@ -209,20 +211,21 @@ export const RecordTableHeader = () => {
|
||||
isLastColumn={
|
||||
column.position === visibleTableColumns.length - 1
|
||||
}
|
||||
primaryColumnKey={primaryColumn?.fieldId || ''}
|
||||
primaryColumnKey={primaryColumn?.fieldMetadataId || ''}
|
||||
/>
|
||||
</StyledColumnHeadContainer>
|
||||
<StyledResizeHandler
|
||||
className="cursor-col-resize"
|
||||
role="separator"
|
||||
onPointerDown={() => {
|
||||
setResizedFieldKey(column.fieldId);
|
||||
setResizedFieldKey(column.fieldMetadataId);
|
||||
}}
|
||||
/>
|
||||
</StyledColumnHeaderCell>
|
||||
))}
|
||||
{hiddenTableColumns.length > 0 && (
|
||||
<StyledPlusIconHeaderCell>
|
||||
|
||||
<StyledPlusIconHeaderCell>
|
||||
{hiddenTableColumns.length > 0 && (
|
||||
<DropdownScope
|
||||
dropdownScopeId={HIDDEN_TABLE_COLUMN_DROPDOWN_SCOPE_ID}
|
||||
>
|
||||
@ -239,8 +242,8 @@ export const RecordTableHeader = () => {
|
||||
}}
|
||||
/>
|
||||
</DropdownScope>
|
||||
</StyledPlusIconHeaderCell>
|
||||
)}
|
||||
)}
|
||||
</StyledPlusIconHeaderCell>
|
||||
</tr>
|
||||
</StyledTableHead>
|
||||
);
|
||||
|
||||
@ -32,7 +32,7 @@ export const RecordTableHeaderPlusButtonContent = () => {
|
||||
<DropdownMenuItemsContainer>
|
||||
{hiddenTableColumns.map((column) => (
|
||||
<MenuItem
|
||||
key={column.fieldId}
|
||||
key={column.fieldMetadataId}
|
||||
iconButtons={[
|
||||
{
|
||||
Icon: IconPlus,
|
||||
|
||||
@ -42,7 +42,7 @@ export const RecordTableRow = forwardRef<
|
||||
.sort((columnA, columnB) => columnA.position - columnB.position)
|
||||
.map((column, columnIndex) => {
|
||||
return (
|
||||
<ColumnContext.Provider value={column} key={column.fieldId}>
|
||||
<ColumnContext.Provider value={column} key={column.fieldMetadataId}>
|
||||
<RecordTableCell cellIndex={columnIndex} />
|
||||
</ColumnContext.Provider>
|
||||
);
|
||||
|
||||
@ -47,13 +47,14 @@ export const useTableColumns = () => {
|
||||
viewField: Omit<ColumnDefinition<FieldMetadata>, 'size' | 'position'>,
|
||||
) => {
|
||||
const isNewColumn = !tableColumns.some(
|
||||
(tableColumns) => tableColumns.fieldId === viewField.fieldId,
|
||||
(tableColumns) =>
|
||||
tableColumns.fieldMetadataId === viewField.fieldMetadataId,
|
||||
);
|
||||
|
||||
if (isNewColumn) {
|
||||
const newColumn = availableTableColumns.find(
|
||||
(availableTableColumn) =>
|
||||
availableTableColumn.fieldId === viewField.fieldId,
|
||||
availableTableColumn.fieldMetadataId === viewField.fieldMetadataId,
|
||||
);
|
||||
if (!newColumn) return;
|
||||
|
||||
@ -65,7 +66,7 @@ export const useTableColumns = () => {
|
||||
await handleColumnsChange(nextColumns);
|
||||
} else {
|
||||
const nextColumns = tableColumns.map((previousColumn) =>
|
||||
previousColumn.fieldId === viewField.fieldId
|
||||
previousColumn.fieldMetadataId === viewField.fieldMetadataId
|
||||
? { ...previousColumn, isVisible: !viewField.isVisible }
|
||||
: previousColumn,
|
||||
);
|
||||
@ -82,7 +83,8 @@ export const useTableColumns = () => {
|
||||
column: ColumnDefinition<FieldMetadata>,
|
||||
) => {
|
||||
const currentColumnArrayIndex = visibleTableColumns.findIndex(
|
||||
(visibleColumn) => visibleColumn.fieldId === column.fieldId,
|
||||
(visibleColumn) =>
|
||||
visibleColumn.fieldMetadataId === column.fieldMetadataId,
|
||||
);
|
||||
|
||||
const columns = handleColumnMove(
|
||||
|
||||
@ -42,7 +42,7 @@ export const useTableCell = () => {
|
||||
const [, setFieldInitialValue] = useRecoilState(
|
||||
entityFieldInitialValueFamilyState({
|
||||
entityId,
|
||||
fieldId: fieldDefinition.fieldId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
@ -9,10 +9,10 @@ export const hiddenTableColumnsScopedSelector = selectorFamily({
|
||||
(scopeId: string) =>
|
||||
({ get }) => {
|
||||
const columns = get(tableColumnsScopedState({ scopeId }));
|
||||
const columnKeys = columns.map(({ fieldId }) => fieldId);
|
||||
const columnKeys = columns.map(({ fieldMetadataId }) => fieldMetadataId);
|
||||
const otherAvailableColumns = get(
|
||||
availableTableColumnsScopedState({ scopeId }),
|
||||
).filter(({ fieldId }) => !columnKeys.includes(fieldId));
|
||||
).filter(({ fieldMetadataId }) => !columnKeys.includes(fieldMetadataId));
|
||||
|
||||
return [
|
||||
...columns.filter((column) => !column.isVisible),
|
||||
|
||||
@ -12,5 +12,8 @@ export const savedTableColumnsByKeyFamilySelector = selectorFamily({
|
||||
({ get }) =>
|
||||
get(savedTableColumnsFamilyState(viewId)).reduce<
|
||||
Record<string, ColumnDefinition<FieldMetadata>>
|
||||
>((result, column) => ({ ...result, [column.fieldId]: column }), {}),
|
||||
>(
|
||||
(result, column) => ({ ...result, [column.fieldMetadataId]: column }),
|
||||
{},
|
||||
),
|
||||
});
|
||||
|
||||
@ -12,5 +12,8 @@ export const tableColumnsByKeyScopedSelector = selectorFamily({
|
||||
({ get }) =>
|
||||
get(tableColumnsScopedState({ scopeId })).reduce<
|
||||
Record<string, ColumnDefinition<FieldMetadata>>
|
||||
>((result, column) => ({ ...result, [column.fieldId]: column }), {}),
|
||||
>(
|
||||
(result, column) => ({ ...result, [column.fieldMetadataId]: column }),
|
||||
{},
|
||||
),
|
||||
});
|
||||
|
||||
@ -11,12 +11,13 @@ export const visibleTableColumnsScopedSelector = selectorFamily({
|
||||
const columns = get(tableColumnsScopedState({ scopeId }));
|
||||
const availableColumnKeys = get(
|
||||
availableTableColumnsScopedState({ scopeId }),
|
||||
).map(({ fieldId }) => fieldId);
|
||||
).map(({ fieldMetadataId }) => fieldMetadataId);
|
||||
|
||||
return [...columns]
|
||||
.filter(
|
||||
(column) =>
|
||||
column.isVisible && availableColumnKeys.includes(column.fieldId),
|
||||
column.isVisible &&
|
||||
availableColumnKeys.includes(column.fieldMetadataId),
|
||||
)
|
||||
.sort((a, b) => a.position - b.position);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user