From 724690ea7d1bf4c0f8fd2c57dd0636fee3c6574f Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Wed, 30 Nov 2016 16:56:11 +0100 Subject: Fix split itineraries and journey patterns for better understanding Signed-off-by: Thomas Shawarma Haddad --- .../javascripts/es6_browserified/actions/index.js | 42 ------- .../javascripts/es6_browserified/components/App.js | 12 -- .../es6_browserified/components/BSelect2.js | 128 --------------------- .../es6_browserified/components/Todo.js | 78 ------------- .../es6_browserified/components/TodoList.js | 36 ------ .../es6_browserified/containers/AddTodo.js | 22 ---- .../es6_browserified/containers/VisibleTodoList.js | 36 ------ .../javascripts/es6_browserified/form_helper.js | 10 -- .../es6_browserified/itineraries/actions/index.js | 42 +++++++ .../es6_browserified/itineraries/components/App.js | 12 ++ .../itineraries/components/BSelect2.js | 128 +++++++++++++++++++++ .../itineraries/components/Todo.js | 78 +++++++++++++ .../itineraries/components/TodoList.js | 36 ++++++ .../itineraries/containers/AddTodo.js | 22 ++++ .../itineraries/containers/VisibleTodoList.js | 36 ++++++ .../es6_browserified/itineraries/form_helper.js | 10 ++ .../es6_browserified/itineraries/reducers/index.js | 8 ++ .../es6_browserified/itineraries/reducers/todos.js | 85 ++++++++++++++ .../es6_browserified/itineraries/stop_points.js | 65 +++++++++++ .../javascripts/es6_browserified/reducers/index.js | 8 -- .../javascripts/es6_browserified/reducers/todos.js | 85 -------------- .../javascripts/es6_browserified/stop_points.js | 65 ----------- 22 files changed, 522 insertions(+), 522 deletions(-) delete mode 100644 app/assets/javascripts/es6_browserified/actions/index.js delete mode 100644 app/assets/javascripts/es6_browserified/components/App.js delete mode 100644 app/assets/javascripts/es6_browserified/components/BSelect2.js delete mode 100644 app/assets/javascripts/es6_browserified/components/Todo.js delete mode 100644 app/assets/javascripts/es6_browserified/components/TodoList.js delete mode 100644 app/assets/javascripts/es6_browserified/containers/AddTodo.js delete mode 100644 app/assets/javascripts/es6_browserified/containers/VisibleTodoList.js delete mode 100644 app/assets/javascripts/es6_browserified/form_helper.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/actions/index.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/components/App.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/components/BSelect2.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/components/Todo.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/components/TodoList.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/containers/AddTodo.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/containers/VisibleTodoList.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/form_helper.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/reducers/index.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/reducers/todos.js create mode 100644 app/assets/javascripts/es6_browserified/itineraries/stop_points.js delete mode 100644 app/assets/javascripts/es6_browserified/reducers/index.js delete mode 100644 app/assets/javascripts/es6_browserified/reducers/todos.js delete mode 100644 app/assets/javascripts/es6_browserified/stop_points.js (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/actions/index.js b/app/assets/javascripts/es6_browserified/actions/index.js deleted file mode 100644 index 7d225f2f6..000000000 --- a/app/assets/javascripts/es6_browserified/actions/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const actions = { - addStop : () => { - return { - type: 'ADD_STOP' - } - }, - moveStopUp : (index) => { - return { - type: 'MOVE_STOP_UP', - index - } - }, - moveStopDown : (index) => { - return { - type: 'MOVE_STOP_DOWN', - index - } - }, - deleteStop : (index) => { - return { - type: 'DELETE_STOP', - index - } - }, - updateInputValue : (index, text) => { - return { - type : 'UPDATE_INPUT_VALUE', - index, - text - } - }, - updateSelectValue: (e, index) => { - return { - type :'UPDATE_SELECT_VALUE', - select_id: e.currentTarget.id, - select_value: e.currentTarget.value, - index - } - } -} - -module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/components/App.js b/app/assets/javascripts/es6_browserified/components/App.js deleted file mode 100644 index 7488b0b39..000000000 --- a/app/assets/javascripts/es6_browserified/components/App.js +++ /dev/null @@ -1,12 +0,0 @@ -var React = require('react') -var AddTodo = require('../containers/AddTodo') -var VisibleTodoList = require('../containers/VisibleTodoList') - -const App = () => ( -
- - -
-) - -module.exports = App diff --git a/app/assets/javascripts/es6_browserified/components/BSelect2.js b/app/assets/javascripts/es6_browserified/components/BSelect2.js deleted file mode 100644 index ec0d130d2..000000000 --- a/app/assets/javascripts/es6_browserified/components/BSelect2.js +++ /dev/null @@ -1,128 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var Select2 = require('react-select2') - - -// get JSON full path -var origin = window.location.origin -var path = window.location.pathname.split('/', 3).join('/') - - -class BSelect3 extends React.Component{ - constructor(props) { - super(props) - this.state = { - edit: false - } - } - onToggleEdit(e) { - e.preventDefault() - this.setState({edit: !this.state.edit}) - } - onChange(e) { - this.props.onChange(this.props.index, { - text: e.currentTarget.textContent, stoparea_id: e.currentTarget.value - }) - this.setState({edit: false}) - } - - render() { - if(this.state.edit) - return ( -
- - - - - -
- ) - else - if(!this.props.value.stoparea_id) - return ( -
- -
- ) - else - return ( -
- - {this.props.value.text} - - - - -
- ) - } -} - -class BSelect2 extends React.Component{ - componentDidMount() { - this.refs.newSelect.el.select2('open') - } - - render() { - return ( - Object.assign( - {}, - item, - { text: item.name + ", " + item.zip_code + " " + item.short_city_name } - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 3, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.text) return props.text - // console.log(props) - // return ( - //
- // {props.short_name} - // {props.zip_code} {props.short_city_name} - //
- // ) -} - -module.exports = BSelect3 diff --git a/app/assets/javascripts/es6_browserified/components/Todo.js b/app/assets/javascripts/es6_browserified/components/Todo.js deleted file mode 100644 index 6d8a6988f..000000000 --- a/app/assets/javascripts/es6_browserified/components/Todo.js +++ /dev/null @@ -1,78 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var BSelect2 = require('./BSelect2') - -const Todo = (props) => { - return ( -
-
-
-
- {props.value.stoparea_id} -
- -
- - -
-
- -
-
- - -
-
-
-
- - -
-
- -
-
-
- -
-
- -
-
- -
-
-
-
-
- ) -} - -Todo.propTypes = { - onDeleteClick: PropTypes.func.isRequired, - onMoveUpClick: PropTypes.func.isRequired, - onMoveDownClick: PropTypes.func.isRequired, - onChange: PropTypes.func.isRequired, - onSelectChange: PropTypes.func.isRequired, - first: PropTypes.bool, - last: PropTypes.bool, - index: PropTypes.number, - value: PropTypes.object -} - -module.exports = Todo diff --git a/app/assets/javascripts/es6_browserified/components/TodoList.js b/app/assets/javascripts/es6_browserified/components/TodoList.js deleted file mode 100644 index 3ea2c90e1..000000000 --- a/app/assets/javascripts/es6_browserified/components/TodoList.js +++ /dev/null @@ -1,36 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var Todo = require('./Todo') - -const TodoList = ({ todos, onDeleteClick, onMoveUpClick, onMoveDownClick, onChange, onSelectChange }) => { - return ( -
- {todos.map((todo, index) => - onDeleteClick(index)} - onMoveUpClick={() => { - onMoveUpClick(index) - }} - onMoveDownClick={() => onMoveDownClick(index)} - onChange={ onChange } - onSelectChange={ (e) => onSelectChange(e, index) } - first={ index === 0 } - last={ index === (todos.length - 1) } - index={ index } - value={ todo } - /> - )} -
- ) -} - -TodoList.propTypes = { - todos: PropTypes.array.isRequired, - onDeleteClick: PropTypes.func.isRequired, - onMoveUpClick: PropTypes.func.isRequired, - onMoveDownClick: PropTypes.func.isRequired, - onSelectChange: PropTypes.func.isRequired -} - -module.exports = TodoList diff --git a/app/assets/javascripts/es6_browserified/containers/AddTodo.js b/app/assets/javascripts/es6_browserified/containers/AddTodo.js deleted file mode 100644 index d0128f16d..000000000 --- a/app/assets/javascripts/es6_browserified/containers/AddTodo.js +++ /dev/null @@ -1,22 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') - -let AddTodo = ({ dispatch }) => { - return ( -
-
{ - e.preventDefault() - dispatch(actions.addStop()) - }}> - - -
-
- ) -} -AddTodo = connect()(AddTodo) - -module.exports = AddTodo diff --git a/app/assets/javascripts/es6_browserified/containers/VisibleTodoList.js b/app/assets/javascripts/es6_browserified/containers/VisibleTodoList.js deleted file mode 100644 index 464d6e482..000000000 --- a/app/assets/javascripts/es6_browserified/containers/VisibleTodoList.js +++ /dev/null @@ -1,36 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var TodoList = require('../components/TodoList') - -const mapStateToProps = (state) => { - return { - todos: state.todos - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onDeleteClick: (index) =>{ - dispatch(actions.deleteStop(index)) - }, - onMoveUpClick: (index) =>{ - dispatch(actions.moveStopUp(index)) - }, - onMoveDownClick: (index) =>{ - dispatch(actions.moveStopDown(index)) - }, - onChange: (index, text) =>{ - dispatch(actions.updateInputValue(index, text)) - }, - onSelectChange: (e, index) =>{ - dispatch(actions.updateSelectValue(e, index)) - } - } -} - -const VisibleTodoList = connect( - mapStateToProps, - mapDispatchToProps -)(TodoList) - -module.exports = VisibleTodoList diff --git a/app/assets/javascripts/es6_browserified/form_helper.js b/app/assets/javascripts/es6_browserified/form_helper.js deleted file mode 100644 index d48718841..000000000 --- a/app/assets/javascripts/es6_browserified/form_helper.js +++ /dev/null @@ -1,10 +0,0 @@ -const addInput = (name, value, index) => { - let form = document.querySelector('form') - let input = document.createElement('input') - input.setAttribute('type', 'hidden') - input.setAttribute('name', `route[stop_points_attributes][${index}][${name}]`) - input.setAttribute('value', value) - form.appendChild(input) -} - -module.exports = addInput diff --git a/app/assets/javascripts/es6_browserified/itineraries/actions/index.js b/app/assets/javascripts/es6_browserified/itineraries/actions/index.js new file mode 100644 index 000000000..7d225f2f6 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/actions/index.js @@ -0,0 +1,42 @@ +const actions = { + addStop : () => { + return { + type: 'ADD_STOP' + } + }, + moveStopUp : (index) => { + return { + type: 'MOVE_STOP_UP', + index + } + }, + moveStopDown : (index) => { + return { + type: 'MOVE_STOP_DOWN', + index + } + }, + deleteStop : (index) => { + return { + type: 'DELETE_STOP', + index + } + }, + updateInputValue : (index, text) => { + return { + type : 'UPDATE_INPUT_VALUE', + index, + text + } + }, + updateSelectValue: (e, index) => { + return { + type :'UPDATE_SELECT_VALUE', + select_id: e.currentTarget.id, + select_value: e.currentTarget.value, + index + } + } +} + +module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/App.js b/app/assets/javascripts/es6_browserified/itineraries/components/App.js new file mode 100644 index 000000000..7488b0b39 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/components/App.js @@ -0,0 +1,12 @@ +var React = require('react') +var AddTodo = require('../containers/AddTodo') +var VisibleTodoList = require('../containers/VisibleTodoList') + +const App = () => ( +
+ + +
+) + +module.exports = App diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/BSelect2.js b/app/assets/javascripts/es6_browserified/itineraries/components/BSelect2.js new file mode 100644 index 000000000..ec0d130d2 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/components/BSelect2.js @@ -0,0 +1,128 @@ +var React = require('react') +var PropTypes = require('react').PropTypes +var Select2 = require('react-select2') + + +// get JSON full path +var origin = window.location.origin +var path = window.location.pathname.split('/', 3).join('/') + + +class BSelect3 extends React.Component{ + constructor(props) { + super(props) + this.state = { + edit: false + } + } + onToggleEdit(e) { + e.preventDefault() + this.setState({edit: !this.state.edit}) + } + onChange(e) { + this.props.onChange(this.props.index, { + text: e.currentTarget.textContent, stoparea_id: e.currentTarget.value + }) + this.setState({edit: false}) + } + + render() { + if(this.state.edit) + return ( +
+ + + + + +
+ ) + else + if(!this.props.value.stoparea_id) + return ( +
+ +
+ ) + else + return ( +
+ + {this.props.value.text} + + + + +
+ ) + } +} + +class BSelect2 extends React.Component{ + componentDidMount() { + this.refs.newSelect.el.select2('open') + } + + render() { + return ( + Object.assign( + {}, + item, + { text: item.name + ", " + item.zip_code + " " + item.short_city_name } + ) + ) + }; + }, + cache: true + }, + minimumInputLength: 3, + templateResult: formatRepo + }} + /> + ) + } +} + +const formatRepo = (props) => { + if(props.text) return props.text + // console.log(props) + // return ( + //
+ // {props.short_name} + // {props.zip_code} {props.short_city_name} + //
+ // ) +} + +module.exports = BSelect3 diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/Todo.js b/app/assets/javascripts/es6_browserified/itineraries/components/Todo.js new file mode 100644 index 000000000..6d8a6988f --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/components/Todo.js @@ -0,0 +1,78 @@ +var React = require('react') +var PropTypes = require('react').PropTypes +var BSelect2 = require('./BSelect2') + +const Todo = (props) => { + return ( +
+
+
+
+ {props.value.stoparea_id} +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+ ) +} + +Todo.propTypes = { + onDeleteClick: PropTypes.func.isRequired, + onMoveUpClick: PropTypes.func.isRequired, + onMoveDownClick: PropTypes.func.isRequired, + onChange: PropTypes.func.isRequired, + onSelectChange: PropTypes.func.isRequired, + first: PropTypes.bool, + last: PropTypes.bool, + index: PropTypes.number, + value: PropTypes.object +} + +module.exports = Todo diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/TodoList.js b/app/assets/javascripts/es6_browserified/itineraries/components/TodoList.js new file mode 100644 index 000000000..3ea2c90e1 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/components/TodoList.js @@ -0,0 +1,36 @@ +var React = require('react') +var PropTypes = require('react').PropTypes +var Todo = require('./Todo') + +const TodoList = ({ todos, onDeleteClick, onMoveUpClick, onMoveDownClick, onChange, onSelectChange }) => { + return ( +
+ {todos.map((todo, index) => + onDeleteClick(index)} + onMoveUpClick={() => { + onMoveUpClick(index) + }} + onMoveDownClick={() => onMoveDownClick(index)} + onChange={ onChange } + onSelectChange={ (e) => onSelectChange(e, index) } + first={ index === 0 } + last={ index === (todos.length - 1) } + index={ index } + value={ todo } + /> + )} +
+ ) +} + +TodoList.propTypes = { + todos: PropTypes.array.isRequired, + onDeleteClick: PropTypes.func.isRequired, + onMoveUpClick: PropTypes.func.isRequired, + onMoveDownClick: PropTypes.func.isRequired, + onSelectChange: PropTypes.func.isRequired +} + +module.exports = TodoList diff --git a/app/assets/javascripts/es6_browserified/itineraries/containers/AddTodo.js b/app/assets/javascripts/es6_browserified/itineraries/containers/AddTodo.js new file mode 100644 index 000000000..d0128f16d --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/containers/AddTodo.js @@ -0,0 +1,22 @@ +var React = require('react') +var connect = require('react-redux').connect +var actions = require('../actions') + +let AddTodo = ({ dispatch }) => { + return ( +
+
{ + e.preventDefault() + dispatch(actions.addStop()) + }}> + + +
+
+ ) +} +AddTodo = connect()(AddTodo) + +module.exports = AddTodo diff --git a/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleTodoList.js b/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleTodoList.js new file mode 100644 index 000000000..464d6e482 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleTodoList.js @@ -0,0 +1,36 @@ +var actions = require('../actions') +var connect = require('react-redux').connect +var TodoList = require('../components/TodoList') + +const mapStateToProps = (state) => { + return { + todos: state.todos + } +} + +const mapDispatchToProps = (dispatch) => { + return { + onDeleteClick: (index) =>{ + dispatch(actions.deleteStop(index)) + }, + onMoveUpClick: (index) =>{ + dispatch(actions.moveStopUp(index)) + }, + onMoveDownClick: (index) =>{ + dispatch(actions.moveStopDown(index)) + }, + onChange: (index, text) =>{ + dispatch(actions.updateInputValue(index, text)) + }, + onSelectChange: (e, index) =>{ + dispatch(actions.updateSelectValue(e, index)) + } + } +} + +const VisibleTodoList = connect( + mapStateToProps, + mapDispatchToProps +)(TodoList) + +module.exports = VisibleTodoList diff --git a/app/assets/javascripts/es6_browserified/itineraries/form_helper.js b/app/assets/javascripts/es6_browserified/itineraries/form_helper.js new file mode 100644 index 000000000..d48718841 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/form_helper.js @@ -0,0 +1,10 @@ +const addInput = (name, value, index) => { + let form = document.querySelector('form') + let input = document.createElement('input') + input.setAttribute('type', 'hidden') + input.setAttribute('name', `route[stop_points_attributes][${index}][${name}]`) + input.setAttribute('value', value) + form.appendChild(input) +} + +module.exports = addInput diff --git a/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js b/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js new file mode 100644 index 000000000..381b32d8b --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js @@ -0,0 +1,8 @@ +var combineReducers = require('redux').combineReducers +var todos = require('./todos') + +const todoApp = combineReducers({ + todos +}) + +module.exports = todoApp diff --git a/app/assets/javascripts/es6_browserified/itineraries/reducers/todos.js b/app/assets/javascripts/es6_browserified/itineraries/reducers/todos.js new file mode 100644 index 000000000..916cd4704 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/reducers/todos.js @@ -0,0 +1,85 @@ +var addInput = require('../form_helper') + +const todo = (state = {}, action, length) => { + switch (action.type) { + case 'ADD_STOP': + return { + text: '', + index: length, + for_boarding: 'normal', + for_alighting: 'normal' + } + default: + return state + } +} +const updateFormForDeletion = (stop) =>{ + if (stop.stoppoint_id !== undefined){ + let now = Date.now() + addInput('id', stop.stoppoint_id, now) + addInput('_destroy', 'true', now) + } +} + +const todos = (state = [], action) => { + switch (action.type) { + case 'ADD_STOP': + return [ + ...state, + todo(undefined, action, state.length) + ] + case 'MOVE_STOP_UP': + return [ + ...state.slice(0, action.index - 1), + state[action.index], + state[action.index - 1], + ...state.slice(action.index + 1) + ] + case 'MOVE_STOP_DOWN': + return [ + ...state.slice(0, action.index), + state[action.index + 1], + state[action.index], + ...state.slice(action.index + 2) + ] + case 'DELETE_STOP': + updateFormForDeletion(state[action.index]) + return [ + ...state.slice(0, action.index), + ...state.slice(action.index + 1).map((todo)=>{ + todo.index-- + return todo + }) + ] + case 'UPDATE_INPUT_VALUE': + return state.map( (t, i) => { + if (i === action.index) { + updateFormForDeletion(t) + return Object.assign( + {}, + t, + {text: action.text.text, stoparea_id: action.text.stoparea_id} + ) + } else { + return t + } + }) + // return state.map(t => + // todo(t, action) + // ) + case 'UPDATE_SELECT_VALUE': + return state.map( (t,i) => { + if (i === action.index) { + let stopState = Object.assign({}, t) + stopState[action.select_id] = action.select_value + return stopState + } else { + return t + } + }) + default: + return state + } +} + +module.exports = todos diff --git a/app/assets/javascripts/es6_browserified/itineraries/stop_points.js b/app/assets/javascripts/es6_browserified/itineraries/stop_points.js new file mode 100644 index 000000000..f594c0da4 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/itineraries/stop_points.js @@ -0,0 +1,65 @@ +var React = require('react') +var render = require('react-dom').render +var Provider = require('react-redux').Provider +var createStore = require('redux').createStore +var todoApp = require('./reducers') +var App = require('./components/App') +var addInput = require('./form_helper') + +// logger, DO NOT REMOVE +// var applyMiddleware = require('redux').applyMiddleware +// var createLogger = require('redux-logger') +// var thunkMiddleware = require('redux-thunk').default +// var promise = require('redux-promise') + +const getInitialState = () => { + let state = [] + let datas = JSON.parse(decodeURIComponent(window.itinerary_stop)) + for (let [index, value] of datas.entries()){ + + let fancyText = value.name + if(value.zip_code && value.city_name) + fancyText += ", " + value.zip_code + " " + value.city_name + + state.push({ + stoppoint_id: value.stoppoint_id, + stoparea_id: value.stoparea_id, + index: index, + city_name: value.city_name, + zip_code: value.zip_code, + text: fancyText, + for_boarding: value.for_boarding || "normal", + for_alighting: value.for_alighting || "normal" + }) + } + return state +} + +var initialState = {todos: getInitialState()} +// const loggerMiddleware = createLogger() +let store = createStore( + todoApp, + initialState + // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) +) + +render( + + + , + document.getElementById('stop_points') +) + +document.querySelector('input[name=commit]').addEventListener('click', (event)=>{ + let state = store.getState() + for (let [i, todo] of state.todos.entries()){ + if (todo.stoppoint_id == undefined){ + todo.stoppoint_id = "" + } + addInput('id',todo.stoppoint_id, i) + addInput('stop_area_id',todo.stoparea_id, i) + addInput('position',i, i) + addInput('for_boarding',todo.for_boarding, i) + addInput('for_alighting',todo.for_alighting, i) + } +}) diff --git a/app/assets/javascripts/es6_browserified/reducers/index.js b/app/assets/javascripts/es6_browserified/reducers/index.js deleted file mode 100644 index 381b32d8b..000000000 --- a/app/assets/javascripts/es6_browserified/reducers/index.js +++ /dev/null @@ -1,8 +0,0 @@ -var combineReducers = require('redux').combineReducers -var todos = require('./todos') - -const todoApp = combineReducers({ - todos -}) - -module.exports = todoApp diff --git a/app/assets/javascripts/es6_browserified/reducers/todos.js b/app/assets/javascripts/es6_browserified/reducers/todos.js deleted file mode 100644 index 916cd4704..000000000 --- a/app/assets/javascripts/es6_browserified/reducers/todos.js +++ /dev/null @@ -1,85 +0,0 @@ -var addInput = require('../form_helper') - -const todo = (state = {}, action, length) => { - switch (action.type) { - case 'ADD_STOP': - return { - text: '', - index: length, - for_boarding: 'normal', - for_alighting: 'normal' - } - default: - return state - } -} -const updateFormForDeletion = (stop) =>{ - if (stop.stoppoint_id !== undefined){ - let now = Date.now() - addInput('id', stop.stoppoint_id, now) - addInput('_destroy', 'true', now) - } -} - -const todos = (state = [], action) => { - switch (action.type) { - case 'ADD_STOP': - return [ - ...state, - todo(undefined, action, state.length) - ] - case 'MOVE_STOP_UP': - return [ - ...state.slice(0, action.index - 1), - state[action.index], - state[action.index - 1], - ...state.slice(action.index + 1) - ] - case 'MOVE_STOP_DOWN': - return [ - ...state.slice(0, action.index), - state[action.index + 1], - state[action.index], - ...state.slice(action.index + 2) - ] - case 'DELETE_STOP': - updateFormForDeletion(state[action.index]) - return [ - ...state.slice(0, action.index), - ...state.slice(action.index + 1).map((todo)=>{ - todo.index-- - return todo - }) - ] - case 'UPDATE_INPUT_VALUE': - return state.map( (t, i) => { - if (i === action.index) { - updateFormForDeletion(t) - return Object.assign( - {}, - t, - {text: action.text.text, stoparea_id: action.text.stoparea_id} - ) - } else { - return t - } - }) - // return state.map(t => - // todo(t, action) - // ) - case 'UPDATE_SELECT_VALUE': - return state.map( (t,i) => { - if (i === action.index) { - let stopState = Object.assign({}, t) - stopState[action.select_id] = action.select_value - return stopState - } else { - return t - } - }) - default: - return state - } -} - -module.exports = todos diff --git a/app/assets/javascripts/es6_browserified/stop_points.js b/app/assets/javascripts/es6_browserified/stop_points.js deleted file mode 100644 index f594c0da4..000000000 --- a/app/assets/javascripts/es6_browserified/stop_points.js +++ /dev/null @@ -1,65 +0,0 @@ -var React = require('react') -var render = require('react-dom').render -var Provider = require('react-redux').Provider -var createStore = require('redux').createStore -var todoApp = require('./reducers') -var App = require('./components/App') -var addInput = require('./form_helper') - -// logger, DO NOT REMOVE -// var applyMiddleware = require('redux').applyMiddleware -// var createLogger = require('redux-logger') -// var thunkMiddleware = require('redux-thunk').default -// var promise = require('redux-promise') - -const getInitialState = () => { - let state = [] - let datas = JSON.parse(decodeURIComponent(window.itinerary_stop)) - for (let [index, value] of datas.entries()){ - - let fancyText = value.name - if(value.zip_code && value.city_name) - fancyText += ", " + value.zip_code + " " + value.city_name - - state.push({ - stoppoint_id: value.stoppoint_id, - stoparea_id: value.stoparea_id, - index: index, - city_name: value.city_name, - zip_code: value.zip_code, - text: fancyText, - for_boarding: value.for_boarding || "normal", - for_alighting: value.for_alighting || "normal" - }) - } - return state -} - -var initialState = {todos: getInitialState()} -// const loggerMiddleware = createLogger() -let store = createStore( - todoApp, - initialState - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) -) - -render( - - - , - document.getElementById('stop_points') -) - -document.querySelector('input[name=commit]').addEventListener('click', (event)=>{ - let state = store.getState() - for (let [i, todo] of state.todos.entries()){ - if (todo.stoppoint_id == undefined){ - todo.stoppoint_id = "" - } - addInput('id',todo.stoppoint_id, i) - addInput('stop_area_id',todo.stoparea_id, i) - addInput('position',i, i) - addInput('for_boarding',todo.for_boarding, i) - addInput('for_alighting',todo.for_alighting, i) - } -}) -- cgit v1.2.3 From fc39661b701553e00a81970f4b2475e52b53633a Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Fri, 2 Dec 2016 14:43:30 +0100 Subject: Add fetch request with credentials when initializing state Signed-off-by: Thomas Shawarma Haddad --- .../journey_patterns/actions/index.js | 0 .../es6_browserified/journey_patterns/index.js | 35 ++++++++++++++++++++++ .../journey_patterns/reducers/index.js | 8 +++++ .../journey_patterns/reducers/journey_patterns.js | 8 +++++ 4 files changed, 51 insertions(+) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/index.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js (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 new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js new file mode 100644 index 000000000..c35ac2681 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -0,0 +1,35 @@ +var React = require('react') +var render = require('react-dom').render +var Provider = require('react-redux').Provider +var createStore = require('redux').createStore +var journeyPatternsApp = require('./reducers') + +// logger, DO NOT REMOVE +var applyMiddleware = require('redux').applyMiddleware +var createLogger = require('redux-logger') +var thunkMiddleware = require('redux-thunk').default +var promise = require('redux-promise') + +const urlJSON = window.location.pathname + '.json' +var req = new Request(urlJSON, { + credentials: 'same-origin' +}); +const getInitialState = () => { + console.log(urlJSON) + fetch(req) + .then(response => response.json()) + // .then(json => dispatch(receivePosts(reddit, json))) + .then(json => console.log(json)) + let state = [] + return state +} + + +var initialState = {journeyPatterns: getInitialState()} +const loggerMiddleware = createLogger() + +let store = createStore( + journeyPatternsApp, + initialState, + applyMiddleware(thunkMiddleware, promise, loggerMiddleware) +) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js new file mode 100644 index 000000000..2a71bcf15 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js @@ -0,0 +1,8 @@ +var combineReducers = require('redux').combineReducers +var journeyPatterns = require('./journey_patterns') + +const journeyPatternsApp = combineReducers({ + journeyPatterns +}) + +module.exports = journeyPatternsApp diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js new file mode 100644 index 000000000..a63c83be6 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js @@ -0,0 +1,8 @@ +const journeyPatterns = (state = [], action) => { + switch (action.type) { + default: + return state + } +} + +module.exports = journeyPatterns -- cgit v1.2.3 From 8df23449499ad9934880db6a8856b5e25baacf5f Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Thu, 8 Dec 2016 16:10:32 +0100 Subject: Add Journey_patterns display with initialized state Refs #2204 Signed-off-by: Thomas Shawarma Haddad Signed-off-by: Jean-Paul Lescouzeres --- .../journey_patterns/actions/index.js | 3 +++ .../journey_patterns/components/App.js | 12 +++++++++ .../journey_patterns/components/JourneyPattern.js | 19 ++++++++++++++ .../journey_patterns/components/JourneyPatterns.js | 21 ++++++++++++++++ .../containers/AddJourneyPattern.js | 21 ++++++++++++++++ .../containers/JourneyPatternList.js | 20 +++++++++++++++ .../es6_browserified/journey_patterns/index.js | 29 ++++++++++++++++++++-- 7 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/App.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js (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 e69de29bb..a51c11b9c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -0,0 +1,3 @@ +const actions = {} + +module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js new file mode 100644 index 000000000..8e22bfe45 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -0,0 +1,12 @@ +var React = require('react') +var AddJourneyPattern = require('../containers/AddJourneyPattern') +var JourneyPatternList = require('../containers/JourneyPatternList') + +const App = () => ( +
+ + +
+) + +module.exports = App diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js new file mode 100644 index 000000000..8848eec35 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -0,0 +1,19 @@ +var React = require('react') +var PropTypes = require('react').PropTypes + +const JourneyPattern = (props) => { + return ( +
+ {props.index} + {props.value.name} + {props.value.object_id} + {props.value.published_name} +
+ ) +} + +JourneyPattern.propTypes = { + value: PropTypes.object +} + +module.exports = JourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js new file mode 100644 index 000000000..b291494e4 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -0,0 +1,21 @@ +var React = require('react') +var PropTypes = require('react').PropTypes +var JourneyPattern = require('./JourneyPattern') + +const JourneyPatterns = ({ journeyPatterns }) => { + return ( +
+ {journeyPatterns.map((journeyPattern, index) => + + )} +
+ ) +} + +JourneyPatterns.propTypes = { + journeyPatterns: PropTypes.array.isRequired +} + +module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js new file mode 100644 index 000000000..b4f18bf66 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js @@ -0,0 +1,21 @@ +var React = require('react') +var connect = require('react-redux').connect +var actions = require('../actions') + +let AddJourneyPattern = ({ dispatch }) => { + return ( +
+
{ + e.preventDefault() + dispatch(actions.addStop()) + }}> + +
+
+ ) +} +AddJourneyPattern = connect()(AddJourneyPattern) + +module.exports = AddJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js new file mode 100644 index 000000000..0e3e57b21 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -0,0 +1,20 @@ +var actions = require('../actions') +var connect = require('react-redux').connect +var JourneyPatterns = require('../components/JourneyPatterns') + +const mapStateToProps = (state) => { + return { + journeyPatterns: state.journeyPatterns + } +} + +const mapDispatchToProps = (dispatch) => { + return {} +} + +const JourneyPatternList = connect( + mapStateToProps, + mapDispatchToProps +)(JourneyPatterns) + +module.exports = JourneyPatternList diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index c35ac2681..626997f4c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -3,6 +3,7 @@ var render = require('react-dom').render var Provider = require('react-redux').Provider var createStore = require('redux').createStore var journeyPatternsApp = require('./reducers') +var App = require('./components/App') // logger, DO NOT REMOVE var applyMiddleware = require('redux').applyMiddleware @@ -16,11 +17,28 @@ var req = new Request(urlJSON, { }); const getInitialState = () => { console.log(urlJSON) + let state = [] fetch(req) .then(response => response.json()) // .then(json => dispatch(receivePosts(reddit, json))) - .then(json => console.log(json)) - let state = [] + .then((json) => { + console.log(json) + for (let [i, val] of json.entries()){ + let stop_points = [] + for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ + stop_points.push("id", false) + } + for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ + stop_points["id"] = true + } + state.push({ + name: val.name, + object_id: val.object_id, + published_name: val.published_name + // stop_points: stop_points + }) + } + }) return state } @@ -33,3 +51,10 @@ let store = createStore( initialState, applyMiddleware(thunkMiddleware, promise, loggerMiddleware) ) + +render( + + + , + document.getElementById('journey_patterns') +) -- cgit v1.2.3 From d26d8517b13334956de84cb7b84d8e6e2ff51b13 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Fri, 9 Dec 2016 15:57:09 +0100 Subject: Add async RECEIVE_JOURNEY_PATTERN action Refs #2204 Signed-off-by: Thomas Shawarma Haddad Signed-off-by: Jean-Paul Lescouzeres --- .../journey_patterns/actions/index.js | 37 +++++++++++++++++++- .../journey_patterns/components/JourneyPatterns.js | 21 ------------ .../containers/JourneyPatternList.js | 40 ++++++++++++++++++---- .../journey_patterns/containers/test.js | 0 .../es6_browserified/journey_patterns/index.js | 34 +----------------- .../journey_patterns/reducers/journey_patterns.js | 2 ++ 6 files changed, 72 insertions(+), 62 deletions(-) delete mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js (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 a51c11b9c..5d2b0bdd2 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -1,3 +1,38 @@ -const actions = {} +const actions = { + receiveJourneyPatterns : (state) => ({ + type: "RECEIVE_JOURNEY_PATTERNS", + state + }), + + fetchJourneyPatterns : (dispatch) => { + let state = [] + let urlJSON = window.location.pathname + '.json' + let req = new Request(urlJSON, { + credentials: 'same-origin' + }); + fetch(req) + .then(response => response.json()) + .then((json) => { + console.log(json) + for (let [i, val] of json.entries()){ + let stop_points = [] + for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ + stop_points.push("id", false) + } + for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ + stop_points["id"] = true + } + state.push({ + name: val.name, + object_id: val.object_id, + published_name: val.published_name + // stop_points: stop_points + }) + } + dispatch(actions.receiveJourneyPatterns(state)) + }) + } +} + module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js deleted file mode 100644 index b291494e4..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ /dev/null @@ -1,21 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var JourneyPattern = require('./JourneyPattern') - -const JourneyPatterns = ({ journeyPatterns }) => { - return ( -
- {journeyPatterns.map((journeyPattern, index) => - - )} -
- ) -} - -JourneyPatterns.propTypes = { - journeyPatterns: PropTypes.array.isRequired -} - -module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 0e3e57b21..a6710c690 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -1,6 +1,34 @@ +var React = require('react') +var Component = require('react').Component +var PropTypes = require('react').PropTypes var actions = require('../actions') var connect = require('react-redux').connect -var JourneyPatterns = require('../components/JourneyPatterns') +var JourneyPattern = require('../components/JourneyPattern') + +class JourneyPatternList extends Component{ + constructor(props) { + super(props) + } + + componentDidMount() { + const dispatch = this.props.dispatch + const journeyPatterns = this.props.journeyPatterns + actions.fetchJourneyPatterns(dispatch) + } + + render() { + return ( +
+ {this.props.journeyPatterns.map((journeyPattern, index) => + + )} +
+ ) + } +} const mapStateToProps = (state) => { return { @@ -8,13 +36,11 @@ const mapStateToProps = (state) => { } } -const mapDispatchToProps = (dispatch) => { - return {} +JourneyPatternList.propTypes = { + dispatch: PropTypes.func.isRequired, + journeyPatterns: PropTypes.array.isRequired } -const JourneyPatternList = connect( - mapStateToProps, - mapDispatchToProps -)(JourneyPatterns) +JourneyPatternList = connect(mapStateToProps)(JourneyPatternList) module.exports = JourneyPatternList diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index 626997f4c..e0104db09 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -11,39 +11,7 @@ var createLogger = require('redux-logger') var thunkMiddleware = require('redux-thunk').default var promise = require('redux-promise') -const urlJSON = window.location.pathname + '.json' -var req = new Request(urlJSON, { - credentials: 'same-origin' -}); -const getInitialState = () => { - console.log(urlJSON) - let state = [] - fetch(req) - .then(response => response.json()) - // .then(json => dispatch(receivePosts(reddit, json))) - .then((json) => { - console.log(json) - for (let [i, val] of json.entries()){ - let stop_points = [] - for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ - stop_points.push("id", false) - } - for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ - stop_points["id"] = true - } - state.push({ - name: val.name, - object_id: val.object_id, - published_name: val.published_name - // stop_points: stop_points - }) - } - }) - return state -} - - -var initialState = {journeyPatterns: getInitialState()} +var initialState = {journeyPatterns: []} const loggerMiddleware = createLogger() let store = createStore( diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js index a63c83be6..0d7dc569b 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js @@ -1,5 +1,7 @@ const journeyPatterns = (state = [], action) => { switch (action.type) { + case 'RECEIVE_JOURNEY_PATTERNS': + return [...action.state] default: return state } -- cgit v1.2.3 From 77f87c1879efc2f04a97a5c0a6c241c9d805cd20 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Fri, 9 Dec 2016 18:17:16 +0100 Subject: Retrieve stop_areas for each journey_pattern, still need to sort / select it Refs #2204 Signed-off-by: Thomas Shawarma Haddad --- .../es6_browserified/journey_patterns/actions/index.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 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 5d2b0bdd2..074dc0919 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -14,19 +14,21 @@ const actions = { .then(response => response.json()) .then((json) => { console.log(json) - for (let [i, val] of json.entries()){ - let stop_points = [] - for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ - stop_points.push("id", false) + let stop_points = [] + for (let val of json){ + for (let stop_point of val.route_short_description.stop_points){ + stop_point.checked = false + stop_points[stop_point.object_id] = stop_point } - for (let [i, stopArea] of val['stop_area_short_descriptions'].entries()){ - stop_points["id"] = true + // for (let stopArea of val.stop_area_short_descriptions){ + // debugger + // stop_points[stopArea.stop_area_short_description.object_id].checked = true } state.push({ name: val.name, object_id: val.object_id, - published_name: val.published_name - // stop_points: stop_points + published_name: val.published_name, + stop_points: stop_points }) } dispatch(actions.receiveJourneyPatterns(state)) -- cgit v1.2.3 From ea9f21ee1404c9b3f2369cc4d3d238d63a6f5b03 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Mon, 12 Dec 2016 12:04:12 +0100 Subject: Fix stopAreas having a checked attribute for each mission when selected Refs #2204 Signed-off-by: Thomas Shawarma Haddad --- .../es6_browserified/journey_patterns/actions/index.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 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 074dc0919..98144938c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -13,16 +13,15 @@ const actions = { fetch(req) .then(response => response.json()) .then((json) => { - console.log(json) - let stop_points = [] - for (let val of json){ + let val + for (val of json){ + let stop_points = [] for (let stop_point of val.route_short_description.stop_points){ stop_point.checked = false stop_points[stop_point.object_id] = stop_point } - // for (let stopArea of val.stop_area_short_descriptions){ - // debugger - // stop_points[stopArea.stop_area_short_description.object_id].checked = true + for (let stopArea of val.stop_area_short_descriptions){ + stop_points[stopArea.stop_area_short_description.object_id].checked = true } state.push({ name: val.name, -- cgit v1.2.3 From d33014e05b556134eaf30c8bd06d36e832d66bdd Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Tue, 13 Dec 2016 11:53:11 +0100 Subject: Add simple counter for pagination before plugging it for real Refs #2205 Signed-off-by: Thomas Shawarma Haddad --- .../journey_patterns/actions/index.js | 21 +++++++++---- .../journey_patterns/components/App.js | 2 ++ .../containers/JourneyPatternList.js | 13 +++++++- .../journey_patterns/containers/Navigate.js | 35 ++++++++++++++++++++++ .../journey_patterns/containers/test.js | 0 .../es6_browserified/journey_patterns/index.js | 5 +++- .../journey_patterns/reducers/index.js | 4 ++- .../journey_patterns/reducers/journey_patterns.js | 15 ++++++++-- .../journey_patterns/reducers/pagination.js | 12 ++++++++ 9 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js delete mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js (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 98144938c..a03b64b10 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -1,11 +1,20 @@ const actions = { - receiveJourneyPatterns : (state) => ({ + receiveJourneyPatterns : (json) => ({ type: "RECEIVE_JOURNEY_PATTERNS", - state + json + }), + loadFirstPage: (dispatch) => ({ + type: 'LOAD_FIRST_PAGE', + dispatch + }), + goToPreviousPage : () => ({ + type: 'GO_TO_PREVIOUS_PAGE' + }), + goToNextPage : () => ({ + type: 'GO_TO_NEXT_PAGE' }), - fetchJourneyPatterns : (dispatch) => { - let state = [] + let journeyPatterns = [] let urlJSON = window.location.pathname + '.json' let req = new Request(urlJSON, { credentials: 'same-origin' @@ -23,14 +32,14 @@ const actions = { for (let stopArea of val.stop_area_short_descriptions){ stop_points[stopArea.stop_area_short_description.object_id].checked = true } - state.push({ + journeyPatterns.push({ name: val.name, object_id: val.object_id, published_name: val.published_name, stop_points: stop_points }) } - dispatch(actions.receiveJourneyPatterns(state)) + dispatch(actions.receiveJourneyPatterns(journeyPatterns)) }) } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js index 8e22bfe45..c61613b9e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -1,10 +1,12 @@ var React = require('react') var AddJourneyPattern = require('../containers/AddJourneyPattern') +var Navigate = require('../containers/Navigate') var JourneyPatternList = require('../containers/JourneyPatternList') const App = () => (
+
) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index a6710c690..067167a4d 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -13,7 +13,7 @@ class JourneyPatternList extends Component{ componentDidMount() { const dispatch = this.props.dispatch const journeyPatterns = this.props.journeyPatterns - actions.fetchJourneyPatterns(dispatch) + dispatch(actions.loadFirstPage(dispatch)) } render() { @@ -36,6 +36,17 @@ const mapStateToProps = (state) => { } } +// const mapDispatchToProps = (dispatch) => { +// return { +// onPreviousClick: (index) =>{ +// dispatch(actions.fetchNextPage(index)) +// }, +// onNextClick: (index) =>{ +// dispatch(actions.fetchPreviousPage(index)) +// } +// } +// } + JourneyPatternList.propTypes = { dispatch: PropTypes.func.isRequired, journeyPatterns: PropTypes.array.isRequired diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js new file mode 100644 index 000000000..feaa73ba3 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -0,0 +1,35 @@ +var React = require('react') +var connect = require('react-redux').connect +var actions = require('../actions') + +let Navigate = ({ dispatch, journeyPatterns, page }) => { + return ( +
+
{ + e.preventDefault() + }}> + + +
+
+ ) +} +Navigate = connect()(Navigate) + +module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/test.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index e0104db09..4590d1013 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -11,7 +11,10 @@ var createLogger = require('redux-logger') var thunkMiddleware = require('redux-thunk').default var promise = require('redux-promise') -var initialState = {journeyPatterns: []} +var initialState = { + journeyPatterns: [], + pagination: 0 +} const loggerMiddleware = createLogger() let store = createStore( diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js index 2a71bcf15..9210dfd4d 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js @@ -1,8 +1,10 @@ var combineReducers = require('redux').combineReducers var journeyPatterns = require('./journey_patterns') +var pagination = require('./pagination') const journeyPatternsApp = combineReducers({ - journeyPatterns + journeyPatterns, + pagination }) module.exports = journeyPatternsApp diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js index 0d7dc569b..8ef6b07d8 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js @@ -1,7 +1,18 @@ -const journeyPatterns = (state = [], action) => { +var actions = require("../actions") + +const journeyPatterns = (state = {}, action) => { switch (action.type) { case 'RECEIVE_JOURNEY_PATTERNS': - return [...action.state] + return [...action.json] + case 'LOAD_FIRST_PAGE': + actions.fetchJourneyPatterns(action.dispatch) + case 'GO_TO_PREVIOUS_PAGE': + if(state.page >= 0){ + actions.fetchJourneyPatterns() + } + return state + case 'GO_TO_NEXT_PAGE': + actions.fetchJourneyPatterns() default: return state } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js new file mode 100644 index 000000000..09f003fbd --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js @@ -0,0 +1,12 @@ +const pagination = (state = 0, action) => { + switch (action.type) { + case 'GO_TO_PREVIOUS_PAGE': + return state - 1 + case 'GO_TO_NEXT_PAGE': + return state + 1 + default: + return state + } +} + +module.exports = pagination -- cgit v1.2.3 From 48477aec36203c518548ac2f0455530c2515baa2 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Tue, 13 Dec 2016 17:00:35 +0100 Subject: Add paginate for journey_patterns Refs #2205 Signed-off-by: Thomas Shawarma Haddad --- .../journey_patterns/actions/index.js | 45 ++++++++++++++++++---- .../containers/JourneyPatternList.js | 14 +------ .../journey_patterns/containers/Navigate.js | 14 +++++-- .../es6_browserified/journey_patterns/index.js | 2 +- .../journey_patterns/reducers/journey_patterns.js | 9 +++-- .../journey_patterns/reducers/pagination.js | 10 ++++- 6 files changed, 65 insertions(+), 29 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 a03b64b10..620890b9f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -7,17 +7,46 @@ const actions = { type: 'LOAD_FIRST_PAGE', dispatch }), - goToPreviousPage : () => ({ - type: 'GO_TO_PREVIOUS_PAGE' + goToPreviousPage : (dispatch, currentPage) => { + return { + type: 'GO_TO_PREVIOUS_PAGE', + dispatch, + currentPage, + nextPage : false + } + }, + goToNextPage : (dispatch, currentPage) => ({ + type: 'GO_TO_NEXT_PAGE', + dispatch, + currentPage, + nextPage : true }), - goToNextPage : () => ({ - type: 'GO_TO_NEXT_PAGE' - }), - fetchJourneyPatterns : (dispatch) => { + fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { + if(currentPage == undefined){ + currentPage = 1 + } let journeyPatterns = [] - let urlJSON = window.location.pathname + '.json' + let page + switch (nextPage) { + case true: + page = currentPage + 1 + break + case false: + if(currentPage > 1){ + page = currentPage - 1 + } + break + default: + page = currentPage + break + } + let str = ".json" + if(page > 1){ + str = '.json?page=' + page.toString() + } + let urlJSON = window.location.pathname + str let req = new Request(urlJSON, { - credentials: 'same-origin' + credentials: 'same-origin', }); fetch(req) .then(response => response.json()) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 067167a4d..5be1869a9 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -32,21 +32,11 @@ class JourneyPatternList extends Component{ const mapStateToProps = (state) => { return { - journeyPatterns: state.journeyPatterns + journeyPatterns: state.journeyPatterns, + page: state.pagination } } -// const mapDispatchToProps = (dispatch) => { -// return { -// onPreviousClick: (index) =>{ -// dispatch(actions.fetchNextPage(index)) -// }, -// onNextClick: (index) =>{ -// dispatch(actions.fetchPreviousPage(index)) -// } -// } -// } - JourneyPatternList.propTypes = { dispatch: PropTypes.func.isRequired, journeyPatterns: PropTypes.array.isRequired diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js index feaa73ba3..c9d804bc4 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -11,7 +11,7 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { - - +
{ + e.preventDefault() + }}> + +
) } AddJourneyPattern = connect()(AddJourneyPattern) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js index c9d804bc4..75c94e8c3 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -4,30 +4,28 @@ var actions = require('../actions') let Navigate = ({ dispatch, journeyPatterns, page }) => { return ( -
-
{ + { + e.preventDefault() + }}> + - -
-
+ dispatch(actions.goToPreviousPage(dispatch, page)) + }} + type="submit" + className="btn btn-default"> + + + + ) } -- cgit v1.2.3 From 80111503d7b0a50b3e6109f2fbbb93fa38689b73 Mon Sep 17 00:00:00 2001 From: jpl Date: Mon, 19 Dec 2016 10:18:37 +0100 Subject: legendary fix stuff --- .../es6_browserified/journey_patterns/components/App.js | 2 +- .../journey_patterns/components/JourneyPattern.js | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js index 9b6b0d143..835feed82 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -5,7 +5,7 @@ var JourneyPatternList = require('../containers/JourneyPatternList') const App = () => (
-
+
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 e2e94a7b7..460805176 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -8,12 +8,11 @@ const JourneyPattern = (props) => {

Name: {props.value.name}

ObjectID: {props.value.object_id}

Published name: {props.value.published_name}

-

- Stop points: -

    -
  • {props.value.stop_points}
  • -
-

+ +

Stop points:

+
    +
  • {props.value.stop_points}
  • +
) } -- cgit v1.2.3 From dfa3e092c2e23db62cd348040dfcb4e5d210bf48 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Mon, 19 Dec 2016 12:07:48 +0100 Subject: Fix stopAreas array, add stopArea id in json, and is now properly rendered Signed-off-by: Thomas Shawarma Haddad Signed-off-by: Jean-Paul Lescouzeres --- .../es6_browserified/journey_patterns/actions/index.js | 12 ++++++------ .../journey_patterns/components/JourneyPattern.js | 8 +++++++- 2 files changed, 13 insertions(+), 7 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 fea293c95..ec9df63f2 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -51,19 +51,19 @@ const actions = { .then((json) => { let val for (val of json){ - let stop_points = [] for (let stop_point of val.route_short_description.stop_points){ stop_point.checked = false - stop_points[stop_point.object_id] = stop_point - } - for (let stopArea of val.stop_area_short_descriptions){ - stop_points[stopArea.stop_area_short_description.object_id].checked = true + val.stop_area_short_descriptions.map((element) => { + if(element.stop_area_short_description.id === stop_point.id){ + stop_point.checked = true + } + }) } journeyPatterns.push({ name: val.name, object_id: val.object_id, published_name: val.published_name, - stop_points: stop_points + stop_points: val.route_short_description.stop_points }) } dispatch(actions.receiveJourneyPatterns(journeyPatterns)) 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 460805176..f808bbb83 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -11,7 +11,13 @@ const JourneyPattern = (props) => {

Stop points:

    -
  • {props.value.stop_points}
  • + {props.value.stop_points.map((stopPoint, index) => +
  • + {stopPoint.id}{stopPoint.name}{stopPoint.checked.toString()} +
  • + )}
) -- cgit v1.2.3 From e02513c6d12802dde77caf5ea0e1374f870416b7 Mon Sep 17 00:00:00 2001 From: jpl Date: Mon, 19 Dec 2016 14:44:45 +0100 Subject: happy x-mas --- .../journey_patterns/components/JourneyPattern.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'app/assets/javascripts') 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 f808bbb83..f1281fecd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -10,12 +10,17 @@ const JourneyPattern = (props) => {

Published name: {props.value.published_name}

Stop points:

-
    +
      {props.value.stop_points.map((stopPoint, index) =>
    • - {stopPoint.id}{stopPoint.name}{stopPoint.checked.toString()} + {stopPoint.id} + {stopPoint.name} + + +
    • )}
    -- cgit v1.2.3 From 0cd48963bdb0255f297b9ffb87da923ef531b16c Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Mon, 19 Dec 2016 18:33:06 +0100 Subject: Add onCheckboxChange and react gardening Signed-off-by: Thomas Shawarma Haddad --- .../journey_patterns/actions/index.js | 7 +++ .../journey_patterns/components/JourneyPattern.js | 11 +++-- .../journey_patterns/components/JourneyPatterns.js | 54 ++++++++++++++++++++++ .../containers/JourneyPatternList.js | 41 +++++----------- .../journey_patterns/reducers/journeyPatterns.js | 24 ++++++++++ 5 files changed, 103 insertions(+), 34 deletions(-) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js (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 ec9df63f2..2f8c9810e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -19,6 +19,13 @@ const actions = { currentPage, nextPage : true }), + updateCheckboxValue : (e, index) => { + return { + type : 'UPDATE_CHECKBOX_VALUE', + id : e.currentTarget.id, + index + } + }, fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { if(currentPage == undefined){ currentPage = 1 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 f1281fecd..82624fee9 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -11,15 +11,17 @@ const JourneyPattern = (props) => {

    Stop points:

      - {props.value.stop_points.map((stopPoint, index) => + {props.value.stop_points.map((stopPoint, i) =>
    • {stopPoint.id} {stopPoint.name} - + props.onCheckboxChange(e)} + type='checkbox' id={stopPoint.id} defaultChecked={stopPoint.checked}>
    • )} @@ -30,7 +32,8 @@ const JourneyPattern = (props) => { JourneyPattern.propTypes = { value: PropTypes.object, - index: PropTypes.number + index: PropTypes.number, + onCheckboxChange: PropTypes.func.isRequired } module.exports = JourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js new file mode 100644 index 000000000..4fd215e4a --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -0,0 +1,54 @@ +var Component = require('react').Component +var React = require('react') +var PropTypes = require('react').PropTypes +var JourneyPattern = require('./JourneyPattern') + + +// const JourneyPatterns = ({journeyPatterns, onLoadFirstPage, onCheckboxChange}) => { +// {onLoadFirstPage()} +// return ( +//
      +// {journeyPatterns.map((journeyPattern, index) => +// +// )} +//
      +// ) +// } + +class JourneyPatterns extends Component{ + + constructor(props){ + super(props) + } + + componentDidMount() { + this.props.onLoadFirstPage() + } + + render() { + return ( +
      + {this.props.journeyPatterns.map((journeyPattern, index) => + this.props.onCheckboxChange(e, index)} + /> + )} +
      + ) + } +} + +JourneyPatterns.propTypes = { + journeyPatterns: PropTypes.array.isRequired, + onCheckboxChange: PropTypes.func.isRequired, + onLoadFirstPage: PropTypes.func.isRequired +} + +module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 7a5075e35..297c8583a 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -3,32 +3,7 @@ var Component = require('react').Component var PropTypes = require('react').PropTypes var actions = require('../actions') var connect = require('react-redux').connect -var JourneyPattern = require('../components/JourneyPattern') - -class JourneyPatternList extends Component{ - constructor(props) { - super(props) - } - - componentDidMount() { - const dispatch = this.props.dispatch - const journeyPatterns = this.props.journeyPatterns - dispatch(actions.loadFirstPage(dispatch)) - } - - render() { - return ( -
      - {this.props.journeyPatterns.map((journeyPattern, index) => - - )} -
      - ) - } -} +var JourneyPatterns = require('../components/JourneyPatterns') const mapStateToProps = (state) => { return { @@ -36,11 +11,17 @@ const mapStateToProps = (state) => { } } -JourneyPatternList.propTypes = { - dispatch: PropTypes.func.isRequired, - journeyPatterns: PropTypes.array.isRequired +const mapDispatchToProps = (dispatch) => { + return { + onLoadFirstPage: () =>{ + dispatch(actions.loadFirstPage(dispatch)) + }, + onCheckboxChange: (e, index) =>{ + dispatch(actions.updateCheckboxValue(e, index)) + }, + } } -JourneyPatternList = connect(mapStateToProps)(JourneyPatternList) +const JourneyPatternList = connect(mapStateToProps, mapDispatchToProps)(JourneyPatterns) module.exports = JourneyPatternList diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 129746575..543bec6e3 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -1,5 +1,21 @@ var actions = require("../actions") +const journeyPattern = (state = {}, action) => { + switch (action.type) { + case 'UPDATE_CHECKBOX_VALUE': + var updatedStopPoints = state.stop_points.map((s, index) => { + if (s.id.toString() == action.id) { + return Object.assign({}, s, {checked : !s.checked}) + }else { + return s + } + }) + return Object.assign({}, state, {stop_points: updatedStopPoints}) + default: + return state + } +} + const journeyPatterns = (state = {}, action) => { switch (action.type) { case 'RECEIVE_JOURNEY_PATTERNS': @@ -16,6 +32,14 @@ const journeyPatterns = (state = {}, action) => { actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) } return state + case 'UPDATE_CHECKBOX_VALUE': + return state.map((j, i) =>{ + if( i == action.index){ + return journeyPattern(j, action) + }else{ + return j + } + }) default: return state } -- cgit v1.2.3 From e552e6833c0d0c19e1f0933f200a192584bf44e0 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Tue, 20 Dec 2016 11:58:18 +0100 Subject: Fix Redux gardening for journey patterns Signed-off-by: Thomas Shawarma Haddad --- .../es6_browserified/journey_patterns/actions/index.js | 12 +++++------- .../journey_patterns/components/JourneyPatterns.js | 17 ----------------- .../journey_patterns/containers/JourneyPatternList.js | 3 --- 3 files changed, 5 insertions(+), 27 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 2f8c9810e..05f3318a4 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -19,13 +19,11 @@ const actions = { currentPage, nextPage : true }), - updateCheckboxValue : (e, index) => { - return { - type : 'UPDATE_CHECKBOX_VALUE', - id : e.currentTarget.id, - index - } - }, + updateCheckboxValue : (e, index) => ({ + type : 'UPDATE_CHECKBOX_VALUE', + id : e.currentTarget.id, + index + }), fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { if(currentPage == undefined){ currentPage = 1 diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js index 4fd215e4a..a22963ca3 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -3,23 +3,6 @@ var React = require('react') var PropTypes = require('react').PropTypes var JourneyPattern = require('./JourneyPattern') - -// const JourneyPatterns = ({journeyPatterns, onLoadFirstPage, onCheckboxChange}) => { -// {onLoadFirstPage()} -// return ( -//
      -// {journeyPatterns.map((journeyPattern, index) => -// -// )} -//
      -// ) -// } - class JourneyPatterns extends Component{ constructor(props){ diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 297c8583a..2da8c304c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -1,6 +1,3 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes var actions = require('../actions') var connect = require('react-redux').connect var JourneyPatterns = require('../components/JourneyPatterns') -- cgit v1.2.3 From 65858a606ffde1fd4c77d7f3183b4113ceae65e9 Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Tue, 20 Dec 2016 12:17:09 +0100 Subject: Fix checkbox component attribute from defaultChecked to checked Signed-off-by: Thomas Shawarma Haddad Signed-off-by: Jean-Paul Lescouzeres --- .../es6_browserified/journey_patterns/components/JourneyPattern.js | 4 ++-- .../es6_browserified/journey_patterns/reducers/journeyPatterns.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app/assets/javascripts') 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 82624fee9..01796154f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -20,8 +20,8 @@ const JourneyPattern = (props) => { {stopPoint.name} props.onCheckboxChange(e)} - type='checkbox' id={stopPoint.id} defaultChecked={stopPoint.checked}> + onChange = {(e) => props.onCheckboxChange(e)} + type='checkbox' id={stopPoint.id} checked={stopPoint.checked}> )} diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 543bec6e3..eae459192 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -3,7 +3,7 @@ var actions = require("../actions") const journeyPattern = (state = {}, action) => { switch (action.type) { case 'UPDATE_CHECKBOX_VALUE': - var updatedStopPoints = state.stop_points.map((s, index) => { + var updatedStopPoints = state.stop_points.map((s) => { if (s.id.toString() == action.id) { return Object.assign({}, s, {checked : !s.checked}) }else { -- cgit v1.2.3 From 873f6033be2df958db9c7cb9a6ef28459454a145 Mon Sep 17 00:00:00 2001 From: jpl Date: Tue, 20 Dec 2016 13:40:36 +0100 Subject: adding save button to journey patterns --- .../journey_patterns/actions/index.js | 4 +++ .../journey_patterns/components/App.js | 2 ++ .../containers/SaveJourneyPattern.js | 31 ++++++++++++++++++++++ .../journey_patterns/reducers/journeyPatterns.js | 2 ++ 4 files changed, 39 insertions(+) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js (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 05f3318a4..595efbb54 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -24,6 +24,10 @@ const actions = { id : e.currentTarget.id, index }), + savePage : (dispatch, currentPage) => ({ + type: 'SAVE_PAGE', + dispatch + }), fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { if(currentPage == undefined){ currentPage = 1 diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js index 835feed82..378e6db1e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -1,6 +1,7 @@ var React = require('react') var AddJourneyPattern = require('../containers/AddJourneyPattern') var Navigate = require('../containers/Navigate') +var SaveJourneyPattern = require('../containers/SaveJourneyPattern') var JourneyPatternList = require('../containers/JourneyPatternList') const App = () => ( @@ -10,6 +11,7 @@ const App = () => ( + ) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js new file mode 100644 index 000000000..1fdc385a5 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js @@ -0,0 +1,31 @@ +var React = require('react') +var connect = require('react-redux').connect +var actions = require('../actions') + +let SaveJourneyPattern = ({ dispatch, journeyPatterns, page }) => { + return ( +
      {e.preventDefault()}}> + +
      + ) +} + +const mapStateToProps = (state) => { + return { + journeyPatterns: state.journeyPatterns, + page: state.pagination + } +} + +SaveJourneyPattern = connect(mapStateToProps)(SaveJourneyPattern) + +module.exports = SaveJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index eae459192..12e75ab67 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -40,6 +40,8 @@ const journeyPatterns = (state = {}, action) => { return j } }) + case 'SAVE_PAGE': + // do things default: return state } -- cgit v1.2.3 From d424a69861363cb04158531b3928983ee01888de Mon Sep 17 00:00:00 2001 From: jpl Date: Tue, 20 Dec 2016 13:57:41 +0100 Subject: updating save action --- .../es6_browserified/journey_patterns/reducers/journeyPatterns.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 12e75ab67..3fa412f60 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -41,7 +41,7 @@ const journeyPatterns = (state = {}, action) => { } }) case 'SAVE_PAGE': - // do things + actions.savePage(action.dispatch, action.currentPage) default: return state } -- cgit v1.2.3 From 917eda27040a034523baea4deab86f48aa11ba4d Mon Sep 17 00:00:00 2001 From: jpl Date: Tue, 20 Dec 2016 16:37:29 +0100 Subject: Refs #2210: adding save request, w/o processing results --- .../journey_patterns/actions/index.js | 21 ++++++++++++++++++++- .../journey_patterns/reducers/journeyPatterns.js | 2 +- 2 files changed, 21 insertions(+), 2 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 595efbb54..110d02889 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -28,6 +28,25 @@ const actions = { type: 'SAVE_PAGE', dispatch }), + submitJourneyPattern : (dispatch, state) => { + let urlJSON = window.location.pathname + ".json" + let req = new Request(urlJSON, { + credentials: 'same-origin', + method: 'PATCH', + contentType: 'application/json; charset=utf-8', + Accept: 'application/json', + body: JSON.stringify(state), + headers: { + 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') + } + }) + fetch(req) + .then(response => response.json()) + .then((json) => { + console.log('ton papa') + // dispatch(actions.receiveJourneyPatterns(journeyPatterns)) + }) + }, fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { if(currentPage == undefined){ currentPage = 1 @@ -54,7 +73,7 @@ const actions = { let urlJSON = window.location.pathname + str let req = new Request(urlJSON, { credentials: 'same-origin', - }); + }) fetch(req) .then(response => response.json()) .then((json) => { diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 3fa412f60..e763bc581 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -41,7 +41,7 @@ const journeyPatterns = (state = {}, action) => { } }) case 'SAVE_PAGE': - actions.savePage(action.dispatch, action.currentPage) + actions.submitJourneyPattern(action.dispatch, state) default: return state } -- cgit v1.2.3 From 82e34b5f96ff0b8cb20ea4a7ee65d4a58fd070a8 Mon Sep 17 00:00:00 2001 From: jpl Date: Tue, 20 Dec 2016 17:14:39 +0100 Subject: Refs #2205: hiding or not next/previous page links according to pagination --- .../es6_browserified/journey_patterns/containers/Navigate.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js index 75c94e8c3..91d4a71ad 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -2,7 +2,10 @@ var React = require('react') var connect = require('react-redux').connect var actions = require('../actions') -let Navigate = ({ dispatch, journeyPatterns, page }) => { +let Navigate = ({ dispatch, journeyPatterns, page, length }) => { + let firstPage = 1 + let lastPage = Math.round(length / 12) + return (
      { e.preventDefault() @@ -13,7 +16,7 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { dispatch(actions.goToPreviousPage(dispatch, page)) }} type="submit" - className="btn btn-default"> + className={ (page == firstPage ? "hidden" : "") + " btn btn-default" }>
      @@ -32,7 +35,8 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { const mapStateToProps = (state) => { return { journeyPatterns: state.journeyPatterns, - page: state.pagination + page: state.pagination, + length: state.totalCount } } -- cgit v1.2.3 From 59de9d7185a9ca01db675a75d081ccff33fb9ded Mon Sep 17 00:00:00 2001 From: Thomas Haddad Date: Wed, 21 Dec 2016 12:19:10 +0100 Subject: Refs #2209: Add state to modal, Modal Container/Component/first reducer Signed-off-by: Thomas Shawarma Haddad Signed-off-by: Jean-Paul Lescouzeres --- .../es6_browserified/journey_patterns/actions/index.js | 5 +++++ .../journey_patterns/components/App.js | 2 ++ .../journey_patterns/components/JourneyPattern.js | 9 ++++++++- .../journey_patterns/components/JourneyPatterns.js | 4 +++- .../journey_patterns/components/Modal.js | 17 +++++++++++++++++ .../journey_patterns/containers/JourneyPatternList.js | 3 +++ .../journey_patterns/containers/Modal.js | 12 ++++++++++++ .../es6_browserified/journey_patterns/index.js | 6 +++++- .../journey_patterns/reducers/index.js | 4 +++- .../journey_patterns/reducers/modal.js | 18 ++++++++++++++++++ 10 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js (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 110d02889..9e598fdbc 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -24,6 +24,11 @@ const actions = { id : e.currentTarget.id, index }), + openUpdateModalOpen : (index, journeyPattern) => ({ + type : 'UPDATE_JOURNEYPATTERN_MODAL', + index, + journeyPattern + }), savePage : (dispatch, currentPage) => ({ type: 'SAVE_PAGE', dispatch diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js index 378e6db1e..3472d9dcc 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -1,6 +1,7 @@ var React = require('react') var AddJourneyPattern = require('../containers/AddJourneyPattern') var Navigate = require('../containers/Navigate') +var Modal = require('../containers/Modal') var SaveJourneyPattern = require('../containers/SaveJourneyPattern') var JourneyPatternList = require('../containers/JourneyPatternList') @@ -12,6 +13,7 @@ const App = () => ( + ) 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 01796154f..bf604d2ae 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -4,6 +4,12 @@ var PropTypes = require('react').PropTypes const JourneyPattern = (props) => { return (
      +

      + MODAL +

      Index: {props.index}

      Name: {props.value.name}

      ObjectID: {props.value.object_id}

      @@ -33,7 +39,8 @@ const JourneyPattern = (props) => { JourneyPattern.propTypes = { value: PropTypes.object, index: PropTypes.number, - onCheckboxChange: PropTypes.func.isRequired + onCheckboxChange: PropTypes.func.isRequired, + onUpdateModalOpen: PropTypes.func.isRequired } module.exports = JourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js index a22963ca3..4a74f7d19 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -21,6 +21,7 @@ class JourneyPatterns extends Component{ value={ journeyPattern } key={ index } onCheckboxChange= {(e) => this.props.onCheckboxChange(e, index)} + onUpdateModalOpen= {() => this.props.onUpdateModalOpen(index, journeyPattern)} /> )}
      @@ -31,7 +32,8 @@ class JourneyPatterns extends Component{ JourneyPatterns.propTypes = { journeyPatterns: PropTypes.array.isRequired, onCheckboxChange: PropTypes.func.isRequired, - onLoadFirstPage: PropTypes.func.isRequired + onLoadFirstPage: PropTypes.func.isRequired, + onUpdateModalOpen: PropTypes.func.isRequired } module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js new file mode 100644 index 000000000..90140661c --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -0,0 +1,17 @@ +var React = require('react') +var PropTypes = require('react').PropTypes + +const ModalComponent = (props) => { + return ( +

      + COUCOU {props.index} +

      + ) +} + +ModalComponent.propTypes = { + index: PropTypes.number, + modal: PropTypes.object +} + +module.exports = ModalComponent diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 2da8c304c..f475f7cfe 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -16,6 +16,9 @@ const mapDispatchToProps = (dispatch) => { onCheckboxChange: (e, index) =>{ dispatch(actions.updateCheckboxValue(e, index)) }, + onUpdateModalOpen: (index, journeyPattern) =>{ + dispatch(actions.openUpdateModalOpen(index, journeyPattern)) + }, } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js new file mode 100644 index 000000000..22b36b35e --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -0,0 +1,12 @@ +var connect = require('react-redux').connect +var ModalComponent = require('../components/modal') + +const mapStateToProps = (state) => { + return { + modal: state.modal, + } +} + +const ModalContainer = connect(mapStateToProps)(ModalComponent) + +module.exports = ModalContainer diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index e420cff9f..86e9e1c35 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -14,7 +14,11 @@ var promise = require('redux-promise') var initialState = { journeyPatterns: [], pagination: 1, - totalCount: window.journeyPatternLength + totalCount: window.journeyPatternLength, + modal: { + open: false, + modalProps: {} + } } const loggerMiddleware = createLogger() diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js index 7e8270868..71ff8b6f5 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js @@ -2,11 +2,13 @@ var combineReducers = require('redux').combineReducers var journeyPatterns = require('./journeyPatterns') var pagination = require('./pagination') var totalCount = require('./totalCount') +var modal = require('./modal') const journeyPatternsApp = combineReducers({ journeyPatterns, pagination, - totalCount + totalCount, + modal }) module.exports = journeyPatternsApp diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js new file mode 100644 index 000000000..452c47011 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -0,0 +1,18 @@ +const modal = (state = {}, action) => { + switch (action.type) { + case 'UPDATE_JOURNEYPATTERN_MODAL': + return { + open: true, + modalProps: { + index: action.index, + journeyPattern: action.journeyPattern + } + } + case 'HIDE_MODAL': + return {} + default: + return state + } +} + +module.exports = modal -- cgit v1.2.3 From 2982629561520f79fee806c1e1ef8caedd9a755c Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 12:28:04 +0100 Subject: fix typo on modal comp. require --- .../javascripts/es6_browserified/journey_patterns/containers/Modal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 22b36b35e..2acacaced 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -1,5 +1,5 @@ var connect = require('react-redux').connect -var ModalComponent = require('../components/modal') +var ModalComponent = require('../components/Modal') const mapStateToProps = (state) => { return { -- cgit v1.2.3 From b8aca8b47d73e998e704c127a8b6c65c9bdf2b14 Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 13:16:45 +0100 Subject: starting integration for edit modal on journeypatterns collection --- .../journey_patterns/components/JourneyPattern.js | 25 +++++++------ .../journey_patterns/components/Modal.js | 41 ++++++++++++++++++++-- .../journey_patterns/containers/Modal.js | 2 +- 3 files changed, 54 insertions(+), 14 deletions(-) (limited to 'app/assets/javascripts') 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 bf604d2ae..7518fa154 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -4,16 +4,21 @@ var PropTypes = require('react').PropTypes const JourneyPattern = (props) => { return (
      -

      - MODAL -

      -

      Index: {props.index}

      -

      Name: {props.value.name}

      -

      ObjectID: {props.value.object_id}

      -

      Published name: {props.value.published_name}

      +
      +

      Index: {props.index}

      +

      Name: {props.value.name}

      +
      + +
      +

      ObjectID: {props.value.object_id}

      +

      Published name: {props.value.published_name}

      +
      + +
      + +

      Stop points:

        diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 90140661c..939037447 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -3,9 +3,44 @@ var PropTypes = require('react').PropTypes const ModalComponent = (props) => { return ( -

        - COUCOU {props.index} -

        +
        +
        +
        +
        +

        + Modifier la mission + {props.modal.open && ( + "{props.modal.modalProps.journeyPattern.name}" + )} +

        +
        +
        + {props.modal.open && ( +

        + Name: + {props.modal.modalProps.journeyPattern.name} +
        + Published name: + {props.modal.modalProps.journeyPattern.published_name} +

        + )} +
        +
        + + +
        +
        +
        +
        ) } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 2acacaced..794e38265 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -3,7 +3,7 @@ var ModalComponent = require('../components/Modal') const mapStateToProps = (state) => { return { - modal: state.modal, + modal: state.modal } } -- cgit v1.2.3 From 05410e5ace24b0dd01a99441c375ce4d88023b91 Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 14:20:06 +0100 Subject: get registration_number in state --- .../javascripts/es6_browserified/journey_patterns/actions/index.js | 1 + .../javascripts/es6_browserified/journey_patterns/components/Modal.js | 4 ++-- 2 files changed, 3 insertions(+), 2 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 9e598fdbc..6dc2c0470 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -96,6 +96,7 @@ const actions = { name: val.name, object_id: val.object_id, published_name: val.published_name, + registration_number: val.registration_number, stop_points: val.route_short_description.stop_points }) } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 939037447..219f32c8b 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -20,8 +20,8 @@ const ModalComponent = (props) => { Name: {props.modal.modalProps.journeyPattern.name}
        - Published name: - {props.modal.modalProps.journeyPattern.published_name} + Registration number: + {props.modal.modalProps.journeyPattern.registration_number}

        )}
      -- cgit v1.2.3 From 94d910b19a572957f9b1d2556a2cc313ea3a7a43 Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 15:51:53 +0100 Subject: fix close modal caring about state --- .../journey_patterns/actions/index.js | 3 + .../journey_patterns/components/Modal.js | 65 ++++++++++++++++++---- .../containers/JourneyPatternList.js | 2 +- .../journey_patterns/containers/Modal.js | 11 +++- .../journey_patterns/reducers/modal.js | 7 ++- 5 files changed, 74 insertions(+), 14 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 6dc2c0470..0d1c97fd7 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -29,6 +29,9 @@ const actions = { index, journeyPattern }), + closeModal : () => ({ + type : 'CLOSE_MODAL' + }), savePage : (dispatch, currentPage) => ({ type: 'SAVE_PAGE', dispatch diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 219f32c8b..613acf461 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -6,29 +6,72 @@ const ModalComponent = (props) => {
      -
      -

      +
      +

      Modifier la mission {props.modal.open && ( "{props.modal.modalProps.journeyPattern.name}" )}

      +
      {props.modal.open && ( -

      - Name: - {props.modal.modalProps.journeyPattern.name} -
      - Registration number: - {props.modal.modalProps.journeyPattern.registration_number} -

      +
      +
      + + props.onInputChange(e)} + /> +
      + +
      + + props.onInputChange(e)} + /> +
      + +
      + + props.onInputChange(e)} + /> +
      +
      )}
      @@ -46,7 +89,9 @@ const ModalComponent = (props) => { ModalComponent.propTypes = { index: PropTypes.number, - modal: PropTypes.object + modal: PropTypes.object, + onModalClose: PropTypes.func.isRequired, + onInputChange: PropTypes.func.isRequired } module.exports = ModalComponent diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index f475f7cfe..df1df9933 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -18,7 +18,7 @@ const mapDispatchToProps = (dispatch) => { }, onUpdateModalOpen: (index, journeyPattern) =>{ dispatch(actions.openUpdateModalOpen(index, journeyPattern)) - }, + } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 794e38265..347333bfd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -1,5 +1,6 @@ var connect = require('react-redux').connect var ModalComponent = require('../components/Modal') +var actions = require('../actions') const mapStateToProps = (state) => { return { @@ -7,6 +8,14 @@ const mapStateToProps = (state) => { } } -const ModalContainer = connect(mapStateToProps)(ModalComponent) +const mapDispatchToProps = (dispatch) => { + return { + onModalClose: () =>{ + dispatch(actions.closeModal()) + } + } +} + +const ModalContainer = connect(mapStateToProps, mapDispatchToProps)(ModalComponent) module.exports = ModalContainer diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index 452c47011..8d25af6d1 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -8,8 +8,11 @@ const modal = (state = {}, action) => { journeyPattern: action.journeyPattern } } - case 'HIDE_MODAL': - return {} + case 'CLOSE_MODAL': + return { + open: false, + modalProps: {} + } default: return state } -- cgit v1.2.3 From 17d9d19a220faf1646abac4011b0aba8f761ebc0 Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 15:58:15 +0100 Subject: remove onInputChange on journey pattern form inputs --- .../es6_browserified/journey_patterns/components/Modal.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 613acf461..1c21d8b3e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -38,8 +38,7 @@ const ModalComponent = (props) => { type='text' className='form-control' id={props.modal.modalProps.index} - value={props.modal.modalProps.journeyPattern.name} - onChange={(e) => props.onInputChange(e)} + defaultValue={props.modal.modalProps.journeyPattern.name} />
      @@ -49,8 +48,7 @@ const ModalComponent = (props) => { type='text' className='form-control' id={props.modal.modalProps.index} - value={props.modal.modalProps.journeyPattern.published_name} - onChange={(e) => props.onInputChange(e)} + defaultValue={props.modal.modalProps.journeyPattern.published_name} />

      @@ -60,8 +58,7 @@ const ModalComponent = (props) => { type='text' className='form-control' id={props.modal.modalProps.index} - value={props.modal.modalProps.journeyPattern.registration_number} - onChange={(e) => props.onInputChange(e)} + defaultValue={props.modal.modalProps.journeyPattern.registration_number} />
      @@ -90,8 +87,7 @@ const ModalComponent = (props) => { ModalComponent.propTypes = { index: PropTypes.number, modal: PropTypes.object, - onModalClose: PropTypes.func.isRequired, - onInputChange: PropTypes.func.isRequired + onModalClose: PropTypes.func.isRequired } module.exports = ModalComponent -- cgit v1.2.3 From 43a427d74419e7aab6e02c6566754ee148c5d744 Mon Sep 17 00:00:00 2001 From: jpl Date: Wed, 21 Dec 2016 17:47:57 +0100 Subject: improving jp form --- .../journey_patterns/components/Modal.js | 48 ++++++++++++++-------- 1 file changed, 30 insertions(+), 18 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 1c21d8b3e..4baefbda2 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -25,7 +25,13 @@ const ModalComponent = (props) => {
      @@ -42,25 +48,31 @@ const ModalComponent = (props) => { /> -
      - - +
      +
      +
      + + +
      +
      +
      +
      + + +
      +
      -
      - - -
      )}
      -- cgit v1.2.3 From 9b70535f611fade0b53d6910b479762d5246bc09 Mon Sep 17 00:00:00 2001 From: jpl Date: Thu, 22 Dec 2016 12:33:24 +0100 Subject: Refs #2208: adding delete journey pattern to modal on jp collection --- .../es6_browserified/journey_patterns/actions/index.js | 10 ++++++++-- .../es6_browserified/journey_patterns/components/Modal.js | 10 +++++++++- .../es6_browserified/journey_patterns/containers/Modal.js | 3 +++ .../es6_browserified/journey_patterns/reducers/modal.js | 14 ++++++++++++++ 4 files changed, 34 insertions(+), 3 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 0d1c97fd7..2561a6add 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -29,6 +29,11 @@ const actions = { index, journeyPattern }), + deleteJourneyPattern : (index, journeyPattern) => ({ + type : 'DELETE_JOURNEYPATTERN_MODAL', + index, + journeyPattern + }), closeModal : () => ({ type : 'CLOSE_MODAL' }), @@ -51,7 +56,7 @@ const actions = { fetch(req) .then(response => response.json()) .then((json) => { - console.log('ton papa') + console.log('request for submit') // dispatch(actions.receiveJourneyPatterns(journeyPatterns)) }) }, @@ -100,7 +105,8 @@ const actions = { object_id: val.object_id, published_name: val.published_name, registration_number: val.registration_number, - stop_points: val.route_short_description.stop_points + stop_points: val.route_short_description.stop_points, + deletable: false }) } dispatch(actions.receiveJourneyPatterns(journeyPatterns)) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 4baefbda2..869d14f1e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -28,12 +28,19 @@ const ModalComponent = (props) => {
    • props.onDeleteJourneyPattern(props.modal.modalProps.index, props.modal.modalProps.journeyPattern)} > Supprimer la mission
    + {props.modal.open && ( + props.modal.modalProps.journeyPattern.deletable ? +
    La mission a été supprimée. Cette action sera effective après validation.
    + : + '' + )}
    {props.modal.open && ( @@ -99,7 +106,8 @@ const ModalComponent = (props) => { ModalComponent.propTypes = { index: PropTypes.number, modal: PropTypes.object, - onModalClose: PropTypes.func.isRequired + onModalClose: PropTypes.func.isRequired, + onDeleteJourneyPattern: PropTypes.func.isRequired } module.exports = ModalComponent diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 347333bfd..06f4d0e13 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -12,6 +12,9 @@ const mapDispatchToProps = (dispatch) => { return { onModalClose: () =>{ dispatch(actions.closeModal()) + }, + onDeleteJourneyPattern: (index, journeyPattern) =>{ + dispatch(actions.deleteJourneyPattern(index, journeyPattern)) } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index 8d25af6d1..1ee7f64c0 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -8,6 +8,20 @@ const modal = (state = {}, action) => { journeyPattern: action.journeyPattern } } + case 'DELETE_JOURNEYPATTERN_MODAL': + return Object.assign({}, state, { + modalProps: { + index: action.index, + journeyPattern: { + name: action.journeyPattern.name, + object_id: action.journeyPattern.object_id, + published_name: action.journeyPattern.published_name, + registration_number: action.journeyPattern.registration_number, + stop_points: action.journeyPattern.stop_points, + deletable: true + } + } + }) case 'CLOSE_MODAL': return { open: false, -- cgit v1.2.3 From b99e3d0ee45f498f79799bdddcacd6b19eca81a3 Mon Sep 17 00:00:00 2001 From: jpl Date: Thu, 29 Dec 2016 12:14:50 +0100 Subject: refs #2210: adding save to modalProps, still have to dispatch to journeyPattern --- .../journey_patterns/actions/index.js | 4 + .../journey_patterns/components/Modal.js | 196 +++++++++++---------- .../journey_patterns/containers/Modal.js | 3 + .../journey_patterns/reducers/modal.js | 34 +++- 4 files changed, 139 insertions(+), 98 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 2561a6add..c9f029bcd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -37,6 +37,10 @@ const actions = { closeModal : () => ({ type : 'CLOSE_MODAL' }), + saveModal : (data) => ({ + type: 'SAVE_MODAL', + data + }), savePage : (dispatch, currentPage) => ({ type: 'SAVE_PAGE', dispatch diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 869d14f1e..cfc53d302 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -1,112 +1,130 @@ var React = require('react') +var Component = require('react').Component var PropTypes = require('react').PropTypes -const ModalComponent = (props) => { - return ( -
    -
    -
    -
    -

    - Modifier la mission - {props.modal.open && ( - "{props.modal.modalProps.journeyPattern.name}" - )} -

    - + {this.props.modal.open && ( + this.props.modal.modalProps.journeyPattern.deletable ? +
    La mission a été supprimée. Cette action sera effective après validation.
    + : + '' + )}
    - {props.modal.open && ( - props.modal.modalProps.journeyPattern.deletable ? -
    La mission a été supprimée. Cette action sera effective après validation.
    - : - '' - )} -
    -
    - {props.modal.open && ( -
    -
    - - -
    +
    + {this.props.modal.open && ( + +
    + + +
    -
    -
    -
    - - +
    +
    +
    + + +
    -
    -
    -
    - - +
    +
    + + +
    -
    - - )} -
    -
    - - + + )} +
    +
    + + +
    -
    - ) + ) + } } ModalComponent.propTypes = { index: PropTypes.number, modal: PropTypes.object, onModalClose: PropTypes.func.isRequired, + saveModal: PropTypes.func.isRequired, onDeleteJourneyPattern: PropTypes.func.isRequired } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 06f4d0e13..c60b05403 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -15,6 +15,9 @@ const mapDispatchToProps = (dispatch) => { }, onDeleteJourneyPattern: (index, journeyPattern) =>{ dispatch(actions.deleteJourneyPattern(index, journeyPattern)) + }, + saveModal: (data) =>{ + dispatch(actions.saveModal(data)) } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index 1ee7f64c0..577987997 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -1,3 +1,18 @@ +const updatedJourneyPattern = (state = {}, action) => { + switch (action.type) { + case 'DELETE_JOURNEYPATTERN_MODAL': + return Object.assign({}, state, { deletable: true }) + case 'SAVE_MODAL': + return Object.assign({}, state, { + name: action.data.name.value, + published_name: action.data.published_name.value, + registration_number: action.data.registration_number.value + }) + default: + return state + } +} + const modal = (state = {}, action) => { switch (action.type) { case 'UPDATE_JOURNEYPATTERN_MODAL': @@ -11,17 +26,18 @@ const modal = (state = {}, action) => { case 'DELETE_JOURNEYPATTERN_MODAL': return Object.assign({}, state, { modalProps: { - index: action.index, - journeyPattern: { - name: action.journeyPattern.name, - object_id: action.journeyPattern.object_id, - published_name: action.journeyPattern.published_name, - registration_number: action.journeyPattern.registration_number, - stop_points: action.journeyPattern.stop_points, - deletable: true - } + index: state.modalProps.index, + journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) } }) + case 'SAVE_MODAL': + return Object.assign({}, state, { + modalProps: { + index: state.modalProps.index, + journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) + } + }) + case 'CLOSE_MODAL': return { open: false, -- cgit v1.2.3 From a6e36a968f5ce8ded9031c1e3b097fcdf7097ff6 Mon Sep 17 00:00:00 2001 From: jpl Date: Thu, 29 Dec 2016 16:09:40 +0100 Subject: adding close modale after saving modalprops --- .../es6_browserified/journey_patterns/components/Modal.js | 6 +++++- .../javascripts/es6_browserified/journey_patterns/reducers/modal.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index cfc53d302..9a2165da2 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -38,7 +38,10 @@ class ModalComponent extends Component {
  • this.props.onDeleteJourneyPattern(this.props.modal.modalProps.index, this.props.modal.modalProps.journeyPattern)} + onClick={(e) => { + e.preventDefault() + this.props.onDeleteJourneyPattern(this.props.modal.modalProps.index, this.props.modal.modalProps.journeyPattern)} + } > Supprimer la mission @@ -107,6 +110,7 @@ class ModalComponent extends Component {
  • @@ -31,8 +31,12 @@ const JourneyPattern = (props) => { {stopPoint.name} props.onCheckboxChange(e)} - type='checkbox' id={stopPoint.id} checked={stopPoint.checked}> + onChange = {(e) => props.onCheckboxChange(e)} + type='checkbox' + id={stopPoint.id} + checked={stopPoint.checked} + disabled={props.value.deletable ? 'true' : 'false'} + > )} diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 9a2165da2..1d6c798bc 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -38,6 +38,7 @@ class ModalComponent extends Component {
  • { e.preventDefault() this.props.onDeleteJourneyPattern(this.props.modal.modalProps.index, this.props.modal.modalProps.journeyPattern)} @@ -48,12 +49,6 @@ class ModalComponent extends Component {
- {this.props.modal.open && ( - this.props.modal.modalProps.journeyPattern.deletable ? -
La mission a été supprimée. Cette action sera effective après validation.
- : - '' - )}
{this.props.modal.open && ( diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index c60b05403..146d33b4a 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -4,7 +4,8 @@ var actions = require('../actions') const mapStateToProps = (state) => { return { - modal: state.modal + modal: state.modal, + journeyPattern: state.journeyPattern } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index e763bc581..8885090a7 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -40,6 +40,14 @@ const journeyPatterns = (state = {}, action) => { return j } }) + case 'DELETE_JOURNEYPATTERN': + return state.map((j, i) =>{ + if( i == action.index){ + return Object.assign({}, j, {deletable: true}) + }else{ + return j + } + }) case 'SAVE_PAGE': actions.submitJourneyPattern(action.dispatch, state) default: diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index c2abb0d42..a54b9a66e 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -23,13 +23,8 @@ const modal = (state = {}, action) => { journeyPattern: action.journeyPattern } } - case 'DELETE_JOURNEYPATTERN_MODAL': - return Object.assign({}, state, { - modalProps: { - index: state.modalProps.index, - journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) - } - }) + case 'DELETE_JOURNEYPATTERN': + return Object.assign({}, state, { open: false }) case 'SAVE_MODAL': return Object.assign({}, state, { open: false, -- cgit v1.2.3 From 75f1849e57c82844968297334d8276d518f3a41e Mon Sep 17 00:00:00 2001 From: jpl Date: Fri, 30 Dec 2016 15:54:07 +0100 Subject: Refs #2209: dispatch modal changes on journey pattern --- .../journey_patterns/actions/index.js | 5 +-- .../journey_patterns/components/Modal.js | 2 +- .../journey_patterns/containers/Modal.js | 4 +-- .../journey_patterns/reducers/journeyPatterns.js | 16 +++++++-- .../journey_patterns/reducers/modal.js | 41 +++++++++++----------- 5 files changed, 40 insertions(+), 28 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 95577994c..2e57b33f9 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -37,9 +37,10 @@ const actions = { closeModal : () => ({ type : 'CLOSE_MODAL' }), - saveModal : (data) => ({ + saveModal : (index, data) => ({ type: 'SAVE_MODAL', - data + data, + index }), savePage : (dispatch, currentPage) => ({ type: 'SAVE_PAGE', diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js index 1d6c798bc..8e0f1bfad 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js @@ -8,7 +8,7 @@ class ModalComponent extends Component { } handleSubmit(e) { e.preventDefault() - this.props.saveModal(this.refs) + this.props.saveModal(this.props.modal.modalProps.index, this.refs) } render() { diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 146d33b4a..7c72afccd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -17,8 +17,8 @@ const mapDispatchToProps = (dispatch) => { onDeleteJourneyPattern: (index, journeyPattern) =>{ dispatch(actions.deleteJourneyPattern(index, journeyPattern)) }, - saveModal: (data) =>{ - dispatch(actions.saveModal(data)) + saveModal: (index, data) =>{ + dispatch(actions.saveModal(index, data)) } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 8885090a7..737c90307 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -42,9 +42,21 @@ const journeyPatterns = (state = {}, action) => { }) case 'DELETE_JOURNEYPATTERN': return state.map((j, i) =>{ - if( i == action.index){ + if(i == action.index) { return Object.assign({}, j, {deletable: true}) - }else{ + } else { + return j + } + }) + case 'SAVE_MODAL': + return state.map((j, i) =>{ + if(i == action.index) { + return Object.assign({}, j, { + name: action.data.name.value, + published_name: action.data.published_name.value, + registration_number: action.data.registration_number.value + }) + } else { return j } }) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index a54b9a66e..87efd4cfe 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -1,17 +1,15 @@ -const updatedJourneyPattern = (state = {}, action) => { - switch (action.type) { - case 'DELETE_JOURNEYPATTERN_MODAL': - return Object.assign({}, state, { deletable: true }) - case 'SAVE_MODAL': - return Object.assign({}, state, { - name: action.data.name.value, - published_name: action.data.published_name.value, - registration_number: action.data.registration_number.value - }) - default: - return state - } -} +// const updatedJourneyPattern = (state = {}, action) => { +// switch (action.type) { +// case 'SAVE_MODAL': +// return Object.assign({}, state, { +// name: action.data.name.value, +// published_name: action.data.published_name.value, +// registration_number: action.data.registration_number.value +// }) +// default: +// return state +// } +// } const modal = (state = {}, action) => { switch (action.type) { @@ -26,13 +24,14 @@ const modal = (state = {}, action) => { case 'DELETE_JOURNEYPATTERN': return Object.assign({}, state, { open: false }) case 'SAVE_MODAL': - return Object.assign({}, state, { - open: false, - modalProps: { - index: state.modalProps.index, - journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) - } - }) + return Object.assign({}, state, { open: false }) + // return Object.assign({}, state, { + // open: false, + // modalProps: { + // index: state.modalProps.index, + // journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) + // } + // }) case 'CLOSE_MODAL': return { open: false, -- cgit v1.2.3 From 243c802fca83acfef7c02e868f31eb51c9b0e3dd Mon Sep 17 00:00:00 2001 From: jpl Date: Fri, 30 Dec 2016 17:16:57 +0100 Subject: modal code gardening --- .../journey_patterns/actions/index.js | 4 ++-- .../journey_patterns/components/JourneyPattern.js | 4 ++-- .../journey_patterns/components/JourneyPatterns.js | 4 ++-- .../containers/AddJourneyPattern.js | 5 ++++- .../containers/JourneyPatternList.js | 4 ++-- .../journey_patterns/reducers/modal.js | 22 +--------------------- 6 files changed, 13 insertions(+), 30 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 2e57b33f9..a9e7c41bd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -24,8 +24,8 @@ const actions = { id : e.currentTarget.id, index }), - openUpdateModalOpen : (index, journeyPattern) => ({ - type : 'UPDATE_JOURNEYPATTERN_MODAL', + openEditModal : (index, journeyPattern) => ({ + type : 'EDIT_JOURNEYPATTERN_MODAL', index, journeyPattern }), 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 1e930ee5d..209af168f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -15,7 +15,7 @@ const JourneyPattern = (props) => {
-
@@ -49,7 +49,7 @@ JourneyPattern.propTypes = { value: PropTypes.object, index: PropTypes.number, onCheckboxChange: PropTypes.func.isRequired, - onUpdateModalOpen: PropTypes.func.isRequired + onOpenEditModal: PropTypes.func.isRequired } module.exports = JourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js index 4a74f7d19..70bc784c4 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -21,7 +21,7 @@ class JourneyPatterns extends Component{ value={ journeyPattern } key={ index } onCheckboxChange= {(e) => this.props.onCheckboxChange(e, index)} - onUpdateModalOpen= {() => this.props.onUpdateModalOpen(index, journeyPattern)} + onOpenEditModal= {() => this.props.onOpenEditModal(index, journeyPattern)} /> )} @@ -33,7 +33,7 @@ JourneyPatterns.propTypes = { journeyPatterns: PropTypes.array.isRequired, onCheckboxChange: PropTypes.func.isRequired, onLoadFirstPage: PropTypes.func.isRequired, - onUpdateModalOpen: PropTypes.func.isRequired + onOpenEditModal: PropTypes.func.isRequired } module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js index 17b5b0506..cafde555c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js @@ -7,7 +7,10 @@ let AddJourneyPattern = ({ dispatch }) => {
{ e.preventDefault() }}> -
diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index df1df9933..73dc6a1c7 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -16,8 +16,8 @@ const mapDispatchToProps = (dispatch) => { onCheckboxChange: (e, index) =>{ dispatch(actions.updateCheckboxValue(e, index)) }, - onUpdateModalOpen: (index, journeyPattern) =>{ - dispatch(actions.openUpdateModalOpen(index, journeyPattern)) + onOpenEditModal: (index, journeyPattern) =>{ + dispatch(actions.openEditModal(index, journeyPattern)) } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index 87efd4cfe..c6156c72c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -1,19 +1,6 @@ -// const updatedJourneyPattern = (state = {}, action) => { -// switch (action.type) { -// case 'SAVE_MODAL': -// return Object.assign({}, state, { -// name: action.data.name.value, -// published_name: action.data.published_name.value, -// registration_number: action.data.registration_number.value -// }) -// default: -// return state -// } -// } - const modal = (state = {}, action) => { switch (action.type) { - case 'UPDATE_JOURNEYPATTERN_MODAL': + case 'EDIT_JOURNEYPATTERN_MODAL': return { open: true, modalProps: { @@ -25,13 +12,6 @@ const modal = (state = {}, action) => { return Object.assign({}, state, { open: false }) case 'SAVE_MODAL': return Object.assign({}, state, { open: false }) - // return Object.assign({}, state, { - // open: false, - // modalProps: { - // index: state.modalProps.index, - // journeyPattern: updatedJourneyPattern(state.modalProps.journeyPattern, action) - // } - // }) case 'CLOSE_MODAL': return { open: false, -- cgit v1.2.3 From 496fc5a81e26c4b55abe649bfc7dfda5eb6ea9a7 Mon Sep 17 00:00:00 2001 From: jpl Date: Fri, 30 Dec 2016 17:52:44 +0100 Subject: Refs #2206: adding create new jp with modal --- .../journey_patterns/components/App.js | 2 +- .../journey_patterns/components/CreateModal.js | 67 +++++++++++ .../journey_patterns/components/EditModal.js | 130 +++++++++++++++++++++ .../journey_patterns/components/JourneyPatterns.js | 3 +- .../journey_patterns/components/Modal.js | 130 --------------------- .../containers/AddJourneyPattern.js | 39 ++++--- .../journey_patterns/containers/Modal.js | 11 +- 7 files changed, 228 insertions(+), 154 deletions(-) create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js create mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js delete mode 100644 app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js index 3472d9dcc..5c2454dac 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js @@ -8,8 +8,8 @@ var JourneyPatternList = require('../containers/JourneyPatternList') const App = () => (
- +
diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js new file mode 100644 index 000000000..b07686a33 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js @@ -0,0 +1,67 @@ +var React = require('react') +var Component = require('react').Component +var PropTypes = require('react').PropTypes + +class CreateModal extends Component { + constructor(props) { + super(props) + } + handleSubmit(e) { + e.preventDefault() + this.props.saveModal(this.props.modal.modalProps.index, this.refs) + } + + render() { + return ( +
+ +
+
+
+
+

Ajouter une mission

+
+
+ le formulaire arrive... +
+
+ + +
+
+
+
+
+ ) + } +} + +CreateModal.propTypes = { + index: PropTypes.number, + modal: PropTypes.object, + onModalClose: PropTypes.func.isRequired, + saveModal: PropTypes.func.isRequired +} + +module.exports = CreateModal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js new file mode 100644 index 000000000..a63263f90 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js @@ -0,0 +1,130 @@ +var React = require('react') +var Component = require('react').Component +var PropTypes = require('react').PropTypes + +class EditModal extends Component { + constructor(props) { + super(props) + } + handleSubmit(e) { + e.preventDefault() + this.props.saveModal(this.props.modal.modalProps.index, this.refs) + } + + render() { + return ( +
+ ) + } +} + +EditModal.propTypes = { + index: PropTypes.number, + modal: PropTypes.object, + onModalClose: PropTypes.func.isRequired, + saveModal: PropTypes.func.isRequired, + onDeleteJourneyPattern: PropTypes.func.isRequired +} + +module.exports = EditModal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js index 70bc784c4..160631697 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -1,10 +1,9 @@ -var Component = require('react').Component var React = require('react') +var Component = require('react').Component var PropTypes = require('react').PropTypes var JourneyPattern = require('./JourneyPattern') class JourneyPatterns extends Component{ - constructor(props){ super(props) } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js deleted file mode 100644 index 8e0f1bfad..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Modal.js +++ /dev/null @@ -1,130 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes - -class ModalComponent extends Component { - constructor(props) { - super(props) - } - handleSubmit(e) { - e.preventDefault() - this.props.saveModal(this.props.modal.modalProps.index, this.refs) - } - - render() { - return ( -
-
-
-
-

- Modifier la mission - {this.props.modal.open && ( - "{this.props.modal.modalProps.journeyPattern.name}" - )} -

- -
-
- {this.props.modal.open && ( -
-
- - -
- -
-
-
- - -
-
-
-
- - -
-
-
- -
- )} -
-
- - -
-
-
-
- ) - } -} - -ModalComponent.propTypes = { - index: PropTypes.number, - modal: PropTypes.object, - onModalClose: PropTypes.func.isRequired, - saveModal: PropTypes.func.isRequired, - onDeleteJourneyPattern: PropTypes.func.isRequired -} - -module.exports = ModalComponent diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js index cafde555c..ed7502e73 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js @@ -1,21 +1,28 @@ -var React = require('react') -var connect = require('react-redux').connect var actions = require('../actions') +var connect = require('react-redux').connect +var CreateModal = require('../components/CreateModal') -let AddJourneyPattern = ({ dispatch }) => { - return ( -
{ - e.preventDefault() - }}> - -
- ) +const mapStateToProps = (state) => { + return { + modal: state.modal, + journeyPatterns: state.journeyPatterns + } } -AddJourneyPattern = connect()(AddJourneyPattern) + +const mapDispatchToProps = (dispatch) => { + return { + onModalClose: () =>{ + dispatch(actions.closeModal()) + }, + saveModal: (index, data) =>{ + dispatch(actions.saveModal(index, data)) + } + // onOpenCreateModal: (index, journeyPattern) =>{ + // dispatch(actions.openCreateModal(index, journeyPattern)) + // } + } +} + +const AddJourneyPattern = connect(mapStateToProps, mapDispatchToProps)(CreateModal) module.exports = AddJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js index 7c72afccd..553d69119 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js @@ -1,5 +1,6 @@ var connect = require('react-redux').connect -var ModalComponent = require('../components/Modal') +var EditModal = require('../components/EditModal') +var CreateModal = require('../components/CreateModal') var actions = require('../actions') const mapStateToProps = (state) => { @@ -14,15 +15,15 @@ const mapDispatchToProps = (dispatch) => { onModalClose: () =>{ dispatch(actions.closeModal()) }, - onDeleteJourneyPattern: (index, journeyPattern) =>{ - dispatch(actions.deleteJourneyPattern(index, journeyPattern)) - }, saveModal: (index, data) =>{ dispatch(actions.saveModal(index, data)) + }, + onDeleteJourneyPattern: (index, journeyPattern) =>{ + dispatch(actions.deleteJourneyPattern(index, journeyPattern)) } } } -const ModalContainer = connect(mapStateToProps, mapDispatchToProps)(ModalComponent) +const ModalContainer = connect(mapStateToProps, mapDispatchToProps)(EditModal, CreateModal) module.exports = ModalContainer -- cgit v1.2.3 From fb1e0ce929f81dfb8740bcaf18305922367582fc Mon Sep 17 00:00:00 2001 From: jpl Date: Mon, 2 Jan 2017 10:38:00 +0100 Subject: Refs #2206: refactoring modal state for create/edit distinction --- .../es6_browserified/journey_patterns/actions/index.js | 3 +++ .../journey_patterns/components/CreateModal.js | 5 ++++- .../journey_patterns/components/EditModal.js | 4 ++-- .../journey_patterns/containers/AddJourneyPattern.js | 6 +++--- .../es6_browserified/journey_patterns/index.js | 3 ++- .../es6_browserified/journey_patterns/reducers/modal.js | 16 ++++++++++++---- 6 files changed, 26 insertions(+), 11 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 a9e7c41bd..79f58b16b 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -29,6 +29,9 @@ const actions = { index, journeyPattern }), + openCreateModal : () => ({ + type : 'CREATE_JOURNEYPATTERN_MODAL' + }), deleteJourneyPattern : (index, journeyPattern) => ({ type : 'DELETE_JOURNEYPATTERN', index, 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 b07686a33..53e63d6b6 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js @@ -19,10 +19,12 @@ class CreateModal extends Component { className='btn btn-primary btn-sm' data-toggle='modal' data-target='#NewJourneyPatternModal' + onClick={this.props.onOpenCreateModal} > Ajouter une mission -
+ +
@@ -60,6 +62,7 @@ class CreateModal extends Component { CreateModal.propTypes = { index: PropTypes.number, modal: PropTypes.object, + onOpenCreateModal: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired, saveModal: PropTypes.func.isRequired } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js index a63263f90..7ad46bbc2 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js @@ -13,7 +13,7 @@ class EditModal extends Component { render() { return ( -
+
@@ -51,7 +51,7 @@ class EditModal extends Component {
- {this.props.modal.open && ( + {this.props.modal.edit && (
diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js index ed7502e73..0a743b2be 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js @@ -16,10 +16,10 @@ const mapDispatchToProps = (dispatch) => { }, saveModal: (index, data) =>{ dispatch(actions.saveModal(index, data)) + }, + onOpenCreateModal: () =>{ + dispatch(actions.openCreateModal()) } - // onOpenCreateModal: (index, journeyPattern) =>{ - // dispatch(actions.openCreateModal(index, journeyPattern)) - // } } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index 86e9e1c35..9ac5425b7 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -16,7 +16,8 @@ var initialState = { pagination: 1, totalCount: window.journeyPatternLength, modal: { - open: false, + edit: false, + create: false, modalProps: {} } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index c6156c72c..044b1d4e4 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -2,19 +2,27 @@ const modal = (state = {}, action) => { switch (action.type) { case 'EDIT_JOURNEYPATTERN_MODAL': return { - open: true, + edit: true, + create: false, modalProps: { index: action.index, journeyPattern: action.journeyPattern } } + case 'CREATE_JOURNEYPATTERN_MODAL': + return { + create: true, + edit: false, + modalProps: {} + } case 'DELETE_JOURNEYPATTERN': - return Object.assign({}, state, { open: false }) + return Object.assign({}, state, { edit: false, create: false }) case 'SAVE_MODAL': - return Object.assign({}, state, { open: false }) + return Object.assign({}, state, { edit: false, create: false }) case 'CLOSE_MODAL': return { - open: false, + edit: false, + create: false, modalProps: {} } default: -- cgit v1.2.3 From 4b740ee313601d35538e77b81d4410f9ca921e24 Mon Sep 17 00:00:00 2001 From: jpl Date: Mon, 2 Jan 2017 11:36:31 +0100 Subject: fix disabled state on checkboxes --- .../es6_browserified/journey_patterns/components/JourneyPattern.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets/javascripts') 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 209af168f..3f94ab5bd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js @@ -35,7 +35,7 @@ const JourneyPattern = (props) => { type='checkbox' id={stopPoint.id} checked={stopPoint.checked} - disabled={props.value.deletable ? 'true' : 'false'} + disabled={props.value.deletable ? 'disabled' : ''} > -- cgit v1.2.3 From ce223962fd2600916ede138d891cd61277165b77 Mon Sep 17 00:00:00 2001 From: jpl Date: Mon, 2 Jan 2017 12:16:01 +0100 Subject: Refs #2206: adding new journey pattern recorded in state (saving into db to go) --- .../journey_patterns/components/CreateModal.js | 41 ++++++++++++++++++++-- .../journey_patterns/components/EditModal.js | 2 +- .../journey_patterns/components/JourneyPattern.js | 2 +- .../journey_patterns/reducers/journeyPatterns.js | 37 ++++++++++++------- .../journey_patterns/reducers/modal.js | 2 +- 5 files changed, 66 insertions(+), 18 deletions(-) (limited to 'app/assets/javascripts') 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 53e63d6b6..f22b28fe8 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js @@ -8,7 +8,7 @@ class CreateModal extends Component { } handleSubmit(e) { e.preventDefault() - this.props.saveModal(this.props.modal.modalProps.index, this.refs) + this.props.saveModal((this.props.journeyPatterns.length + 1), this.refs) } render() { @@ -24,15 +24,50 @@ class CreateModal extends Component { Ajouter une mission -
+

Ajouter une mission

+
- le formulaire arrive... + {this.props.modal.create && ( + +
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + )}
+