From 65cc07b0e9913449cc56d6e1d006975b5914b4a7 Mon Sep 17 00:00:00 2001
From: Zog
Date: Tue, 26 Dec 2017 16:10:45 +0100
Subject: Refs #5367 @2H; Add a ColorSelectInput
- Added to PurchaseWindow form
- Reuse already exisiting JS + CSS
- We may want to change the colors names
---
app/assets/javascripts/forms.coffee | 19 +++++++++---
app/assets/stylesheets/_layout.sass | 1 +
app/inputs/color_select_input.rb | 46 ++++++++++++++++++++++++++++++
app/models/chouette/purchase_window.rb | 12 +++++---
app/views/purchase_windows/_form.html.slim | 10 +------
config/locales/enumerize.en.yml | 13 ++++++++-
config/locales/enumerize.fr.yml | 12 ++++++++
7 files changed, 95 insertions(+), 18 deletions(-)
create mode 100644 app/inputs/color_select_input.rb
diff --git a/app/assets/javascripts/forms.coffee b/app/assets/javascripts/forms.coffee
index 12d82fef1..b7ae3c6ca 100644
--- a/app/assets/javascripts/forms.coffee
+++ b/app/assets/javascripts/forms.coffee
@@ -32,14 +32,25 @@ isEdge = !isIE && !!window.StyleMedia
@colorSelector = ->
$('.form-group .dropdown.color_selector').each ->
- selectedStatus = $(this).children('.dropdown-toggle').children('.fa-circle')
-
+ selectedStatusColor = $(this).children('.dropdown-toggle').children('.fa-circle')
+ selectedStatusLabel = $(this).children('.dropdown-toggle')
+ self = this
$(this).on 'click', "input[type='radio']", (e) ->
selectedValue = e.currentTarget.value
+ selectedText = $(e.currentTarget).parent()[0].textContent
+ if e.currentTarget.getAttribute("data-for")
+ hidden = $("[name=\"#{e.currentTarget.getAttribute("data-for")}\"]")
+
if selectedValue == ''
- $(selectedStatus).css('color', 'transparent')
+ $(selectedStatusColor).css('color', 'transparent')
+ $(selectedStatusLabel).contents().filter( -> this.nodeType == 3 ).filter(':first').text = ""
+ hidden?.val ""
else
- $(selectedStatus).css('color', selectedValue)
+ $(selectedStatusColor).css('color', selectedValue)
+ $(selectedStatusLabel).contents().filter( -> this.nodeType == 3 ).first().replaceWith selectedText
+ hidden?.val selectedValue
+
+ $(self).find('.dropdown-toggle').click()
$ ->
togglableFilter()
diff --git a/app/assets/stylesheets/_layout.sass b/app/assets/stylesheets/_layout.sass
index b6b91b2a5..340467e77 100644
--- a/app/assets/stylesheets/_layout.sass
+++ b/app/assets/stylesheets/_layout.sass
@@ -28,6 +28,7 @@ body
// width: 75%
border-bottom: 1px solid rgba($blue, 0.5)
margin: 30px auto 45px auto
+ clear: both
.content_header
font-size: 2.2rem
diff --git a/app/inputs/color_select_input.rb b/app/inputs/color_select_input.rb
new file mode 100644
index 000000000..963083c08
--- /dev/null
+++ b/app/inputs/color_select_input.rb
@@ -0,0 +1,46 @@
+class ColorSelectInput < SimpleForm::Inputs::CollectionInput
+ enable :placeholder
+
+ def input(wrapper_options = {})
+ # @collection ||= @builder.object.send(attribute_name)
+ label_method, value_method = detect_collection_methods
+ selected_color = object.send(attribute_name)
+ label = if selected_color
+ collection.find{|i| i.is_a?(Enumerable) && i.last == selected_color}.try(:first)
+ end
+
+ out = @builder.hidden_field attribute_name, value: selected_color
+ tag_name = ActionView::Helpers::Tags::Base.new( ActiveModel::Naming.param_key(object), attribute_name, :dummy ).send(:tag_name)
+ select = <<-eos
+
+
+
+ "
+
+ out + select.html_safe
+ end
+end
diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb
index 5368d790a..9f68d4408 100644
--- a/app/models/chouette/purchase_window.rb
+++ b/app/models/chouette/purchase_window.rb
@@ -16,9 +16,13 @@ module Chouette
scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) }
- def self.ransackable_scopes(auth_object = nil)
- [:contains_date]
- end
+ def self.ransackable_scopes(auth_object = nil)
+ [:contains_date]
+ end
+
+ def self.colors_i18n
+ Hash[*color.values.map{|c| [I18n.t("enumerize.purchase_window.color.#{c[1..-1]}"), c]}.flatten]
+ end
def local_id
"IBOO-#{self.referential.id}-#{self.id}"
@@ -28,4 +32,4 @@ module Chouette
# end
end
-end
\ No newline at end of file
+end
diff --git a/app/views/purchase_windows/_form.html.slim b/app/views/purchase_windows/_form.html.slim
index 8821ecc8a..2101ae6db 100644
--- a/app/views/purchase_windows/_form.html.slim
+++ b/app/views/purchase_windows/_form.html.slim
@@ -2,15 +2,7 @@
.row
.col-lg-12
= f.input :name
- // = f.input :color, as: :select, boolean_style: :inline, collection: Chouette::PurchaseWindow.color.values, input_html: {class: 'color_selector '}
- div
- .form-group
- label.select.optional.col-sm-4.col-xs-5.control-label
- = @purchase_window.class.human_attribute_name :color
- div.col-sm-8.col-xs-7
- span.fa.fa-circle style="color:#7F551B"
-
- = f.input :color, as: :hidden, input_html: { value: '#7F551B' }
+ = f.input :color, as: :color_select, collection: Chouette::PurchaseWindow.colors_i18n
.separator
diff --git a/config/locales/enumerize.en.yml b/config/locales/enumerize.en.yml
index bfd7b8c22..edc5b22e3 100644
--- a/config/locales/enumerize.en.yml
+++ b/config/locales/enumerize.en.yml
@@ -255,4 +255,15 @@ en:
travel_agency: "Travel_agency"
individual_subject_of_travel_itinerary: "Individual subject of travel itinerary"
other_information: "Other information"
-
+ purchase_window:
+ color:
+ 9B9B9B: "Grey"
+ FFA070: "Light orange"
+ C67300: "Orange"
+ 7F551B: "Dark orange"
+ 41CCE3: "Light blue"
+ 09B09C: "Green"
+ 3655D7: "Blue"
+ 6321A0: "Purple"
+ E796C6: "Light pink"
+ DD2DAA: "Pink"
diff --git a/config/locales/enumerize.fr.yml b/config/locales/enumerize.fr.yml
index b2eab665d..c4995e3c3 100644
--- a/config/locales/enumerize.fr.yml
+++ b/config/locales/enumerize.fr.yml
@@ -253,3 +253,15 @@ fr:
travel_agency: "Agence de voyage"
individual_subject_of_travel_itinerary: "Voyageur individuel"
other_information: "Autre source d'information"
+ purchase_window:
+ color:
+ 9B9B9B: "Gris"
+ FFA070: "Orange clair"
+ C67300: "Orange"
+ 7F551B: "Orange foncé"
+ 41CCE3: "Bleu clair"
+ 09B09C: "Vert"
+ 3655D7: "Bleu"
+ 6321A0: "Violet"
+ E796C6: "Rose pale"
+ DD2DAA: "Rose"
--
cgit v1.2.3
From 3563d7aed172d1f755835083a975399f9f6918a8 Mon Sep 17 00:00:00 2001
From: Alban Peignier
Date: Wed, 27 Dec 2017 00:16:36 +0100
Subject: Remove useless code. Close div in ColorSelectInput. Refs #5367
---
app/inputs/color_select_input.rb | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/app/inputs/color_select_input.rb b/app/inputs/color_select_input.rb
index 963083c08..f92c80a22 100644
--- a/app/inputs/color_select_input.rb
+++ b/app/inputs/color_select_input.rb
@@ -2,8 +2,6 @@ class ColorSelectInput < SimpleForm::Inputs::CollectionInput
enable :placeholder
def input(wrapper_options = {})
- # @collection ||= @builder.object.send(attribute_name)
- label_method, value_method = detect_collection_methods
selected_color = object.send(attribute_name)
label = if selected_color
collection.find{|i| i.is_a?(Enumerable) && i.last == selected_color}.try(:first)
@@ -39,7 +37,7 @@ class ColorSelectInput < SimpleForm::Inputs::CollectionInput
eos
end
- select += "
"
+ select += ""
out + select.html_safe
end
--
cgit v1.2.3
From 17f1a9a7cc9e403f85ddbcdf63e7c551a85dd505 Mon Sep 17 00:00:00 2001
From: Xinhui
Date: Thu, 28 Dec 2017 11:38:48 +0100
Subject: Gem country_select Refs #5427
---
Gemfile | 1 +
Gemfile.lock | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
diff --git a/Gemfile b/Gemfile
index ed71f8bb5..7c10b27e4 100644
--- a/Gemfile
+++ b/Gemfile
@@ -100,6 +100,7 @@ gem 'simple_form', '~> 3.1.0'
gem 'font-awesome-sass', '~> 4.7'
gem 'will_paginate-bootstrap'
gem 'gretel'
+gem 'country_select'
# Format Output
gem 'json'
diff --git a/Gemfile.lock b/Gemfile.lock
index 9c59016e6..ade052d8a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -146,6 +146,14 @@ GEM
coffee-script-source (1.12.2)
concurrent-ruby (1.0.5)
connection_pool (2.2.1)
+ countries (2.1.3)
+ i18n_data (~> 0.8.0)
+ money (~> 6.9)
+ sixarm_ruby_unaccent (~> 1.1)
+ unicode_utils (~> 1.4)
+ country_select (3.1.1)
+ countries (~> 2.0)
+ sort_alphabetical (~> 1.0)
crack (0.4.3)
safe_yaml (~> 1.0.0)
cucumber (2.4.0)
@@ -269,6 +277,7 @@ GEM
parser (>= 2.2.3.0)
rainbow (~> 2.2)
terminal-table (>= 1.5.1)
+ i18n_data (0.8.0)
inherited_resources (1.7.1)
actionpack (>= 3.2, < 5.1)
has_scope (~> 0.6)
@@ -305,6 +314,8 @@ GEM
mimemagic (0.3.2)
mini_portile2 (2.3.0)
minitest (5.10.3)
+ money (6.10.1)
+ i18n (>= 0.6.4, < 1.0)
multi_json (1.12.1)
multi_test (0.1.2)
multi_xml (0.6.0)
@@ -487,6 +498,7 @@ GEM
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
+ sixarm_ruby_unaccent (1.2.0)
slim (3.0.7)
temple (~> 0.7.6)
tilt (>= 1.3.3, < 2.1)
@@ -495,6 +507,8 @@ GEM
railties (>= 3.1)
slim (~> 3.0)
slop (3.6.0)
+ sort_alphabetical (1.1.0)
+ unicode_utils (>= 1.2.2)
spring (2.0.1)
activesupport (>= 4.2)
spring-commands-rspec (1.0.4)
@@ -537,6 +551,7 @@ GEM
execjs (>= 0.3.0)
json (>= 1.8.0)
unicode-display_width (1.3.0)
+ unicode_utils (1.4.0)
warden (1.2.7)
rack (>= 1.0)
webmock (3.0.1)
@@ -584,6 +599,7 @@ DEPENDENCIES
cocoon
codifligne!
coffee-rails (~> 4.0.0)
+ country_select
cucumber-rails
daemons
database_cleaner
--
cgit v1.2.3
From e6715407f59a79473d38048cb22bb025daa68753 Mon Sep 17 00:00:00 2001
From: Xinhui
Date: Thu, 28 Dec 2017 11:40:27 +0100
Subject: StopArea form restaure country_code field
Refs #5427
---
app/views/stop_areas/_form.html.slim | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/views/stop_areas/_form.html.slim b/app/views/stop_areas/_form.html.slim
index e44680499..acf7b4024 100644
--- a/app/views/stop_areas/_form.html.slim
+++ b/app/views/stop_areas/_form.html.slim
@@ -19,7 +19,7 @@
= f.input :coordinates, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.coordinates")}, required: true
= f.input :street_name
- /= f.input :country_code, required: format_restriction_for_locales(@referential) == '.hub'
+ = f.input :country_code, as: :country, priority: ['FR', 'GB', 'DE', 'ES']
= f.input :zip_code, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.zip_code")}
= f.input :city_name, required: format_restriction_for_locales(@referential) == '.hub', :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.city_name")}
--
cgit v1.2.3
From cd08b86d56d484bb40caea38ee82c6c330f626bc Mon Sep 17 00:00:00 2001
From: Alban Peignier
Date: Tue, 2 Jan 2018 10:34:04 +0100
Subject: Display StopArea#country_code in stop_areas#show. Refs #5427
---
app/views/stop_areas/show.html.slim | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/views/stop_areas/show.html.slim b/app/views/stop_areas/show.html.slim
index 0c23710b6..643ab339c 100644
--- a/app/views/stop_areas/show.html.slim
+++ b/app/views/stop_areas/show.html.slim
@@ -23,6 +23,7 @@
- attributes.merge!({ "Coordonnées" => geo_data(@stop_area, @stop_area_referential),
@stop_area.human_attribute_name(:zip_code) => @stop_area.zip_code,
@stop_area.human_attribute_name(:city_name) => @stop_area.city_name,
+ @stop_area.human_attribute_name(:country_code) => @stop_area.country_code.presence || '-',
'Etat' => (@stop_area.deleted_at ? 'Supprimé' : 'Actif'),
@stop_area.human_attribute_name(:comment) => @stop_area.try(:comment),
})
--
cgit v1.2.3
From 3e9a93ea31f809aec1a80ff709c2362c4c2779fd Mon Sep 17 00:00:00 2001
From: Alban Peignier
Date: Tue, 2 Jan 2018 10:37:35 +0100
Subject: Support blank in stop_areas#_form. Refs #5427
---
app/views/stop_areas/_form.html.slim | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/views/stop_areas/_form.html.slim b/app/views/stop_areas/_form.html.slim
index acf7b4024..6c1df253a 100644
--- a/app/views/stop_areas/_form.html.slim
+++ b/app/views/stop_areas/_form.html.slim
@@ -19,9 +19,9 @@
= f.input :coordinates, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.coordinates")}, required: true
= f.input :street_name
- = f.input :country_code, as: :country, priority: ['FR', 'GB', 'DE', 'ES']
= f.input :zip_code, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.zip_code")}
= f.input :city_name, required: format_restriction_for_locales(@referential) == '.hub', :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.city_name")}
+ = f.input :country_code, as: :country, priority: ['FR', 'GB', 'DE', 'ES'], :include_blank => true
.stop_areas.stop_area.general_info
h3 = t("stop_areas.stop_area.general")
--
cgit v1.2.3
From 2a6f499c0d47428d9bfddfc5375beb10d4385da3 Mon Sep 17 00:00:00 2001
From: Alban Peignier
Date: Tue, 2 Jan 2018 10:38:49 +0100
Subject: Fixes i18n for StopArea#country_code. Refs #5427
---
config/locales/stop_areas.en.yml | 2 +-
config/locales/stop_areas.fr.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/locales/stop_areas.en.yml b/config/locales/stop_areas.en.yml
index 4d84d1191..ae5d14c08 100644
--- a/config/locales/stop_areas.en.yml
+++ b/config/locales/stop_areas.en.yml
@@ -103,7 +103,7 @@ en:
area_type: "Area type"
nearest_topic_name: "Nearest point of interest"
street_name: "Street name"
- country_code: "INSEE code"
+ country_code: "Country"
fare_code: "Fare code"
mobility_restricted_suitability: "Mobility reduced passenger suitable"
stairs_availability: "Escalator"
diff --git a/config/locales/stop_areas.fr.yml b/config/locales/stop_areas.fr.yml
index eda1e4e3d..b4781ac16 100644
--- a/config/locales/stop_areas.fr.yml
+++ b/config/locales/stop_areas.fr.yml
@@ -103,7 +103,7 @@ fr:
area_type: "Type d'arrêt"
nearest_topic_name: "Point d'intérêt le plus proche"
street_name: "Nom de la rue"
- country_code: "Code INSEE"
+ country_code: "Pays"
fare_code: "Zone tarifaire"
mobility_restricted_suitability: "Accès pour voyageur à mobilité réduite"
stairs_availability: "Escalator"
--
cgit v1.2.3