Guest User

Untitled

a guest
Feb 19th, 2018
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.51 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import {Well,
  3. FormGroup,
  4. FormControl,
  5. ControlLabel,Row,
  6. HelpBlock,
  7. Button,nav,
  8. ButtonGroup,Grid,Modal,Col} from 'react-bootstrap';
  9. import {RadioButtonGroup,RadioButton} from 'material-ui';
  10. import {routerActions} from 'react-router-redux';
  11. import {connect} from 'react-redux';
  12. import {bindActionCreators} from 'redux';
  13. import Navlayout from '../Navlayout';
  14. import Paper from 'material-ui/Paper';
  15. import Dialog from 'material-ui/Dialog';
  16. import FlatButton from 'material-ui/FlatButton';
  17. import RaisedButton from 'material-ui/RaisedButton';
  18. import PersonAdd from 'material-ui/svg-icons/social/person-add';
  19. import * as adduserActions from '../../actions/adduseractions';
  20. import * as userActions from '../../actions/useractions';
  21. import AddUserForm from './Adduser';
  22. import validation from 'react-validation-mixin';
  23. import strategy from 'react-validatorjs-strategy';
  24. import validatorjs from 'validatorjs';
  25. import classnames from 'classnames';
  26.  
  27.  
  28.  
  29. class Adduser extends Component {
  30. constructor(props){
  31. super(props);
  32. this.state ={
  33. firstName: false
  34. }
  35.  
  36. this.validatorTypes=strategy.createSchema(
  37. {
  38. firstName: 'required',
  39. lastName: 'required',
  40. address: 'required',
  41. contactNo: 'required',
  42. gender: 'required',
  43. userName: 'required',
  44. password: 'required',
  45. confirmpassword: 'required|same:password',
  46. role: 'required'
  47. },
  48. {
  49. "required": "The field :attribute is required!",
  50. "confirmpassword": "Please confirm your password"
  51. },
  52. function (validator){
  53. validator.setAttributeNames({
  54. firstName: 'First Name',
  55. lastName: 'Last Name',
  56. address: 'Address',
  57. contactNo: 'Contact Number',
  58. gender: 'Gender',
  59. userName: 'Username',
  60. password: 'Password',
  61. confirmpassword: 'Confirm Password'
  62. });
  63. }
  64. );
  65. }
  66.  
  67.  
  68. componentWillMount(){
  69. this.props.clearValidations()
  70. }
  71. handleOpen = () => {
  72. this.setState({open: true});
  73. };
  74.  
  75. handleClose = () => {
  76. this.props.adduserActions.closeAdduser();
  77. };
  78.  
  79. handleChange = () => {
  80. return (e) => {
  81. var name = e.target.name;
  82. var value = e.target.value;
  83. this.props.adduserActions.handleChange(name,value)
  84. }
  85. }
  86.  
  87. handleselectChange = () => {
  88. return(e) =>{
  89. var name = 'role';
  90. var value = e.target.value;
  91. this.props.adduserActions.handleChange(name,value)
  92. }
  93. }
  94.  
  95. addUser = () => {
  96. if (this.props.adduser.edit) {
  97. this.props.adduserActions.saveUser();
  98. this.props.userActions.getUsers();
  99. }
  100. else {
  101. this.props.adduserActions.addUser();
  102. this.props.userActions.getUsers();
  103. }
  104. }
  105.  
  106.  
  107. getValidatorData = () => {
  108. return this.props.adduser
  109. };
  110.  
  111. getClasses = (div,field) => {
  112.  
  113. if(this.state[field]){
  114. if (div === "container") {
  115. return classnames({
  116. 'success': this.props.isValid(field),
  117. 'danger': !this.props.isValid(field)
  118. });
  119. }else{
  120. return classnames({
  121. 'valid': this.props.isValid(field),
  122. 'invalid': !this.props.isValid(field)
  123. });
  124. }
  125. }
  126.  
  127.  
  128. }
  129.  
  130. onFormSubmit = (event) => {
  131. event.preventDefault();
  132.  
  133. this.props.validate(this.onValidate);
  134. };
  135.  
  136. getErrorField = (field) => {
  137. var error = this.props.errors[field];
  138. if(!error)
  139. return null;
  140. if(Array.isArray(error)){
  141. var message = [];
  142. message = error.map((item,i) =>{
  143. return (
  144. <span key={i}>
  145. {item}
  146. <br />
  147. </span>
  148. )
  149. });
  150. return message;
  151. }
  152. else
  153. return (<span>{error || ''}</span>);
  154. };
  155.  
  156. onValidate = (error) => {
  157. if(error){
  158.  
  159. }
  160. else{
  161. this.addUser()
  162. }
  163. };
  164.  
  165. render(){
  166.  
  167. const actions = [
  168. <button type="submit" class="btn btn-info" style={{marginRight:10,width:'150px'}} onClick={this.onFormSubmit} >Save</button>,
  169. <button type="button" class="btn btn-secondary" data-dismiss="modal" onClick={this.handleClose} style={{marginRight:10}}>Close</button>,
  170. ];
  171. const modalscroll={
  172. overflow: 'auto',
  173. height: '90%'
  174. }
  175. return(
  176. <Dialog
  177. title={this.props.adduser.edit ? "+Edit User" : "+Add New User" }
  178. actions={actions}
  179. modal={false}
  180. autoScrollBodyContent={true}
  181. open={this.props.adduser.open}
  182. onRequestClose={this.handleClose}
  183. >
  184. <Grid>
  185. <Col sm={9}style={{marginLeft:'14%'}}>
  186. <form>
  187. <fieldset>
  188. <FormGroup controlId="formControlsSelect">
  189. <ControlLabel>Select</ControlLabel>
  190. <FormControl onChange={this.handleselectChange()} componentClass="select"
  191. placeholder="select"
  192. onBlur={()=>{
  193. this.setState({
  194. firstName: true
  195. })
  196. this.props.validate('event');
  197. }}>
  198. <option value="staff">Staff</option>
  199. <option value="kitchen">Kitchen</option>
  200. </FormControl>
  201. </FormGroup>
  202. <div class={"form-group has-"+ this.getClasses("container",'firstName')}>
  203. <label for="exampleInputEmail1">First Name</label>
  204. <input name="firstName"
  205. onChange={this.handleChange()}
  206. onBlur={()=>{
  207. this.setState({
  208. firstName: true
  209. })
  210. this.props.validate('firstName');
  211. }}
  212. class={"form-control is-"+ this.getClasses("input",'firstName')}
  213. value={this.props.adduser.firstName}
  214. type="text"
  215. id="inputValid"
  216. />
  217. <div class={this.getClasses("input",'firstName') + "-feedback"} style={this.state.firstName ? {display: "block"} : {display: "none"}}>
  218. {this.getErrorField('firstName')}
  219. </div>
  220. </div>
  221. <div class="form-group">
  222. <label for="exampleInputEmail1">Last Name</label>
  223. <input name="lastName" onChange={this.handleChange()} value={this.props.adduser.lastName} type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  224. </div>
  225. <div class="form-group">
  226. <label for="exampleInputEmail1">Address</label>
  227. <input name="address" onChange={this.handleChange()} value={this.props.adduser.address} type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  228. </div>
  229. <div class="form-group">
  230. <label for="exampleInputEmail1">Contact No.</label>
  231. <input name="contactNo" onChange={this.handleChange()} value={this.props.adduser.contactNo} type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  232. </div>
  233. <Row>
  234. <label for="exampleInputEmail1">
  235. <Col md={4}>
  236. Gender
  237. </Col>
  238. </label>
  239. <RadioButtonGroup
  240. name="gender"
  241. defaultSelected="Male"
  242. valueSelected={this.props.adduser.gender}
  243. onChange={this.handleChange()}>
  244.  
  245. <RadioButton
  246. value="Male"
  247. label="Male"/>
  248.  
  249. <RadioButton
  250. value="Female"
  251. label="Female"/>
  252.  
  253. </RadioButtonGroup>
  254. </Row>
  255. <div class="form-group">
  256. <label for="exampleInputEmail1">Username</label>
  257. <input name="userName" onChange={this.handleChange()} value={this.props.adduser.userName} type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  258. </div>
  259. <div class="form-group">
  260. <label for="exampleInputEmail1">Password</label>
  261. <input name="password" onChange={this.handleChange()} value={this.props.adduser.password} type="password" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  262. </div>
  263. <div class="form-group">
  264. <label for="exampleInputEmail1">Confirm Password</label>
  265. <input name="seepassword" onChange={this.handleChange()} value={this.props.adduser.seepassword} type="password" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"/>
  266. </div>
  267. </fieldset>
  268. </form>
  269. </Col>
  270. </Grid>
  271. </Dialog>
  272. )
  273. }
  274.  
  275. }
  276.  
  277. export default validation(strategy)(Adduser);
Add Comment
Please, Sign In to add comment