diff options
Diffstat (limited to 'app/assets/javascripts')
116 files changed, 2 insertions, 7918 deletions
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 0024b62b5..4c5aff22f 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -20,5 +20,5 @@ //= require footable/footable.sort //= require_directory ./plugins //= require_directory . -require('whatwg-fetch') -require('babel-polyfill') +// require('whatwg-fetch') +// require('babel-polyfill') diff --git a/app/assets/javascripts/es6_browserified/itineraries/actions/index.js b/app/assets/javascripts/es6_browserified/itineraries/actions/index.js deleted file mode 100644 index 13b2d60b2..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/actions/index.js +++ /dev/null @@ -1,62 +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 - } - }, - toggleMap: (index) =>({ - type: 'TOGGLE_MAP', - index - }), - toggleEdit: (index) =>({ - type: 'TOGGLE_EDIT', - index - }), - closeMaps: () => ({ - type : 'CLOSE_MAP' - }), - selectMarker: (index, data) =>({ - type: 'SELECT_MARKER', - index, - data - }), - unselectMarker: (index) => ({ - type: 'UNSELECT_MARKER', - 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 deleted file mode 100644 index e662d140c..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/components/App.js +++ /dev/null @@ -1,12 +0,0 @@ -var React = require('react') -var AddStopPoint = require('../containers/AddStopPoint') -var VisibleStopPoints = require('../containers/VisibleStopPoints') - -const App = () => ( - <div> - <VisibleStopPoints /> - <AddStopPoint /> - </div> -) - -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 deleted file mode 100644 index 64c6d3ac7..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/components/BSelect2.js +++ /dev/null @@ -1,124 +0,0 @@ -var _ = require('lodash') -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) - } - onChange(e) { - this.props.onChange(this.props.index, { - text: e.currentTarget.textContent, - stoparea_id: e.currentTarget.value, - user_objectid: e.params.data.user_objectid, - longitude: e.params.data.longitude, - latitude: e.params.data.latitude, - name: e.params.data.name, - short_name: e.params.data.short_name, - city_name: e.params.data.city_name, - area_type: e.params.data.area_type, - zip_code: e.params.data.zip_code, - comment: e.params.data.comment - }) - } - - parsedText(data) { - let a = data.replace('</em></small>', '') - let b = a.split('<small><em>') - if (b.length > 1) { - return ( - <span> - {b[0]} - <small><em>{b[1]}</em></small> - </span> - ) - } else { - return ( - <span>{data}</span> - ) - } - } - - render() { - if(this.props.value.edit) - return ( - <div className='select2-bootstrap-append'> - <BSelect2 {...this.props} onSelect={ this.onChange.bind(this) }/> - </div> - ) - else - if(!this.props.value.stoparea_id) - return ( - <div> - <BSelect2 {...this.props} onSelect={ this.onChange.bind(this) }/> - </div> - ) - else - return ( - <a - className='navlink' - href={origin + path + '/stop_areas/' + this.props.value.stoparea_id} - title="Voir l'arrĂȘt" - > - {this.parsedText(this.props.value.text)} - </a> - ) - } -} - -class BSelect2 extends React.Component{ - componentDidMount() { - this.refs.newSelect.el.select2('open') - } - - render() { - return ( - <Select2 - value={ this.props.value.stoparea_id } - onSelect={ this.props.onSelect } - ref='newSelect' - options={{ - placeholder: 'SĂ©lectionnez un arrĂȘt existant...', - allowClear: true, - language: 'fr', /* Doesn't seem to work... :( */ - theme: 'bootstrap', - width: '100%', - ajax: { - url: origin + path + '/autocomplete_stop_areas.json', - dataType: 'json', - delay: '500', - data: function(params) { - return { - q: params.term, - target_type: 'zdep' - }; - }, - processResults: function(data, params) { - return { - results: data.map( - item => _.assign( - {}, - item, - { text: item.name + ", " + item.zip_code + " " + item.short_city_name + " <small><em>(" + item.user_objectid + ")</em></small>" } - ) - ) - }; - }, - cache: true - }, - escapeMarkup: function (markup) { return markup; }, - minimumInputLength: 3 - }} - /> - ) - } -} - -module.exports = BSelect3 diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/OlMap.js b/app/assets/javascripts/es6_browserified/itineraries/components/OlMap.js deleted file mode 100644 index b9e106c1a..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/components/OlMap.js +++ /dev/null @@ -1,169 +0,0 @@ -var _ = require('lodash') -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes - -class OlMap extends Component{ - constructor(props){ - super(props) - } - - fetchApiURL(id){ - const origin = window.location.origin - const path = window.location.pathname.split('/', 3).join('/') - return origin + path + "/autocomplete_stop_areas/" + id + "/around?target_type=zdep" - } - - componentDidUpdate(prevProps, prevState){ - if(prevProps.value.olMap.isOpened == false && this.props.value.olMap.isOpened == true){ - var source = new ol.source.Vector({ - format: new ol.format.GeoJSON(), - url: this.fetchApiURL(this.props.value.stoparea_id) - }) - var feature = new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(this.props.value.longitude), parseFloat(this.props.value.latitude)])) - }) - - var defaultStyles = new ol.style.Style({ - image: new ol.style.Circle(({ - radius: 4, - fill: new ol.style.Fill({ - color: '#004d87' - }) - })) - }) - var selectedStyles = new ol.style.Style({ - image: new ol.style.Circle(({ - radius: 6, - fill: new ol.style.Fill({ - color: '#da2f36' - }) - })) - }) - - var centerLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: [feature] - }), - style: selectedStyles, - zIndex: 2 - }) - var vectorLayer = new ol.layer.Vector({ - source: source, - style: defaultStyles, - zIndex: 1 - }); - - var map = new ol.Map({ - target: 'stoppoint_map' + this.props.index, - layers: [ - new ol.layer.Tile({ - source: new ol.source.OSM() - }), - vectorLayer, - centerLayer - ], - controls: [ new ol.control.ScaleLine() ], - interactions: ol.interaction.defaults({ - dragPan: false, - doubleClickZoom: false, - shiftDragZoom: false, - mouseWheelZoom: false - }), - view: new ol.View({ - center: ol.proj.fromLonLat([parseFloat(this.props.value.longitude), parseFloat(this.props.value.latitude)]), - zoom: 18 - }) - }); - - // Selectable marker - var select = new ol.interaction.Select({ - style: selectedStyles - }); - - map.addInteraction(select); - - select.on('select', function(e) { - feature.setStyle(defaultStyles); - centerLayer.setZIndex(0); - - if(e.selected.length != 0) { - - if(e.selected[0].getGeometry() == feature.getGeometry()) { - if(e.selected[0].style_.image_.fill_.color_ != '#da2f36'){ - feature.setStyle(selectedStyles); - centerLayer.setZIndex(2); - e.preventDefault() - return false - } - } - let data = _.assign({}, e.selected[0].getProperties(), {geometry: undefined}); - - this.props.onSelectMarker(this.props.index, data) - } else { - this.props.onUnselectMarker(this.props.index) - } - }, this); - } - } - - render() { - if (this.props.value.olMap.isOpened) { - return ( - <div className='map_container'> - <div className='map_metas'> - <p> - <strong>{this.props.value.olMap.json.name}</strong> - </p> - <p> - <strong>Type d'arrĂȘt : </strong> - {this.props.value.olMap.json.area_type} - </p> - <p> - <strong>Nom court : </strong> - {this.props.value.olMap.json.short_name} - </p> - <p> - <strong>ID Reflex : </strong> - {this.props.value.olMap.json.user_objectid} - </p> - - <p><strong>CoordonnĂ©es : </strong></p> - <p style={{paddingLeft: 10, marginTop: 0}}> - <em>Proj.: </em>WSG84<br/> - <em>Lat.: </em>{this.props.value.olMap.json.latitude} <br/> - <em>Lon.: </em>{this.props.value.olMap.json.longitude} - </p> - <p> - <strong>Code Postal : </strong> - {this.props.value.olMap.json.zip_code} - </p> - <p> - <strong>Commune : </strong> - {this.props.value.olMap.json.city_name} - </p> - <p> - <strong>Commentaire : </strong> - {this.props.value.olMap.json.comment} - </p> - {(this.props.value.stoparea_id != this.props.value.olMap.json.stoparea_id) &&( - <div className='btn btn-outline-primary btn-sm' - onClick= {() => {this.props.onUpdateViaOlMap(this.props.index, this.props.value.olMap.json)}} - >SĂ©lectionner</div> - )} - </div> - <div className='map_content'> - <div id={"stoppoint_map" + this.props.index} className='map'></div> - </div> - </div> - ) - } else { - return false - } - } -} - -OlMap.propTypes = { -} - -module.exports = OlMap diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/StopPoint.js b/app/assets/javascripts/es6_browserified/itineraries/components/StopPoint.js deleted file mode 100644 index 48f77b8e9..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/components/StopPoint.js +++ /dev/null @@ -1,93 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var BSelect2 = require('./BSelect2') -var OlMap = require('./OlMap') - -const StopPoint = (props) => { - return ( - <div className='nested-fields'> - <div className='wrapper'> - <div style={{width: 90}}> - <span>{props.value.user_objectid}</span> - </div> - - <div> - <BSelect2 id={'route_stop_points_' + props.id} value={props.value} onChange={props.onChange} index={props.index} /> - </div> - - <div> - <select className='form-control' value={props.value.for_boarding} id="for_boarding" onChange={props.onSelectChange}> - <option value="normal">MontĂ©e autorisĂ©e</option> - <option value="forbidden">MontĂ©e interdite</option> - </select> - </div> - - <div> - <select className='form-control' value={props.value.for_alighting} id="for_alighting" onChange={props.onSelectChange}> - <option value="normal">Descente autorisĂ©e</option> - <option value="forbidden">Descente interdite</option> - </select> - </div> - - <div className='actions-5'> - <div - className={'btn btn-link' + (props.value.stoparea_id ? '' : ' disabled')} - onClick={props.onToggleMap} - > - <span className='fa fa-map-marker'></span> - </div> - - <div - className={'btn btn-link' + (props.first ? ' disabled' : '')} - onClick={props.onMoveUpClick} - > - <span className='fa fa-arrow-up'></span> - </div> - <div - className={'btn btn-link' + (props.last ? ' disabled' : '')} - onClick={props.onMoveDownClick} - > - <span className='fa fa-arrow-down'></span> - </div> - - <div - className='btn btn-link' - onClick={props.onToggleEdit} - > - <span className={'fa' + (props.value.edit ? ' fa-check' : ' fa-pencil')}></span> - </div> - <div - className='btn btn-link' - onClick={props.onDeleteClick} - > - <span className='fa fa-trash text-danger'></span> - </div> - </div> - </div> - - <OlMap - value = {props.value} - index = {props.index} - onSelectMarker = {props.onSelectMarker} - onUnselectMarker = {props.onUnselectMarker} - onUpdateViaOlMap = {props.onUpdateViaOlMap} - /> - </div> - ) -} - -StopPoint.propTypes = { - onToggleMap: PropTypes.func.isRequired, - onToggleEdit: PropTypes.func.isRequired, - 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 = StopPoint diff --git a/app/assets/javascripts/es6_browserified/itineraries/components/StopPointList.js b/app/assets/javascripts/es6_browserified/itineraries/components/StopPointList.js deleted file mode 100644 index 77077dbd8..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/components/StopPointList.js +++ /dev/null @@ -1,68 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var StopPoint = require('./StopPoint') - -const StopPointList = ({ stopPoints, onDeleteClick, onMoveUpClick, onMoveDownClick, onChange, onSelectChange, onToggleMap, onToggleEdit, onSelectMarker, onUnselectMarker, onUpdateViaOlMap }) => { - return ( - <div className='subform'> - <div className='nested-head'> - <div className="wrapper"> - <div style={{width: 100}}> - <div className="form-group"> - <label className="control-label">ID Reflex</label> - </div> - </div> - <div> - <div className="form-group"> - <label className="control-label">ArrĂȘt</label> - </div> - </div> - <div> - <div className="form-group"> - <label className="control-label">MontĂ©e</label> - </div> - </div> - <div> - <div className="form-group"> - <label className="control-label">Descente</label> - </div> - </div> - <div className='actions-5'></div> - </div> - </div> - {stopPoints.map((stopPoint, index) => - <StopPoint - key={'item-' + index} - onDeleteClick={() => onDeleteClick(index)} - onMoveUpClick={() => { - onMoveUpClick(index) - }} - onMoveDownClick={() => onMoveDownClick(index)} - onChange={ onChange } - onSelectChange={ (e) => onSelectChange(e, index) } - onToggleMap={() => onToggleMap(index)} - onToggleEdit={() => onToggleEdit(index)} - onSelectMarker={onSelectMarker} - onUnselectMarker={onUnselectMarker} - onUpdateViaOlMap={onUpdateViaOlMap} - first={ index === 0 } - last={ index === (stopPoints.length - 1) } - index={ index } - value={ stopPoint } - /> - )} - </div> - ) -} - -StopPointList.propTypes = { - stopPoints: PropTypes.array.isRequired, - onDeleteClick: PropTypes.func.isRequired, - onMoveUpClick: PropTypes.func.isRequired, - onMoveDownClick: PropTypes.func.isRequired, - onSelectChange: PropTypes.func.isRequired, - onSelectMarker: PropTypes.func.isRequired, - onUnselectMarker : PropTypes.func.isRequired -} - -module.exports = StopPointList diff --git a/app/assets/javascripts/es6_browserified/itineraries/containers/AddStopPoint.js b/app/assets/javascripts/es6_browserified/itineraries/containers/AddStopPoint.js deleted file mode 100644 index ea5ae90db..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/containers/AddStopPoint.js +++ /dev/null @@ -1,22 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') - -let AddStopPoint = ({ dispatch }) => { - return ( - <div className="nested-linker"> - <form onSubmit={e => { - e.preventDefault() - dispatch(actions.closeMaps()) - dispatch(actions.addStop()) - }}> - <button type="submit" className="btn btn-outline-primary"> - Ajouter un arrĂȘt - </button> - </form> - </div> - ) -} -AddStopPoint = connect()(AddStopPoint) - -module.exports = AddStopPoint diff --git a/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleStopPoints.js b/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleStopPoints.js deleted file mode 100644 index 8b08a1e5f..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/containers/VisibleStopPoints.js +++ /dev/null @@ -1,58 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var StopPointList = require('../components/StopPointList') - -const mapStateToProps = (state) => { - return { - stopPoints: state.stopPoints - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onDeleteClick: (index) =>{ - dispatch(actions.deleteStop(index)) - dispatch(actions.closeMaps()) - }, - onMoveUpClick: (index) =>{ - dispatch(actions.moveStopUp(index)) - dispatch(actions.closeMaps()) - }, - onMoveDownClick: (index) =>{ - dispatch(actions.moveStopDown(index)) - dispatch(actions.closeMaps()) - }, - onChange: (index, text) =>{ - dispatch(actions.updateInputValue(index, text)) - dispatch(actions.closeMaps()) - dispatch(actions.toggleEdit(index)) - }, - onSelectChange: (e, index) =>{ - dispatch(actions.updateSelectValue(e, index)) - dispatch(actions.closeMaps()) - }, - onToggleMap: (index) =>{ - dispatch(actions.toggleMap(index)) - }, - onToggleEdit: (index) =>{ - dispatch(actions.toggleEdit(index)) - }, - onSelectMarker: (index, data) =>{ - dispatch(actions.selectMarker(index, data)) - }, - onUnselectMarker: (index) =>{ - dispatch(actions.unselectMarker(index)) - }, - onUpdateViaOlMap: (index, data) =>{ - dispatch(actions.updateInputValue(index, data)) - dispatch(actions.toggleMap(index)) - } - } -} - -const VisibleStopPoints = connect( - mapStateToProps, - mapDispatchToProps -)(StopPointList) - -module.exports = VisibleStopPoints diff --git a/app/assets/javascripts/es6_browserified/itineraries/form_helper.js b/app/assets/javascripts/es6_browserified/itineraries/form_helper.js deleted file mode 100644 index f682e39c0..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/form_helper.js +++ /dev/null @@ -1,55 +0,0 @@ -const formHelper = { - addInput: (name, value, index) => { - let form = document.querySelector('form') - let input = document.createElement('input') - let formatedName = `route[stop_points_attributes][${index.toString()}][${name}]` - input.setAttribute('type', 'hidden') - input.setAttribute('name', formatedName) - input.setAttribute('value', value) - form.appendChild(input) - }, - addError: (ids) => { - ids.forEach((id) => { - if (!$(id).parents('.form-group').hasClass('has-error')) { - $(id).parents('.form-group').addClass('has-error') - $(id).parent().append(`<span class='help-block small'>${'doit ĂȘtre rempli(e)'}</span>`) - } - }) - }, - cleanInputs: (ids) => { - ids.forEach((id) =>{ - $(id).parents('.form-group').removeClass('has-error') - $(id).siblings('span').remove() - }) - }, - handleForm: (...ids) => { - let filledInputs = [] - let blankInputs = [] - ids.forEach(id => { - $(id).val() == "" ? blankInputs.push(id) : filledInputs.push(id) - }) - - if (filledInputs.length > 0) formHelper.cleanInputs(filledInputs) - if (blankInputs.length > 0) formHelper.addError(blankInputs) - }, - handleStopPoints: (event, state) => { - if (state.stopPoints.length >= 2) { - state.stopPoints.map((stopPoint, i) => { - formHelper.addInput('id', stopPoint.stoppoint_id ? stopPoint.stoppoint_id : '', i) - formHelper.addInput('stop_area_id', stopPoint.stoparea_id, i) - formHelper.addInput('position', i, i) - formHelper.addInput('for_boarding', stopPoint.for_boarding, i) - formHelper.addInput('for_alighting', stopPoint.for_alighting, i) - }) - if ($('.alert.alert-danger').length > 0) $('.alert.alert-danger').remove() - } else { - event.preventDefault() - let msg = "L'itinĂ©raire doit comporter au moins deux arrĂȘts" - if ($('.alert.alert-danger').length == 0) { - $('#stop_points').find('.subform').after(`<div class='alert alert-danger'><span class='fa fa-lg fa-exclamation-circle'></span><span>" ${msg} "</span></div>`) - } - } - } -} - -module.exports = formHelper
\ No newline at end of file diff --git a/app/assets/javascripts/es6_browserified/itineraries/index.js b/app/assets/javascripts/es6_browserified/itineraries/index.js deleted file mode 100644 index bb06126f7..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/index.js +++ /dev/null @@ -1,78 +0,0 @@ -var React = require('react') -var render = require('react-dom').render -var Provider = require('react-redux').Provider -var createStore = require('redux').createStore -var reducers = require('./reducers') -var App = require('./components/App') -var { handleForm, handleStopPoints } = require('./form_helper') -let datas = JSON.parse(decodeURIComponent(window.itinerary_stop)) - -// 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 = [] - - datas.map(function(v, i) { - let fancyText = v.name.replace("'", "\'") - if(v.zip_code && v.city_name) - fancyText += ", " + v.zip_code + " " + v.city_name.replace("'", "\'") - - state.push({ - stoppoint_id: v.stoppoint_id, - stoparea_id: v.stoparea_id, - user_objectid: v.user_objectid, - short_name: v.short_name ? v.short_name.replace("'", "\'") : '', - area_type: v.area_type, - index: i, - edit: false, - city_name: v.city_name ? v.city_name.replace("'", "\'") : '', - zip_code: v.zip_code, - name: v.name ? v.name.replace("'", "\'") : '', - registration_number: v.registration_number, - text: fancyText, - for_boarding: v.for_boarding || "normal", - for_alighting: v.for_alighting || "normal", - longitude: v.longitude || 0, - latitude: v.latitude || 0, - comment: v.comment ? v.comment.replace("'", "\'") : '', - olMap: { - isOpened: false, - json: {} - } - }) - }) - - return state -} - -var initialState = {stopPoints: getInitialState()} -// const loggerMiddleware = createLogger() -let store = createStore( - reducers, - initialState - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) -) - -render( - <Provider store={store}> - <App /> - </Provider>, - document.getElementById('stop_points') -) - -document.querySelector('input[name=commit]').addEventListener('click', (event)=>{ - let state = store.getState() - - let name = $("#route_name").val() - let publicName = $("#route_published_name").val() - if (name == "" || publicName == "") { - event.preventDefault() - handleForm("#route_name", "#route_published_name") - } - - handleStopPoints(event, state) -}) diff --git a/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js b/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js deleted file mode 100644 index 446c9ed36..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/reducers/index.js +++ /dev/null @@ -1,8 +0,0 @@ -var combineReducers = require('redux').combineReducers -var stopPoints = require('./stopPoints') - -const stopPointsApp = combineReducers({ - stopPoints -}) - -module.exports = stopPointsApp diff --git a/app/assets/javascripts/es6_browserified/itineraries/reducers/stopPoints.js b/app/assets/javascripts/es6_browserified/itineraries/reducers/stopPoints.js deleted file mode 100644 index f3a26b8d7..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/reducers/stopPoints.js +++ /dev/null @@ -1,144 +0,0 @@ -var _ = require('lodash') -var { addInput } = require('../form_helper') - -const stopPoint = (state = {}, action, length) => { - switch (action.type) { - case 'ADD_STOP': - return { - text: '', - index: length, - edit: true, - for_boarding: 'normal', - for_alighting: 'normal', - olMap: { - isOpened: false, - json: {} - } - } - 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 stopPoints = (state = [], action) => { - switch (action.type) { - case 'ADD_STOP': - return [ - ...state, - stopPoint(undefined, action, state.length) - ] - case 'MOVE_STOP_UP': - return [ - ...state.slice(0, action.index - 1), - _.assign({}, state[action.index], { stoppoint_id: state[action.index - 1].stoppoint_id }), - _.assign({}, state[action.index - 1], { stoppoint_id: state[action.index].stoppoint_id }), - ...state.slice(action.index + 1) - ] - case 'MOVE_STOP_DOWN': - return [ - ...state.slice(0, action.index), - _.assign({}, state[action.index + 1], { stoppoint_id: state[action.index].stoppoint_id }), - _.assign({}, state[action.index], { stoppoint_id: state[action.index + 1].stoppoint_id }), - ...state.slice(action.index + 2) - ] - case 'DELETE_STOP': - updateFormForDeletion(state[action.index]) - return [ - ...state.slice(0, action.index), - ...state.slice(action.index + 1).map((stopPoint)=>{ - stopPoint.index-- - return stopPoint - }) - ] - case 'UPDATE_INPUT_VALUE': - return state.map( (t, i) => { - if (i === action.index) { - return _.assign( - {}, - t, - { - stoppoint_id: t.stoppoint_id, - text: action.text.text, - stoparea_id: action.text.stoparea_id, - user_objectid: action.text.user_objectid, - latitude: action.text.latitude, - longitude: action.text.longitude, - name: action.text.name, - short_name: action.text.short_name, - area_type: action.text.area_type, - city_name: action.text.city_name, - comment: action.text.comment, - registration_number: action.text.registration_number - } - ) - } else { - return t - } - }) - case 'UPDATE_SELECT_VALUE': - return state.map( (t, i) => { - if (i === action.index) { - let stopState = _.assign({}, t) - stopState[action.select_id] = action.select_value - return stopState - } else { - return t - } - }) - case 'TOGGLE_EDIT': - return state.map((t, i) => { - if (i === action.index){ - return _.assign({}, t, {edit: !t.edit}) - } else { - return t - } - }) - case 'TOGGLE_MAP': - return state.map( (t, i) => { - if (i === action.index){ - let val = !t.olMap.isOpened - let jsonData = val ? _.assign({}, t, {olMap: undefined}) : {} - let stateMap = _.assign({}, t.olMap, {isOpened: val, json: jsonData}) - return _.assign({}, t, {olMap: stateMap}) - }else { - let emptyMap = _.assign({}, t.olMap, {isOpened: false, json : {}}) - return _.assign({}, t, {olMap: emptyMap}) - } - }) - case 'SELECT_MARKER': - return state.map((t, i) => { - if (i === action.index){ - let stateMap = _.assign({}, t.olMap, {json: action.data}) - return _.assign({}, t, {olMap: stateMap}) - } else { - return t - } - }) - case 'UNSELECT_MARKER': - return state.map((t, i) => { - if (i === action.index){ - let stateMap = _.assign({}, t.olMap, {json: {}}) - return _.assign({}, t, {olMap: stateMap}) - } else { - return t - } - }) - case 'CLOSE_MAP': - return state.map( (t, i) => { - let emptyMap = _.assign({}, t.olMap, {isOpened: false, json: {}}) - return _.assign({}, t, {olMap: emptyMap}) - }) - default: - return state - } -} - -module.exports = stopPoints diff --git a/app/assets/javascripts/es6_browserified/itineraries/show.js b/app/assets/javascripts/es6_browserified/itineraries/show.js deleted file mode 100644 index 79a11701f..000000000 --- a/app/assets/javascripts/es6_browserified/itineraries/show.js +++ /dev/null @@ -1,99 +0,0 @@ -route = JSON.parse(decodeURIComponent(route)) -const geoColPts = [] -const geoColLns= [] -const geoColEdges = [ - new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)])) - }), - new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[route.length - 1].longitude), parseFloat(route[route.length - 1].latitude)])) - }) -] -route.forEach(function(stop, i){ - if (i < route.length - 1){ - geoColLns.push(new ol.Feature({ - geometry: new ol.geom.LineString([ - ol.proj.fromLonLat([parseFloat(route[i].longitude), parseFloat(route[i].latitude)]), - ol.proj.fromLonLat([parseFloat(route[i+1].longitude), parseFloat(route[i+1].latitude)]) - ]) - })) - } - geoColPts.push(new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(stop.longitude), parseFloat(stop.latitude)])) - }) - ) -}) -var edgeStyles = new ol.style.Style({ - image: new ol.style.Circle(({ - radius: 5, - stroke: new ol.style.Stroke({ - color: '#007fbb', - width: 2 - }), - fill: new ol.style.Fill({ - color: '#007fbb', - width: 2 - }) - })) -}) -var defaultStyles = new ol.style.Style({ - image: new ol.style.Circle(({ - radius: 4, - stroke: new ol.style.Stroke({ - color: '#007fbb', - width: 2 - }), - fill: new ol.style.Fill({ - color: '#ffffff', - width: 2 - }) - })) -}) -var lineStyle = new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: '#007fbb', - width: 3 - }) -}) - -var vectorPtsLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: geoColPts - }), - style: defaultStyles, - zIndex: 2 -}) -var vectorEdgesLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: geoColEdges - }), - style: edgeStyles, - zIndex: 3 -}) -var vectorLnsLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: geoColLns - }), - style: [lineStyle], - zIndex: 1 -}) - -var map = new ol.Map({ - target: 'route_map', - layers: [ - new ol.layer.Tile({ - source: new ol.source.OSM() - }), - vectorPtsLayer, - vectorEdgesLayer, - vectorLnsLayer - ], - controls: [ new ol.control.ScaleLine(), new ol.control.Zoom(), new ol.control.ZoomSlider() ], - interactions: ol.interaction.defaults({ - zoom: true - }), - view: new ol.View({ - center: ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)]), - zoom: 13 - }) -}); diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js deleted file mode 100644 index 825e7bb7d..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ /dev/null @@ -1,220 +0,0 @@ -var Promise = require('promise-polyfill') - -// To add to window -if (!window.Promise) { - window.Promise = Promise; -} - -const actions = { - enterEditMode: () => ({ - type: "ENTER_EDIT_MODE" - }), - exitEditMode: () => ({ - type: "EXIT_EDIT_MODE" - }), - receiveJourneyPatterns : (json) => ({ - type: "RECEIVE_JOURNEY_PATTERNS", - json - }), - receiveErrors : (json) => ({ - type: "RECEIVE_ERRORS", - json - }), - unavailableServer : () => ({ - type: 'UNAVAILABLE_SERVER' - }), - goToPreviousPage : (dispatch, pagination) => ({ - type: 'GO_TO_PREVIOUS_PAGE', - dispatch, - pagination, - nextPage : false - }), - goToNextPage : (dispatch, pagination) => ({ - type: 'GO_TO_NEXT_PAGE', - dispatch, - pagination, - nextPage : true - }), - updateCheckboxValue : (e, index) => ({ - type : 'UPDATE_CHECKBOX_VALUE', - id : e.currentTarget.id, - index - }), - checkConfirmModal : (event, callback, stateChanged,dispatch) => { - if(stateChanged === true){ - return actions.openConfirmModal(callback) - }else{ - dispatch(actions.fetchingApi()) - return callback - } - }, - openConfirmModal : (callback) => ({ - type : 'OPEN_CONFIRM_MODAL', - callback - }), - openEditModal : (index, journeyPattern) => ({ - type : 'EDIT_JOURNEYPATTERN_MODAL', - index, - journeyPattern - }), - openCreateModal : () => ({ - type : 'CREATE_JOURNEYPATTERN_MODAL' - }), - deleteJourneyPattern : (index) => ({ - type : 'DELETE_JOURNEYPATTERN', - index, - }), - closeModal : () => ({ - type : 'CLOSE_MODAL' - }), - saveModal : (index, data) => ({ - type: 'SAVE_MODAL', - data, - index - }), - addJourneyPattern : (data) => ({ - type: 'ADD_JOURNEYPATTERN', - data, - }), - savePage : (dispatch, currentPage) => ({ - type: 'SAVE_PAGE', - dispatch - }), - updateTotalCount: (diff) => ({ - type: 'UPDATE_TOTAL_COUNT', - diff - }), - fetchingApi: () =>({ - type: 'FETCH_API' - }), - resetValidation: (target) => { - $(target).parent().removeClass('has-error').children('.help-block').remove() - }, - humanOID : (oid) => oid.split(':')[2].split("-").pop(), - validateFields : (fields) => { - const test = [] - - Object.keys(fields).map(function(key) { - test.push(fields[key].validity.valid) - }) - if(test.indexOf(false) >= 0) { - // Form is invalid - test.map(function(item, i) { - if(item == false) { - const k = Object.keys(fields)[i] - $(fields[k]).parent().addClass('has-error').children('.help-block').remove() - $(fields[k]).parent().append("<span class='small help-block'>" + fields[k].validationMessage + "</span>") - } - }) - return false - } else { - // Form is valid - return true - } - }, - submitJourneyPattern : (dispatch, state, next) => { - dispatch(actions.fetchingApi()) - let urlJSON = window.location.pathname + ".json" - let hasError = false - fetch(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') - } - }).then(response => { - if(!response.ok) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.receiveErrors(json)) - } else { - if(next) { - dispatch(next) - } else { - if(json.length != window.currentItemsLength){ - dispatch(actions.updateTotalCount(window.currentItemsLength - json.length)) - } - window.currentItemsLength = json.length - dispatch(actions.exitEditMode()) - dispatch(actions.receiveJourneyPatterns(json)) - } - } - }) - }, - fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { - if(currentPage == undefined){ - currentPage = 1 - } - let journeyPatterns = [] - 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 hasError = false - fetch(urlJSON, { - credentials: 'same-origin', - }).then(response => { - if(response.status == 500) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.unavailableServer()) - } else { - if(json.length != 0){ - let val - for (val of json){ - for (let stop_point of val.route_short_description.stop_points){ - stop_point.checked = false - 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, - registration_number: val.registration_number, - stop_points: val.route_short_description.stop_points, - deletable: false - }) - } - } - window.currentItemsLength = journeyPatterns.length - dispatch(actions.receiveJourneyPatterns(journeyPatterns)) - } - }) - }, - getChecked : (jp) => { - return jp.filter((obj) => { - return obj.checked - }) - } -} - -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 deleted file mode 100644 index 7513fc506..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/App.js +++ /dev/null @@ -1,21 +0,0 @@ -var React = require('react') -var AddJourneyPattern = require('../containers/AddJourneyPattern') -var Navigate = require('../containers/Navigate') -var Modal = require('../containers/Modal') -var ConfirmModal = require('../containers/ConfirmModal') -var SaveJourneyPattern = require('../containers/SaveJourneyPattern') -var JourneyPatternList = require('../containers/JourneyPatternList') - -const App = () => ( - <div> - <Navigate /> - <JourneyPatternList /> - <Navigate /> - <AddJourneyPattern /> - <SaveJourneyPattern /> - <ConfirmModal /> - <Modal/> - </div> -) - -module.exports = App diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js deleted file mode 100644 index c2229d991..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js +++ /dev/null @@ -1,48 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes - -const ConfirmModal = ({dispatch, modal, onModalAccept, onModalCancel, journeyPatterns}) => ( - <div className={ 'modal fade ' + ((modal.type == 'confirm') ? 'in' : '') } id='ConfirmModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Confirmation</h4> - </div> - <div className='modal-body'> - <div className='mt-md mb-md'> - <p>Vous vous apprĂȘtez Ă changer de page. Voulez-vous valider vos modifications avant cela ?</p> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick= {() => {onModalCancel(modal.confirmModal.callback)}} - > - Ne pas valider - </button> - <button - className='btn btn-primary' - data-dismiss='modal' - type='button' - onClick = {() => {onModalAccept(modal.confirmModal.callback, journeyPatterns)}} - > - Valider - </button> - </div> - </div> - </div> - </div> - </div> -) - -ConfirmModal.propTypes = { - modal: PropTypes.object.isRequired, - onModalAccept: PropTypes.func.isRequired, - onModalCancel: PropTypes.func.isRequired -} - -module.exports = ConfirmModal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js deleted file mode 100644 index 12871431a..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js +++ /dev/null @@ -1,126 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class CreateModal extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true) { - this.props.onAddJourneyPattern(this.refs) - this.props.onModalClose() - $('#NewJourneyPatternModal').modal('hide') - } - } - - render() { - if(this.props.status.isFetching == true || this.props.status.policy['journey_patterns.create'] == false || this.props.editMode == false) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <div className="select_toolbox"> - <ul> - <li className='st_action'> - <button - type='button' - data-toggle='modal' - data-target='#NewJourneyPatternModal' - onClick={this.props.onOpenCreateModal} - > - <span className="fa fa-plus"></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'create') ? 'in' : '') } id='NewJourneyPatternModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Ajouter une mission</h4> - </div> - - {(this.props.modal.type == 'create') && ( - <form> - <div className='modal-body'> - <div className='form-group'> - <label className='control-label is-required'>Nom</label> - <input - type='text' - ref='name' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <div className='form-group'> - <label className='control-label is-required'>Nom public</label> - <input - type='text' - ref='published_name' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <div className='form-group'> - <label className='control-label'>Code mission</label> - <input - type='text' - ref='registration_number' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - </div> - </div> - </div> - </div> - </li> - </ul> - </div> - ) - } else { - return false - } - } -} - -CreateModal.propTypes = { - index: PropTypes.number, - modal: PropTypes.object.isRequired, - status: PropTypes.object.isRequired, - onOpenCreateModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - onAddJourneyPattern: 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 deleted file mode 100644 index 1fc935932..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/EditModal.js +++ /dev/null @@ -1,114 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class EditModal extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true) { - this.props.saveModal(this.props.modal.modalProps.index, this.refs) - $('#JourneyPatternModal').modal('hide') - } - } - - render() { - return ( - <div className={ 'modal fade ' + ((this.props.modal.type == 'edit') ? 'in' : '') } id='JourneyPatternModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'> - Editer la mission - {(this.props.modal.type == 'edit') && ( - <em> "{this.props.modal.modalProps.journeyPattern.name}"</em> - )} - </h4> - </div> - - {(this.props.modal.type == 'edit') && ( - <form> - <div className='modal-body'> - <div className='form-group'> - <label className='control-label is-required'>Nom</label> - <input - type='text' - ref='name' - className='form-control' - id={this.props.modal.modalProps.index} - defaultValue={this.props.modal.modalProps.journeyPattern.name} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <div className='form-group'> - <label className='control-label is-required'>Nom public</label> - <input - type='text' - ref='published_name' - className='form-control' - id={this.props.modal.modalProps.index} - defaultValue={this.props.modal.modalProps.journeyPattern.published_name} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <div className='form-group'> - <label className='control-label'>Code mission</label> - <input - type='text' - ref='registration_number' - className='form-control' - id={this.props.modal.modalProps.index} - defaultValue={this.props.modal.modalProps.journeyPattern.registration_number} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - </div> - </div> - - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - </div> - </div> - </div> - </div> - ) - } -} - -EditModal.propTypes = { - index: PropTypes.number, - modal: PropTypes.object, - onModalClose: PropTypes.func.isRequired, - saveModal: PropTypes.func.isRequired -} - -module.exports = EditModal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js deleted file mode 100644 index 377fd0612..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPattern.js +++ /dev/null @@ -1,130 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class JourneyPattern extends Component{ - constructor(props){ - super(props) - this.previousCity = undefined - } - - vehicleJourneyURL(jpOid) { - let routeURL = window.location.pathname.split('/', 7).join('/') - let vjURL = routeURL + '/vehicle_journeys?jp=' + jpOid - - return ( - <a href={vjURL}>Horaires des courses</a> - ) - } - - cityNameChecker(sp) { - let bool = false - if(sp.city_name != this.previousCity){ - bool = true - this.previousCity = sp.city_name - } - return ( - <div - className={(bool) ? 'headlined' : ''} - > - <span className='has_radio'> - <input - onChange = {(e) => this.props.onCheckboxChange(e)} - type='checkbox' - id={sp.id} - checked={sp.checked} - disabled={(this.props.value.deletable || this.props.status.policy['journey_patterns.update'] == false || this.props.editMode == false) ? 'disabled' : ''} - > - </input> - <span className='radio-label'></span> - </span> - </div> - ) - } - - getErrors(errors) { - let err = Object.keys(errors).map((key, index) => { - return ( - <li key={index} style={{listStyleType: 'disc'}}> - <strong>{key}</strong> { errors[key] } - </li> - ) - }) - - return ( - <ul className="alert alert-danger">{err}</ul> - ) - } - - render() { - this.previousCity = undefined - - return ( - <div className={'t2e-item' + (this.props.value.deletable ? ' disabled' : '') + (this.props.value.object_id ? '' : ' to_record') + (this.props.value.errors ? ' has-error': '')}> - {/* Errors */} - {/* this.props.value.errors ? this.getErrors(this.props.value.errors) : '' */} - - <div className='th'> - <div className='strong mb-xs'>{this.props.value.object_id ? actions.humanOID(this.props.value.object_id) : '-'}</div> - <div>{this.props.value.registration_number}</div> - <div>{actions.getChecked(this.props.value.stop_points).length} arrĂȘt(s)</div> - - <div className={this.props.value.deletable ? 'btn-group disabled' : 'btn-group'}> - <div - className={this.props.value.deletable ? 'btn dropdown-toggle disabled' : 'btn dropdown-toggle'} - data-toggle='dropdown' - > - <span className='fa fa-cog'></span> - </div> - <ul className='dropdown-menu'> - <li className={(this.props.status.policy['journey_patterns.update'] == false || this.props.editMode == false) ? 'disabled' : ''}> - <button - type='button' - onClick={this.props.onOpenEditModal} - data-toggle='modal' - data-target='#JourneyPatternModal' - > - Editer - </button> - </li> - <li className={this.props.value.object_id ? '' : 'disabled'}> - {this.vehicleJourneyURL(this.props.value.object_id)} - </li> - <li className={'delete-action' + ((this.props.status.policy['journey_patterns.destroy'] == false || this.props.editMode == false) ? ' disabled' : '')}> - <button - type='button' - disabled={(this.props.status.policy['journey_patterns.destroy'] == false || this.props.editMode == false)? 'disabled' : ''} - onClick={(e) => { - e.preventDefault() - this.props.onDeleteJourneyPattern(this.props.index)} - } - > - <span className='fa fa-trash'></span>Supprimer - </button> - </li> - </ul> - </div> - </div> - - {this.props.value.stop_points.map((stopPoint, i) =>{ - return ( - <div key={i} className='td'> - {this.cityNameChecker(stopPoint)} - </div> - ) - })} - </div> - ) - } -} - -JourneyPattern.propTypes = { - value: PropTypes.object, - index: PropTypes.number, - onCheckboxChange: PropTypes.func.isRequired, - onOpenEditModal: PropTypes.func.isRequired, - onDeleteJourneyPattern: 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 deleted file mode 100644 index 6506b706c..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ /dev/null @@ -1,158 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var JourneyPattern = require('./JourneyPattern') -var _ = require('lodash') - -class JourneyPatterns extends Component{ - constructor(props){ - super(props) - this.previousCity = undefined - } - componentDidMount() { - this.props.onLoadFirstPage() - } - componentDidUpdate(prevProps, prevState) { - if(this.props.status.isFetching == false){ - $('.table-2entries').each(function() { - var refH = [] - var refCol = [] - - $(this).find('.t2e-head').children('div').each(function() { - var h = $(this).outerHeight(); - refH.push(h) - }); - - var i = 0 - $(this).find('.t2e-item').children('div').each(function() { - var h = $(this).outerHeight(); - if(refCol.length < refH.length){ - refCol.push(h) - } else { - if(h > refCol[i]) { - refCol[i] = h - } - } - if(i == (refH.length - 1)){ - i = 0 - } else { - i++ - } - }); - - for(var n = 0; n < refH.length; n++) { - if(refCol[n] < refH[n]) { - refCol[n] = refH[n] - } - } - - $(this).find('.th').css('height', refCol[0]); - - for(var nth = 1; nth < refH.length; nth++) { - $(this).find('.td:nth-child('+ (nth + 1) +')').css('height', refCol[nth]); - } - }); - } - } - - cityNameChecker(sp) { - let bool = false - if(sp.city_name != this.previousCity){ - bool = true - this.previousCity = sp.city_name - } - return ( - <div - className={(bool) ? 'headlined' : ''} - data-headline={(bool) ? sp.city_name : ''} - title={sp.city_name + ' (' + sp.zip_code +')'} - > - <span><span>{sp.name}</span></span> - </div> - ) - } - - render() { - this.previousCity = undefined - - if(this.props.status.isFetching == true) { - return ( - <div className="isLoading" style={{marginTop: 80, marginBottom: 80}}> - <div className="loader"></div> - </div> - ) - } else { - return ( - <div className='row'> - <div className='col-lg-12'> - {(this.props.status.fetchSuccess == false) && ( - <div className="alert alert-danger mt-sm"> - <strong>Erreur : </strong> - la rĂ©cupĂ©ration des missions a rencontrĂ© un problĂšme. Rechargez la page pour tenter de corriger le problĂšme - </div> - )} - - { _.some(this.props.journeyPatterns, 'errors') && ( - <div className="alert alert-danger mt-sm"> - <strong>Erreur : </strong> - {this.props.journeyPatterns.map((jp, index) => - jp.errors && jp.errors.map((err, i) => { - return ( - <ul key={i}> - <li>{err}</li> - </ul> - ) - }) - )} - </div> - )} - - <div className={'table table-2entries mt-sm mb-sm' + ((this.props.journeyPatterns.length > 0) ? '' : ' no_result')}> - <div className='t2e-head w20'> - <div className='th'> - <div className='strong mb-xs'>ID Mission</div> - <div>Code mission</div> - <div>Nb arrĂȘts</div> - </div> - {this.props.stopPointsList.map((sp, i) =>{ - return ( - <div key={i} className='td'> - {this.cityNameChecker(sp)} - </div> - ) - })} - </div> - - <div className='t2e-item-list w80'> - <div> - {this.props.journeyPatterns.map((journeyPattern, index) => - <JourneyPattern - value={ journeyPattern } - key={ index } - onCheckboxChange= {(e) => this.props.onCheckboxChange(e, index)} - onOpenEditModal= {() => this.props.onOpenEditModal(index, journeyPattern)} - onDeleteJourneyPattern={() => this.props.onDeleteJourneyPattern(index)} - status= {this.props.status} - editMode= {this.props.editMode} - /> - )} - </div> - </div> - </div> - </div> - </div> - ) - } - } -} - -JourneyPatterns.propTypes = { - journeyPatterns: PropTypes.array.isRequired, - stopPointsList: PropTypes.array.isRequired, - status: PropTypes.object.isRequired, - onCheckboxChange: PropTypes.func.isRequired, - onLoadFirstPage: PropTypes.func.isRequired, - onOpenEditModal: PropTypes.func.isRequired -} - -module.exports = JourneyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js deleted file mode 100644 index 5747aa5ce..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js +++ /dev/null @@ -1,66 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -let Navigate = ({ dispatch, journeyPatterns, pagination, status }) => { - let firstPage = 1 - let lastPage = Math.ceil(pagination.totalCount / window.journeyPatternsPerPage) - - let firstItemOnPage = firstPage + (pagination.perPage * (pagination.page - firstPage)) - let lastItemOnPage = firstItemOnPage + (pagination.perPage - firstPage) - - if(status.isFetching == true) { - return false - } - if(status.fetchSuccess == true) { - return ( - <div className='row'> - <div className='col-lg-12 text-right'> - <div className='pagination'> - Liste des missions {firstItemOnPage} Ă {(lastItemOnPage < pagination.totalCount) ? lastItemOnPage : pagination.totalCount} sur {pagination.totalCount} - <form className='page_links' onSubmit={e => { - e.preventDefault() - }}> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged, dispatch)) - }} - type='button' - data-toggle='' - data-target='#ConfirmModal' - className={'previous_page' + (pagination.page == firstPage ? ' disabled' : '')} - disabled={(pagination.page == firstPage ? ' disabled' : '')} - > - </button> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged, dispatch)) - }} - type='button' - data-toggle='' - data-target='#ConfirmModal' - className={'next_page' + (pagination.page == lastPage ? ' disabled' : '')} - disabled={(pagination.page == lastPage ? 'disabled' : '')} - > - </button> - </form> - </div> - </div> - </div> - ) - } else { - return false - } -} - -Navigate.propTypes = { - journeyPatterns: PropTypes.array.isRequired, - status: PropTypes.object.isRequired, - pagination: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -} - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/SaveJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/SaveJourneyPattern.js deleted file mode 100644 index 767dab088..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/SaveJourneyPattern.js +++ /dev/null @@ -1,43 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class SaveJourneyPattern extends Component{ - constructor(props){ - super(props) - } - - render() { - if(this.props.status.policy['journey_patterns.update'] == false) { - return false - }else{ - return ( - <div className='row mt-md'> - <div className='col-lg-12 text-right'> - <form className='jp_collection formSubmitr ml-xs' onSubmit={e => {e.preventDefault()}}> - <button - className='btn btn-default' - type='button' - onClick={e => { - e.preventDefault() - this.props.editMode ? this.props.onSubmitJourneyPattern(this.props.dispatch, this.props.journeyPatterns) : this.props.onEnterEditMode() - }} - > - {this.props.editMode ? "Valider" : "Editer"} - </button> - </form> - </div> - </div> - ) - } - } -} - -SaveJourneyPattern.propTypes = { - journeyPatterns: PropTypes.array.isRequired, - status: PropTypes.object.isRequired, - page: PropTypes.number.isRequired -} - -module.exports = SaveJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js deleted file mode 100644 index 7aa27754e..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js +++ /dev/null @@ -1,30 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var CreateModal = require('../components/CreateModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - journeyPatterns: state.journeyPatterns, - editMode: state.editMode, - status: state.status - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onAddJourneyPattern: (data) =>{ - dispatch(actions.addJourneyPattern(data)) - }, - onOpenCreateModal: () =>{ - dispatch(actions.openCreateModal()) - } - } -} - -const AddJourneyPattern = connect(mapStateToProps, mapDispatchToProps)(CreateModal) - -module.exports = AddJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/ConfirmModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/ConfirmModal.js deleted file mode 100644 index d66425a3a..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/ConfirmModal.js +++ /dev/null @@ -1,30 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var ConfirmModal = require('../components/ConfirmModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - journeyPatterns: state.journeyPatterns - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalAccept: (next, state) =>{ - dispatch(actions.fetchingApi()) - actions.submitJourneyPattern(dispatch, state, next) - }, - onModalCancel: (next) =>{ - dispatch(actions.fetchingApi()) - dispatch(next) - }, - onModalClose: () =>{ - dispatch(actions.closeModal()) - } - } -} - -const ConfirmModalContainer = connect(mapStateToProps, mapDispatchToProps)(ConfirmModal) - -module.exports = ConfirmModalContainer diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js deleted file mode 100644 index 228df3ede..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ /dev/null @@ -1,34 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var JourneyPatterns = require('../components/JourneyPatterns') - -const mapStateToProps = (state) => { - return { - journeyPatterns: state.journeyPatterns, - status: state.status, - editMode: state.editMode, - stopPointsList: state.stopPointsList - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onLoadFirstPage: () =>{ - dispatch(actions.fetchingApi()) - actions.fetchJourneyPatterns(dispatch) - }, - onCheckboxChange: (e, index) =>{ - dispatch(actions.updateCheckboxValue(e, index)) - }, - onOpenEditModal: (index, journeyPattern) =>{ - dispatch(actions.openEditModal(index, journeyPattern)) - }, - onDeleteJourneyPattern: (index) =>{ - dispatch(actions.deleteJourneyPattern(index)) - } - } -} - -const JourneyPatternList = connect(mapStateToProps, mapDispatchToProps)(JourneyPatterns) - -module.exports = JourneyPatternList diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js deleted file mode 100644 index ef6a4a6b1..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Modal.js +++ /dev/null @@ -1,26 +0,0 @@ -var connect = require('react-redux').connect -var EditModal = require('../components/EditModal') -var CreateModal = require('../components/CreateModal') -var actions = require('../actions') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - journeyPattern: state.journeyPattern - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - saveModal: (index, data) =>{ - dispatch(actions.saveModal(index, data)) - } - } -} - -const ModalContainer = connect(mapStateToProps, mapDispatchToProps)(EditModal, CreateModal) - -module.exports = ModalContainer diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js deleted file mode 100644 index ef9f8859c..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ /dev/null @@ -1,17 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var NavigateComponent = require('../components/Navigate') - -const mapStateToProps = (state) => { - return { - journeyPatterns: state.journeyPatterns, - status: state.status, - pagination: state.pagination - } -} - - -const Navigate = connect(mapStateToProps)(NavigateComponent) - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js deleted file mode 100644 index 434264fea..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js +++ /dev/null @@ -1,28 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var SaveJourneyPatternComponent = require('../components/SaveJourneyPattern') - -const mapStateToProps = (state) => { - return { - journeyPatterns: state.journeyPatterns, - editMode: state.editMode, - page: state.pagination.page, - status: state.status - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onEnterEditMode: () => { - dispatch(actions.enterEditMode()) - }, - onSubmitJourneyPattern: (next, state) => { - actions.submitJourneyPattern(dispatch, state, next) - } - } -} - -const SaveJourneyPattern = connect(mapStateToProps, mapDispatchToProps)(SaveJourneyPatternComponent) - -module.exports = SaveJourneyPattern diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js deleted file mode 100644 index ca9efd2d0..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ /dev/null @@ -1,48 +0,0 @@ -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') -var App = require('./components/App') - -// 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') - -var initialState = { - editMode: false, - status: { - policy: window.perms, - fetchSuccess: true, - isFetching: false - }, - journeyPatterns: [], - stopPointsList: window.stopPoints, - pagination: { - page : 1, - totalCount: window.journeyPatternLength, - perPage: window.journeyPatternsPerPage, - stateChanged: false - }, - modal: { - type: '', - modalProps: {}, - confirmModal: {} - } -} -// const loggerMiddleware = createLogger() - -let store = createStore( - journeyPatternsApp, - initialState, - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) -) - -render( - <Provider store={store}> - <App /> - </Provider>, - document.getElementById('journey_patterns') -) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/editMode.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/editMode.js deleted file mode 100644 index 2e8af1aa8..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/editMode.js +++ /dev/null @@ -1,12 +0,0 @@ -const editMode = (state = {}, action ) => { - switch (action.type) { - case "ENTER_EDIT_MODE": - return true - case "EXIT_EDIT_MODE": - return false - default: - return state - } -} - -module.exports = editMode diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js deleted file mode 100644 index a9c28b83e..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js +++ /dev/null @@ -1,18 +0,0 @@ -var combineReducers = require('redux').combineReducers -var editMode = require('./editMode') -var status = require('./status') -var journeyPatterns = require('./journeyPatterns') -var pagination = require('./pagination') -var modal = require('./modal') -var stopPointsList = require('./stopPointsList') - -const journeyPatternsApp = combineReducers({ - editMode, - status, - journeyPatterns, - pagination, - stopPointsList, - modal -}) - -module.exports = journeyPatternsApp diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js deleted file mode 100644 index d4f7257d7..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ /dev/null @@ -1,92 +0,0 @@ -var _ = require('lodash') -var actions = require("../actions") - -const journeyPattern = (state = {}, action) => { - switch (action.type) { - case 'ADD_JOURNEYPATTERN': - let stopPoints = window.stopPoints - - if(stopPoints != undefined) { - stopPoints.map((s)=>{ - s.checked = false - return s - }) - } - return { - name: action.data.name.value, - published_name: action.data.published_name.value, - registration_number: action.data.registration_number.value, - stop_points: stopPoints, - deletable: false - } - case 'UPDATE_CHECKBOX_VALUE': - var updatedStopPoints = state.stop_points.map((s) => { - if (String(s.id) == action.id) { - return _.assign({}, s, {checked : !s.checked}) - }else { - return s - } - }) - return _.assign({}, state, {stop_points: updatedStopPoints}) - default: - return state - } -} - -const journeyPatterns = (state = [], action) => { - switch (action.type) { - case 'RECEIVE_JOURNEY_PATTERNS': - return [...action.json] - case 'RECEIVE_ERRORS': - return [...action.json] - case 'GO_TO_PREVIOUS_PAGE': - $('#ConfirmModal').modal('hide') - if(action.pagination.page > 1){ - actions.fetchJourneyPatterns(action.dispatch, action.pagination.page, action.nextPage) - } - return state - case 'GO_TO_NEXT_PAGE': - $('#ConfirmModal').modal('hide') - if (action.pagination.totalCount - (action.pagination.page * action.pagination.perPage) > 0){ - actions.fetchJourneyPatterns(action.dispatch, action.pagination.page, action.nextPage) - } - return state - case 'UPDATE_CHECKBOX_VALUE': - return state.map((j, i) =>{ - if(i == action.index) { - return journeyPattern(j, action) - } else { - return j - } - }) - case 'DELETE_JOURNEYPATTERN': - return state.map((j, i) =>{ - if(i == action.index) { - return _.assign({}, j, {deletable: true}) - } else { - return j - } - }) - case 'ADD_JOURNEYPATTERN': - return [ - journeyPattern(state, action), - ...state - ] - case 'SAVE_MODAL': - return state.map((j, i) =>{ - if(i == action.index) { - return _.assign({}, j, { - name: action.data.name.value, - published_name: action.data.published_name.value, - registration_number: action.data.registration_number.value - }) - } else { - return j - } - }) - default: - return state - } -} - -module.exports = journeyPatterns diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js deleted file mode 100644 index 86cfb5a25..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ /dev/null @@ -1,42 +0,0 @@ -var _ = require('lodash') -const modal = (state = {}, action) => { - switch (action.type) { - case 'OPEN_CONFIRM_MODAL': - $('#ConfirmModal').modal('show') - return _.assign({}, state, { - type: 'confirm', - confirmModal: { - callback: action.callback, - } - }) - case 'EDIT_JOURNEYPATTERN_MODAL': - return { - type: 'edit', - modalProps: { - index: action.index, - journeyPattern: action.journeyPattern - }, - confirmModal: {} - } - case 'CREATE_JOURNEYPATTERN_MODAL': - return { - type: 'create', - modalProps: {}, - confirmModal: {} - } - case 'DELETE_JOURNEYPATTERN': - return _.assign({}, state, { type: '' }) - case 'SAVE_MODAL': - return _.assign({}, state, { type: '' }) - case 'CLOSE_MODAL': - return { - type: '', - modalProps: {}, - confirmModal: {} - } - default: - return state - } -} - -module.exports = modal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js deleted file mode 100644 index 0714ca843..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js +++ /dev/null @@ -1,36 +0,0 @@ -var _ = require('lodash') -const pagination = (state = {}, action) => { - switch (action.type) { - case 'RECEIVE_JOURNEY_PATTERNS': - return _.assign({}, state, {stateChanged: false}) - case 'GO_TO_PREVIOUS_PAGE': - if (action.pagination.page > 1){ - toggleOnConfirmModal() - return _.assign({}, state, {page : action.pagination.page - 1, stateChanged: false}) - } - return state - case 'GO_TO_NEXT_PAGE': - if (state.totalCount - (action.pagination.page * action.pagination.perPage) > 0){ - toggleOnConfirmModal() - return _.assign({}, state, {page : action.pagination.page + 1, stateChanged: false}) - } - return state - case 'UPDATE_CHECKBOX_VALUE': - case 'ADD_JOURNEYPATTERN': - case 'SAVE_MODAL': - toggleOnConfirmModal('modal') - return _.assign({}, state, {stateChanged: true}) - case 'UPDATE_TOTAL_COUNT': - return _.assign({}, state, {totalCount : state.totalCount - action.diff }) - default: - return state - } -} - -const toggleOnConfirmModal = (arg = '') =>{ - $('.confirm').each(function(){ - $(this).data('toggle','') - }) -} - -module.exports = pagination diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js deleted file mode 100644 index 07bbdc249..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js +++ /dev/null @@ -1,23 +0,0 @@ -var _ = require('lodash') -var actions = require("../actions") - -const status = (state = {}, action) => { - switch (action.type) { - case 'UNAVAILABLE_SERVER': - return _.assign({}, state, {fetchSuccess: false}) - case 'FETCH_API': - return _.assign({}, state, {isFetching: true}) - case 'RECEIVE_JOURNEY_PATTERNS': - return _.assign({}, state, {fetchSuccess: true, isFetching: false}) - case 'RECEIVE_ERRORS': - return _.assign({}, state, {isFetching: false}) - case 'ENTER_EDIT_MODE': - return _.assign({}, state, {editMode: true}) - case 'EXIT_EDIT_MODE': - return _.assign({}, state, {editMode: false}) - default: - return state - } -} - -module.exports = status diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/stopPointsList.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/stopPointsList.js deleted file mode 100644 index 9abacc8c8..000000000 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/stopPointsList.js +++ /dev/null @@ -1,8 +0,0 @@ -const stopPointsList = (state = [], action) => { - switch (action.type) { - default: - return state - } -} - -module.exports = stopPointsList diff --git a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js deleted file mode 100644 index 361e89c36..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js +++ /dev/null @@ -1,323 +0,0 @@ -const _ = require('lodash') -const { I18n } = window - -const actions = { - weekDays: (index) => { - return _.range(1, 8).map(n => I18n.time_tables.edit.metas.days[n]) - }, - strToArrayDayTypes: (str) =>{ - return actions.weekDays().map(day => str.indexOf(day) !== -1) - }, - arrayToStrDayTypes: (dayTypes) => { - let newDayTypes = dayTypes.reduce((arr, dayActive, i) => { - if (dayActive) arr.push(actions.weekDays()[i]) - return arr - }, []) - - return newDayTypes.join(',') - }, - fetchingApi: () =>({ - type: 'FETCH_API' - }), - receiveErrors : (json) => ({ - type: "RECEIVE_ERRORS", - json - }), - unavailableServer: () => ({ - type: 'UNAVAILABLE_SERVER' - }), - receiveMonth: (json) => ({ - type: 'RECEIVE_MONTH', - json - }), - receiveTimeTables: (json) => ({ - type: 'RECEIVE_TIME_TABLES', - json - }), - goToPreviousPage : (dispatch, pagination) => ({ - type: 'GO_TO_PREVIOUS_PAGE', - dispatch, - pagination, - nextPage : false - }), - goToNextPage : (dispatch, pagination) => ({ - type: 'GO_TO_NEXT_PAGE', - dispatch, - pagination, - nextPage : true - }), - changePage : (dispatch, val) => ({ - type: 'CHANGE_PAGE', - dispatch, - page: val - }), - updateDayTypes: (dayTypes) => ({ - type: 'UPDATE_DAY_TYPES', - dayTypes - }), - updateCurrentMonthFromDaytypes: (dayTypes) => ({ - type: 'UPDATE_CURRENT_MONTH_FROM_DAYTYPES', - dayTypes - }), - updateComment: (comment) => ({ - type: 'UPDATE_COMMENT', - comment - }), - updateColor: (color) => ({ - type: 'UPDATE_COLOR', - color - }), - select2Tags: (selectedTag) => ({ - type: 'UPDATE_SELECT_TAG', - selectedItem: { - id: selectedTag.id, - name: selectedTag.name - } - }), - unselect2Tags: (selectedTag) => ({ - type: 'UPDATE_UNSELECT_TAG', - selectedItem: { - id: selectedTag.id, - name: selectedTag.name - } - }), - deletePeriod: (index, dayTypes) => ({ - type: 'DELETE_PERIOD', - index, - dayTypes - }), - openAddPeriodForm: () => ({ - type: 'OPEN_ADD_PERIOD_FORM' - }), - openEditPeriodForm: (period, index) => ({ - type: 'OPEN_EDIT_PERIOD_FORM', - period, - index - }), - closePeriodForm: () => ({ - type: 'CLOSE_PERIOD_FORM' - }), - resetModalErrors: () => ({ - type: 'RESET_MODAL_ERRORS' - }), - updatePeriodForm: (val, group, selectType) => ({ - type: 'UPDATE_PERIOD_FORM', - val, - group, - selectType - }), - validatePeriodForm: (modalProps, timeTablePeriods, metas, timetableInDates, error) => ({ - type: 'VALIDATE_PERIOD_FORM', - modalProps, - timeTablePeriods, - metas, - timetableInDates, - error - }), - addIncludedDate: (index, dayTypes, date) => ({ - type: 'ADD_INCLUDED_DATE', - index, - dayTypes, - date - }), - removeIncludedDate: (index, dayTypes, date) => ({ - type: 'REMOVE_INCLUDED_DATE', - index, - dayTypes, - date - }), - addExcludedDate: (index, dayTypes, date) => ({ - type: 'ADD_EXCLUDED_DATE', - index, - dayTypes, - date - }), - removeExcludedDate: (index, dayTypes, date) => ({ - type: 'REMOVE_EXCLUDED_DATE', - index, - dayTypes, - date - }), - openConfirmModal : (callback) => ({ - type : 'OPEN_CONFIRM_MODAL', - callback - }), - showErrorModal: (error) => ({ - type: 'OPEN_ERROR_MODAL', - error - }), - closeModal : () => ({ - type : 'CLOSE_MODAL' - }), - monthName(strDate) { - let monthList = _.range(1,13).map(n => I18n.calendars.months[n]) - let date = new Date(strDate) - return monthList[date.getMonth()] - }, - getHumanDate(strDate, mLimit) { - let origin = strDate.split('-') - let D = origin[2] - let M = actions.monthName(strDate).toLowerCase() - let Y = origin[0] - - if(mLimit && M.length > mLimit) { - M = M.substr(0, mLimit) + '.' - } - - return (D + ' ' + M + ' ' + Y) - }, - getLocaleDate(strDate) { - let date = new Date(strDate) - return date.toLocaleDateString() - }, - updateSynthesis: ({current_month, time_table_dates: dates, time_table_periods: periods}) => { - let newPeriods = _.reject(periods, 'deleted') - let improvedCM = current_month.map((d, i) => { - let isInPeriod = actions.isInPeriod(newPeriods, d.date) - let isIncluded = _.some(dates, {'date': d.date, 'in_out': true}) - - return _.assign({}, current_month[i], { - in_periods: isInPeriod, - include_date: isIncluded, - excluded_date: !isInPeriod ? false : current_month[i].excluded_date - }) - }) - return improvedCM - }, - isInPeriod: (periods, date) => { - date = new Date(date) - - for (let period of periods) { - let begin = new Date(period.period_start) - let end = new Date(period.period_end) - if (date >= begin && date <= end) return true - } - - return false - }, - checkConfirmModal: (event, callback, stateChanged, dispatch, metas, timetable) => { - if(stateChanged){ - const error = actions.errorModalKey(timetable.time_table_periods, metas.day_types) - if(error){ - return actions.showErrorModal(error) - }else{ - return actions.openConfirmModal(callback) - } - }else{ - dispatch(actions.fetchingApi()) - return callback - } - }, - formatDate: (props) => { - return props.year + '-' + props.month + '-' + props.day - }, - checkErrorsInPeriods: (start, end, index, periods) => { - let error = '' - start = new Date(start) - end = new Date(end) - - for (let i = 0; i < periods.length; i++) { - let period = periods[i] - if (index !== i && !period.deleted) { - if (new Date(period.period_start) <= end && new Date(period.period_end) >= start) { - error = I18n.time_tables.edit.error_submit.periods_overlaps - break - } - } - } - return error - }, - checkErrorsInDates: (start, end, in_days) => { - let error = '' - start = new Date(start) - end = new Date(end) - - for (let day of in_days) { - if (start <= new Date(day.date) && end >= new Date(day.date)) { - error = I18n.time_tables.edit.error_submit.dates_overlaps - break - } - } - return error - }, - fetchTimeTables: (dispatch, nextPage) => { - let urlJSON = window.location.pathname.split('/', 5).join('/') - if(nextPage) { - urlJSON += "/month.json?date=" + nextPage - }else{ - urlJSON += ".json" - } - let hasError = false - fetch(urlJSON, { - credentials: 'same-origin', - }).then(response => { - if(response.status == 500) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.unavailableServer()) - } else { - if(nextPage){ - dispatch(actions.receiveMonth(json)) - }else{ - dispatch(actions.receiveTimeTables(json)) - } - } - }) - }, - submitTimetable: (dispatch, timetable, metas, next) => { - dispatch(actions.fetchingApi()) - let strDayTypes = actions.arrayToStrDayTypes(metas.day_types) - metas.day_types= strDayTypes - let sentState = _.assign({}, timetable, metas) - let urlJSON = window.location.pathname.split('/', 5).join('/') - let hasError = false - fetch(urlJSON + '.json', { - credentials: 'same-origin', - method: 'PATCH', - contentType: 'application/json; charset=utf-8', - Accept: 'application/json', - body: JSON.stringify(sentState), - headers: { - 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') - } - }).then(response => { - if(!response.ok) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.receiveErrors(json)) - } else { - if(next) { - dispatch(next) - } else { - dispatch(actions.receiveTimeTables(json)) - } - } - }) - }, - errorModalKey: (periods, dayTypes) => { - const withoutPeriodsWithDaysTypes = _.reject(periods, 'deleted').length == 0 && _.some(dayTypes) && "withoutPeriodsWithDaysTypes" - const withPeriodsWithoutDayTypes = _.reject(periods, 'deleted').length > 0 && _.every(dayTypes, dt => dt == false) && "withPeriodsWithoutDayTypes" - - return (withoutPeriodsWithDaysTypes || withPeriodsWithoutDayTypes) && (withoutPeriodsWithDaysTypes ? "withoutPeriodsWithDaysTypes" : "withPeriodsWithoutDayTypes") - - }, - errorModalMessage: (errorKey) => { - switch (errorKey) { - case "withoutPeriodsWithDaysTypes": - return I18n.time_tables.edit.error_modal.withoutPeriodsWithDaysTypes - case "withPeriodsWithoutDayTypes": - return I18n.time_tables.edit.error_modal.withPeriodsWithoutDayTypes - default: - return errorKey - - } - }, -} - -module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/ConfirmModal.js b/app/assets/javascripts/es6_browserified/time_tables/components/ConfirmModal.js deleted file mode 100644 index 674a03296..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/ConfirmModal.js +++ /dev/null @@ -1,51 +0,0 @@ -var React = require('react') -var { PropTypes } = require('react') - -const ConfirmModal = ({dispatch, modal, onModalAccept, onModalCancel, timetable, metas}, {I18n}) => ( - <div className={ 'modal fade ' + ((modal.type == 'confirm') ? 'in' : '') } id='ConfirmModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>{I18n.time_tables.edit.confirm_modal.title}</h4> - </div> - <div className='modal-body'> - <div className='mt-md mb-md'> - <p>{I18n.time_tables.edit.confirm_modal.message}</p> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick= {() => {onModalCancel(modal.confirmModal.callback)}} - > - {I18n.cancel} - </button> - <button - className='btn btn-primary' - data-dismiss='modal' - type='button' - onClick = {() => {onModalAccept(modal.confirmModal.callback, timetable, metas)}} - > - {I18n.actions.submit} - </button> - </div> - </div> - </div> - </div> - </div> -) - -ConfirmModal.propTypes = { - modal: PropTypes.object.isRequired, - onModalAccept: PropTypes.func.isRequired, - onModalCancel: PropTypes.func.isRequired -} - -ConfirmModal.contextTypes = { - I18n: PropTypes.object -} - -module.exports = ConfirmModal diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js deleted file mode 100644 index 2597a4870..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js +++ /dev/null @@ -1,43 +0,0 @@ -var React = require('react') -var { PropTypes } = require('react') -var { errorModalMessage } = require('../actions') - -const ErrorModal = ({dispatch, modal, onModalClose}, {I18n}) => ( - <div className={ 'modal fade ' + ((modal.type == 'error') ? 'in' : '') } id='ErrorModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>{I18n.time_tables.edit.error_modal.title}</h4> - </div> - <div className='modal-body'> - <div className='mt-md mb-md'> - <p>{errorModalMessage(modal.modalProps.error)}</p> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick= {() => {onModalClose()}} - > - {I18n.back} - </button> - </div> - </div> - </div> - </div> - </div> -) - -ErrorModal.propTypes = { - modal: PropTypes.object.isRequired, - onModalClose: PropTypes.func.isRequired -} - -ErrorModal.contextTypes = { - I18n: PropTypes.object -} - -module.exports = ErrorModal diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/ExceptionsInDay.js b/app/assets/javascripts/es6_browserified/time_tables/components/ExceptionsInDay.js deleted file mode 100644 index 80c2e4b7a..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/ExceptionsInDay.js +++ /dev/null @@ -1,75 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class ExceptionsInDay extends Component { - constructor(props) { - super(props) - } - - handleClick() { - const {index, day, metas: {day_types} } = this.props - if (day.in_periods && day_types[day.wday]) { - day.excluded_date ? this.props.onRemoveExcludedDate(index, day_types, day.date) : this.props.onAddExcludedDate(index, day_types, day.date) - } else { - day.include_date ? this.props.onRemoveIncludedDate(index, day_types, day.date) : this.props.onAddIncludedDate(index, day_types, day.date) - } - } - - render() { - {/* display add or remove link, only if true in daytypes */} - {/* display add or remove link, according to context (presence in period, or not) */} - if(this.props.value.current_month[this.props.index].in_periods == true && this.props.blueDaytype == true) { - return ( - <div className='td'> - <button - type='button' - className={'btn btn-circle' + (this.props.value.current_month[this.props.index].excluded_date ? ' active' : '')} - data-actiontype='remove' - onClick={(e) => { - $(e.currentTarget).toggleClass('active') - this.handleClick() - }} - > - <span className='fa fa-times'></span> - </button> - </div> - ) - } else { - return ( - <div className='td'> - <button - type='button' - className={'btn btn-circle' + (this.props.value.current_month[this.props.index].include_date ? ' active' : '')} - data-actiontype='add' - onClick={(e) => { - $(e.currentTarget).toggleClass('active') - this.handleClick() - }} - > - <span className='fa fa-plus'></span> - </button> - </div> - ) - // } else if(this.props.value.current_month[this.props.index].in_periods == true && this.props.blueDaytype == false){ - // return ( - // <div className='td'></div> - // ) - // } else{ - // return false - // } - } - } -} - -ExceptionsInDay.propTypes = { - value: PropTypes.object.isRequired, - metas: PropTypes.object.isRequired, - blueDaytype: PropTypes.bool.isRequired, - onExcludeDateFromPeriod: PropTypes.func.isRequired, - onIncludeDateInPeriod: PropTypes.func.isRequired, - index: PropTypes.number.isRequired -} - -module.exports = ExceptionsInDay diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/Metas.js b/app/assets/javascripts/es6_browserified/time_tables/components/Metas.js deleted file mode 100644 index 26a96e4a6..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/Metas.js +++ /dev/null @@ -1,142 +0,0 @@ -var React = require('react') -var { PropTypes } = require('react') -const { weekDays } = require('../actions') -var TagsSelect2 = require('./TagsSelect2') - -const Metas = ({metas, onUpdateDayTypes, onUpdateComment, onUpdateColor, onSelect2Tags, onUnselect2Tags}, {I18n}) => { - let colorList = ["", "#9B9B9B", "#FFA070", "#C67300", "#7F551B", "#41CCE3", "#09B09C", "#3655D7", "#6321A0", "#E796C6", "#DD2DAA"] - return ( - <div className='form-horizontal'> - <div className="row"> - <div className="col-lg-10 col-lg-offset-1"> - {/* comment (name) */} - <div className="form-group"> - <label htmlFor="" className="control-label col-sm-4 required"> - {I18n.time_tables.edit.metas.name} <abbr title="">*</abbr> - </label> - <div className="col-sm-8"> - <input - type='text' - className='form-control' - value={metas.comment} - required='required' - onChange={(e) => (onUpdateComment(e.currentTarget.value))} - /> - </div> - </div> - - {/* color */} - <div className="form-group"> - <label htmlFor="" className="control-label col-sm-4">{I18n.activerecord.attributes.time_table.color}</label> - <div className="col-sm-8"> - <div className="dropdown color_selector"> - <button - type='button' - className="btn btn-default dropdown-toggle" - id='dpdwn_color' - data-toggle='dropdown' - aria-haspopup='true' - aria-expanded='true' - > - <span - className='fa fa-circle mr-xs' - style={{color: (metas.color == '') ? 'transparent' : metas.color}} - ></span> - <span className='caret'></span> - </button> - - <div className="form-group dropdown-menu" aria-labelledby='dpdwn_color'> - {colorList.map((c, i) => - <span - className="radio" - key={i} - onClick={() => {onUpdateColor(c)}} - > - <label htmlFor=""> - <input - type='radio' - className='color_selector' - value={c} - /> - <span - className='fa fa-circle' - style={{color: ((c == '') ? 'transparent' : c)}} - ></span> - </label> - </span> - )} - </div> - </div> - </div> - </div> - - {/* tags */} - <div className="form-group"> - <label htmlFor="" className="control-label col-sm-4">{I18n.activerecord.attributes.time_table.tag_list}</label> - <div className="col-sm-8"> - <TagsSelect2 - initialTags={metas.initial_tags} - tags={metas.tags} - onSelect2Tags={(e) => onSelect2Tags(e)} - onUnselect2Tags={(e) => onUnselect2Tags(e)} - /> - </div> - </div> - - {/* calendar */} - <div className="form-group"> - <label htmlFor="" className="control-label col-sm-4">{I18n.activerecord.attributes.time_table.calendar}</label> - <div className="col-sm-8"> - <span>{metas.calendar ? metas.calendar.name : I18n.time_tables.edit.metas.no_calendar}</span> - </div> - </div> - - {/* day_types */} - <div className="form-group"> - <label htmlFor="" className="control-label col-sm-4"> - {I18n.time_tables.edit.metas.day_types} - </label> - <div className="col-sm-8"> - <div className="form-group labelled-checkbox-group"> - {metas.day_types.map((day, i) => - <div - className='lcbx-group-item' - data-wday={'day_' + i} - key={i} - > - <div className="checkbox"> - <label> - <input - onChange={(e) => {onUpdateDayTypes(i, metas.day_types)}} - id={i} - type="checkbox" - checked={day ? 'checked' : ''} - /> - <span className='lcbx-group-item-label'>{weekDays()[i]}</span> - </label> - </div> - </div> - )} - </div> - </div> - </div> - </div> - </div> - </div> - ) -} - -Metas.propTypes = { - metas: PropTypes.object.isRequired, - onUpdateDayTypes: PropTypes.func.isRequired, - onUpdateColor: PropTypes.func.isRequired, - onUpdateColor: PropTypes.func.isRequired, - onSelect2Tags: PropTypes.func.isRequired, - onUnselect2Tags: PropTypes.func.isRequired -} - -Metas.contextTypes = { - I18n: PropTypes.object -} - -module.exports = Metas diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js b/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js deleted file mode 100644 index 6a3690cb0..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js +++ /dev/null @@ -1,92 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') -var _ = require('lodash') - -let Navigate = ({ dispatch, metas, timetable, pagination, status, filters}) => { - if(status.isFetching == true) { - return false - } - if(status.fetchSuccess == true) { - let pageIndex = pagination.periode_range.indexOf(pagination.currentPage) - let firstPage = pageIndex == 0 - let lastPage = pageIndex == pagination.periode_range.length - 1 - return ( - <div className="pagination pull-right"> - <form className='form-inline' onSubmit={e => {e.preventDefault()}}> - {/* date selector */} - <div className="form-group"> - <div className="dropdown month_selector" style={{display: 'inline-block'}}> - <div - className='btn btn-default dropdown-toggle' - id='date_selector' - data-toggle='dropdown' - aria-haspopup='true' - aria-expanded='true' - > - {pagination.currentPage ? (actions.monthName(pagination.currentPage) + ' ' + new Date(pagination.currentPage).getFullYear()) : ''} - <span className='caret'></span> - </div> - <ul - className='dropdown-menu' - aria-labelledby='date_selector' - > - {_.map(pagination.periode_range, (month, i) => ( - <li key={i}> - <button - type='button' - value={month} - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.changePage(dispatch, e.currentTarget.value), pagination.stateChanged, dispatch, metas, timetable)) - }} - > - {actions.monthName(month) + ' ' + new Date(month).getFullYear()} - </button> - </li> - ))} - </ul> - </div> - </div> - - {/* prev/next */} - <div className="form-group"> - <div className="page_links"> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged, dispatch, metas, timetable)) - }} - type='button' - data-target='#ConfirmModal' - className={(firstPage ? 'disabled ' : '') + 'previous_page'} - disabled={(firstPage ? 'disabled' : '')} - ></button> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged, dispatch, metas, timetable)) - }} - type='button' - data-target='#ConfirmModal' - className={(lastPage ? 'disabled ' : '') + 'next_page'} - disabled={(lastPage ? 'disabled' : '')} - ></button> - </div> - </div> - </form> - </div> - ) - } else { - return false - } -} - -Navigate.propTypes = { - status: PropTypes.object.isRequired, - pagination: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -} - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js b/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js deleted file mode 100644 index d494109cc..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js +++ /dev/null @@ -1,149 +0,0 @@ -var React = require('react') -var { PropTypes } = require('react') -var _ = require('lodash') -let monthsArray = ['Janvier', 'FĂ©vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'AoĂ»t', 'Septembre', 'Octobre', 'Novembre', 'DĂ©cembre'] - -const formatNumber = (val) => { - return ("0" + val).slice(-2) -} - -const makeDaysOptions = (daySelected) => { - let arr = [] - for(let i = 1; i < 32; i++) { - arr.push(<option value={formatNumber(i)} key={i}>{formatNumber(i)}</option>) - } - return arr -} - -const makeMonthsOptions = (monthSelected) => { - let arr = [] - for(let i = 1; i < 13; i++) { - arr.push(<option value={formatNumber(i)} key={i}>{monthsArray[i - 1]}</option>) - } - return arr -} - -const makeYearsOptions = (yearSelected) => { - let arr = [] - let startYear = new Date().getFullYear() - 3 - for(let i = startYear; i <= startYear + 6; i++) { - arr.push(<option key={i}>{i}</option>) - } - return arr -} - -const PeriodForm = ({modal, timetable, metas, onOpenAddPeriodForm, onClosePeriodForm, onUpdatePeriodForm, onValidatePeriodForm}, {I18n}) => ( - <div className="container-fluid"> - <div className="row"> - <div className="col lg-6 col-lg-offset-3"> - <div className='subform'> - {modal.modalProps.active && - <div> - <div className="nested-head"> - <div className="wrapper"> - <div> - <div className="form-group"> - <label htmlFor="" className="control-label required"> - {I18n.time_tables.edit.period_form.begin} - <abbr title="requis">*</abbr> - </label> - </div> - </div> - <div> - <div className="form-group"> - <label htmlFor="" className="control-label required"> - {I18n.time_tables.edit.period_form.end} - <abbr title="requis">*</abbr> - </label> - </div> - </div> - </div> - </div> - <div className="nested-fields"> - <div className="wrapper"> - <div> - <div className={'form-group date ' + (modal.modalProps.error ? ' has-error' : '')}> - <div className="form-inline"> - <select value={formatNumber(modal.modalProps.begin.day)} onChange={(e) => onUpdatePeriodForm(e, 'begin', 'day', modal.modalProps)} id="q_validity_period_begin_gteq_3i" className="date required form-control"> - {makeDaysOptions(modal.modalProps.begin.day)} - </select> - <select value={formatNumber(modal.modalProps.begin.month)} onChange={(e) => onUpdatePeriodForm(e, 'begin', 'month', modal.modalProps)} id="q_validity_period_begin_gteq_2i" className="date required form-control"> - {makeMonthsOptions(modal.modalProps.begin.month)} - </select> - <select value={modal.modalProps.begin.year} onChange={(e) => onUpdatePeriodForm(e, 'begin', 'year', modal.modalProps)} id="q_validity_period_begin_gteq_1i" className="date required form-control"> - {makeYearsOptions(modal.modalProps.begin.year)} - </select> - </div> - </div> - </div> - <div> - <div className={'form-group date ' + (modal.modalProps.error ? ' has-error' : '')}> - <div className="form-inline"> - <select value={formatNumber(modal.modalProps.end.day)} onChange={(e) => onUpdatePeriodForm(e, 'end', 'day', modal.modalProps)} id="q_validity_period_end_gteq_3i" className="date required form-control"> - {makeDaysOptions(modal.modalProps.end.day)} - </select> - <select value={formatNumber(modal.modalProps.end.month)} onChange={(e) => onUpdatePeriodForm(e, 'end', 'month', modal.modalProps)} id="q_validity_period_end_gteq_2i" className="date required form-control"> - {makeMonthsOptions(modal.modalProps.end.month)} - </select> - <select value={modal.modalProps.end.year} onChange={(e) => onUpdatePeriodForm(e, 'end', 'year', modal.modalProps)} id="q_validity_period_end_gteq_1i" className="date required form-control"> - {makeYearsOptions(modal.modalProps.end.year)} - </select> - </div> - </div> - </div> - </div> - </div> - - <div className='links nested-linker'> - <span className='help-block small text-danger pull-left mt-xs ml-sm'> - {modal.modalProps.error} - </span> - <button - type='button' - className='btn btn-link' - onClick={onClosePeriodForm} - > - {I18n.cancel} - </button> - <button - type='button' - className='btn btn-outline-primary mr-sm' - onClick={() => onValidatePeriodForm(modal.modalProps, timetable.time_table_periods, metas, _.filter(timetable.time_table_dates, ['in_out', true]))} - > - {I18n.actions.submit} - </button> - </div> - </div> - } - {!modal.modalProps.active && - <div className="text-right"> - <button - type='button' - className='btn btn-outline-primary' - onClick={onOpenAddPeriodForm} - > - {I18n.time_tables.actions.add_period} - </button> - </div> - } - </div> - </div> - </div> - </div> -) - -PeriodForm.propTypes = { - modal: PropTypes.object.isRequired, - metas: PropTypes.object.isRequired, - onOpenAddPeriodForm: PropTypes.func.isRequired, - onClosePeriodForm: PropTypes.func.isRequired, - onUpdatePeriodForm: PropTypes.func.isRequired, - onValidatePeriodForm: PropTypes.func.isRequired, - timetable: PropTypes.object.isRequired -} - -PeriodForm.contextTypes = { - I18n: PropTypes.object -} - -module.exports = PeriodForm diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodManager.js b/app/assets/javascripts/es6_browserified/time_tables/components/PeriodManager.js deleted file mode 100644 index 704e21331..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodManager.js +++ /dev/null @@ -1,88 +0,0 @@ -var React = require('react') -var { Component, PropTypes } = require('react') -var actions = require('../actions') - -class PeriodManager extends Component { - constructor(props, context) { - super(props, context) - } - - toEndPeriod(curr, end) { - let diff - - let startCurrM = curr.split('-')[1] - let endPeriodM = end.split('-')[1] - - let lastDayInM = new Date(curr.split('-')[2], startCurrM + 1, 0) - lastDayInM = lastDayInM.toJSON().substr(0, 10).split('-')[2] - - if(startCurrM === endPeriodM) { - diff = (end.split('-')[2] - curr.split('-')[2]) - } else { - diff = (lastDayInM - curr.split('-')[2]) - } - - return diff - } - - render() { - return ( - <div - className='period_manager' - id={this.props.value.id} - data-toendperiod={this.toEndPeriod(this.props.currentDate.toJSON().substr(0, 10), this.props.value.period_end)} - > - <p className='strong'> - {actions.getLocaleDate(this.props.value.period_start) + ' > ' + actions.getLocaleDate(this.props.value.period_end)} - </p> - - <div className='dropdown'> - <div - className='btn dropdown-toggle' - id='period_actions' - data-toggle='dropdown' - aria-haspopup='true' - aria-expanded='true' - > - <span className='fa fa-cog'></span> - </div> - <ul - className='dropdown-menu' - aria-labelledby='date_selector' - > - <li> - <button - type='button' - onClick={() => this.props.onOpenEditPeriodForm(this.props.value, this.props.index)} - > - Modifier - </button> - </li> - <li className='delete-action'> - <button - type='button' - onClick={() => this.props.onDeletePeriod(this.props.index, this.props.metas.day_types)} - > - <span className='fa fa-trash'></span> - Supprimer - </button> - </li> - </ul> - </div> - </div> - ) - } -} - -PeriodManager.propTypes = { - value: PropTypes.object.isRequired, - currentDate: PropTypes.object.isRequired, - onDeletePeriod: PropTypes.func.isRequired, - onOpenEditPeriodForm: PropTypes.func.isRequired -} - -PeriodManager.contextTypes = { - I18n: PropTypes.object -} - -module.exports = PeriodManager diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodsInDay.js b/app/assets/javascripts/es6_browserified/time_tables/components/PeriodsInDay.js deleted file mode 100644 index f56509b99..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodsInDay.js +++ /dev/null @@ -1,79 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var PeriodManager = require('./PeriodManager') - -class PeriodsInDay extends Component { - constructor(props) { - super(props) - } - - isIn(date) { - let currentDate = date.getTime() - let cls = 'td' - let periods = this.props.value - - periods.map((p, i) => { - if (!p.deleted){ - let begin = new Date(p.period_start).getTime() - let end = new Date(p.period_end).getTime() - - if(currentDate >= begin && currentDate <= end) { - if(currentDate == begin) { - cls += ' in_periods start_period' - } else if(currentDate == end) { - cls += ' in_periods end_period' - } else { - cls += ' in_periods' - } - } - } - }) - return cls - } - - render() { - return ( - <div - className={this.isIn(this.props.currentDate) + (this.props.metas.day_types[this.props.day.wday] || !this.props.day.in_periods ? '' : ' out_from_daytypes')} - > - {this.props.value.map((p, i) => { - if(!p.deleted){ - let begin = new Date(p.period_start).getTime() - let end = new Date(p.period_end).getTime() - let d = this.props.currentDate.getTime() - - if(d >= begin && d <= end) { - if(d == begin || (this.props.currentDate.getUTCDate() == 1)) { - return ( - <PeriodManager - key={i} - index={i} - value={p} - metas={this.props.metas} - currentDate={this.props.currentDate} - onDeletePeriod={this.props.onDeletePeriod} - onOpenEditPeriodForm={this.props.onOpenEditPeriodForm} - /> - ) - } else { - return false - } - } - }else{ - return false - } - })} - </div> - ) - } -} - -PeriodsInDay.propTypes = { - value: PropTypes.array.isRequired, - currentDate: PropTypes.object.isRequired, - index: PropTypes.number.isRequired, - onDeletePeriod: PropTypes.func.isRequired -} - -module.exports = PeriodsInDay diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js b/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js deleted file mode 100644 index 779fd8e25..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js +++ /dev/null @@ -1,46 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') -var _ = require('lodash') - -class SaveTimetable extends Component{ - constructor(props){ - super(props) - } - - render() { - const error = actions.errorModalKey(this.props.timetable.time_table_periods, this.props.metas.day_types) - - return ( - <div className='row mt-md'> - <div className='col-lg-12 text-right'> - <form className='time_tables formSubmitr ml-xs' onSubmit={e => {e.preventDefault()}}> - <button - className='btn btn-default' - type='button' - onClick={e => { - e.preventDefault() - if (error) { - this.props.onShowErrorModal(error) - } else { - actions.submitTimetable(this.props.getDispatch(), this.props.timetable, this.props.metas) - } - }} - > - Valider - </button> - </form> - </div> - </div> - ) - } -} - -SaveTimetable.propTypes = { - timetable: PropTypes.object.isRequired, - status: PropTypes.object.isRequired, - metas: PropTypes.object.isRequired -} - -module.exports = SaveTimetable diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/TagsSelect2.js b/app/assets/javascripts/es6_browserified/time_tables/components/TagsSelect2.js deleted file mode 100644 index 46188cdd1..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/TagsSelect2.js +++ /dev/null @@ -1,81 +0,0 @@ -var _ = require('lodash') -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('/', 4).join('/') -var _ = require('lodash') - -class TagsSelect2 extends React.Component{ - constructor(props, context) { - super(props, context) - } - - mapKeys(array){ - return array.map((item) => - _.mapKeys(item, (v, k) => - ((k == 'name') ? 'text' : k) - ) - ) - } - - render() { - return ( - <Select2 - value={(this.props.tags.length) ? _.map(this.props.tags, 'id') : undefined} - data={(this.props.initialTags.length) ? this.mapKeys(this.props.initialTags) : undefined} - onSelect={(e) => this.props.onSelect2Tags(e)} - onUnselect={(e) => setTimeout( () => this.props.onUnselect2Tags(e, 150))} - multiple={true} - ref='tags_id' - options={{ - tags:true, - createTag: function(params) { - return {name: params.term, text: params.term, id: params.term} - }, - allowClear: true, - theme: 'bootstrap', - width: '100%', - placeholder: this.context.I18n.time_tables.edit.select2.tag.placeholder, - ajax: { - url: origin + path + '/tags.json', - dataType: 'json', - delay: '500', - data: function(params) { - return { - tag: params.term, - }; - }, - processResults: function(data, params) { - let items = _.filter(data, ({name}) => name.includes(params.term) ) - return { - results: items.map( - item => _.assign( - {}, - item, - {text: item.name} - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 1, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.name) return props.name -} - -TagsSelect2.contextTypes = { - I18n: PropTypes.object -} - -module.exports = TagsSelect2 diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/TimeTableDay.js b/app/assets/javascripts/es6_browserified/time_tables/components/TimeTableDay.js deleted file mode 100644 index 93a0a90fe..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/TimeTableDay.js +++ /dev/null @@ -1,34 +0,0 @@ -var React = require('react') -var { Component, PropTypes } = require('react') - -class TimeTableDay extends Component { - constructor(props) { - super(props) - } - - render() { - return ( - <span - className={'day' + (this.props.value.wday == 0 ? ' last_wday' : '')} - data-wday={'S' + this.props.value.wnumber} - > - <span className='dayname'> - {((this.props.value.day).charAt(0) == 'm') ? (this.props.value.day).substr(0, 2) : (this.props.value.day).charAt(0)} - </span> - <span - className={'daynumber' + (((this.props.value.in_periods && this.props.dayTypeActive && !this.props.value.excluded_date) || (this.props.value.include_date)) ? ' included' : '')} - > - {this.props.value.mday} - </span> - </span> - ) - } -} - -TimeTableDay.propTypes = { - value: PropTypes.object.isRequired, - index: PropTypes.number.isRequired, - dayTypeActive: PropTypes.bool.isRequired -} - -module.exports = TimeTableDay diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/Timetable.js b/app/assets/javascripts/es6_browserified/time_tables/components/Timetable.js deleted file mode 100644 index 22e971c6b..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/components/Timetable.js +++ /dev/null @@ -1,117 +0,0 @@ -var React = require('react') -var { Component, PropTypes} = require('react') -var TimeTableDay = require('./TimeTableDay') -var PeriodsInDay = require('./PeriodsInDay') -var ExceptionsInDay = require('./ExceptionsInDay') -var actions = require('../actions') - -class Timetable extends Component{ - constructor(props, context){ - super(props, context) - } - - currentDate(mFirstday, day) { - let currentMonth = mFirstday.split('-') - let twodigitsDay = day < 10 ? ('0' + day) : day - let currentDate = new Date(currentMonth[0] + '-' + currentMonth[1] + '-' + twodigitsDay) - - return currentDate - } - - render() { - if(this.props.status.isFetching == true) { - return ( - <div className="isLoading" style={{marginTop: 80, marginBottom: 80}}> - <div className="loader"></div> - </div> - ) - } else { - return ( - <div className="table table-2entries mb-sm"> - <div className="t2e-head w20"> - <div className="th"> - <div className="strong">{this.context.I18n.time_tables.synthesis}</div> - </div> - <div className="td"><span>{this.context.I18n.time_tables.edit.day_types}</span></div> - <div className="td"><span>{this.context.I18n.time_tables.edit.periods}</span></div> - <div className="td"><span>{this.context.I18n.time_tables.edit.exceptions}</span></div> - </div> - <div className="t2e-item-list w80"> - <div> - <div className="t2e-item"> - <div className="th"> - <div className="strong monthName"> - {actions.monthName(this.props.timetable.current_periode_range)} - </div> - - <div className='monthDays'> - {this.props.timetable.current_month.map((d, i) => - <TimeTableDay - key={i} - index={i} - value={d} - dayTypeActive={this.props.metas.day_types[d.wday]} - /> - )} - </div> - </div> - - {this.props.timetable.current_month.map((d, i) => - <div - key={i} - className={'td-group'+ (d.wday == 0 ? ' last_wday' : '')} - > - {/* day_types */} - <div className={"td" + (this.props.metas.day_types[d.wday] || !d.in_periods ? '' : ' out_from_daytypes') }></div> - - {/* periods */} - <PeriodsInDay - day={d} - index={i} - value={this.props.timetable.time_table_periods} - currentDate={this.currentDate(this.props.timetable.current_periode_range, d.mday)} - onDeletePeriod={this.props.onDeletePeriod} - onOpenEditPeriodForm={this.props.onOpenEditPeriodForm} - metas={this.props.metas} - /> - - {/* exceptions */} - <ExceptionsInDay - day={d} - index={i} - value={this.props.timetable} - currentDate={d.date} - metas={this.props.metas} - blueDaytype={this.props.metas.day_types[d.wday]} - onAddIncludedDate={this.props.onAddIncludedDate} - onRemoveIncludedDate={this.props.onRemoveIncludedDate} - onAddExcludedDate={this.props.onAddExcludedDate} - onRemoveExcludedDate={this.props.onRemoveExcludedDate} - onExcludeDateFromPeriod={this.props.onExcludeDateFromPeriod} - onIncludeDateInPeriod={this.props.onIncludeDateInPeriod} - /> - </div> - )} - </div> - </div> - </div> - </div> - ) - } - } -} - -Timetable.propTypes = { - metas: PropTypes.object.isRequired, - timetable: PropTypes.object.isRequired, - status: PropTypes.object.isRequired, - onDeletePeriod: PropTypes.func.isRequired, - onExcludeDateFromPeriod: PropTypes.func.isRequired, - onIncludeDateInPeriod: PropTypes.func.isRequired -} - -Timetable.contextTypes = { - I18n: PropTypes.object -} - -module.exports = Timetable diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/App.js b/app/assets/javascripts/es6_browserified/time_tables/containers/App.js deleted file mode 100644 index 772747104..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/App.js +++ /dev/null @@ -1,55 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var { Component, PropTypes} = require('react') -var actions = require('../actions') -var Metas = require('./Metas') -var Timetable = require('./Timetable') -var Navigate = require('./Navigate') -var PeriodForm = require('./PeriodForm') -var SaveTimetable = require('./SaveTimetable') -var ConfirmModal = require('./ConfirmModal') -var ErrorModal = require('./ErrorModal') -const { I18n } = window - -class App extends Component { - componentDidMount(){ - this.props.onLoadFirstPage() - } - - getChildContext() { - return { I18n } - } - - render(){ - return( - <div className='row'> - <div className="col-lg-8 col-lg-offset-2 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1"> - <Metas /> - <Navigate /> - <Timetable /> - <PeriodForm /> - <SaveTimetable /> - <ConfirmModal /> - <ErrorModal /> - </div> - </div> - ) - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onLoadFirstPage: () =>{ - dispatch(actions.fetchingApi()) - actions.fetchTimeTables(dispatch) - } - } -} - -App.childContextTypes = { - I18n: PropTypes.object -} - -const timeTableApp = connect(null, mapDispatchToProps)(App) - -module.exports = timeTableApp diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/ConfirmModal.js b/app/assets/javascripts/es6_browserified/time_tables/containers/ConfirmModal.js deleted file mode 100644 index 6282c1d1d..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/ConfirmModal.js +++ /dev/null @@ -1,31 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var ConfirmModal = require('../components/ConfirmModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - timetable: state.timetable, - metas: state.metas - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalAccept: (next, timetable, metas) =>{ - dispatch(actions.fetchingApi()) - actions.submitTimetable(dispatch, timetable, metas, next) - }, - onModalCancel: (next) =>{ - dispatch(actions.fetchingApi()) - dispatch(next) - }, - onModalClose: () =>{ - dispatch(actions.closeModal()) - } - } -} - -const ConfirmModalContainer = connect(mapStateToProps, mapDispatchToProps)(ConfirmModal) - -module.exports = ConfirmModalContainer diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js deleted file mode 100644 index e0b2c1240..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js +++ /dev/null @@ -1,22 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var ErrorModal = require('../components/ErrorModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - dispatch(actions.resetModalErrors()) - } - } -} - -const ErrorModalContainer = connect(mapStateToProps, mapDispatchToProps)(ErrorModal) - -module.exports = ErrorModalContainer diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/Metas.js b/app/assets/javascripts/es6_browserified/time_tables/containers/Metas.js deleted file mode 100644 index c4ab2d5b3..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/Metas.js +++ /dev/null @@ -1,38 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var MetasComponent = require('../components/Metas') - -const mapStateToProps = (state) => { - return { - metas: state.metas - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onUpdateDayTypes: (index, dayTypes) => { - let newDayTypes = dayTypes.slice(0) - newDayTypes[index] = !newDayTypes[index] - dispatch(actions.updateDayTypes(newDayTypes)) - dispatch(actions.updateCurrentMonthFromDaytypes(newDayTypes)) - }, - onUpdateComment: (comment) => { - dispatch(actions.updateComment(comment)) - }, - onUpdateColor: (color) => { - dispatch(actions.updateColor(color)) - }, - onSelect2Tags: (e) => { - e.preventDefault() - dispatch(actions.select2Tags(e.params.data)) - }, - onUnselect2Tags: (e) => { - e.preventDefault() - dispatch(actions.unselect2Tags(e.params.data)) - } - } -} - -const Metas = connect(mapStateToProps, mapDispatchToProps)(MetasComponent) - -module.exports = Metas diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/Navigate.js b/app/assets/javascripts/es6_browserified/time_tables/containers/Navigate.js deleted file mode 100644 index c70583c25..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/Navigate.js +++ /dev/null @@ -1,18 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var NavigateComponent = require('../components/Navigate') - -const mapStateToProps = (state) => { - return { - metas: state.metas, - timetable: state.timetable, - status: state.status, - pagination: state.pagination - } -} - - -const Navigate = connect(mapStateToProps)(NavigateComponent) - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js b/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js deleted file mode 100644 index 951a09741..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js +++ /dev/null @@ -1,44 +0,0 @@ -var connect = require('react-redux').connect -var PeriodFormComponent = require('../components/PeriodForm') -var actions = require('../actions') -var _ = require('lodash') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - timetable: state.timetable, - metas: state.metas, - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onOpenAddPeriodForm: () => { - dispatch(actions.openAddPeriodForm()) - }, - onClosePeriodForm: () => { - dispatch(actions.closePeriodForm()) - }, - onUpdatePeriodForm: (e, group, selectType, modalProps) => { - dispatch(actions.updatePeriodForm(e.currentTarget.value, group, selectType)) - let mProps = _.assign({}, modalProps) - mProps[group][selectType] = e.currentTarget.value - let val = window.correctDay([parseInt(mProps[group]['day']), parseInt(mProps[group]['month']), parseInt(mProps[group]['year'])]) - val = (val < 10) ? '0' + String(val) : String(val) - dispatch(actions.updatePeriodForm(val, group, 'day')) - }, - onValidatePeriodForm: (modalProps, timeTablePeriods, metas, timetableInDates) => { - let period_start = actions.formatDate(modalProps.begin) - let period_end = actions.formatDate(modalProps.end) - let error = '' - if (new Date(period_end) <= new Date(period_start)) error = 'La date de dĂ©part doit ĂȘtre antĂ©rieure Ă la date de fin' - if (error == '') error = actions.checkErrorsInPeriods(period_start, period_end, modalProps.index, timeTablePeriods) - if (error == '') error = actions.checkErrorsInDates(period_start, period_end, timetableInDates) - dispatch(actions.validatePeriodForm(modalProps, timeTablePeriods, metas, timetableInDates, error)) - } - } -} - -const PeriodForm = connect(mapStateToProps, mapDispatchToProps)(PeriodFormComponent) - -module.exports = PeriodForm diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js b/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js deleted file mode 100644 index 6287da15b..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js +++ /dev/null @@ -1,26 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var SaveTimetableComponent = require('../components/SaveTimetable') - -const mapStateToProps = (state) => { - return { - timetable: state.timetable, - metas: state.metas, - status: state.status - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onShowErrorModal: (errorKey) => { - dispatch(actions.showErrorModal(errorKey)) - }, - getDispatch: () => { - return dispatch - } - } -} -const SaveTimetable = connect(mapStateToProps, mapDispatchToProps)(SaveTimetableComponent) - -module.exports = SaveTimetable diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/Timetable.js b/app/assets/javascripts/es6_browserified/time_tables/containers/Timetable.js deleted file mode 100644 index a37e99982..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/Timetable.js +++ /dev/null @@ -1,44 +0,0 @@ -var connect = require('react-redux').connect -var TimetableComponent = require('../components/Timetable') -var actions = require('../actions') - -const mapStateToProps = (state) => { - return { - metas: state.metas, - timetable: state.timetable, - status: state.status - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onDeletePeriod: (index, dayTypes) =>{ - dispatch(actions.deletePeriod(index, dayTypes)) - }, - onAddIncludedDate: (index, dayTypes, date) => { - dispatch(actions.addIncludedDate(index, dayTypes, date)) - }, - onRemoveIncludedDate: (index, dayTypes, date) => { - dispatch(actions.removeIncludedDate(index, dayTypes, date)) - }, - onAddExcludedDate: (index, dayTypes, date) => { - dispatch(actions.addExcludedDate(index, dayTypes, date)) - }, - onRemoveExcludedDate: (index, dayTypes, date) => { - dispatch(actions.removeExcludedDate(index, dayTypes, date)) - }, - onExcludeDateFromPeriod: (index, dayTypes, date) => { - dispatch(actions.excludeDateFromPeriod(index, dayTypes, date)) - }, - onIncludeDateInPeriod: (index, dayTypes, date) => { - dispatch(actions.includeDateInPeriod(index, dayTypes, date)) - }, - onOpenEditPeriodForm: (period, index) => { - dispatch(actions.openEditPeriodForm(period, index)) - } - } -} - -const Timetable = connect(mapStateToProps, mapDispatchToProps)(TimetableComponent) - -module.exports = Timetable diff --git a/app/assets/javascripts/es6_browserified/time_tables/index.js b/app/assets/javascripts/es6_browserified/time_tables/index.js deleted file mode 100644 index a91747991..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/index.js +++ /dev/null @@ -1,74 +0,0 @@ -var React = require('react') -var render = require('react-dom').render -var Provider = require('react-redux').Provider -var createStore = require('redux').createStore -var timeTablesApp = require('./reducers') -var App = require('./containers/App') - -// 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') - -var initialState = { - status: { - actionType: window.actionType, - policy: window.perms, - fetchSuccess: true, - isFetching: false - }, - timetable: { - current_month: [], - current_periode_range: '', - periode_range: [], - time_table_periods: [], - time_table_dates: [] - }, - metas: { - comment: '', - day_types: [], - tags: [], - initial_tags: [], - color: '', - calendar: null - }, - pagination: { - stateChanged: false, - currentPage: '', - periode_range: [] - }, - modal: { - type: '', - modalProps: { - active: false, - begin: { - day: '01', - month: '01', - year: String(new Date().getFullYear()) - }, - end: { - day: '01', - month: '01', - year: String(new Date().getFullYear()) - }, - index: false, - error: '' - }, - confirmModal: {} - } -} -// const loggerMiddleware = createLogger() - -let store = createStore( - timeTablesApp, - initialState, - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) -) - -render( - <Provider store={store}> - <App /> - </Provider>, - document.getElementById('periods') -) diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/index.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/index.js deleted file mode 100644 index 5b05aadda..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/index.js +++ /dev/null @@ -1,16 +0,0 @@ -var combineReducers = require('redux').combineReducers -var status = require('./status') -var pagination = require('./pagination') -var modal = require('./modal') -var timetable = require('./timetable') -var metas = require('./metas') - -const timeTablesApp = combineReducers({ - timetable, - metas, - status, - pagination, - modal -}) - -module.exports = timeTablesApp diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/metas.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/metas.js deleted file mode 100644 index ab5ed3d91..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/metas.js +++ /dev/null @@ -1,42 +0,0 @@ -const _ = require('lodash') -const actions = require('../actions') - -const metas = (state = {}, action) => { - switch (action.type) { - case 'RECEIVE_TIME_TABLES': - return _.assign({}, state, { - comment: action.json.comment, - day_types: actions.strToArrayDayTypes(action.json.day_types), - tags: action.json.tags, - initial_tags: action.json.tags, - color: action.json.color, - calendar: action.json.calendar ? action.json.calendar : null - }) - case 'RECEIVE_MONTH': - let dt = (typeof state.day_types === 'string') ? actions.strToArrayDayTypes(state.day_types) : state.day_types - return _.assign({}, state, {day_types: dt}) - case 'ADD_INCLUDED_DATE': - case 'REMOVE_INCLUDED_DATE': - case 'ADD_EXCLUDED_DATE': - case 'REMOVE_EXCLUDED_DATE': - case 'DELETE_PERIOD': - case 'VALIDATE_PERIOD_FORM': - return _.assign({}, state, {calendar: null}) - case 'UPDATE_DAY_TYPES': - return _.assign({}, state, {day_types: action.dayTypes, calendar : null}) - case 'UPDATE_COMMENT': - return _.assign({}, state, {comment: action.comment}) - case 'UPDATE_COLOR': - return _.assign({}, state, {color: action.color}) - case 'UPDATE_SELECT_TAG': - let tags = [...state.tags] - tags.push(action.selectedItem) - return _.assign({}, state, {tags: tags}) - case 'UPDATE_UNSELECT_TAG': - return _.assign({}, state, {tags: _.filter(state.tags, (t) => (t.id != action.selectedItem.id))}) - default: - return state - } -} - -module.exports = metas diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js deleted file mode 100644 index c61296f1c..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js +++ /dev/null @@ -1,66 +0,0 @@ -var _ = require('lodash') -var actions = require('../actions') - -let newModalProps = {} -let emptyDate = { - day: '01', - month: '01', - year: String(new Date().getFullYear()) -} -let period_start = '', period_end = '' - -const modal = (state = {}, action) => { - switch (action.type) { - case 'OPEN_CONFIRM_MODAL': - $('#ConfirmModal').modal('show') - return _.assign({}, state, { - type: 'confirm', - confirmModal: { - callback: action.callback, - } - }) - case 'OPEN_ERROR_MODAL': - $('#ErrorModal').modal('show') - newModalProps = _.assign({}, state.modalProps, {error: action.error}) - return _.assign({}, state, {type: 'error'}, {modalProps: newModalProps}) - case 'RESET_MODAL_ERRORS': - newModalProps = _.assign({}, state.modalProps, {error: ''}) - return _.assign({}, state, {type: ''}, {modalProps: newModalProps}) - case 'CLOSE_PERIOD_FORM': - newModalProps = _.assign({}, state.modalProps, {active: false, error: ""}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'OPEN_EDIT_PERIOD_FORM': - period_start = action.period.period_start.split('-') - period_end = action.period.period_end.split('-') - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - - newModalProps.begin.year = period_start[0] - newModalProps.begin.month = period_start[1] - newModalProps.begin.day = period_start[2] - - newModalProps.end.year = period_end[0] - newModalProps.end.month = period_end[1] - newModalProps.end.day = period_end[2] - - newModalProps.active = true - newModalProps.index = action.index - newModalProps.error = '' - return _.assign({}, state, {modalProps: newModalProps}) - case 'OPEN_ADD_PERIOD_FORM': - newModalProps = _.assign({}, state.modalProps, {active: true, begin: emptyDate, end: emptyDate, index: false, error: ''}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'UPDATE_PERIOD_FORM': - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - newModalProps[action.group][action.selectType] = action.val - return _.assign({}, state, {modalProps: newModalProps}) - case 'VALIDATE_PERIOD_FORM': - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - newModalProps.error = action.error - newModalProps.active = (newModalProps.error == '') ? false : true - return _.assign({}, state, {modalProps: newModalProps}) - default: - return state - } -} - -module.exports = modal diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/pagination.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/pagination.js deleted file mode 100644 index f38b124d9..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/pagination.js +++ /dev/null @@ -1,46 +0,0 @@ -var _ = require('lodash') - -const pagination = (state = {}, action) => { - switch (action.type) { - case 'RECEIVE_TIME_TABLES': - return _.assign({}, state, { - currentPage: action.json.current_periode_range, - periode_range: action.json.periode_range, - stateChanged: false - }) - case 'RECEIVE_MONTH': - case 'RECEIVE_ERRORS': - return _.assign({}, state, {stateChanged: false}) - case 'GO_TO_PREVIOUS_PAGE': - case 'GO_TO_NEXT_PAGE': - let nextPage = action.nextPage ? 1 : -1 - let newPage = action.pagination.periode_range[action.pagination.periode_range.indexOf(action.pagination.currentPage) + nextPage] - toggleOnConfirmModal() - return _.assign({}, state, {currentPage : newPage, stateChanged: false}) - case 'CHANGE_PAGE': - toggleOnConfirmModal() - return _.assign({}, state, {currentPage : action.page, stateChanged: false}) - case 'ADD_INCLUDED_DATE': - case 'REMOVE_INCLUDED_DATE': - case 'ADD_EXCLUDED_DATE': - case 'REMOVE_EXCLUDED_DATE': - case 'DELETE_PERIOD': - case 'VALIDATE_PERIOD_FORM': - case 'UPDATE_COMMENT': - case 'UPDATE_COLOR': - case 'UPDATE_DAY_TYPES': - case 'UPDATE_CURRENT_MONTH_FROM_DAYTYPES': - toggleOnConfirmModal('modal') - return _.assign({}, state, {stateChanged: true}) - default: - return state - } -} - -const toggleOnConfirmModal = (arg = '') =>{ - $('.confirm').each(function(){ - $(this).data('toggle','') - }) -} - -module.exports = pagination diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/status.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/status.js deleted file mode 100644 index fc205d0ae..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/status.js +++ /dev/null @@ -1,17 +0,0 @@ -var _ = require('lodash') - -const status = (state = {}, action) => { - switch (action.type) { - case 'UNAVAILABLE_SERVER': - return _.assign({}, state, {fetchSuccess: false}) - case 'FETCH_API': - return _.assign({}, state, {isFetching: true}) - case 'RECEIVE_TIME_TABLES': - case 'RECEIVE_MONTH': - return _.assign({}, state, {fetchSuccess: true, isFetching: false}) - default: - return state - } -} - -module.exports = status diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js deleted file mode 100644 index 712808abd..000000000 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js +++ /dev/null @@ -1,119 +0,0 @@ -const _ = require('lodash') -var actions = require('../actions') -let newState, newPeriods, newDates, newCM - -const timetable = (state = {}, action) => { - switch (action.type) { - case 'RECEIVE_TIME_TABLES': - let fetchedState = _.assign({}, state, { - current_month: action.json.current_month, - current_periode_range: action.json.current_periode_range, - periode_range: action.json.periode_range, - time_table_periods: action.json.time_table_periods, - time_table_dates: _.sortBy(action.json.time_table_dates, ['date']) - }) - return _.assign({}, fetchedState, {current_month: actions.updateSynthesis(fetchedState)}) - case 'RECEIVE_MONTH': - newState = _.assign({}, state, { - current_month: action.json.days - }) - return _.assign({}, newState, {current_month: actions.updateSynthesis(newState)}) - case 'GO_TO_PREVIOUS_PAGE': - case 'GO_TO_NEXT_PAGE': - let nextPage = action.nextPage ? 1 : -1 - let newPage = action.pagination.periode_range[action.pagination.periode_range.indexOf(action.pagination.currentPage) + nextPage] - $('#ConfirmModal').modal('hide') - actions.fetchTimeTables(action.dispatch, newPage) - return _.assign({}, state, {current_periode_range: newPage}) - case 'CHANGE_PAGE': - $('#ConfirmModal').modal('hide') - actions.fetchTimeTables(action.dispatch, action.page) - return _.assign({}, state, {current_periode_range: action.page}) - case 'DELETE_PERIOD': - newPeriods = state.time_table_periods.map((period, i) =>{ - if(i == action.index){ - period.deleted = true - } - return period - }) - let deletedPeriod = Array.of(state.time_table_periods[action.index]) - newDates = _.reject(state.time_table_dates, d => actions.isInPeriod(deletedPeriod, d.date) && !d.in_out) - newState = _.assign({}, state, {time_table_periods : newPeriods, time_table_dates: newDates}) - return _.assign({}, newState, { current_month: actions.updateSynthesis(newState)}) - case 'ADD_INCLUDED_DATE': - newDates = state.time_table_dates.concat({date: action.date, in_out: true}) - newCM = state.current_month.map((d, i) => { - if (i == action.index) d.include_date = true - return d - }) - return _.assign({}, state, {current_month: newCM, time_table_dates: newDates}) - case 'REMOVE_INCLUDED_DATE': - newDates = _.reject(state.time_table_dates, ['date', action.date]) - newCM = state.current_month.map((d, i) => { - if (i == action.index) d.include_date = false - return d - }) - return _.assign({}, state, {current_month: newCM, time_table_dates: newDates}) - case 'ADD_EXCLUDED_DATE': - newDates = state.time_table_dates.concat({date: action.date, in_out: false}) - newCM = state.current_month.map((d, i) => { - if (i == action.index) d.excluded_date = true - return d - }) - return _.assign({}, state, {current_month: newCM, time_table_dates: newDates}) - case 'REMOVE_EXCLUDED_DATE': - newDates = _.reject(state.time_table_dates, ['date', action.date]) - newCM = state.current_month.map((d, i) => { - if (i == action.index) d.excluded_date = false - return d - }) - return _.assign({}, state, {current_month: newCM, time_table_dates: newDates}) - case 'UPDATE_DAY_TYPES': - // We get the week days of the activated day types to reject the out_dates that that are out of newDayTypes - let weekDays = _.reduce(action.dayTypes, (array, dt, i) => { - if (dt) array.push(i) - return array - }, []) - - newDates = _.reject(state.time_table_dates, (d) => { - let weekDay = new Date(d.date).getDay() - - if (d.in_out) { - return actions.isInPeriod(state.time_table_periods, d.date) && weekDays.includes(weekDay) - } else { - return !weekDays.includes(weekDay) - } - }) - return _.assign({}, state, {time_table_dates: newDates}) - case 'UPDATE_CURRENT_MONTH_FROM_DAYTYPES': - return _.assign({}, state, {current_month: actions.updateSynthesis(state)}) - case 'VALIDATE_PERIOD_FORM': - if (action.error != '') return state - - let period_start = actions.formatDate(action.modalProps.begin) - let period_end = actions.formatDate(action.modalProps.end) - - let newPeriods = JSON.parse(JSON.stringify(action.timeTablePeriods)) - - if (action.modalProps.index !== false){ - let updatedPeriod = newPeriods[action.modalProps.index] - updatedPeriod.period_start = period_start - updatedPeriod.period_end = period_end - newDates = _.reject(state.time_table_dates, d => actions.isInPeriod(newPeriods, d.date) && !d.in_out) - }else{ - let newPeriod = { - period_start: period_start, - period_end: period_end - } - newPeriods.push(newPeriod) - } - - newDates = newDates || state.time_table_dates - newState =_.assign({}, state, {time_table_periods: newPeriods, time_table_dates: newDates}) - return _.assign({}, newState, {current_month: actions.updateSynthesis(newState)}) - default: - return state - } -} - -module.exports = timetable diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js deleted file mode 100644 index 2e2e06514..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ /dev/null @@ -1,463 +0,0 @@ -var Promise = require('promise-polyfill') - -// To add to window -if (!window.Promise) { - window.Promise = Promise; -} -var batchActions = require('../batch').batchActions - -const actions = { - enterEditMode: () => ({ - type: "ENTER_EDIT_MODE" - }), - exitEditMode: () => ({ - type: "EXIT_EDIT_MODE" - }), - receiveVehicleJourneys : (json) => ({ - type: "RECEIVE_VEHICLE_JOURNEYS", - json - }), - receiveErrors : (json) => ({ - type: "RECEIVE_ERRORS", - json - }), - fetchingApi: () =>({ - type: 'FETCH_API' - }), - unavailableServer : () => ({ - type: 'UNAVAILABLE_SERVER' - }), - goToPreviousPage : (dispatch, pagination, queryString) => ({ - type: 'GO_TO_PREVIOUS_PAGE', - dispatch, - pagination, - nextPage : false, - queryString - }), - goToNextPage : (dispatch, pagination, queryString) => ({ - type: 'GO_TO_NEXT_PAGE', - dispatch, - pagination, - nextPage : true, - queryString - }), - checkConfirmModal : (event, callback, stateChanged, dispatch) => { - if(stateChanged === true){ - return actions.openConfirmModal(callback) - }else{ - dispatch(actions.fetchingApi()) - return callback - } - }, - openCreateModal : () => ({ - type : 'CREATE_VEHICLEJOURNEY_MODAL' - }), - selectJPCreateModal : (selectedJP) => ({ - type : 'SELECT_JP_CREATE_MODAL', - selectedItem: { - id: selectedJP.id, - objectid: selectedJP.object_id, - name: selectedJP.name, - published_name: selectedJP.published_name, - stop_areas: selectedJP.stop_area_short_descriptions - } - }), - openEditModal : (vehicleJourney) => ({ - type : 'EDIT_VEHICLEJOURNEY_MODAL', - vehicleJourney - }), - openNotesEditModal : (vehicleJourney) => ({ - type : 'EDIT_NOTES_VEHICLEJOURNEY_MODAL', - vehicleJourney - }), - toggleFootnoteModal : (footnote, isShown) => ({ - type: 'TOGGLE_FOOTNOTE_MODAL', - footnote, - isShown - }), - openCalendarsEditModal : (vehicleJourneys) => ({ - type : 'EDIT_CALENDARS_VEHICLEJOURNEY_MODAL', - vehicleJourneys - }), - selectTTCalendarsModal: (selectedTT) =>({ - type: 'SELECT_TT_CALENDAR_MODAL', - selectedItem:{ - id: selectedTT.id, - comment: selectedTT.comment, - objectid: selectedTT.objectid - } - }), - addSelectedTimetable: () => ({ - type: 'ADD_SELECTED_TIMETABLE' - }), - deleteCalendarModal : (timetable) => ({ - type : 'DELETE_CALENDAR_MODAL', - timetable - }), - editVehicleJourneyTimetables : (vehicleJourneys, timetables) => ({ - type: 'EDIT_VEHICLEJOURNEYS_TIMETABLES', - vehicleJourneys, - timetables - }), - openShiftModal : () => ({ - type : 'SHIFT_VEHICLEJOURNEY_MODAL' - }), - openDuplicateModal : () => ({ - type : 'DUPLICATE_VEHICLEJOURNEY_MODAL' - }), - selectVehicleJourney : (index) => ({ - type : 'SELECT_VEHICLEJOURNEY', - index - }), - cancelSelection : () => ({ - type: 'CANCEL_SELECTION' - }), - addVehicleJourney : (data, selectedJourneyPattern, stopPointsList, selectedCompany) => ({ - type: 'ADD_VEHICLEJOURNEY', - data, - selectedJourneyPattern, - stopPointsList, - selectedCompany - }), - select2Company: (selectedCompany) => ({ - type: 'SELECT_CP_EDIT_MODAL', - selectedItem: { - id: selectedCompany.id, - name: selectedCompany.name, - objectid: selectedCompany.objectid - } - }), - unselect2Company: () => ({ - type: 'UNSELECT_CP_EDIT_MODAL', - }), - editVehicleJourney : (data, selectedCompany) => ({ - type: 'EDIT_VEHICLEJOURNEY', - data, - selectedCompany - }), - editVehicleJourneyNotes : (footnotes) => ({ - type: 'EDIT_VEHICLEJOURNEY_NOTES', - footnotes - }), - shiftVehicleJourney : (addtionalTime) => ({ - type: 'SHIFT_VEHICLEJOURNEY', - addtionalTime - }), - duplicateVehicleJourney : (addtionalTime, duplicateNumber, departureDelta) => ({ - type: 'DUPLICATE_VEHICLEJOURNEY', - addtionalTime, - duplicateNumber, - departureDelta - }), - deleteVehicleJourneys : () => ({ - type: 'DELETE_VEHICLEJOURNEYS' - }), - openConfirmModal : (callback) => ({ - type : 'OPEN_CONFIRM_MODAL', - callback - }), - closeModal : () => ({ - type : 'CLOSE_MODAL' - }), - resetValidation: (target) => { - $(target).parent().removeClass('has-error').children('.help-block').remove() - }, - validateFields : (fields) => { - const test = [] - - Object.keys(fields).map(function(key) { - test.push(fields[key].validity.valid) - }) - if(test.indexOf(false) >= 0) { - // Form is invalid - test.map(function(item, i) { - if(item == false) { - const k = Object.keys(fields)[i] - $(fields[k]).parent().addClass('has-error').children('.help-block').remove() - $(fields[k]).parent().append("<span class='small help-block'>" + fields[k].validationMessage + "</span>") - } - }) - return false - } else { - // Form is valid - return true - } - }, - toggleArrivals : () => ({ - type: 'TOGGLE_ARRIVALS', - }), - updateTime : (val, subIndex, index, timeUnit, isDeparture, isArrivalsToggled) => ({ - type: 'UPDATE_TIME', - val, - subIndex, - index, - timeUnit, - isDeparture, - isArrivalsToggled - }), - resetStateFilters: () => ({ - type: 'RESET_FILTERS' - }), - toggleWithoutSchedule: () => ({ - type: 'TOGGLE_WITHOUT_SCHEDULE' - }), - toggleWithoutTimeTable: () => ({ - type: 'TOGGLE_WITHOUT_TIMETABLE' - }), - updateStartTimeFilter: (val, unit) => ({ - type: 'UPDATE_START_TIME_FILTER', - val, - unit - }), - updateEndTimeFilter: (val, unit) => ({ - type: 'UPDATE_END_TIME_FILTER', - val, - unit - }), - filterSelect2Timetable: (selectedTT) =>({ - type: 'SELECT_TT_FILTER', - selectedItem:{ - id: selectedTT.id, - comment: selectedTT.comment, - objectid: selectedTT.objectid - } - }), - filterSelect2JourneyPattern: (selectedJP) => ({ - type : 'SELECT_JP_FILTER', - selectedItem: { - id: selectedJP.id, - objectid: selectedJP.object_id, - name: selectedJP.name, - published_name: selectedJP.published_name - } - }), - filterSelect2VehicleJourney: (selectedVJ) => ({ - type : 'SELECT_VJ_FILTER', - selectedItem: { - objectid: selectedVJ.objectid - } - }), - createQueryString: () => ({ - type: 'CREATE_QUERY_STRING' - }), - resetPagination: () => ({ - type: 'RESET_PAGINATION' - }), - queryFilterVehicleJourneys: (dispatch) => ({ - type: 'QUERY_FILTER_VEHICLEJOURNEYS', - dispatch - }), - resetFilters: (dispatch) => ( - batchActions([ - actions.resetStateFilters(), - actions.resetPagination(), - actions.queryFilterVehicleJourneys(dispatch) - ]) - ), - filterQuery: (dispatch) => ( - batchActions([ - actions.createQueryString(), - actions.resetPagination(), - actions.queryFilterVehicleJourneys(dispatch) - ]) - ), - updateTotalCount: (diff) => ({ - type: 'UPDATE_TOTAL_COUNT', - diff - }), - receiveTotalCount: (total) => ({ - type: 'RECEIVE_TOTAL_COUNT', - total - }), - humanOID: (oid) => oid.split(':')[2].split("-").pop(), - fetchVehicleJourneys : (dispatch, currentPage, nextPage, queryString) => { - if(currentPage == undefined){ - currentPage = 1 - } - let vehicleJourneys = [] - 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" - let sep = '?' - if(page > 1){ - str = '.json?page=' + page.toString() - sep = '&' - } - let urlJSON = window.location.pathname + str - if (queryString){ - urlJSON = urlJSON + sep + queryString - } - let hasError = false - fetch(urlJSON, { - credentials: 'same-origin', - }).then(response => { - if(response.status == 500) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.unavailableServer()) - } else { - let val - for (val of json.vehicle_journeys){ - var timeTables = [] - let tt - for (tt of val.time_tables){ - timeTables.push({ - objectid: tt.objectid, - comment: tt.comment, - id: tt.id, - color: tt.color - }) - } - let vjasWithDelta = val.vehicle_journey_at_stops.map((vjas, i) => { - actions.fillEmptyFields(vjas) - return actions.getDelta(vjas) - }) - vehicleJourneys.push({ - journey_pattern: val.journey_pattern, - published_journey_name: val.published_journey_name, - objectid: val.objectid, - footnotes: val.footnotes, - time_tables: timeTables, - vehicle_journey_at_stops: vjasWithDelta, - deletable: false, - selected: false, - published_journey_name: val.published_journey_name || 'non renseignĂ©', - published_journey_identifier: val.published_journey_identifier || 'non renseignĂ©', - company: val.company || 'non renseignĂ©', - transport_mode: val.route.line.transport_mode || 'undefined', - transport_submode: val.route.line.transport_submode || 'undefined' - }) - } - window.currentItemsLength = vehicleJourneys.length - dispatch(actions.receiveVehicleJourneys(vehicleJourneys)) - dispatch(actions.receiveTotalCount(json.total)) - } - }) - }, - submitVehicleJourneys : (dispatch, state, next) => { - dispatch(actions.fetchingApi()) - let urlJSON = window.location.pathname + "_collection.json" - let hasError = false - fetch(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') - } - }).then(response => { - if(!response.ok) { - hasError = true - } - return response.json() - }).then((json) => { - if(hasError == true) { - dispatch(actions.receiveErrors(json)) - } else { - if(next) { - dispatch(next) - } else { - if(json.length != window.currentItemsLength){ - dispatch(actions.updateTotalCount(window.currentItemsLength - json.length)) - } - window.currentItemsLength = json.length - dispatch(actions.exitEditMode()) - dispatch(actions.receiveVehicleJourneys(json)) - } - } - }) - }, - // VJAS HELPERS - getSelected: (vj) => { - return vj.filter((obj) =>{ - return obj.selected - }) - }, - simplePad: (d) => { - if(d.toString().length == 1){ - return '0' + d.toString() - }else{ - return d.toString() - } - }, - pad: (d, timeUnit) => { - let val = d.toString() - if(d.toString().length == 1){ - val = (d < 10) ? '0' + d.toString() : d.toString(); - } - if(val.length > 2){ - val = val.substr(1) - } - if(timeUnit == 'minute' && parseInt(val) > 59){ - val = '59' - } - if(timeUnit == 'hour' && parseInt(val) > 23){ - val = '23' - } - return val - }, - encodeParams: (params) => { - let esc = encodeURIComponent - let queryString = Object.keys(params).map((k) => esc(k) + '=' + esc(params[k])).join('&') - return queryString - }, - fillEmptyFields: (vjas) => { - if (vjas.departure_time.hour == null) vjas.departure_time.hour = '00' - if (vjas.departure_time.minute == null) vjas.departure_time.minute = '00' - if (vjas.arrival_time.hour == null) vjas.arrival_time.hour = '00' - if (vjas.arrival_time.minute == null) vjas.arrival_time.minute = '00' - return vjas - }, - getDuplicateDelta: (original, newDeparture) => { - if (original.departure_time.hour != '' && original.departure_time.minute != '' && newDeparture.departure_time.hour != undefined && newDeparture.departure_time.minute != undefined){ - return (newDeparture.departure_time.hour - parseInt(original.departure_time.hour)) * 60 + (newDeparture.departure_time.minute - parseInt(original.departure_time.minute)) - } - return 0 - }, - getDelta: (vjas) => { - let delta = 0 - if (vjas.departure_time.hour != '' && vjas.departure_time.minute != '' && vjas.arrival_time.hour != '' && vjas.departure_time.minute != ''){ - delta = (parseInt(vjas.departure_time.hour) - parseInt(vjas.arrival_time.hour)) * 60 + (parseInt(vjas.departure_time.minute) - parseInt(vjas.arrival_time.minute)) - } - vjas.delta = delta - return vjas - }, - getShiftedSchedule: ({departure_time, arrival_time}, additional_time) => { - // We create dummy dates objects to manipulate time more easily - let departureDT = new Date (Date.UTC(2017, 2, 1, parseInt(departure_time.hour), parseInt(departure_time.minute))) - let arrivalDT = new Date (Date.UTC(2017, 2, 1, parseInt(arrival_time.hour), parseInt(arrival_time.minute))) - - let newDepartureDT = new Date (departureDT.getTime() + additional_time * 60000) - let newArrivalDT = new Date (arrivalDT.getTime() + additional_time * 60000) - - return { - departure_time: { - hour: actions.simplePad(newDepartureDT.getUTCHours()), - minute: actions.simplePad(newDepartureDT.getUTCMinutes()) - }, - arrival_time: { - hour: actions.simplePad(newArrivalDT.getUTCHours()), - minute: actions.simplePad(newArrivalDT.getUTCMinutes()) - } - } - }, -} - -module.exports = actions diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/batch.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/batch.js deleted file mode 100644 index 284d7b268..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/batch.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.batchActions = batchActions; -exports.enableBatching = enableBatching; -var BATCH = exports.BATCH = 'BATCH'; - -function batchActions(actions) { - return { - type: BATCH, - payload: actions - }; -} - -function enableBatching(reduce) { - return function batchingReducer(state, action) { - switch (action.type) { - case BATCH: - return action.payload.reduce(batchingReducer, state); - default: - return reduce(state, action); - } - }; -} diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js deleted file mode 100644 index d5f419747..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js +++ /dev/null @@ -1,38 +0,0 @@ -var React = require('react') -var VehicleJourneysList = require('../containers/VehicleJourneysList') -var Navigate = require('../containers/Navigate') -var ToggleArrivals = require('../containers/ToggleArrivals') -var Filters = require('../containers/Filters') -var SaveVehicleJourneys = require('../containers/SaveVehicleJourneys') -var ConfirmModal = require('../containers/ConfirmModal') -var Tools = require('../containers/Tools') - -const App = () => ( - <div> - - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <ToggleArrivals /> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6 text-right'> - <Navigate /> - </div> - </div> - - <Filters /> - <VehicleJourneysList /> - - <div className='row'> - <div className='col-lg-12 text-right'> - <Navigate /> - </div> - </div> - - <SaveVehicleJourneys /> - <Tools /> - - <ConfirmModal /> - </div> -) - -module.exports = App diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ConfirmModal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ConfirmModal.js deleted file mode 100644 index 54f0287c6..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ConfirmModal.js +++ /dev/null @@ -1,42 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes - -const ConfirmModal = ({dispatch, modal, onModalAccept, onModalCancel, vehicleJourneys}) => ( - <div className={ 'modal fade ' + ((modal.type == 'confirm') ? 'in' : '') } id='ConfirmModal'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-body'> - <p> Voulez-vous valider vos modifications avant de changer de page? </p> - </div> - <div className='modal-footer'> - <button - className='btn btn-default' - data-dismiss='modal' - type='button' - onClick= {() => {onModalCancel(modal.confirmModal.callback)}} - > - Ne pas valider - </button> - <button - className='btn btn-danger' - data-dismiss='modal' - type='button' - onClick = {() => {onModalAccept(modal.confirmModal.callback, vehicleJourneys)}} - > - Valider - </button> - </div> - </div> - </div> - </div> -) - -ConfirmModal.propTypes = { - vehicleJourneys: PropTypes.array.isRequired, - modal: PropTypes.object.isRequired, - onModalAccept: PropTypes.func.isRequired, - onModalCancel: PropTypes.func.isRequired -} - -module.exports = ConfirmModal diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js deleted file mode 100644 index f74bfa71d..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js +++ /dev/null @@ -1,171 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var MissionSelect2 = require('./tools/select2s/MissionSelect2') -var VJSelect2 = require('./tools/select2s/VJSelect2') -var TimetableSelect2 = require('./tools/select2s/TimetableSelect2') - -const Filters = ({filters, pagination, onFilter, onResetFilters, onUpdateStartTimeFilter, onUpdateEndTimeFilter, onToggleWithoutSchedule, onToggleWithoutTimeTable, onSelect2Timetable, onSelect2JourneyPattern, onSelect2VehicleJourney}) => { - return ( - <div className='row'> - <div className='col-lg-12'> - <div className='form form-filter'> - <div className='ffg-row'> - {/* ID course */} - <div className="form-group w33"> - <VJSelect2 - onSelect2VehicleJourney={onSelect2VehicleJourney} - filters={filters} - isFilter={true} - /> - </div> - - {/* Missions */} - <div className='form-group w33'> - <MissionSelect2 - onSelect2JourneyPattern={onSelect2JourneyPattern} - filters={filters} - isFilter={true} - /> - </div> - - {/* Calendriers */} - <div className='form-group w33'> - <TimetableSelect2 - onSelect2Timetable={onSelect2Timetable} - hasRoute={true} - chunkURL={("/autocomplete_time_tables.json?route_id=" + String(window.route_id))} - filters={filters} - isFilter={true} - /> - </div> - </div> - - <div className='ffg-row'> - {/* Plage horaire */} - <div className='form-group togglable'> - <label className='control-label'>Plage horaire au dĂ©part de la course</label> - <div className='filter_menu'> - <div className='form-group time filter_menu-item'> - <label className='control-label time'>DĂ©but</label> - <div className='form-inline'> - <div className='input-group time'> - <input - type='number' - className='form-control' - min='00' - max='23' - onChange={(e) => {onUpdateStartTimeFilter(e, 'hour')}} - value={filters.query.interval.start.hour} - /> - <span>:</span> - <input - type='number' - className='form-control' - min='00' - max='59' - onChange={(e) => {onUpdateStartTimeFilter(e, 'minute')}} - value={filters.query.interval.start.minute} - /> - </div> - </div> - </div> - <div className='form-group time filter_menu-item'> - <label className='control-label time'>Fin</label> - <div className='form-inline'> - <div className='input-group time'> - <input - type='number' - className='form-control' - min='00' - max='23' - onChange={(e) => {onUpdateEndTimeFilter(e, 'hour')}} - value={filters.query.interval.end.hour} - /> - <span>:</span> - <input - type='number' - className='form-control' - min='00' - max='59' - onChange={(e) => {onUpdateEndTimeFilter(e, 'minute')}} - value={filters.query.interval.end.minute} - /> - </div> - </div> - </div> - </div> - </div> - - {/* Switch avec/sans horaires */} - <div className='form-group has_switch'> - <label className='control-label pull-left'>Afficher les courses sans horaires</label> - <div className='form-group pull-left' style={{padding: 0}}> - <div className='checkbox'> - <label> - <input - type='checkbox' - onChange={onToggleWithoutSchedule} - checked={filters.query.withoutSchedule} - ></input> - <span className='switch-label' data-checkedvalue='Non' data-uncheckedvalue='Oui'> - {filters.query.withoutSchedule ? 'Oui' : 'Non'} - </span> - </label> - </div> - </div> - </div> - </div> - - <div className="ffg-row"> - {/* Switch avec/sans calendrier */} - <div className='form-group has_switch'> - <label className='control-label pull-left'>Afficher les courses avec calendrier</label> - <div className='form-group pull-left' style={{padding: 0}}> - <div className='checkbox'> - <label> - <input - type='checkbox' - onChange={onToggleWithoutTimeTable} - checked={filters.query.withoutTimeTable} - ></input> - <span className='switch-label' data-checkedvalue='Non' data-uncheckedvalue='Oui'> - {filters.query.withoutTimeTable ? 'Oui' : 'Non'} - </span> - </label> - </div> - </div> - </div> - </div> - - {/* Actions */} - <div className='actions'> - <span - className='btn btn-link' - onClick={(e) => onResetFilters(e, pagination)}> - Effacer - </span> - <span - className='btn btn-default' - onClick={(e) => onFilter(e, pagination)}> - Filtrer - </span> - </div> - </div> - </div> - </div> - ) -} - -Filters.propTypes = { - filters : PropTypes.object.isRequired, - pagination : PropTypes.object.isRequired, - onFilter: PropTypes.func.isRequired, - onResetFilters: PropTypes.func.isRequired, - onUpdateStartTimeFilter: PropTypes.func.isRequired, - onUpdateEndTimeFilter: PropTypes.func.isRequired, - onSelect2Timetable: PropTypes.func.isRequired, - onSelect2JourneyPattern: PropTypes.func.isRequired, - onSelect2VehicleJourney: PropTypes.func.isRequired -} - -module.exports = Filters diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Navigate.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Navigate.js deleted file mode 100644 index a62e034ae..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Navigate.js +++ /dev/null @@ -1,59 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -let Navigate = ({ dispatch, vehicleJourneys, pagination, status, filters}) => { - let firstPage = 1 - let lastPage = Math.ceil(pagination.totalCount / pagination.perPage) - let minVJ = (pagination.page - 1) * pagination.perPage + 1 - if (pagination.totalCount == 0){ - minVJ = 0 - lastPage = 1 - } - let maxVJ = Math.min((pagination.page * pagination.perPage), pagination.totalCount) - if(status.isFetching == true) { - return false - } - if(status.fetchSuccess == true) { - return ( - <div className="pagination"> - Liste des horaires {minVJ} Ă {maxVJ} sur {pagination.totalCount} - - <form className='page_links' onSubmit={e => {e.preventDefault()}}> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination, filters.queryString), pagination.stateChanged, dispatch)) - }} - type='button' - data-target='#ConfirmModal' - className={(pagination.page == firstPage ? 'disabled ' : '') + 'previous_page'} - disabled={(pagination.page == firstPage ? 'disabled' : '')} - ></button> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination, filters.queryString), pagination.stateChanged, dispatch)) - }} - type='button' - data-target='#ConfirmModal' - className={(pagination.page == lastPage ? 'disabled ' : '') + 'next_page'} - disabled={(pagination.page == lastPage ? 'disabled' : '')} - ></button> - </form> - </div> - ) - } else { - return false - } -} - -Navigate.propTypes = { - vehicleJourneys: PropTypes.array.isRequired, - status: PropTypes.object.isRequired, - pagination: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -} - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js deleted file mode 100644 index 3c45e5758..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js +++ /dev/null @@ -1,46 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class SaveVehicleJourneys extends Component{ - constructor(props){ - super(props) - } - - render() { - if (this.props.filters.policy['vehicle_journeys.update'] == false) { - return false - }else{ - return ( - <div className='row mt-md'> - <div className='col-lg-12 text-right'> - <form className='vehicle_journeys formSubmitr ml-xs' onSubmit={e => {e.preventDefault()}}> - <button - className='btn btn-default' - type='button' - onClick={e => { - e.preventDefault() - this.props.editMode ? this.props.onSubmitVehicleJourneys(this.props.dispatch, this.props.vehicleJourneys) : this.props.onEnterEditMode() - }} - > - {this.props.editMode ? "Valider" : "Editer"} - </button> - </form> - </div> - </div> - ) - } - } -} - -SaveVehicleJourneys.propTypes = { - vehicleJourneys: PropTypes.array.isRequired, - page: PropTypes.number.isRequired, - status: PropTypes.object.isRequired, - filters: PropTypes.object.isRequired, - onEnterEditMode: PropTypes.func.isRequired, - onSubmitVehicleJourneys: PropTypes.func.isRequired -} - -module.exports = SaveVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ToggleArrivals.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ToggleArrivals.js deleted file mode 100644 index 48fee683f..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/ToggleArrivals.js +++ /dev/null @@ -1,30 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes - -const ToggleArrivals = ({filters, onToggleArrivals}) => { - return ( - <div className='has_switch form-group inline'> - <label htmlFor='toggleArrivals' className='control-label'>Afficher et Ă©diter les horaires d'arrivĂ©e</label> - <div className='form-group'> - <div className='checkbox'> - <label> - <input - onChange={onToggleArrivals} - type='checkbox' - checked={filters.toggleArrivals} - > - </input> - <span className='switch-label'></span> - </label> - </div> - </div> - </div> - ) -} - -ToggleArrivals.propTypes = { - filters : PropTypes.object.isRequired, - onToggleArrivals: PropTypes.func.isRequired -} - -module.exports = ToggleArrivals diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js deleted file mode 100644 index 4948e6b1a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js +++ /dev/null @@ -1,42 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var AddVehicleJourney = require('../containers/tools/AddVehicleJourney') -var DeleteVehicleJourneys = require('../containers/tools/DeleteVehicleJourneys') -var ShiftVehicleJourney = require('../containers/tools/ShiftVehicleJourney') -var DuplicateVehicleJourney = require('../containers/tools/DuplicateVehicleJourney') -var EditVehicleJourney = require('../containers/tools/EditVehicleJourney') -var NotesEditVehicleJourney = require('../containers/tools/NotesEditVehicleJourney') -var TimetablesEditVehicleJourney = require('../containers/tools/TimetablesEditVehicleJourney') -var actions = require('../actions') - -const Tools = ({vehicleJourneys, onCancelSelection, filters: {policy}, editMode}) => { - return ( - <div> - { - (policy['vehicle_journeys.create'] && policy['vehicle_journeys.update'] && policy['vehicle_journeys.destroy'] && editMode) && - <div className='select_toolbox'> - <ul> - <AddVehicleJourney /> - <DuplicateVehicleJourney /> - <ShiftVehicleJourney /> - <EditVehicleJourney /> - <TimetablesEditVehicleJourney /> - <NotesEditVehicleJourney /> - <DeleteVehicleJourneys /> - </ul> - - <span className='info-msg'>{actions.getSelected(vehicleJourneys).length} course(s) sĂ©lectionnĂ©e(s)</span> - <button className='btn btn-xs btn-link pull-right' onClick={onCancelSelection}>Annuler la sĂ©lection</button> - </div> - } - </div> - ) -} - -Tools.propTypes = { - vehicleJourneys : PropTypes.array.isRequired, - onCancelSelection: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = Tools diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js deleted file mode 100644 index ca6694f61..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js +++ /dev/null @@ -1,149 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../actions') - -class VehicleJourney extends Component { - constructor(props) { - super(props) - this.previousCity = undefined - } - - cityNameChecker(sp) { - let bool = false - if(sp.stop_area_cityname != this.previousCity){ - bool = true - this.previousCity = sp.stop_area_cityname - } - - return bool - } - - timeTableURL(tt) { - let refURL = window.location.pathname.split('/', 3).join('/') - let ttURL = refURL + '/time_tables/' + tt.id - - return ( - <a href={ttURL} title='Voir le calendrier'><span className='fa fa-calendar' style={{color: (tt.color ? tt.color : '')}}></span></a> - ) - } - - columnHasDelta() { - let a = [] - this.props.value.vehicle_journey_at_stops.map((vj, i) => { - a.push(vj.delta) - }) - let b = a.reduce((p, c) => p+c, 0) - - if(b > 0) { - return true - } - } - - isDisabled(bool1, bool2) { - return (bool1 || bool2) - } - - render() { - this.previousCity = undefined - - return ( - <div className={'t2e-item' + (this.props.value.deletable ? ' disabled' : '') + (this.props.value.errors ? ' has-error': '')}> - <div className='th'> - <div className='strong mb-xs'>{this.props.value.objectid ? actions.humanOID(this.props.value.objectid) : '-'}</div> - <div>{actions.humanOID(this.props.value.journey_pattern.objectid)}</div> - <div> - {this.props.value.time_tables.map((tt, i)=> - <span key={i} className='vj_tt'>{this.timeTableURL(tt)}</span> - )} - </div> - - {(this.props.filters.policy['vehicle_journeys.update'] == true && this.props.editMode) && - <div className={(this.props.value.deletable ? 'disabled ' : '') + 'checkbox'}> - <input - id={this.props.index} - name={this.props.index} - style={{display: 'none'}} - onChange={(e) => this.props.onSelectVehicleJourney(this.props.index)} - type='checkbox' - disabled={this.props.value.deletable} - checked={this.props.value.selected} - ></input> - <label htmlFor={this.props.index}></label> - </div> - } - - </div> - {this.props.value.vehicle_journey_at_stops.map((vj, i) => - <div key={i} className='td text-center'> - <div className={'cellwrap' + (this.cityNameChecker(vj) ? ' headlined' : '')}> - {this.props.filters.toggleArrivals && - <div data-headline='ArrivĂ©e Ă '> - <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false) ? 'disabled ' : '') + 'input-group time'}> - <input - type='number' - min='00' - max='23' - className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false)} - onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}} - value={vj.arrival_time['hour']} - /> - <span>:</span> - <input - type='number' - min='00' - max='59' - className='form-control' - disabled={((this.isDisabled(this.props.value.deletable), vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false)} - onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false)}} - value={vj.arrival_time['minute']} - /> - </span> - </div> - } - <div className={(this.columnHasDelta() ? '' : 'hidden')}> - {(vj.delta != 0) && - <span className='sb sb-chrono sb-lg text-warning' data-textinside={vj.delta}></span> - } - </div> - <div data-headline='DĂ©part Ă '> - <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false) ? 'disabled ' : '') + 'input-group time'}> - <input - type='number' - min='00' - max='23' - className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false)} - onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals)}} - value={vj.departure_time['hour']} - /> - <span>:</span> - <input - type='number' - min='00' - max='59' - className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.editMode == false)} - onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true, this.props.filters.toggleArrivals)}} - value={vj.departure_time['minute']} - /> - </span> - </div> - </div> - </div> - )} - </div> - ) - } -} - -VehicleJourney.propTypes = { - value: PropTypes.object.isRequired, - filters: PropTypes.object.isRequired, - index: PropTypes.number.isRequired, - onUpdateTime: PropTypes.func.isRequired, - onSelectVehicleJourney: PropTypes.func.isRequired -} - -module.exports = VehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js deleted file mode 100644 index 8f3f91b25..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js +++ /dev/null @@ -1,159 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var VehicleJourney = require('./VehicleJourney') -var _ = require('lodash') - -class VehicleJourneys extends Component{ - constructor(props){ - super(props) - this.previousCity = undefined - } - componentDidMount() { - this.props.onLoadFirstPage(this.props.filters) - } - - componentDidUpdate(prevProps, prevState) { - if(this.props.status.isFetching == false){ - $('.table-2entries').each(function() { - var refH = [] - var refCol = [] - - $(this).find('.t2e-head').children('div').each(function() { - var h = $(this).outerHeight(); - refH.push(h) - }); - - var i = 0 - $(this).find('.t2e-item').children('div').each(function() { - var h = $(this).outerHeight(); - if(refCol.length < refH.length){ - refCol.push(h) - } else { - if(h > refCol[i]) { - refCol[i] = h - } - } - if(i == (refH.length - 1)){ - i = 0 - } else { - i++ - } - }); - - for(var n = 0; n < refH.length; n++) { - if(refCol[n] < refH[n]) { - refCol[n] = refH[n] - } - } - - $(this).find('.th').css('height', refCol[0]); - - for(var nth = 1; nth < refH.length; nth++) { - $(this).find('.td:nth-child('+ (nth + 1) +')').css('height', refCol[nth]); - } - }); - } - } - - cityNameChecker(sp) { - let bool = false - if(sp.city_name != this.previousCity){ - bool = true - this.previousCity = sp.city_name - } - return ( - <div - className={(bool) ? 'headlined' : ''} - data-headline={(bool) ? sp.city_name : ''} - title={sp.city_name + ' (' + sp.zip_code +')'} - > - <span><span>{sp.name}</span></span> - </div> - ) - } - - render() { - this.previousCity = undefined - - if(this.props.status.isFetching == true) { - return ( - <div className="isLoading" style={{marginTop: 80, marginBottom: 80}}> - <div className="loader"></div> - </div> - ) - } else { - return ( - <div className='row'> - <div className='col-lg-12'> - {(this.props.status.fetchSuccess == false) && ( - <div className='alert alert-danger mt-sm'> - <strong>Erreur : </strong> - la rĂ©cupĂ©ration des missions a rencontrĂ© un problĂšme. Rechargez la page pour tenter de corriger le problĂšme. - </div> - )} - - { _.some(this.props.vehicleJourneys, 'errors') && ( - <div className="alert alert-danger mt-sm"> - <strong>Erreur : </strong> - {this.props.vehicleJourneys.map((vj, index) => - vj.errors && vj.errors.map((err, i) => { - return ( - <ul key={i}> - <li>{err}</li> - </ul> - ) - }) - )} - </div> - )} - - <div className={'table table-2entries mt-sm mb-sm' + ((this.props.vehicleJourneys.length > 0) ? '' : ' no_result')}> - <div className='t2e-head w20'> - <div className='th'> - <div className='strong mb-xs'>ID course</div> - <div>ID mission</div> - <div>Calendriers</div> - </div> - {this.props.stopPointsList.map((sp, i) =>{ - return ( - <div key={i} className='td'> - {this.cityNameChecker(sp)} - </div> - ) - })} - </div> - - <div className='t2e-item-list w80'> - <div> - {this.props.vehicleJourneys.map((vj, index) => - <VehicleJourney - value={vj} - key={index} - index={index} - editMode={this.props.editMode} - filters={this.props.filters} - onUpdateTime={this.props.onUpdateTime} - onSelectVehicleJourney={this.props.onSelectVehicleJourney} - /> - )} - </div> - </div> - </div> - </div> - </div> - ) - } - } -} - -VehicleJourneys.propTypes = { - status: PropTypes.object.isRequired, - filters: PropTypes.object.isRequired, - stopPointsList: PropTypes.array.isRequired, - onLoadFirstPage: PropTypes.func.isRequired, - onUpdateTime: PropTypes.func.isRequired, - onSelectVehicleJourney: PropTypes.func.isRequired -} - -module.exports = VehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js deleted file mode 100644 index 6a1e8ffb9..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js +++ /dev/null @@ -1,135 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') -var MissionSelect2 = require('./select2s/MissionSelect2') -var CompanySelect2 = require('./select2s/CompanySelect2') - -class CreateModal extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true && this.props.modal.modalProps.selectedJPModal) { - this.props.onAddVehicleJourney(this.refs, this.props.modal.modalProps.selectedJPModal, this.props.stopPointsList, this.props.modal.modalProps.selectedCompany) - this.props.onModalClose() - $('#NewVehicleJourneyModal').modal('hide') - } - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <li className='st_action'> - <button - type='button' - disabled={((this.props.filters.policy['vehicle_journeys.update'] == true) ? '' : 'disabled')} - data-toggle='modal' - data-target='#NewVehicleJourneyModal' - onClick={this.props.onOpenCreateModal} - > - <span className='fa fa-plus'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'create') ? 'in' : '') } id='NewVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Ajouter une course</h4> - </div> - - {(this.props.modal.type == 'create') && ( - <form> - <div className='modal-body'> - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Nom de la course</label> - <input - type='text' - ref='published_journey_name' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Nom du transporteur</label> - <CompanySelect2 - company = {undefined} - onSelect2Company = {(e) => this.props.onSelect2Company(e)} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label is-required'>Nom public de la mission</label> - <MissionSelect2 - selection={this.props.modal.modalProps} - onSelect2JourneyPattern={this.props.onSelect2JourneyPattern} - isFilter={false} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>NumĂ©ro de train</label> - <input - type='text' - ref='published_journey_identifier' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -CreateModal.propTypes = { - index: PropTypes.number, - modal: PropTypes.object.isRequired, - status: PropTypes.object.isRequired, - stopPointsList: PropTypes.array.isRequired, - onOpenCreateModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - onAddVehicleJourney: PropTypes.func.isRequired, - onSelect2JourneyPattern: PropTypes.func.isRequired -} - -module.exports = CreateModal diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js deleted file mode 100644 index c98b794a8..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js +++ /dev/null @@ -1,29 +0,0 @@ -var React = require('react') -var PropTypes = require('react').PropTypes -var actions = require('../../actions') - -const DeleteVehicleJourneys = ({onDeleteVehicleJourneys, vehicleJourneys, filters}) => { - return ( - <li className='st_action'> - <button - type='button' - disabled={(actions.getSelected(vehicleJourneys).length > 0 && filters.policy['vehicle_journeys.destroy']) ? '' : 'disabled'} - onClick={e => { - e.preventDefault() - onDeleteVehicleJourneys() - }} - title='Supprimer' - > - <span className='fa fa-trash'></span> - </button> - </li> - ) -} - -DeleteVehicleJourneys.propTypes = { - onDeleteVehicleJourneys: PropTypes.func.isRequired, - vehicleJourneys: PropTypes.array.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = DeleteVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js deleted file mode 100644 index 9446b993a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js +++ /dev/null @@ -1,200 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') -var _ = require('lodash') - -class DuplicateVehicleJourney extends Component { - constructor(props) { - super(props) - this.state = {} - this.onFormChange = this.onFormChange.bind(this) - this.handleSubmit = this.handleSubmit.bind(this) - } - - componentWillReceiveProps() { - if (actions.getSelected(this.props.vehicleJourneys).length > 0) { - let hour = parseInt(this.getDefaultValue('hour')) - let miunte = parseInt(this.getDefaultValue('minute')) - this.setState((state, props) => { - return { - originalDT: { - hour: hour, - minute: miunte - }, - duplicate_time_hh: hour, - duplicate_time_mm: miunte, - additional_time: 0, - duplicate_number: 1 - } - }) - } - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true) { - let newDeparture = { - departure_time : { - hour: this.state.duplicate_time_hh, - minute: this.state.duplicate_time_mm - } - } - let val = actions.getDuplicateDelta(_.find(actions.getSelected(this.props.vehicleJourneys)[0].vehicle_journey_at_stops, {'dummy': false}), newDeparture) - this.props.onDuplicateVehicleJourney(this.state.additional_time, this.state.duplicate_number, val) - this.props.onModalClose() - $('#DuplicateVehicleJourneyModal').modal('hide') - } - } - - onFormChange(e) { - let {name, value} = e.target - this.setState((state, props) => { - return { - [name]: parseInt(value) - } - }) - } - - getDefaultValue(type) { - let vjas = _.find(actions.getSelected(this.props.vehicleJourneys)[0].vehicle_journey_at_stops, {'dummy': false}) - return vjas.departure_time[type] - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true && actions.getSelected(this.props.vehicleJourneys).length > 0) { - return ( - <li className='st_action'> - <button - type='button' - disabled={((actions.getSelected(this.props.vehicleJourneys).length >= 1 && this.props.filters.policy['vehicle_journeys.update']) ? '' : 'disabled')} - data-toggle='modal' - data-target='#DuplicateVehicleJourneyModal' - onClick={this.props.onOpenDuplicateModal} - > - <span className='fa fa-files-o'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='DuplicateVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'> - Dupliquer { actions.getSelected(this.props.vehicleJourneys).length > 1 ? 'plusieurs courses' : 'une course' } - </h4> - </div> - - {(this.props.modal.type == 'duplicate') && ( - <form className='form-horizontal'> - <div className='modal-body'> - <div className={'form-group ' + (actions.getSelected(this.props.vehicleJourneys).length > 1 ? 'hidden' : '' )}> - <label className='control-label is-required col-sm-8'>Horaire de dĂ©part indicatif</label> - <span className="col-sm-4"> - <span className={'input-group time' + (actions.getSelected(this.props.vehicleJourneys).length > 1 ? ' disabled' : '')}> - <input - type='number' - name='duplicate_time_hh' - ref='duplicate_time_hh' - min='00' - max='23' - className='form-control' - value={this.state.duplicate_time_hh} - onChange={e => this.onFormChange(e)} - disabled={actions.getSelected(this.props.vehicleJourneys) && (actions.getSelected(this.props.vehicleJourneys).length > 1 ? 'disabled' : '')} - /> - <span>:</span> - <input - type='number' - name='duplicate_time_mm' - ref='duplicate_time_mm' - min='00' - max='59' - className='form-control' - value={this.state.duplicate_time_mm} - onChange={e => this.onFormChange(e)} - disabled={actions.getSelected(this.props.vehicleJourneys) && (actions.getSelected(this.props.vehicleJourneys).length > 1 ? 'disabled' : '')} - /> - </span> - </span> - </div> - - <div className='form-group'> - <label className='control-label is-required col-sm-8'>Nombre de courses Ă crĂ©er et dupliquer</label> - <div className="col-sm-4"> - <input - type='number' - style={{'width': 104}} - name='duplicate_number' - ref='duplicate_number' - min='1' - max='20' - value={this.state.duplicate_number} - className='form-control' - onChange={e => this.onFormChange(e)} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - </div> - - <div className='form-group'> - <label className='control-label is-required col-sm-8'>DĂ©calage Ă partir duquel on créé les courses</label> - <span className="col-sm-4"> - <input - type='number' - style={{'width': 104}} - name='additional_time' - ref='additional_time' - min='-720' - max='720' - value={this.state.additional_time} - className='form-control disabled' - onChange={e => this.onFormChange(e)} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </span> - </div> - </div> - - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className={'btn btn-primary ' + (this.state.additional_time == 0 && this.state.originalDT.hour == this.state.duplicate_time_hh && this.state.originalDT.minute == this.state.duplicate_time_mm ? 'disabled' : '')} - type='button' - onClick={this.handleSubmit} - > - Valider - </button> - </div> - </form> - )} - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -DuplicateVehicleJourney.propTypes = { - onOpenDuplicateModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = DuplicateVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/EditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/EditVehicleJourney.js deleted file mode 100644 index 2ff4999c6..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/EditVehicleJourney.js +++ /dev/null @@ -1,171 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') -var CompanySelect2 = require('./select2s/CompanySelect2') - -class EditVehicleJourney extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true) { - var company; - if(this.props.modal.modalProps.selectedCompany) { - company = this.props.modal.modalProps.selectedCompany - } else if (typeof this.props.modal.modalProps.vehicleJourney.company === Object) { - company = this.props.modal.modalProps.vehicleJourney.company - } else { - company = undefined - } - this.props.onEditVehicleJourney(this.refs, company) - this.props.onModalClose() - $('#EditVehicleJourneyModal').modal('hide') - } - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <li className='st_action'> - <button - type='button' - disabled={(actions.getSelected(this.props.vehicleJourneys).length == 1 && this.props.filters.policy['vehicle_journeys.update']) ? '' : 'disabled'} - data-toggle='modal' - data-target='#EditVehicleJourneyModal' - onClick={() => this.props.onOpenEditModal(actions.getSelected(this.props.vehicleJourneys)[0])} - > - <span className='fa fa-info'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='EditVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Informations</h4> - </div> - - {(this.props.modal.type == 'edit') && ( - <form> - <div className='modal-body'> - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Nom de la course</label> - <input - type='text' - ref='published_journey_name' - className='form-control' - defaultValue={this.props.modal.modalProps.vehicleJourney.published_journey_name} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Mission</label> - <input - type='text' - className='form-control' - value={actions.humanOID(this.props.modal.modalProps.vehicleJourney.journey_pattern.objectid) + ' - ' + (this.props.modal.modalProps.vehicleJourney.journey_pattern.name)} - disabled={true} - /> - </div> - </div> - </div> - - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>NumĂ©ro de train</label> - <input - type='text' - ref='published_journey_identifier' - className='form-control' - defaultValue={this.props.modal.modalProps.vehicleJourney.published_journey_identifier} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Transporteur</label> - <CompanySelect2 - company = {this.props.modal.modalProps.vehicleJourney.company} - onSelect2Company = {(e) => this.props.onSelect2Company(e)} - onUnselect2Company = {() => this.props.onUnselect2Company()} - /> - </div> - </div> - </div> - - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Mode de transport</label> - <input - type='text' - className='form-control' - value={window.I18n.fr.enumerize.line.transport_mode[this.props.modal.modalProps.vehicleJourney.transport_mode]} - disabled={true} - /> - </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-12'> - <div className='form-group'> - <label className='control-label'>Sous mode de transport</label> - <input - type='text' - className='form-control' - value={window.I18n.fr.enumerize.line.transport_submode[this.props.modal.modalProps.vehicleJourney.transport_submode]} - disabled={true} - /> - </div> - </div> - </div> - </div> - - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -EditVehicleJourney.propTypes = { - onOpenEditModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = EditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/NotesEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/NotesEditVehicleJourney.js deleted file mode 100644 index df6c311e6..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/NotesEditVehicleJourney.js +++ /dev/null @@ -1,154 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') -var _ = require('lodash') - -class NotesEditVehicleJourney extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - this.props.onNotesEditVehicleJourney(this.props.modal.modalProps.vehicleJourney.footnotes) - this.props.onModalClose() - $('#NotesEditVehicleJourneyModal').modal('hide') - } - - renderFootnoteButton(lf, vjArray){ - let footnote_id = undefined - vjArray.forEach((f) => { - if(f.id == lf.id){ - footnote_id = f.id - } - }) - - if(footnote_id){ - return <button - type='button' - className='btn btn-outline-danger btn-xs' - onClick={() => this.props.onToggleFootnoteModal(lf, false)} - ><span className="fa fa-trash"></span> Retirer</button> - }else{ - return <button - type='button' - className='btn btn-outline-primary btn-xs' - onClick={() => this.props.onToggleFootnoteModal(lf, true)} - ><span className="fa fa-plus"></span> Ajouter</button> - } - } - - filterFN() { - return _.filter(window.line_footnotes, (lf, i) => { - let bool = true - _.map(this.props.modal.modalProps.vehicleJourney.footnotes, (f, j) => { - if(lf.id === f.id) { - bool = false - } - }) - return bool - }) - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <li className='st_action'> - <button - type='button' - disabled={(actions.getSelected(this.props.vehicleJourneys).length == 1 && this.props.filters.policy['vehicle_journeys.update']) ? '' : 'disabled'} - data-toggle='modal' - data-target='#NotesEditVehicleJourneyModal' - onClick={() => this.props.onOpenNotesEditModal(actions.getSelected(this.props.vehicleJourneys)[0])} - > - <span className='fa fa-sticky-note'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='NotesEditVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Notes</h4> - </div> - - {(this.props.modal.type == 'notes_edit') && ( - <form> - <div className='modal-body'> - <h3>Notes associĂ©es</h3> - {(this.props.modal.modalProps.vehicleJourney.footnotes).map((lf, i) => - <div - key={i} - className='panel panel-default' - > - <div className='panel-heading'> - <h4 className='panel-title clearfix'> - <div className='pull-left' style={{paddingTop: '3px'}}>{lf.code}</div> - <div className='pull-right'>{this.renderFootnoteButton(lf, this.props.modal.modalProps.vehicleJourney.footnotes)}</div> - </h4> - </div> - <div className='panel-body'><p>{lf.label}</p></div> - </div> - )} - - <h3 className='mt-lg'>SĂ©lectionnez les notes Ă associer Ă cette course :</h3> - {this.filterFN().map((lf, i) => - <div - key={i} - className='panel panel-default' - > - <div className='panel-heading'> - <h4 className='panel-title clearfix'> - <div className='pull-left' style={{paddingTop: '3px'}}>{lf.code}</div> - <div className='pull-right'>{this.renderFootnoteButton(lf, this.props.modal.modalProps.vehicleJourney.footnotes)}</div> - </h4> - </div> - <div className='panel-body'><p>{lf.label}</p></div> - </div> - )} - </div> - - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -NotesEditVehicleJourney.propTypes = { - onOpenNotesEditModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - onToggleFootnoteModal: PropTypes.func.isRequired, - onNotesEditVehicleJourney: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = NotesEditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js deleted file mode 100644 index dd0bade39..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js +++ /dev/null @@ -1,118 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') - -class ShiftVehicleJourney extends Component { - constructor(props) { - super(props) - this.state = { - additional_time: 0 - } - } - - handleSubmit() { - if(actions.validateFields(this.refs) == true) { - this.props.onShiftVehicleJourney(this.state.additional_time) - this.props.onModalClose() - $('#ShiftVehicleJourneyModal').modal('hide') - } - } - - handleAdditionalTimeChange() { - this.setState((state, props) => { - return { - additional_time: parseInt(this.refs.additional_time.value) - } - }) - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <li className='st_action'> - <button - type='button' - disabled={(actions.getSelected(this.props.vehicleJourneys).length == 1 && this.props.filters.policy['vehicle_journeys.update']) ? '' : 'disabled'} - data-toggle='modal' - data-target='#ShiftVehicleJourneyModal' - onClick={this.props.onOpenShiftModal} - > - <span className='sb sb-update-vj'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'shift') ? 'in' : '') } id='ShiftVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Mettre Ă jour une course</h4> - {(this.props.modal.type == 'shift') && ( - <em>Mettre Ă jour les horaires de la course {actions.humanOID(actions.getSelected(this.props.vehicleJourneys)[0].objectid)}</em> - )} - </div> - - {(this.props.modal.type == 'shift') && ( - <form> - <div className='modal-body'> - <div className='row'> - <div className='col-lg-4 col-lg-offset-4 col-md-4 col-md-offset-4 col-sm-4 col-sm-offset-4 col-xs-12'> - <div className='form-group'> - <label className='control-label is-required'>Avec un dĂ©calage de</label> - <input - type='number' - style={{'width': 104}} - ref='additional_time' - min='-720' - max='720' - value={this.state.additional_time} - className='form-control' - onChange={this.handleAdditionalTimeChange.bind(this)} - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - </div> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className={'btn btn-primary ' + (this.state.additional_time == 0 ? 'disabled' : '')} - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -ShiftVehicleJourney.propTypes = { - onOpenShiftModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = ShiftVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js deleted file mode 100644 index a26a9b805..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js +++ /dev/null @@ -1,135 +0,0 @@ -var React = require('react') -var Component = require('react').Component -var PropTypes = require('react').PropTypes -var actions = require('../../actions') -var TimetableSelect2 = require('./select2s/TimetableSelect2') - -class TimetablesEditVehicleJourney extends Component { - constructor(props) { - super(props) - } - - handleSubmit() { - this.props.onTimetablesEditVehicleJourney(this.props.modal.modalProps.vehicleJourneys, this.props.modal.modalProps.timetables) - this.props.onModalClose() - $('#CalendarsEditVehicleJourneyModal').modal('hide') - } - - render() { - if(this.props.status.isFetching == true) { - return false - } - if(this.props.status.fetchSuccess == true) { - return ( - <li className='st_action'> - <button - type='button' - disabled={(actions.getSelected(this.props.vehicleJourneys).length > 0 && this.props.filters.policy['vehicle_journeys.update']) ? '' : 'disabled'} - data-toggle='modal' - data-target='#CalendarsEditVehicleJourneyModal' - onClick={() => this.props.onOpenCalendarsEditModal(actions.getSelected(this.props.vehicleJourneys))} - > - <span className='fa fa-calendar'></span> - </button> - - <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='CalendarsEditVehicleJourneyModal'> - <div className='modal-container'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header'> - <h4 className='modal-title'>Calendriers associĂ©s</h4> - </div> - - {(this.props.modal.type == 'calendars_edit') && ( - <form> - <div className='modal-body'> - <div className='row'> - <div className='col-lg-12'> - <div className='subform'> - <div className='nested-head'> - <div className='wrapper'> - <div> - <div className='form-group'> - <label className='control-label'>Calendriers associĂ©s</label> - </div> - </div> - <div></div> - </div> - </div> - {this.props.modal.modalProps.timetables.map((tt, i) => - <div className='nested-fields' key={i}> - <div className='wrapper'> - <div>{tt.comment}</div> - <div> - <a - href='#' - title='Supprimer' - className='fa fa-trash remove_fields' - style={{height: 'auto', lineHeight: 'normal'}} - onClick={(e) => { - e.preventDefault() - this.props.onDeleteCalendarModal(tt) - }} - ></a> - </div> - </div> - </div> - )} - <div className='nested-fields'> - <div className='wrapper'> - <div> - <TimetableSelect2 - onSelect2Timetable={this.props.onSelect2Timetable} - chunkURL={'/autocomplete_time_tables.json'} - isFilter={false} - /> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - - <div className='modal-footer'> - <button - className='btn btn-link' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-primary' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} - - </div> - </div> - </div> - </div> - </li> - ) - } else { - return false - } - } -} - -TimetablesEditVehicleJourney.propTypes = { - onOpenCalendarsEditModal: PropTypes.func.isRequired, - onModalClose: PropTypes.func.isRequired, - onTimetablesEditVehicleJourney: PropTypes.func.isRequired, - onDeleteCalendarModal: PropTypes.func.isRequired, - onSelect2Timetable: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired -} - -module.exports = TimetablesEditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js deleted file mode 100644 index c1ce0e92a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js +++ /dev/null @@ -1,67 +0,0 @@ -var _ = require('lodash') -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('/') -var line = window.location.pathname.split('/')[4] - - -class BSelect4 extends React.Component{ - constructor(props) { - super(props) - } - - render() { - return ( - <Select2 - data={(this.props.company) ? [this.props.company.name] : undefined} - value={(this.props.company) ? this.props.company.name : undefined} - onSelect={(e) => this.props.onSelect2Company(e) } - onUnselect={() => this.props.onUnselect2Company()} - multiple={false} - ref='company_id' - options={{ - allowClear: true, - theme: 'bootstrap', - width: '100%', - placeholder: 'Filtrer par transporteur...', - language: require('./fr'), - ajax: { - url: origin + path + '/companies.json' + '?line_id=' + line, - dataType: 'json', - delay: '500', - data: function(params) { - return { - q: {name_cont: params.term}, - }; - }, - processResults: function(data, params) { - - return { - results: data.map( - item => _.assign( - {}, - item, - {text: item.name} - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 1, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.text) return props.text -} - -module.exports = BSelect4 diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js deleted file mode 100644 index 2f49e9980..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js +++ /dev/null @@ -1,67 +0,0 @@ -var _ = require('lodash') -var React = require('react') -var PropTypes = require('react').PropTypes -var Select2 = require('react-select2') -var humanOID = require('../../../actions').humanOID - -// get JSON full path -var origin = window.location.origin -var path = window.location.pathname.split('/', 7).join('/') - - -class BSelect4 extends React.Component{ - constructor(props) { - super(props) - } - - - render() { - return ( - <Select2 - data={(this.props.isFilter) ? [this.props.filters.query.journeyPattern.published_name] : ((this.props.selection.selectedJPModal) ? [this.props.selection.selectedJPModal.published_name] : undefined)} - value={(this.props.isFilter) ? this.props.filters.query.journeyPattern.published_name : ((this.props.selection.selectedJPModal) ? this.props.selection.selectedJPModal.published_name : undefined) } - onSelect={(e) => this.props.onSelect2JourneyPattern(e)} - multiple={false} - ref='journey_pattern_id' - options={{ - allowClear: false, - theme: 'bootstrap', - placeholder: 'Filtrer par code, nom ou OID de mission...', - language: require('./fr'), - width: '100%', - ajax: { - url: origin + path + '/journey_patterns_collection.json', - dataType: 'json', - delay: '500', - data: function(params) { - return { - q: {published_name_or_objectid_or_registration_number_cont: params.term}, - }; - }, - processResults: function(data, params) { - return { - results: data.map( - item => _.assign( - {}, - item, - { text: "<strong>" + item.published_name + " - " + humanOID(item.object_id) + "</strong><br/><small>" + item.registration_number + "</small>" } - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 1, - escapeMarkup: function (markup) { return markup; }, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.text) return props.text -} - -module.exports = BSelect4 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 deleted file mode 100644 index 2248175ab..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js +++ /dev/null @@ -1,71 +0,0 @@ -var _ = require('lodash') -var React = require('react') -var PropTypes = require('react').PropTypes -var Select2 = require('react-select2') -var humanOID = require('../../../actions').humanOID - -// get JSON full path -var origin = window.location.origin -var path = window.location.pathname.split('/', 3).join('/') - - -class BSelect4 extends React.Component{ - constructor(props) { - super(props) - } - - render() { - return ( - <Select2 - data={(this.props.isFilter) ? [this.props.filters.query.timetable.comment] : undefined} - value={(this.props.isFilter) ? this.props.filters.query.timetable.comment : undefined} - onSelect={(e) => this.props.onSelect2Timetable(e) } - multiple={false} - ref='timetable_id' - options={{ - allowClear: false, - theme: 'bootstrap', - width: '100%', - placeholder: 'Filtrer par calendrier...', - language: require('./fr'), - ajax: { - url: origin + path + this.props.chunkURL, - dataType: 'json', - delay: '500', - data: function(params) { - let newParmas = params.term.split(" ") - return { - q: { - objectid_cont_any: newParmas, - comment_cont_any: newParmas, - m: 'or' - } - }; - }, - processResults: function(data, params) { - return { - results: data.map( - item => _.assign( - {}, - item, - {text: '<strong>' + "<span class='fa fa-circle' style='color:" + (item.color ? item.color : '#4B4B4B') + "'></span> " + item.comment + ' - ' + humanOID(item.objectid) + '</strong><br/><small>' + (item.day_types ? item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') : "") + '</small>'} - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 1, - escapeMarkup: function (markup) { return markup; }, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.text) return props.text -} - -module.exports = BSelect4 diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/VJSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/VJSelect2.js deleted file mode 100644 index b9678ea9a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/VJSelect2.js +++ /dev/null @@ -1,65 +0,0 @@ -var _ = require('lodash') -var React = require('react') -var PropTypes = require('react').PropTypes -var Select2 = require('react-select2') -var humanOID = require('../../../actions').humanOID - -// get JSON full path -var origin = window.location.origin -var path = window.location.pathname.split('/', 7).join('/') - - -class BSelect4b extends React.Component{ - constructor(props) { - super(props) - } - - render() { - return ( - <Select2 - data={(this.props.isFilter) ? [this.props.filters.query.vehicleJourney.objectid] : undefined} - value={(this.props.isFilter) ? this.props.filters.query.vehicleJourney.objectid : undefined} - onSelect={(e) => this.props.onSelect2VehicleJourney(e)} - multiple={false} - ref='vehicle_journey_objectid' - options={{ - allowClear: false, - theme: 'bootstrap', - placeholder: 'Filtrer par ID course...', - width: '100%', - language: require('./fr'), - ajax: { - url: origin + path + '/vehicle_journeys.json', - dataType: 'json', - delay: '500', - data: function(params) { - return { - q: {objectid_cont: params.term}, - }; - }, - processResults: function(data, params) { - return { - results: data.vehicle_journeys.map( - item => _.assign( - {}, - item, - { id: item.objectid, text: humanOID(item.objectid) } - ) - ) - }; - }, - cache: true - }, - minimumInputLength: 1, - templateResult: formatRepo - }} - /> - ) - } -} - -const formatRepo = (props) => { - if(props.text) return props.text -} - -module.exports = BSelect4b diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/fr.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/fr.js deleted file mode 100644 index 20154d412..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/fr.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - errorLoading:function(){return"Les rĂ©sultats ne peuvent pas ĂȘtre chargĂ©s."}, - inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractĂšre";return t!==1&&(n+="s"),n}, - inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractĂšre";return t!==1&&(n+="s"),n}, - loadingMore:function(){return"Chargement de rĂ©sultats supplĂ©mentairesâŠ"}, - maximumSelected:function(e){var t="Vous pouvez seulement sĂ©lectionner "+e.maximum+" Ă©lĂ©ment";return e.maximum!==1&&(t+="s"),t}, - noResults:function(){return"Aucun rĂ©sultat trouvĂ©"}, - searching:function(){return"Recherche en coursâŠ"} -} diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ConfirmModal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ConfirmModal.js deleted file mode 100644 index e91ba6bf0..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ConfirmModal.js +++ /dev/null @@ -1,30 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var ConfirmModal = require('../components/ConfirmModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalAccept: (next, state) =>{ - dispatch(actions.fetchingApi()) - actions.submitVehicleJourneys(dispatch, state, next) - }, - onModalCancel: (next) =>{ - dispatch(actions.fetchingApi()) - dispatch(next) - }, - onModalClose: () =>{ - dispatch(actions.closeModal()) - } - } -} - -const ConfirmModalContainer = connect(mapStateToProps, mapDispatchToProps)(ConfirmModal) - -module.exports = ConfirmModalContainer diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js deleted file mode 100644 index 831b47ca1..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js +++ /dev/null @@ -1,48 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var Filters = require('../components/Filters') - -const mapStateToProps = (state) => { - return { - filters: state.filters, - pagination: state.pagination - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onUpdateStartTimeFilter: (e, unit) =>{ - e.preventDefault() - dispatch(actions.updateStartTimeFilter(e.target.value, unit)) - }, - onUpdateEndTimeFilter: (e, unit) =>{ - e.preventDefault() - dispatch(actions.updateEndTimeFilter(e.target.value, unit)) - }, - onToggleWithoutSchedule: () =>{ - dispatch(actions.toggleWithoutSchedule()) - }, - onToggleWithoutTimeTable: () =>{ - dispatch(actions.toggleWithoutTimeTable()) - }, - onResetFilters: (e, pagination) =>{ - dispatch(actions.checkConfirmModal(e, actions.resetFilters(dispatch), pagination.stateChanged, dispatch)) - }, - onFilter: (e, pagination) =>{ - dispatch(actions.checkConfirmModal(e, actions.filterQuery(dispatch), pagination.stateChanged, dispatch)) - }, - onSelect2Timetable: (e) => { - dispatch(actions.filterSelect2Timetable(e.params.data)) - }, - onSelect2JourneyPattern: (e) => { - dispatch(actions.filterSelect2JourneyPattern(e.params.data)) - }, - onSelect2VehicleJourney: (e) => { - dispatch(actions.filterSelect2VehicleJourney(e.params.data)) - } - } -} - -const FiltersList = connect(mapStateToProps, mapDispatchToProps)(Filters) - -module.exports = FiltersList diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Navigate.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Navigate.js deleted file mode 100644 index a3eca13c8..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Navigate.js +++ /dev/null @@ -1,18 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var NavigateComponent = require('../components/Navigate') - -const mapStateToProps = (state) => { - return { - vehicleJourneys: state.vehicleJourneys, - status: state.status, - pagination: state.pagination, - filters: state.filters - } -} - - -const Navigate = connect(mapStateToProps)(NavigateComponent) - -module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js deleted file mode 100644 index c1ce90d38..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js +++ /dev/null @@ -1,29 +0,0 @@ -var React = require('react') -var connect = require('react-redux').connect -var actions = require('../actions') -var SaveVehicleJourneysComponent = require('../components/SaveVehicleJourneys') - -const mapStateToProps = (state) => { - return { - editMode: state.editMode, - vehicleJourneys: state.vehicleJourneys, - page: state.pagination.page, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onEnterEditMode: () => { - dispatch(actions.enterEditMode()) - }, - onSubmitVehicleJourneys: (next, state) => { - actions.submitVehicleJourneys(dispatch, state, next) - } - } -} - -const SaveVehicleJourneys = connect(mapStateToProps, mapDispatchToProps)(SaveVehicleJourneysComponent) - -module.exports = SaveVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ToggleArrivals.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ToggleArrivals.js deleted file mode 100644 index 716485dbf..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/ToggleArrivals.js +++ /dev/null @@ -1,21 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var ToggleArrivals = require('../components/ToggleArrivals') - -const mapStateToProps = (state) => { - return { - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onToggleArrivals: () =>{ - dispatch(actions.toggleArrivals()) - } - } -} - -const ToggleArrivalsList = connect(mapStateToProps, mapDispatchToProps)(ToggleArrivals) - -module.exports = ToggleArrivalsList diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js deleted file mode 100644 index a4b3056ac..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js +++ /dev/null @@ -1,23 +0,0 @@ -var connect = require('react-redux').connect -var ToolsComponent = require('../components/Tools') -var actions = require('../actions') - -const mapStateToProps = (state) => { - return { - vehicleJourneys: state.vehicleJourneys, - editMode: state.editMode, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onCancelSelection: () => { - dispatch(actions.cancelSelection()) - } - } -} - -const Tools = connect(mapStateToProps, mapDispatchToProps)(ToolsComponent) - -module.exports = Tools diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js deleted file mode 100644 index f834e4457..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js +++ /dev/null @@ -1,32 +0,0 @@ -var actions = require('../actions') -var connect = require('react-redux').connect -var VehicleJourneys = require('../components/VehicleJourneys') - -const mapStateToProps = (state) => { - return { - editMode: state.editMode, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters, - stopPointsList: state.stopPointsList - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onLoadFirstPage: (filters) =>{ - dispatch(actions.fetchingApi()) - actions.fetchVehicleJourneys(dispatch, undefined, undefined, filters.queryString) - }, - onUpdateTime: (e, subIndex, index, timeUnit, isDeparture, isArrivalsToggled) => { - dispatch(actions.updateTime(e.target.value, subIndex, index, timeUnit, isDeparture, isArrivalsToggled)) - }, - onSelectVehicleJourney: (index) => { - dispatch(actions.selectVehicleJourney(index)) - } - } -} - -const VehicleJourneysList = connect(mapStateToProps, mapDispatchToProps)(VehicleJourneys) - -module.exports = VehicleJourneysList diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/AddVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/AddVehicleJourney.js deleted file mode 100644 index ffe080cdf..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/AddVehicleJourney.js +++ /dev/null @@ -1,37 +0,0 @@ -var actions = require('../../actions') -var connect = require('react-redux').connect -var CreateModal = require('../../components/tools/CreateModal') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - stopPointsList: state.stopPointsList, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onAddVehicleJourney: (data, selectedJourneyPattern, stopPointsList, selectedCompany) =>{ - dispatch(actions.addVehicleJourney(data, selectedJourneyPattern, stopPointsList, selectedCompany)) - }, - onOpenCreateModal: () =>{ - dispatch(actions.openCreateModal()) - }, - onSelect2JourneyPattern: (e) =>{ - dispatch(actions.selectJPCreateModal(e.params.data)) - }, - onSelect2Company: (e) => { - dispatch(actions.select2Company(e.params.data)) - } - } -} - -const AddVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(CreateModal) - -module.exports = AddVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DeleteVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DeleteVehicleJourneys.js deleted file mode 100644 index c012c9706..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DeleteVehicleJourneys.js +++ /dev/null @@ -1,22 +0,0 @@ -var actions = require('../../actions') -var connect = require('react-redux').connect -var DeleteVJComponent = require('../../components/tools/DeleteVehicleJourneys') - -const mapStateToProps = (state) => { - return { - vehicleJourneys: state.vehicleJourneys, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onDeleteVehicleJourneys: () =>{ - dispatch(actions.deleteVehicleJourneys()) - }, - } -} - -const DeleteVehicleJourneys = connect(mapStateToProps, mapDispatchToProps)(DeleteVJComponent) - -module.exports = DeleteVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js deleted file mode 100644 index 70e8fde4d..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js +++ /dev/null @@ -1,30 +0,0 @@ -var actions = require('../../actions') -var connect = require('react-redux').connect -var DuplicateVJComponent = require('../../components/tools/DuplicateVehicleJourney') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onOpenDuplicateModal: () =>{ - dispatch(actions.openDuplicateModal()) - }, - onDuplicateVehicleJourney: (addtionalTime, duplicateNumber, departureDelta) =>{ - dispatch(actions.duplicateVehicleJourney(addtionalTime, duplicateNumber, departureDelta)) - } - } -} - -const DuplicateVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(DuplicateVJComponent) - -module.exports = DuplicateVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/EditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/EditVehicleJourney.js deleted file mode 100644 index ac9772b8a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/EditVehicleJourney.js +++ /dev/null @@ -1,36 +0,0 @@ -var connect = require('react-redux').connect -var EditComponent = require('../../components/tools/EditVehicleJourney') -var actions = require('../../actions') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onOpenEditModal: (vj) =>{ - dispatch(actions.openEditModal(vj)) - }, - onEditVehicleJourney: (data, selectedCompany) =>{ - dispatch(actions.editVehicleJourney(data, selectedCompany)) - }, - onSelect2Company: (e) => { - dispatch(actions.select2Company(e.params.data)) - }, - onUnselect2Company: () => { - dispatch(actions.unselect2Company()) - }, - } -} - -const EditVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(EditComponent) - -module.exports = EditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/NotesEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/NotesEditVehicleJourney.js deleted file mode 100644 index 1619300d0..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/NotesEditVehicleJourney.js +++ /dev/null @@ -1,33 +0,0 @@ -var connect = require('react-redux').connect -var NotesEditComponent = require('../../components/tools/NotesEditVehicleJourney') -var actions = require('../../actions') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onOpenNotesEditModal: (vj) =>{ - dispatch(actions.openNotesEditModal(vj)) - }, - onToggleFootnoteModal: (footnote, isShown) => { - dispatch(actions.toggleFootnoteModal(footnote, isShown)) - }, - onNotesEditVehicleJourney: (footnotes) =>{ - dispatch(actions.editVehicleJourneyNotes(footnotes)) - } - } -} - -const NotesEditVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(NotesEditComponent) - -module.exports = NotesEditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/ShiftVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/ShiftVehicleJourney.js deleted file mode 100644 index 196f6722a..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/ShiftVehicleJourney.js +++ /dev/null @@ -1,30 +0,0 @@ -var actions = require('../../actions') -var connect = require('react-redux').connect -var ShiftVJComponent = require('../../components/tools/ShiftVehicleJourney') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onOpenShiftModal: () =>{ - dispatch(actions.openShiftModal()) - }, - onShiftVehicleJourney: (data) =>{ - dispatch(actions.shiftVehicleJourney(data)) - } - } -} - -const ShiftVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(ShiftVJComponent) - -module.exports = ShiftVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/TimetablesEditVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/TimetablesEditVehicleJourney.js deleted file mode 100644 index 1cfff407c..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/TimetablesEditVehicleJourney.js +++ /dev/null @@ -1,37 +0,0 @@ -var connect = require('react-redux').connect -var TimetablesEditComponent = require('../../components/tools/TimetablesEditVehicleJourney') -var actions = require('../../actions') - -const mapStateToProps = (state) => { - return { - modal: state.modal, - vehicleJourneys: state.vehicleJourneys, - status: state.status, - filters: state.filters - } -} - -const mapDispatchToProps = (dispatch) => { - return { - onModalClose: () =>{ - dispatch(actions.closeModal()) - }, - onOpenCalendarsEditModal: (vehicleJourneys) =>{ - dispatch(actions.openCalendarsEditModal(vehicleJourneys)) - }, - onDeleteCalendarModal: (timetable) => { - dispatch(actions.deleteCalendarModal(timetable)) - }, - onTimetablesEditVehicleJourney: (vehicleJourneys, timetables) =>{ - dispatch(actions.editVehicleJourneyTimetables(vehicleJourneys, timetables)) - }, - onSelect2Timetable: (e) =>{ - dispatch(actions.selectTTCalendarsModal(e.params.data)) - dispatch(actions.addSelectedTimetable()) - } - } -} - -const TimetablesEditVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(TimetablesEditComponent) - -module.exports = TimetablesEditVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js deleted file mode 100644 index 53bbcf952..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js +++ /dev/null @@ -1,102 +0,0 @@ -var React = require('react') -var render = require('react-dom').render -var Provider = require('react-redux').Provider -var createStore = require('redux').createStore -var vehicleJourneysApp = require('./reducers') -var App = require('./components/App') -var actions = require("./actions") -var enableBatching = require('./batch').enableBatching - -// 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') - -var selectedJP = [] - -if (window.journeyPatternId) - selectedJP.push(window.journeyPatternId) - -var initialState = { - editMode: false, - filters: { - selectedJourneyPatterns : selectedJP, - policy: window.perms, - toggleArrivals: false, - queryString: '', - query: { - interval: { - start:{ - hour: '00', - minute: '00' - }, - end:{ - hour: '23', - minute: '59' - } - }, - journeyPattern: { - published_name: '' - }, - vehicleJourney: { - objectid: '' - }, - company: { - name: '' - }, - timetable: { - comment: '' - }, - withoutSchedule: true, - withoutTimeTable: true - } - - }, - status: { - fetchSuccess: true, - isFetching: false - }, - vehicleJourneys: [], - stopPointsList: window.stopPoints, - pagination: { - page : 1, - totalCount: 0, - perPage: window.vehicleJourneysPerPage, - stateChanged: false - }, - modal: { - type: '', - modalProps: {}, - confirmModal: {} - } -} - -if (window.jpOrigin){ - initialState.filters.query.journeyPattern = { - id: window.jpOrigin.id, - name: window.jpOrigin.name, - published_name: window.jpOrigin.published_name, - objectid: window.jpOrigin.objectid - } - let params = { - 'q[journey_pattern_id_eq]': initialState.filters.query.journeyPattern.id, - 'q[objectid_cont]': initialState.filters.query.vehicleJourney.objectid - } - initialState.filters.queryString = actions.encodeParams(params) -} - -// const loggerMiddleware = createLogger() - -let store = createStore( - enableBatching(vehicleJourneysApp), - initialState, - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) -) - -render( - <Provider store={store}> - <App /> - </Provider>, - document.getElementById('vehicle_journeys_wip') -) diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/editMode.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/editMode.js deleted file mode 100644 index 2e8af1aa8..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/editMode.js +++ /dev/null @@ -1,12 +0,0 @@ -const editMode = (state = {}, action ) => { - switch (action.type) { - case "ENTER_EDIT_MODE": - return true - case "EXIT_EDIT_MODE": - return false - default: - return state - } -} - -module.exports = editMode diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js deleted file mode 100644 index b4a70ec08..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js +++ /dev/null @@ -1,75 +0,0 @@ -var _ = require('lodash') -var actions = require("../actions") -let newQuery, newInterval - -const filters = (state = {}, action) => { - switch (action.type) { - case 'RESET_FILTERS': - let interval = { - start:{ - hour: '00', - minute: '00' - }, - end:{ - hour: '23', - minute: '59' - } - } - newQuery = _.assign({}, state.query, {interval: interval, journeyPattern: {}, vehicleJourney: {}, timetable: {}, withoutSchedule: true, withoutTimeTable: true }) - return _.assign({}, state, {query: newQuery, queryString: ''}) - case 'TOGGLE_WITHOUT_SCHEDULE': - newQuery = _.assign({}, state.query, {withoutSchedule: !state.query.withoutSchedule}) - return _.assign({}, state, {query: newQuery}) - case 'TOGGLE_WITHOUT_TIMETABLE': - newQuery = _.assign({}, state.query, {withoutTimeTable: !state.query.withoutTimeTable}) - return _.assign({}, state, {query: newQuery}) - case 'UPDATE_END_TIME_FILTER': - newInterval = JSON.parse(JSON.stringify(state.query.interval)) - newInterval.end[action.unit] = actions.pad(action.val, action.unit) - if(parseInt(newInterval.start.hour + newInterval.start.minute) < parseInt(newInterval.end.hour + newInterval.end.minute)){ - newQuery = _.assign({}, state.query, {interval: newInterval}) - return _.assign({}, state, {query: newQuery}) - }else{ - return state - } - case 'UPDATE_START_TIME_FILTER': - newInterval = JSON.parse(JSON.stringify(state.query.interval)) - newInterval.start[action.unit] = actions.pad(action.val, action.unit) - if(parseInt(newInterval.start.hour + newInterval.start.minute) < parseInt(newInterval.end.hour + newInterval.end.minute)){ - newQuery = _.assign({}, state.query, {interval: newInterval}) - return _.assign({}, state, {query: newQuery}) - }else{ - return state - } - case 'SELECT_TT_FILTER': - newQuery = _.assign({}, state.query, {timetable : action.selectedItem}) - return _.assign({}, state, {query: newQuery}) - case 'SELECT_JP_FILTER': - newQuery = _.assign({}, state.query, {journeyPattern : action.selectedItem}) - return _.assign({}, state, {query: newQuery}) - case 'SELECT_VJ_FILTER': - newQuery = _.assign({}, state.query, {vehicleJourney : action.selectedItem}) - return _.assign({}, state, {query: newQuery}) - case 'TOGGLE_ARRIVALS': - return _.assign({}, state, {toggleArrivals: !state.toggleArrivals}) - case 'QUERY_FILTER_VEHICLEJOURNEYS': - actions.fetchVehicleJourneys(action.dispatch, undefined, undefined, state.queryString) - return state - case 'CREATE_QUERY_STRING': - let params = { - 'q[journey_pattern_id_eq]': state.query.journeyPattern.id || undefined, - 'q[objectid_cont]': state.query.vehicleJourney.objectid || undefined, - 'q[time_tables_id_eq]': state.query.timetable.id || undefined, - 'q[vehicle_journey_at_stops_departure_time_gteq]': (state.query.interval.start.hour + ':' + state.query.interval.start.minute), - 'q[vehicle_journey_at_stops_departure_time_lteq]': (state.query.interval.end.hour + ':' + state.query.interval.end.minute), - 'q[vehicle_journey_without_departure_time]': state.query.withoutSchedule, - 'q[vehicle_journey_without_time_table]': state.query.withoutTimeTable - } - let queryString = actions.encodeParams(params) - return _.assign({}, state, {queryString: queryString}) - default: - return state - } -} - -module.exports = filters diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/index.js deleted file mode 100644 index 4e0839102..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/index.js +++ /dev/null @@ -1,20 +0,0 @@ -var combineReducers = require('redux').combineReducers -var vehicleJourneys = require('./vehicleJourneys') -var pagination = require('./pagination') -var modal = require('./modal') -var status = require('./status') -var filters = require('./filters') -var editMode = require('./editMode') -var stopPointsList = require('./stopPointsList') - -const vehicleJourneysApp = combineReducers({ - vehicleJourneys, - pagination, - modal, - status, - filters, - editMode, - stopPointsList -}) - -module.exports = vehicleJourneysApp diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js deleted file mode 100644 index 1e5ff4294..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js +++ /dev/null @@ -1,138 +0,0 @@ -var _ = require('lodash') -let vehicleJourneysModal, newModalProps -const modal = (state = {}, action) => { - switch (action.type) { - case 'OPEN_CONFIRM_MODAL': - $('#ConfirmModal').modal('show') - return _.assign({}, state, { - type: 'confirm', - confirmModal: { - callback: action.callback, - } - }) - case 'EDIT_NOTES_VEHICLEJOURNEY_MODAL': - let vehicleJourneyModal = _.assign({}, action.vehicleJourney) - return { - type: 'notes_edit', - modalProps: { - vehicleJourney: vehicleJourneyModal - }, - confirmModal: {} - } - case 'TOGGLE_FOOTNOTE_MODAL': - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - if (action.isShown){ - newModalProps.vehicleJourney.footnotes.push(action.footnote) - }else{ - newModalProps.vehicleJourney.footnotes = newModalProps.vehicleJourney.footnotes.filter((f) => {return f.id != action.footnote.id }) - } - return _.assign({}, state, {modalProps: newModalProps}) - case 'EDIT_VEHICLEJOURNEY_MODAL': - return { - type: 'edit', - modalProps: { - vehicleJourney: action.vehicleJourney - }, - confirmModal: {} - } - case 'EDIT_CALENDARS_VEHICLEJOURNEY_MODAL': - vehicleJourneysModal = JSON.parse(JSON.stringify(action.vehicleJourneys)) - let uniqTimetables = [] - let timetable = {} - vehicleJourneysModal.map((vj, i) => { - vj.time_tables.map((tt, j) =>{ - if(!(_.find(uniqTimetables, tt))){ - uniqTimetables.push(tt) - } - }) - }) - return { - type: 'calendars_edit', - modalProps: { - vehicleJourneys: vehicleJourneysModal, - timetables: uniqTimetables - }, - confirmModal: {} - } - case 'SELECT_CP_EDIT_MODAL': - newModalProps = _.assign({}, state.modalProps, {selectedCompany : action.selectedItem}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'UNSELECT_CP_EDIT_MODAL': - newModalProps = _.assign({}, state.modalProps, {selectedCompany : undefined}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'SELECT_TT_CALENDAR_MODAL': - newModalProps = _.assign({}, state.modalProps, {selectedTimetable : action.selectedItem}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'ADD_SELECTED_TIMETABLE': - if(state.modalProps.selectedTimetable){ - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - if (!_.find(newModalProps.timetables, newModalProps.selectedTimetable)){ - newModalProps.timetables.push(newModalProps.selectedTimetable) - } - return _.assign({}, state, {modalProps: newModalProps}) - } - case 'DELETE_CALENDAR_MODAL': - newModalProps = JSON.parse(JSON.stringify(state.modalProps)) - let timetablesModal = state.modalProps.timetables.slice(0) - timetablesModal.map((tt, i) =>{ - if(tt == action.timetable){ - timetablesModal.splice(i, 1) - } - }) - vehicleJourneysModal = state.modalProps.vehicleJourneys.slice(0) - vehicleJourneysModal.map((vj) =>{ - vj.time_tables.map((tt, i) =>{ - if (_.isEqual(tt, action.timetable)){ - vj.time_tables.splice(i, 1) - } - }) - }) - newModalProps.vehicleJourneys = vehicleJourneysModal - newModalProps.timetables = timetablesModal - return _.assign({}, state, {modalProps: newModalProps}) - case 'CREATE_VEHICLEJOURNEY_MODAL': - let selectedJP = {} - if (window.jpOrigin){ - let stopAreas = _.map(window.jpOriginStopPoints, (sa, i) =>{ - return _.assign({}, {stop_area_short_description : {id : sa.stop_area_id}}) - }) - selectedJP = { - id: window.jpOrigin.id, - name: window.jpOrigin.name, - published_name: window.jpOrigin.published_name, - objectid: window.jpOrigin.objectid, - stop_areas: stopAreas - } - } - return { - type: 'create', - modalProps: window.jpOrigin ? {selectedJPModal: selectedJP} : {}, - confirmModal: {} - } - case 'SELECT_JP_CREATE_MODAL': - newModalProps = _.assign({}, state.modalProps, {selectedJPModal : action.selectedItem}) - return _.assign({}, state, {modalProps: newModalProps}) - case 'SHIFT_VEHICLEJOURNEY_MODAL': - return { - type: 'shift', - modalProps: {}, - confirmModal: {} - } - case 'DUPLICATE_VEHICLEJOURNEY_MODAL': - return { - type: 'duplicate', - modalProps: {}, - confirmModal: {} - } - case 'CLOSE_MODAL': - return { - type: '', - modalProps: {}, - confirmModal: {} - } - default: - return state - } -} - -module.exports = modal diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/pagination.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/pagination.js deleted file mode 100644 index a8189fc97..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/pagination.js +++ /dev/null @@ -1,38 +0,0 @@ -var _ = require('lodash') -const pagination = (state = {}, action) => { - switch (action.type) { - case 'RECEIVE_JOURNEY_PATTERNS': - case 'RECEIVE_VEHICLE_JOURNEYS': - return _.assign({}, state, {stateChanged: false}) - case 'GO_TO_PREVIOUS_PAGE': - if (action.pagination.page > 1){ - return _.assign({}, state, {page : action.pagination.page - 1, stateChanged: false}) - } - return state - case 'GO_TO_NEXT_PAGE': - if (state.totalCount - (action.pagination.page * action.pagination.perPage) > 0){ - return _.assign({}, state, {page : action.pagination.page + 1, stateChanged: false}) - } - return state - case 'ADD_VEHICLEJOURNEY': - case 'UPDATE_TIME': - toggleOnConfirmModal('modal') - return _.assign({}, state, {stateChanged: true}) - case 'RESET_PAGINATION': - return _.assign({}, state, {page: 1, stateChanged: false}) - case 'RECEIVE_TOTAL_COUNT': - return _.assign({}, state, {totalCount: action.total}) - case 'UPDATE_TOTAL_COUNT': - return _.assign({}, state, {totalCount : state.totalCount - action.diff }) - default: - return state - } -} - -const toggleOnConfirmModal = (arg = '') =>{ - $('.confirm').each(function(){ - $(this).data('toggle','') - }) -} - -module.exports = pagination diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/status.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/status.js deleted file mode 100644 index e658e164e..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/status.js +++ /dev/null @@ -1,19 +0,0 @@ -var _ = require('lodash') -var actions = require("../actions") - -const status = (state = {}, action) => { - switch (action.type) { - case 'UNAVAILABLE_SERVER': - return _.assign({}, state, {fetchSuccess: false}) - case 'FETCH_API': - return _.assign({}, state, {isFetching: true}) - case 'RECEIVE_VEHICLE_JOURNEYS': - return _.assign({}, state, {fetchSuccess: true, isFetching: false}) - case 'RECEIVE_ERRORS': - return _.assign({}, state, {fetchSuccess: true, isFetching: false}) - default: - return state - } -} - -module.exports = status diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/stopPointsList.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/stopPointsList.js deleted file mode 100644 index 9abacc8c8..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/stopPointsList.js +++ /dev/null @@ -1,8 +0,0 @@ -const stopPointsList = (state = [], action) => { - switch (action.type) { - default: - return state - } -} - -module.exports = stopPointsList diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js deleted file mode 100644 index 969b2ddd8..000000000 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js +++ /dev/null @@ -1,229 +0,0 @@ -var _ = require('lodash') -var actions = require("../actions") - -const vehicleJourney= (state = {}, action, keep) => { - switch (action.type) { - case 'SELECT_VEHICLEJOURNEY': - return _.assign({}, state, {selected: !state.selected}) - case 'CANCEL_SELECTION': - return _.assign({}, state, {selected: false}) - case 'ADD_VEHICLEJOURNEY': - let pristineVjasList = [] - _.each(action.stopPointsList, (sp) =>{ - let newVjas = { - delta: 0, - departure_time:{ - hour: '00', - minute: '00' - }, - arrival_time:{ - hour: '00', - minute: '00' - }, - stop_point_objectid: sp.object_id, - stop_area_cityname: sp.city_name, - dummy: true - } - _.each(action.selectedJourneyPattern.stop_areas, (jp) =>{ - if (jp.stop_area_short_description.id == sp.id){ - newVjas.dummy = false - return - } - }) - pristineVjasList.push(newVjas) - }) - return { - company: action.selectedCompany, - journey_pattern: action.selectedJourneyPattern, - published_journey_name: action.data.published_journey_name.value, - published_journey_identifier: action.data.published_journey_identifier.value, - objectid: '', - footnotes: [], - time_tables: [], - vehicle_journey_at_stops: pristineVjasList, - selected: false, - deletable: false, - transport_mode: window.transportMode ? window.transportMode : 'undefined', - transport_submode: window.transportSubmode ? window.transportSubmode : 'undefined' - } - case 'DUPLICATE_VEHICLEJOURNEY': - case 'SHIFT_VEHICLEJOURNEY': - let shiftedArray, shiftedSchedule, shiftedVjas - shiftedArray = state.vehicle_journey_at_stops.map((vjas, i) => { - if (!vjas.dummy){ - shiftedSchedule = actions.getShiftedSchedule(vjas, action.addtionalTime) - - shiftedVjas = _.assign({}, state.vehicle_journey_at_stops[i], shiftedSchedule) - vjas = _.assign({}, state.vehicle_journey_at_stops[i], shiftedVjas) - if(!keep){ - delete vjas['id'] - } - return vjas - }else { - if(!keep){ - delete vjas['id'] - } - return vjas - } - }) - return _.assign({}, state, {vehicle_journey_at_stops: shiftedArray}) - case 'UPDATE_TIME': - let vj, vjas, vjasArray, newSchedule - vjasArray = state.vehicle_journey_at_stops.map((vjas, i) =>{ - if(i == action.subIndex){ - newSchedule = { - departure_time: _.assign({}, vjas.departure_time), - arrival_time: _.assign({}, vjas.arrival_time) - } - if (action.isDeparture){ - newSchedule.departure_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) - if(!action.isArrivalsToggled) - newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) - newSchedule = actions.getDelta(newSchedule) - if(newSchedule.delta < 0){ - return vjas - } - return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta}) - }else{ - newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) - newSchedule = actions.getDelta(newSchedule) - if(newSchedule.delta < 0){ - return vjas - } - return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta}) - } - }else{ - return vjas - } - }) - return _.assign({}, state, {vehicle_journey_at_stops: vjasArray}) - default: - return state - } -} - -const vehicleJourneys = (state = [], action) => { - switch (action.type) { - case 'RECEIVE_VEHICLE_JOURNEYS': - return [...action.json] - case 'RECEIVE_ERRORS': - return [...action.json] - case 'GO_TO_PREVIOUS_PAGE': - if(action.pagination.page > 1){ - actions.fetchVehicleJourneys(action.dispatch, action.pagination.page, action.nextPage, action.queryString) - } - return state - case 'GO_TO_NEXT_PAGE': - if (action.pagination.totalCount - (action.pagination.page * action.pagination.perPage) > 0){ - actions.fetchVehicleJourneys(action.dispatch, action.pagination.page, action.nextPage, action.queryString) - } - return state - case 'ADD_VEHICLEJOURNEY': - return [ - vehicleJourney(state, action), - ...state - ] - case 'EDIT_VEHICLEJOURNEY': - return state.map((vj, i) => { - if (vj.selected){ - return _.assign({}, vj, { - company: action.selectedCompany, - published_journey_name: action.data.published_journey_name.value, - published_journey_identifier: action.data.published_journey_identifier.value, - }) - }else{ - return vj - } - }) - case 'EDIT_VEHICLEJOURNEY_NOTES': - return state.map((vj, i) => { - if (vj.selected){ - return _.assign({}, vj, { - footnotes: action.footnotes - }) - }else{ - return vj - } - }) - case 'EDIT_VEHICLEJOURNEYS_TIMETABLES': - let newTimetables = JSON.parse(JSON.stringify(action.timetables)) - return state.map((vj,i) =>{ - if(vj.selected){ - let updatedVJ = _.assign({}, vj) - action.vehicleJourneys.map((vjm, j) =>{ - if(vj.objectid == vjm.objectid){ - updatedVJ.time_tables = newTimetables - } - }) - return updatedVJ - }else{ - return vj - } - }) - case 'SHIFT_VEHICLEJOURNEY': - return state.map((vj, i) => { - if (vj.selected){ - return vehicleJourney(vj, action, true) - }else{ - return vj - } - }) - case 'DUPLICATE_VEHICLEJOURNEY': - let dupeVj - let dupes = [] - let selectedIndex - let val = action.addtionalTime - let departureDelta = action.departureDelta - state.map((vj, i) => { - if(vj.selected){ - selectedIndex = i - for (i = 0; i< action.duplicateNumber; i++){ - // We check if the departureDelta is != 0 to create the first VJ on the updated deparure time if it is the case - // let delta = departureDelta == 0 ? 1 : 0 - // action.addtionalTime = (val * (i + delta)) + departureDelta - action.addtionalTime = (val * (i + 1)) + departureDelta - dupeVj = vehicleJourney(vj, action, false) - dupeVj.published_journey_name = dupeVj.published_journey_name + '-' + i - dupeVj.selected = false - delete dupeVj['objectid'] - dupes.push(dupeVj) - } - } - }) - let concatArray = state.slice(0, selectedIndex + 1).concat(dupes) - concatArray = concatArray.concat(state.slice(selectedIndex + 1)) - return concatArray - case 'DELETE_VEHICLEJOURNEYS': - return state.map((vj, i) =>{ - if (vj.selected){ - return _.assign({}, vj, {deletable: true, selected: false}) - } else { - return vj - } - }) - case 'SELECT_VEHICLEJOURNEY': - return state.map((vj, i) =>{ - if (i == action.index){ - return vehicleJourney(vj, action) - } else { - return vj - } - }) - case 'CANCEL_SELECTION': - return state.map((vj) => { - return vehicleJourney(vj, action) - }) - case 'UPDATE_TIME': - return state.map((vj, i) =>{ - if (i == action.index){ - return vehicleJourney(vj, action) - } else { - return vj - } - }) - default: - return state - } -} - -module.exports = vehicleJourneys diff --git a/app/assets/javascripts/filters/calendar.js b/app/assets/javascripts/filters/calendar.js deleted file mode 100644 index a4e84777c..000000000 --- a/app/assets/javascripts/filters/calendar.js +++ /dev/null @@ -1,6 +0,0 @@ -const DateFilter = require('../helpers/date_filters') - -$(document).ready(function(){ - const calendarDF = new DateFilter("#calendar_filter_btn", "Tous les champs du filtre de date doivent ĂȘtre remplis", "#q_contains_date_NUMi") - calendarDF() -}) diff --git a/app/assets/javascripts/filters/import.js b/app/assets/javascripts/filters/import.js deleted file mode 100644 index bb665d5ad..000000000 --- a/app/assets/javascripts/filters/import.js +++ /dev/null @@ -1,6 +0,0 @@ -const DateFilter = require('../helpers/date_filters') - -$(document).ready(function(){ - const importDF = new DateFilter("#import_filter_btn", "Tous les champs du filtre de date doivent ĂȘtre remplis", "#q_started_at_begin_NUMi", "#q_started_at_end_NUMi") - importDF() -}) diff --git a/app/assets/javascripts/filters/time_table.js b/app/assets/javascripts/filters/time_table.js deleted file mode 100644 index 9e24d03fe..000000000 --- a/app/assets/javascripts/filters/time_table.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - const DateFilter = require('../helpers/date_filters') - - const timetableDF = new DateFilter("#time_table_filter_btn", window.I18n.fr.time_tables.error_period_filter, "#q_start_date_gteq_NUMi", "#q_end_date_lteq_NUMi") - - timetableDF() -}) diff --git a/app/assets/javascripts/filters/workbench.js b/app/assets/javascripts/filters/workbench.js deleted file mode 100644 index af3e13c59..000000000 --- a/app/assets/javascripts/filters/workbench.js +++ /dev/null @@ -1,6 +0,0 @@ -const DateFilter = require('../helpers/date_filters') - -$(document).ready(function(){ - const workbenchDF = new DateFilter("#referential_filter_btn", window.I18n.fr.referentials.error_period_filter, "#q_validity_period_begin_gteq_NUMi", "#q_validity_period_end_lteq_NUMi") - workbenchDF() -}) diff --git a/app/assets/javascripts/helpers/date_filters.js b/app/assets/javascripts/helpers/date_filters.js deleted file mode 100644 index 1f48bb28f..000000000 --- a/app/assets/javascripts/helpers/date_filters.js +++ /dev/null @@ -1,38 +0,0 @@ -const DateFilter = function(buttonId, message, ...inputIds) { - this.buttonId = buttonId - this.inputIds = inputIds - this.message = message - - const getVal = (str, key) => { - let newStr = str.replace(/NUM/, key) - return $(newStr).val() - } - - const getDates = () => { - return this.inputIds.reduce((arr, id) => { - let newIds = [1, 2, 3].map(key => getVal(id, key)) - arr.push(...newIds) - return arr - },[]) - } - - const allInputFilled = () => { - return getDates().every(date => !!date) - } - - const noInputFilled = () => { - return getDates().every(date => !date) - } - - const execute = () => { - $(this.buttonId).on("click", (e) => { - if (allInputFilled() == false && noInputFilled() == false) { - e.preventDefault() - alert(this.message) - } - }) - } - return execute -} - -module.exports = DateFilter |
