diff options
| author | Zog | 2017-12-27 13:42:39 +0100 |
|---|---|---|
| committer | Zog | 2017-12-27 13:42:39 +0100 |
| commit | 607fa5e03289a10b60a773bc40af38f1d721bbea (patch) | |
| tree | b27f8e9825e79675c606571ff7efb9953b8a4917 /app | |
| parent | 78e2d256f895c1014a3def5f2ef6509086755215 (diff) | |
| download | chouette-core-607fa5e03289a10b60a773bc40af38f1d721bbea.tar.bz2 | |
Refs #5407 @2h; Model implementation
- Link PurchaseWindows to VehicleJourneys in the model
- Add an autocompletion endpoint
Diffstat (limited to 'app')
11 files changed, 46 insertions, 22 deletions
diff --git a/app/controllers/autocomplete_purchase_windows_controller.rb b/app/controllers/autocomplete_purchase_windows_controller.rb new file mode 100644 index 000000000..70dc5a346 --- /dev/null +++ b/app/controllers/autocomplete_purchase_windows_controller.rb @@ -0,0 +1,12 @@ +class AutocompletePurchaseWindowsController < ChouetteController + respond_to :json, :only => [:index] + + requires_feature :purchase_windows + + include ReferentialSupport + + protected + def collection + @purchase_windows = referential.purchase_windows.search(params[:q]).result.paginate(page: params[:page]) + end +end diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js index d5eda629c..9a5ca940b 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -107,7 +107,8 @@ const actions = { type: 'SELECT_PURCHASE_WINDOW_MODAL', selectedItem:{ id: selectedTT.id, - comment: selectedTT.comment, + name: selectedTT.name, + color: selectedTT.color, objectid: selectedTT.objectid } }), diff --git a/app/javascript/vehicle_journeys/components/Filters.js b/app/javascript/vehicle_journeys/components/Filters.js index db6707520..3bc4f7ff7 100644 --- a/app/javascript/vehicle_journeys/components/Filters.js +++ b/app/javascript/vehicle_journeys/components/Filters.js @@ -33,6 +33,7 @@ export default function Filters({filters, pagination, onFilter, onResetFilters, onSelect2Timetable={onSelect2Timetable} hasRoute={true} chunkURL={("/autocomplete_time_tables.json?route_id=" + String(window.route_id))} + searchKey={"comment_or_objectid_cont_any"} filters={filters} isFilter={true} /> @@ -165,4 +166,4 @@ Filters.propTypes = { onSelect2Timetable: PropTypes.func.isRequired, onSelect2JourneyPattern: PropTypes.func.isRequired, onSelect2VehicleJourney: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js index cf51e50f0..5465127e8 100644 --- a/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js @@ -95,6 +95,7 @@ export default class PurchaseWindowsEditVehicleJourney extends Component { <TimetableSelect2 onSelect2Timetable={this.props.onSelect2Timetable} chunkURL={'/autocomplete_purchase_windows.json'} + searchKey={"name_or_objectid_cont_any"} isFilter={false} /> </div> diff --git a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js index 6629135dd..26377c0d5 100644 --- a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js @@ -67,7 +67,7 @@ export default class TimetablesEditVehicleJourney extends Component { <div className='wrapper'> <div> <a href={this.timeTableURL(tt)} target="_blank">{tt.comment}</a> </div> { - this.props.editMode && + this.props.editMode && <div> <a href='#' @@ -85,13 +85,14 @@ export default class TimetablesEditVehicleJourney extends Component { </div> )} { - this.props.editMode && + this.props.editMode && <div className='nested-fields'> <div className='wrapper'> <div> <TimetableSelect2 onSelect2Timetable={this.props.onSelect2Timetable} chunkURL={'/autocomplete_time_tables.json'} + searchKey={"comment_or_objectid_cont_any"} isFilter={false} /> </div> @@ -103,7 +104,7 @@ export default class TimetablesEditVehicleJourney extends Component { </div> </div> { - this.props.editMode && + this.props.editMode && <div className='modal-footer'> <button className='btn btn-link' @@ -144,4 +145,4 @@ TimetablesEditVehicleJourney.propTypes = { onDeleteCalendarModal: PropTypes.func.isRequired, onSelect2Timetable: PropTypes.func.isRequired, disabled: PropTypes.bool.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js index 19c183839..eb8651be2 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js @@ -31,12 +31,10 @@ export default class BSelect4 extends Component { url: origin + path + this.props.chunkURL, dataType: 'json', delay: '500', - data: function(params) { - return { - q: { - comment_or_objectid_cont_any: params.term - } - }; + data: (params) => { + let q = {} + q[this.props.searchKey] = params.term + return {q} }, processResults: function(data, params) { return { @@ -44,7 +42,7 @@ export default class BSelect4 extends Component { item => _.assign( {}, item, - {text: '<strong>' + "<span class='fa fa-circle' style='color:" + (item.color ? item.color : '#4B4B4B') + "'></span> " + item.comment + ' - ' + item.short_id + '</strong><br/><small>' + (item.day_types ? item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') : "") + '</small>'} + {text: '<strong>' + "<span class='fa fa-circle' style='color:" + (item.color ? item.color : '#4B4B4B') + "'></span> " + (item.comment || item.name) + ' - ' + item.short_id + '</strong><br/><small>' + (item.day_types ? item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') : "") + '</small>'} ) ) }; @@ -62,4 +60,4 @@ export default class BSelect4 extends Component { const formatRepo = (props) => { if(props.text) return props.text -}
\ No newline at end of file +} diff --git a/app/models/calendar/period.rb b/app/models/calendar/period.rb index 1c423dfcc..56ab722fe 100644 --- a/app/models/calendar/period.rb +++ b/app/models/calendar/period.rb @@ -1,5 +1,5 @@ class Calendar < ActiveRecord::Base - + class Period include ActiveAttr::Model diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb index 9f68d4408..742c18141 100644 --- a/app/models/chouette/purchase_window.rb +++ b/app/models/chouette/purchase_window.rb @@ -11,10 +11,12 @@ module Chouette has_paper_trail belongs_to :referential + has_and_belongs_to_many :vehicle_journeys, :class_name => 'Chouette::VehicleJourney' validates_presence_of :name, :referential scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) } + scope :text_search, ->(q) { where("unaccent(name) ILIKE unaccent(:q) OR objectid ILIKE :q", q: "%#{q}%")} def self.ransackable_scopes(auth_object = nil) [:contains_date] diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 8a2435fbc..61aa77d27 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -23,6 +23,7 @@ module Chouette belongs_to :journey_pattern has_and_belongs_to_many :footnotes, :class_name => 'Chouette::Footnote' + has_and_belongs_to_many :purchase_windows, :class_name => 'Chouette::PurchaseWindow' validates_presence_of :route validates_presence_of :journey_pattern @@ -40,11 +41,6 @@ module Chouette before_validation :set_default_values, :calculate_vehicle_journey_at_stop_day_offset - # XXX - def purchase_windows - Chouette::PurchaseWindow.limit(2) - end - # TODO: Remove this validator # We've eliminated this validation because it prevented vehicle journeys # from being saved with at-stops having a day offset greater than 0, diff --git a/app/models/concerns/period_support.rb b/app/models/concerns/period_support.rb index f512c4e89..e17451fe4 100644 --- a/app/models/concerns/period_support.rb +++ b/app/models/concerns/period_support.rb @@ -7,7 +7,7 @@ module PeriodSupport def init_date_ranges self.date_ranges ||= [] end - + ### Calendar::Period # Required by coocon def build_period @@ -77,4 +77,4 @@ module PeriodSupport private :clear_periods end -end
\ No newline at end of file +end diff --git a/app/views/autocomplete_purchase_windows/index.rabl b/app/views/autocomplete_purchase_windows/index.rabl new file mode 100644 index 000000000..1d0287602 --- /dev/null +++ b/app/views/autocomplete_purchase_windows/index.rabl @@ -0,0 +1,12 @@ +collection @purchase_windows, :object_root => false + +node do |window| + { + :id => window.id, + :name => window.name, + :objectid => window.objectid, + :color => window.color, + :short_id => window.get_objectid.short_id, + :text => "<strong><span class='fa fa-circle' style='color:" + (window.color ? window.color : '#4b4b4b') + "'></span> " + window.name + " - " + window.get_objectid.short_id + "</strong>" + } +end |
