diff options
| author | cedricnjanga | 2018-03-15 12:41:29 -0700 | 
|---|---|---|
| committer | Johan Van Ryseghem | 2018-03-29 11:28:28 +0200 | 
| commit | 1019debe93d776f0d38ae69099e6492a7dd4a87c (patch) | |
| tree | 16903e673284d4d378f6794a58e7ed6ff4c9da40 | |
| parent | 23318bbe07b73cef50ec69d5e597386a116e2b82 (diff) | |
| download | chouette-core-1019debe93d776f0d38ae69099e6492a7dd4a87c.tar.bz2 | |
Refs #6075 Change default attributes for stop areas
| -rw-r--r-- | app/helpers/routes_helper.rb | 2 | ||||
| -rw-r--r-- | app/javascript/packs/routes/edit.js | 1 | ||||
| -rw-r--r-- | app/javascript/routes/actions/index.js | 7 | ||||
| -rw-r--r-- | app/javascript/routes/components/BSelect2.js | 1 | ||||
| -rw-r--r-- | app/javascript/routes/components/StopPoint.js | 6 | ||||
| -rw-r--r-- | app/javascript/routes/index.js | 5 | ||||
| -rw-r--r-- | app/javascript/routes/reducers/stopPoints.js | 5 | ||||
| -rw-r--r-- | app/models/chouette/stop_point.rb | 7 | ||||
| -rw-r--r-- | app/views/autocomplete_stop_areas/around.rabl | 1 | ||||
| -rw-r--r-- | app/views/autocomplete_stop_areas/index.rabl | 3 | ||||
| -rw-r--r-- | app/views/autocomplete_stop_areas/show.rabl | 3 | ||||
| -rw-r--r-- | app/views/stop_areas/autocomplete.rabl | 3 | ||||
| -rw-r--r-- | 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 (      <div className='nested-fields'> @@ -17,14 +19,14 @@ export default function StopPoint(props, {I18n}) {          </div>          <div> -          <select className='form-control' value={props.value.for_boarding} id="for_boarding" onChange={props.onSelectChange}> +          <select className='form-control' value={defaultAttribute(props.value.for_boarding, props.value.stoparea_kind)} id="for_boarding" onChange={props.onSelectChange}>              <option value="normal">{I18n.t('routes.edit.stop_point.boarding.normal')}</option>              <option value="forbidden">{I18n.t('routes.edit.stop_point.boarding.forbidden')}</option>            </select>          </div>          <div> -          <select className='form-control' value={props.value.for_alighting} id="for_alighting" onChange={props.onSelectChange}> +          <select className='form-control' value={defaultAttribute(props.value.for_alighting, props.value.stoparea_kind)} id="for_alighting" onChange={props.onSelectChange}>              <option value="normal">{I18n.t('routes.edit.stop_point.alighting.normal')}</option>              <option value="forbidden">{I18n.t('routes.edit.stop_point.alighting.forbidden')}</option>            </select> 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                      => "<span class='small label label-info'>#{I18n.t("area_types.label.#{stop_area.area_type}")}</span>#{stop_area.full_name}" +    :text                      => "<span class='small label label-info'>#{I18n.t("area_types.label.#{stop_area.area_type}")}</span>#{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 | 
