diff options
| author | Luc Donnet | 2017-07-03 15:13:08 +0200 | 
|---|---|---|
| committer | Luc Donnet | 2017-07-03 15:13:08 +0200 | 
| commit | 34775f5157902a30d1bbbb18991a1872b59fde3b (patch) | |
| tree | cbd14a9e0e721f9ec70d682cad624b8107d0ab32 | |
| parent | 1adc021ba4d797152a6f31cfe17161ef20877fb7 (diff) | |
| download | chouette-core-34775f5157902a30d1bbbb18991a1872b59fde3b.tar.bz2 | |
Fix routing constraint zones edit and new Refs #3953
| -rw-r--r-- | app/assets/javascripts/routing_constraint_zones.coffee | 80 | ||||
| -rw-r--r-- | app/controllers/routing_constraint_zones_controller.rb | 41 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 7 | ||||
| -rw-r--r-- | app/views/calendars/show.html.slim | 2 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/_form.html.slim | 25 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/_stop_points.html.slim | 10 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/edit.html.slim | 25 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/new.html.slim | 24 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/new.js.erb | 1 | ||||
| -rw-r--r-- | app/views/routing_constraint_zones/show.html.slim | 2 | 
10 files changed, 95 insertions, 122 deletions
diff --git a/app/assets/javascripts/routing_constraint_zones.coffee b/app/assets/javascripts/routing_constraint_zones.coffee index 8721dfb38..2fd83fa28 100644 --- a/app/assets/javascripts/routing_constraint_zones.coffee +++ b/app/assets/javascripts/routing_constraint_zones.coffee @@ -1,73 +1,17 @@ -@ITL_stoppoints = -> -  routeID = $('#routing_constraint_zone_route_id').val() - -  if (routeID) -    origin = window.location.origin -    path = window.location.pathname.split('/', 5).join('/') -    reqURL = origin + path + '/routes/' + routeID + '/stop_points.json' +$ -> +  update_stop_points = () -> +    url = $('#routing_constraint_zone_route_id').attr("data-url") +    route_id = $('#routing_constraint_zone_route_id').val()      $.ajax -      url: reqURL -      dataType: 'json' +      url: url +      dataType: 'script' +      data: { route_id: route_id }        error:  (jqXHR, textStatus, errorThrown) -> -        console.log(errorThrown) -      success: (collection, textStatus, jqXHR) -> -        html = '' -        stopAreaBaseURL = origin + window.location.pathname.split('/', 3).join('/') + '/stop_areas/' - -        collection.forEach (item, index) -> -          html += "<div class='nested-fields'><div class='wrapper'> -          <div><a href='" + stopAreaBaseURL + item.stop_area_id + "' class='navlink' title='Voir l'arrêt'><span>" + item.name + "</span></a></div> -          <div><span>" + item.city_name + " (" + item.zip_code + ")</span></div> -          <div> -            <span class='has_radio'> -              <input type='checkbox' name='routing_constraint_zone[stop_point_ids][" + index + "]' value='" + item.id + "'> -              <span class='radio-label'></span> -            </span> -          </div> -          </div></div>" - -          $('#ITL_stoppoints').find('.nested-fields').remove() -          $('#ITL_stoppoints').find('.nested-head').after(html) - -        # VALIDATION -        selection = [] - -        totalItems = collection.length - -        $('#ITL_stoppoints').on 'click', "input[type='checkbox']", (e) -> -          v = $(e.target).val() +        console.log("ERROR") +      success: (data, textStatus, jqXHR) -> +        console.log("SUCCESS") -          if ( $.inArray(v, selection) != -1 ) -            selection.splice(selection.indexOf(v), 1) -          else -            selection.push(v) - -        alertMsg1 = "<div class='alert alert-danger' style='margin-bottom:15px;'> -                      <p class='small'>Un ITL doit comporter au moins deux arrêts</p> -                    </div>" -        alertMsg2 = "<div class='alert alert-danger' style='margin-bottom:15px;'> -                      <p class='small'>Un ITL ne peut recouvrir tous les arrêts d'un itinéraire</p> -                    </div>" - -        $(document).on 'click', "input[type='submit']", (e)-> -          inputName = $('#routing_constraint_zone_name').val() - -          $('.alert-danger').remove() - -          if ( selection.length < 2 && inputName != "" ) -            e.preventDefault() -            $('#routing_constraint_zone_name').closest('.form-group').removeClass('has-error').find('.help-block').remove() -            $('#ITL_stoppoints').prepend(alertMsg1) - -          if ( selection.length == totalItems && inputName != "" ) -            e.preventDefault() -            $('#routing_constraint_zone_name').closest('.form-group').removeClass('has-error').find('.help-block').remove() -            $('#ITL_stoppoints').prepend(alertMsg2) - -$ -> -  ITL_stoppoints() +  $("#itl_form #routing_constraint_zone_route_id").on 'change', -> update_stop_points() -  $('#routing_constraint_zone_route_id').on 'change', -> -    $('.alert-danger').remove() -    ITL_stoppoints() +  update_stop_points() diff --git a/app/controllers/routing_constraint_zones_controller.rb b/app/controllers/routing_constraint_zones_controller.rb index 6fb5348f0..1eb2ddf28 100644 --- a/app/controllers/routing_constraint_zones_controller.rb +++ b/app/controllers/routing_constraint_zones_controller.rb @@ -4,14 +4,33 @@ class RoutingConstraintZonesController < ChouetteController    defaults resource_class: Chouette::RoutingConstraintZone    respond_to :html, :xml, :json -  before_action :check_stoppoint_param, only: [:create, :update] +  # before_action :check_stoppoint_param, only: [:create, :update]    belongs_to :referential do      belongs_to :line, parent_class: Chouette::Line    end +  def show +    show! do |format| +      @routing_constraint_zone = @routing_constraint_zone.decorate(context: { +        referential: current_referential, +        line: parent.id +      }) +    end +  end + +  def new +    new! do |format| +      format.html +      @route = @line.routes.find params[:route_id] if params[:route_id] +      format.js +    end +  end +    protected +  alias_method :routing_constraint_zone, :resource +    def collection      @q = current_referential.routing_constraint_zones.search(params[:q]) @@ -25,26 +44,6 @@ class RoutingConstraintZonesController < ChouetteController      end    end -  def resource -    @routing_constraint_zone ||= begin -      routing_constraint_zone = current_referential.routing_constraint_zones.find(params[:id]) -      routing_constraint_zone = routing_constraint_zone.decorate(context: { -        referential: current_referential, -        line: parent.id -        }) -      end -  end - -  def build_resource -    @routing_constraint_zone ||= begin -      routing_constraint_zone = current_referential.routing_constraint_zones.new -      routing_constraint_zone = routing_constraint_zone.decorate(context: { -        referential: current_referential, -        line: parent.id -        }) -      end -  end -    private    def sort_column      (Chouette::RoutingConstraintZone.column_names).include?(params[:sort]) ? params[:sort] : 'name' diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 3a5851310..71c339780 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -23,15 +23,14 @@ module Chouette      validates_presence_of :route      validates_presence_of :journey_pattern +    validates :vehicle_journey_at_stops, :vjas_departure_time_must_be_before_next_stop_arrival_time, +      vehicle_journey_at_stops_are_in_increasing_time_order: true +    validates_presence_of :number      has_many :vehicle_journey_at_stops, -> { includes(:stop_point).order("stop_points.position") }, :dependent => :destroy      has_and_belongs_to_many :time_tables, :class_name => 'Chouette::TimeTable', :foreign_key => "vehicle_journey_id", :association_foreign_key => "time_table_id"      has_many :stop_points, -> { order("stop_points.position") }, :through => :vehicle_journey_at_stops -    validates :vehicle_journey_at_stops, :vjas_departure_time_must_be_before_next_stop_arrival_time, -      vehicle_journey_at_stops_are_in_increasing_time_order: true -    validates_presence_of :number -      before_validation :set_default_values,        :calculate_vehicle_journey_at_stop_day_offset diff --git a/app/views/calendars/show.html.slim b/app/views/calendars/show.html.slim index d7849005b..26248cea8 100644 --- a/app/views/calendars/show.html.slim +++ b/app/views/calendars/show.html.slim @@ -25,4 +25,4 @@              Calendar.human_attribute_name(:shared) => t("#{@calendar.shared}"),              'Organisation' => @calendar.organisation.name,              Calendar.human_attribute_name(:dates) =>  @calendar.dates.collect{|d| l(d, format: :short)}.join(', ').html_safe, -            Calendar.human_attribute_name(:date_ranges) => @calendar.date_ranges.collect{|d| t('validity_range', debut: l(d.begin, format: :short), end: l(d.end - (d.exclude_end? ? 1.day : 0), format: :short))}.join('<br>').html_safe } +            Calendar.human_attribute_name(:date_ranges) => @calendar.date_ranges.collect{|d| t('validity_range', debut: l(d.begin, format: :short), end: l(d.end, format: :short))}.join('<br>').html_safe } diff --git a/app/views/routing_constraint_zones/_form.html.slim b/app/views/routing_constraint_zones/_form.html.slim deleted file mode 100644 index 5e5f44269..000000000 --- a/app/views/routing_constraint_zones/_form.html.slim +++ /dev/null @@ -1,25 +0,0 @@ -= simple_form_for [@referential, @line, @routing_constraint_zone], html: {class: 'form-horizontal', id: 'itl_form'}, wrapper: :horizontal_form do |form| - -  .row -    .col-lg-12 -      = form.input :name -      = form.input :route_id, collection: @line.routes, include_blank: false - -      .separator - -      #ITL_stoppoints -        .subform -          .nested-head -            .wrapper -              div -                .form-group -                  label.control-label Arrêt -              div -                .form-group -                  label.control-label Commune -              div - -      = hidden_field_tag 'stop_point_ids', @routing_constraint_zone.stop_point_ids.to_s, id: 'stop_point_ids' - - -      = form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'itl_form' diff --git a/app/views/routing_constraint_zones/_stop_points.html.slim b/app/views/routing_constraint_zones/_stop_points.html.slim new file mode 100644 index 000000000..e6ea62ee2 --- /dev/null +++ b/app/views/routing_constraint_zones/_stop_points.html.slim @@ -0,0 +1,10 @@ +- stop_points.each do |stop_point| +  .wrapper                      +      div +        = link_to stop_point.stop_area.name, referential_stop_area_path(@referential, stop_point.stop_area.id) +      div +        = "#{stop_point.stop_area.city_name} ( #{stop_point.stop_area.zip_code} )" +      div         +        span.has_radio +          = check_box_tag( "routing_constraint_zone[stop_point_ids][]", "#{stop_point.id}", @routing_constraint_zone.stop_point_ids && @routing_constraint_zone.stop_point_ids.include?(stop_point.id)  ) +          span.radio-label diff --git a/app/views/routing_constraint_zones/edit.html.slim b/app/views/routing_constraint_zones/edit.html.slim index 589083927..a99f8e8d3 100644 --- a/app/views/routing_constraint_zones/edit.html.slim +++ b/app/views/routing_constraint_zones/edit.html.slim @@ -9,4 +9,27 @@   .container-fluid     .row       .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1 -       == render 'form' +       = simple_form_for [@referential, @line, @routing_constraint_zone], html: {class: 'form-horizontal', id: 'itl_form'}, wrapper: :horizontal_form do |form| + +         .row +           .col-lg-12 +             = form.input :name +             = form.association :route, collection: @line.routes, disabled: true + +             .separator + +             #ITL_stoppoints +               .subform +                 .nested-head +                   .wrapper +                     div +                       .form-group +                         label.control-label Arrêt +                     div +                       .form-group +                         label.control-label Commune +                     div +                 .nested-fields +                   = render( partial: 'routing_constraint_zones/stop_points', object: @routing_constraint_zone.route.stop_points) +                    +             = form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'itl_form' diff --git a/app/views/routing_constraint_zones/new.html.slim b/app/views/routing_constraint_zones/new.html.slim index f6ae62825..119f01e12 100644 --- a/app/views/routing_constraint_zones/new.html.slim +++ b/app/views/routing_constraint_zones/new.html.slim @@ -7,4 +7,26 @@    .container-fluid      .row        .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1 -        == render 'form' +        = simple_form_for [@referential, @line, @routing_constraint_zone], html: {class: 'form-horizontal', id: 'itl_form'}, wrapper: :horizontal_form do |form| + +          .row +            .col-lg-12 +              = form.input :name +              = form.input :route_id, collection: @line.routes, include_blank: false, input_html: {data: {url: new_referential_line_routing_constraint_zone_path(@referential, @line) }} + +              .separator + +              #ITL_stoppoints +                .subform +                  .nested-head +                    .wrapper +                      div +                        .form-group +                          label.control-label Arrêt +                      div +                        .form-group +                          label.control-label Commune +                      div +                  .nested-fields#stop_points + +              = form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'itl_form' diff --git a/app/views/routing_constraint_zones/new.js.erb b/app/views/routing_constraint_zones/new.js.erb new file mode 100644 index 000000000..406845a4d --- /dev/null +++ b/app/views/routing_constraint_zones/new.js.erb @@ -0,0 +1 @@ +$("#stop_points").html("<%= escape_javascript(render partial: 'routing_constraint_zones/stop_points', object: @route.stop_points) %>"); diff --git a/app/views/routing_constraint_zones/show.html.slim b/app/views/routing_constraint_zones/show.html.slim index 1dad4f561..3decc086f 100644 --- a/app/views/routing_constraint_zones/show.html.slim +++ b/app/views/routing_constraint_zones/show.html.slim @@ -28,7 +28,7 @@        .col-lg-12          = table_builder @routing_constraint_zone.route.stop_points,            { "Arrêts de l'itinéraire" => 'name', -            "Arrêts inclus dans l'ITL" => Proc.new{ |rsp| (@routing_constraint_zone.stop_points.collect{|c| c.name}.include? rsp.name) ? 'Oui' : 'Non' } }, +            "Arrêts inclus dans l'ITL" => Proc.new{ |rsp| (@routing_constraint_zone.stop_point_ids.include? rsp.id) ? 'Oui' : 'Non' } },            [],            [],            'table has-stoppoints'  | 
