diff options
| -rw-r--r-- | app/assets/javascripts/export_tasks.js.coffee | 16 | ||||
| -rw-r--r-- | app/assets/javascripts/exports.js.coffee | 22 | ||||
| -rw-r--r-- | app/controllers/export_tasks_controller.rb | 11 | ||||
| -rw-r--r-- | app/controllers/exports_controller.rb | 9 | ||||
| -rw-r--r-- | app/inputs/reference_ids_input.rb | 42 | ||||
| -rw-r--r-- | app/models/export_task.rb | 1 | ||||
| -rw-r--r-- | app/models/gtfs_export.rb | 5 | ||||
| -rw-r--r-- | app/models/gtfs_import.rb | 2 | ||||
| -rw-r--r-- | app/models/hub_export.rb | 5 | ||||
| -rw-r--r-- | app/models/kml_export.rb | 5 | ||||
| -rw-r--r-- | app/models/neptune_export.rb | 5 | ||||
| -rw-r--r-- | app/models/neptune_import.rb | 2 | ||||
| -rw-r--r-- | app/models/netex_export.rb | 5 | ||||
| -rw-r--r-- | app/models/netex_import.rb | 2 | ||||
| -rw-r--r-- | app/views/export_tasks/new.html.erb | 5 | ||||
| -rw-r--r-- | config/locales/enumerize.en.yml | 1 | ||||
| -rw-r--r-- | config/locales/enumerize.fr.yml | 1 | ||||
| -rw-r--r-- | config/locales/export_tasks.en.yml | 1 | ||||
| -rw-r--r-- | config/locales/export_tasks.fr.yml | 1 | ||||
| -rw-r--r-- | config/routes.rb | 6 | 
20 files changed, 97 insertions, 50 deletions
| diff --git a/app/assets/javascripts/export_tasks.js.coffee b/app/assets/javascripts/export_tasks.js.coffee new file mode 100644 index 000000000..cf0b61977 --- /dev/null +++ b/app/assets/javascripts/export_tasks.js.coffee @@ -0,0 +1,16 @@ +jQuery -> +  export_references_type_change = (event) -> +    references_type = $(event.target).val() + +    toggle_input = (li) -> +      enabled = (li.data("type") == references_type) +      # Hide li block +      li.toggle(enabled) +      # Disable textarea to ignore it in POST data +      console.log(enabled)   +      li.find(".token-input").first().attr("disabled", !enabled) +      console.log(li.find(".token-input")) + +    toggle_input($(li)) for li in $(event.target).parents('form').find("li.reference_ids") + +  $('form select[name="export_task[references_type]"]').change( export_references_type_change ) diff --git a/app/assets/javascripts/exports.js.coffee b/app/assets/javascripts/exports.js.coffee deleted file mode 100644 index 045b95e2e..000000000 --- a/app/assets/javascripts/exports.js.coffee +++ /dev/null @@ -1,22 +0,0 @@ -jQuery -> -  export_references_type_change = (event) -> -    references_type = $(event.target).val() - -    toggle_input = (li) -> -      enabled = (li.data("type") == references_type) -      # Hide li block -      li.toggle(enabled) -      # Disable textarea to ignore it in POST data -      li.find("textarea").attr("disabled", ! enabled) - -    toggle_input($(li)) for li in $(event.target).parents('form').find("li.export_reference_ids") - -  $('select[name="export[references_type]"]').change(export_references_type_change) - -  $('#export_type_submit').hide() - -  export_type_change = (event) -> -    export_type = $("input:radio:checked").attr("value") -    $(form).toggle($(form).is("#" + export_type + "_new")) for form in $('form.export[method = "post"]') - -  $("#export_type_input :radio[name='export[type]']").change(export_type_change) diff --git a/app/controllers/export_tasks_controller.rb b/app/controllers/export_tasks_controller.rb index dcc5e684d..d9a43cdc5 100644 --- a/app/controllers/export_tasks_controller.rb +++ b/app/controllers/export_tasks_controller.rb @@ -28,6 +28,17 @@ class ExportTasksController < ChouetteController      end    end +  def references +    references_type = params[:filter].pluralize +    references = @referential.send(references_type).where("name ilike ?", "%#{params[:q]}%").select("id, name") +    puts references.inspect +    respond_to do |format| +      format.json do +        render :json => references.collect { |child| { :id => child.id, :name => child.name } } +      end +    end +  end +    protected    def available_exports diff --git a/app/controllers/exports_controller.rb b/app/controllers/exports_controller.rb index 6d1a20f24..ae8aa1b75 100644 --- a/app/controllers/exports_controller.rb +++ b/app/controllers/exports_controller.rb @@ -52,15 +52,6 @@ class ExportsController < ChouetteController      end    end -  def references -    @references = referential.send(params[:type]).where("name ilike ?", "%#{params[:q]}%") -    respond_to do |format| -      format.json do -        render :json => @references.collect { |child| { :id => child.id, :name => child.name } } -      end -    end -  end -    protected    def export_service diff --git a/app/inputs/reference_ids_input.rb b/app/inputs/reference_ids_input.rb new file mode 100644 index 000000000..a54be36b9 --- /dev/null +++ b/app/inputs/reference_ids_input.rb @@ -0,0 +1,42 @@ +class ReferenceIdsInput < Formtastic::Inputs::SearchInput +   +  def search +    if options[:json] +      tokenLimit = options[:tokenLimit].present? ? options[:tokenLimit] : "null" +      template.content_tag( :script, +       ("$(document).ready(function() {            + +           $('##{options[:id]}').tokenInput('#{options[:json]}', { +             zindex: 1061, +             disabled: #{options[:disabled] || false}, +             crossDomain: false, +             tokenLimit: #{tokenLimit}, +             minChars: 2, +             preventDuplicates: true, +             hintText: '#{options[:hint_text]}', +             noResultsText: '#{options[:no_result_text]}', +             searchingText: '#{options[:searching_text]}',         +           }); +        });").html_safe) +    end +  end + +  def to_html +    input_wrapping do +      label_html << +        builder.text_field(method, input_html_options) << +          search +    end +  end + +  def input_html_options     +    css_class =  super[:class] +    super.merge({ +                  :required          => nil, +                  :autofocus         => nil, +                  :class             => "#{css_class} token-input", +                  'data-model-name' => object.class.model_name.human +                }) +  end + +end diff --git a/app/models/export_task.rb b/app/models/export_task.rb index af40bb279..6282b0a87 100644 --- a/app/models/export_task.rb +++ b/app/models/export_task.rb @@ -13,7 +13,6 @@ class ExportTask    cattr_accessor :root    enumerize :data_format, in: %w( neptune netex gtfs hub kml ) -  enumerize :references_type, in: %w( all network line company groupofline stoparea )    attr_accessor :referential_id, :user_id, :user_name, :references_type, :data_format, :name, :projection_type, :reference_ids    validates_presence_of :referential_id diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb index cae7d58d9..2b33d52f9 100644 --- a/app/models/gtfs_export.rb +++ b/app/models/gtfs_export.rb @@ -3,7 +3,7 @@ class GtfsExport < ExportTask    validates_presence_of :time_zone    attr_accessor :time_zone, :object_id_prefix -  enumerize :references_type, in: %w( all network line company groupofline stoparea ) +  enumerize :references_type, in: %w( network line company groupofline stoparea )    after_initialize :init_params @@ -22,9 +22,10 @@ class GtfsExport < ExportTask        "gtfs-export" => {          "name" => name,          "references_type" => references_type, +        "reference_ids" => reference_ids,          "user_name" => user_name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,          "time_zone" => time_zone,          "object_id_prefix" => object_id_prefix        } diff --git a/app/models/gtfs_import.rb b/app/models/gtfs_import.rb index c2b3332d2..28bf074ad 100644 --- a/app/models/gtfs_import.rb +++ b/app/models/gtfs_import.rb @@ -18,7 +18,7 @@ class GtfsImport < ImportTask          "user_name" => user_name,          "name" => name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,          "object_id_prefix" => object_id_prefix,          "max_distance_for_commercial" => max_distance_for_commercial,          "ignore_last_word" => ignore_last_word, diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb index bcc9cddad..cb0092113 100644 --- a/app/models/hub_export.rb +++ b/app/models/hub_export.rb @@ -1,7 +1,7 @@  class HubExport < ExportTask    attr_accessor :start_date, :end_date -  enumerize :references_type, in: %w( all network line company groupofline ) +  enumerize :references_type, in: %w( network line company groupofline )    validates :start_date, presence: true , if: "end_date.present?"       validates :end_date, presence: true, if: "start_date.present?"  @@ -24,9 +24,10 @@ class HubExport < ExportTask        "hub-export" => {          "name" => name,          "references_type" => references_type, +        "reference_ids" => reference_ids,          "user_name" => user_name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,          "start_date" => start_date,          "end_date" => end_date        } diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb index 569cb2a6a..9d87f7cdf 100644 --- a/app/models/kml_export.rb +++ b/app/models/kml_export.rb @@ -1,15 +1,16 @@  class KmlExport < ExportTask -  enumerize :references_type, in: %w( all network line company groupofline ) +  enumerize :references_type, in: %w( network line company groupofline )    def action_params      {        "kml-export" => {          "name" => name,          "references_type" => references_type, +        "reference_ids" => reference_ids,          "user_name" => user_name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug  +        "referential_name" => referential.name         }      }    end diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb index 78b402bea..b7f2164ac 100644 --- a/app/models/neptune_export.rb +++ b/app/models/neptune_export.rb @@ -1,7 +1,7 @@  class NeptuneExport < ExportTask    attr_accessor :start_date, :end_date, :extensions, :export_type -  enumerize :references_type, in: %w( all network line company groupofline ) +  enumerize :references_type, in: %w( network line company groupofline )    validates :start_date, presence: true , if: "end_date.present?"       validates :end_date, presence: true, if: "start_date.present?"  @@ -11,9 +11,10 @@ class NeptuneExport < ExportTask        "neptune-export" => {          "name" => name,          "references_type" => references_type, +        "reference_ids" => reference_ids,          "user_name" => user_name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,          "projection_type" => projection_type || "",          "start_date" => start_date,          "end_date" => end_date diff --git a/app/models/neptune_import.rb b/app/models/neptune_import.rb index 6c83fb4b1..e313e3988 100644 --- a/app/models/neptune_import.rb +++ b/app/models/neptune_import.rb @@ -7,7 +7,7 @@ class NeptuneImport < ImportTask          "user_name" => user_name,          "name" => name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,        }      }    end diff --git a/app/models/netex_export.rb b/app/models/netex_export.rb index 003a9b945..bac9d1d87 100644 --- a/app/models/netex_export.rb +++ b/app/models/netex_export.rb @@ -1,15 +1,16 @@  class NetexExport < ExportTask -  enumerize :references_type, in: %w( all network line company groupofline ) +  enumerize :references_type, in: %w( network line company groupofline )    def action_params      {             "netex-export" => {          "name" => name,          "references_type" => references_type, +        "reference_ids" => reference_ids,          "user_name" => user_name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,        }      }    end diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb index 5a0dd7e7e..4668ad572 100644 --- a/app/models/netex_import.rb +++ b/app/models/netex_import.rb @@ -7,7 +7,7 @@ class NetexImport < ImportTask          "user_name" => user_name,          "name" => name,          "organisation_name" => organisation.name, -        "referential_name" => referential.slug, +        "referential_name" => referential.name,        }      }    end diff --git a/app/views/export_tasks/new.html.erb b/app/views/export_tasks/new.html.erb index 77998237f..6e5397f0e 100644 --- a/app/views/export_tasks/new.html.erb +++ b/app/views/export_tasks/new.html.erb @@ -13,7 +13,10 @@  	  <%= form.input :data_format, :as => :hidden %>  	  <%= form.input :referential_id, :as => :hidden, :input_html => { :value => @referential.id } %>	              <%= form.input :name %>   -          <%= form.input :references_type, :as => :select, :include_blank => false %> +          <%= form.input :references_type, :as => :select, :include_blank => t(".all") %> +	  <% export_task.class.references_types.each do |type| %> +	      <%= form.input :reference_ids, :as => :reference_ids, :json => references_referential_export_tasks_path(@referential, :format => :json) + "?filter=#{type}", :hint_text => t('search_hint'), :no_result_text => t('no_result_text'),:searching_text => t('searching_term'), :id => "#{export_task.data_format}_#{type}_reference_ids", :input_html => { :id => "#{export_task.data_format}_#{type}_reference_ids" }, :wrapper_html => { :style => "display:none;", :id => "#{export_task.data_format}_#{type}", :"data-type" => "#{type}" } %> +	   <% end %>          <% end %>          <%= render partial: "fields_#{export_task.data_format}_export", :locals => { :form => form } %> diff --git a/config/locales/enumerize.en.yml b/config/locales/enumerize.en.yml index f65885ee8..b564e7f83 100644 --- a/config/locales/enumerize.en.yml +++ b/config/locales/enumerize.en.yml @@ -16,7 +16,6 @@ en:        request_stop: "Drop off if requested"        is_flexible: "Booking requested for drop off"      references_type: -      all: "All datas"        network: "Networks"        line: "Lines"        company: "Companies" diff --git a/config/locales/enumerize.fr.yml b/config/locales/enumerize.fr.yml index 2902f1835..c5a02b5e7 100644 --- a/config/locales/enumerize.fr.yml +++ b/config/locales/enumerize.fr.yml @@ -16,7 +16,6 @@ fr:        request_stop: "Descente sur demande au conducteur"        is_flexible: "Descente sur réservation"      references_type: -      all: "Toutes les données"        network: "Réseaux"        line: "Lignes"        company: "Transporteurs" diff --git a/config/locales/export_tasks.en.yml b/config/locales/export_tasks.en.yml index a2cb4bc35..9770c72ad 100644 --- a/config/locales/export_tasks.en.yml +++ b/config/locales/export_tasks.en.yml @@ -4,6 +4,7 @@ en:        new: "New export"      new:        title: "New export" +      all: "All"        flash: "Export task on queue, refresh page to see progression"        fields_gtfs_export:          warning: "Filter on stop areas export only GTFS stops and transfers files, these may contain extra attributes"     diff --git a/config/locales/export_tasks.fr.yml b/config/locales/export_tasks.fr.yml index e5e3eaea6..35deec1b1 100644 --- a/config/locales/export_tasks.fr.yml +++ b/config/locales/export_tasks.fr.yml @@ -4,6 +4,7 @@ fr:        new: "Nouvel export"      new:        title: "Nouvel export" +      all: "Tous"        flash: "La demande d'export est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression"        fields_gtfs_export:          warning: "Le filtre sur arrêts exporte uniquement les fichiers GTFS stops et transfers gtfs, ceux-ci pouvant contenir des attributs supplémentaires" diff --git a/config/routes.rb b/config/routes.rb index fb1568dea..879e9bc23 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -89,11 +89,13 @@ ChouetteIhm::Application.routes.draw do        resources :compliance_check_results      end -    resources :export_tasks, :only => [:new, :create] -    resources :exports, :only => [:index, :show, :destroy]  do +    resources :export_tasks, :only => [:new, :create] do        collection do          get 'references'        end +    end +     +    resources :exports, :only => [:index, :show, :destroy]  do        member do          get "exported_file"        end | 
