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 ----------- app/views/routes/_form.html.slim | 2 +- spec/javascripts/actions_spec.js | 2 +- spec/javascripts/components_spec.js | 6 +- spec/javascripts/reducers_spec.js | 2 +- 26 files changed, 528 insertions(+), 528 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 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) - } -}) diff --git a/app/views/routes/_form.html.slim b/app/views/routes/_form.html.slim index 9893e4ed7..ae07d41de 100644 --- a/app/views/routes/_form.html.slim +++ b/app/views/routes/_form.html.slim @@ -29,4 +29,4 @@ | window.itinerary_stop = "#{URI.escape(route_json_for_edit(@route))}" / StopPoints Reactux component -= javascript_include_tag 'es6_browserified/stop_points.js' += javascript_include_tag 'es6_browserified/itineraries/stop_points.js' diff --git a/spec/javascripts/actions_spec.js b/spec/javascripts/actions_spec.js index 55de1c31f..f86466375 100644 --- a/spec/javascripts/actions_spec.js +++ b/spec/javascripts/actions_spec.js @@ -1,4 +1,4 @@ -var actions = require('es6_browserified/actions') +var actions = require('es6_browserified/itineraries/actions') describe('actions', () => { it('should create an action to add a stop', () => { diff --git a/spec/javascripts/components_spec.js b/spec/javascripts/components_spec.js index fc99a3335..c7e541783 100644 --- a/spec/javascripts/components_spec.js +++ b/spec/javascripts/components_spec.js @@ -1,8 +1,8 @@ var React = require('react'); var Provider = require('react-redux').Provider; -var actions = require('es6_browserified/actions/index'); -var App = require('es6_browserified/components/TodoList'); -var ConnectedApp = require('es6_browserified/containers/VisibleTodoList'); +var actions = require('es6_browserified/itineraries/actions/index'); +var App = require('es6_browserified/itineraries/components/TodoList'); +var ConnectedApp = require('es6_browserified/itineraries/containers/VisibleTodoList'); var TestUtils = require('react-addons-test-utils'); xdescribe('ConnectedApp', function() { diff --git a/spec/javascripts/reducers_spec.js b/spec/javascripts/reducers_spec.js index 985bdc220..253229dda 100644 --- a/spec/javascripts/reducers_spec.js +++ b/spec/javascripts/reducers_spec.js @@ -1,4 +1,4 @@ -var reducer = require('es6_browserified/reducers/todos') +var reducer = require('es6_browserified/itineraries/reducers/todos') let state = [] describe('stops reducer', () => { beforeEach(()=>{ -- cgit v1.2.3