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