@@ -38,36 +38,36 @@ export const ClassFieldsEditor = (props) => {
38
38
isModalOpen : false ,
39
39
selectedRowId : undefined ,
40
40
rows : transformedRows ( ) ,
41
+ formKey : true , // for remounting
41
42
} ) ;
42
43
43
44
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 ,
51
50
} ) ) ;
52
51
} ;
53
52
54
53
const editClassField = ( selectedRow ) => {
55
- debugger
56
- const rowId = parseInt ( selectedRow . id , 10 ) ;
54
+ const rowId = selectedRow . id ;
57
55
setState ( ( state ) => ( {
58
56
...state ,
59
57
selectedRowId : rowId ,
60
58
isModalOpen : true ,
61
- // form: {
62
- // type: 'replication',
63
- // className: 'replication_form',
64
- // action: 'edit',
65
- // },
66
- // selectedSubscription: subscriptions[rowId],
59
+ formKey : ! state . formKey ,
67
60
} ) ) ;
68
61
} ;
69
62
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 ) => {
71
71
setState ( ( state ) => ( { ...state , selectedRowId : selectedRow . id } ) ) ;
72
72
switch ( cellType ) {
73
73
case CellAction . buttonCallback : {
@@ -92,7 +92,7 @@ export const ClassFieldsEditor = (props) => {
92
92
// setModalOpen(false);
93
93
setState ( ( state ) => ( { ...state , isModalOpen : false } ) ) ;
94
94
} ;
95
-
95
+
96
96
const renderAddFieldButton = ( ) => (
97
97
< div className = "custom-accordion-buttons" >
98
98
< Button
@@ -109,12 +109,11 @@ export const ClassFieldsEditor = (props) => {
109
109
</ div >
110
110
) ;
111
111
112
- const formatFieldValues = ( field ) => {
113
- debugger
112
+ const formatFieldValues = ( field , id ) => {
114
113
if ( ! field || typeof field !== 'object' ) return [ ] ;
115
114
116
115
const row = {
117
- id : ( field . id || state . rows . length ) . toString ( ) ,
116
+ id : ( field . id || id ) . toString ( ) ,
118
117
name : { text : field . name , icon : field . icons } ,
119
118
aetype : { text : field . aetype } ,
120
119
datatype : { text : field . datatype } ,
@@ -149,25 +148,26 @@ export const ClassFieldsEditor = (props) => {
149
148
} ;
150
149
151
150
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 ) => ( {
164
165
...prevState ,
165
166
rows : [ ...prevState . rows , data ] ,
166
- } ;
167
+ } ) ) ;
168
+ } ) . catch ( ( error ) => {
167
169
} ) ;
168
- } ) . catch ( ( error ) => {
169
- console . error ( 'Response:' , error ) ;
170
- } ) ;
170
+ }
171
171
172
172
handleModalClose ( ) ;
173
173
} ;
@@ -196,6 +196,7 @@ export const ClassFieldsEditor = (props) => {
196
196
passiveModal
197
197
>
198
198
< MiqFormRenderer
199
+ key = { state . formKey }
199
200
schema = { createClassFieldsSchema (
200
201
aeTypeOptions ,
201
202
dTypeOptions ,
0 commit comments