From 1019debe93d776f0d38ae69099e6492a7dd4a87c Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Thu, 15 Mar 2018 12:41:29 -0700 Subject: Refs #6075 Change default attributes for stop areas --- app/helpers/routes_helper.rb | 2 +- app/javascript/packs/routes/edit.js | 1 + app/javascript/routes/actions/index.js | 7 ++++++- app/javascript/routes/components/BSelect2.js | 1 + app/javascript/routes/components/StopPoint.js | 6 ++++-- app/javascript/routes/index.js | 5 +++-- app/javascript/routes/reducers/stopPoints.js | 5 +++-- app/models/chouette/stop_point.rb | 7 ------- app/views/autocomplete_stop_areas/around.rabl | 1 + app/views/autocomplete_stop_areas/index.rabl | 3 ++- app/views/autocomplete_stop_areas/show.rabl | 3 ++- app/views/stop_areas/autocomplete.rabl | 3 ++- spec/models/chouette/route/route_stop_points_spec.rb | 18 ------------------ 13 files changed, 26 insertions(+), 36 deletions(-) diff --git a/app/helpers/routes_helper.rb b/app/helpers/routes_helper.rb index 61714a066..84b4015a2 100644 --- a/app/helpers/routes_helper.rb +++ b/app/helpers/routes_helper.rb @@ -24,7 +24,7 @@ module RoutesHelper stop_area_attributes = stop_point.stop_area.attributes.slice("name","city_name", "zip_code", "registration_number", "longitude", "latitude", "area_type", "comment") stop_area_attributes["short_name"] = truncate(stop_area_attributes["name"], :length => 30) || "" stop_point_attributes = stop_point.attributes.slice("for_boarding","for_alighting") - stop_area_attributes.merge(stop_point_attributes).merge(stoppoint_id: stop_point.id, stoparea_id: stop_point.stop_area.id).merge(user_objectid: stop_point.stop_area.user_objectid) + stop_area_attributes.merge(stop_point_attributes).merge(stoppoint_id: stop_point.id, stoparea_id: stop_point.stop_area.id, stoparea_kind: stop_point.stop_area.kind).merge(user_objectid: stop_point.stop_area.user_objectid) end data = data.to_json if serialize data diff --git a/app/javascript/packs/routes/edit.js b/app/javascript/packs/routes/edit.js index 81745ad23..fc7aa203d 100644 --- a/app/javascript/packs/routes/edit.js +++ b/app/javascript/packs/routes/edit.js @@ -29,6 +29,7 @@ const getInitialState = () => { state.push({ stoppoint_id: v.stoppoint_id, stoparea_id: v.stoparea_id, + stoparea_kind: v.stoparea_kind, user_objectid: v.user_objectid, short_name: v.short_name ? v.short_name.replace("'", "\'") : '', area_type: v.area_type, diff --git a/app/javascript/routes/actions/index.js b/app/javascript/routes/actions/index.js index 13b2d60b2..5fbf5bce9 100644 --- a/app/javascript/routes/actions/index.js +++ b/app/javascript/routes/actions/index.js @@ -56,7 +56,12 @@ const actions = { unselectMarker: (index) => ({ type: 'UNSELECT_MARKER', index - }) + }), + defaultAttribute: (attribute, stopAreaKind) => { + if (attribute !== '') return attribute + if (stopAreaKind === undefined) return '' + return stopAreaKind === "commercial" ? "normal" : "forbidden" + } } module.exports = actions diff --git a/app/javascript/routes/components/BSelect2.js b/app/javascript/routes/components/BSelect2.js index 035bce155..89e1b6cfa 100644 --- a/app/javascript/routes/components/BSelect2.js +++ b/app/javascript/routes/components/BSelect2.js @@ -17,6 +17,7 @@ export default class BSelect3 extends Component { this.props.onChange(this.props.index, { text: e.currentTarget.textContent, stoparea_id: e.currentTarget.value, + stoparea_kind: e.params.data.kind, user_objectid: e.params.data.user_objectid, longitude: e.params.data.longitude, latitude: e.params.data.latitude, diff --git a/app/javascript/routes/components/StopPoint.js b/app/javascript/routes/components/StopPoint.js index af51a6bb4..368ec8261 100644 --- a/app/javascript/routes/components/StopPoint.js +++ b/app/javascript/routes/components/StopPoint.js @@ -4,6 +4,8 @@ import PropTypes from 'prop-types' import BSelect2 from './BSelect2' import OlMap from './OlMap' +import { defaultAttribute } from '../actions' + export default function StopPoint(props, {I18n}) { return (
@@ -17,14 +19,14 @@ export default function StopPoint(props, {I18n}) {
-
- diff --git a/app/javascript/routes/index.js b/app/javascript/routes/index.js index febae7d54..3c7322953 100644 --- a/app/javascript/routes/index.js +++ b/app/javascript/routes/index.js @@ -26,6 +26,7 @@ const getInitialState = () => { state.push({ stoppoint_id: v.stoppoint_id, stoparea_id: v.stoparea_id, + stoparea_kind: v.stoparea_kind, user_objectid: v.user_objectid, short_name: v.short_name ? v.short_name.replace("'", "\'") : '', area_type: v.area_type, @@ -36,8 +37,8 @@ const getInitialState = () => { 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", + for_boarding: v.for_boarding || '', + for_alighting: v.for_alighting || '', longitude: v.longitude || 0, latitude: v.latitude || 0, comment: v.comment ? v.comment.replace("'", "\'") : '', diff --git a/app/javascript/routes/reducers/stopPoints.js b/app/javascript/routes/reducers/stopPoints.js index 0b42b504f..ba183d002 100644 --- a/app/javascript/routes/reducers/stopPoints.js +++ b/app/javascript/routes/reducers/stopPoints.js @@ -8,8 +8,8 @@ const stopPoint = (state = {}, action, length) => { text: '', index: length, edit: true, - for_boarding: 'normal', - for_alighting: 'normal', + for_boarding: '', + for_alighting: '', olMap: { isOpened: false, json: {} @@ -68,6 +68,7 @@ const stopPoints = (state = [], action) => { stoppoint_id: t.stoppoint_id, text: action.text.text, stoparea_id: action.text.stoparea_id, + stoparea_kind: action.text.stoparea_kind, user_objectid: action.text.user_objectid, latitude: action.text.latitude, longitude: action.text.longitude, diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb index 42a207774..6b363cd93 100644 --- a/app/models/chouette/stop_point.rb +++ b/app/models/chouette/stop_point.rb @@ -30,13 +30,6 @@ module Chouette delegate :name, to: :stop_area - after_create :set_defaults - def set_defaults - value = stop_area.kind == 'commercial' ? 'normal' : 'forbidden' - update_attribute :for_boarding, value - update_attribute :for_alighting, value - end - before_destroy :remove_dependent_journey_pattern_stop_points def remove_dependent_journey_pattern_stop_points route.journey_patterns.each do |jp| diff --git a/app/views/autocomplete_stop_areas/around.rabl b/app/views/autocomplete_stop_areas/around.rabl index d067dc4d0..116038639 100644 --- a/app/views/autocomplete_stop_areas/around.rabl +++ b/app/views/autocomplete_stop_areas/around.rabl @@ -15,6 +15,7 @@ child @stop_areas, root: :features, object_root: false do area_type: Chouette::AreaType.find(s.area_type).label, registration_number: s.registration_number, stoparea_id: s.id, + stoparea_kind: s.kind, text: "#{s.name}, #{s.zip_code} #{s.city_name}", user_objectid: s.user_objectid, zip_code: s.zip_code, diff --git a/app/views/autocomplete_stop_areas/index.rabl b/app/views/autocomplete_stop_areas/index.rabl index c92b708f4..786f942d6 100644 --- a/app/views/autocomplete_stop_areas/index.rabl +++ b/app/views/autocomplete_stop_areas/index.rabl @@ -15,7 +15,8 @@ node do |stop_area| :latitude => stop_area.latitude, :area_type => Chouette::AreaType.find(stop_area.area_type).label, :comment => stop_area.comment, - :text => stop_area.full_name + :text => stop_area.full_name, + :kind => stop_area.kind } end diff --git a/app/views/autocomplete_stop_areas/show.rabl b/app/views/autocomplete_stop_areas/show.rabl index 73ce277cf..6ebf38900 100644 --- a/app/views/autocomplete_stop_areas/show.rabl +++ b/app/views/autocomplete_stop_areas/show.rabl @@ -9,7 +9,8 @@ node do |stop_area| :short_name => truncate(stop_area.name, :length => 30) || "", :zip_code => stop_area.zip_code || "", :city_name => stop_area.city_name || "", - :short_city_name => truncate(stop_area.city_name, :length => 15) || "" + :short_city_name => truncate(stop_area.city_name, :length => 15) || "", + :kind => stop_area.kind } end diff --git a/app/views/stop_areas/autocomplete.rabl b/app/views/stop_areas/autocomplete.rabl index a5f0bd5ec..26fca36b2 100644 --- a/app/views/stop_areas/autocomplete.rabl +++ b/app/views/stop_areas/autocomplete.rabl @@ -15,7 +15,8 @@ node do |stop_area| :latitude => stop_area.latitude, :area_type => stop_area.area_type, :comment => stop_area.comment, - :text => "#{I18n.t("area_types.label.#{stop_area.area_type}")}#{stop_area.full_name}" + :text => "#{I18n.t("area_types.label.#{stop_area.area_type}")}#{stop_area.full_name}", + :kind => stop_area.kind } end diff --git a/spec/models/chouette/route/route_stop_points_spec.rb b/spec/models/chouette/route/route_stop_points_spec.rb index f8edadfee..af26f017a 100644 --- a/spec/models/chouette/route/route_stop_points_spec.rb +++ b/spec/models/chouette/route/route_stop_points_spec.rb @@ -86,24 +86,6 @@ RSpec.describe Chouette::Route, :type => :model do end end end - - context 'defaults attributes' do - let(:new_stop_area) { create :stop_area, kind: 'non_commercial', area_type: 'deposit' } - let(:new_stop_point) { create :stop_point, stop_area_id: new_stop_area.id } - it 'should have the correct default attributes' do - subject.stop_points << new_stop_point - subject.stop_points.each do |sp| - # binding.pry - if sp.stop_area.commercial? - expect(sp.for_boarding).to eq('normal') - expect(sp.for_alighting).to eq('normal') - else - expect(sp.for_boarding).to eq('forbidden') - expect(sp.for_alighting).to eq('forbidden') - end - end - end - end end describe "#stop_areas" do -- cgit v1.2.3