Skip to content

Commit 23c11bc

Browse files
committed
Updates data in ui properly
1 parent 17c92ae commit 23c11bc

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

app/javascript/components/data-tables/datastore/class-fields-editor.jsx

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,36 @@ export const ClassFieldsEditor = (props) => {
3838
isModalOpen: false,
3939
selectedRowId: undefined,
4040
rows: transformedRows(),
41+
formKey: true, // for remounting
4142
});
4243

4344
const handleOnAddFieldClick = () => {
44-
setState((state) => ({ ...state, selectedRowId: undefined, isModalOpen: true }));
45-
};
46-
47-
const deleteClassField = (selectedRow) => {
48-
setState((prevState) => ({
49-
...prevState,
50-
rows: prevState.rows.filter((field) => field.id !== selectedRow.id),
45+
setState((state) => ({
46+
...state,
47+
selectedRowId: undefined,
48+
isModalOpen: true,
49+
formKey: !state.formKey,
5150
}));
5251
};
5352

5453
const editClassField = (selectedRow) => {
55-
debugger
56-
const rowId = parseInt(selectedRow.id, 10);
54+
const rowId = selectedRow.id;
5755
setState((state) => ({
5856
...state,
5957
selectedRowId: rowId,
6058
isModalOpen: true,
61-
// form: {
62-
// type: 'replication',
63-
// className: 'replication_form',
64-
// action: 'edit',
65-
// },
66-
// selectedSubscription: subscriptions[rowId],
59+
formKey: !state.formKey,
6760
}));
6861
};
6962

70-
const onCellClick = (selectedRow, cellType, event) => {
63+
const deleteClassField = (selectedRow) => {
64+
setState((prevState) => ({
65+
...prevState,
66+
rows: prevState.rows.filter((field) => field.id !== selectedRow.id),
67+
}));
68+
};
69+
70+
const onCellClick = (selectedRow, cellType) => {
7171
setState((state) => ({ ...state, selectedRowId: selectedRow.id }));
7272
switch (cellType) {
7373
case CellAction.buttonCallback: {
@@ -92,7 +92,7 @@ export const ClassFieldsEditor = (props) => {
9292
// setModalOpen(false);
9393
setState((state) => ({ ...state, isModalOpen: false }));
9494
};
95-
95+
9696
const renderAddFieldButton = () => (
9797
<div className="custom-accordion-buttons">
9898
<Button
@@ -109,12 +109,11 @@ export const ClassFieldsEditor = (props) => {
109109
</div>
110110
);
111111

112-
const formatFieldValues = (field) => {
113-
debugger
112+
const formatFieldValues = (field, id) => {
114113
if (!field || typeof field !== 'object') return [];
115114

116115
const row = {
117-
id: (field.id || state.rows.length).toString(),
116+
id: (field.id || id).toString(),
118117
name: { text: field.name, icon: field.icons },
119118
aetype: { text: field.aetype },
120119
datatype: { text: field.datatype },
@@ -149,25 +148,26 @@ export const ClassFieldsEditor = (props) => {
149148
};
150149

151150
const onModalSubmit = (values) => {
152-
http.post(`/miq_ae_class/field_accept?button=accept`, values, {
153-
skipErrors: [400],
154-
}).then(() => {
155-
const data = formatFieldValues(values);
156-
// const clonedData = JSON.parse(JSON.stringify(data));
157-
// setState((prevState) => ({
158-
// ...prevState,
159-
// rows: [...prevState.rows, data],
160-
// }));
161-
setState((prevState) => {
162-
debugger;
163-
return {
151+
if (state.selectedRowId !== undefined) {
152+
// Edit a field
153+
const data = formatFieldValues(values, state.selectedRowId);
154+
setState((prevState) => ({
155+
...prevState,
156+
rows: prevState.rows.map((field) => (field.id === data.id ? data : field)),
157+
}));
158+
} else {
159+
// Add a field
160+
http.post(`/miq_ae_class/field_accept?button=accept`, values, {
161+
skipErrors: [400],
162+
}).then(() => {
163+
const data = formatFieldValues(values, state.rows.length);
164+
setState((prevState) => ({
164165
...prevState,
165166
rows: [...prevState.rows, data],
166-
};
167+
}));
168+
}).catch((error) => {
167169
});
168-
}).catch((error) => {
169-
console.error('Response:', error);
170-
});
170+
}
171171

172172
handleModalClose();
173173
};
@@ -196,6 +196,7 @@ export const ClassFieldsEditor = (props) => {
196196
passiveModal
197197
>
198198
<MiqFormRenderer
199+
key={state.formKey}
199200
schema={createClassFieldsSchema(
200201
aeTypeOptions,
201202
dTypeOptions,

app/javascript/components/data-tables/datastore/modal-form.schema.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { transformSelectOptions, handleSchemaFieldChange } from './helper';
33

44
const createClassFieldsSchema = (aeTypeOptions, dTypeOptions, selectedRowId, schemaField = {}) => {
55
const classField = schemaField;
6-
76
// const getFieldName = (fname, index) =>
87
// (typeof index !== 'undefined' ? `fields_${fname}_${index}` : `field_${fname}`);
98

0 commit comments

Comments
 (0)