Skip to content

Commit afa2d7a

Browse files
committed
[Index] force column type selection on add via edit modal
1 parent f645880 commit afa2d7a

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

src/CoreShop/Bundle/IndexBundle/Resources/assets/pimcore-studio/src/modules/indexes/components/ColumnsPanel.tsx

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,26 @@ export const ColumnsPanel: React.FC<ColumnsPanelProps> = ({
6969
return
7070
}
7171

72-
// Create new column with defaults
73-
const newColumn: IndexColumn = {
72+
// `field.dataType` is the Pimcore ClassDefinition fieldtype (e.g. 'input', 'numeric'),
73+
// not a valid index column type. Open the edit modal with the draft column and let the
74+
// user pick a valid index column type (STRING, INTEGER, …). The column is only appended
75+
// once the user clicks Apply (see handleSaveField with editingIndex === null).
76+
const draftColumn: IndexColumn = {
7477
name: field.name || field.objectKey || '',
7578
objectKey: field.objectKey || '',
7679
objectType: field.objectType,
7780
dataType: field.dataType,
78-
columnType: field.dataType || 'TEXT',
81+
columnType: undefined,
7982
getter: field.getter,
8083
getterConfig: field.configuration,
8184
interpreter: field.interpreter,
8285
interpreterConfig: undefined,
8386
configuration: field.configuration
8487
}
8588

86-
onChange({
87-
...index,
88-
columns: [...columns, newColumn]
89-
})
89+
setEditingColumn(draftColumn)
90+
setEditingIndex(null)
91+
setDialogVisible(true)
9092
}
9193

9294
const handleDrop = (info: DragAndDropInfo) => {
@@ -102,14 +104,21 @@ export const ColumnsPanel: React.FC<ColumnsPanelProps> = ({
102104
}
103105

104106
const handleSaveField = (updatedColumn: IndexColumn) => {
105-
if (editingIndex !== null) {
106-
const newColumns = [...columns]
107-
newColumns[editingIndex] = updatedColumn
107+
if (editingIndex === null) {
108+
// New field — append
108109
onChange({
109110
...index,
110-
columns: newColumns
111+
columns: [...columns, updatedColumn]
111112
})
113+
return
112114
}
115+
116+
const newColumns = [...columns]
117+
newColumns[editingIndex] = updatedColumn
118+
onChange({
119+
...index,
120+
columns: newColumns
121+
})
113122
}
114123

115124
const handleCloseModal = () => {

src/CoreShop/Bundle/IndexBundle/Resources/assets/pimcore-studio/src/modules/indexes/components/FieldEditModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export const FieldEditModal: React.FC<FieldEditModalProps> = ({
5656
name: field.name || '',
5757
getter: field.getter || undefined,
5858
interpreter: field.interpreter || undefined,
59-
columnType: field.columnType || 'INTEGER'
59+
columnType: field.columnType || undefined
6060
})
6161
setSelectedGetter(field.getter)
6262
setSelectedInterpreter(field.interpreter)

0 commit comments

Comments
 (0)