1
- import React , { useState } from 'react' ;
1
+ import React , { useState , useEffect } from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
- import { Button , Modal } from 'carbon-components-react' ;
3
+ import { Modal } from 'carbon-components-react' ;
4
4
import MiqFormRenderer from '@@ddf' ;
5
5
import { schemaHeaders , createEditableRows } from '../helper' ;
6
- import MiqDataTable from '../../../miq-data-table' ;
7
6
import createClassFieldsSchema from './modal-form.schema' ;
8
- import { CellAction } from '../../../miq-data-table/helper' ;
9
7
// import miqRedirectBack from '../../helpers/miq-redirect-back';
8
+ import createSchemaEditSchema from './class-fields-schema' ;
9
+ import mapper from '../../../../forms/mappers/componentMapper' ;
10
+ import { SchemaTableComponent } from './schema-table' ;
10
11
11
12
export const ClassFieldsEditor = ( props ) => {
12
13
const {
13
14
initialData, aeTypeOptions, dTypeOptions,
14
15
} = props ;
15
16
16
- const fieldData = createEditableRows ( initialData ) ;
17
+ const componentMapper = {
18
+ ...mapper ,
19
+ 'schema-table' : SchemaTableComponent ,
20
+ } ;
17
21
18
- debugger
22
+ const fieldData = createEditableRows ( initialData ) ;
19
23
20
24
const transformedRows = ( ) => {
21
25
const rowItems = [ ] ;
@@ -41,76 +45,35 @@ export const ClassFieldsEditor = (props) => {
41
45
selectedRowId : undefined ,
42
46
rows : transformedRows ( ) ,
43
47
formKey : true , // for remounting
48
+ isSchemaModified : false ,
44
49
} ) ;
45
50
46
- const handleOnAddFieldClick = ( ) => {
47
- setState ( ( state ) => ( {
48
- ...state ,
49
- selectedRowId : undefined ,
50
- isModalOpen : true ,
51
- formKey : ! state . formKey ,
52
- } ) ) ;
53
- } ;
54
-
55
- const editClassField = ( selectedRow ) => {
56
- const rowId = selectedRow . id ;
57
- setState ( ( state ) => ( {
58
- ...state ,
59
- selectedRowId : rowId ,
60
- isModalOpen : true ,
61
- formKey : ! state . formKey ,
62
- } ) ) ;
63
- } ;
64
-
65
- const deleteClassField = ( selectedRow ) => {
66
- setState ( ( prevState ) => ( {
67
- ...prevState ,
68
- rows : prevState . rows . filter ( ( field ) => field . id !== selectedRow . id ) ,
69
- } ) ) ;
70
- } ;
51
+ useEffect ( ( ) => {
52
+ setState ( ( state ) => ( { ...state , isSchemaModified : ! state . isSchemaModified } ) ) ;
53
+ } , [ state . rows ] ) ;
54
+
55
+ // const editClassField = (selectedRow) => {
56
+ // const rowId = selectedRow.id;
57
+ // setState((state) => ({
58
+ // ...state,
59
+ // selectedRowId: rowId,
60
+ // isModalOpen: true,
61
+ // formKey: !state.formKey,
62
+ // }));
63
+ // };
71
64
72
- const onCellClick = ( selectedRow , cellType ) => {
73
- setState ( ( state ) => ( { ...state , selectedRowId : selectedRow . id } ) ) ;
74
- switch ( cellType ) {
75
- case CellAction . buttonCallback : {
76
- switch ( selectedRow . callbackAction ) {
77
- case 'editClassField' :
78
- editClassField ( selectedRow ) ;
79
- break ;
80
- case 'deleteClassField' :
81
- deleteClassField ( selectedRow ) ;
82
- break ;
83
- default :
84
- break ;
85
- }
86
- break ;
87
- }
88
- // default: onItemClick(findItem(selectedRow)); break;
89
- default : break ;
90
- }
91
- } ;
65
+ // const deleteClassField = (selectedRow) => {
66
+ // setState((prevState) => ({
67
+ // ...prevState,
68
+ // rows: prevState.rows.filter((field) => field.id !== selectedRow.id),
69
+ // }));
70
+ // };
92
71
93
72
const handleModalClose = ( ) => {
94
73
// setModalOpen(false);
95
74
setState ( ( state ) => ( { ...state , isModalOpen : false } ) ) ;
96
75
} ;
97
76
98
- const renderAddFieldButton = ( ) => (
99
- < div className = "custom-accordion-buttons" >
100
- < Button
101
- kind = "primary"
102
- className = "btnRight"
103
- type = "submit"
104
- title = { __ ( 'Click to add a new field' ) }
105
- onClick = { handleOnAddFieldClick }
106
- // onClick={() => setModalOpen(true)}
107
- // onKeyPress={() => onSelect('new')}
108
- >
109
- { __ ( 'Add a Field' ) }
110
- </ Button >
111
- </ div >
112
- ) ;
113
-
114
77
const formatFieldValues = ( field , id , data = { } ) => {
115
78
if ( ! field || typeof field !== 'object' ) return [ ] ;
116
79
@@ -194,9 +157,19 @@ export const ClassFieldsEditor = (props) => {
194
157
window . location . reload ( ) ;
195
158
} ;
196
159
160
+ debugger
161
+
197
162
return (
198
163
< >
199
- { renderAddFieldButton ( ) }
164
+
165
+ < MiqFormRenderer
166
+ schema = { createSchemaEditSchema ( state . rows , setState , state . isSchemaModified ) }
167
+ componentMapper = { componentMapper }
168
+ onSubmit = { onSchemaSave }
169
+ onCancel = { onCancel }
170
+ canReset
171
+ buttonsLabels = { { submitLabel : __ ( 'Save' ) } }
172
+ />
200
173
201
174
< Modal
202
175
open = { state . isModalOpen }
@@ -218,36 +191,6 @@ export const ClassFieldsEditor = (props) => {
218
191
buttonsLabels = { { submitLabel : __ ( 'Acc/savw' ) } }
219
192
/>
220
193
</ Modal >
221
-
222
- < MiqDataTable
223
- headers = { [
224
- { key : 'name' , header : __ ( 'Name' ) } ,
225
- { key : 'description' , header : __ ( 'Description' ) } ,
226
- { key : 'default_value' , header : __ ( 'Default Value' ) } ,
227
- { key : 'collect' , header : __ ( 'Collect' ) } ,
228
- { key : 'message' , header : __ ( 'Message' ) } ,
229
- { key : 'on_entry' , header : __ ( 'On Entry' ) } ,
230
- { key : 'on_exit' , header : __ ( 'On Exit' ) } ,
231
- { key : 'on_error' , header : __ ( 'On Error' ) } ,
232
- { key : 'max_retries' , header : __ ( 'Max Retries' ) } ,
233
- { key : 'max_time' , header : __ ( 'Max Time' ) } ,
234
- { key : 'edit' , header : __ ( 'Edit' ) } ,
235
- { key : 'delete' , header : __ ( 'Delete' ) } ,
236
- ] }
237
- rows = { state . rows }
238
- size = "md"
239
- sortable = { false }
240
- onCellClick = { ( selectedRow , cellType , event ) =>
241
- onCellClick ( selectedRow , cellType , event ) }
242
- />
243
- < >
244
- < MiqFormRenderer
245
- onSubmit = { onSchemaSave }
246
- onCancel = { onCancel }
247
- canReset
248
- buttonsLabels = { { submitLabel : __ ( 'Save' ) } }
249
- />
250
- </ >
251
194
</ >
252
195
) ;
253
196
} ;
@@ -257,7 +200,6 @@ ClassFieldsEditor.propTypes = {
257
200
initialData : PropTypes . arrayOf ( PropTypes . any ) . isRequired ,
258
201
aeTypeOptions : PropTypes . arrayOf ( PropTypes . any ) ,
259
202
dTypeOptions : PropTypes . arrayOf ( PropTypes . any ) ,
260
- // onCellClick: PropTypes.func.isRequired,
261
203
} ;
262
204
263
205
ClassFieldsEditor . defaultProps = {
0 commit comments