Guest User

Untitled

a guest
Dec 16th, 2016
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. import React,{Component} from 'react';
  2. import Input from './Input';
  3. import ModalWin from '../ModalWindow/ModalWin';
  4. import './InputList.css';
  5.  
  6. class InputList extends Component{
  7. constructor(props) {
  8. super(props);
  9. this.state = {
  10. clicked: false,
  11. }
  12. }
  13.  
  14. render(){
  15. const{modal, list, descTitle, hideDesc, type, multiple, ...others} = this.props;
  16. let even = true;
  17. return(
  18. <div className={this.props.modal? 'modalInputs-root': 'inputs-root'}>
  19. <div className={'inputs-container'} onClick={!modal ? this.handleClick.bind(this,true) : false} >
  20. { modal || !hideDesc ? <div className="inputs-description">
  21. <div className="descTitle first">{descTitle}</div>
  22. <div className="descTitle second">{this.props.descUnit}</div>
  23. </div> : false }
  24. <div className={ modal ? "inputList" : "inputList disable"}>
  25. <tbody>
  26. {Object.keys(list).map(function (item) {
  27. even = !even;
  28. let model = list[item];
  29. if(multiple){
  30. let names = [];
  31. let values = [];
  32. let units = [];
  33. Object.keys(model).map(function (item) {
  34. values.push(model[item].value);
  35. names.push(item);
  36. units.push(model[item].unit);
  37. });
  38. return (
  39. <Input inputKey={item} key={item} type={type} modal={modal} even={even} changeValue={this.changeValue.bind(this)} enable={model.enable}
  40. name={names[0]} name1={names[1]} value={values[0]} value1={values[1]} unit={units[0]} unit1={units[1]}/>
  41.  
  42. )
  43. }
  44. return(
  45. <Input inputKey={item} key={item} type={type} modal={modal} even={even} changeValue={this.changeValue.bind(this)}
  46. name={item} value={model.value} unit={model.unit}/>
  47. )
  48. },this)}
  49. </tbody>
  50. </div>
  51. </div>
  52. {this.state.clicked ?
  53. <ModalWin save={this.saveValues.bind(this)} update={this.handleClick.bind(this)}>
  54. <InputList multiple={multiple} modal={true} type={type} list={list} descTitle={descTitle} {...others} />
  55. </ModalWin>
  56. : false
  57. }
  58. </div>
  59. )
  60. }
  61.  
  62. cloneObject(obj) {
  63. let copy = {};
  64. if (null == obj || "object" != typeof obj) return obj;
  65. for (let attr in obj) {
  66. if (obj.hasOwnProperty(attr)) copy[attr] = this.cloneObject(obj[attr]);
  67. }
  68. return copy;
  69. }
  70.  
  71. handleClick(){
  72. this.setState({
  73. clicked: !this.state.clicked
  74. })
  75. }
  76.  
  77. changeValue(name,value,enable,key) {
  78. let oldStates = this.cloneObject(this.props.list);
  79. console.log(name,value,key,oldStates,this.props.multiple);
  80. if (this.props.multiple) {
  81. Object.keys(oldStates).map(function (item) {
  82. let model = oldStates[item];
  83. if (model[name])
  84. model[name].value = value;
  85. })
  86. }
  87. else
  88. oldStates[name].value = value;
  89. if(enable !== undefined)
  90. oldStates[key].enable = enable;
  91. this.props.changeValue(oldStates);
  92. }
  93.  
  94. saveValues(list){
  95. console.log(list);
  96. let type = this.props.descTitle;
  97. this.setState({
  98. clicked: !this.state.clicked,
  99. });
  100. if (list)
  101. this.props.save(list,type);
  102. }
  103. }
  104.  
  105. export default InputList;
Add Comment
Please, Sign In to add comment