var React = require("react/addons"), UserRegistration = require('../../models/userRegistration'), RibicaValidationMixin = require('../../components/shared/mixins/ribicaValidationMixin'); var Register = React.createClass({ mixins: [React.addons.LinkedStateMixin, RibicaValidationMixin], getInitialState: function() { return { myBabyDetailsVisible: false, firstName: '', lastName: '', email: '', password: '', passwordConfirmation: '', errors: {} }; }, myBabyChange: function() { this.setState({ myBabyDetailsVisible: true }); }, renderMonthSelector: function() { var months = ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Juni', 'Juli','August','Septembar', 'Oktobar','Novembar','Decembar']; var monthsSelect = []; for(var i = 0; i < months.length; i++) { monthsSelect.push() } return () }, renderYearSelector: function() { var currentYear = (new Date().getFullYear()); var years = []; years.push() for(var i = 0; i < 12; i++) { years.push() } return () }, renderDaySelector: function() { var days = []; days.push() for(var i = 1; i <= 31; i++) { days.push() } return () }, renderBabyDetails: function() { if (!this.state.myBabyDetailsVisible) { return (
) } return (
Djevojčica Dječak Jos ne znamo
{this.renderDaySelector()} {this.renderMonthSelector()} {this.renderYearSelector()}
) }, validations: { firstName: function(value) { var errors = []; if (!value || value === '') { errors.push("First name is required."); } else if (value && value.length > 5) { errors.push("First name is larger than 5 characters."); } return errors; }, lastName : function(value) { if (value === 'Dazdarevic') { return ["You're the owner!"]; } return []; }, _emailRe: /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, _emailTimeoutId: null, email: function(value, callback) { var validEmail = this._emailRe.test(value); if (validEmail) { //clearTimeout(this._emailTimeoutId); //this._emailTimeoutId = setTimeout(function(){ //// TODO: check if email exists //if (value === 'edin@edin.com') { //if(callback) { //var errors= ['Email is already taken']; //callback(errors); //} //} else { //if(callback) { //callback([]); //} //} //}.bind(this), 1000); } else { return ['Neispravna email adresa.']; } } }, renderErrorMessage: function(message){ return (
{message}
) }, doRegister: function(e) { // TODO: move this to the UserRegistrationStore if(this.validate()) { alert('all fine!'); var user = new UserRegistration({ first_name: this.state.firstName, last_name: this.state.lastName, email: this.state.email, password: this.state.password, password_confirmation: this.state.passwordConfirmation }); user.save(null, { success: function() { alert('saved!'); }, error: function(model, response, options) { alert('error'); console.log('error:', response); }.bind(this) }); } e.preventDefault(); }, render : function() { return (
Registracija {this.state.firstName} | {this.state.lastName} | {this.state.email} | {this.state.password} | {this.state.passwordConfirmation} | {this.isValid() ? "yes" : "no"} |
{this.getValidationMessages('firstName').map(this.renderErrorMessage)}
{this.getValidationMessages('lastName').map(this.renderErrorMessage)}
{this.getValidationMessages('email').map(this.renderErrorMessage)}
Vec rođena Na putu
{this.renderBabyDetails()}
); } }) module.exports = Register;