aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2018-03-15 12:41:29 -0700
committerJohan Van Ryseghem2018-03-29 11:28:28 +0200
commit1019debe93d776f0d38ae69099e6492a7dd4a87c (patch)
tree16903e673284d4d378f6794a58e7ed6ff4c9da40
parent23318bbe07b73cef50ec69d5e597386a116e2b82 (diff)
downloadchouette-core-1019debe93d776f0d38ae69099e6492a7dd4a87c.tar.bz2
Refs #6075 Change default attributes for stop areas
-rw-r--r--app/helpers/routes_helper.rb2
-rw-r--r--app/javascript/packs/routes/edit.js1
-rw-r--r--app/javascript/routes/actions/index.js7
-rw-r--r--app/javascript/routes/components/BSelect2.js1
-rw-r--r--app/javascript/routes/components/StopPoint.js6
-rw-r--r--app/javascript/routes/index.js5
-rw-r--r--app/javascript/routes/reducers/stopPoints.js5
-rw-r--r--app/models/chouette/stop_point.rb7
-rw-r--r--app/views/autocomplete_stop_areas/around.rabl1
-rw-r--r--app/views/autocomplete_stop_areas/index.rabl3
-rw-r--r--app/views/autocomplete_stop_areas/show.rabl3
-rw-r--r--app/views/stop_areas/autocomplete.rabl3
-rw-r--r--spec/models/chouette/route/route_stop_points_spec.rb18
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("&#39;", "\'") : '',
area_type: v.area_type,
@@ -36,8 +37,8 @@ const getInitialState = () => {
name: v.name ? v.name.replace("&#39;", "\'") : '',
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("&#39;", "\'") : '',
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