From c710ff22cda8b7ab6eeb78a26443300d0b7eb1aa Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 11 Jan 2017 15:42:52 +0100 Subject: dealing with validations on jp collections --- .../journey_patterns/actions/index.js | 26 +++++- .../journey_patterns/components/CreateModal.js | 70 ++++++++------- .../journey_patterns/components/JourneyPattern.js | 99 +++++++++++++--------- 3 files changed, 121 insertions(+), 74 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js index 4031f9bf1..05929cc3c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -67,10 +67,34 @@ const actions = { type: 'SAVE_PAGE', dispatch }), - updateTotalCount: (diff) =>({ + updateTotalCount: (diff) => ({ type: 'UPDATE_TOTAL_COUNT', diff }), + resetValidation: (target) => { + $(target).parent().removeClass('has-error').children('.help-block').remove() + }, + validateFields : (fields) => { + const test = [] + + Object.keys(fields).map(function(key) { + test.push(fields[key].validity.valid) + }) + if(test.indexOf(false) >= 0) { + // Form is invalid + test.map(function(item, i) { + if(item == false) { + const k = Object.keys(fields)[i] + $(fields[k]).parent().addClass('has-error').children('.help-block').remove() + $(fields[k]).parent().append("" + fields[k].validationMessage + "") + } + }) + return false + } else { + // Form is valid + return true + } + }, submitJourneyPattern : (dispatch, state, next) => { let urlJSON = window.location.pathname + ".json" let req = new Request(urlJSON, { diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js index 2c75dd808..b0e812dab 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js @@ -1,14 +1,18 @@ var React = require('react') var Component = require('react').Component var PropTypes = require('react').PropTypes +var actions = require('../actions') class CreateModal extends Component { constructor(props) { super(props) } - handleSubmit(e) { - e.preventDefault() - this.props.onAddJourneyPattern(this.refs) + + handleSubmit() { + if(actions.validateFields(this.refs) == true) { + this.props.onAddJourneyPattern(this.refs) + $('#NewJourneyPatternModal').modal('hide') + } } render() { @@ -31,61 +35,65 @@ class CreateModal extends Component {

Ajouter une mission

-
- {(this.props.modal.type == 'create') && ( -
+ {(this.props.modal.type == 'create') && ( + +
- + actions.resetValidation(e.currentTarget)} + required />
- + actions.resetValidation(e.currentTarget)} + required />
- + actions.resetValidation(e.currentTarget)} + required />
- - )} -
- -
- - -
+
+
+ + +
+ + )} diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js index 55c61f296..3d439b6ab 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -4,56 +4,71 @@ var PropTypes = require('react').PropTypes const JourneyPattern = (props) => { return (
-
-

- - Name: {props.value.name} - -
- {(props.value.errors) && ( - - {props.value.errors.name.map(function(msg, i){ - return ( - {msg} - ) - })} - - )} + {/* Errors */} + {(props.value.errors) && ( +

+ )} + +
+ {/* Name */} +

+ Name: {props.value.name} +

+ + {/* Published name */} +

+ Published name: {props.value.published_name} +

+ + {/* Registration number */} +

+ Registration number: {props.value.registration_number} +

+ + {/* Object_id */} +

+ ObjectID: {props.value.object_id}

-
-
-

ObjectID: {props.value.object_id}

-

Published name: {props.value.published_name}

+ {/* Stop points */} +

+ Stop points: +

+
    + {props.value.stop_points.map((stopPoint, i) => +
  • + {stopPoint.id} + {stopPoint.name} + + props.onCheckboxChange(e)} + type='checkbox' + id={stopPoint.id} + checked={stopPoint.checked} + disabled={props.value.deletable ? 'disabled' : ''} + > + +
  • + )} +
-
+
- -

Stop points:

-
    - {props.value.stop_points.map((stopPoint, i) => -
  • - {stopPoint.id} - {stopPoint.name} - - props.onCheckboxChange(e)} - type='checkbox' - id={stopPoint.id} - checked={stopPoint.checked} - disabled={props.value.deletable ? 'disabled' : ''} - > - -
  • - )} -
) } -- cgit v1.2.3