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) { if (!value || value === '') { return ["Ime je obavezno."]; } }, password: function(value, callback) { if(value === undefined || value === "") { return ["Šifra je obavezna."]; } if (value.length < 6) { return ["Šifra mora sadržavati minimalno 6 karaktera."] } if (callback) { callback([], ["passwordConfirmation"]); } }, passwordConfirmation: function(value) { if (this.getState().password !== value) { return ["Šifre se ne podudaraju."]; } }, lastName : function(value) { if (!value || value === '') { return ["Prezime je obavezno."]; } }, _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)}
{this.getValidationMessages('password').map(this.renderErrorMessage)}
{this.getValidationMessages('passwordConfirmation').map(this.renderErrorMessage)}
Vec rođena Na putu
{this.renderBabyDetails()}
); } }) module.exports = Register;