From 3c22a2e8afb45956654746955ea6c203ac5c4ca0 Mon Sep 17 00:00:00 2001
From: Ivan Diaz <ivan@opensupports.com>
Date: Sun, 22 May 2016 15:36:24 -0300
Subject: [PATCH] Revert "[Ivan Diaz] - OS-#10 - Add validations [skip ci]"

This reverts commit 8d7d0a93bfbc228b02a2df1d6e12dcc62867d4d5.
---
 .../main-home/main-home-page-login-widget.js  |  4 +-
 client/src/core-components/form.js            | 73 +++++--------------
 client/src/core-components/input.js           | 10 +--
 client/src/data/i18n-data.js                  | 18 +++--
 client/src/data/i18n-keys.js                  |  5 ++
 client/src/data/languages/en.js               |  7 --
 client/src/data/languages/es.js               |  7 --
 .../lib-app/validations/email-validator.js    | 11 ---
 .../validations/validations-factory.js        | 16 ----
 client/src/lib-app/validations/validator.js   | 13 ----
 10 files changed, 42 insertions(+), 122 deletions(-)
 create mode 100644 client/src/data/i18n-keys.js
 delete mode 100644 client/src/data/languages/en.js
 delete mode 100644 client/src/data/languages/es.js
 delete mode 100644 client/src/lib-app/validations/email-validator.js
 delete mode 100644 client/src/lib-app/validations/validations-factory.js
 delete mode 100644 client/src/lib-app/validations/validator.js

diff --git a/client/src/app/main/main-home/main-home-page-login-widget.js b/client/src/app/main/main-home/main-home-page-login-widget.js
index e9315f4a..2f24cd34 100644
--- a/client/src/app/main/main-home/main-home-page-login-widget.js
+++ b/client/src/app/main/main-home/main-home-page-login-widget.js
@@ -33,7 +33,7 @@ let MainHomePageLoginWidget = React.createClass({
             <Widget className="main-home-page--widget" title="Login">
                 <Form className="login-widget--form" onSubmit={this.handleLoginFormSubmit}>
                     <div className="login-widget--inputs">
-                        <Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL"/>
+                        <Input placeholder="email" name="email" className="login-widget--input"/>
                         <Input placeholder="password" name="password" className="login-widget--input" password/>
                         <Checkbox name="remember" label="Remember Me" className="login-widget--input"/>
                     </div>
@@ -53,7 +53,7 @@ let MainHomePageLoginWidget = React.createClass({
             <Widget className="main-home-page--widget main-home-page--password-widget" title="Password Recovery">
                 <Form className="login-widget--form" onSubmit={this.handleSubmit}>
                     <div className="login-widget--inputs">
-                        <Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL"/>
+                        <Input placeholder="email" name="email" className="login-widget--input"/>
                     </div>
                     <div className="login-widget--submit-button">
                         <Button type="primary">Recover my password</Button>
diff --git a/client/src/core-components/form.js b/client/src/core-components/form.js
index c1171073..a407602e 100644
--- a/client/src/core-components/form.js
+++ b/client/src/core-components/form.js
@@ -1,40 +1,35 @@
-const React = require('react');
-const _ = require('lodash');
+import React              from 'react';
+import _                  from 'lodash';
 
-const {reactDFS, renderChildrenWithProps} = require('lib-core/react-dfs');
-const ValidationFactory = require('lib-app/validations/validations-factory');
+import {reactDFS, renderChildrenWithProps}  from 'lib-core/react-dfs';
 
-const Input = require('core-components/input');
-const Checkbox = require('core-components/checkbox');
+import Input              from 'core-components/input';
+import Checkbox           from 'core-components/checkbox';
 
-const Form = React.createClass({
+let Form = React.createClass({
+
+    validations: {},
 
     getInitialState() {
         return {
-            form: {},
-            validations: {},
-            errors: {}
+            form: {}
         }
     },
 
     componentDidMount() {
         let formState = {};
-        let validations = {};
 
-        reactDFS(this.props.children, function (child) {
+        reactDFS(this.props.children, (child) => {
             if (child.type === Input) {
                 formState[child.props.name] = child.props.value || '';
-                validations[child.props.name] = ValidationFactory.getValidator(child.props.validation || 'DEFAULT');
             }
             else if (child.type === Checkbox) {
                 formState[child.props.name] = child.props.checked || false;
-                validations[child.props.name] = ValidationFactory.getValidator(child.props.validation || 'DEFAULT');
             }
-        }.bind(this));
+        });
 
         this.setState({
-            form: formState,
-            validations: validations
+            form: formState
         });
     },
 
@@ -60,65 +55,37 @@ const Form = React.createClass({
         if (type === Input || type === Checkbox) {
             let inputName = props.name;
 
+            this.validations[inputName] = props.validation;
+
             additionalProps = {
-                ref: inputName,
-                value: this.state.form[inputName] || props.value,
-                error: this.state.errors[inputName],
-                onChange: this.handleInputChange.bind(this, inputName, type)
+                onChange: this.handleInputChange.bind(this, inputName, type),
+                value: this.state.form[inputName] || props.value
             }
         }
 
         return additionalProps;
     },
 
-    handleSubmit(event) {
+    handleSubmit (event) {
         event.preventDefault();
 
-        if (this.hasFormErrors()) {
-            this.focusFirstErrorField();
-        } else if (this.props.onSubmit) {
+        if (this.props.onSubmit) {
             this.props.onSubmit(this.state.form);
         }
     },
 
     handleInputChange(inputName, type, event) {
         let form = _.clone(this.state.form);
-        let errors = _.clone(this.state.errors);
-        let inputValue = event.target.value;
 
-        form[inputName] = inputValue;
-        errors[inputName] = this.state.validations[inputName].validate(inputValue, form);
+        form[inputName] = event.target.value;
 
         if (type === Checkbox) {
             form[inputName] = event.target.checked || false;
         }
 
-        console.log(errors);
-
         this.setState({
-            form: form,
-            errors: errors
+            form: form
         });
-    },
-
-    hasFormErrors() {
-        return _.some(this.validateAllFields(), (error) => error);
-    },
-
-    focusFirstErrorField() {
-        let firstErrorField = this.getFirstErrorField();
-
-        if (firstErrorField) {
-            this.refs[firstErrorField].focus();
-        }
-    },
-
-    getFirstErrorField() {
-
-    },
-
-    validateAllFields: function () {
-
     }
 });
 
diff --git a/client/src/core-components/input.js b/client/src/core-components/input.js
index 78f742e4..06765483 100644
--- a/client/src/core-components/input.js
+++ b/client/src/core-components/input.js
@@ -1,12 +1,12 @@
-const React = require('react');
-const classNames = require('classnames');
-const _ = require('lodash');
+import React              from 'react';
+import classNames         from 'classnames';
+import _                  from 'lodash';
 
-const Input = React.createClass({
+let Input = React.createClass({
 
     propTypes: {
         value: React.PropTypes.string,
-        validation: React.PropTypes.string,
+        validation: React.PropTypes.func,
         onChange: React.PropTypes.func,
         inputType: React.PropTypes.string,
         password: React.PropTypes.bool
diff --git a/client/src/data/i18n-data.js b/client/src/data/i18n-data.js
index eafa26dd..34c7ad82 100644
--- a/client/src/data/i18n-data.js
+++ b/client/src/data/i18n-data.js
@@ -1,13 +1,15 @@
-const englishLanguage = require('data/languages/en');
-const spanishLanguage = require('data/languages/es');
+import keys         from 'data/i18n-keys'
 
-const languages = {
-    'us': englishLanguage,
-    'es': spanishLanguage
-};
+let languages = [
+    'us',
+    'es'
+];
 
-const i18nData = function (key, lang) {
-    return languages[lang][key];
+
+let i18nData = function (key, lang) {
+    let langIndex = languages.indexOf(lang);
+
+    return keys[key][langIndex];
 };
 
 export default i18nData
diff --git a/client/src/data/i18n-keys.js b/client/src/data/i18n-keys.js
new file mode 100644
index 00000000..bdb5a198
--- /dev/null
+++ b/client/src/data/i18n-keys.js
@@ -0,0 +1,5 @@
+export default {
+    'SUBMIT': ['Submit', 'Enviar'],
+    'LOG_IN': ['Log in', 'Ingresar'],
+    'SIGN_UP': ['Sign up', 'Registrarse']
+};
\ No newline at end of file
diff --git a/client/src/data/languages/en.js b/client/src/data/languages/en.js
deleted file mode 100644
index c7d9b592..00000000
--- a/client/src/data/languages/en.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default {
-    'SUBMIT': 'Submit',
-    'LOG_IN': 'Log in',
-    'SIGN_UP': 'Sign up',
-    'ERROR_EMPTY': 'Invalid value',
-    'ERROR_EMAIL': 'Invalid email'
-};
\ No newline at end of file
diff --git a/client/src/data/languages/es.js b/client/src/data/languages/es.js
deleted file mode 100644
index 8f565699..00000000
--- a/client/src/data/languages/es.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default {
-    'SUBMIT': 'Enviar',
-    'LOG_IN': 'Ingresar',
-    'SIGN_UP': 'Registrarse',
-    'ERROR_EMPTY': 'Valor invalido',
-    'ERROR_EMAIL': 'Email invalido'
-};
\ No newline at end of file
diff --git a/client/src/lib-app/validations/email-validator.js b/client/src/lib-app/validations/email-validator.js
deleted file mode 100644
index e1b7cb52..00000000
--- a/client/src/lib-app/validations/email-validator.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const Validator = require('lib-app/validations/validator');
-
-class EmailValidator extends Validator {
-
-    validate(value, form) {
-        if (!value.length) return this.getError('ERROR_EMPTY');
-        if (value.indexOf('@') === -1) return this.getError('ERROR_EMAIL');
-    }
-}
-
-export default EmailValidator;
\ No newline at end of file
diff --git a/client/src/lib-app/validations/validations-factory.js b/client/src/lib-app/validations/validations-factory.js
deleted file mode 100644
index 77c98652..00000000
--- a/client/src/lib-app/validations/validations-factory.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const Validator = require('lib-app/validations/validator');
-const EmailValidator = require('lib-app/validations/email-validator');
-
-let validators = {
-    'DEFAULT': new Validator(),
-    'EMAIL': new EmailValidator()
-};
-
-class ValidatorFactory {
-
-    static getValidator(validatorKey) {
-        return validators[validatorKey];
-    }
-}
-
-export default ValidatorFactory;
\ No newline at end of file
diff --git a/client/src/lib-app/validations/validator.js b/client/src/lib-app/validations/validator.js
deleted file mode 100644
index 62659891..00000000
--- a/client/src/lib-app/validations/validator.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const i18n = require('lib-app/i18n');
-
-class Validator {
-    validate(value, form) {
-        if (!value.length) return this.getError('ERROR_EMPTY');
-    }
-
-    getError(errorKey) {
-        return i18n(errorKey);
-    }
-}
-
-export default Validator
\ No newline at end of file