Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import Input from '../utils/validate/input'
  3. import {Link, browserHistory } from 'react-router';
  4.  
  5. var App = React.createClass({
  6.     getInitialState: function () {
  7.         return {
  8.             valid : {
  9.                 username : true,
  10.                 password: true
  11.             },
  12.             value: {
  13.                 username : '',
  14.                 password : ''
  15.             },
  16.             server_error : false,
  17.             error: false,
  18.             stack : []
  19.         }
  20.     },
  21.  
  22.     push_stack : function (funct) {
  23.         var stack = this.state.stack
  24.         stack.push(funct)
  25.         this.setState({stack:stack})
  26.  
  27.     },
  28.     send: function(){
  29.  
  30.         this.setState({preload : true})
  31.         var url = frontendsettings.get('api').login;
  32.         Promise.all(
  33.             this.state.stack.map(function(i){
  34.                 return new Promise(i)
  35.             })
  36.         ).then(function(){
  37.             $.post(url, this.state.value).done(function (res) {
  38.                 this.setState({preload : false})
  39.                 browserHistory.push('/app/')
  40.             }.bind(this)).fail(function (res) {
  41.  
  42.                 this.setState({preload : false})
  43.  
  44.                 if (res.status != 401) {
  45.                     that.setState({
  46.                         error: {
  47.                             server_error: true
  48.                         }
  49.                     })
  50.                 } else {
  51.                     var valid = this.state.valid
  52.                         for(i in valid){
  53.                             valid[i] = false
  54.                         }
  55.                     that.setState({
  56.                         valid:valid
  57.                     })
  58.                 }
  59.  
  60.             }.bind(this))
  61.         }.bind(this));
  62.  
  63.     },
  64.  
  65.     validate: function(name,status){
  66.         var valid_obj = this.state.valid
  67.             valid_obj[name] = status
  68.         this.setState({valid : valid_obj})
  69.     },
  70.     set_value : function(name,value){
  71.         var local_value = this.state.value
  72.             local_value[name] = value
  73.         this.setState({value : local_value})
  74.     },
  75.     render: function () {
  76.  
  77.         return <div className="enter__content">
  78.  
  79.             <Link to="/" className="enter__logo"></Link>
  80.             <p className="t-title">Вход</p>
  81.             <div className="enter__form">
  82.                 <Input stack={this.push_stack} set_value={this.set_value} valid_obj={this.state.valid} validate={this.validate} error_text="Проверьте адрес электронной почты" all_w name="username" check_type="text" type="text" autoFocus placeholder="Эл. почта"/>
  83.                 <Input stack={this.push_stack} set_value={this.set_value} valid_obj={this.state.valid} validate={this.validate} error_text="Почта или пароль неверны" all_w name="password"  check_type="text" type="password" autoFocus placeholder="Пароль">
  84.                     <Link to="/enter/recover/"
  85.                           className="input__btn t-body link link--def-case link--def-color">Забыли?</Link>
  86.                 </Input>
  87.                 <div className={this.state.error && this.state.error.server ? "error" : ""}>
  88.                     <div onClick={this.send}
  89.                          className={"btn btn--all-w"+(this.state.preload ? ' btn--preloader' : '' )}>ВОЙТИ
  90.                     </div>
  91.                     <p className="error__mes">Что-то пошло не так,<br/> попробуйте повторить чуть позже.</p>
  92.                 </div>
  93.                 <moduleblocks:config_open_registration>
  94.                     <Link to="/enter/registration/" className="enter__link link">ЗАРЕГИСТРИРОВАТЬСЯ</Link>
  95.                 </moduleblocks:config_open_registration>
  96.             </div>
  97.  
  98.         </div>
  99.     }
  100. });
  101.  
  102. module.exports = App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement