diff options
| author | Thomas Haddad | 2017-03-03 18:08:20 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-03-03 18:08:20 +0100 |
| commit | 284d590435ab85b86d3722eb50ce4e1c3b3abf2c (patch) | |
| tree | bdbc3d536f986f7bf96d337391e63f2e75c03240 /app/assets/javascripts | |
| parent | 89e744d0f430889acc88a5e0e15c588baa962f6a (diff) | |
| download | chouette-core-284d590435ab85b86d3722eb50ce4e1c3b3abf2c.tar.bz2 | |
Refs #2521: Add timetable to one or more vj
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
5 files changed, 40 insertions, 12 deletions
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js index 74d2903e0..c97728f4e 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -63,12 +63,16 @@ const actions = { vehicleJourneys }), selectTTCalendarsModal: (selectedTT) =>({ - type: 'SEELCT_TT_CALENDAR_MODAL', + type: 'SELECT_TT_CALENDAR_MODAL', selectedItem:{ - id: selectedTT.id - // TODO add relevant attributes + id: selectedTT.id, + comment: selectedTT.comment, + objectid: selectedTT.objectid } }), + addSelectedTimetable: () => ({ + type: 'ADD_SELECTED_TIMETABLE' + }), deleteCalendarModal : (timetable) => ({ type : 'DELETE_CALENDAR_MODAL', timetable @@ -202,7 +206,8 @@ const actions = { for (tt of val.time_tables){ timeTables.push({ objectid: tt.objectid, - comment: tt.comment + comment: tt.comment, + id: tt.id }) } let vjasWithDelta = val.vehicle_journey_at_stops.map((vjas, i) => { diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CalendarsEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CalendarsEditVehicleJourney.js index fca2934cd..3359ca44d 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CalendarsEditVehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CalendarsEditVehicleJourney.js @@ -64,6 +64,7 @@ class CalendarsEditVehicleJourney extends Component { <label className='control-label is-required'>Ajouter un calendrier</label> <TimetableSelect2 onSelect2Timetable={this.props.onSelect2Timetable} /> <button + onClick={this.props.onAddSelectedTimetable} type='button' ><span className='fa fa-times'>Ajouter</span> </button> @@ -109,6 +110,7 @@ CalendarsEditVehicleJourney.propTypes = { onCalendarsEditVehicleJourney: PropTypes.func.isRequired, onDeleteCalendarModal: PropTypes.func.isRequired, onSelect2Timetable: PropTypes.func.isRequired, + onAddSelectedTimetable: PropTypes.func.isRequired, filters: PropTypes.object.isRequired } diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js index 170150a36..93ed4e0c1 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js @@ -40,7 +40,7 @@ class BSelect4 extends React.Component{ item => Object.assign( {}, item, - {text: item.published_name, complete_jp: item} + {text: item.comment} ) ) }; diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/CalendarsEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/CalendarsEditVehicleJourney.js index 1e58ed5fd..130acb017 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/CalendarsEditVehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/CalendarsEditVehicleJourney.js @@ -26,8 +26,10 @@ const mapDispatchToProps = (dispatch) => { dispatch(actions.editVehicleJourneyCalendars(calendars)) }, onSelect2Timetable: (e) =>{ - console.log(e.params.data) dispatch(actions.selectTTCalendarsModal(e.params.data)) + }, + onAddSelectedTimetable: () => { + dispatch(actions.addSelectedTimetable()) } } } diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js index 34c8e2dad..de424c25e 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js @@ -1,3 +1,4 @@ +var _ = require('lodash') let vehicleJourneysModal, newModalProps const modal = (state = {}, action) => { switch (action.type) { @@ -40,7 +41,7 @@ const modal = (state = {}, action) => { let timetable = {} vehicleJourneysModal.map((vj, i) => { vj.time_tables.map((tt, j) =>{ - if(!isInArray(tt, uniqTimetables)){ + if(!(_.find(uniqTimetables, tt))){ uniqTimetables.push(tt) } }) @@ -53,6 +54,28 @@ const modal = (state = {}, action) => { }, confirmModal: {} } + case 'SELECT_TT_CALENDAR_MODAL': + newModalProps = Object.assign({}, state.modalProps, {selectedTimetable : action.selectedItem}) + return Object.assign({}, state, {modalProps: newModalProps}) + case 'ADD_SELECTED_TIMETABLE': + if(state.modalProps.selectedTimetable){ + newModalProps = JSON.parse(JSON.stringify(state.modalProps)) + newModalProps.vehicleJourneys.map((vj) => { + let isPresent = false + vj.time_tables.forEach((tt) =>{ + if (_.isEqual(newModalProps.selectedTimetable.objectid, tt.objectid)){ + isPresent = true + } + }) + if (!isPresent){ + vj.time_tables.push(newModalProps.selectedTimetable) + } + }) + if (!_.find(newModalProps.timetables, newModalProps.selectedTimetable)){ + newModalProps.timetables.push(newModalProps.selectedTimetable) + } + return Object.assign({}, state, {modalProps: newModalProps}) + } case 'DELETE_CALENDAR_MODAL': newModalProps = JSON.parse(JSON.stringify(state.modalProps)) let timetablesModal = state.modalProps.timetables.slice(0) @@ -64,7 +87,7 @@ const modal = (state = {}, action) => { vehicleJourneysModal = state.modalProps.vehicleJourneys.slice(0) vehicleJourneysModal.map((vj) =>{ vj.time_tables.map((tt, i) =>{ - if (tt == action.timetable){ + if (_.isEqual(tt, action.timetable)){ vj.time_tables.splice(i, 1) } }) @@ -104,8 +127,4 @@ const modal = (state = {}, action) => { } } -function isInArray(value, array) { - return array.indexOf(value) > -1; -} - module.exports = modal |
