@@ -21,17 +21,17 @@ const UserForm = ({ id, data }) => {
2121 const [ disableButton , setDisableButton ] = useState ( true ) ;
2222 const [ buttonProps , setButtonProps ] = useState ( { } ) ;
2323
24- useEffect ( ( ) => {
25- console . log ( password ) ;
26- console . log ( confirmPassword ) ;
27- if ( password === confirmPassword ) {
28- setShowPasswordError ( false ) ;
29- } else if ( password === '' || confirmPassword === '' ) {
30- setShowPasswordError ( false ) ;
31- } else {
32- setShowPasswordError ( true ) ;
33- }
34- } , [ password , confirmPassword ] ) ;
24+ // useEffect(() => {
25+ // console.log(password);
26+ // console.log(confirmPassword);
27+ // if (password === confirmPassword) {
28+ // setShowPasswordError(false);
29+ // } else if (password === '' || confirmPassword === '') {
30+ // setShowPasswordError(false);
31+ // } else {
32+ // setShowPasswordError(true);
33+ // }
34+ // }, [password, confirmPassword]);
3535
3636 // useEffect(() => {
3737 // console.log(editMode);
@@ -90,8 +90,21 @@ const UserForm = ({ id, data }) => {
9090 } ) ;
9191 setGroups ( temp ) ;
9292 } ) ;
93+ const values = { } ;
94+ if ( data . name ) {
95+ values . name = data . name ;
96+ }
97+ if ( data . userid ) {
98+ values . userid = data . userid ;
99+ }
100+ if ( data . email ) {
101+ values . email = data . email ;
102+ }
103+ if ( data . current_group_id ) {
104+ values . groups = [ values . current_group_id ] ;
105+ }
93106 setState ( {
94- initialValues,
107+ initialValues : values ,
95108 isLoading : false ,
96109 } ) ;
97110 }
@@ -104,12 +117,22 @@ const UserForm = ({ id, data }) => {
104117 setShowPasswordError ( true ) ;
105118 miqSparkleOff ( ) ;
106119 } else if ( id ) {
107- let groupIds = { } ;
120+ const groupIds = new Set ( ) ;
121+ const groupIdObjects = [ ] ;
108122 values . groups . forEach ( ( group ) => {
109- // groupIds.push({ id: group.value });
110- groupIds = { id : group . value } ;
123+ if ( group . value ) {
124+ groupIds . add ( group . value ) ;
125+ } else {
126+ groupIds . add ( group ) ;
127+ }
128+ } ) ;
129+ initialValues . groups . forEach ( ( group ) => {
130+ groupIds . add ( group ) ;
131+ } ) ;
132+ groupIds . forEach ( ( group ) => {
133+ groupIdObjects . push ( { id : group } ) ;
111134 } ) ;
112- console . log ( values ) ;
135+ console . log ( groupIdObjects ) ;
113136 if ( values . confirmPassword && values . confirmPassword === password ) {
114137 API . post ( `/api/users/${ id } ` ,
115138 {
@@ -119,7 +142,7 @@ const UserForm = ({ id, data }) => {
119142 userid : values . userid ,
120143 password : values . password ,
121144 email : values . email ,
122- group : groupIds ,
145+ group : groupIdObjects [ 0 ] ,
123146 } ,
124147 } ) . then ( ( ) => {
125148 miqRedirectBack ( 'edited' , 'success' , '/ops/' ) ;
@@ -132,7 +155,7 @@ const UserForm = ({ id, data }) => {
132155 name : values . name ,
133156 userid : values . userid ,
134157 email : values . email ,
135- group : groupIds ,
158+ group : groupIdObjects [ 0 ] ,
136159 } ,
137160 } ) . then ( ( ) => {
138161 miqRedirectBack ( 'edited' , 'success' , '/ops/' ) ;
@@ -166,30 +189,59 @@ const UserForm = ({ id, data }) => {
166189 miqRedirectBack ( message , 'success' , url ) ;
167190 } ;
168191
192+ const areGroupsEqual = ( selectedGroups = [ ] ) => {
193+ selectedGroups . sort ( ) ;
194+ initialValues . groups . sort ( ) ;
195+ if ( selectedGroups . length !== initialValues . groups . length ) {
196+ return false ;
197+ }
198+ return selectedGroups . every ( ( group , index ) => group === initialValues . groups [ index ] ) ;
199+ } ;
200+
169201 const passwordValidation = ( values ) => {
170202 const errors = { } ;
203+ const groupIds = [ ] ;
204+ if ( values . groups ) {
205+ values . groups . forEach ( ( group ) => {
206+ if ( group . value ) {
207+ groupIds . push ( group . value ) ;
208+ } else {
209+ groupIds . push ( group ) ;
210+ }
211+ } ) ;
212+ }
213+ if ( ! editMode && ! ! id ) {
214+ values . password = undefined ;
215+ values . confirmPassword = undefined ;
216+ if ( values . name === initialValues . name
217+ && values . userid === initialValues . userid
218+ && values . email === initialValues . email
219+ && areGroupsEqual ( groupIds ) ) {
220+ errors . confirmPassword = '' ;
221+ }
222+ }
171223
172- if ( ! values . password ) {
173- if ( id && editMode ) {
174- errors . password = 'Required' ;
175- } else if ( id === undefined ) {
224+ if ( values . password === undefined ) {
225+ if ( ! ! id && editMode ) {
176226 errors . password = 'Required' ;
177227 }
178228 }
179229
180- console . log ( values ) ;
181- if ( values . password !== values . confirmPassword ) {
230+ if ( editMode && values . password !== values . confirmPassword ) {
182231 errors . confirmPassword = 'Password/Verify Password do not match' ;
183232 }
184-
233+ if ( ! ! id === false && values . password !== values . confirmPassword ) {
234+ errors . confirmPassword = 'Password/Verify Password do not match' ;
235+ }
236+ console . log ( errors ) ;
185237 return errors ;
186238 } ;
187239
188240 if ( isLoading ) return < Loading className = "export-spinner" withOverlay = { false } small /> ;
189241 return ! isLoading && (
190242 < div className = "col-md-12 user-form" >
191243 < MiqFormRenderer
192- schema = { createSchema ( id , editMode , setEditMode , groups , password , setName , setUserid , showPasswordError , setPassword , setConfirmPassword , setEmail , setGroups ) }
244+ schema = { createSchema ( id , editMode , setEditMode , groups , password , setState , initialValues , setName , setUserid , showPasswordError , setPassword , setConfirmPassword , setEmail , setGroups ) }
193245 // FormTemplate={(props) => <FormTemplate {...props} />}
194246 initialValues = { initialValues }
195247 validate = { passwordValidation }
0 commit comments