aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorjpl2017-05-17 12:10:02 +0200
committerjpl2017-05-17 12:10:10 +0200
commite217e93790f9b004ea30805e66bed5e3a25f67f4 (patch)
treede72c908b1bed64147dee77c83b2caeea9c407d9 /app/assets/javascripts
parent6b7e24df14a4c18cb50b96e9b308bd6f3caf924d (diff)
downloadchouette-core-e217e93790f9b004ea30805e66bed5e3a25f67f4.tar.bz2
Refs #3399: adding objectid filter on vj
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js6
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js19
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js2
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/VJSelect2.js67
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js3
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/index.js4
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js4
7 files changed, 100 insertions, 5 deletions
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
index 06f783620..eb7ab2c6d 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
@@ -217,6 +217,12 @@ const actions = {
published_name: selectedJP.published_name
}
}),
+ filterSelect2VehicleJourney: (selectedVJ) => ({
+ type : 'SELECT_VJ_FILTER',
+ selectedItem: {
+ objectid: selectedVJ.objectid
+ }
+ }),
createQueryString: () => ({
type: 'CREATE_QUERY_STRING'
}),
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
index 1895f23b7..5a8128688 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
@@ -1,16 +1,26 @@
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, onSelect2Timetable, onSelect2JourneyPattern}) => {
+const Filters = ({filters, pagination, onFilter, onResetFilters, onUpdateStartTimeFilter, onUpdateEndTimeFilter, onToggleWithoutSchedule, 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 w40'>
+ <div className='form-group w33'>
<MissionSelect2
onSelect2JourneyPattern={onSelect2JourneyPattern}
filters={filters}
@@ -19,7 +29,7 @@ const Filters = ({filters, pagination, onFilter, onResetFilters, onUpdateStartTi
</div>
{/* Calendriers */}
- <div className='form-group w40'>
+ <div className='form-group w33'>
<TimetableSelect2
onSelect2Timetable={onSelect2Timetable}
hasRoute={true}
@@ -131,7 +141,8 @@ Filters.propTypes = {
onUpdateStartTimeFilter: PropTypes.func.isRequired,
onUpdateEndTimeFilter: PropTypes.func.isRequired,
onSelect2Timetable: PropTypes.func.isRequired,
- onSelect2JourneyPattern: 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/tools/select2s/MissionSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
index bd2c84c16..c8a160510 100644
--- 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
@@ -32,7 +32,7 @@ class BSelect4 extends React.Component{
delay: '500',
data: function(params) {
return {
- q: {published_name_or_objectid_cont: params.term},
+ q: {published_name_cont: params.term},
};
},
processResults: function(data, params) {
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
new file mode 100644
index 000000000..fe927ac84
--- /dev/null
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/VJSelect2.js
@@ -0,0 +1,67 @@
+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('/', 7).join('/')
+
+
+class BSelect4b extends React.Component{
+ constructor(props) {
+ super(props)
+ }
+ humanOID(oid) {
+ var a = oid.split(':')
+ return a[a.length - 1]
+ }
+
+ 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%',
+ 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: _.last(_.split(item.objectid, ':')) }
+ )
+ )
+ };
+ },
+ cache: true
+ },
+ minimumInputLength: 2,
+ templateResult: formatRepo
+ }}
+ />
+ )
+ }
+}
+
+const formatRepo = (props) => {
+ if(props.text) return props.text
+}
+
+module.exports = BSelect4b
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
index 7570dd466..9650bc646 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
@@ -33,6 +33,9 @@ const mapDispatchToProps = (dispatch) => {
},
onSelect2JourneyPattern: (e) => {
dispatch(actions.filterSelect2JourneyPattern(e.params.data))
+ },
+ onSelect2VehicleJourney: (e) => {
+ dispatch(actions.filterSelect2VehicleJourney(e.params.data))
}
}
}
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js
index 4c9423c1f..d2d255b3b 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js
@@ -38,6 +38,9 @@ var initialState = {
journeyPattern: {
published_name: ''
},
+ vehicleJourney: {
+ objectid: ''
+ },
company: {
name: ''
},
@@ -76,6 +79,7 @@ if (window.jpOrigin){
}
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)
}
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js
index cd065e362..c1cce7492 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js
@@ -44,6 +44,9 @@ const filters = (state = {}, action) => {
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':
@@ -52,6 +55,7 @@ const filters = (state = {}, action) => {
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),