From dc16d9843811c5c8c2f863a840336be768418b3a Mon Sep 17 00:00:00 2001 From: Luc Donnet Date: Tue, 5 May 2015 13:45:35 +0200 Subject: Add reference_ids to export task --- app/assets/javascripts/export_tasks.js.coffee | 16 ++++++++++ app/assets/javascripts/exports.js.coffee | 22 -------------- app/controllers/export_tasks_controller.rb | 11 +++++++ app/controllers/exports_controller.rb | 9 ------ app/inputs/reference_ids_input.rb | 42 +++++++++++++++++++++++++++ app/models/export_task.rb | 1 - app/models/gtfs_export.rb | 5 ++-- app/models/gtfs_import.rb | 2 +- app/models/hub_export.rb | 5 ++-- app/models/kml_export.rb | 5 ++-- app/models/neptune_export.rb | 5 ++-- app/models/neptune_import.rb | 2 +- app/models/netex_export.rb | 5 ++-- app/models/netex_import.rb | 2 +- app/views/export_tasks/new.html.erb | 5 +++- config/locales/enumerize.en.yml | 1 - config/locales/enumerize.fr.yml | 1 - config/locales/export_tasks.en.yml | 1 + config/locales/export_tasks.fr.yml | 1 + config/routes.rb | 6 ++-- 20 files changed, 97 insertions(+), 50 deletions(-) create mode 100644 app/assets/javascripts/export_tasks.js.coffee delete mode 100644 app/assets/javascripts/exports.js.coffee create mode 100644 app/inputs/reference_ids_input.rb 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 -- cgit v1.2.3