Compare commits

..

2 Commits

Author SHA1 Message Date
GotPPay
31036e7e5e show password validation errors 2018-05-15 18:30:59 +02:00
GotPPay
cb7e2ad921 set default pickup address to members home address 2018-05-15 17:01:41 +02:00
2 changed files with 85 additions and 29 deletions

View File

@@ -33,8 +33,10 @@ import Instance from '../../../../../../../components/Connection';
import Checkbox from 'material-ui/Checkbox';
import Popover from 'material-ui/Popover';
const ADDRESS_TYPE_HOME = "home";
let DateTimeFormat;
const roundingTime = 1000 * 60 * 5; //5 minutes
DateTimeFormat = global.Intl.DateTimeFormat;
@@ -44,8 +46,8 @@ export class ValidationErrorsInfoDialog extends React.Component {
open: this.props.open,
}
componentWillReceiveProps(newProps) {
this.setState({ open: newProps.open });
componentWillReceiveProps(newProps){
this.setState({open: newProps.open});
}
handleOpen = () => {
@@ -76,13 +78,13 @@ export class ValidationErrorsInfoDialog extends React.Component {
modal={false}
open={this.state.open}
onRequestClose={this.handleClose}
overlayStyle={{ backgroundColor: 'transparent' }}
overlayStyle={{backgroundColor: 'transparent'}}
>
{this.props.errorMessages.map(errorMessage => {
return (
<div>
<a>{errorMessage.message}</a>
<br />
<br/>
</div>
);
})}
@@ -416,18 +418,16 @@ class VerticalNonLinear extends React.Component {
constructor(props) {
super(props);
let dateNow = new Date();
this.state = {
stepIndex: 0,
rideTypeValue: 0,
providerID: 0,
providerName: '',
visitDate: new Date(),
visitTime: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
visitTime: new Date(),
pickupLocation: null,
pickupTime: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
pickupTimeReturn: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
pickupTime: new Date(),
pickupTimeReturn: new Date(),
pickupTimeReturnDisplayMode: 'none',
open: false,
message: 'Booking Ride',
@@ -455,8 +455,8 @@ class VerticalNonLinear extends React.Component {
},
return_time: new Date(),
pickupTimeHide: false,
showValidationErrors: false,
validationErrors: [],
showValidationErrors:false,
validationErrors:[],
};
}
@@ -471,6 +471,16 @@ class VerticalNonLinear extends React.Component {
if (user.useruuid !== loggedUser.useruuid) {
Instance.getRawConn().get(`/v1/nemt/users/member/${user.useruuid}`)
.then(function (res) {
let userHomeAddress = null;
res.data.addresses.forEach(address => {
if (address.address_type === ADDRESS_TYPE_HOME) {
userHomeAddress = address;
}
});
if (userHomeAddress != null) {
userHomeAddress.name = "Home";
state.handlePickupChanged(userHomeAddress, state);
}
state.setState(Object.assign(state.state, { user: res.data, showUserSelection: true, userSelectionText: `${res.data.member} - ${res.data.name}` }));
})
.catch(err => {
@@ -491,10 +501,10 @@ class VerticalNonLinear extends React.Component {
}
});
let visitTime = new Date(Math.round((date.getTime() + (1 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let visitDate = date;
let pickupTime = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let pickupTimeReturn = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let visitTime = new Date(new Date().getTime() + (1 * 60 * 60 * 1000));
let visitDate = visitTime;
let pickupTime = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
let pickupTimeReturn = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
this.setState(Object.assign(this.state, {
visitDate: visitDate,
@@ -558,11 +568,11 @@ class VerticalNonLinear extends React.Component {
self.handleRequestClose(self);
window.location.href = '/#/app/page/map/' + res.data.ride_uuid;
}).catch(error => {
if (error.response.status === 422) {
if (error.response.status === 422){
//Unprocessable Entity (validation failed)
self.setState(Object.assign(self.state, {
showValidationErrors: true,
validationErrors: error.response.data.data
showValidationErrors:true,
validationErrors:error.response.data.data
}));
}
});
@@ -602,10 +612,10 @@ class VerticalNonLinear extends React.Component {
handleDate(event, date, state) {
let self = state
let visitTime = new Date(Math.round((date.getTime() + (1 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let visitTime = new Date(date.getTime() + (1 * 60 * 60 * 1000));
let visitDate = date;
let pickupTime = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let pickupTimeReturn = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
let pickupTime = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
let pickupTimeReturn = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
self.setState(Object.assign(self.state, {
visitDate: visitDate,
@@ -852,9 +862,9 @@ class VerticalNonLinear extends React.Component {
}
handleValidationErrosDialogDismiss() {
handleValidationErrosDialogDismiss(){
this.setState(Object.assign(this.state, {
showValidationErrors: false
showValidationErrors:false
}));
}
@@ -896,7 +906,17 @@ class VerticalNonLinear extends React.Component {
if (this.state.showUserSelection && this.state.users.length > 0) {
const handleAutocomplete = (u) => {
state.setState(Object.assign(state.state, { user: u, userSelectionText: u.userdata }));
let userHomeAddress = null;
u.addresses.forEach(address => {
if (address.address_type === ADDRESS_TYPE_HOME) {
userHomeAddress = address;
}
});
if (userHomeAddress != null) {
userHomeAddress.name = "Home";
state.handlePickupChanged(userHomeAddress,state);
}
state.setState(Object.assign(state.state, { user: u, userSelectionText: u.userdata }));
}
const datasourceConfig = { text: 'userdata', value: 'useruuid' }
userSelection = (
@@ -921,8 +941,8 @@ class VerticalNonLinear extends React.Component {
<div className="box-body padding-xs">
<div style={{ maxWidth: 380, margin: 'auto' }}>
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
<ValidationErrorsInfoDialog open = {this.state.showValidationErrors} errorMessages = {this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)}/>
<Stepper
activeStep={this.state.stepIndex}
linear={false}

View File

@@ -47,7 +47,9 @@ class SignUp extends React.Component {
"role": { name: "", key: "SP", desc: "" },
"profiles": [],
"types": [],
"organizations": []
"organizations": [],
showValidationErrors : false,
validationErrors: []
}
this.buttonValidated = this.buttonValidated.bind(this);
@@ -226,12 +228,42 @@ class SignUp extends React.Component {
localStorage.removeItem('loggedUser');
location.href = '/#/login';
}).catch(function (err) {
alert('Error to log in: ' + err.message);
if (err.response.status === 422){
//Unprocessable Entity (validation failed)
state.setState(Object.assign(state.state, {
showValidationErrors:true,
validationErrors:err.response.data.data
}));
}else{
alert('Error to log in: ' + err.message);
}
console.error(err);
});
}
handleDismiss(){
this.setState(Object.assign(this.state, { showErrorMessage: false }));
}
render() {
let validationErrors = null;
if (this.state.showValidationErrors){
validationErrors = (
<ul>
{this.state.validationErrors.map(errorMessage=>{
const oneValidationMessage = (<li>{errorMessage.message}</li>);
const oneValidationMessageWithTab = (<span><li style={{marginLeft:2 + "em"}}>{errorMessage.message}</li></span>);
if (errorMessage.field_name === "password-tab"){
return oneValidationMessageWithTab;
} else{
return oneValidationMessage;
}
})}
</ul>
);
}
return (
<div className="body-inner">
@@ -334,6 +366,10 @@ class SignUp extends React.Component {
<div className="form-group">
<p className="text-small">By clicking on sign up, you agree to <a href="javascript:;"><i>terms</i></a> and <a href="javascript:;"><i>privacy policy</i></a></p>
</div>
<div className="divider" />
<div className="form-group">
{validationErrors}
</div>
</fieldset>
</form>
</div>