From 28747a951fec1511c783c60d395798b73df26b08 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 3 Apr 2017 13:25:19 +0200 Subject: [PATCH 01/96] Delete unused assets --- app/assets/images/landing_background_old.png | Bin 179975 -> 0 bytes app/assets/images/logo_FC_02.png | Bin 35887 -> 0 bytes app/assets/images/logos-02V.png | Bin 24162 -> 0 bytes app/assets/images/logos/logo-opensimplif.jpg | Bin 10617 -> 0 bytes app/assets/images/logos/logo-tps_old.png | Bin 1197 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 app/assets/images/landing_background_old.png delete mode 100644 app/assets/images/logo_FC_02.png delete mode 100644 app/assets/images/logos-02V.png delete mode 100644 app/assets/images/logos/logo-opensimplif.jpg delete mode 100644 app/assets/images/logos/logo-tps_old.png diff --git a/app/assets/images/landing_background_old.png b/app/assets/images/landing_background_old.png deleted file mode 100644 index 77e4b9b0e8fbf2ba4c819f2154a87d90ccd84a8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179975 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�!yPv+wnI;Rb7;s_qOx5kxG7W}C@yM;;Ak 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 diff --git a/app/assets/images/logos/logo-opensimplif.jpg b/app/assets/images/logos/logo-opensimplif.jpg deleted file mode 100644 index a4e3bc9f9c7859933923bc38e6cf7a65cb1a5f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10617 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 H&ny20jM@1G diff --git a/app/assets/images/logos/logo-tps_old.png b/app/assets/images/logos/logo-tps_old.png deleted file mode 100644 index 7d785b1f239cfe994caaee6c322574c72cdd8e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1197 zcmV;e1XBBnP)2}eX zHhDgF^lbaS?FhDnBjI{@5q^Yb7=#HB^-i^=tp-QH1Mnw|f$*7XNLvC9gcqP6M3$(e zxRv2@_#Z@8sf4)Ypa>lxvW{zc$3X*#yx>aQCh!i3yx~IL$@=6F1e&tzeIW9Tt-Lki zGZ1;lM&9P|Pml+YR^B$y2m&CGs^vw8D1kIF@6RACN)maC!$(1uy}&zzC_N^5$Abvy zF-^}pgCu)_F9ktnbn=b_5ik=cZ<#P;DNo=fK}>RH%3A^E1Tppk&ka)2Q7Uf{_$f%S z7r1*6Ql7wvf{^qmc`HIo5MnQIZ&Stle(x2oidyG+pLK}0W)F&=J4S`1ZD=C4zWm>3 z&BH?O!)|Z2q&h(A%jF{LSL>DAzxJChvGprWWeL2k76NV8$w3vA5c9-s_{9W5(RU8G`y_IOSO>2Qg5anR?iRuN$)}^~9>Uw-| zsk%Gj%=>B(__z-OLCP`)f6IL-OW+qC2uxaEo3$$`aCVji(jpD9(!Ic5Uj!2LjhR?C z_EU8kG&>hK=7B(Mc12huDUdXbgJ!lZ$BRw`ih33(v!{$NLH!4q-udR~IqxC@FAV==55krez^1a$ZtOqPUnZkHS{!l>TQ~ z5lFUnc6Qsq@35#6cw-g>l3m>o%Jtk|dQpA1EC^(bC=-G6LAiz_O9d_q4SovLU%#PS zM!Gb=o3AmO>47z8-kEhbh(rXQi@ULM#~>y#2geCq0KN`#jQkBt>TWJSB?vNd#rz&^ zSXvqmlC-qIYNn@?&I+Qm6q7z&_+yY2;eS{m>Eo^Y2VoITO!;(r$t@p&H*DUGur@RW zc?~_Vh3(rp4h{kvPAT`rIydH6-n}l~OtcWZnnQV?s2PU~i7UW&Igcf^^;$mi+RRq&6e9nOK}yb-6#*4x27&|C#+9q Date: Thu, 30 Mar 2017 17:00:35 +0200 Subject: [PATCH 02/96] Update turbolinks --- Gemfile | 2 +- Gemfile.lock | 23 ++++++++++--------- app/assets/javascripts/action_btn_rules.js | 3 +-- app/assets/javascripts/admin.js | 3 +-- .../javascripts/admin_procedures_modal.js | 5 ++-- app/assets/javascripts/application.js | 4 +--- app/assets/javascripts/archive.js | 5 ++-- app/assets/javascripts/bootstrap_wysihtml5.js | 3 +-- app/assets/javascripts/cgu.js | 5 ++-- app/assets/javascripts/default_data_block.js | 3 +-- app/assets/javascripts/description.js | 3 +-- .../javascripts/dossier_commentaires_modal.js | 3 +-- app/assets/javascripts/dossiers.js | 6 ++--- .../javascripts/dossiers_list_filter.js | 7 +++--- app/assets/javascripts/dossiers_list_link.js | 3 +-- app/assets/javascripts/franceconnect_kit.js | 4 +--- .../javascripts/gestionnaire_dossier_modal.js | 3 +-- app/assets/javascripts/pref_list_dossier.js | 3 +-- app/assets/javascripts/procedure.js | 5 ++-- app/assets/javascripts/search.js | 3 +-- app/assets/javascripts/user/description.js | 3 +-- app/assets/stylesheets/_turbolinks.scss | 5 ++++ app/assets/stylesheets/_variables.scss | 6 ++++- app/assets/stylesheets/application.scss | 4 ++-- .../stylesheets/default_data_block.scss | 4 +++- app/assets/stylesheets/navbar.scss | 4 +++- app/assets/stylesheets/users.scss | 4 +++- app/views/users/carte/_init_carto.html.haml | 3 +-- 28 files changed, 61 insertions(+), 68 deletions(-) create mode 100644 app/assets/stylesheets/_turbolinks.scss diff --git a/Gemfile b/Gemfile index aea82425d..e6d77a9ab 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,7 @@ gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks -gem 'turbolinks', '~> 2.5' +gem 'turbolinks', '~> 5.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc diff --git a/Gemfile.lock b/Gemfile.lock index 3eb20b63b..40665e46f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,7 +95,7 @@ GEM bootstrap-wysihtml5-rails (0.3.3.8) railties (>= 3.0) browser (2.3.0) - builder (3.2.2) + builder (3.2.3) byebug (9.0.6) capybara (2.11.0) addressable @@ -120,8 +120,8 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.11.1) - concurrent-ruby (1.0.2) + coffee-script-source (1.12.2) + concurrent-ruby (1.0.5) connection_pool (2.2.1) crack (0.4.3) safe_yaml (~> 1.0.0) @@ -331,7 +331,7 @@ GEM domain_name (~> 0.5) http_parser.rb (0.6.0) httpclient (2.8.3) - i18n (0.7.0) + i18n (0.8.1) inflecto (0.0.2) ipaddress (0.8.3) jquery-rails (4.2.1) @@ -452,9 +452,9 @@ GEM actionpack (~> 5.x) actionview (~> 5.x) activesupport (~> 5.x) - rails-dom-testing (2.0.1) + rails-dom-testing (2.0.2) activesupport (>= 4.2.0, < 6.0) - nokogiri (~> 1.6.0) + nokogiri (~> 1.6) rails-html-sanitizer (1.0.3) loofah (~> 2.0) railties (5.0.0.1) @@ -585,13 +585,14 @@ GEM libv8 (~> 3.16.14.0) ref thor (0.19.4) - thread_safe (0.3.5) + thread_safe (0.3.6) tilt (2.0.5) timecop (0.8.1) trollop (2.1.2) - turbolinks (2.5.3) - coffee-rails - tzinfo (1.2.2) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) + tzinfo (1.2.3) thread_safe (~> 0.1) uglifier (3.0.4) execjs (>= 0.3.0, < 3) @@ -707,7 +708,7 @@ DEPENDENCIES sqlite3 therubyracer timecop - turbolinks (~> 2.5) + turbolinks (~> 5.0) uglifier (>= 1.3.0) unicode_utils unicorn diff --git a/app/assets/javascripts/action_btn_rules.js b/app/assets/javascripts/action_btn_rules.js index 7202d53b6..7ade4a9f9 100644 --- a/app/assets/javascripts/action_btn_rules.js +++ b/app/assets/javascripts/action_btn_rules.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_action_btn_rules); -$(document).ready(init_action_btn_rules); +$(document).on('turbolinks:load', init_action_btn_rules); function init_action_btn_rules() { $('.btn-send').click(function () { diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js index 967633a7b..8d6abc079 100644 --- a/app/assets/javascripts/admin.js +++ b/app/assets/javascripts/admin.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_admin); -$(document).ready(init_admin); +$(document).on('turbolinks:load', init_admin); function init_admin(){ destroy_action(); diff --git a/app/assets/javascripts/admin_procedures_modal.js b/app/assets/javascripts/admin_procedures_modal.js index 38112328c..3ca435a23 100644 --- a/app/assets/javascripts/admin_procedures_modal.js +++ b/app/assets/javascripts/admin_procedures_modal.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_path_modal); -$(document).ready(init_path_modal); +$(document).on('turbolinks:load', init_path_modal); function init_path_modal() { path_modal_action(); @@ -95,4 +94,4 @@ function transfer_errors_message(show) { else { $("#not_found_admin").slideUp(100) } -} \ No newline at end of file +} diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index a7827dfc8..41257fc29 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -33,8 +33,7 @@ //= require typeahead.bundle //= require select2 -$(document).on('page:load', application_init); -$(document).ready(application_init); +$(document).on('turbolinks:load', application_init); function application_init(){ @@ -55,4 +54,3 @@ function scroll_to() { return false; }); } - diff --git a/app/assets/javascripts/archive.js b/app/assets/javascripts/archive.js index 7497960e5..f44b3158f 100644 --- a/app/assets/javascripts/archive.js +++ b/app/assets/javascripts/archive.js @@ -1,5 +1,4 @@ -$(document).on('page:load', buttons_archived); -$(document).ready(buttons_archived); +$(document).on('turbolinks:load', buttons_archived); function buttons_archived(){ $("button#archive").on('click', function(){ @@ -11,4 +10,4 @@ function buttons_archived(){ $("button#archive").show(); $("#confirm").hide(); }); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index b0606ce8a..fa99d2a92 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -1,5 +1,4 @@ -$(document).ready(wysihtml5_active); -$(document).on('page:load', wysihtml5_active); +$(document).on('turbolinks:load', wysihtml5_active); function wysihtml5_active (){ $('.wysihtml5').each(function(i, elem) { diff --git a/app/assets/javascripts/cgu.js b/app/assets/javascripts/cgu.js index b0008d676..fe944fc04 100644 --- a/app/assets/javascripts/cgu.js +++ b/app/assets/javascripts/cgu.js @@ -1,9 +1,8 @@ -$(document).on('page:load', buttons_anchor); -$(document).ready(buttons_anchor); +$(document).on('turbolinks:load', buttons_anchor); function buttons_anchor(){ $("#cgu_menu_block").on('click', 'a', function(){ event.preventDefault(); $('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500); }); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 1ff875ddf..4e422f491 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_default_data_block); -$(document).ready(init_default_data_block); +$(document).on('turbolinks:load', init_default_data_block); function init_default_data_block() { $('.default_data_block #dossier .body').toggle(); diff --git a/app/assets/javascripts/description.js b/app/assets/javascripts/description.js index 6df9f436d..0776c4710 100644 --- a/app/assets/javascripts/description.js +++ b/app/assets/javascripts/description.js @@ -1,5 +1,4 @@ -$(document).on('page:load', action_type_de_champs); -$(document).ready(action_type_de_champs); +$(document).on('turbolinks:load', action_type_de_champs); function action_type_de_champs() { diff --git a/app/assets/javascripts/dossier_commentaires_modal.js b/app/assets/javascripts/dossier_commentaires_modal.js index ee6610c89..b0218aaef 100644 --- a/app/assets/javascripts/dossier_commentaires_modal.js +++ b/app/assets/javascripts/dossier_commentaires_modal.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_modal_commentaire); -$(document).ready(init_modal_commentaire); +$(document).on('turbolinks:load', init_modal_commentaire); function init_modal_commentaire() { var modal = $("#modalCommentairesDossierParChamp"); diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index c294b6c16..2902934e8 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -1,7 +1,5 @@ -$(document).on('page:load', the_terms); -$(document).ready(the_terms); -$(document).on('page:load', pannel_switch); -$(document).ready(pannel_switch); +$(document).on('turbolinks:load', the_terms); +$(document).on('turbolinks:load', pannel_switch); function pannel_switch() { $('#switch-notifications').click(function () { diff --git a/app/assets/javascripts/dossiers_list_filter.js b/app/assets/javascripts/dossiers_list_filter.js index 389eb6199..1fbe470d1 100644 --- a/app/assets/javascripts/dossiers_list_filter.js +++ b/app/assets/javascripts/dossiers_list_filter.js @@ -1,14 +1,13 @@ -$(document).on('page:load', filters_init); -$(document).ready(filters_init); +$(document).on('turbolinks:load', filters_init); function filters_init() { - $('html').click(function(event) { + $('html').click(function(event) { var visible_filter = $('.filter_framed:visible') if(visible_filter.length) { if (!$(event.target).closest('.filter_framed').is(":visible")) { visible_filter.hide(); } - } + } }); $(".filter").on('click', function (event) { diff --git a/app/assets/javascripts/dossiers_list_link.js b/app/assets/javascripts/dossiers_list_link.js index 09fb31542..147e109a3 100644 --- a/app/assets/javascripts/dossiers_list_link.js +++ b/app/assets/javascripts/dossiers_list_link.js @@ -1,5 +1,4 @@ -$(document).on('page:load', link_init); -$(document).ready(link_init); +$(document).on('turbolinks:load', link_init); function link_init() { $('#dossiers_list tr').on('click', function () { diff --git a/app/assets/javascripts/franceconnect_kit.js b/app/assets/javascripts/franceconnect_kit.js index 29b4b5f37..0432ecf74 100644 --- a/app/assets/javascripts/franceconnect_kit.js +++ b/app/assets/javascripts/franceconnect_kit.js @@ -1,7 +1,5 @@ -$(document).on('page:load', franceconnect_kit); -$(document).ready(franceconnect_kit); +$(document).on('turbolinks:load', franceconnect_kit); function franceconnect_kit() { franceConnectKit.init() } - diff --git a/app/assets/javascripts/gestionnaire_dossier_modal.js b/app/assets/javascripts/gestionnaire_dossier_modal.js index 2632ab407..807eec9fd 100644 --- a/app/assets/javascripts/gestionnaire_dossier_modal.js +++ b/app/assets/javascripts/gestionnaire_dossier_modal.js @@ -1,5 +1,4 @@ -$(document).on('page:load', modal_action); -$(document).ready(modal_action); +$(document).on('turbolinks:load', modal_action); function modal_action() { $('#PJmodal').on('show.bs.modal', function (event) { diff --git a/app/assets/javascripts/pref_list_dossier.js b/app/assets/javascripts/pref_list_dossier.js index 977778ff1..ffcd7b326 100644 --- a/app/assets/javascripts/pref_list_dossier.js +++ b/app/assets/javascripts/pref_list_dossier.js @@ -1,5 +1,4 @@ -$(document).on('page:load', pref_list_dossier_actions); -$(document).ready(pref_list_dossier_actions); +$(document).on('turbolinks:load', pref_list_dossier_actions); function pref_list_dossier_actions() { pref_list_dossier_open_action(); diff --git a/app/assets/javascripts/procedure.js b/app/assets/javascripts/procedure.js index b3fa21dd3..aec66d50e 100644 --- a/app/assets/javascripts/procedure.js +++ b/app/assets/javascripts/procedure.js @@ -1,5 +1,4 @@ -$(document).on('page:load', button_edit_procedure_init); -$(document).ready(button_edit_procedure_init); +$(document).on('turbolinks:load', button_edit_procedure_init); function button_edit_procedure_init(){ buttons_api_carto(); @@ -35,4 +34,4 @@ function button_individual () { if ($('#procedure_for_individual').is(':checked')) $("#individual_with_siret").show(); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/search.js b/app/assets/javascripts/search.js index 689f65f37..a47c6993c 100644 --- a/app/assets/javascripts/search.js +++ b/app/assets/javascripts/search.js @@ -1,5 +1,4 @@ -$(document).on('page:load', init_search_anim); -$(document).ready(init_search_anim); +$(document).on('turbolinks:load', init_search_anim); function init_search_anim(){ $("#search_area").on('click', search_fadeIn); diff --git a/app/assets/javascripts/user/description.js b/app/assets/javascripts/user/description.js index cdae9a4c1..c1ac0aabf 100644 --- a/app/assets/javascripts/user/description.js +++ b/app/assets/javascripts/user/description.js @@ -1,5 +1,4 @@ -$(document).on('page:load', activeSelect2); -$(document).ready(activeSelect2); +$(document).on('turbolinks:load', activeSelect2); function activeSelect2() { $('select.select2').select2({ theme: "bootstrap", width: '100%' }); diff --git a/app/assets/stylesheets/_turbolinks.scss b/app/assets/stylesheets/_turbolinks.scss new file mode 100644 index 000000000..3a6401063 --- /dev/null +++ b/app/assets/stylesheets/_turbolinks.scss @@ -0,0 +1,5 @@ +@import "variables"; + +.turbolinks-progress-bar { + background-color: $light-blue; +} diff --git a/app/assets/stylesheets/_variables.scss b/app/assets/stylesheets/_variables.scss index daf479d2c..701b59ca1 100644 --- a/app/assets/stylesheets/_variables.scss +++ b/app/assets/stylesheets/_variables.scss @@ -1 +1,5 @@ -$font-size-base: 16px; \ No newline at end of file +// colors +$light-blue: #F2F6FA; + +// Bootstrap variables +$font-size-base: 16px; diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 6d4168935..dd10a3f2b 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -27,7 +27,7 @@ @import "bootstrap"; body { - background-color: #F2F6FA; + background-color: $light-blue; } html, body { @@ -63,7 +63,7 @@ form { } #footer { - background-color: #F2F6FA; + background-color: $light-blue; text-align: center; padding: 0; a, p { diff --git a/app/assets/stylesheets/default_data_block.scss b/app/assets/stylesheets/default_data_block.scss index 9de8963fe..9590ce8ff 100644 --- a/app/assets/stylesheets/default_data_block.scss +++ b/app/assets/stylesheets/default_data_block.scss @@ -1,3 +1,5 @@ +@import "variables"; + .default_data_block { font-family: Arial; @@ -53,7 +55,7 @@ color: #FFFFFF; } .action:hover { - color: #F2F6FA; + color: $light-blue; } .count { font-size: 16px; diff --git a/app/assets/stylesheets/navbar.scss b/app/assets/stylesheets/navbar.scss index bf35549e1..1ed38032d 100644 --- a/app/assets/stylesheets/navbar.scss +++ b/app/assets/stylesheets/navbar.scss @@ -1,3 +1,5 @@ +@import "variables"; + #header { top: 0; left: 0; @@ -185,7 +187,7 @@ } } .button-navbar-action:hover { - color: #F2F6FA; + color: $light-blue; } .button_navbar:hover, .button-navbar-action:hover { diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss index 8b734bee7..bdf586ad3 100644 --- a/app/assets/stylesheets/users.scss +++ b/app/assets/stylesheets/users.scss @@ -1,3 +1,5 @@ +@import "variables"; + #users_index, #admins_index{ margin-left: 2rem; margin-right: 2rem; @@ -48,7 +50,7 @@ padding: 10px; } .action:hover { - color: #F2F6FA; + color: $light-blue; } .padding-left-30 { padding-left: 30px; diff --git a/app/views/users/carte/_init_carto.html.haml b/app/views/users/carte/_init_carto.html.haml index fdb2f12cc..8516fe270 100644 --- a/app/views/users/carte/_init_carto.html.haml +++ b/app/views/users/carte/_init_carto.html.haml @@ -1,4 +1,3 @@ %script{type: 'text/javascript'} ="var dossier_id =#{dossier.id}" - $(document).on('page:load', initCarto); - $(document).ready(initCarto); \ No newline at end of file + $(document).on('turbolinks:load', initCarto); From d5e5a7997af6ecba73ed2346b8a1b94046063a1f Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Thu, 30 Mar 2017 17:54:43 +0200 Subject: [PATCH 03/96] Disable turbolinks cache to avoid weird behavior (ex: page change twice after single click) --- app/views/layouts/application.html.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index c4e7e86ce..ab1caee1b 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,6 +1,7 @@ %html %head %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ + %meta{ name: "turbolinks-cache-control", content: "no-cache" } %title =t('dynamics.page_title') %meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"} From 8126549a0d8d0106d4aaec9545780773520675d8 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 28 Mar 2017 17:45:15 +0200 Subject: [PATCH 04/96] Make the datepicker french for the auto archive field --- app/views/admin/procedures/_informations.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index c379ac924..98abc8a32 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -85,7 +85,7 @@ %h4 Options avancées %label{ for: :auto_archive_on} Archivage automatique le - = f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-format' => 'dd/mm/yyyy' } + = f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-language' => 'fr', 'date-format' => 'dd/mm/yyyy' } (à 00h00) %p.help-block %i.fa.fa-info-circle From 6cb78acd8529472a16b7d3c8c7bcf5fd9dd6cc7c Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 28 Mar 2017 18:06:49 +0200 Subject: [PATCH 05/96] Make the birthday field a date field And remove the date picker (you can now use the native one) --- app/controllers/users/dossiers_controller.rb | 21 ++++++++- .../etapes/etape_2/_individual.html.haml | 2 +- spec/features/users/dossier_creation_spec.rb | 43 +++++++++++++------ 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 2e5e6b46b..fe4421dab 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -122,7 +122,7 @@ class Users::DossiersController < UsersController @facade = facade params[:dossier][:id] if checked_autorisation_donnees? - unless Dossier.find(@facade.dossier.id).update_attributes update_params + unless Dossier.find(@facade.dossier.id).update_attributes update_params_with_formatted_birthdate flash.alert = @facade.dossier.errors.full_messages.join('
').html_safe return redirect_to users_dossier_path(id: @facade.dossier.id) @@ -171,6 +171,25 @@ class Users::DossiersController < UsersController params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:gender, :nom, :prenom, :birthdate]) end + def update_params_with_formatted_birthdate + editable_params = update_params + + # If the user was shown a date input field (if its browser supports it), + # the returned param will follow the YYYY-MM-DD pattern, which we need + # do convert to the DD/MM/YYYY pattern we use + if editable_params && + editable_params[:individual_attributes] && + editable_params[:individual_attributes][:birthdate] && + editable_params[:individual_attributes][:birthdate] =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/ + + original_birthdate = editable_params[:individual_attributes][:birthdate] + formatted_birthdate = I18n.l(original_birthdate.to_date, format: '%d/%m/%Y') + editable_params[:individual_attributes][:birthdate] = formatted_birthdate + end + + editable_params + end + def checked_autorisation_donnees? update_params[:autorisation_donnees] == '1' end diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml index 8e8a457e3..48bc13797 100644 --- a/app/views/dossiers/etapes/etape_2/_individual.html.haml +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -31,7 +31,7 @@ %label %h4 Date de naissance * - = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} + = ff.date_field :birthdate, {class: 'form-control', placeholder: 'jj/mm/aaaa'} %p %label{ style:'font-weight:normal' } diff --git a/spec/features/users/dossier_creation_spec.rb b/spec/features/users/dossier_creation_spec.rb index d1a970275..4adf0e190 100644 --- a/spec/features/users/dossier_creation_spec.rb +++ b/spec/features/users/dossier_creation_spec.rb @@ -9,19 +9,36 @@ feature 'As a User I wanna create a dossier' do let(:procedure_with_siret) { create(:procedure, :published, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) } let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) } - scenario 'Identification for individual' do - login_as user, scope: :user - visit commencer_path(procedure_path: procedure_for_individual.path) - fill_in 'dossier_individual_attributes_nom', with: 'Nom' - fill_in 'dossier_individual_attributes_prenom', with: 'Prenom' - fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987' - find(:css, "#dossier_autorisation_donnees[value='1']").set(true) - page.find_by_id('etape_suivante').click - expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) - page.find_by_id('etape_suivante').click - fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1' - page.find_by_id('suivant').click - expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) + context 'Identification for individual' do + before do + login_as user, scope: :user + visit commencer_path(procedure_path: procedure_for_individual.path) + fill_in 'dossier_individual_attributes_nom', with: 'Nom' + fill_in 'dossier_individual_attributes_prenom', with: 'Prenom' + find(:css, "#dossier_autorisation_donnees[value='1']").set(true) + end + + scenario "with a proper date input field for birthdate (type='date' supported)" do + fill_in 'dossier_individual_attributes_birthdate', with: '1987-10-14' + page.find_by_id('etape_suivante').click + expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) + page.find_by_id('etape_suivante').click + fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1' + page.find_by_id('suivant').click + expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987") + expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) + end + + scenario "with a basic text input field for birthdate (type='date' unsupported)" do + fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987' + page.find_by_id('etape_suivante').click + expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) + page.find_by_id('etape_suivante').click + fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1' + page.find_by_id('suivant').click + expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987") + expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) + end end scenario 'Identification through siret', vcr: {cassette_name: 'search_ban_paris'}, js: true do From e541fe4ca10ced746604ea62bf55484f0c933709 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Wed, 29 Mar 2017 11:08:26 +0200 Subject: [PATCH 06/96] Exclude dynamics/fr.yml from shared_paths in mina MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So that it is directly read from the Rails app’s directory --- config/deploy.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index bc9960d27..c3eb4342d 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -85,7 +85,6 @@ set :shared_paths, [ "config/initializers/super_admin.rb", "config/unicorn.rb", "config/initializers/raven.rb", - "config/locales/dynamics/fr.yml", 'config/france_connect.yml', 'config/initializers/mailjet.rb', 'config/initializers/storage_url.rb', From 82c8e1476997479f6f7bafeff2d546b612ffc666 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Wed, 29 Mar 2017 11:10:25 +0200 Subject: [PATCH 07/96] Wrap a localised string in quotes Backport from the shared dynamics/fr.yml --- config/locales/dynamics/fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index ecc9c2b8d..143e5ca14 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -1,6 +1,6 @@ fr: dynamics: - page_title: TPS - Téléprocédures simplifiées + page_title: 'TPS - Téléprocédures simplifiées' contact_email: contact@tps.apientreprise.fr users: connexion_title: Connexion From 87ab2ba9ebaf139227878239445958f13a3cdd5a Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 15:28:39 +0200 Subject: [PATCH 08/96] Remove trailing spaces --- app/decorators/dossiers_decorator.rb | 2 +- app/views/admin/mail_templates/edit.html.haml | 4 ++-- app/views/dossiers/_infos_dossier.html.haml | 2 +- app/views/layouts/_ie_lt_10.html.haml | 2 +- spec/fixtures/cassettes/admin_procedure_edit.yml | 2 +- spec/fixtures/cassettes/ban_search_nothing.yml | 2 +- spec/fixtures/cassettes/ban_search_paris.yml | 2 +- spec/fixtures/cassettes/bano_octo.yml | 2 +- spec/fixtures/cassettes/bano_search_nothing.yml | 2 +- spec/fixtures/cassettes/bano_search_paris.yml | 2 +- .../cassettes/call_geo_api_departements.yml | 2 +- .../fixtures/cassettes/complete_demande_spec.yml | 2 +- spec/fixtures/cassettes/geoapi_departements.yml | 2 +- spec/fixtures/cassettes/geoapi_regions.yml | 2 +- spec/fixtures/cassettes/github_lastrelease.yml | 2 +- spec/fixtures/cassettes/search_ban_paris.yml | 4 ++-- spec/views/users/carte/show.html.haml_spec.rb | 16 ++++++++-------- 17 files changed, 26 insertions(+), 26 deletions(-) diff --git a/app/decorators/dossiers_decorator.rb b/app/decorators/dossiers_decorator.rb index 0960972b1..6e8571b6f 100644 --- a/app/decorators/dossiers_decorator.rb +++ b/app/decorators/dossiers_decorator.rb @@ -1,4 +1,4 @@ class DossiersDecorator < Draper::CollectionDecorator delegate :current_page, :per_page, :offset, :total_entries, :total_pages - + end diff --git a/app/views/admin/mail_templates/edit.html.haml b/app/views/admin/mail_templates/edit.html.haml index 35efe2506..31ff8fd7f 100644 --- a/app/views/admin/mail_templates/edit.html.haml +++ b/app/views/admin/mail_templates/edit.html.haml @@ -3,8 +3,8 @@ = @mail_template.class.const_get(:DISPLAYED_NAME) = simple_form_for @mail_template, - as: 'mail_template', - url: admin_procedure_mail_template_path(@procedure, @mail_template.class.slug), + as: 'mail_template', + url: admin_procedure_mail_template_path(@procedure, @mail_template.class.slug), method: :put do |f| .row .col-md-6 diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 91d85a427..39772f897 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -25,7 +25,7 @@ - unless @facade.champs.nil? - @facade.champs.each do |champ| - - next if champ.type_champ == 'explication' + - next if champ.type_champ == 'explication' - if champ.type_champ == 'header_section' .row.title-row.margin-top-40 %div.col-xs-3.split-hr diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml index 3dcbb4a40..d9e8093ad 100644 --- a/app/views/layouts/_ie_lt_10.html.haml +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -6,4 +6,4 @@ Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10 ="".html_safe - + diff --git a/spec/fixtures/cassettes/admin_procedure_edit.yml b/spec/fixtures/cassettes/admin_procedure_edit.yml index a4f8431cf..40ff5e50e 100644 --- a/spec/fixtures/cassettes/admin_procedure_edit.yml +++ b/spec/fixtures/cassettes/admin_procedure_edit.yml @@ -1339,6 +1339,6 @@ http_interactions: body: encoding: UTF-8 string: '' - http_version: + http_version: recorded_at: Wed, 29 Jun 2016 14:09:51 GMT recorded_with: VCR 3.0.1 diff --git a/spec/fixtures/cassettes/ban_search_nothing.yml b/spec/fixtures/cassettes/ban_search_nothing.yml index 5e36790fd..b2f2c63a5 100644 --- a/spec/fixtures/cassettes/ban_search_nothing.yml +++ b/spec/fixtures/cassettes/ban_search_nothing.yml @@ -37,6 +37,6 @@ http_interactions: string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL 1.0", "query": "je recherche pas grand chose", "type": "FeatureCollection", "features": []}' - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 14:17:40 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/ban_search_paris.yml b/spec/fixtures/cassettes/ban_search_paris.yml index d61951ec1..8de476502 100644 --- a/spec/fixtures/cassettes/ban_search_paris.yml +++ b/spec/fixtures/cassettes/ban_search_paris.yml @@ -40,6 +40,6 @@ http_interactions: "6", "citycode": "75056", "name": "Paris", "city": "Paris", "postcode": "75000", "context": "75, \u00cele-de-France", "score": 1.0, "label": "Paris", "id": "75056", "type": "city", "population": "2244"}, "type": "Feature"}]}' - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 14:16:43 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/bano_octo.yml b/spec/fixtures/cassettes/bano_octo.yml index ddf8b0b82..9f8ac6c40 100644 --- a/spec/fixtures/cassettes/bano_octo.yml +++ b/spec/fixtures/cassettes/bano_octo.yml @@ -42,6 +42,6 @@ http_interactions: "score": 0.7561038961038961, "label": "50 Avenue des Champs \u00c9lys\u00e9es 75008 Paris", "city": "Paris", "housenumber": "50", "street": "Avenue des Champs \u00c9lys\u00e9es"}, "type": "Feature"}]}' - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 16:22:23 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/bano_search_nothing.yml b/spec/fixtures/cassettes/bano_search_nothing.yml index 597c71025..8eb0b3adf 100644 --- a/spec/fixtures/cassettes/bano_search_nothing.yml +++ b/spec/fixtures/cassettes/bano_search_nothing.yml @@ -37,6 +37,6 @@ http_interactions: string: '{"limit": 5, "attribution": "BAN", "version": "draft", "licence": "ODbL 1.0", "query": "je recherche pas grand chose", "type": "FeatureCollection", "features": []}' - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 16:45:53 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/bano_search_paris.yml b/spec/fixtures/cassettes/bano_search_paris.yml index 571c86ffe..dd4aee086 100644 --- a/spec/fixtures/cassettes/bano_search_paris.yml +++ b/spec/fixtures/cassettes/bano_search_paris.yml @@ -58,6 +58,6 @@ http_interactions: "Bourgueil", "context": "37, Indre-et-Loire, Centre Val-de-Loire", "score": 0.8235454545454545, "label": "Paris Buton 37140 Bourgueil", "id": "37031_X027_0a5e7a", "type": "locality"}, "type": "Feature"}]}' - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 16:43:34 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/call_geo_api_departements.yml b/spec/fixtures/cassettes/call_geo_api_departements.yml index c33905578..a1ff74c3c 100644 --- a/spec/fixtures/cassettes/call_geo_api_departements.yml +++ b/spec/fixtures/cassettes/call_geo_api_departements.yml @@ -65,6 +65,6 @@ http_interactions: N+uzXJ5dyOK7NmjOGeG9r6owU3bcGdur3h5zt88s8GDrk5Vr0XU0k+55AF0I s/CpjoySBUCFk5yHTSkj07kVuSy0/cFiguvi0tfujRJMsSy4M3O7F8FmkmAW irOb5smWiq/kLAnauNjrmi/YzF+Jb/8A5ygzwMEMAAA= - http_version: + http_version: recorded_at: Wed, 19 Oct 2016 09:31:33 GMT recorded_with: VCR 3.0.1 diff --git a/spec/fixtures/cassettes/complete_demande_spec.yml b/spec/fixtures/cassettes/complete_demande_spec.yml index 95841bbea..caa571ec8 100644 --- a/spec/fixtures/cassettes/complete_demande_spec.yml +++ b/spec/fixtures/cassettes/complete_demande_spec.yml @@ -96,6 +96,6 @@ http_interactions: z2SJApORaZaCKuZpGNKAsDNaNNYF8frdH6I8w6Js5tIqibc3b9/wLh0nHWuy u7m8BrwmSaXSFXPVdiuu4KgxpMJ7B/xNLcQ0Vj0N3/vm97RkD/8BJlYZoPAL AAA= - http_version: + http_version: recorded_at: Thu, 09 Jun 2016 14:42:08 GMT recorded_with: VCR 3.0.1 diff --git a/spec/fixtures/cassettes/geoapi_departements.yml b/spec/fixtures/cassettes/geoapi_departements.yml index 6eee3d2bf..5f827279d 100644 --- a/spec/fixtures/cassettes/geoapi_departements.yml +++ b/spec/fixtures/cassettes/geoapi_departements.yml @@ -65,6 +65,6 @@ http_interactions: N+uzXJ5dyOK7NmjOGeG9r6owU3bcGdur3h5zt88s8GDrk5Vr0XU0k+55AF0I s/CpjoySBUCFk5yHTSkj07kVuSy0/cFiguvi0tfujRJMsSy4M3O7F8FmkmAW irOb5smWiq/kLAnauNjrmi/YzF+Jb/8A5ygzwMEMAAA= - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 09:25:37 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/geoapi_regions.yml b/spec/fixtures/cassettes/geoapi_regions.yml index 2de462046..7519677b9 100644 --- a/spec/fixtures/cassettes/geoapi_regions.yml +++ b/spec/fixtures/cassettes/geoapi_regions.yml @@ -52,6 +52,6 @@ http_interactions: vITGxXAG/udbcvktKR9lhzxL3kZ2CdrHLaLQNQanrShRewzREPVXVG5grpaj Hu0xKImVOPQ8p41BK/ZaalE21LW2a0dUXmEWropi1MOpu8XE5syx61FMwqvq i/4Biby7eZXIu+w90GBswyPlSI7F3fRqb99L+pyA3QIAAA== - http_version: + http_version: recorded_at: Fri, 16 Dec 2016 09:24:25 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/github_lastrelease.yml b/spec/fixtures/cassettes/github_lastrelease.yml index 163e5bdea..251adc06c 100644 --- a/spec/fixtures/cassettes/github_lastrelease.yml +++ b/spec/fixtures/cassettes/github_lastrelease.yml @@ -88,6 +88,6 @@ http_interactions: MsC0IZpxkADm3tm4bNnpxecB+3J2Ef3+/N3FkL1DrTrQ4K5WqIy667x3ahI8 qCS5omo3ShFsugfGRc9Uf2pgQWVa90f7eBvTqToJNRraltKlBsbyUYwGlx3I EAhlg5VDW2QyJPYzKNZKRjtiOlVgqzz+4AgY6e7UtgdoZtf/AIfUb6aECAAA - http_version: + http_version: recorded_at: Thu, 15 Dec 2016 15:48:21 GMT recorded_with: VCR 3.0.3 diff --git a/spec/fixtures/cassettes/search_ban_paris.yml b/spec/fixtures/cassettes/search_ban_paris.yml index b13b545b5..40973bfb0 100644 --- a/spec/fixtures/cassettes/search_ban_paris.yml +++ b/spec/fixtures/cassettes/search_ban_paris.yml @@ -43,7 +43,7 @@ http_interactions: "label": "50 Avenue des Champs \u00c9lys\u00e9es 75008 Paris", "city": "Paris", "housenumber": "50", "street": "Avenue des Champs \u00c9lys\u00e9es"}, "type": "Feature"}]}' - http_version: + http_version: recorded_at: Tue, 03 Jan 2017 13:00:54 GMT - request: method: get @@ -88,6 +88,6 @@ http_interactions: "label": "50 Avenue des Champs \u00c9lys\u00e9es 75008 Paris", "city": "Paris", "housenumber": "50", "street": "Avenue des Champs \u00c9lys\u00e9es"}, "type": "Feature"}]}' - http_version: + http_version: recorded_at: Tue, 03 Jan 2017 13:00:55 GMT recorded_with: VCR 3.0.3 diff --git a/spec/views/users/carte/show.html.haml_spec.rb b/spec/views/users/carte/show.html.haml_spec.rb index a20b907f0..b30733034 100644 --- a/spec/views/users/carte/show.html.haml_spec.rb +++ b/spec/views/users/carte/show.html.haml_spec.rb @@ -4,11 +4,11 @@ describe 'users/carte/show.html.haml', type: :view do let(:state) { 'draft' } let(:dossier) { create(:dossier, state: state) } let(:dossier_id) { dossier.id } - + before do assign(:dossier, dossier) end - + context 'sur la page de la carte d\'une demande' do before do render @@ -20,23 +20,23 @@ describe 'users/carte/show.html.haml', type: :view do it 'la carte est bien présente' do expect(rendered).to have_selector('#map') end - + context 'présence des inputs hidden' do it 'stockage du json des polygons dessinés' do expect(rendered).to have_selector('input[type=hidden][id=json_latlngs][name=json_latlngs]', visible: false) end end - + context 'si la page précédente n\'est pas recapitulatif' do it 'le bouton "Etape suivante" est présent' do expect(rendered).to have_selector('#etape_suivante') end - + # it 'le bouton Etape suivante possède un onclick correct' do # expect(rendered).to have_selector('input[type=submit][id=etape_suivante][onclick=\'submit_check_draw(event)\']') # end end - + context 'si la page précédente est recapitularif' do let(:state) { 'initiated' } @@ -47,11 +47,11 @@ describe 'users/carte/show.html.haml', type: :view do it 'le bouton "Modification terminé" est présent' do expect(rendered).to have_selector('#modification_terminee') end - + # it 'le bouton "Modification terminé" possède un onclick correct' do # expect(rendered).to have_selector('input[type=submit][id=modification_terminee][onclick=\'submit_check_draw(event)\']') # end - + it 'le lien de retour au récapitulatif est présent' do expect(rendered).to have_selector("a[href='/users/dossiers/#{dossier_id}/recapitulatif']") end From 15802b18ea9c1d420a8e82555109145a22887827 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 15:17:30 +0200 Subject: [PATCH 09/96] Files should not start with a new line --- app/decorators/type_de_piece_justificative_decorator.rb | 1 - app/views/admin/procedures/_informations.html.haml | 1 - .../_left_panel_admin_procedurescontroller_navbar.html.haml | 1 - app/views/users/description/_pieces_justificatives.html.haml | 1 - config/database.yml | 1 - spec/decorators/type_de_champ_decorator_spec.rb | 1 - spec/support/controller_helpers.rb | 1 - 7 files changed, 7 deletions(-) diff --git a/app/decorators/type_de_piece_justificative_decorator.rb b/app/decorators/type_de_piece_justificative_decorator.rb index 284c1b854..799f42907 100644 --- a/app/decorators/type_de_piece_justificative_decorator.rb +++ b/app/decorators/type_de_piece_justificative_decorator.rb @@ -1,4 +1,3 @@ - class TypeDePieceJustificativeDecorator < Draper::Decorator delegate_all def button_up params diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 98abc8a32..976275d40 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -1,4 +1,3 @@ - - if @procedure.locked? .alert.alert-info Cette procédure est publiée, certains éléments de la description ne sont plus modifiables diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml index 8a05145b8..fe18dc18d 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml @@ -1,4 +1,3 @@ - %div#first-block %div.en-cours -unless @procedure.logo.blank? diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index 5dce35c68..c7905af28 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -1,4 +1,3 @@ - %table.table - if dossier.procedure.cerfa_flag %tr diff --git a/config/database.yml b/config/database.yml index 00832cfbc..76a34a338 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,4 +1,3 @@ - development: adapter: postgresql encoding: unicode diff --git a/spec/decorators/type_de_champ_decorator_spec.rb b/spec/decorators/type_de_champ_decorator_spec.rb index dd5d75307..88779c782 100644 --- a/spec/decorators/type_de_champ_decorator_spec.rb +++ b/spec/decorators/type_de_champ_decorator_spec.rb @@ -1,4 +1,3 @@ - require 'spec_helper' describe TypeDeChampDecorator do diff --git a/spec/support/controller_helpers.rb b/spec/support/controller_helpers.rb index 97f2a814b..de422d081 100644 --- a/spec/support/controller_helpers.rb +++ b/spec/support/controller_helpers.rb @@ -1,4 +1,3 @@ - RSpec.configure do |config| # config.include Devise::TestHelpers, type: :controller end From d5e7bbd80db6217256684be3ac94bf090f72807f Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 15:27:04 +0200 Subject: [PATCH 10/96] Files should end with a new line --- app/assets/javascripts/address_typeahead.js | 2 +- app/assets/javascripts/carte/cadastre.js | 2 +- app/assets/javascripts/carte/qp.js | 2 +- app/assets/javascripts/channels/notifications.js | 2 +- app/assets/javascripts/start.js | 2 +- app/assets/stylesheets/_card.scss | 2 +- app/assets/stylesheets/_helpers.scss | 2 +- app/assets/stylesheets/admin_procedures_modal.scss | 2 +- app/assets/stylesheets/cgu.scss | 2 +- app/assets/stylesheets/france_connect_particulier.scss | 2 +- app/assets/stylesheets/login.scss | 2 +- app/assets/stylesheets/notification_alert.scss | 2 +- app/assets/stylesheets/pj_modal.scss | 2 +- app/assets/stylesheets/pref_list_menu.scss | 2 +- app/assets/stylesheets/siret.scss | 2 +- app/assets/stylesheets/support_navigator_banner.scss | 2 +- app/assets/stylesheets/switch_menu.scss | 2 +- app/assets/stylesheets/typeahead.scss | 2 +- app/assets/stylesheets/ul.scss | 2 +- app/channels/notifications_channel.rb | 2 +- app/controllers/admin/accompagnateurs_controller.rb | 2 +- app/controllers/admin/change_dossier_state_controller.rb | 2 +- app/controllers/admin/previsualisations_controller.rb | 2 +- app/controllers/admin/types_de_champ_private_controller.rb | 2 +- app/controllers/api/v1/dossiers_controller.rb | 2 +- app/controllers/api_controller.rb | 2 +- app/controllers/backoffice/commentaires_controller.rb | 2 +- app/controllers/backoffice/private_formulaires_controller.rb | 2 +- app/controllers/backoffice_controller.rb | 2 +- app/controllers/ban/search_controller.rb | 2 +- app/controllers/cgu_controller.rb | 2 +- app/controllers/france_connect/particulier_controller.rb | 2 +- app/controllers/users/commentaires_controller.rb | 2 +- app/controllers/users/dossiers/add_siret_controller.rb | 2 +- app/controllers/users/dossiers/commentaires_controller.rb | 2 +- app/controllers/users/dossiers/invites_controller.rb | 2 +- app/controllers/users_controller.rb | 2 +- app/decorators/type_de_champ_private_decorator.rb | 2 +- app/decorators/type_de_piece_justificative_decorator.rb | 2 +- app/facades/admin_procedures_show_facades.rb | 2 +- app/facades/admin_types_de_champ_facades.rb | 2 +- app/facades/invite_dossier_facades.rb | 2 +- app/lib/file_size_validator.rb | 2 +- app/lib/siade/exercices_adapter.rb | 2 +- app/models/assign_to.rb | 2 +- app/models/cerfa.rb | 2 +- app/models/follow.rb | 2 +- app/models/france_connect_information.rb | 2 +- app/models/procedure_path.rb | 2 +- app/models/type_de_champ_private.rb | 2 +- app/models/type_de_champ_public.rb | 2 +- app/serializers/cerfa_serializer.rb | 2 +- app/serializers/champ_private_serializer.rb | 2 +- app/serializers/champ_public_serializer.rb | 2 +- app/serializers/commentaire_serializer.rb | 2 +- app/serializers/dossiers_serializer.rb | 2 +- app/serializers/entreprise_serializer.rb | 2 +- app/serializers/etablissement_csv_serializer.rb | 2 +- app/serializers/etablissement_serializer.rb | 2 +- app/serializers/module_api_carto_serializer.rb | 2 +- app/serializers/piece_justificative_serializer.rb | 2 +- app/serializers/type_de_champ_serializer.rb | 2 +- app/serializers/user_serializer.rb | 2 +- app/services/accompagnateur_service.rb | 2 +- app/services/browser_service.rb | 2 +- app/services/clamav_service.rb | 2 +- app/services/dossier_service.rb | 2 +- app/services/dossiers_list_user_service.rb | 2 +- app/services/france_connect_salt_service.rb | 2 +- app/services/geojson_service.rb | 2 +- app/services/number_service.rb | 2 +- app/services/pieces_justificatives_service.rb | 2 +- app/services/previsualisation_service.rb | 2 +- app/services/switch_devise_profile_service.rb | 2 +- app/services/user_routes_authorization_service.rb | 2 +- app/uploaders/base_uploader.rb | 2 +- app/views/admin/change_dossier_state/change.html.haml | 2 +- app/views/admin/change_dossier_state/check.html.haml | 2 +- app/views/admin/procedures/_onglets.html.haml | 2 +- app/views/admin/profile/show.html.haml | 2 +- app/views/administrateurs/sessions/new.html.haml | 2 +- app/views/administrations/index.html.haml | 2 +- app/views/backoffice/dossiers/show.html.haml | 2 +- app/views/cgu/index.html.haml | 2 +- app/views/commencer/archived.html.haml | 2 +- app/views/demo/_list.html.haml | 2 +- app/views/demo/index.html.haml | 2 +- app/views/dossiers/show.html.haml | 2 +- app/views/france_connect/particulier/check_email.html.haml | 2 +- app/views/france_connect/particulier/new.html.haml | 2 +- app/views/gestionnaires/passwords/edit.html.haml | 2 +- app/views/gestionnaires/passwords/new.html.haml | 2 +- app/views/layouts/_switch_devise_profile_module.html.haml | 2 +- .../_left_panel_admin_procedurescontroller_archived.html.haml | 2 +- .../_left_panel_admin_procedurescontroller_draft.html.haml | 2 +- app/views/layouts/left_panels/_left_panel_default.html.haml | 2 +- .../_left_panel_users_dossiers_invitescontroller_show.html.haml | 2 +- app/views/layouts/left_panels/_search_area.html.haml | 2 +- app/views/layouts/mailer.text.haml | 2 +- .../_navbar_admin_gestionnairescontroller_index.html.haml | 2 +- .../_navbar_admin_procedurescontroller_archived.html.haml | 2 +- .../navbars/_navbar_admin_procedurescontroller_draft.html.haml | 2 +- .../navbars/_navbar_admin_profilecontroller_show.html.haml | 2 +- app/views/layouts/navbars/_navbar_log_options.html.haml | 2 +- app/views/users/description/champs/_civilite.html.haml | 2 +- app/views/users/description/champs/_datetime.html.haml | 2 +- app/views/users/description/champs/_yes_no.html.haml | 2 +- app/views/users/description/show.html.haml | 2 +- app/views/users/dossiers/add_siret/show.html.haml | 2 +- app/views/users/dossiers/show.html.haml | 2 +- app/views/users/passwords/edit.html.haml | 2 +- app/views/users/passwords/new.html.haml | 2 +- app/views/users/registrations/new.html.haml | 2 +- circle.yml | 2 +- config/initializers/active_model_serializer.rb | 2 +- config/initializers/browser.rb | 2 +- config/initializers/clamav.rb | 2 +- config/initializers/demo_emails.rb | 2 +- config/initializers/features.yml | 2 +- config/initializers/open_id_connect.rb | 2 +- config/initializers/openstack_version.rb | 2 +- config/initializers/storage_url.rb | 2 +- config/initializers/urls.rb | 2 +- config/initializers/will_paginate.rb | 2 +- config/locales/devise.fr.yml | 2 +- config/locales/models/procedure/fr.yml | 2 +- config/locales/smart_listing.fr.yml | 2 +- config/sidekiq.yml | 2 +- lib/tasks/cloud_storage.rake | 2 +- spec/controllers/admin/accompagnateurs_controller_spec.rb | 2 +- spec/controllers/admin/pieces_justificatives_controller_spec.rb | 2 +- spec/controllers/admin/previsualisations_controller_spec.rb | 2 +- spec/controllers/admin/profile_controller_spec.rb | 2 +- spec/controllers/administrateur/sessions_controller_spec.rb | 2 +- spec/controllers/api_controller_spec.rb | 2 +- .../backoffice/dossiers/procedure_controller_spec.rb | 2 +- spec/controllers/cgu_controller_spec.rb | 2 +- spec/controllers/demo_controller_spec.rb | 2 +- spec/controllers/gestionnaires/sessions_controller_spec.rb | 2 +- spec/controllers/ping_controller_spec.rb | 2 +- spec/controllers/sessions/sessions_controller_spec.rb | 2 +- spec/controllers/users/carte_controller_shared_example.rb | 2 +- spec/controllers/users/dossiers/invites_controller_spec.rb | 2 +- spec/decorators/procedure_decorator_spec.rb | 2 +- spec/decorators/procedures_decorator_spec.rb | 2 +- spec/decorators/type_de_piece_justificative_decorator_spec.rb | 2 +- spec/facades/dossiers_list_facades_spec.rb | 2 +- spec/factories/administrateur.rb | 2 +- spec/factories/administration.rb | 2 +- spec/factories/gestionnaire.rb | 2 +- spec/factories/user.rb | 2 +- .../lateral_page_pref_list_dossier_backoffice_spec.rb | 2 +- ...teral_page_pref_list_dossier_by_procedure_backoffice_spec.rb | 2 +- .../description_page/upload_piece_justificative_spec.rb | 2 +- spec/features/users/complete_demande_spec.rb | 2 +- spec/features/users/drawing_a_zone_with_freedraw_spec.rb | 2 +- spec/lib/carto/geo_api/driver_spec.rb | 2 +- spec/lib/file_size_validator_spec.rb | 2 +- spec/lib/siade/exercices_adapter_spec.rb | 2 +- spec/models/champ_private_spec.rb | 2 +- spec/models/champ_public_spec.rb | 2 +- spec/models/champ_shared_example.rb | 2 +- spec/models/champ_spec.rb | 2 +- spec/models/france_connect_particulier_client_spec.rb | 2 +- spec/models/invite_spec.rb | 2 +- spec/models/procedure_path_spec.rb | 2 +- spec/models/type_de_champ_shared_example.rb | 2 +- spec/services/accompagnateur_service_spec.rb | 2 +- spec/services/clamav_service_spec.rb | 2 +- spec/services/france_connect_salt_service_spec.rb | 2 +- spec/services/france_connect_service_spec.rb | 2 +- spec/services/notification_service_spec.rb | 2 +- spec/services/previsualisation_service_spec.rb | 2 +- spec/services/user_routes_authorization_service_spec.rb | 2 +- spec/support/factory_girl.rb | 2 +- spec/uploaders/base_uploader_spec.rb | 2 +- spec/uploaders/remote_downloader_spec.rb | 2 +- spec/views/admin/accompagnateurs/show.html.haml_spec.rb | 2 +- spec/views/admin/gestionnaires/index.html.haml_spec.rb | 2 +- spec/views/admin/procedures/edit.html.haml_spec.rb | 2 +- spec/views/admin/procedures/show.html.haml_spec.rb | 2 +- spec/views/admin/profile/show.html.haml_spec.rb | 2 +- .../admin/types_de_piece_justificative/show.html.haml_spec.rb | 2 +- spec/views/backoffice/dossiers/index_html.haml_spec.rb | 2 +- .../_left_panel_backoffice_dossierscontroller_show_spec.rb | 2 +- .../_left_panel_users_recapitulatifcontroller_show_spec.rb | 2 +- spec/views/users/dossiers/index_html.haml_spec.rb | 2 +- spec/views/users/sessions/new.html.haml_spec.rb | 2 +- spec/views/users/siret/index.html.haml_spec.rb | 2 +- vendor/assets/javascripts/clipper.js | 2 +- vendor/assets/javascripts/concavehull.min.js | 2 +- vendor/assets/javascripts/d3.min.js | 2 +- vendor/assets/javascripts/graham_scan.min.js | 2 +- vendor/assets/javascripts/handlebars.js | 2 +- vendor/assets/javascripts/leaflet.freedraw.js | 2 +- vendor/assets/javascripts/leaflet.js | 2 +- vendor/assets/javascripts/turf-area.js | 2 +- vendor/assets/javascripts/typeahead.bundle.js | 2 +- 198 files changed, 198 insertions(+), 198 deletions(-) diff --git a/app/assets/javascripts/address_typeahead.js b/app/assets/javascripts/address_typeahead.js index d0f8a434f..bee019284 100644 --- a/app/assets/javascripts/address_typeahead.js +++ b/app/assets/javascripts/address_typeahead.js @@ -19,4 +19,4 @@ function address_type_init() { source: bloodhound, limit: 5 }); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/carte/cadastre.js b/app/assets/javascripts/carte/cadastre.js index 9ee82261d..a97f5e2fb 100644 --- a/app/assets/javascripts/carte/cadastre.js +++ b/app/assets/javascripts/carte/cadastre.js @@ -57,4 +57,4 @@ function new_cadastreLayer() { cadastreItems = new L.GeoJSON(); cadastreItems.addTo(map); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/carte/qp.js b/app/assets/javascripts/carte/qp.js index c53fdc1f2..3ff7c0e1e 100644 --- a/app/assets/javascripts/carte/qp.js +++ b/app/assets/javascripts/carte/qp.js @@ -57,4 +57,4 @@ function new_qpLayer() { qpItems = new L.GeoJSON(); qpItems.addTo(map); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/channels/notifications.js b/app/assets/javascripts/channels/notifications.js index 4445c9110..fc587dd1a 100644 --- a/app/assets/javascripts/channels/notifications.js +++ b/app/assets/javascripts/channels/notifications.js @@ -20,4 +20,4 @@ function slideOut_notification_alert (){ $("#notification_alert").animate({ right: '-250px' }, 200); -} \ No newline at end of file +} diff --git a/app/assets/javascripts/start.js b/app/assets/javascripts/start.js index 6a5ab827c..60e22e126 100644 --- a/app/assets/javascripts/start.js +++ b/app/assets/javascripts/start.js @@ -1,3 +1,3 @@ function show_dossier_id_input (){ $("#btn_show_dossier_id_input").hide() -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/_card.scss b/app/assets/stylesheets/_card.scss index 5e1e54578..813406a9f 100644 --- a/app/assets/stylesheets/_card.scss +++ b/app/assets/stylesheets/_card.scss @@ -3,4 +3,4 @@ padding: 15px; box-shadow: 0 1px 3px rgba(0, 0, 0, .15); border-radius: 2px; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/_helpers.scss b/app/assets/stylesheets/_helpers.scss index 6d861a826..0e0b3a549 100644 --- a/app/assets/stylesheets/_helpers.scss +++ b/app/assets/stylesheets/_helpers.scss @@ -18,4 +18,4 @@ $default-spacer: 15px; .ml-1 { margin-left: $default-spacer; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/admin_procedures_modal.scss b/app/assets/stylesheets/admin_procedures_modal.scss index 320752d3c..2ef9d03b0 100644 --- a/app/assets/stylesheets/admin_procedures_modal.scss +++ b/app/assets/stylesheets/admin_procedures_modal.scss @@ -15,4 +15,4 @@ .tt-menu { width: 300px; } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/cgu.scss b/app/assets/stylesheets/cgu.scss index 5053eaa4b..f2e89d748 100644 --- a/app/assets/stylesheets/cgu.scss +++ b/app/assets/stylesheets/cgu.scss @@ -1,4 +1,4 @@ #cgu { margin-left: 2em; margin-right: 2em; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/france_connect_particulier.scss b/app/assets/stylesheets/france_connect_particulier.scss index 5ac915a79..98cb7738e 100644 --- a/app/assets/stylesheets/france_connect_particulier.scss +++ b/app/assets/stylesheets/france_connect_particulier.scss @@ -2,4 +2,4 @@ width: 300px; margin-left:auto; margin-right:auto; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index 78437e863..364a3176b 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -30,4 +30,4 @@ h4 { text-align: left; } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/notification_alert.scss b/app/assets/stylesheets/notification_alert.scss index caf95bdf9..6ba4e8f0b 100644 --- a/app/assets/stylesheets/notification_alert.scss +++ b/app/assets/stylesheets/notification_alert.scss @@ -9,4 +9,4 @@ height: 80px; border: solid black 1px; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/pj_modal.scss b/app/assets/stylesheets/pj_modal.scss index 1c29218b1..4f3ab1c4b 100644 --- a/app/assets/stylesheets/pj_modal.scss +++ b/app/assets/stylesheets/pj_modal.scss @@ -6,4 +6,4 @@ } } } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/pref_list_menu.scss b/app/assets/stylesheets/pref_list_menu.scss index 3251d69fb..af4a430a7 100644 --- a/app/assets/stylesheets/pref_list_menu.scss +++ b/app/assets/stylesheets/pref_list_menu.scss @@ -17,4 +17,4 @@ .open_pref_list { right: 0 !important; display: block !important; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/siret.scss b/app/assets/stylesheets/siret.scss index 0bf56056a..c5eac6f02 100644 --- a/app/assets/stylesheets/siret.scss +++ b/app/assets/stylesheets/siret.scss @@ -9,4 +9,4 @@ #titre_procedure { margin-top: 3%; margin-bottom: 2%; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/support_navigator_banner.scss b/app/assets/stylesheets/support_navigator_banner.scss index d786918f5..bb6651142 100644 --- a/app/assets/stylesheets/support_navigator_banner.scss +++ b/app/assets/stylesheets/support_navigator_banner.scss @@ -12,4 +12,4 @@ a{ color: #c3d9ff; } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/switch_menu.scss b/app/assets/stylesheets/switch_menu.scss index 95d6b0b30..a7c66e6c1 100644 --- a/app/assets/stylesheets/switch_menu.scss +++ b/app/assets/stylesheets/switch_menu.scss @@ -3,4 +3,4 @@ left: 10px; bottom: 10px; z-index: 300; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/typeahead.scss b/app/assets/stylesheets/typeahead.scss index 8d4c2a37c..c22dbf622 100644 --- a/app/assets/stylesheets/typeahead.scss +++ b/app/assets/stylesheets/typeahead.scss @@ -31,4 +31,4 @@ color: #fff; background-color: #0097cf; -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/ul.scss b/app/assets/stylesheets/ul.scss index e3ef474dc..25f26e3a5 100644 --- a/app/assets/stylesheets/ul.scss +++ b/app/assets/stylesheets/ul.scss @@ -11,4 +11,4 @@ li:last-child { border: none; } -} \ No newline at end of file +} diff --git a/app/channels/notifications_channel.rb b/app/channels/notifications_channel.rb index a57c0f242..4bdd4fd85 100644 --- a/app/channels/notifications_channel.rb +++ b/app/channels/notifications_channel.rb @@ -2,4 +2,4 @@ class NotificationsChannel < ApplicationCable::Channel def subscribed stream_from 'notifications' end -end \ No newline at end of file +end diff --git a/app/controllers/admin/accompagnateurs_controller.rb b/app/controllers/admin/accompagnateurs_controller.rb index 6d11c6192..dcdb3ae46 100644 --- a/app/controllers/admin/accompagnateurs_controller.rb +++ b/app/controllers/admin/accompagnateurs_controller.rb @@ -35,4 +35,4 @@ class Admin::AccompagnateursController < AdminController flash.notice = "Assignement effectué" redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id] end -end \ No newline at end of file +end diff --git a/app/controllers/admin/change_dossier_state_controller.rb b/app/controllers/admin/change_dossier_state_controller.rb index 0b199b3f8..a1d03dd65 100644 --- a/app/controllers/admin/change_dossier_state_controller.rb +++ b/app/controllers/admin/change_dossier_state_controller.rb @@ -16,4 +16,4 @@ class Admin::ChangeDossierStateController < AdminController return redirect_to admin_change_dossier_state_path end end -end \ No newline at end of file +end diff --git a/app/controllers/admin/previsualisations_controller.rb b/app/controllers/admin/previsualisations_controller.rb index 257de657b..f3a78abf5 100644 --- a/app/controllers/admin/previsualisations_controller.rb +++ b/app/controllers/admin/previsualisations_controller.rb @@ -15,4 +15,4 @@ class Admin::PrevisualisationsController < AdminController acc end end -end \ No newline at end of file +end diff --git a/app/controllers/admin/types_de_champ_private_controller.rb b/app/controllers/admin/types_de_champ_private_controller.rb index 25252b88c..28fb9330f 100644 --- a/app/controllers/admin/types_de_champ_private_controller.rb +++ b/app/controllers/admin/types_de_champ_private_controller.rb @@ -46,4 +46,4 @@ class Admin::TypesDeChampPrivateController < AdminController def create_facade @types_de_champ_facade = AdminTypesDeChampFacades.new true, @procedure end -end \ No newline at end of file +end diff --git a/app/controllers/api/v1/dossiers_controller.rb b/app/controllers/api/v1/dossiers_controller.rb index 2849fd8c1..0cf231f7b 100644 --- a/app/controllers/api/v1/dossiers_controller.rb +++ b/app/controllers/api/v1/dossiers_controller.rb @@ -56,4 +56,4 @@ class API::V1::DossiersController < APIController nombre_de_page: dossiers.total_pages } end -end \ No newline at end of file +end diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 8c636918d..80a9b982e 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -19,4 +19,4 @@ class APIController < ApplicationController def default_format_json request.format = "json" unless request.params[:format] end -end \ No newline at end of file +end diff --git a/app/controllers/backoffice/commentaires_controller.rb b/app/controllers/backoffice/commentaires_controller.rb index 319411bda..796feec51 100644 --- a/app/controllers/backoffice/commentaires_controller.rb +++ b/app/controllers/backoffice/commentaires_controller.rb @@ -4,4 +4,4 @@ class Backoffice::CommentairesController < CommentairesController def is_gestionnaire? true end -end \ No newline at end of file +end diff --git a/app/controllers/backoffice/private_formulaires_controller.rb b/app/controllers/backoffice/private_formulaires_controller.rb index 4ad2ff671..8a9283959 100644 --- a/app/controllers/backoffice/private_formulaires_controller.rb +++ b/app/controllers/backoffice/private_formulaires_controller.rb @@ -16,4 +16,4 @@ class Backoffice::PrivateFormulairesController < ApplicationController render 'backoffice/dossiers/formulaire_private', formats: :js end -end \ No newline at end of file +end diff --git a/app/controllers/backoffice_controller.rb b/app/controllers/backoffice_controller.rb index ace16f103..7cad9b2a4 100644 --- a/app/controllers/backoffice_controller.rb +++ b/app/controllers/backoffice_controller.rb @@ -7,4 +7,4 @@ class BackofficeController < ApplicationController redirect_to(:backoffice_dossiers) end end -end \ No newline at end of file +end diff --git a/app/controllers/ban/search_controller.rb b/app/controllers/ban/search_controller.rb index 55780de7b..92113f474 100644 --- a/app/controllers/ban/search_controller.rb +++ b/app/controllers/ban/search_controller.rb @@ -17,4 +17,4 @@ class Ban::SearchController < ApplicationController render json: {lon: lon, lat: lat, zoom: '14', dossier_id: params[:dossier_id]} end -end \ No newline at end of file +end diff --git a/app/controllers/cgu_controller.rb b/app/controllers/cgu_controller.rb index 95bb4ab15..2c7b968d8 100644 --- a/app/controllers/cgu_controller.rb +++ b/app/controllers/cgu_controller.rb @@ -2,4 +2,4 @@ class CguController < ApplicationController def index end -end \ No newline at end of file +end diff --git a/app/controllers/france_connect/particulier_controller.rb b/app/controllers/france_connect/particulier_controller.rb index a62393990..a625d0440 100644 --- a/app/controllers/france_connect/particulier_controller.rb +++ b/app/controllers/france_connect/particulier_controller.rb @@ -117,4 +117,4 @@ class FranceConnect::ParticulierController < ApplicationController france_connect_information = FranceConnectInformation.find(params[:fci_id]) FranceConnectSaltService.new(france_connect_information).valid? params[:salt] end -end \ No newline at end of file +end diff --git a/app/controllers/users/commentaires_controller.rb b/app/controllers/users/commentaires_controller.rb index bc3eb562c..95495b1a2 100644 --- a/app/controllers/users/commentaires_controller.rb +++ b/app/controllers/users/commentaires_controller.rb @@ -1,3 +1,3 @@ class Users::CommentairesController < CommentairesController before_action :authenticate_user! -end \ No newline at end of file +end diff --git a/app/controllers/users/dossiers/add_siret_controller.rb b/app/controllers/users/dossiers/add_siret_controller.rb index 5e6591197..4190e304f 100644 --- a/app/controllers/users/dossiers/add_siret_controller.rb +++ b/app/controllers/users/dossiers/add_siret_controller.rb @@ -10,4 +10,4 @@ class Users::Dossiers::AddSiretController < ApplicationController flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for users_dossiers_path end -end \ No newline at end of file +end diff --git a/app/controllers/users/dossiers/commentaires_controller.rb b/app/controllers/users/dossiers/commentaires_controller.rb index b3e55c940..ad37ba45a 100644 --- a/app/controllers/users/dossiers/commentaires_controller.rb +++ b/app/controllers/users/dossiers/commentaires_controller.rb @@ -1,3 +1,3 @@ class Users::Dossiers::CommentairesController < CommentairesController before_action :authenticate_user! -end \ No newline at end of file +end diff --git a/app/controllers/users/dossiers/invites_controller.rb b/app/controllers/users/dossiers/invites_controller.rb index 56ca6497d..c10f93d0a 100644 --- a/app/controllers/users/dossiers/invites_controller.rb +++ b/app/controllers/users/dossiers/invites_controller.rb @@ -15,4 +15,4 @@ class Users::Dossiers::InvitesController < UsersController flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for users_dossiers_path end -end \ No newline at end of file +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index dfc3689f3..67c94e85f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -29,4 +29,4 @@ class UsersController < ApplicationController flash.alert = message redirect_to url_for root_path end -end \ No newline at end of file +end diff --git a/app/decorators/type_de_champ_private_decorator.rb b/app/decorators/type_de_champ_private_decorator.rb index 1adcaca84..31d4d3299 100644 --- a/app/decorators/type_de_champ_private_decorator.rb +++ b/app/decorators/type_de_champ_private_decorator.rb @@ -1,3 +1,3 @@ class TypeDeChampPrivateDecorator < TypeDeChampDecorator -end \ No newline at end of file +end diff --git a/app/decorators/type_de_piece_justificative_decorator.rb b/app/decorators/type_de_piece_justificative_decorator.rb index 799f42907..a0737cafc 100644 --- a/app/decorators/type_de_piece_justificative_decorator.rb +++ b/app/decorators/type_de_piece_justificative_decorator.rb @@ -33,4 +33,4 @@ class TypeDePieceJustificativeDecorator < Draper::Decorator def count_type_de_piece_justificative @count_type_de_piece_justificative ||= procedure.types_de_piece_justificative.count end -end \ No newline at end of file +end diff --git a/app/facades/admin_procedures_show_facades.rb b/app/facades/admin_procedures_show_facades.rb index 6b9c7f07a..650959746 100644 --- a/app/facades/admin_procedures_show_facades.rb +++ b/app/facades/admin_procedures_show_facades.rb @@ -43,4 +43,4 @@ class AdminProceduresShowFacades def dossiers_termine_total dossiers.where(state: :termine).size end -end \ No newline at end of file +end diff --git a/app/facades/admin_types_de_champ_facades.rb b/app/facades/admin_types_de_champ_facades.rb index 9ee482dff..d6488193d 100644 --- a/app/facades/admin_types_de_champ_facades.rb +++ b/app/facades/admin_types_de_champ_facades.rb @@ -45,4 +45,4 @@ class AdminTypesDeChampFacades def add_button_id @private ? :add_type_de_champ_private : :add_type_de_champ end -end \ No newline at end of file +end diff --git a/app/facades/invite_dossier_facades.rb b/app/facades/invite_dossier_facades.rb index 3c2a8086f..ce52f0b3c 100644 --- a/app/facades/invite_dossier_facades.rb +++ b/app/facades/invite_dossier_facades.rb @@ -4,4 +4,4 @@ class InviteDossierFacades < DossierFacades def initialize id, email @dossier = Invite.where(email: email, id: id).first!.dossier end -end \ No newline at end of file +end diff --git a/app/lib/file_size_validator.rb b/app/lib/file_size_validator.rb index 10621e793..d3b58baeb 100644 --- a/app/lib/file_size_validator.rb +++ b/app/lib/file_size_validator.rb @@ -71,4 +71,4 @@ class FileSizeValidator < ActiveModel::EachValidator include Singleton include ActionView::Helpers::NumberHelper end -end \ No newline at end of file +end diff --git a/app/lib/siade/exercices_adapter.rb b/app/lib/siade/exercices_adapter.rb index bc2d0df2a..866e2e317 100644 --- a/app/lib/siade/exercices_adapter.rb +++ b/app/lib/siade/exercices_adapter.rb @@ -20,4 +20,4 @@ class SIADE::ExercicesAdapter :dateFinExercice, :date_fin_exercice_timestamp] end -end \ No newline at end of file +end diff --git a/app/models/assign_to.rb b/app/models/assign_to.rb index 64e2f5e30..07af61ccf 100644 --- a/app/models/assign_to.rb +++ b/app/models/assign_to.rb @@ -1,4 +1,4 @@ class AssignTo < ActiveRecord::Base belongs_to :procedure belongs_to :gestionnaire -end \ No newline at end of file +end diff --git a/app/models/cerfa.rb b/app/models/cerfa.rb index 6d6d0c702..bfa0fda50 100644 --- a/app/models/cerfa.rb +++ b/app/models/cerfa.rb @@ -28,4 +28,4 @@ class Cerfa < ActiveRecord::Base NotificationService.new('cerfa', self.dossier.id).notify end end -end \ No newline at end of file +end diff --git a/app/models/follow.rb b/app/models/follow.rb index d554d8fe6..53e234f7e 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -3,4 +3,4 @@ class Follow < ActiveRecord::Base belongs_to :dossier validates_uniqueness_of :gestionnaire_id, :scope => :dossier_id -end \ No newline at end of file +end diff --git a/app/models/france_connect_information.rb b/app/models/france_connect_information.rb index d6e64c442..6bf7f7a85 100644 --- a/app/models/france_connect_information.rb +++ b/app/models/france_connect_information.rb @@ -6,4 +6,4 @@ class FranceConnectInformation < ActiveRecord::Base def self.find_by_france_connect_particulier user_info FranceConnectInformation.find_by(france_connect_particulier_id: user_info[:france_connect_particulier_id]) end -end \ No newline at end of file +end diff --git a/app/models/procedure_path.rb b/app/models/procedure_path.rb index 579544c12..e68942ff1 100644 --- a/app/models/procedure_path.rb +++ b/app/models/procedure_path.rb @@ -5,4 +5,4 @@ class ProcedurePath < ActiveRecord::Base belongs_to :procedure belongs_to :administrateur -end \ No newline at end of file +end diff --git a/app/models/type_de_champ_private.rb b/app/models/type_de_champ_private.rb index 804bb2e99..1b4e7ed3f 100644 --- a/app/models/type_de_champ_private.rb +++ b/app/models/type_de_champ_private.rb @@ -1,3 +1,3 @@ class TypeDeChampPrivate < TypeDeChamp -end \ No newline at end of file +end diff --git a/app/models/type_de_champ_public.rb b/app/models/type_de_champ_public.rb index 90052b762..8e9fb760d 100644 --- a/app/models/type_de_champ_public.rb +++ b/app/models/type_de_champ_public.rb @@ -1,3 +1,3 @@ class TypeDeChampPublic < TypeDeChamp -end \ No newline at end of file +end diff --git a/app/serializers/cerfa_serializer.rb b/app/serializers/cerfa_serializer.rb index 5580dca10..a5b832936 100644 --- a/app/serializers/cerfa_serializer.rb +++ b/app/serializers/cerfa_serializer.rb @@ -3,4 +3,4 @@ class CerfaSerializer < ActiveModel::Serializer :content_url has_one :user -end \ No newline at end of file +end diff --git a/app/serializers/champ_private_serializer.rb b/app/serializers/champ_private_serializer.rb index be0320f55..b26cf274f 100644 --- a/app/serializers/champ_private_serializer.rb +++ b/app/serializers/champ_private_serializer.rb @@ -2,4 +2,4 @@ class ChampPrivateSerializer < ActiveModel::Serializer attributes :value has_one :type_de_champ -end \ No newline at end of file +end diff --git a/app/serializers/champ_public_serializer.rb b/app/serializers/champ_public_serializer.rb index 528a4f850..66806c982 100644 --- a/app/serializers/champ_public_serializer.rb +++ b/app/serializers/champ_public_serializer.rb @@ -2,4 +2,4 @@ class ChampPublicSerializer < ActiveModel::Serializer attributes :value has_one :type_de_champ -end \ No newline at end of file +end diff --git a/app/serializers/commentaire_serializer.rb b/app/serializers/commentaire_serializer.rb index 5b1407917..587cde833 100644 --- a/app/serializers/commentaire_serializer.rb +++ b/app/serializers/commentaire_serializer.rb @@ -2,4 +2,4 @@ class CommentaireSerializer < ActiveModel::Serializer attributes :email, :body, :created_at -end \ No newline at end of file +end diff --git a/app/serializers/dossiers_serializer.rb b/app/serializers/dossiers_serializer.rb index 0179a0667..e2b53b679 100644 --- a/app/serializers/dossiers_serializer.rb +++ b/app/serializers/dossiers_serializer.rb @@ -1,4 +1,4 @@ class DossiersSerializer < ActiveModel::Serializer attributes :id, :updated_at -end \ No newline at end of file +end diff --git a/app/serializers/entreprise_serializer.rb b/app/serializers/entreprise_serializer.rb index 04d37be4d..b293b3142 100644 --- a/app/serializers/entreprise_serializer.rb +++ b/app/serializers/entreprise_serializer.rb @@ -11,4 +11,4 @@ class EntrepriseSerializer < ActiveModel::Serializer :date_creation, :nom, :prenom -end \ No newline at end of file +end diff --git a/app/serializers/etablissement_csv_serializer.rb b/app/serializers/etablissement_csv_serializer.rb index ec33919bd..1d6e28315 100644 --- a/app/serializers/etablissement_csv_serializer.rb +++ b/app/serializers/etablissement_csv_serializer.rb @@ -2,4 +2,4 @@ class EtablissementCsvSerializer < EtablissementSerializer def adresse object.adresse.chomp.gsub("\r\n", ' ').gsub("\r", '') end -end \ No newline at end of file +end diff --git a/app/serializers/etablissement_serializer.rb b/app/serializers/etablissement_serializer.rb index b0bcd0c19..11b4ce969 100644 --- a/app/serializers/etablissement_serializer.rb +++ b/app/serializers/etablissement_serializer.rb @@ -12,4 +12,4 @@ class EtablissementSerializer < ActiveModel::Serializer :localite, :code_insee_localite -end \ No newline at end of file +end diff --git a/app/serializers/module_api_carto_serializer.rb b/app/serializers/module_api_carto_serializer.rb index 6fbdcc7b1..671b754bf 100644 --- a/app/serializers/module_api_carto_serializer.rb +++ b/app/serializers/module_api_carto_serializer.rb @@ -4,4 +4,4 @@ class ModuleApiCartoSerializer < ActiveModel::Serializer :cadastre -end \ No newline at end of file +end diff --git a/app/serializers/piece_justificative_serializer.rb b/app/serializers/piece_justificative_serializer.rb index 9f999bfe1..1b460e320 100644 --- a/app/serializers/piece_justificative_serializer.rb +++ b/app/serializers/piece_justificative_serializer.rb @@ -4,4 +4,4 @@ class PieceJustificativeSerializer < ActiveModel::Serializer :content_url has_one :user -end \ No newline at end of file +end diff --git a/app/serializers/type_de_champ_serializer.rb b/app/serializers/type_de_champ_serializer.rb index 32f10627c..bec424797 100644 --- a/app/serializers/type_de_champ_serializer.rb +++ b/app/serializers/type_de_champ_serializer.rb @@ -4,4 +4,4 @@ class TypeDeChampSerializer < ActiveModel::Serializer :type_champ, :order_place, :description -end \ No newline at end of file +end diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 2e74355ad..4665c89d7 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -1,3 +1,3 @@ class UserSerializer < ActiveModel::Serializer attributes :email -end \ No newline at end of file +end diff --git a/app/services/accompagnateur_service.rb b/app/services/accompagnateur_service.rb index df4e56825..d526167a0 100644 --- a/app/services/accompagnateur_service.rb +++ b/app/services/accompagnateur_service.rb @@ -22,4 +22,4 @@ class AccompagnateurService @accompagnateur.build_default_preferences_list_dossier @procedure.id end -end \ No newline at end of file +end diff --git a/app/services/browser_service.rb b/app/services/browser_service.rb index 09f0837a4..a11c030c1 100644 --- a/app/services/browser_service.rb +++ b/app/services/browser_service.rb @@ -16,4 +16,4 @@ class BrowserService true end -end \ No newline at end of file +end diff --git a/app/services/clamav_service.rb b/app/services/clamav_service.rb index 3d9b54de9..5d1142c96 100644 --- a/app/services/clamav_service.rb +++ b/app/services/clamav_service.rb @@ -13,4 +13,4 @@ class ClamavService return false if response.first.class == ClamAV::VirusResponse true end -end \ No newline at end of file +end diff --git a/app/services/dossier_service.rb b/app/services/dossier_service.rb index 01c1fc6a0..511e4e1d9 100644 --- a/app/services/dossier_service.rb +++ b/app/services/dossier_service.rb @@ -53,4 +53,4 @@ class DossierService false end -end \ No newline at end of file +end diff --git a/app/services/dossiers_list_user_service.rb b/app/services/dossiers_list_user_service.rb index 6013e16af..24ec93b0f 100644 --- a/app/services/dossiers_list_user_service.rb +++ b/app/services/dossiers_list_user_service.rb @@ -40,4 +40,4 @@ class DossiersListUserService def termine @termine ||= @current_devise_profil.dossiers.termine end -end \ No newline at end of file +end diff --git a/app/services/france_connect_salt_service.rb b/app/services/france_connect_salt_service.rb index 9b3a440f2..f1d766e44 100644 --- a/app/services/france_connect_salt_service.rb +++ b/app/services/france_connect_salt_service.rb @@ -14,4 +14,4 @@ class FranceConnectSaltService def salt Digest::MD5.hexdigest(model.france_connect_particulier_id + model.given_name + model.family_name + FRANCE_CONNECT.particulier_secret + DateTime.now.to_date.to_s) end -end \ No newline at end of file +end diff --git a/app/services/geojson_service.rb b/app/services/geojson_service.rb index 785a5d3a0..7bc175fbe 100644 --- a/app/services/geojson_service.rb +++ b/app/services/geojson_service.rb @@ -26,4 +26,4 @@ class GeojsonService polygon.to_json end -end \ No newline at end of file +end diff --git a/app/services/number_service.rb b/app/services/number_service.rb index 24a52f9b2..722b5cac4 100644 --- a/app/services/number_service.rb +++ b/app/services/number_service.rb @@ -2,4 +2,4 @@ class NumberService def self.to_number string string.to_s if Float(string) rescue nil end -end \ No newline at end of file +end diff --git a/app/services/pieces_justificatives_service.rb b/app/services/pieces_justificatives_service.rb index f0402b1da..266c4fffa 100644 --- a/app/services/pieces_justificatives_service.rb +++ b/app/services/pieces_justificatives_service.rb @@ -37,4 +37,4 @@ class PiecesJustificativesService piece_justificative end -end \ No newline at end of file +end diff --git a/app/services/previsualisation_service.rb b/app/services/previsualisation_service.rb index 316c0a4cd..1dc0f7739 100644 --- a/app/services/previsualisation_service.rb +++ b/app/services/previsualisation_service.rb @@ -2,4 +2,4 @@ class PrevisualisationService def self.destroy_all_champs dossier Champ.where(dossier_id: dossier.id, type_de_champ_id: dossier.procedure.types_de_champ.ids).destroy_all end -end \ No newline at end of file +end diff --git a/app/services/switch_devise_profile_service.rb b/app/services/switch_devise_profile_service.rb index 64e0ed29b..dc8d45490 100644 --- a/app/services/switch_devise_profile_service.rb +++ b/app/services/switch_devise_profile_service.rb @@ -22,4 +22,4 @@ class SwitchDeviseProfileService def administrateur_signed_in? !@warden.authenticate(:scope => :administrateur).nil? end -end \ No newline at end of file +end diff --git a/app/services/user_routes_authorization_service.rb b/app/services/user_routes_authorization_service.rb index ef58f28e9..57b6f5af7 100644 --- a/app/services/user_routes_authorization_service.rb +++ b/app/services/user_routes_authorization_service.rb @@ -6,4 +6,4 @@ class UserRoutesAuthorizationService auth[:states].include?(dossier.state.to_sym) && (auth[:api_carto].nil? ? true : auth[:api_carto] == dossier.procedure.use_api_carto) end -end \ No newline at end of file +end diff --git a/app/uploaders/base_uploader.rb b/app/uploaders/base_uploader.rb index f7023f4f2..5ee0d6321 100644 --- a/app/uploaders/base_uploader.rb +++ b/app/uploaders/base_uploader.rb @@ -8,4 +8,4 @@ class BaseUploader < CarrierWave::Uploader::Base '/tmp/tps-dev-cache' end end -end \ No newline at end of file +end diff --git a/app/views/admin/change_dossier_state/change.html.haml b/app/views/admin/change_dossier_state/change.html.haml index 36316f51f..4249e6907 100644 --- a/app/views/admin/change_dossier_state/change.html.haml +++ b/app/views/admin/change_dossier_state/change.html.haml @@ -13,4 +13,4 @@ %br %br - = link_to 'Réaliser un autre dossier', 'change_dossier_state' \ No newline at end of file + = link_to 'Réaliser un autre dossier', 'change_dossier_state' diff --git a/app/views/admin/change_dossier_state/check.html.haml b/app/views/admin/change_dossier_state/check.html.haml index c77a2a61c..796518ae7 100644 --- a/app/views/admin/change_dossier_state/check.html.haml +++ b/app/views/admin/change_dossier_state/check.html.haml @@ -14,4 +14,4 @@ - Dossier.states.each do |state| %option{value: state[0]} =DossierDecorator.case_state_fr state[1] - = f.submit 'Valider' \ No newline at end of file + = f.submit 'Valider' diff --git a/app/views/admin/procedures/_onglets.html.haml b/app/views/admin/procedures/_onglets.html.haml index 99835a39b..ca258a54d 100644 --- a/app/views/admin/procedures/_onglets.html.haml +++ b/app/views/admin/procedures/_onglets.html.haml @@ -14,4 +14,4 @@ %a{:href => "#{url_for :admin_procedures_archived}"} %h5{style: 'color: black'} ="Archivées" -%br \ No newline at end of file +%br diff --git a/app/views/admin/profile/show.html.haml b/app/views/admin/profile/show.html.haml index 615d5331e..2a2cc723c 100644 --- a/app/views/admin/profile/show.html.haml +++ b/app/views/admin/profile/show.html.haml @@ -3,4 +3,4 @@ %hr %p API TOKEN : - = @administrateur.api_token \ No newline at end of file + = @administrateur.api_token diff --git a/app/views/administrateurs/sessions/new.html.haml b/app/views/administrateurs/sessions/new.html.haml index 4dda316e2..a2b8d0435 100644 --- a/app/views/administrateurs/sessions/new.html.haml +++ b/app/views/administrateurs/sessions/new.html.haml @@ -26,4 +26,4 @@ %br .actions = f.submit "Se connecter", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/app/views/administrations/index.html.haml b/app/views/administrations/index.html.haml index 07351a196..4e83c9cfc 100644 --- a/app/views/administrations/index.html.haml +++ b/app/views/administrations/index.html.haml @@ -16,4 +16,4 @@ %br .text-center - =link_to 'Deconnexion', '/administrations/sign_out', method: :delete \ No newline at end of file + =link_to 'Deconnexion', '/administrations/sign_out', method: :delete diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index cb7d90ad2..be9e5d17d 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -1,2 +1,2 @@ #backoffice_dossier_show.col-xs-12 - = render partial: "dossiers/dossier_show" \ No newline at end of file + = render partial: "dossiers/dossier_show" diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 37b16adb6..cb51ab8dc 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -171,4 +171,4 @@ Conception & Réalisation %p SGMAP %p   - %p   \ No newline at end of file + %p   diff --git a/app/views/commencer/archived.html.haml b/app/views/commencer/archived.html.haml index 5ad9c0f18..d550d24e4 100644 --- a/app/views/commencer/archived.html.haml +++ b/app/views/commencer/archived.html.haml @@ -12,4 +12,4 @@ %p Si vous avez déjà déposé un ou plusieurs dossiers : %a.btn.btn-lg.btn-info{href: new_user_session_path} - Accéder à mon espace en ligne. \ No newline at end of file + Accéder à mon espace en ligne. diff --git a/app/views/demo/_list.html.haml b/app/views/demo/_list.html.haml index 5340fcfb1..ebc52f855 100644 --- a/app/views/demo/_list.html.haml +++ b/app/views/demo/_list.html.haml @@ -24,4 +24,4 @@ = smart_listing.paginate = smart_listing.pagination_per_page_links - else - %p Aucune procédure trouvée \ No newline at end of file + %p Aucune procédure trouvée diff --git a/app/views/demo/index.html.haml b/app/views/demo/index.html.haml index 034bbba87..c29e1ff71 100644 --- a/app/views/demo/index.html.haml +++ b/app/views/demo/index.html.haml @@ -1 +1 @@ -= smart_listing_render :procedures \ No newline at end of file += smart_listing_render :procedures diff --git a/app/views/dossiers/show.html.haml b/app/views/dossiers/show.html.haml index 74930f900..8df80b688 100644 --- a/app/views/dossiers/show.html.haml +++ b/app/views/dossiers/show.html.haml @@ -1 +1 @@ -= render partial: 'show' \ No newline at end of file += render partial: 'show' diff --git a/app/views/france_connect/particulier/check_email.html.haml b/app/views/france_connect/particulier/check_email.html.haml index 9c7200d68..9ec330f2b 100644 --- a/app/views/france_connect/particulier/check_email.html.haml +++ b/app/views/france_connect/particulier/check_email.html.haml @@ -20,4 +20,4 @@ = f.password_field :password, class: "form-control", placeholder: "Entrez votre mot de passe" = hidden_field_tag :fci_id, params[:fci_id] = hidden_field_tag :salt, params[:salt] - = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp' \ No newline at end of file + = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp' diff --git a/app/views/france_connect/particulier/new.html.haml b/app/views/france_connect/particulier/new.html.haml index 0d0ec508e..494d40c6b 100644 --- a/app/views/france_connect/particulier/new.html.haml +++ b/app/views/france_connect/particulier/new.html.haml @@ -29,4 +29,4 @@ = f.text_field :email_france_connect, class: "form-control", placeholder: "Entrez votre email" = hidden_field_tag :fci_id, params[:fci_id] = hidden_field_tag :salt, params[:salt] - = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp' \ No newline at end of file + = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp' diff --git a/app/views/gestionnaires/passwords/edit.html.haml b/app/views/gestionnaires/passwords/edit.html.haml index a0d7ed99c..7e41675f0 100644 --- a/app/views/gestionnaires/passwords/edit.html.haml +++ b/app/views/gestionnaires/passwords/edit.html.haml @@ -28,4 +28,4 @@ %br .actions = f.submit "Changer", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/app/views/gestionnaires/passwords/new.html.haml b/app/views/gestionnaires/passwords/new.html.haml index a8c09db1f..45e53763f 100644 --- a/app/views/gestionnaires/passwords/new.html.haml +++ b/app/views/gestionnaires/passwords/new.html.haml @@ -20,4 +20,4 @@ %br .actions = f.submit "Renvoyer", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/app/views/layouts/_switch_devise_profile_module.html.haml b/app/views/layouts/_switch_devise_profile_module.html.haml index c8f3e6705..53d89fe35 100644 --- a/app/views/layouts/_switch_devise_profile_module.html.haml +++ b/app/views/layouts/_switch_devise_profile_module.html.haml @@ -22,4 +22,4 @@ = link_to(admin_procedures_path) do %i.fa.fa-user   - Administrateur \ No newline at end of file + Administrateur diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml index 640ef345e..36682366a 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml @@ -1 +1 @@ -=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' \ No newline at end of file +=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml index 640ef345e..36682366a 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml @@ -1 +1 @@ -=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' \ No newline at end of file +=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' diff --git a/app/views/layouts/left_panels/_left_panel_default.html.haml b/app/views/layouts/left_panels/_left_panel_default.html.haml index a8cd3d0b8..d6c626d3a 100644 --- a/app/views/layouts/left_panels/_left_panel_default.html.haml +++ b/app/views/layouts/left_panels/_left_panel_default.html.haml @@ -1,2 +1,2 @@ %div - Default Left Panel \ No newline at end of file + Default Left Panel diff --git a/app/views/layouts/left_panels/_left_panel_users_dossiers_invitescontroller_show.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossiers_invitescontroller_show.html.haml index 4b47b5093..69f564d57 100644 --- a/app/views/layouts/left_panels/_left_panel_users_dossiers_invitescontroller_show.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_dossiers_invitescontroller_show.html.haml @@ -1 +1 @@ -= render partial: 'layouts/left_panels/left_panel_users_recapitulatifcontroller_show' \ No newline at end of file += render partial: 'layouts/left_panels/left_panel_users_recapitulatifcontroller_show' diff --git a/app/views/layouts/left_panels/_search_area.html.haml b/app/views/layouts/left_panels/_search_area.html.haml index 3dfc58840..09577eaa6 100644 --- a/app/views/layouts/left_panels/_search_area.html.haml +++ b/app/views/layouts/left_panels/_search_area.html.haml @@ -4,4 +4,4 @@ = text_field_tag('q', "#{@search_terms unless @search_terms.nil? }", id: 'q', placeholder: "Recherchez parmi tous vos dossiers", class:'form-control') %span.input-group-btn %button.btn.btn-default{ id:'search_button' } - %i.fa.fa-search \ No newline at end of file + %i.fa.fa-search diff --git a/app/views/layouts/mailer.text.haml b/app/views/layouts/mailer.text.haml index f1d0cc898..0a90f092c 100644 --- a/app/views/layouts/mailer.text.haml +++ b/app/views/layouts/mailer.text.haml @@ -1 +1 @@ -= yield \ No newline at end of file += yield diff --git a/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml b/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml index b1e64c1e2..1ff68e01a 100644 --- a/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_admin_gestionnairescontroller_index.html.haml @@ -1 +1 @@ -= render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml index b1e64c1e2..1ff68e01a 100644 --- a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_archived.html.haml @@ -1 +1 @@ -= render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml index b1e64c1e2..1ff68e01a 100644 --- a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_draft.html.haml @@ -1 +1 @@ -= render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' diff --git a/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml b/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml index b1e64c1e2..1ff68e01a 100644 --- a/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_admin_profilecontroller_show.html.haml @@ -1 +1 @@ -= render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' \ No newline at end of file += render partial: 'layouts/navbars/navbar_admin_procedurescontroller_index' diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index a5d8ca7e1..56d847d1c 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -12,4 +12,4 @@ = render partial: 'layouts/credentials' -else #sign_in.col-xs-2 - = link_to "Connexion", new_user_session_path, :class => 'btn btn-lg btn-primary' \ No newline at end of file + = link_to "Connexion", new_user_session_path, :class => 'btn btn-lg btn-primary' diff --git a/app/views/users/description/champs/_civilite.html.haml b/app/views/users/description/champs/_civilite.html.haml index c6fcf6525..70071d5a8 100644 --- a/app/views/users/description/champs/_civilite.html.haml +++ b/app/views/users/description/champs/_civilite.html.haml @@ -5,4 +5,4 @@ %label.radio-inline = radio_button_tag "champs['#{champ.id}']", "Mme", champ.value == 'Mme' - Madame \ No newline at end of file + Madame diff --git a/app/views/users/description/champs/_datetime.html.haml b/app/views/users/description/champs/_datetime.html.haml index 557704485..b79cb05c6 100644 --- a/app/views/users/description/champs/_datetime.html.haml +++ b/app/views/users/description/champs/_datetime.html.haml @@ -18,4 +18,4 @@ h - if num.to_i%5 == 0 %option{value: num, selected: (:selected if champ.same_minute?(num))} = num -min \ No newline at end of file +min diff --git a/app/views/users/description/champs/_yes_no.html.haml b/app/views/users/description/champs/_yes_no.html.haml index 58cfac7e4..e914d1bb3 100644 --- a/app/views/users/description/champs/_yes_no.html.haml +++ b/app/views/users/description/champs/_yes_no.html.haml @@ -5,4 +5,4 @@ %label.radio-inline = radio_button_tag "champs['#{champ.id}']", "false", champ.value == 'false' - Non \ No newline at end of file + Non diff --git a/app/views/users/description/show.html.haml b/app/views/users/description/show.html.haml index 74930f900..8df80b688 100644 --- a/app/views/users/description/show.html.haml +++ b/app/views/users/description/show.html.haml @@ -1 +1 @@ -= render partial: 'show' \ No newline at end of file += render partial: 'show' diff --git a/app/views/users/dossiers/add_siret/show.html.haml b/app/views/users/dossiers/add_siret/show.html.haml index 56d7c3162..9cf12e4a3 100644 --- a/app/views/users/dossiers/add_siret/show.html.haml +++ b/app/views/users/dossiers/add_siret/show.html.haml @@ -1,2 +1,2 @@ .row.etape.etape_2 - = render partial: 'dossiers/etapes/etape_2/entreprise' \ No newline at end of file + = render partial: 'dossiers/etapes/etape_2/entreprise' diff --git a/app/views/users/dossiers/show.html.haml b/app/views/users/dossiers/show.html.haml index 299da569b..914452765 100644 --- a/app/views/users/dossiers/show.html.haml +++ b/app/views/users/dossiers/show.html.haml @@ -1 +1 @@ -= render partial: '/dossiers/show' \ No newline at end of file += render partial: '/dossiers/show' diff --git a/app/views/users/passwords/edit.html.haml b/app/views/users/passwords/edit.html.haml index ac6f21c5f..204370695 100644 --- a/app/views/users/passwords/edit.html.haml +++ b/app/views/users/passwords/edit.html.haml @@ -57,4 +57,4 @@ %br .actions = f.submit "Changer", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/app/views/users/passwords/new.html.haml b/app/views/users/passwords/new.html.haml index 93b4becbd..79e45d45c 100644 --- a/app/views/users/passwords/new.html.haml +++ b/app/views/users/passwords/new.html.haml @@ -49,4 +49,4 @@ %br .actions = f.submit "Renvoyer", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/app/views/users/registrations/new.html.haml b/app/views/users/registrations/new.html.haml index d8270c4a9..9a0fd5934 100644 --- a/app/views/users/registrations/new.html.haml +++ b/app/views/users/registrations/new.html.haml @@ -61,4 +61,4 @@ %br .actions = f.submit "S'enregistrer", class:'btn btn-primary' - %br \ No newline at end of file + %br diff --git a/circle.yml b/circle.yml index 5352df363..5f073c4fd 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,3 @@ database: override: - - bundle exec rake db:drop db:create db:migrate RAILS_ENV=test \ No newline at end of file + - bundle exec rake db:drop db:create db:migrate RAILS_ENV=test diff --git a/config/initializers/active_model_serializer.rb b/config/initializers/active_model_serializer.rb index 8cedccfe2..d4702c3d5 100644 --- a/config/initializers/active_model_serializer.rb +++ b/config/initializers/active_model_serializer.rb @@ -1 +1 @@ -ActiveModelSerializers.config.default_includes = '**' \ No newline at end of file +ActiveModelSerializers.config.default_includes = '**' diff --git a/config/initializers/browser.rb b/config/initializers/browser.rb index d00cff7ca..1c850f41e 100644 --- a/config/initializers/browser.rb +++ b/config/initializers/browser.rb @@ -1,3 +1,3 @@ BROWSER = Hashie::Mash.new ({ value: nil - }) \ No newline at end of file + }) diff --git a/config/initializers/clamav.rb b/config/initializers/clamav.rb index 13df38f7a..24122c84a 100644 --- a/config/initializers/clamav.rb +++ b/config/initializers/clamav.rb @@ -1,4 +1,4 @@ CLAMAV = Hashie::Mash.new ({ mock?: true, response: true - }) \ No newline at end of file + }) diff --git a/config/initializers/demo_emails.rb b/config/initializers/demo_emails.rb index e9e52c963..79a9df5bd 100644 --- a/config/initializers/demo_emails.rb +++ b/config/initializers/demo_emails.rb @@ -2,4 +2,4 @@ DemoEmails = { user: 'demo@tps.fr', gestionnaire: 'gestionnaire@apientreprise.fr', admin: 'admin@tps.fr' -} \ No newline at end of file +} diff --git a/config/initializers/features.yml b/config/initializers/features.yml index efd3e5324..e91fb5346 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1 +1 @@ -remote_storage: false \ No newline at end of file +remote_storage: false diff --git a/config/initializers/open_id_connect.rb b/config/initializers/open_id_connect.rb index ff380c704..333374682 100644 --- a/config/initializers/open_id_connect.rb +++ b/config/initializers/open_id_connect.rb @@ -2,4 +2,4 @@ OpenIDConnect.debug! OpenIDConnect.logger = Rails.logger Rack::OAuth2.logger = Rails.logger # Webfinger.logger = Rails.logger -SWD.logger = Rails.logger \ No newline at end of file +SWD.logger = Rails.logger diff --git a/config/initializers/openstack_version.rb b/config/initializers/openstack_version.rb index e71e1f19f..0ebdec459 100644 --- a/config/initializers/openstack_version.rb +++ b/config/initializers/openstack_version.rb @@ -1 +1 @@ -OpenStack::VERSION = 2.0 \ No newline at end of file +OpenStack::VERSION = 2.0 diff --git a/config/initializers/storage_url.rb b/config/initializers/storage_url.rb index 0a1cf0f93..65165ab2e 100644 --- a/config/initializers/storage_url.rb +++ b/config/initializers/storage_url.rb @@ -1 +1 @@ -STORAGE_URL = "https://storage.apientreprise.fr/" + CarrierWave::Uploader::Base.fog_directory + '/' \ No newline at end of file +STORAGE_URL = "https://storage.apientreprise.fr/" + CarrierWave::Uploader::Base.fog_directory + '/' diff --git a/config/initializers/urls.rb b/config/initializers/urls.rb index bb49d1437..801c2d941 100644 --- a/config/initializers/urls.rb +++ b/config/initializers/urls.rb @@ -2,4 +2,4 @@ if Rails.env.production? SIADEURL = 'https://api.apientreprise.fr' else SIADEURL = 'https://api-dev.apientreprise.fr' -end \ No newline at end of file +end diff --git a/config/initializers/will_paginate.rb b/config/initializers/will_paginate.rb index 454b8abfb..5afa4b2c6 100644 --- a/config/initializers/will_paginate.rb +++ b/config/initializers/will_paginate.rb @@ -1,3 +1,3 @@ require 'will_paginate' -WillPaginate.per_page = 12 \ No newline at end of file +WillPaginate.per_page = 12 diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index d1c57ae1f..6dd683b39 100755 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -59,4 +59,4 @@ fr: not_locked: "n'était pas verrouillé(e)" not_saved: one: "1 erreur a empêché ce(tte) %{resource} d'être sauvegardé(e) :" - other: "%{count} erreurs ont empêché ce(tte) %{resource} d'être sauvegardé(e) :" \ No newline at end of file + other: "%{count} erreurs ont empêché ce(tte) %{resource} d'être sauvegardé(e) :" diff --git a/config/locales/models/procedure/fr.yml b/config/locales/models/procedure/fr.yml index f6b8afe4a..399f8da40 100644 --- a/config/locales/models/procedure/fr.yml +++ b/config/locales/models/procedure/fr.yml @@ -9,4 +9,4 @@ fr: description: blank: Attribut manquant lien_demarche: - blank: Attribut manquant \ No newline at end of file + blank: Attribut manquant diff --git a/config/locales/smart_listing.fr.yml b/config/locales/smart_listing.fr.yml index b5448ecac..d7c99854e 100644 --- a/config/locales/smart_listing.fr.yml +++ b/config/locales/smart_listing.fr.yml @@ -12,4 +12,4 @@ fr: pagination: per_page: Par page unlimited: Unlimited - total: Total \ No newline at end of file + total: Total diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 9431fe006..0fe0c4360 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -4,4 +4,4 @@ staging: production: :concurrency: 2 :queues: - - default \ No newline at end of file + - default diff --git a/lib/tasks/cloud_storage.rake b/lib/tasks/cloud_storage.rake index 23ef7b5a4..92789fa65 100644 --- a/lib/tasks/cloud_storage.rake +++ b/lib/tasks/cloud_storage.rake @@ -111,4 +111,4 @@ namespace :cloudstorage do } end -end \ No newline at end of file +end diff --git a/spec/controllers/admin/accompagnateurs_controller_spec.rb b/spec/controllers/admin/accompagnateurs_controller_spec.rb index 748e3a815..945398f8d 100644 --- a/spec/controllers/admin/accompagnateurs_controller_spec.rb +++ b/spec/controllers/admin/accompagnateurs_controller_spec.rb @@ -31,4 +31,4 @@ describe Admin::AccompagnateursController, type: :controller do end end end -end \ No newline at end of file +end diff --git a/spec/controllers/admin/pieces_justificatives_controller_spec.rb b/spec/controllers/admin/pieces_justificatives_controller_spec.rb index 53f3212b7..8520a3186 100644 --- a/spec/controllers/admin/pieces_justificatives_controller_spec.rb +++ b/spec/controllers/admin/pieces_justificatives_controller_spec.rb @@ -168,4 +168,4 @@ describe Admin::PiecesJustificativesController, type: :controller do end end end -end \ No newline at end of file +end diff --git a/spec/controllers/admin/previsualisations_controller_spec.rb b/spec/controllers/admin/previsualisations_controller_spec.rb index b418b672e..6ca5b8768 100644 --- a/spec/controllers/admin/previsualisations_controller_spec.rb +++ b/spec/controllers/admin/previsualisations_controller_spec.rb @@ -13,4 +13,4 @@ describe Admin::PrevisualisationsController, type: :controller do it { expect(subject.status).to eq(200) } end -end \ No newline at end of file +end diff --git a/spec/controllers/admin/profile_controller_spec.rb b/spec/controllers/admin/profile_controller_spec.rb index 556c04316..9e9babf8c 100644 --- a/spec/controllers/admin/profile_controller_spec.rb +++ b/spec/controllers/admin/profile_controller_spec.rb @@ -2,4 +2,4 @@ require 'spec_helper' describe Admin::ProfileController, type: :controller do it { expect(described_class).to be < AdminController } -end \ No newline at end of file +end diff --git a/spec/controllers/administrateur/sessions_controller_spec.rb b/spec/controllers/administrateur/sessions_controller_spec.rb index 2499e2e0e..5eb92ecf0 100644 --- a/spec/controllers/administrateur/sessions_controller_spec.rb +++ b/spec/controllers/administrateur/sessions_controller_spec.rb @@ -29,4 +29,4 @@ describe Administrateurs::SessionsController, type: :controller do describe '.create' do it { expect(described_class).to be < Sessions::SessionsController } end -end \ No newline at end of file +end diff --git a/spec/controllers/api_controller_spec.rb b/spec/controllers/api_controller_spec.rb index a5ff814e5..c0c92a9ec 100644 --- a/spec/controllers/api_controller_spec.rb +++ b/spec/controllers/api_controller_spec.rb @@ -27,4 +27,4 @@ describe APIController, type: :controller do it { expect(subject.status).to eq(200) } end end -end \ No newline at end of file +end diff --git a/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb b/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb index 3dc9f34bd..411e53121 100644 --- a/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers/procedure_controller_spec.rb @@ -55,4 +55,4 @@ describe Backoffice::Dossiers::ProcedureController, type: :controller do it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: procedure.id) } end -end \ No newline at end of file +end diff --git a/spec/controllers/cgu_controller_spec.rb b/spec/controllers/cgu_controller_spec.rb index d49b16ed2..c656c0ca1 100644 --- a/spec/controllers/cgu_controller_spec.rb +++ b/spec/controllers/cgu_controller_spec.rb @@ -7,4 +7,4 @@ describe CguController, type: :controller do it { expect(subject.status).to eq 200 } end -end \ No newline at end of file +end diff --git a/spec/controllers/demo_controller_spec.rb b/spec/controllers/demo_controller_spec.rb index 6541d1efc..4411a2848 100644 --- a/spec/controllers/demo_controller_spec.rb +++ b/spec/controllers/demo_controller_spec.rb @@ -15,4 +15,4 @@ describe DemoController, type: :controller do it { expect(subject.status).to eq 302 } end end -end \ No newline at end of file +end diff --git a/spec/controllers/gestionnaires/sessions_controller_spec.rb b/spec/controllers/gestionnaires/sessions_controller_spec.rb index ff30e6cb7..6266e429f 100644 --- a/spec/controllers/gestionnaires/sessions_controller_spec.rb +++ b/spec/controllers/gestionnaires/sessions_controller_spec.rb @@ -29,4 +29,4 @@ describe Gestionnaires::SessionsController, type: :controller do describe '.create' do it { expect(described_class).to be < Sessions::SessionsController } end -end \ No newline at end of file +end diff --git a/spec/controllers/ping_controller_spec.rb b/spec/controllers/ping_controller_spec.rb index dfa381838..91a05ee16 100644 --- a/spec/controllers/ping_controller_spec.rb +++ b/spec/controllers/ping_controller_spec.rb @@ -16,4 +16,4 @@ describe PingController, type: :controller do it { expect(subject.status).to eq 500 } end end -end \ No newline at end of file +end diff --git a/spec/controllers/sessions/sessions_controller_spec.rb b/spec/controllers/sessions/sessions_controller_spec.rb index 7fa9c0d66..d2e58dd57 100644 --- a/spec/controllers/sessions/sessions_controller_spec.rb +++ b/spec/controllers/sessions/sessions_controller_spec.rb @@ -60,4 +60,4 @@ describe Sessions::SessionsController, type: :controller do post :create end end -end \ No newline at end of file +end diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb index d6d0eb0a5..6e5fe11a1 100644 --- a/spec/controllers/users/carte_controller_shared_example.rb +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -271,4 +271,4 @@ shared_examples 'carte_controller_spec' do it { expect(subject['QPCODE1234']['geometry']['coordinates']).to eq([[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]) } end end -end \ No newline at end of file +end diff --git a/spec/controllers/users/dossiers/invites_controller_spec.rb b/spec/controllers/users/dossiers/invites_controller_spec.rb index f45c34326..e80f94632 100644 --- a/spec/controllers/users/dossiers/invites_controller_spec.rb +++ b/spec/controllers/users/dossiers/invites_controller_spec.rb @@ -75,4 +75,4 @@ describe Users::Dossiers::InvitesController, type: :controller do it { is_expected.to redirect_to users_dossiers_path } end end -end \ No newline at end of file +end diff --git a/spec/decorators/procedure_decorator_spec.rb b/spec/decorators/procedure_decorator_spec.rb index d94025473..26540d80f 100644 --- a/spec/decorators/procedure_decorator_spec.rb +++ b/spec/decorators/procedure_decorator_spec.rb @@ -26,4 +26,4 @@ describe ProcedureDecorator do it { expect(subject.cadastre).to be_falsey } end -end \ No newline at end of file +end diff --git a/spec/decorators/procedures_decorator_spec.rb b/spec/decorators/procedures_decorator_spec.rb index be53606b2..e298b1180 100644 --- a/spec/decorators/procedures_decorator_spec.rb +++ b/spec/decorators/procedures_decorator_spec.rb @@ -17,4 +17,4 @@ describe ProceduresDecorator do it { expect(subject.offset).not_to be_nil } it { expect(subject.total_entries).not_to be_nil } it { expect(subject.total_pages).not_to be_nil } -end \ No newline at end of file +end diff --git a/spec/decorators/type_de_piece_justificative_decorator_spec.rb b/spec/decorators/type_de_piece_justificative_decorator_spec.rb index 45e0d401d..f9b9d3a61 100644 --- a/spec/decorators/type_de_piece_justificative_decorator_spec.rb +++ b/spec/decorators/type_de_piece_justificative_decorator_spec.rb @@ -51,4 +51,4 @@ describe TypeDePieceJustificativeDecorator do end -end \ No newline at end of file +end diff --git a/spec/facades/dossiers_list_facades_spec.rb b/spec/facades/dossiers_list_facades_spec.rb index f10826990..455550a4a 100644 --- a/spec/facades/dossiers_list_facades_spec.rb +++ b/spec/facades/dossiers_list_facades_spec.rb @@ -133,4 +133,4 @@ describe DossiersListFacades do end end end -end \ No newline at end of file +end diff --git a/spec/factories/administrateur.rb b/spec/factories/administrateur.rb index aa3aaadbc..05cfc88a2 100644 --- a/spec/factories/administrateur.rb +++ b/spec/factories/administrateur.rb @@ -4,4 +4,4 @@ FactoryGirl.define do email { generate(:administrateur_email) } password 'password' end -end \ No newline at end of file +end diff --git a/spec/factories/administration.rb b/spec/factories/administration.rb index 8313af360..216a5b70c 100644 --- a/spec/factories/administration.rb +++ b/spec/factories/administration.rb @@ -4,4 +4,4 @@ FactoryGirl.define do email { generate(:administration_email) } password 'password' end -end \ No newline at end of file +end diff --git a/spec/factories/gestionnaire.rb b/spec/factories/gestionnaire.rb index 63004f8e9..88043eecf 100644 --- a/spec/factories/gestionnaire.rb +++ b/spec/factories/gestionnaire.rb @@ -4,4 +4,4 @@ FactoryGirl.define do email { generate(:gestionnaire_email) } password 'password' end -end \ No newline at end of file +end diff --git a/spec/factories/user.rb b/spec/factories/user.rb index 4612d1e12..184da4b0a 100644 --- a/spec/factories/user.rb +++ b/spec/factories/user.rb @@ -4,4 +4,4 @@ FactoryGirl.define do email { generate(:user_email) } password 'password' end -end \ No newline at end of file +end diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index 4de962762..13c176b46 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -77,4 +77,4 @@ feature 'usage of pref list dossier lateral panel', js: true do end end end -end \ No newline at end of file +end diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb index 34c9dac39..0255d9a46 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -79,4 +79,4 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do end end end -end \ No newline at end of file +end diff --git a/spec/features/description_page/upload_piece_justificative_spec.rb b/spec/features/description_page/upload_piece_justificative_spec.rb index 1ee2c1360..4f999037c 100644 --- a/spec/features/description_page/upload_piece_justificative_spec.rb +++ b/spec/features/description_page/upload_piece_justificative_spec.rb @@ -54,4 +54,4 @@ feature 'user is on description page' do end end end -end \ No newline at end of file +end diff --git a/spec/features/users/complete_demande_spec.rb b/spec/features/users/complete_demande_spec.rb index dc6145cce..6554a4004 100644 --- a/spec/features/users/complete_demande_spec.rb +++ b/spec/features/users/complete_demande_spec.rb @@ -90,4 +90,4 @@ feature 'user path for dossier creation' do expect(page).to have_content('La procédure n\'existe pas') end end -end \ No newline at end of file +end diff --git a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb index 78e7c25be..b7a4f8495 100644 --- a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb +++ b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb @@ -70,4 +70,4 @@ feature 'drawing a zone with freedraw' do end end end -end \ No newline at end of file +end diff --git a/spec/lib/carto/geo_api/driver_spec.rb b/spec/lib/carto/geo_api/driver_spec.rb index 25ca47dd5..417bf0ba9 100644 --- a/spec/lib/carto/geo_api/driver_spec.rb +++ b/spec/lib/carto/geo_api/driver_spec.rb @@ -32,4 +32,4 @@ describe Carto::GeoAPI::Driver do it { is_expected.to eq 'https://geo.api.gouv.fr/regions' } end -end \ No newline at end of file +end diff --git a/spec/lib/file_size_validator_spec.rb b/spec/lib/file_size_validator_spec.rb index aafde89c2..081b107ff 100644 --- a/spec/lib/file_size_validator_spec.rb +++ b/spec/lib/file_size_validator_spec.rb @@ -45,4 +45,4 @@ describe FileSizeValidator, lib: true do expect(note.errors).not_to have_key(:content) end end -end \ No newline at end of file +end diff --git a/spec/lib/siade/exercices_adapter_spec.rb b/spec/lib/siade/exercices_adapter_spec.rb index 99cbb858d..b6735b4c3 100644 --- a/spec/lib/siade/exercices_adapter_spec.rb +++ b/spec/lib/siade/exercices_adapter_spec.rb @@ -30,4 +30,4 @@ describe SIADE::ExercicesAdapter do expect(subject[0][:date_fin_exercice_timestamp]).to eq(1388444400) end end -end \ No newline at end of file +end diff --git a/spec/models/champ_private_spec.rb b/spec/models/champ_private_spec.rb index 635cf4fbf..733505696 100644 --- a/spec/models/champ_private_spec.rb +++ b/spec/models/champ_private_spec.rb @@ -4,4 +4,4 @@ describe ChampPrivate do require 'models/champ_shared_example.rb' it_should_behave_like "champ_spec" -end \ No newline at end of file +end diff --git a/spec/models/champ_public_spec.rb b/spec/models/champ_public_spec.rb index b52c3e1f6..a981702c7 100644 --- a/spec/models/champ_public_spec.rb +++ b/spec/models/champ_public_spec.rb @@ -4,4 +4,4 @@ describe ChampPublic do require 'models/champ_shared_example.rb' it_should_behave_like "champ_spec" -end \ No newline at end of file +end diff --git a/spec/models/champ_shared_example.rb b/spec/models/champ_shared_example.rb index fdef3929a..9922fd38d 100644 --- a/spec/models/champ_shared_example.rb +++ b/spec/models/champ_shared_example.rb @@ -41,4 +41,4 @@ shared_examples 'champ_spec' do it { expect(subject).to include '99 - Étranger' } end -end \ No newline at end of file +end diff --git a/spec/models/champ_spec.rb b/spec/models/champ_spec.rb index 66114be2d..868001afc 100644 --- a/spec/models/champ_spec.rb +++ b/spec/models/champ_spec.rb @@ -4,4 +4,4 @@ describe Champ do require 'models/champ_shared_example.rb' it_should_behave_like "champ_spec" -end \ No newline at end of file +end diff --git a/spec/models/france_connect_particulier_client_spec.rb b/spec/models/france_connect_particulier_client_spec.rb index 5828d87d1..7f3168d13 100644 --- a/spec/models/france_connect_particulier_client_spec.rb +++ b/spec/models/france_connect_particulier_client_spec.rb @@ -14,4 +14,4 @@ describe FranceConnectParticulierClient do end end end -end \ No newline at end of file +end diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb index a2d376db2..29b53f41a 100644 --- a/spec/models/invite_spec.rb +++ b/spec/models/invite_spec.rb @@ -35,4 +35,4 @@ describe Invite do end end -end \ No newline at end of file +end diff --git a/spec/models/procedure_path_spec.rb b/spec/models/procedure_path_spec.rb index eaf75f411..fa7ceb7d4 100644 --- a/spec/models/procedure_path_spec.rb +++ b/spec/models/procedure_path_spec.rb @@ -35,4 +35,4 @@ describe ProcedurePath do end end -end \ No newline at end of file +end diff --git a/spec/models/type_de_champ_shared_example.rb b/spec/models/type_de_champ_shared_example.rb index e4ca86e0f..c1b37a8f6 100644 --- a/spec/models/type_de_champ_shared_example.rb +++ b/spec/models/type_de_champ_shared_example.rb @@ -52,4 +52,4 @@ shared_examples 'type_de_champ_spec' do it { expect(type_de_champ_no_1.field_for_list?).to be_falsey } it { expect(type_de_champ_no_2.field_for_list?).to be_falsey } end -end \ No newline at end of file +end diff --git a/spec/services/accompagnateur_service_spec.rb b/spec/services/accompagnateur_service_spec.rb index 54ae39dda..0d01b9f29 100644 --- a/spec/services/accompagnateur_service_spec.rb +++ b/spec/services/accompagnateur_service_spec.rb @@ -63,4 +63,4 @@ describe AccompagnateurService do end end end -end \ No newline at end of file +end diff --git a/spec/services/clamav_service_spec.rb b/spec/services/clamav_service_spec.rb index 36bf7e20a..440d8862e 100644 --- a/spec/services/clamav_service_spec.rb +++ b/spec/services/clamav_service_spec.rb @@ -17,4 +17,4 @@ describe ClamavService do subject end end -end \ No newline at end of file +end diff --git a/spec/services/france_connect_salt_service_spec.rb b/spec/services/france_connect_salt_service_spec.rb index 7e2a19e8c..ff77a1ef7 100644 --- a/spec/services/france_connect_salt_service_spec.rb +++ b/spec/services/france_connect_salt_service_spec.rb @@ -38,4 +38,4 @@ describe FranceConnectSaltService do it { is_expected.to be_falsey } end end -end \ No newline at end of file +end diff --git a/spec/services/france_connect_service_spec.rb b/spec/services/france_connect_service_spec.rb index 799f5eed1..7374ecb32 100644 --- a/spec/services/france_connect_service_spec.rb +++ b/spec/services/france_connect_service_spec.rb @@ -40,4 +40,4 @@ describe FranceConnectService do expect(subject.france_connect_particulier_id).to eq(france_connect_particulier_id) end end -end \ No newline at end of file +end diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb index d091c69b2..df7fe448b 100644 --- a/spec/services/notification_service_spec.rb +++ b/spec/services/notification_service_spec.rb @@ -26,4 +26,4 @@ describe NotificationService do describe 'text_for_notif' do pending end -end \ No newline at end of file +end diff --git a/spec/services/previsualisation_service_spec.rb b/spec/services/previsualisation_service_spec.rb index 2fcc4ee00..81f84e5ab 100644 --- a/spec/services/previsualisation_service_spec.rb +++ b/spec/services/previsualisation_service_spec.rb @@ -28,4 +28,4 @@ describe PrevisualisationService do it { expect(Champ.first.type_de_champ).to eq procedure_2.types_de_champ.first } end end -end \ No newline at end of file +end diff --git a/spec/services/user_routes_authorization_service_spec.rb b/spec/services/user_routes_authorization_service_spec.rb index b67b463be..231e4685b 100644 --- a/spec/services/user_routes_authorization_service_spec.rb +++ b/spec/services/user_routes_authorization_service_spec.rb @@ -158,4 +158,4 @@ describe UserRoutesAuthorizationService do end end end -end \ No newline at end of file +end diff --git a/spec/support/factory_girl.rb b/spec/support/factory_girl.rb index 9794b58a0..eec437fb3 100644 --- a/spec/support/factory_girl.rb +++ b/spec/support/factory_girl.rb @@ -1,3 +1,3 @@ RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods -end \ No newline at end of file +end diff --git a/spec/uploaders/base_uploader_spec.rb b/spec/uploaders/base_uploader_spec.rb index 0aa66297d..d3c9b1f2e 100644 --- a/spec/uploaders/base_uploader_spec.rb +++ b/spec/uploaders/base_uploader_spec.rb @@ -19,4 +19,4 @@ describe BaseUploader do it { is_expected.to eq '/tmp/tps-cache' } end end -end \ No newline at end of file +end diff --git a/spec/uploaders/remote_downloader_spec.rb b/spec/uploaders/remote_downloader_spec.rb index f2e7e7770..0f0629ee3 100644 --- a/spec/uploaders/remote_downloader_spec.rb +++ b/spec/uploaders/remote_downloader_spec.rb @@ -9,4 +9,4 @@ describe RemoteDownloader do describe '#url' do it { expect(subject.url).to eq 'https://storage.apientreprise.fr/tps_dev/file_name.pdf' } end -end \ No newline at end of file +end diff --git a/spec/views/admin/accompagnateurs/show.html.haml_spec.rb b/spec/views/admin/accompagnateurs/show.html.haml_spec.rb index 624bdc8a9..4593795ec 100644 --- a/spec/views/admin/accompagnateurs/show.html.haml_spec.rb +++ b/spec/views/admin/accompagnateurs/show.html.haml_spec.rb @@ -58,4 +58,4 @@ describe 'admin/accompagnateurs/show.html.haml', type: :view do it { expect(rendered).to have_content(accompagnateur_1.email) } it { expect(rendered).to have_content(accompagnateur_2.email) } end -end \ No newline at end of file +end diff --git a/spec/views/admin/gestionnaires/index.html.haml_spec.rb b/spec/views/admin/gestionnaires/index.html.haml_spec.rb index 9c57ee063..0ec5c815b 100644 --- a/spec/views/admin/gestionnaires/index.html.haml_spec.rb +++ b/spec/views/admin/gestionnaires/index.html.haml_spec.rb @@ -31,4 +31,4 @@ describe 'admin/gestionnaires/index.html.haml', type: :view do end it { expect(rendered).to match(/gest\d+@plop.com/) } end -end \ No newline at end of file +end diff --git a/spec/views/admin/procedures/edit.html.haml_spec.rb b/spec/views/admin/procedures/edit.html.haml_spec.rb index ba4492a5c..3e928fe08 100644 --- a/spec/views/admin/procedures/edit.html.haml_spec.rb +++ b/spec/views/admin/procedures/edit.html.haml_spec.rb @@ -14,4 +14,4 @@ describe 'admin/procedures/edit.html.haml', type: :view, vcr: { cassette_name: ' expect(rendered).to have_selector('#preview_procedure_logo') end end -end \ No newline at end of file +end diff --git a/spec/views/admin/procedures/show.html.haml_spec.rb b/spec/views/admin/procedures/show.html.haml_spec.rb index a6de0fb07..d974cac37 100644 --- a/spec/views/admin/procedures/show.html.haml_spec.rb +++ b/spec/views/admin/procedures/show.html.haml_spec.rb @@ -79,4 +79,4 @@ describe 'admin/procedures/show.html.haml', type: :view do end -end \ No newline at end of file +end diff --git a/spec/views/admin/profile/show.html.haml_spec.rb b/spec/views/admin/profile/show.html.haml_spec.rb index 631cc3d92..e6b0bed8d 100644 --- a/spec/views/admin/profile/show.html.haml_spec.rb +++ b/spec/views/admin/profile/show.html.haml_spec.rb @@ -8,4 +8,4 @@ describe 'admin/profile/show.html.haml', type: :view do render end it { expect(rendered).to have_content(token) } -end \ No newline at end of file +end diff --git a/spec/views/admin/types_de_piece_justificative/show.html.haml_spec.rb b/spec/views/admin/types_de_piece_justificative/show.html.haml_spec.rb index 6434a7ddd..73b1be675 100644 --- a/spec/views/admin/types_de_piece_justificative/show.html.haml_spec.rb +++ b/spec/views/admin/types_de_piece_justificative/show.html.haml_spec.rb @@ -45,4 +45,4 @@ describe 'admin/pieces_justificatives/show.html.haml', type: :view do it { expect(subject).not_to have_css('#btn_down_1') } end end -end \ No newline at end of file +end diff --git a/spec/views/backoffice/dossiers/index_html.haml_spec.rb b/spec/views/backoffice/dossiers/index_html.haml_spec.rb index 3de97bd7a..4951907d1 100644 --- a/spec/views/backoffice/dossiers/index_html.haml_spec.rb +++ b/spec/views/backoffice/dossiers/index_html.haml_spec.rb @@ -90,4 +90,4 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do it { is_expected.to have_content('plep') } it { is_expected.to have_content('plup') } it { is_expected.to have_content('plyp') } -end \ No newline at end of file +end diff --git a/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb b/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb index 53be1ef91..dd61a7578 100644 --- a/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb +++ b/spec/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_show_spec.rb @@ -152,4 +152,4 @@ describe 'layouts/left_panels/_left_panel_backoffice_dossierscontroller_show.htm end end -end \ No newline at end of file +end diff --git a/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb b/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb index d696534d3..7996e3d1f 100644 --- a/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb +++ b/spec/views/layouts/left_panels/_left_panel_users_recapitulatifcontroller_show_spec.rb @@ -83,4 +83,4 @@ describe 'layouts/left_panels/_left_panel_users_recapitulatifcontroller_show.htm end end -end \ No newline at end of file +end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index fcd4f141f..09e787e99 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -100,4 +100,4 @@ describe 'users/dossiers/index.html.haml', type: :view do let(:decorate_dossier_at_check) { decorate_dossier_invite } end end -end \ No newline at end of file +end diff --git a/spec/views/users/sessions/new.html.haml_spec.rb b/spec/views/users/sessions/new.html.haml_spec.rb index d7f6989b9..6e1dbeec9 100644 --- a/spec/views/users/sessions/new.html.haml_spec.rb +++ b/spec/views/users/sessions/new.html.haml_spec.rb @@ -31,4 +31,4 @@ describe 'users/sessions/new.html.haml', type: :view do it { expect(rendered).to have_selector('#form_login #logo_tps') } end -end \ No newline at end of file +end diff --git a/spec/views/users/siret/index.html.haml_spec.rb b/spec/views/users/siret/index.html.haml_spec.rb index 4ba45d6c6..49de45ecc 100644 --- a/spec/views/users/siret/index.html.haml_spec.rb +++ b/spec/views/users/siret/index.html.haml_spec.rb @@ -32,4 +32,4 @@ describe 'users/siret/index.html.haml', type: :view do expect(rendered).to have_content(procedure.libelle) end end -end \ No newline at end of file +end diff --git a/vendor/assets/javascripts/clipper.js b/vendor/assets/javascripts/clipper.js index 391912924..690959b74 100644 --- a/vendor/assets/javascripts/clipper.js +++ b/vendor/assets/javascripts/clipper.js @@ -241,4 +241,4 @@ f,g,h,l,k,m,p,q,r,s,t,u,v,x=a.length,y=b*b,w=[];for(c=0;cn)return 0;b&&(a[n]=a[0],n++);for(;--n;)g=a[n],k=g.X,g=g.Y,h=a[n-1],m=h.X,h=h.Y,d+=e((k-m)*(k-m)+(g-h)*(g-h));b&&a.pop();return d/c};d.JS.PerimeterOfPaths= function(a,b,c){c||(c=1);for(var e=0,f=0;f created on 2015-01-23 */ -!function(a){"use strict";var b=function(a,b){var c=this.convertLatLngs(a);this.points=c.points,this.maxDistance=isFinite(b)?b:c.maxDistance+1};b.prototype={points:[],maxDistance:0,convertLatLngs:function(a){var b=0,c=a.map(function(c,d){if(c.x=c.lng,c.y=this.lat2y(c),a[d-1]){var e=this.distanceTo(c,a[d-1]);e>b&&(b=e)}return c}.bind(this));return{points:c,maxDistance:b}},distanceTo:function(b,c){var d=6378137,e=a.PI/180,f=(c.lat-b.lat)*e,g=(c.lng-b.lng)*e,h=b.lat*e,i=c.lat*e,j=a.sin(f/2),k=a.sin(g/2),l=j*j+k*k*a.cos(h)*a.cos(i);return 2*d*a.atan2(a.sqrt(l),a.sqrt(1-l))},getLatLngs:function(){if(this.length<=3)return this.points;var a=this.points.slice().sort(function(a,b){return a.y-b.y}),b=[],c=a[0],d=c,e={x:d.x,y:d.y-1};b.push(c);for(var f,g=0,h=function(a,b){return this.getAngle(d,e,b)-this.getAngle(d,e,a)}.bind(this);;){g++;for(var i=this.points.slice().sort(h),j=0,k=i.length;k>j;j++)if(this.distanceTo(d,i[j])1e3)return this.points}},isIntersecting:function(a,b){for(var c=1,d=a.length-1;d>c;c++)if(this.intersect(a[c-1],a[c],a[d],b))return!0;return!1},intersect:function(a,b,c,d){return a.x===c.x&&a.y===c.y||b.x===d.x&&b.y===d.y||a.x===d.x&&a.y===d.y||b.x===c.x&&b.y===c.y?!1:this.ccw(a,b,c)*this.ccw(a,b,d)<=0&&this.ccw(c,d,a)*this.ccw(c,d,b)<=0},lat2y:function(b){return 180/a.PI*a.log(a.tan(a.PI/4+b.lat*(a.PI/180)/2))},ccw:function(a,b,c){var d=1e-13,e=b.x-a.x,f=b.y-a.y,g=c.x-a.x,h=c.y-a.y,i=e*h-f*g;return i>d?1:-d>i?-1:-d>e*g||-d>f*h?-1:g*g+h*h+d>e*e+f*f?1:0},getAngle:function(b,c,d){if(d.x===b.x&&d.y===b.y)return-9e3;if(d.x===c.x&&d.y===c.y)return-360;var e,f={x:b.x-c.x,y:b.y-c.y},g={x:d.x-b.x,y:d.y-b.y},h=f.x*g.y-g.x*f.y,i=f.x*g.x+f.y*g.y;return 0===i?(h>0&&(e=90),0>h&&(e=-90)):(e=180*a.atan(h/i)/a.PI,0>i&&(h>=0&&(e+=180),0>h&&(e-=180))),360===e&&(e=0),180-e}},function(){return"undefined"!=typeof module&&module.exports?void(module.exports=b):"function"==typeof define&&define.amd?void define(function(){return b}):void(window.ConcaveHull=b)}()}(Math); \ No newline at end of file +!function(a){"use strict";var b=function(a,b){var c=this.convertLatLngs(a);this.points=c.points,this.maxDistance=isFinite(b)?b:c.maxDistance+1};b.prototype={points:[],maxDistance:0,convertLatLngs:function(a){var b=0,c=a.map(function(c,d){if(c.x=c.lng,c.y=this.lat2y(c),a[d-1]){var e=this.distanceTo(c,a[d-1]);e>b&&(b=e)}return c}.bind(this));return{points:c,maxDistance:b}},distanceTo:function(b,c){var d=6378137,e=a.PI/180,f=(c.lat-b.lat)*e,g=(c.lng-b.lng)*e,h=b.lat*e,i=c.lat*e,j=a.sin(f/2),k=a.sin(g/2),l=j*j+k*k*a.cos(h)*a.cos(i);return 2*d*a.atan2(a.sqrt(l),a.sqrt(1-l))},getLatLngs:function(){if(this.length<=3)return this.points;var a=this.points.slice().sort(function(a,b){return a.y-b.y}),b=[],c=a[0],d=c,e={x:d.x,y:d.y-1};b.push(c);for(var f,g=0,h=function(a,b){return this.getAngle(d,e,b)-this.getAngle(d,e,a)}.bind(this);;){g++;for(var i=this.points.slice().sort(h),j=0,k=i.length;k>j;j++)if(this.distanceTo(d,i[j])1e3)return this.points}},isIntersecting:function(a,b){for(var c=1,d=a.length-1;d>c;c++)if(this.intersect(a[c-1],a[c],a[d],b))return!0;return!1},intersect:function(a,b,c,d){return a.x===c.x&&a.y===c.y||b.x===d.x&&b.y===d.y||a.x===d.x&&a.y===d.y||b.x===c.x&&b.y===c.y?!1:this.ccw(a,b,c)*this.ccw(a,b,d)<=0&&this.ccw(c,d,a)*this.ccw(c,d,b)<=0},lat2y:function(b){return 180/a.PI*a.log(a.tan(a.PI/4+b.lat*(a.PI/180)/2))},ccw:function(a,b,c){var d=1e-13,e=b.x-a.x,f=b.y-a.y,g=c.x-a.x,h=c.y-a.y,i=e*h-f*g;return i>d?1:-d>i?-1:-d>e*g||-d>f*h?-1:g*g+h*h+d>e*e+f*f?1:0},getAngle:function(b,c,d){if(d.x===b.x&&d.y===b.y)return-9e3;if(d.x===c.x&&d.y===c.y)return-360;var e,f={x:b.x-c.x,y:b.y-c.y},g={x:d.x-b.x,y:d.y-b.y},h=f.x*g.y-g.x*f.y,i=f.x*g.x+f.y*g.y;return 0===i?(h>0&&(e=90),0>h&&(e=-90)):(e=180*a.atan(h/i)/a.PI,0>i&&(h>=0&&(e+=180),0>h&&(e-=180))),360===e&&(e=0),180-e}},function(){return"undefined"!=typeof module&&module.exports?void(module.exports=b):"function"==typeof define&&define.amd?void define(function(){return b}):void(window.ConcaveHull=b)}()}(Math); diff --git a/vendor/assets/javascripts/d3.min.js b/vendor/assets/javascripts/d3.min.js index e3aa5c60d..ea124a8a2 100644 --- a/vendor/assets/javascripts/d3.min.js +++ b/vendor/assets/javascripts/d3.min.js @@ -2,4 +2,4 @@ i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Oa),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ia,e*Ia])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Oa,n[1]*Oa),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ia,n[1]*Ia]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Uo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Uo):It((w=+n)*Oa),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Oa,d=n[1]%360*Oa,r()):[v*Ia,d*Ia]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Oa,M=n[1]%360*Oa,x=n.length>2?n[2]%360*Oa:0,r()):[m*Ia,M*Ia,x*Ia]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Oa,e*Oa)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Ua:-ja>n?n+Ua:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Ua:-ja>t?t+Ua:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Ua)):(u=n+a*Ua,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Da)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ia,Math.atan2(a,Math.sqrt(r*r+u*u))*Ia]}:function(){return[n*Ia,t*Ia]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Oa),a=Math.cos(u),o=Ma((n*=Oa)-t),l=Math.cos(o);Wo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Jo.point=function(u,i){t=u*Oa,e=Math.sin(i*=Oa),r=Math.cos(i),Jo.point=n},Jo.lineEnd=function(){Jo.point=Jo.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Ha+Da>t&&(t=-Ha+Da):t>Ha-Da&&(t=Ha-Da);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Ha]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=ll.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),il.remove(n),ll.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];Ue(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=il._;o;)if(r=Oe(o,a)-i,r>Da)o=o.L;else{if(u=i-Ie(o,a),!(u>Da)){r>-Da?(t=o.P,e=o):u>-Da?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=je(n);if(il.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),il.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=ul,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Da||Ma(u-e)>Da)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Da?{x:f,y:Ma(t-f)Da?{x:Ma(e-p)Da?{x:h,y:Ma(t-h)Da?{x:Ma(e-g)=-Pa)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=cl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ol._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=fl.lastIndex=hl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=fl.exec(n))&&(r=hl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=hl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Ha)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ua*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ua/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function jr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Ur(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function ju(n){return 1+oa.max(n,function(n){return n.y})}function Uu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:wl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(jr)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2]))}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=so.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in Sl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:Nl);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,t){if(!arguments.length)return kl;arguments.length<2?t=kl:"function"!=typeof t&&(t=oa.format(t));var r,o=Math.max(.1,n/a.ticks().length),l=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(l(u(n)+r))<=o?t(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,Ui(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Gl,u);return i==Gl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Gl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.9"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=oa.min(arguments,a),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Ca.hasOwnProperty(e)?{space:Ca[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=U(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var za=[];oa.selection.enter=Z,oa.selection.enter.prototype=za,za.append=Aa.append,za.empty=Aa.empty,za.node=Aa.node,za.call=Aa.call,za.size=Aa.size,za.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var La=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&La.forEach(function(n){"on"+n in sa&&La.remove(n)});var qa,Ta=0;oa.mouse=function(n){return J(n,k())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Da=1e-6,Pa=Da*Da,ja=Math.PI,Ua=2*ja,Fa=Ua-Da,Ha=ja/2,Oa=ja/180,Ia=180/ja,Ya=Math.SQRT2,Za=2,Va=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Pa>h)r=Math.log(c/a)/Ya,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Ya*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Va*h)/(2*a*Za*g),v=(c*c-a*a-Va*h)/(2*c*Za*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Ya,e=function(n){var t=n*r,e=rn(d),o=a/(Za*g)*(e*un(Ya*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Ya*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on($a+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Ol.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Ol.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Ol.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Xa())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Ba,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return $a||($a="onwheel"in sa?(Xa=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?(Xa=function(){return oa.event.wheelDelta},"mousewheel"):(Xa=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Fl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Ba:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var Xa,$a,Ba=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Wa=ln.prototype=new on;Wa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Wa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Wa.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ja=sn.prototype=new on;Ja.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ga*(arguments.length?n:1)))},Ja.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ga*(arguments.length?n:1)))},Ja.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ga=18,Ka=.95047,Qa=1,no=1.08883,to=hn.prototype=new on;to.brighter=function(n){return new hn(Math.min(100,this.l+Ga*(arguments.length?n:1)),this.a,this.b)},to.darker=function(n){return new hn(Math.max(0,this.l-Ga*(arguments.length?n:1)),this.a,this.b)},to.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var eo=yn.prototype=new on;eo.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},eo.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},eo.hsl=function(){return wn(this.r,this.g,this.b)},eo.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ro=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ro.forEach(function(n,t){ro.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var uo,io,ao,oo,lo=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var co=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(jn);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),co[8+e/3]};var so=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,fo=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ho=oa.time={},go=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){po.setTime.apply(this._,arguments)}};var po=Date.prototype;ho.year=On(function(n){return n=ho.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ho.years=ho.year.range,ho.years.utc=ho.year.utc.range,ho.day=On(function(n){var t=new go(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ho.days=ho.day.range,ho.days.utc=ho.day.utc.range,ho.dayOfYear=function(n){var t=ho.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ho[n]=On(function(n){return(n=ho.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ho[n+"s"]=e.range,ho[n+"s"].utc=e.utc.range,ho[n+"OfYear"]=function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)}}),ho.week=ho.sunday,ho.weeks=ho.sunday.range,ho.weeks.utc=ho.sunday.utc.range,ho.weekOfYear=ho.sundayOfYear;var vo={"-":"",_:" ",0:"0"},mo=/^\s*\d+/,yo=/^%/;oa.locale=function(n){return{numberFormat:Un(n),timeFormat:Yn(n)}};var Mo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=Mo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,xo),ft(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xo=new st;oa.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):ht(n,t)};var bo={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,ko.lineStart=ko.lineEnd=ko.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Oa,e*Oa]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ia*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ia;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ia;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;ko.point(n,e),t(n,e)}function i(){ko.lineStart()}function a(){u(v,d),ko.lineEnd(),Ma(y)>Da&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nSo?(s=-(h=180),f=-(g=90)):y>Da?g=90:-Da>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){No=Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,jo);var t=Ro,e=Do,r=Po,u=t*t+e*e+r*r;return Pa>u&&(t=Lo,e=qo,r=To,Da>Eo&&(t=Ao,e=Co,r=zo),u=t*t+e*e+r*r,Pa>u)?[NaN,NaN]:[Math.atan2(e,t)*Ia,tn(r/Math.sqrt(u))*Ia]};var No,Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Uo=Rt(zt,Ut,Ht,[-ja,-ja/2]),Fo=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Da,f+.12*c+Da],[s-.214*c-Da,f+.234*c-Da]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Da,f+.166*c+Da],[s-.115*c-Da,f+.234*c-Da]]).stream(l).point,n},n.scale(1070)};var Ho,Oo,Io,Yo,Zo,Vo,Xo={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Oo=0,Xo.lineStart=$t},polygonEnd:function(){Xo.lineStart=Xo.lineEnd=Xo.point=b,Ho+=Ma(Oo/2)}},$o={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Bo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Bo.lineStart=ne},polygonEnd:function(){Bo.point=Gt,Bo.lineStart=Kt,Bo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Ho=0,oa.geo.stream(n,u(Xo)),Ho},n.centroid=function(n){return Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,u(Bo)),Po?[Ro/Po,Do/Po]:To?[Lo/To,qo/To]:zo?[Ao/zo,Co/zo]:[NaN,NaN]},n.bounds=function(n){return Zo=Vo=-(Io=Yo=1/0),oa.geo.stream(n,u($o)),[[Io,Yo],[Zo,Vo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t}return n=fe(n[0]%360*Oa,n[1]*Oa,n.length>2?n[2]*Oa:0),t.invert=function(t){return t=n.invert(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Oa,-n[1]*Oa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ia,n[1]*=Ia}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Oa,u*Oa),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Oa,(u=+r)*Oa),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Oa,u=n[1]*Oa,i=t[1]*Oa,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Da}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Da}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Oa,n[1]*Oa,t[0]*Oa,t[1]*Oa)},oa.geo.length=function(n){return Wo=0,oa.geo.stream(n,Jo),Wo};var Wo,Jo={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Go=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Go)}).raw=Go;var Ko=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Ko)}).raw=Ko,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Qo=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(Qo)}).raw=Qo,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ha]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var nl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(nl)}).raw=nl;var tl=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(tl)}).raw=tl,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ha]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Da)*Da,y:Math.round(a(n,t)/Da)*Da,i:t}})}var r=Ce,u=ze,i=r,a=u,o=sl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=pl.get(e)||gl,r=vl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=jr,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Ur(e?e.matrix:dl)})(n)},Ur.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var dl={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=ml,g=yl,p=-30,v=Ml,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.start({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var ml=20,yl=1,Ml=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===xl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=xl,r=0,u=Ua,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var xl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:bl.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:_l.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var bl=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),_l=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=Uu(t),n.y=ju(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; -if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file +if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); diff --git a/vendor/assets/javascripts/graham_scan.min.js b/vendor/assets/javascripts/graham_scan.min.js index 59b50d143..075e53dd8 100644 --- a/vendor/assets/javascripts/graham_scan.min.js +++ b/vendor/assets/javascripts/graham_scan.min.js @@ -4,4 +4,4 @@ * Date: 14/06/13 * Updated: 25/01/14 * Description: An implementation of the Graham's Scan Convex Hull algorithm in Javascript.*/ -function ConvexHullGrahamScan(){this.anchorPoint=undefined;this.reverse=false;this.points=[]}ConvexHullGrahamScan.prototype={constructor:ConvexHullGrahamScan,Point:function(e,t){this.x=e;this.y=t},_findPolarAngle:function(e,t){var n=57.295779513082;var r=t.x-e.x;var i=t.y-e.y;if(r==0&&i==0){return 0}var s=Math.atan2(i,r)*n;if(this.reverse){if(s<=0){s+=360}}else{if(s>=0){s+=360}}return s},addPoint:function(e,t){if(this.anchorPoint===undefined){this.anchorPoint=new this.Point(e,t)}else if(this.anchorPoint.y>t||this.anchorPoint.y==t&&this.anchorPoint.x>e){this.anchorPoint.y=t;this.anchorPoint.x=e;this.points.unshift(new this.Point(e,t));return}this.points.push(new this.Point(e,t))},_sortPoints:function(){var e=this;return this.points.sort(function(t,n){var r=e._findPolarAngle(e.anchorPoint,t);var i=e._findPolarAngle(e.anchorPoint,n);if(ri){return 1}return 0})},_checkPoints:function(e,t,n){var r;var i=this._findPolarAngle(e,t);var s=this._findPolarAngle(e,n);if(i>s){r=i-s;return!(r>180)}else if(i180}return false},getHull:function(){var e=[],t,n;this.reverse=this.points.every(function(e){return e.x<0&&e.y<0});t=this._sortPoints();n=t.length;if(n<4){return t}e.push(t.shift(),t.shift());while(true){var r,i,s;e.push(t.shift());r=e[e.length-3];i=e[e.length-2];s=e[e.length-1];if(this._checkPoints(r,i,s)){e.splice(e.length-2,1)}if(t.length==0){if(n==e.length){return e}t=e;n=t.length;e=[];e.push(t.shift(),t.shift())}}}} \ No newline at end of file +function ConvexHullGrahamScan(){this.anchorPoint=undefined;this.reverse=false;this.points=[]}ConvexHullGrahamScan.prototype={constructor:ConvexHullGrahamScan,Point:function(e,t){this.x=e;this.y=t},_findPolarAngle:function(e,t){var n=57.295779513082;var r=t.x-e.x;var i=t.y-e.y;if(r==0&&i==0){return 0}var s=Math.atan2(i,r)*n;if(this.reverse){if(s<=0){s+=360}}else{if(s>=0){s+=360}}return s},addPoint:function(e,t){if(this.anchorPoint===undefined){this.anchorPoint=new this.Point(e,t)}else if(this.anchorPoint.y>t||this.anchorPoint.y==t&&this.anchorPoint.x>e){this.anchorPoint.y=t;this.anchorPoint.x=e;this.points.unshift(new this.Point(e,t));return}this.points.push(new this.Point(e,t))},_sortPoints:function(){var e=this;return this.points.sort(function(t,n){var r=e._findPolarAngle(e.anchorPoint,t);var i=e._findPolarAngle(e.anchorPoint,n);if(ri){return 1}return 0})},_checkPoints:function(e,t,n){var r;var i=this._findPolarAngle(e,t);var s=this._findPolarAngle(e,n);if(i>s){r=i-s;return!(r>180)}else if(i180}return false},getHull:function(){var e=[],t,n;this.reverse=this.points.every(function(e){return e.x<0&&e.y<0});t=this._sortPoints();n=t.length;if(n<4){return t}e.push(t.shift(),t.shift());while(true){var r,i,s;e.push(t.shift());r=e[e.length-3];i=e[e.length-2];s=e[e.length-1];if(this._checkPoints(r,i,s)){e.splice(e.length-2,1)}if(t.length==0){if(n==e.length){return e}t=e;n=t.length;e=[];e.push(t.shift(),t.shift())}}}} diff --git a/vendor/assets/javascripts/handlebars.js b/vendor/assets/javascripts/handlebars.js index 289ae458a..68634bafd 100644 --- a/vendor/assets/javascripts/handlebars.js +++ b/vendor/assets/javascripts/handlebars.js @@ -4605,4 +4605,4 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) }); -; \ No newline at end of file +; diff --git a/vendor/assets/javascripts/leaflet.freedraw.js b/vendor/assets/javascripts/leaflet.freedraw.js index 05b9368ef..4cae9c6f3 100644 --- a/vendor/assets/javascripts/leaflet.freedraw.js +++ b/vendor/assets/javascripts/leaflet.freedraw.js @@ -1,2 +1,2 @@ /*! leaflet.freedraw by Adam Timberlake created on 2015-06-20 */ -!function(a,b,c,d){"use strict";b.freeDraw=function(a){return new b.FreeDraw(a)},b.FreeDraw=b.FeatureGroup.extend({map:null,state:[],defaultPreferences:{},svg:{},element:{},creating:!1,lineFunction:function(){},latLngs:[],options:{},lastNotification:"",markerLayer:b.layerGroup(),hull:{},memory:{},polygons:[],edges:[],mode:1,polygonCount:0,fromPoint:{x:0,y:0},movingEdge:null,boundaryUpdateRequired:!1,silenced:!1,RECOUNT_TIMEOUT:1,initialize:function(a){"undefined"==typeof c&&b.FreeDraw.Throw("D3 is a required library","http://d3js.org/"),"undefined"==typeof d&&b.FreeDraw.Throw("JSClipper is a required library","http://sourceforge.net/p/jsclipper/wiki/Home%206/"),this.fromPoint={x:0,y:0},this.polygons=[],this.edges=[],this.hull={},this._latLngs=[],a=a||{},this.memory=new b.FreeDraw.Memory,this.options=new b.FreeDraw.Options,this.hull=new b.FreeDraw.Hull,this.element=a.element||null,this.setMode(a.mode||this.mode),this.options.setPathClipperPadding(100),b.FreeDraw.Polygon=b.Polygon.extend({options:{className:"leaflet-freedraw-polygon"}})},recreateEdges:function(a){return this.edges=this.edges.filter(function(b){return b._freedraw.polygon!==a?!0:void this.map.removeLayer(b)}.bind(this)),this.createEdges(a)},resurrectOrphans:function(){var a=function(a){setTimeout(function(){this.silently(function(){this.recreateEdges(a)}.bind(this))}.bind(this))},b=this.getPolygons(!0);b.forEach(function(b){b&&b._parts[0]&&a.call(this,b)}.bind(this)),setTimeout(function(){this.notifyBoundaries()}.bind(this))},onAdd:function(d){d.on("zoomend",function(){setTimeout(this.resurrectOrphans.bind(this))}.bind(this)),this.map=d,this.mode=this.mode||b.FreeDraw.MODES.VIEW,this.defaultPreferences={dragging:d.dragging._enabled,touchZoom:d.touchZoom._enabled,doubleClickZoom:d.doubleClickZoom._enabled,scrollWheelZoom:d.scrollWheelZoom._enabled},this.element||(this.element=d._container),this.lineFunction=c.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate("linear"),this.createD3(),this.map.on(this.options.events[0]||"mousedown touchstart",this.bindEvents().mouseDown),this.map.on(this.options.events[1]||"mousemove touchmove",this.bindEvents().mouseMove),this.map.on(this.options.events[2]||"mouseup touchend",this.bindEvents().mouseUpLeave);var e=a.document.getElementsByTagName("body")[0];e.addEventListener("mouseleave",this.bindEvents().mouseUpLeave),this.setMode(this.mode)},onRemove:function(){this._clearPolygons(),this.map.off(this.options.events[0]||"mousedown touchstart",this.bindEvents().mouseDown),this.map.off(this.options.events[1]||"mousemove touchmove",this.bindEvents().mouseMove),this.map.off(this.options.events[2]||"mousedown touchstart",this.bindEvents().mouseUpLeave);var b=a.document.getElementsByTagName("body")[0];b.removeEventListener("mouseleave",this.bindEvents().mouseUpLeave)},silently:function(a){var b=this.silenced;this.silenced=!0,a.apply(this),b||(this.silenced=!1)},cancelAction:function(){this.creating=!1,this.movingEdge=null,this.destroyD3().createD3()},setMapPermissions:function(a){this.map.dragging[a](),this.map.touchZoom[a](),this.map.doubleClickZoom[a](),this.map.scrollWheelZoom[a](),"enable"===a&&(this.defaultPreferences.dragging||this.map.dragging.disable(),this.defaultPreferences.touchZoom||this.map.touchZoom.disable(),this.defaultPreferences.doubleClickZoom||this.map.doubleClickZoom.disable(),this.defaultPreferences.scrollWheelZoom||this.map.scrollWheelZoom.disable())},setMode:function(a){if(a=0===a?b.FreeDraw.MODES.VIEW:a,this.mode=a,this.fire("mode",{mode:a}),this.map){var c=!!(a&b.FreeDraw.MODES.CREATE),d=c?"disable":"enable";this.map.dragging[d](),!this.boundaryUpdateRequired||this.mode&b.FreeDraw.MODES.EDIT||(this.notifyBoundaries(),this.boundaryUpdateRequired=!1,this.options.memoriseEachEdge||this.memory.save(this.getPolygons(!0))),function(b,c,d,e){e(c,"mode-create"),e(c,"mode-edit"),e(c,"mode-delete"),e(c,"mode-view"),e(c,"mode-append"),a&b.CREATE&&d(c,"mode-create"),a&b.EDIT&&d(c,"mode-edit"),a&b.DELETE&&d(c,"mode-delete"),a&b.VIEW&&d(c,"mode-view"),a&b.APPEND&&d(c,"mode-append")}(b.FreeDraw.MODES,this.map._container,b.DomUtil.addClass,b.DomUtil.removeClass)}},unsetMode:function(a){this.setMode(this.mode^a)},createD3:function(){this.svg=c.select(this.options.element||this.element).append("svg").attr("class",this.options.svgClassName).attr("width",200).attr("height",200)},destroyD3:function(){return this.svg.remove(),this.svg={},this},latLngsToClipperPoints:function(a){return a.map(function(a){var b=this.map.latLngToLayerPoint(a);return{X:b.x,Y:b.y}}.bind(this))},clipperPolygonsToLatLngs:function(a){var c=[];return a.forEach(function(a){a.forEach(function(a){a=b.point(a.X,a.Y);var d=this.map.layerPointToLatLng(a);c.push(d)}.bind(this))}.bind(this)),c},uniqueLatLngs:function(a){var b=[],c=[];return a.forEach(function(a){var d=JSON.stringify(a);-1===b.indexOf(d)&&(b.push(d),c.push(a))}),c},handlePolygonClick:function(a,c){var d=[],e=this.map.mouseEventToContainerPoint(c.originalEvent),f=1/0,g=new b.Point,h=new b.Point,i=[];a._latlngs.forEach(function(a){i.push(this.map.latLngToContainerPoint(a))}.bind(this)),i.forEach(function(a,c){var d=a,j=i[c+1]||i[0],k=b.LineUtil.pointToSegmentDistance(e,d,j);f>k&&(f=k,g=d,h=j)}.bind(this)),i.forEach(function(a,b){var c=i[b+1]||i[0];return a===g&&c===h?(d.push(this.map.containerPointToLatLng(a)),void d.push(this.map.containerPointToLatLng(e))):void d.push(this.map.containerPointToLatLng(a))}.bind(this));var j=this.options.elbowDistance,k=function(){this.mode&b.FreeDraw.MODES.APPEND&&(a.setLatLngs(d),this.destroyEdges(a),this.createEdges(a))}.bind(this);if(this.mode&b.FreeDraw.MODES.APPEND&&!(this.mode&b.FreeDraw.MODES.DELETE)){if(this.options.onlyInDistance&&f>j)return;return void k()}return this.mode&b.FreeDraw.MODES.DELETE&&!(this.mode&b.FreeDraw.MODES.APPEND)?void this.destroyPolygon(a):f>j&&this.mode&b.FreeDraw.MODES.DELETE?void this.destroyPolygon(a):void k()},createPolygon:function(a,c){if(!this.options.multiplePolygons&&this.getPolygons(!0).length>=1){if(!this.options.destroyPrevious)return this.destroyD3().createD3(),!1;this.silently(this.clearPolygons)}if(this.destroyD3().createD3(),this.options.simplifyPolygon&&(a=function(){var b=d.Clipper.CleanPolygon(this.latLngsToClipperPoints(a),1.1),c=d.Clipper.SimplifyPolygon(b,d.PolyFillType.pftNonZero);return this.clipperPolygonsToLatLngs(c)}.apply(this)),a.length<=this.options.invalidLength&&!c)return!1;var e=this.options.polygonClassName,f=new b.FreeDraw.Polygon(a,{smoothFactor:this.options.smoothFactor,className:Array.isArray(e)?e[this.polygons.length]:e});return f.on("click",function(a){this.handlePolygonClick(f,a)}.bind(this)),f.addTo(this.map),this.polygons.push(f),this.createEdges(f),function(){!this.silenced&&f._parts[0]&&(f._latlngs=[],f._parts[0].forEach(function(a){f._latlngs.push(this.map.layerPointToLatLng(a))}.bind(this)))}.bind(this)(),this.options.attemptMerge&&!this.silenced&&this.mergePolygons(),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0))),f},predefinedPolygon:function(a){return this.createPolygon(a,!0)},undo:function(){this._modifyState("undo")},redo:function(){this._modifyState("redo")},_modifyState:function(a){this.silently(this._clearPolygons.bind(this));var b=this.memory[a]();b.forEach(function(a){this.silently(function(){this.createPolygon(a)}.bind(this))}.bind(this)),this.notifyBoundaries()},getPolygons:function(a){var c=[];if(a){if(!this.map)return[];var d="G";for(var e in this.map._layers)if(this.map._layers.hasOwnProperty(e)){var f=this.map._layers[e];f._container&&f._container.tagName.toUpperCase()===d&&f instanceof b.FreeDraw.Polygon&&c.push(f)}}else this.edges.forEach(function(a){-1===c.indexOf(a._freedraw.polygon)&&a._freedraw.polygon instanceof b.FreeDraw.Polygon&&c.push(a._freedraw.polygon)}.bind(this));return c},mergePolygons:function(){var a=function(){var a=this.getPolygons(),c=[];a.forEach(function(a){c.push(this.latLngsToClipperPoints(a._latlngs))}.bind(this));var e=d.Clipper.SimplifyPolygons(c,d.PolyFillType.pftNonZero);this.silently(function(){this._clearPolygons(),e.forEach(function(a){var c=[];a.forEach(function(a){a=b.point(a.X,a.Y),c.push(this.map.layerPointToLatLng(a))}.bind(this)),this.createPolygon(c,!0)}.bind(this))})}.bind(this);a(),a(),this.getPolygons(!0).forEach(this.trimPolygonEdges.bind(this))},destroyPolygon:function(a){this.map.removeLayer(a);var c=this.polygons.indexOf(a);this.polygons.splice(c,1),this.destroyEdges(a),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0))),this.options.deleteExitMode&&!this.silenced&&this.setMode(this.mode^b.FreeDraw.MODES.DELETE)},destroyEdges:function(a){this.edges=this.edges.filter(function(b){return b._freedraw.polygon!==a?!0:void this.map.removeLayer(b)}.bind(this))},clearPolygons:function(){this.silently(this._clearPolygons),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0)))},_clearPolygons:function(){this.getPolygons().forEach(function(a){this.destroyPolygon(a)}.bind(this)),this.silenced||this.notifyBoundaries()},notifyBoundaries:function(){var a=[];this.getPolygons(!0).forEach(function(b){a.push(b._latlngs)}.bind(this)),function(){a.forEach(function(a){var b=a.length-1;if(b&&a[0]&&a[b]){var c=a[0].lat!==a[b].lat,d=a[0].lng!==a[b].lng;(c||d)&&a.push(a[0])}})}.bind(this)(),this.polygonCount=a.length;var b=JSON.stringify(a);this.lastNotification!==b&&(this.lastNotification=b,this.fire("markers",{latLngs:a}),setTimeout(this.emitPolygonCount.bind(this),this.RECOUNT_TIMEOUT))},emitPolygonCount:function(){var a="M0 0",b=this.getPolygons(!0),c=b.every(function(b){var c=b._container.lastChild.getAttribute("d").trim();return c===a});c&&(this.silently(function(){this._clearPolygons(),this.fire("markers",{latLngs:[]}),this.fire("count",{count:this.polygonCount})}.bind(this)),this.polygonCount=0,b.length=0),b.length!==this.polygonCount&&(this.polygonCount=b.length,this.fire("count",{count:this.polygonCount}))},createEdges:function(a){var c=function(a){return a._parts[0]?a._latlngs.map(function(a){return this.map.latLngToLayerPoint(a)}.bind(this)):[]}.bind(this),d=this.uniqueLatLngs(c(a)),e=this.polygons.indexOf(a),f=0;return d?(d.forEach(function(c){var d=new b.DivIcon({className:Array.isArray(this.options.iconClassName)?this.options.iconClassName[e]:this.options.iconClassName}),g=this.map.layerPointToLatLng(c);d=b.marker(g,{icon:d}).addTo(this.map),d._freedraw={polygon:a,polygonId:a._leaflet_id,latLng:d._latlng},this.edges.push(d),f++,d.on("mousedown touchstart",function(a){a.originalEvent.preventDefault(),a.originalEvent.stopPropagation(),this.movingEdge=a.target}.bind(this))}.bind(this)),f):!1},updatePolygonEdge:function(a,c,d){var e=this.map.containerPointToLatLng(new b.Point(c,d));a.setLatLng(e),a._freedraw.latLng=e;var f=[],g=this.edges.filter(function(b){return f.push(b),b._freedraw.polygon===a._freedraw.polygon});this.edges=f;var h=[];g.forEach(function(a){h.push(a.getLatLng())}),a._freedraw.polygon.setLatLngs(h),a._freedraw.polygon.redraw()},bindEvents:function(){return this.events?this.events:(this.events={mouseDown:function(a){if(!this.creating){var c=2;if(a.originalEvent.button!==c){var d=a.originalEvent;this.options.disablePropagation||d.stopPropagation(),d.preventDefault(),this.latLngs=[],this.fromPoint=this.map.latLngToContainerPoint(a.latlng),this.mode&b.FreeDraw.MODES.CREATE&&(this.creating=!0,this.setMapPermissions("disable"))}}}.bind(this),mouseMove:function(a){var b=a.originalEvent;return this.movingEdge?void this._editMouseMove(a):void(this.creating&&this._createMouseMove(b))}.bind(this),mouseUpLeave:function(){return this.movingEdge?(this.options.boundariesAfterEdit?this.boundaryUpdateRequired=!0:this.notifyBoundaries(),this.trimPolygonEdges(this.movingEdge._freedraw.polygon),this.mergePolygons(),this.movingEdge=null,this.options.memoriseEachEdge&&this.memory.save(this.getPolygons(!0)),void setTimeout(this.emitPolygonCount.bind(this),this.RECOUNT_TIMEOUT)):void this._createMouseUp()}.bind(this)},this.events)},_editMouseMove:function(a){var c=this.map.latLngToContainerPoint(a.latlng),d=this.movingEdge._icon.style;d[b.DomUtil.TRANSFORM]=c,this.updatePolygonEdge(this.movingEdge,c.x,c.y)},trimPolygonEdges:function(a){var b=[];a&&0!==a._parts.length&&a._parts[0]&&(a._parts[0].forEach(function(a){b.push(this.map.layerPointToLatLng(a))}.bind(this)),a.setLatLngs(b),a.redraw(),this.destroyEdges(a),this.createEdges(a))},_createMouseMove:function(a){var c=this.map.mouseEventToContainerPoint(a),d=this.map.containerPointToLatLng(c),e=[this.fromPoint,new b.Point(c.x,c.y)];this.svg.append("path").classed("drawing-line",!0).attr("d",this.lineFunction(e)).attr("stroke","#D7217E").attr("stroke-width",2).attr("fill","none"),this.fromPoint.x=c.x,this.fromPoint.y=c.y,this.latLngs.push(d)},_createMouseUp:function(){if(this.creating&&(this.creating=!1,!(this.latLngs.length<=2))){if(this.options.hullAlgorithm){this.hull.setMap(this.map);var a=this.hull[this.options.hullAlgorithm](this.latLngs)}this.latLngs.push(this.latLngs[0]);var c=this.createPolygon(a||this.latLngs);if(!c)return void this.setMapPermissions("enable");this.latLngs=[],this.options.createExitMode&&(this.setMode(this.mode^b.FreeDraw.MODES.CREATE),this.setMapPermissions("enable"))}}}),b.FreeDraw.MODES={NONE:0,VIEW:1,CREATE:2,EDIT:4,DELETE:8,APPEND:16,EDIT_APPEND:20,ALL:31},b.FreeDraw.Throw=function(b,c){throw c&&a.console.error("http://"===c.substr(0,7)||"https://"===c.substr(0,8)?c:"See: https://github.com/Wildhoney/Leaflet.FreeDraw/blob/master/EXCEPTIONS.md#"+c),"Leaflet.FreeDraw: "+b+"."}}(window,window.L,window.d3,window.ClipperLib),function(){"use strict";L.FreeDraw.Hull=function(){},L.FreeDraw.Hull.prototype={map:null,setMap:function(a){this.map=a},brian3kbGrahamScan:function(a){var b=new ConvexHullGrahamScan,c=[],d=[],e=[];a.forEach(function(a){d.push(this.map.latLngToLayerPoint(a))}.bind(this)),d.forEach(function(a){b.addPoint(a.x,a.y)}.bind(this));var f=b.getHull();return f.forEach(function(a){c.push(L.point(a.x,a.y))}.bind(this)),c.push(c[0]),c.forEach(function(a){e.push(this.map.layerPointToLatLng(a))}.bind(this)),e},wildhoneyConcaveHull:function(a){return a.push(a[0]),new ConcaveHull(a).getLatLngs()}}}(),function(){"use strict";L.FreeDraw.Memory=function(){},L.FreeDraw.Memory.prototype={states:[[]],current:0,save:function(a){this.current++,this.states[this.current]&&this.clearFrom(this.current),this.states[this.current]||(this.states[this.current]=[]),a.forEach(function(a){this.states[this.current].push(a._latlngs)}.bind(this))},undo:function(){return this.current--,this.states[this.current]||this.current++,this.states[this.current]},canUndo:function(){return!!this.states[this.current-1]},redo:function(){return this.current++,this.states[this.current]||this.current--,this.states[this.current]},canRedo:function(){return!!this.states[this.current+1]},clearFrom:function(a){this.states.splice(a)}}}(),function(a,b){"use strict";b.FreeDraw.Options=function(){},b.FreeDraw.Options.prototype={multiplePolygons:!0,events:[],simplifyPolygon:!0,invalidLength:3,hullAlgorithm:"wildhoneyConcaveHull",boundariesAfterEdit:!1,createExitMode:!0,attemptMerge:!0,smoothFactor:5,iconClassName:"polygon-elbow",svgClassName:"tracer",polygonClassName:"tracer",deleteExitMode:!1,memoriseEachEdge:!0,destroyPrevious:!1,disablePropagation:!1,elbowDistance:10,onlyInDistance:!1,hullAlgorithms:{"brian3kb/graham_scan_js":{method:"brian3kbGrahamScan",name:"Graham Scan JS",global:"ConvexHullGrahamScan",link:"https://github.com/brian3kb/graham_scan_js"},"Wildhoney/ConcaveHull":{method:"wildhoneyConcaveHull",name:"Concave Hull",global:"ConcaveHull",link:"https://github.com/Wildhoney/ConcaveHull"}},setEvents:function(a){this.events=a},setMemoriseEachEdge:function(a){this.memoriseEachEdge=!!a},addElbowOnlyWithinDistance:function(a){this.onlyInDistance=!!a},setPathClipperPadding:function(a){b.Path.CLIP_PADDING=a},disableStopPropagation:function(){this.disablePropagation=!0},setMaximumDistanceForElbow:function(a){this.elbowDistance=+a},exitModeAfterCreate:function(a){this.createExitMode=!!a},exitModeAfterDelete:function(a){this.deleteExitMode=!!a},destroyPreviousPolygon:function(a){this.destroyPrevious=!!a},allowMultiplePolygons:function(a){this.multiplePolygons=!!a},setSVGClassName:function(a){this.svgClassName=a},setBoundariesAfterEdit:function(a){this.boundariesAfterEdit=!!a},setSmoothFactor:function(a){this.smoothFactor=+a},setIconClassName:function(a){this.iconClassName=a},setPolygonClassName:function(a){this.polygonClassName=a},setHullAlgorithm:function(c){if(!c||this.hullAlgorithms.hasOwnProperty(c)){if(!c)return void(this.hullAlgorithm=!1);c=this.hullAlgorithms[c],"undefined"==typeof a[c.global]&&b.FreeDraw.Throw(c.name+" is a required library for concave/convex hulls",c.link),this.hullAlgorithm=c.method}}}}(window,window.L),function(){"use strict";L.FreeDraw.Utilities={getMySQLMultiPolygon:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push(a.lng+" "+a.lat)}),b.push("(("+c.join(",")+"))")}),"MULTIPOLYGON("+b.join(",")+")"},getMySQLPolygons:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push(a.lng+" "+a.lat)}),b.push("POLYGON(("+c.join(",")+"))")}),b},getJsonPolygons:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push("["+a.lng+", "+a.lat+"]")}),b.push('{ "latLngs": ['+c.join(", ")+"] }")}),b},getElasticSearchPolygons:function(a,b){b=b||"location";var c=[];a.forEach(function(a){a.forEach(function(a){c.push({lat:a.lat,lng:a.lng})})});var d={geo_polygon:{}};return d.geo_polygon[b]={points:c},JSON.stringify(d)}}}(); \ No newline at end of file +!function(a,b,c,d){"use strict";b.freeDraw=function(a){return new b.FreeDraw(a)},b.FreeDraw=b.FeatureGroup.extend({map:null,state:[],defaultPreferences:{},svg:{},element:{},creating:!1,lineFunction:function(){},latLngs:[],options:{},lastNotification:"",markerLayer:b.layerGroup(),hull:{},memory:{},polygons:[],edges:[],mode:1,polygonCount:0,fromPoint:{x:0,y:0},movingEdge:null,boundaryUpdateRequired:!1,silenced:!1,RECOUNT_TIMEOUT:1,initialize:function(a){"undefined"==typeof c&&b.FreeDraw.Throw("D3 is a required library","http://d3js.org/"),"undefined"==typeof d&&b.FreeDraw.Throw("JSClipper is a required library","http://sourceforge.net/p/jsclipper/wiki/Home%206/"),this.fromPoint={x:0,y:0},this.polygons=[],this.edges=[],this.hull={},this._latLngs=[],a=a||{},this.memory=new b.FreeDraw.Memory,this.options=new b.FreeDraw.Options,this.hull=new b.FreeDraw.Hull,this.element=a.element||null,this.setMode(a.mode||this.mode),this.options.setPathClipperPadding(100),b.FreeDraw.Polygon=b.Polygon.extend({options:{className:"leaflet-freedraw-polygon"}})},recreateEdges:function(a){return this.edges=this.edges.filter(function(b){return b._freedraw.polygon!==a?!0:void this.map.removeLayer(b)}.bind(this)),this.createEdges(a)},resurrectOrphans:function(){var a=function(a){setTimeout(function(){this.silently(function(){this.recreateEdges(a)}.bind(this))}.bind(this))},b=this.getPolygons(!0);b.forEach(function(b){b&&b._parts[0]&&a.call(this,b)}.bind(this)),setTimeout(function(){this.notifyBoundaries()}.bind(this))},onAdd:function(d){d.on("zoomend",function(){setTimeout(this.resurrectOrphans.bind(this))}.bind(this)),this.map=d,this.mode=this.mode||b.FreeDraw.MODES.VIEW,this.defaultPreferences={dragging:d.dragging._enabled,touchZoom:d.touchZoom._enabled,doubleClickZoom:d.doubleClickZoom._enabled,scrollWheelZoom:d.scrollWheelZoom._enabled},this.element||(this.element=d._container),this.lineFunction=c.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate("linear"),this.createD3(),this.map.on(this.options.events[0]||"mousedown touchstart",this.bindEvents().mouseDown),this.map.on(this.options.events[1]||"mousemove touchmove",this.bindEvents().mouseMove),this.map.on(this.options.events[2]||"mouseup touchend",this.bindEvents().mouseUpLeave);var e=a.document.getElementsByTagName("body")[0];e.addEventListener("mouseleave",this.bindEvents().mouseUpLeave),this.setMode(this.mode)},onRemove:function(){this._clearPolygons(),this.map.off(this.options.events[0]||"mousedown touchstart",this.bindEvents().mouseDown),this.map.off(this.options.events[1]||"mousemove touchmove",this.bindEvents().mouseMove),this.map.off(this.options.events[2]||"mousedown touchstart",this.bindEvents().mouseUpLeave);var b=a.document.getElementsByTagName("body")[0];b.removeEventListener("mouseleave",this.bindEvents().mouseUpLeave)},silently:function(a){var b=this.silenced;this.silenced=!0,a.apply(this),b||(this.silenced=!1)},cancelAction:function(){this.creating=!1,this.movingEdge=null,this.destroyD3().createD3()},setMapPermissions:function(a){this.map.dragging[a](),this.map.touchZoom[a](),this.map.doubleClickZoom[a](),this.map.scrollWheelZoom[a](),"enable"===a&&(this.defaultPreferences.dragging||this.map.dragging.disable(),this.defaultPreferences.touchZoom||this.map.touchZoom.disable(),this.defaultPreferences.doubleClickZoom||this.map.doubleClickZoom.disable(),this.defaultPreferences.scrollWheelZoom||this.map.scrollWheelZoom.disable())},setMode:function(a){if(a=0===a?b.FreeDraw.MODES.VIEW:a,this.mode=a,this.fire("mode",{mode:a}),this.map){var c=!!(a&b.FreeDraw.MODES.CREATE),d=c?"disable":"enable";this.map.dragging[d](),!this.boundaryUpdateRequired||this.mode&b.FreeDraw.MODES.EDIT||(this.notifyBoundaries(),this.boundaryUpdateRequired=!1,this.options.memoriseEachEdge||this.memory.save(this.getPolygons(!0))),function(b,c,d,e){e(c,"mode-create"),e(c,"mode-edit"),e(c,"mode-delete"),e(c,"mode-view"),e(c,"mode-append"),a&b.CREATE&&d(c,"mode-create"),a&b.EDIT&&d(c,"mode-edit"),a&b.DELETE&&d(c,"mode-delete"),a&b.VIEW&&d(c,"mode-view"),a&b.APPEND&&d(c,"mode-append")}(b.FreeDraw.MODES,this.map._container,b.DomUtil.addClass,b.DomUtil.removeClass)}},unsetMode:function(a){this.setMode(this.mode^a)},createD3:function(){this.svg=c.select(this.options.element||this.element).append("svg").attr("class",this.options.svgClassName).attr("width",200).attr("height",200)},destroyD3:function(){return this.svg.remove(),this.svg={},this},latLngsToClipperPoints:function(a){return a.map(function(a){var b=this.map.latLngToLayerPoint(a);return{X:b.x,Y:b.y}}.bind(this))},clipperPolygonsToLatLngs:function(a){var c=[];return a.forEach(function(a){a.forEach(function(a){a=b.point(a.X,a.Y);var d=this.map.layerPointToLatLng(a);c.push(d)}.bind(this))}.bind(this)),c},uniqueLatLngs:function(a){var b=[],c=[];return a.forEach(function(a){var d=JSON.stringify(a);-1===b.indexOf(d)&&(b.push(d),c.push(a))}),c},handlePolygonClick:function(a,c){var d=[],e=this.map.mouseEventToContainerPoint(c.originalEvent),f=1/0,g=new b.Point,h=new b.Point,i=[];a._latlngs.forEach(function(a){i.push(this.map.latLngToContainerPoint(a))}.bind(this)),i.forEach(function(a,c){var d=a,j=i[c+1]||i[0],k=b.LineUtil.pointToSegmentDistance(e,d,j);f>k&&(f=k,g=d,h=j)}.bind(this)),i.forEach(function(a,b){var c=i[b+1]||i[0];return a===g&&c===h?(d.push(this.map.containerPointToLatLng(a)),void d.push(this.map.containerPointToLatLng(e))):void d.push(this.map.containerPointToLatLng(a))}.bind(this));var j=this.options.elbowDistance,k=function(){this.mode&b.FreeDraw.MODES.APPEND&&(a.setLatLngs(d),this.destroyEdges(a),this.createEdges(a))}.bind(this);if(this.mode&b.FreeDraw.MODES.APPEND&&!(this.mode&b.FreeDraw.MODES.DELETE)){if(this.options.onlyInDistance&&f>j)return;return void k()}return this.mode&b.FreeDraw.MODES.DELETE&&!(this.mode&b.FreeDraw.MODES.APPEND)?void this.destroyPolygon(a):f>j&&this.mode&b.FreeDraw.MODES.DELETE?void this.destroyPolygon(a):void k()},createPolygon:function(a,c){if(!this.options.multiplePolygons&&this.getPolygons(!0).length>=1){if(!this.options.destroyPrevious)return this.destroyD3().createD3(),!1;this.silently(this.clearPolygons)}if(this.destroyD3().createD3(),this.options.simplifyPolygon&&(a=function(){var b=d.Clipper.CleanPolygon(this.latLngsToClipperPoints(a),1.1),c=d.Clipper.SimplifyPolygon(b,d.PolyFillType.pftNonZero);return this.clipperPolygonsToLatLngs(c)}.apply(this)),a.length<=this.options.invalidLength&&!c)return!1;var e=this.options.polygonClassName,f=new b.FreeDraw.Polygon(a,{smoothFactor:this.options.smoothFactor,className:Array.isArray(e)?e[this.polygons.length]:e});return f.on("click",function(a){this.handlePolygonClick(f,a)}.bind(this)),f.addTo(this.map),this.polygons.push(f),this.createEdges(f),function(){!this.silenced&&f._parts[0]&&(f._latlngs=[],f._parts[0].forEach(function(a){f._latlngs.push(this.map.layerPointToLatLng(a))}.bind(this)))}.bind(this)(),this.options.attemptMerge&&!this.silenced&&this.mergePolygons(),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0))),f},predefinedPolygon:function(a){return this.createPolygon(a,!0)},undo:function(){this._modifyState("undo")},redo:function(){this._modifyState("redo")},_modifyState:function(a){this.silently(this._clearPolygons.bind(this));var b=this.memory[a]();b.forEach(function(a){this.silently(function(){this.createPolygon(a)}.bind(this))}.bind(this)),this.notifyBoundaries()},getPolygons:function(a){var c=[];if(a){if(!this.map)return[];var d="G";for(var e in this.map._layers)if(this.map._layers.hasOwnProperty(e)){var f=this.map._layers[e];f._container&&f._container.tagName.toUpperCase()===d&&f instanceof b.FreeDraw.Polygon&&c.push(f)}}else this.edges.forEach(function(a){-1===c.indexOf(a._freedraw.polygon)&&a._freedraw.polygon instanceof b.FreeDraw.Polygon&&c.push(a._freedraw.polygon)}.bind(this));return c},mergePolygons:function(){var a=function(){var a=this.getPolygons(),c=[];a.forEach(function(a){c.push(this.latLngsToClipperPoints(a._latlngs))}.bind(this));var e=d.Clipper.SimplifyPolygons(c,d.PolyFillType.pftNonZero);this.silently(function(){this._clearPolygons(),e.forEach(function(a){var c=[];a.forEach(function(a){a=b.point(a.X,a.Y),c.push(this.map.layerPointToLatLng(a))}.bind(this)),this.createPolygon(c,!0)}.bind(this))})}.bind(this);a(),a(),this.getPolygons(!0).forEach(this.trimPolygonEdges.bind(this))},destroyPolygon:function(a){this.map.removeLayer(a);var c=this.polygons.indexOf(a);this.polygons.splice(c,1),this.destroyEdges(a),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0))),this.options.deleteExitMode&&!this.silenced&&this.setMode(this.mode^b.FreeDraw.MODES.DELETE)},destroyEdges:function(a){this.edges=this.edges.filter(function(b){return b._freedraw.polygon!==a?!0:void this.map.removeLayer(b)}.bind(this))},clearPolygons:function(){this.silently(this._clearPolygons),this.silenced||(this.notifyBoundaries(),this.memory.save(this.getPolygons(!0)))},_clearPolygons:function(){this.getPolygons().forEach(function(a){this.destroyPolygon(a)}.bind(this)),this.silenced||this.notifyBoundaries()},notifyBoundaries:function(){var a=[];this.getPolygons(!0).forEach(function(b){a.push(b._latlngs)}.bind(this)),function(){a.forEach(function(a){var b=a.length-1;if(b&&a[0]&&a[b]){var c=a[0].lat!==a[b].lat,d=a[0].lng!==a[b].lng;(c||d)&&a.push(a[0])}})}.bind(this)(),this.polygonCount=a.length;var b=JSON.stringify(a);this.lastNotification!==b&&(this.lastNotification=b,this.fire("markers",{latLngs:a}),setTimeout(this.emitPolygonCount.bind(this),this.RECOUNT_TIMEOUT))},emitPolygonCount:function(){var a="M0 0",b=this.getPolygons(!0),c=b.every(function(b){var c=b._container.lastChild.getAttribute("d").trim();return c===a});c&&(this.silently(function(){this._clearPolygons(),this.fire("markers",{latLngs:[]}),this.fire("count",{count:this.polygonCount})}.bind(this)),this.polygonCount=0,b.length=0),b.length!==this.polygonCount&&(this.polygonCount=b.length,this.fire("count",{count:this.polygonCount}))},createEdges:function(a){var c=function(a){return a._parts[0]?a._latlngs.map(function(a){return this.map.latLngToLayerPoint(a)}.bind(this)):[]}.bind(this),d=this.uniqueLatLngs(c(a)),e=this.polygons.indexOf(a),f=0;return d?(d.forEach(function(c){var d=new b.DivIcon({className:Array.isArray(this.options.iconClassName)?this.options.iconClassName[e]:this.options.iconClassName}),g=this.map.layerPointToLatLng(c);d=b.marker(g,{icon:d}).addTo(this.map),d._freedraw={polygon:a,polygonId:a._leaflet_id,latLng:d._latlng},this.edges.push(d),f++,d.on("mousedown touchstart",function(a){a.originalEvent.preventDefault(),a.originalEvent.stopPropagation(),this.movingEdge=a.target}.bind(this))}.bind(this)),f):!1},updatePolygonEdge:function(a,c,d){var e=this.map.containerPointToLatLng(new b.Point(c,d));a.setLatLng(e),a._freedraw.latLng=e;var f=[],g=this.edges.filter(function(b){return f.push(b),b._freedraw.polygon===a._freedraw.polygon});this.edges=f;var h=[];g.forEach(function(a){h.push(a.getLatLng())}),a._freedraw.polygon.setLatLngs(h),a._freedraw.polygon.redraw()},bindEvents:function(){return this.events?this.events:(this.events={mouseDown:function(a){if(!this.creating){var c=2;if(a.originalEvent.button!==c){var d=a.originalEvent;this.options.disablePropagation||d.stopPropagation(),d.preventDefault(),this.latLngs=[],this.fromPoint=this.map.latLngToContainerPoint(a.latlng),this.mode&b.FreeDraw.MODES.CREATE&&(this.creating=!0,this.setMapPermissions("disable"))}}}.bind(this),mouseMove:function(a){var b=a.originalEvent;return this.movingEdge?void this._editMouseMove(a):void(this.creating&&this._createMouseMove(b))}.bind(this),mouseUpLeave:function(){return this.movingEdge?(this.options.boundariesAfterEdit?this.boundaryUpdateRequired=!0:this.notifyBoundaries(),this.trimPolygonEdges(this.movingEdge._freedraw.polygon),this.mergePolygons(),this.movingEdge=null,this.options.memoriseEachEdge&&this.memory.save(this.getPolygons(!0)),void setTimeout(this.emitPolygonCount.bind(this),this.RECOUNT_TIMEOUT)):void this._createMouseUp()}.bind(this)},this.events)},_editMouseMove:function(a){var c=this.map.latLngToContainerPoint(a.latlng),d=this.movingEdge._icon.style;d[b.DomUtil.TRANSFORM]=c,this.updatePolygonEdge(this.movingEdge,c.x,c.y)},trimPolygonEdges:function(a){var b=[];a&&0!==a._parts.length&&a._parts[0]&&(a._parts[0].forEach(function(a){b.push(this.map.layerPointToLatLng(a))}.bind(this)),a.setLatLngs(b),a.redraw(),this.destroyEdges(a),this.createEdges(a))},_createMouseMove:function(a){var c=this.map.mouseEventToContainerPoint(a),d=this.map.containerPointToLatLng(c),e=[this.fromPoint,new b.Point(c.x,c.y)];this.svg.append("path").classed("drawing-line",!0).attr("d",this.lineFunction(e)).attr("stroke","#D7217E").attr("stroke-width",2).attr("fill","none"),this.fromPoint.x=c.x,this.fromPoint.y=c.y,this.latLngs.push(d)},_createMouseUp:function(){if(this.creating&&(this.creating=!1,!(this.latLngs.length<=2))){if(this.options.hullAlgorithm){this.hull.setMap(this.map);var a=this.hull[this.options.hullAlgorithm](this.latLngs)}this.latLngs.push(this.latLngs[0]);var c=this.createPolygon(a||this.latLngs);if(!c)return void this.setMapPermissions("enable");this.latLngs=[],this.options.createExitMode&&(this.setMode(this.mode^b.FreeDraw.MODES.CREATE),this.setMapPermissions("enable"))}}}),b.FreeDraw.MODES={NONE:0,VIEW:1,CREATE:2,EDIT:4,DELETE:8,APPEND:16,EDIT_APPEND:20,ALL:31},b.FreeDraw.Throw=function(b,c){throw c&&a.console.error("http://"===c.substr(0,7)||"https://"===c.substr(0,8)?c:"See: https://github.com/Wildhoney/Leaflet.FreeDraw/blob/master/EXCEPTIONS.md#"+c),"Leaflet.FreeDraw: "+b+"."}}(window,window.L,window.d3,window.ClipperLib),function(){"use strict";L.FreeDraw.Hull=function(){},L.FreeDraw.Hull.prototype={map:null,setMap:function(a){this.map=a},brian3kbGrahamScan:function(a){var b=new ConvexHullGrahamScan,c=[],d=[],e=[];a.forEach(function(a){d.push(this.map.latLngToLayerPoint(a))}.bind(this)),d.forEach(function(a){b.addPoint(a.x,a.y)}.bind(this));var f=b.getHull();return f.forEach(function(a){c.push(L.point(a.x,a.y))}.bind(this)),c.push(c[0]),c.forEach(function(a){e.push(this.map.layerPointToLatLng(a))}.bind(this)),e},wildhoneyConcaveHull:function(a){return a.push(a[0]),new ConcaveHull(a).getLatLngs()}}}(),function(){"use strict";L.FreeDraw.Memory=function(){},L.FreeDraw.Memory.prototype={states:[[]],current:0,save:function(a){this.current++,this.states[this.current]&&this.clearFrom(this.current),this.states[this.current]||(this.states[this.current]=[]),a.forEach(function(a){this.states[this.current].push(a._latlngs)}.bind(this))},undo:function(){return this.current--,this.states[this.current]||this.current++,this.states[this.current]},canUndo:function(){return!!this.states[this.current-1]},redo:function(){return this.current++,this.states[this.current]||this.current--,this.states[this.current]},canRedo:function(){return!!this.states[this.current+1]},clearFrom:function(a){this.states.splice(a)}}}(),function(a,b){"use strict";b.FreeDraw.Options=function(){},b.FreeDraw.Options.prototype={multiplePolygons:!0,events:[],simplifyPolygon:!0,invalidLength:3,hullAlgorithm:"wildhoneyConcaveHull",boundariesAfterEdit:!1,createExitMode:!0,attemptMerge:!0,smoothFactor:5,iconClassName:"polygon-elbow",svgClassName:"tracer",polygonClassName:"tracer",deleteExitMode:!1,memoriseEachEdge:!0,destroyPrevious:!1,disablePropagation:!1,elbowDistance:10,onlyInDistance:!1,hullAlgorithms:{"brian3kb/graham_scan_js":{method:"brian3kbGrahamScan",name:"Graham Scan JS",global:"ConvexHullGrahamScan",link:"https://github.com/brian3kb/graham_scan_js"},"Wildhoney/ConcaveHull":{method:"wildhoneyConcaveHull",name:"Concave Hull",global:"ConcaveHull",link:"https://github.com/Wildhoney/ConcaveHull"}},setEvents:function(a){this.events=a},setMemoriseEachEdge:function(a){this.memoriseEachEdge=!!a},addElbowOnlyWithinDistance:function(a){this.onlyInDistance=!!a},setPathClipperPadding:function(a){b.Path.CLIP_PADDING=a},disableStopPropagation:function(){this.disablePropagation=!0},setMaximumDistanceForElbow:function(a){this.elbowDistance=+a},exitModeAfterCreate:function(a){this.createExitMode=!!a},exitModeAfterDelete:function(a){this.deleteExitMode=!!a},destroyPreviousPolygon:function(a){this.destroyPrevious=!!a},allowMultiplePolygons:function(a){this.multiplePolygons=!!a},setSVGClassName:function(a){this.svgClassName=a},setBoundariesAfterEdit:function(a){this.boundariesAfterEdit=!!a},setSmoothFactor:function(a){this.smoothFactor=+a},setIconClassName:function(a){this.iconClassName=a},setPolygonClassName:function(a){this.polygonClassName=a},setHullAlgorithm:function(c){if(!c||this.hullAlgorithms.hasOwnProperty(c)){if(!c)return void(this.hullAlgorithm=!1);c=this.hullAlgorithms[c],"undefined"==typeof a[c.global]&&b.FreeDraw.Throw(c.name+" is a required library for concave/convex hulls",c.link),this.hullAlgorithm=c.method}}}}(window,window.L),function(){"use strict";L.FreeDraw.Utilities={getMySQLMultiPolygon:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push(a.lng+" "+a.lat)}),b.push("(("+c.join(",")+"))")}),"MULTIPOLYGON("+b.join(",")+")"},getMySQLPolygons:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push(a.lng+" "+a.lat)}),b.push("POLYGON(("+c.join(",")+"))")}),b},getJsonPolygons:function(a){var b=[];return a.forEach(function(a){var c=[];a.forEach(function(a){c.push("["+a.lng+", "+a.lat+"]")}),b.push('{ "latLngs": ['+c.join(", ")+"] }")}),b},getElasticSearchPolygons:function(a,b){b=b||"location";var c=[];a.forEach(function(a){a.forEach(function(a){c.push({lat:a.lat,lng:a.lng})})});var d={geo_polygon:{}};return d.geo_polygon[b]={points:c},JSON.stringify(d)}}}(); diff --git a/vendor/assets/javascripts/leaflet.js b/vendor/assets/javascripts/leaflet.js index ee5ff5a1d..da1b8cb97 100644 --- a/vendor/assets/javascripts/leaflet.js +++ b/vendor/assets/javascripts/leaflet.js @@ -6,4 +6,4 @@ !function(t,e,i){var n=t.L,o={};o.version="0.7.7","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=!t.PointerEvent&&t.MSPointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&(m||"ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch);o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n));s=e.maxZoom?Math.min(e.maxZoom,s):s;var a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-(1/0),o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator, transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-(1/0));for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=this._getTileSize(),o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;e.detectRetina&&o.Browser.retina?i.width=i.height=2*n:i.width=i.height=n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i="shadow"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){return this._icon&&this._setPos(this._map.latLngToLayerPoint(this._latlng).round()),this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;is?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t,t._source=this):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),"off"in t&&t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,i.dashArray?t.dashStyle=o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):t.dashStyle="",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this.fire("remove"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color),t.lineCap&&(this._ctx.lineCap=t.lineCap),t.lineJoin&&(this._ctx.lineJoin=t.lineJoin)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill(e.fillRule||"evenodd")),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click dblclick contextmenu",this._fireMouseEvent,this))},_fireMouseEvent:function(t){this._containsPoint(t.layerPoint)&&this.fire(t.type,t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!t.shiftKey&&(1===t.which||1===t.button||t.touches)&&(o.DomEvent.stopPropagation(t),!o.Draggable._disabled&&(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),!this._moving))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(){o.DomUtil.removeClass(e.body,"leaflet-dragging"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],"function"==typeof n?s[a]=n.bind(h):s[a]=n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n); -case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'
Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),o.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)},this))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); \ No newline at end of file +case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),o.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)},this))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); diff --git a/vendor/assets/javascripts/turf-area.js b/vendor/assets/javascripts/turf-area.js index dcfd85a52..1b8193e67 100644 --- a/vendor/assets/javascripts/turf-area.js +++ b/vendor/assets/javascripts/turf-area.js @@ -89,4 +89,4 @@ function ringArea(coords) { function rad(_) { return _ * Math.PI / 180; -} \ No newline at end of file +} diff --git a/vendor/assets/javascripts/typeahead.bundle.js b/vendor/assets/javascripts/typeahead.bundle.js index 64b508ac5..7a08c6d15 100644 --- a/vendor/assets/javascripts/typeahead.bundle.js +++ b/vendor/assets/javascripts/typeahead.bundle.js @@ -2448,4 +2448,4 @@ return $el.length ? $el : null; } })(); -}); \ No newline at end of file +}); From d1e463b7ab0dd09cbb7938bb5eb7630f60063b7f Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 15:22:55 +0200 Subject: [PATCH 11/96] Files should end with a single new line --- app/assets/stylesheets/admin_index.scss | 1 - app/views/admin/procedures/_informations.html.haml | 3 --- app/views/admin/types_de_champ/_fields.html.haml | 2 -- app/views/backoffice/dossiers/_followers.html.haml | 2 -- app/views/backoffice/dossiers/_pref_list.html.haml | 1 - app/views/backoffice/dossiers/search.html.haml | 1 - app/views/dossiers/_commentaires_files.html.haml | 1 - app/views/dossiers/_infos_entreprise.html.haml | 1 - app/views/dossiers/_infos_rna.html.haml | 1 - app/views/dossiers/_invites.html.haml | 1 - app/views/gestionnaires/shared/_links.html.erb | 1 - app/views/layouts/_ie_lt_10.html.haml | 1 - .../_left_panel_backoffice_dossierscontroller_search.html.haml | 1 - .../left_panels/_left_panel_cgucontroller_index.html.haml | 1 - app/views/root/landing.html.haml | 2 -- app/views/users/carte/_map.html.haml | 1 - app/views/users/sessions/new.html.haml | 3 --- app/views/users/siret/index.html.haml | 1 - config/initializers/sidekiq.rb | 1 - config/locales/models/dossier/fr.yml | 1 - config/locales/models/individual/fr.yml | 2 -- spec/controllers/users_controller_spec.rb | 1 - spec/models/type_de_champ_spec.rb | 1 - vendor/assets/javascripts/franceconnect.js | 1 - 24 files changed, 32 deletions(-) diff --git a/app/assets/stylesheets/admin_index.scss b/app/assets/stylesheets/admin_index.scss index 3c8e9eb11..8a4d10b22 100644 --- a/app/assets/stylesheets/admin_index.scss +++ b/app/assets/stylesheets/admin_index.scss @@ -20,4 +20,3 @@ } } } - diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 976275d40..b1aef83f2 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -89,6 +89,3 @@ %p.help-block %i.fa.fa-info-circle L'archivage automatique de la procédure entrainera le passage en instruction de tous les dossiers en construction. - - - diff --git a/app/views/admin/types_de_champ/_fields.html.haml b/app/views/admin/types_de_champ/_fields.html.haml index 01c60cdd9..d69bf51a3 100644 --- a/app/views/admin/types_de_champ/_fields.html.haml +++ b/app/views/admin/types_de_champ/_fields.html.haml @@ -46,5 +46,3 @@ = link_to("", @types_de_champ_facade.delete_url(ff), method: :delete, remote: true, id: "delete_type_de_champ_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) ) %div{ style: 'background-color: rgb(204, 204, 204); height: 1px; margin: 30px auto;' } - - diff --git a/app/views/backoffice/dossiers/_followers.html.haml b/app/views/backoffice/dossiers/_followers.html.haml index 11c6c37b5..c9cd2b528 100644 --- a/app/views/backoffice/dossiers/_followers.html.haml +++ b/app/views/backoffice/dossiers/_followers.html.haml @@ -11,5 +11,3 @@ = follower.email - else Aucune personne ne suit ce dossier - - diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 15fe33893..00fe0f247 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -44,4 +44,3 @@ = columns.second[:libelle] %button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"} %i.fa.fa-plus - diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml index 1f6383b21..8700346d4 100644 --- a/app/views/backoffice/dossiers/search.html.haml +++ b/app/views/backoffice/dossiers/search.html.haml @@ -14,4 +14,3 @@ dossiers %div.body = smart_listing_render :search - diff --git a/app/views/dossiers/_commentaires_files.html.haml b/app/views/dossiers/_commentaires_files.html.haml index ab6d55a1f..86980162a 100644 --- a/app/views/dossiers/_commentaires_files.html.haml +++ b/app/views/dossiers/_commentaires_files.html.haml @@ -20,4 +20,3 @@ - else %h4.text-primary Pas de fichier dans le flux de commentaires. - diff --git a/app/views/dossiers/_infos_entreprise.html.haml b/app/views/dossiers/_infos_entreprise.html.haml index f1395b513..599c9b7bb 100644 --- a/app/views/dossiers/_infos_entreprise.html.haml +++ b/app/views/dossiers/_infos_entreprise.html.haml @@ -57,4 +57,3 @@ %div.col-xs-12.split-hr - unless @facade.entreprise.rna_information.nil? = render partial: '/dossiers/infos_rna' - diff --git a/app/views/dossiers/_infos_rna.html.haml b/app/views/dossiers/_infos_rna.html.haml index 3a582bac7..0685a2afa 100644 --- a/app/views/dossiers/_infos_rna.html.haml +++ b/app/views/dossiers/_infos_rna.html.haml @@ -20,4 +20,3 @@ %dt Capital déclaration : %dd= @facade.entreprise.rna_information.date_declaration - diff --git a/app/views/dossiers/_invites.html.haml b/app/views/dossiers/_invites.html.haml index a84af7849..88bead8bb 100644 --- a/app/views/dossiers/_invites.html.haml +++ b/app/views/dossiers/_invites.html.haml @@ -15,4 +15,3 @@ = form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do = text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' = submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: {confirm: "Envoyer l'invitation ?"} - diff --git a/app/views/gestionnaires/shared/_links.html.erb b/app/views/gestionnaires/shared/_links.html.erb index 51021059c..85b2b356f 100644 --- a/app/views/gestionnaires/shared/_links.html.erb +++ b/app/views/gestionnaires/shared/_links.html.erb @@ -1,2 +1 @@ <%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %>
- diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml index d9e8093ad..1c2ebbad5 100644 --- a/app/views/layouts/_ie_lt_10.html.haml +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -6,4 +6,3 @@ Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10 ="".html_safe - diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml index 7d73865db..b4114cab1 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_search.html.haml @@ -1,2 +1 @@ = render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index' - diff --git a/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml index 199d3cb54..dacf8761d 100644 --- a/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_cgucontroller_index.html.haml @@ -51,4 +51,3 @@ %div.procedure_list_element %div.procedure_list_element - diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index dbe92beaa..2326d629d 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -85,5 +85,3 @@ = link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg background-tps', target: '_blank'} .split-hr-left - - diff --git a/app/views/users/carte/_map.html.haml b/app/views/users/carte/_map.html.haml index 1f165dccf..db98c073b 100644 --- a/app/views/users/carte/_map.html.haml +++ b/app/views/users/carte/_map.html.haml @@ -10,4 +10,3 @@ #cadastre.list %h3.text-warning Cadastres %ul - diff --git a/app/views/users/sessions/new.html.haml b/app/views/users/sessions/new.html.haml index 7b242bab4..30847c93e 100644 --- a/app/views/users/sessions/new.html.haml +++ b/app/views/users/sessions/new.html.haml @@ -25,6 +25,3 @@ - if @user.email != DemoEmails[:gestionnaire] && @user.email != DemoEmails[:admin] = render "users/shared/links" - - - diff --git a/app/views/users/siret/index.html.haml b/app/views/users/siret/index.html.haml index 246f1cd91..a56f21779 100644 --- a/app/views/users/siret/index.html.haml +++ b/app/views/users/siret/index.html.haml @@ -1,4 +1,3 @@ .container.center#users_siret_index .row = render partial: 'pro' - diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index f5dd670d6..a61ed5e57 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -4,4 +4,3 @@ Sidekiq.configure_server do |config| schedule_file = "config/schedule.yml" Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file) end - diff --git a/config/locales/models/dossier/fr.yml b/config/locales/models/dossier/fr.yml index 9b4b80766..562adc110 100644 --- a/config/locales/models/dossier/fr.yml +++ b/config/locales/models/dossier/fr.yml @@ -30,4 +30,3 @@ fr: blank: 'doit être rempli' date_previsionnelle: blank: 'doit être remplie' - diff --git a/config/locales/models/individual/fr.yml b/config/locales/models/individual/fr.yml index 88aba8e77..60c02a37c 100644 --- a/config/locales/models/individual/fr.yml +++ b/config/locales/models/individual/fr.yml @@ -15,5 +15,3 @@ fr: blank: 'doit être rempli' birthdate: blank: 'doit être rempli' - - diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index c04cdf687..a5a7b8558 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -28,4 +28,3 @@ describe UsersController, type: :controller do end end end - diff --git a/spec/models/type_de_champ_spec.rb b/spec/models/type_de_champ_spec.rb index 9649c4078..702b8d64f 100644 --- a/spec/models/type_de_champ_spec.rb +++ b/spec/models/type_de_champ_spec.rb @@ -6,4 +6,3 @@ describe TypeDeChamp do it_should_behave_like "type_de_champ_spec" end - diff --git a/vendor/assets/javascripts/franceconnect.js b/vendor/assets/javascripts/franceconnect.js index c85f35d74..e68e19906 100644 --- a/vendor/assets/javascripts/franceconnect.js +++ b/vendor/assets/javascripts/franceconnect.js @@ -147,4 +147,3 @@ var franceConnectKit = {}; } }, false); })(this); - From a1ee82f3dd0ad2201954dcc572548787b22ec38f Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 16:04:17 +0200 Subject: [PATCH 12/96] Indent using spaces, not tabs --- config/initializers/logstasher.rb | 2 +- .../20150813095939_rename_dossier_pdfintof_piece_jointe.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/logstasher.rb b/config/initializers/logstasher.rb index 0591d543b..04877b73a 100644 --- a/config/initializers/logstasher.rb +++ b/config/initializers/logstasher.rb @@ -1,5 +1,5 @@ if LogStasher.enabled LogStasher.add_custom_fields do |fields| - fields[:type] = "tps" + fields[:type] = "tps" end end diff --git a/db/migrate/20150813095939_rename_dossier_pdfintof_piece_jointe.rb b/db/migrate/20150813095939_rename_dossier_pdfintof_piece_jointe.rb index 43bf00714..17f80be02 100644 --- a/db/migrate/20150813095939_rename_dossier_pdfintof_piece_jointe.rb +++ b/db/migrate/20150813095939_rename_dossier_pdfintof_piece_jointe.rb @@ -1,5 +1,5 @@ class RenameDossierPdfintofPieceJointe < ActiveRecord::Migration def change - rename_table :dossier_pdfs, :pieces_jointes + rename_table :dossier_pdfs, :pieces_jointes end end From cb677dfb450fbafe26dbb8a8d13868691888efcb Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 16:15:33 +0200 Subject: [PATCH 13/96] Indent using 2 spaces --- app/assets/javascripts/address_typeahead.js | 34 +-- app/assets/javascripts/admin.js | 62 ++--- .../javascripts/admin_procedures_modal.js | 128 +++++----- app/assets/javascripts/application.js | 20 +- app/assets/javascripts/archive.js | 16 +- app/assets/javascripts/bootstrap_wysihtml5.js | 6 +- app/assets/javascripts/cable.js | 4 +- app/assets/javascripts/carte/cadastre.js | 80 +++--- app/assets/javascripts/carte/carte.js | 230 +++++++++--------- app/assets/javascripts/carte/qp.js | 78 +++--- app/assets/javascripts/cgu.js | 8 +- .../javascripts/channels/notifications.js | 24 +- app/assets/javascripts/default_data_block.js | 48 ++-- app/assets/javascripts/description.js | 46 ++-- .../javascripts/dossier_commentaires_modal.js | 18 +- app/assets/javascripts/dossiers.js | 44 ++-- .../javascripts/dossiers_list_filter.js | 50 ++-- app/assets/javascripts/franceconnect_kit.js | 2 +- .../javascripts/gestionnaire_dossier_modal.js | 18 +- app/assets/javascripts/pref_list_dossier.js | 42 ++-- app/assets/javascripts/procedure.js | 36 +-- app/assets/javascripts/search.js | 76 +++--- app/assets/javascripts/start.js | 2 +- 23 files changed, 536 insertions(+), 536 deletions(-) diff --git a/app/assets/javascripts/address_typeahead.js b/app/assets/javascripts/address_typeahead.js index bee019284..26925f476 100644 --- a/app/assets/javascripts/address_typeahead.js +++ b/app/assets/javascripts/address_typeahead.js @@ -1,22 +1,22 @@ function address_type_init() { - display = 'label'; + display = 'label'; - var bloodhound = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), - queryTokenizer: Bloodhound.tokenizers.whitespace, + var bloodhound = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), + queryTokenizer: Bloodhound.tokenizers.whitespace, - remote: { - url: '/ban/search?request=%QUERY', - wildcard: '%QUERY' - } - }); - bloodhound.initialize(); + remote: { + url: '/ban/search?request=%QUERY', + wildcard: '%QUERY' + } + }); + bloodhound.initialize(); - $("input[type='address']").typeahead({ - minLength: 1 - }, { - display: display, - source: bloodhound, - limit: 5 - }); + $("input[type='address']").typeahead({ + minLength: 1 + }, { + display: display, + source: bloodhound, + limit: 5 + }); } diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js index 8d6abc079..435a42006 100644 --- a/app/assets/javascripts/admin.js +++ b/app/assets/javascripts/admin.js @@ -1,46 +1,46 @@ $(document).on('turbolinks:load', init_admin); function init_admin(){ - destroy_action(); - on_change_type_de_champ_select(); + destroy_action(); + on_change_type_de_champ_select(); } function destroy_action(){ - $(".delete").on('click', function(){ - $(this).hide(); - $(this).closest('td').find(".confirm").show(); - }); + $(".delete").on('click', function(){ + $(this).hide(); + $(this).closest('td').find(".confirm").show(); + }); - $(".cancel").on('click', function(){ - $(this).closest('td').find(".delete").show(); - $(this).closest('td').find(".confirm").hide(); - }); + $(".cancel").on('click', function(){ + $(this).closest('td').find(".delete").show(); + $(this).closest('td').find(".confirm").hide(); + }); - $("#liste_gestionnaire #libelle").on('click', function(){ - setTimeout(destroy_action, 500); - }); + $("#liste_gestionnaire #libelle").on('click', function(){ + setTimeout(destroy_action, 500); + }); } function on_change_type_de_champ_select (){ - $("select.form-control.type_champ").on('change', function(e){ + $("select.form-control.type_champ").on('change', function(e){ - parent = $(this).parent().parent(); + parent = $(this).parent().parent(); - parent.removeClass('header_section'); - parent.children(".drop_down_list").removeClass('show_inline'); - $('.mandatory', parent).show(); + parent.removeClass('header_section'); + parent.children(".drop_down_list").removeClass('show_inline'); + $('.mandatory', parent).show(); - switch(this.value){ - case 'header_section': - parent.addClass('header_section'); - break; - case 'drop_down_list': - case 'multiple_drop_down_list': - parent.children(".drop_down_list").addClass('show_inline'); - break; - case 'explication': - $('.mandatory', parent).hide(); - break; - } - }); + switch(this.value){ + case 'header_section': + parent.addClass('header_section'); + break; + case 'drop_down_list': + case 'multiple_drop_down_list': + parent.children(".drop_down_list").addClass('show_inline'); + break; + case 'explication': + $('.mandatory', parent).hide(); + break; + } + }); } diff --git a/app/assets/javascripts/admin_procedures_modal.js b/app/assets/javascripts/admin_procedures_modal.js index 3ca435a23..b5059bf29 100644 --- a/app/assets/javascripts/admin_procedures_modal.js +++ b/app/assets/javascripts/admin_procedures_modal.js @@ -1,97 +1,97 @@ $(document).on('turbolinks:load', init_path_modal); function init_path_modal() { - path_modal_action(); - path_validation_action(); - path_type_init(); - path_validation($("input[id='procedure_path']")); + path_modal_action(); + path_validation_action(); + path_type_init(); + path_validation($("input[id='procedure_path']")); } function path_modal_action() { - $('#publishModal').on('show.bs.modal', function (event) { - $("#publishModal .modal-body .table .tr_content").hide(); + $('#publishModal').on('show.bs.modal', function (event) { + $("#publishModal .modal-body .table .tr_content").hide(); - var button = $(event.relatedTarget) // Button that triggered the modal - var modal_title = button.data('modal_title'); // Extract info from data-* attributes - var modal_index = button.data('modal_index'); // Extract info from data-* attributes + var button = $(event.relatedTarget) // Button that triggered the modal + var modal_title = button.data('modal_title'); // Extract info from data-* attributes + var modal_index = button.data('modal_index'); // Extract info from data-* attributes - var modal = $(this) - modal.find('#publishModal_title').html(modal_title); - $("#publishModal .modal-body .table #"+modal_index).show(); - }) + var modal = $(this) + modal.find('#publishModal_title').html(modal_title); + $("#publishModal .modal-body .table #"+modal_index).show(); + }) } function path_validation_action() { - $("input[id='procedure_path']").keyup(function (key) { - if (key.keyCode != 13) - path_validation(this); - }); + $("input[id='procedure_path']").keyup(function (key) { + if (key.keyCode != 13) + path_validation(this); + }); } function togglePathMessage(valid, mine) { - $('#path_messages .message').hide(); + $('#path_messages .message').hide(); - if (valid === true && mine === true) { - $('#path_is_mine').show(); - } else if (valid === true && mine === false) { - $('#path_is_not_mine').show(); - } else if (valid === false && mine === null) { - $('#path_is_invalid').show(); - } + if (valid === true && mine === true) { + $('#path_is_mine').show(); + } else if (valid === true && mine === false) { + $('#path_is_not_mine').show(); + } else if (valid === false && mine === null) { + $('#path_is_invalid').show(); + } - if ((valid && mine === null) || mine === true) - $('#publishModal #publish').removeAttr('disabled') - else - $('#publishModal #publish').attr('disabled', 'disabled') + if ((valid && mine === null) || mine === true) + $('#publishModal #publish').removeAttr('disabled') + else + $('#publishModal #publish').attr('disabled', 'disabled') } function path_validation(el) { - var valid = validatePath($(el).val()); - toggleErrorClass(el, valid); - togglePathMessage(valid, null); + var valid = validatePath($(el).val()); + toggleErrorClass(el, valid); + togglePathMessage(valid, null); } function validatePath(path) { - var re = /^[a-z0-9_]{3,30}$/; - return re.test(path); + var re = /^[a-z0-9_]{3,30}$/; + return re.test(path); } function path_type_init() { - display = 'label'; + display = 'label'; - var bloodhound = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), - queryTokenizer: Bloodhound.tokenizers.whitespace, + var bloodhound = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), + queryTokenizer: Bloodhound.tokenizers.whitespace, - remote: { - url: '/admin/procedures/path_list?request=%QUERY', - wildcard: '%QUERY' - } - }); - bloodhound.initialize(); + remote: { + url: '/admin/procedures/path_list?request=%QUERY', + wildcard: '%QUERY' + } + }); + bloodhound.initialize(); - $("#procedure_path").typeahead({ - minLength: 1 - }, { - display: display, - source: bloodhound, - templates: { - empty: 'Ce lien est disponible !', - suggestion: Handlebars.compile("

{{label}}
") - }, - limit: 5 - }); + $("#procedure_path").typeahead({ + minLength: 1 + }, { + display: display, + source: bloodhound, + templates: { + empty: 'Ce lien est disponible !', + suggestion: Handlebars.compile("
{{label}}
") + }, + limit: 5 + }); - $('#procedure_path').bind('typeahead:select', function(ev, suggestion) { - togglePathMessage(true, suggestion['mine']); - }); + $('#procedure_path').bind('typeahead:select', function(ev, suggestion) { + togglePathMessage(true, suggestion['mine']); + }); } function transfer_errors_message(show) { - if(show){ - $("#not_found_admin").slideDown(100) - } - else { - $("#not_found_admin").slideUp(100) - } + if(show){ + $("#not_found_admin").slideDown(100) + } + else { + $("#not_found_admin").slideUp(100) + } } diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 41257fc29..5f6f5aebd 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -37,20 +37,20 @@ $(document).on('turbolinks:load', application_init); function application_init(){ - tooltip_init(); - scroll_to(); + tooltip_init(); + scroll_to(); } function tooltip_init() { - $('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }}); - $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); + $('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }}); + $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); } function scroll_to() { - $('.js-scrollTo').on('click', function () { // Au clic sur un élément - var page = $(this).attr('cible'); // Page cible - var speed = 600; // Durée de l'animation (en ms) - $('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go - return false; - }); + $('.js-scrollTo').on('click', function () { // Au clic sur un élément + var page = $(this).attr('cible'); // Page cible + var speed = 600; // Durée de l'animation (en ms) + $('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go + return false; + }); } diff --git a/app/assets/javascripts/archive.js b/app/assets/javascripts/archive.js index f44b3158f..6f42481a7 100644 --- a/app/assets/javascripts/archive.js +++ b/app/assets/javascripts/archive.js @@ -1,13 +1,13 @@ $(document).on('turbolinks:load', buttons_archived); function buttons_archived(){ - $("button#archive").on('click', function(){ - $("button#archive").hide(); - $("#confirm").show(); - }); + $("button#archive").on('click', function(){ + $("button#archive").hide(); + $("#confirm").show(); + }); - $("#confirm #cancel").on('click', function(){ - $("button#archive").show(); - $("#confirm").hide(); - }); + $("#confirm #cancel").on('click', function(){ + $("button#archive").show(); + $("#confirm").hide(); + }); } diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index fa99d2a92..a100651b3 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -1,7 +1,7 @@ $(document).on('turbolinks:load', wysihtml5_active); function wysihtml5_active (){ - $('.wysihtml5').each(function(i, elem) { - $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": false }, "locale": "fr-FR" }); - }); + $('.wysihtml5').each(function(i, elem) { + $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": false }, "locale": "fr-FR" }); + }); } diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js index daa54bbb2..32eb6c12f 100644 --- a/app/assets/javascripts/cable.js +++ b/app/assets/javascripts/cable.js @@ -6,8 +6,8 @@ //= require_tree ./channels //(function() { -// this.App || (this.App = {}); +// this.App || (this.App = {}); // -// App.cable = ActionCable.createConsumer(); +// App.cable = ActionCable.createConsumer(); // //}).call(this); diff --git a/app/assets/javascripts/carte/cadastre.js b/app/assets/javascripts/carte/cadastre.js index a97f5e2fb..ea9de02a8 100644 --- a/app/assets/javascripts/carte/cadastre.js +++ b/app/assets/javascripts/carte/cadastre.js @@ -1,60 +1,60 @@ function cadastre_active() { - return $("#map.cadastre").length > 0 + return $("#map.cadastre").length > 0 } function get_cadastre(coordinates) { - if (!cadastre_active()) - return; + if (!cadastre_active()) + return; - var cadastre; + var cadastre; - $.ajax({ - method: 'post', - url: '/users/dossiers/' + dossier_id + '/carte/cadastre', - data: {coordinates: JSON.stringify(coordinates)}, - dataType: 'json', - async: false - }).done(function (data) { - cadastre = data - }); + $.ajax({ + method: 'post', + url: '/users/dossiers/' + dossier_id + '/carte/cadastre', + data: {coordinates: JSON.stringify(coordinates)}, + dataType: 'json', + async: false + }).done(function (data) { + cadastre = data + }); - return cadastre['cadastres']; + return cadastre['cadastres']; } function display_cadastre(cadastre_array) { - if (!cadastre_active()) - return; + if (!cadastre_active()) + return; - $("#cadastre.list ul").html(''); - new_cadastreLayer(); + $("#cadastre.list ul").html(''); + new_cadastreLayer(); - if (cadastre_array.length == 1 && cadastre_array[0]['zoom_error']) - $("#cadastre.list ul").html('
  • Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.
  • '); + if (cadastre_array.length == 1 && cadastre_array[0]['zoom_error']) + $("#cadastre.list ul").html('
  • Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.
  • '); - else if (cadastre_array.length > 0) { - cadastre_array.forEach(function (cadastre) { - $("#cadastre.list ul").append('
  • Parcelle n°' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '
  • '); + else if (cadastre_array.length > 0) { + cadastre_array.forEach(function (cadastre) { + $("#cadastre.list ul").append('
  • Parcelle n°' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '
  • '); - cadastreItems.addData(cadastre.geometry); - }); + cadastreItems.addData(cadastre.geometry); + }); - cadastreItems.setStyle({ - fillColor: '#8a6d3b', - weight: 2, - opacity: 0.3, - color: 'white', - dashArray: '3', - fillOpacity: 0.7 - }) - } - else - $("#cadastre.list ul").html('
  • AUCUN
  • '); + cadastreItems.setStyle({ + fillColor: '#8a6d3b', + weight: 2, + opacity: 0.3, + color: 'white', + dashArray: '3', + fillOpacity: 0.7 + }) + } + else + $("#cadastre.list ul").html('
  • AUCUN
  • '); } function new_cadastreLayer() { - if (typeof cadastreItems != 'undefined') - map.removeLayer(cadastreItems); + if (typeof cadastreItems != 'undefined') + map.removeLayer(cadastreItems); - cadastreItems = new L.GeoJSON(); - cadastreItems.addTo(map); + cadastreItems = new L.GeoJSON(); + cadastreItems.addTo(map); } diff --git a/app/assets/javascripts/carte/carte.js b/app/assets/javascripts/carte/carte.js index af6ac5cf4..6966e3791 100644 --- a/app/assets/javascripts/carte/carte.js +++ b/app/assets/javascripts/carte/carte.js @@ -2,162 +2,162 @@ var LON = '2.428462'; var LAT = '46.538192'; function initCarto() { - OSM = L.tileLayer("http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", { - attribution: '© OpenStreetMap' + OSM = L.tileLayer("http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", { + attribution: '© OpenStreetMap' + }); + + position = get_position() || default_gestionnaire_position(); + + map = L.map("map", { + center: new L.LatLng(position.lat, position.lon), + zoom: position.zoom, + layers: [OSM], + scrollWheelZoom: false + }); + + icon = L.icon({ + iconUrl: '/assets/marker-icon.png', + //shadowUrl: 'leaf-shadow.png', + + iconSize: [34.48, 40], // size of the icon + //shadowSize: [50, 64], // size of the shadow + iconAnchor: [20, 20] // point of the icon which will correspond to marker's location + //shadowAnchor: [4, 62], // the same for the shadow + //popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor + }); + + if (qp_active()) + display_qp(JSON.parse($("#quartier_prioritaires").val())); + + if (cadastre_active()) + display_cadastre(JSON.parse($("#cadastres").val())); + + freeDraw = new L.FreeDraw(); + freeDraw.options.setSmoothFactor(4); + freeDraw.options.simplifyPolygon = false; + + map.addLayer(freeDraw); + + if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') { + map.setZoom(18); + + $.each($.parseJSON($("#json_latlngs").val()), function (i, val) { + freeDraw.createPolygon(val); }); - position = get_position() || default_gestionnaire_position(); + map.fitBounds(freeDraw.polygons[0].getBounds()); + } + else if (position.lat == LAT && position.lon == LON) + map.setView(new L.LatLng(position.lat, position.lon), position.zoom); - map = L.map("map", { - center: new L.LatLng(position.lat, position.lon), - zoom: position.zoom, - layers: [OSM], - scrollWheelZoom: false - }); - - icon = L.icon({ - iconUrl: '/assets/marker-icon.png', - //shadowUrl: 'leaf-shadow.png', - - iconSize: [34.48, 40], // size of the icon - //shadowSize: [50, 64], // size of the shadow - iconAnchor: [20, 20] // point of the icon which will correspond to marker's location - //shadowAnchor: [4, 62], // the same for the shadow - //popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor - }); - - if (qp_active()) - display_qp(JSON.parse($("#quartier_prioritaires").val())); - - if (cadastre_active()) - display_cadastre(JSON.parse($("#cadastres").val())); - - freeDraw = new L.FreeDraw(); - freeDraw.options.setSmoothFactor(4); - freeDraw.options.simplifyPolygon = false; - - map.addLayer(freeDraw); - - if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') { - map.setZoom(18); - - $.each($.parseJSON($("#json_latlngs").val()), function (i, val) { - freeDraw.createPolygon(val); - }); - - map.fitBounds(freeDraw.polygons[0].getBounds()); - } - else if (position.lat == LAT && position.lon == LON) - map.setView(new L.LatLng(position.lat, position.lon), position.zoom); - - add_event_freeDraw(); - add_event_search_address(); + add_event_freeDraw(); + add_event_search_address(); } function default_gestionnaire_position() { - return {lon: LON, lat: LAT, zoom: 5} + return {lon: LON, lat: LAT, zoom: 5} } function get_external_data(latLngs) { - if (qp_active()) - display_qp(get_qp(latLngs)); + if (qp_active()) + display_qp(get_qp(latLngs)); - if (cadastre_active()) { - polygons = {"type": "FeatureCollection", "features": []}; + if (cadastre_active()) { + polygons = {"type": "FeatureCollection", "features": []}; - for (i = 0; i < latLngs.length; i++) - polygons.features.push(feature_polygon_latLngs(latLngs[i])) + for (i = 0; i < latLngs.length; i++) + polygons.features.push(feature_polygon_latLngs(latLngs[i])) - cadastre_list = [{zoom_error: true}]; + cadastre_list = [{zoom_error: true}]; - if (turf_area(polygons) < 300000) - cadastre_list = get_cadastre(latLngs); + if (turf_area(polygons) < 300000) + cadastre_list = get_cadastre(latLngs); - display_cadastre(cadastre_list); - } + display_cadastre(cadastre_list); + } } function feature_polygon_latLngs(coordinates) { - return ({ - "type": "Feature", - "properties": {}, - "geometry": { - "type": "Polygon", - "coordinates": [ - JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs'] - ] - } - }) + return ({ + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Polygon", + "coordinates": [ + JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs'] + ] + } + }) } function add_event_freeDraw() { - freeDraw.on('markers', function (e) { - $("#json_latlngs").val(JSON.stringify(e.latLngs)); + freeDraw.on('markers', function (e) { + $("#json_latlngs").val(JSON.stringify(e.latLngs)); - add_event_edit(); + add_event_edit(); - get_external_data(e.latLngs); - }); + get_external_data(e.latLngs); + }); - $("#map").on('click', function(){ - freeDraw.setMode(L.FreeDraw.MODES.VIEW); - }); + $("#map").on('click', function(){ + freeDraw.setMode(L.FreeDraw.MODES.VIEW); + }); - $("#new").on('click', function (e) { - freeDraw.setMode(L.FreeDraw.MODES.CREATE); - }); + $("#new").on('click', function (e) { + freeDraw.setMode(L.FreeDraw.MODES.CREATE); + }); - $("#delete").on('click', function (e) { - freeDraw.setMode(L.FreeDraw.MODES.DELETE); - }); + $("#delete").on('click', function (e) { + freeDraw.setMode(L.FreeDraw.MODES.DELETE); + }); } function add_event_edit (){ - $(".leaflet-container g path").on('click', function (e) { - setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50); - }); + $(".leaflet-container g path").on('click', function (e) { + setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50); + }); } function get_position() { - var position; + var position; - $.ajax({ - url: '/users/dossiers/' + dossier_id + '/carte/position', - dataType: 'json', - async: false - }).done(function (data) { - position = data - }); + $.ajax({ + url: '/users/dossiers/' + dossier_id + '/carte/position', + dataType: 'json', + async: false + }).done(function (data) { + position = data + }); - return position; + return position; } function get_address_point(request) { - $.ajax({ - url: '/ban/address_point?request=' + request, - dataType: 'json', - async: true - }).done(function (data) { - if (data.lat != null) { - map.setView(new L.LatLng(data.lat, data.lon), data.zoom); - //L.marker([data.lat, data.lon], {icon: icon}).addTo(map); - } - }); + $.ajax({ + url: '/ban/address_point?request=' + request, + dataType: 'json', + async: true + }).done(function (data) { + if (data.lat != null) { + map.setView(new L.LatLng(data.lat, data.lon), data.zoom); + //L.marker([data.lat, data.lon], {icon: icon}).addTo(map); + } + }); } function jsObject_to_array(qp_list) { - return Object.keys(qp_list).map(function (v) { - return qp_list[v]; - }); + return Object.keys(qp_list).map(function (v) { + return qp_list[v]; + }); } function add_event_search_address() { - $("#search_by_address input[type='address']").bind('typeahead:select', function (ev, seggestion) { - get_address_point(seggestion['label']); - }); + $("#search_by_address input[type='address']").bind('typeahead:select', function (ev, seggestion) { + get_address_point(seggestion['label']); + }); - $("#search_by_address input[type='address']").keypress(function (e) { - if (e.keyCode == 13) - get_address_point($(this).val()); - }); + $("#search_by_address input[type='address']").keypress(function (e) { + if (e.keyCode == 13) + get_address_point($(this).val()); + }); } diff --git a/app/assets/javascripts/carte/qp.js b/app/assets/javascripts/carte/qp.js index 3ff7c0e1e..0a9ad576c 100644 --- a/app/assets/javascripts/carte/qp.js +++ b/app/assets/javascripts/carte/qp.js @@ -1,60 +1,60 @@ function qp_active() { - return $("#map.qp").length > 0 + return $("#map.qp").length > 0 } function get_qp(coordinates) { - if (!qp_active()) - return; + if (!qp_active()) + return; - var qp; + var qp; - $.ajax({ - method: 'post', - url: '/users/dossiers/' + dossier_id + '/carte/qp', - data: {coordinates: JSON.stringify(coordinates)}, - dataType: 'json', - async: false - }).done(function (data) { - qp = data - }); + $.ajax({ + method: 'post', + url: '/users/dossiers/' + dossier_id + '/carte/qp', + data: {coordinates: JSON.stringify(coordinates)}, + dataType: 'json', + async: false + }).done(function (data) { + qp = data + }); - return qp['quartier_prioritaires']; + return qp['quartier_prioritaires']; } function display_qp(qp_list) { - if (!qp_active()) - return; + if (!qp_active()) + return; - qp_array = jsObject_to_array(qp_list); + qp_array = jsObject_to_array(qp_list); - $("#qp.list ul").html(''); + $("#qp.list ul").html(''); - new_qpLayer(); + new_qpLayer(); - if (qp_array.length > 0) { - qp_array.forEach(function (qp) { - $("#qp.list ul").append('
  • ' + qp.commune + ' : ' + qp.nom + '
  • '); + if (qp_array.length > 0) { + qp_array.forEach(function (qp) { + $("#qp.list ul").append('
  • ' + qp.commune + ' : ' + qp.nom + '
  • '); - qpItems.addData(qp.geometry); - }); + qpItems.addData(qp.geometry); + }); - qpItems.setStyle({ - fillColor: '#31708f', - weight: 2, - opacity: 0.3, - color: 'white', - dashArray: '3', - fillOpacity: 0.7 - }) - } - else - $("#qp.list ul").html('
  • AUCUN
  • '); + qpItems.setStyle({ + fillColor: '#31708f', + weight: 2, + opacity: 0.3, + color: 'white', + dashArray: '3', + fillOpacity: 0.7 + }) + } + else + $("#qp.list ul").html('
  • AUCUN
  • '); } function new_qpLayer() { - if (typeof qpItems != 'undefined') - map.removeLayer(qpItems); + if (typeof qpItems != 'undefined') + map.removeLayer(qpItems); - qpItems = new L.GeoJSON(); - qpItems.addTo(map); + qpItems = new L.GeoJSON(); + qpItems.addTo(map); } diff --git a/app/assets/javascripts/cgu.js b/app/assets/javascripts/cgu.js index fe944fc04..fdee1cf96 100644 --- a/app/assets/javascripts/cgu.js +++ b/app/assets/javascripts/cgu.js @@ -1,8 +1,8 @@ $(document).on('turbolinks:load', buttons_anchor); function buttons_anchor(){ - $("#cgu_menu_block").on('click', 'a', function(){ - event.preventDefault(); - $('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500); - }); + $("#cgu_menu_block").on('click', 'a', function(){ + event.preventDefault(); + $('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500); + }); } diff --git a/app/assets/javascripts/channels/notifications.js b/app/assets/javascripts/channels/notifications.js index fc587dd1a..7a76c26b6 100644 --- a/app/assets/javascripts/channels/notifications.js +++ b/app/assets/javascripts/channels/notifications.js @@ -1,23 +1,23 @@ //App.messages = App.cable.subscriptions.create('NotificationsChannel', { -// received: function (data) { -// if (window.location.href.indexOf('backoffice') !== -1) { -// $("#notification_alert").html(data['message']); +// received: function (data) { +// if (window.location.href.indexOf('backoffice') !== -1) { +// $("#notification_alert").html(data['message']); // -// slideIn_notification_alert(); -// } +// slideIn_notification_alert(); // } +// } //}); function slideIn_notification_alert (){ - $("#notification_alert").animate({ - right: '20px' - }, 250); + $("#notification_alert").animate({ + right: '20px' + }, 250); - setTimeout(slideOut_notification_alert, 3500); + setTimeout(slideOut_notification_alert, 3500); } function slideOut_notification_alert (){ - $("#notification_alert").animate({ - right: '-250px' - }, 200); + $("#notification_alert").animate({ + right: '-250px' + }, 200); } diff --git a/app/assets/javascripts/default_data_block.js b/app/assets/javascripts/default_data_block.js index 4e422f491..107681782 100644 --- a/app/assets/javascripts/default_data_block.js +++ b/app/assets/javascripts/default_data_block.js @@ -1,33 +1,33 @@ $(document).on('turbolinks:load', init_default_data_block); function init_default_data_block() { - $('.default_data_block #dossier .body').toggle(); - $('.default_data_block #dossier .carret-right').toggle(); - $('.default_data_block #dossier .carret-down').toggle(); + $('.default_data_block #dossier .body').toggle(); + $('.default_data_block #dossier .carret-right').toggle(); + $('.default_data_block #dossier .carret-down').toggle(); - $('.default_data_block .title').click(function () { - toggle_default_data_bloc(this, 400); - }); + $('.default_data_block .title').click(function () { + toggle_default_data_bloc(this, 400); + }); - $('.new-action').click(function () { - var messages_block = $(this).parents().closest('.default_data_block').find('.title') - toggle_default_data_bloc(messages_block, 400); - }); + $('.new-action').click(function () { + var messages_block = $(this).parents().closest('.default_data_block').find('.title') + toggle_default_data_bloc(messages_block, 400); + }); - $('.default_data_block.default_visible').each(function() { - toggle_default_data_bloc($(this).find('.title'), 0); - }); + $('.default_data_block.default_visible').each(function() { + toggle_default_data_bloc($(this).find('.title'), 0); + }); - function toggle_default_data_bloc(element, duration) { - var block = $(element).parents('.show-block'); - if (block.attr('id') == 'messages') { - block.children('.last-commentaire').toggle(); - $(".commentaires").animate({ scrollTop: $(this).height() }, "slow"); - } - - block.children('.body').slideToggle(duration); - - block.find('.carret-right').toggle(); - block.find('.carret-down').toggle(); + function toggle_default_data_bloc(element, duration) { + var block = $(element).parents('.show-block'); + if (block.attr('id') == 'messages') { + block.children('.last-commentaire').toggle(); + $(".commentaires").animate({ scrollTop: $(this).height() }, "slow"); } + + block.children('.body').slideToggle(duration); + + block.find('.carret-right').toggle(); + block.find('.carret-down').toggle(); + } } diff --git a/app/assets/javascripts/description.js b/app/assets/javascripts/description.js index 0776c4710..40d22ec69 100644 --- a/app/assets/javascripts/description.js +++ b/app/assets/javascripts/description.js @@ -2,46 +2,46 @@ $(document).on('turbolinks:load', action_type_de_champs); function action_type_de_champs() { - $("input[type='email']").on('change', function () { - toggleErrorClass(this, validateEmail($(this).val())); - }); + $("input[type='email']").on('change', function () { + toggleErrorClass(this, validateEmail($(this).val())); + }); - $("input[type='number']").on('change', function () { - toggleErrorClass(this, validateNumber($(this).val())); - }); + $("input[type='number']").on('change', function () { + toggleErrorClass(this, validateNumber($(this).val())); + }); - $("input[type='phone']").on('change', function () { - val = $(this).val(); - val = val.replace(/[ ]/g, ''); + $("input[type='phone']").on('change', function () { + val = $(this).val(); + val = val.replace(/[ ]/g, ''); - toggleErrorClass(this, validatePhone(val)); - }); + toggleErrorClass(this, validatePhone(val)); + }); - address_type_init(); + address_type_init(); } function toggleErrorClass(node, boolean) { - if (boolean) - $(node).removeClass('input-error'); - else - $(node).addClass('input-error'); + if (boolean) + $(node).removeClass('input-error'); + else + $(node).addClass('input-error'); } function validatePhone(phone) { - var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/; - return validateInput(phone, re) + var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/; + return validateInput(phone, re) } function validateEmail(email) { - var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return validateInput(email, re) + var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return validateInput(email, re) } function validateNumber(number) { - var re = /^[0-9]+$/; - return validateInput(number, re) + var re = /^[0-9]+$/; + return validateInput(number, re) } function validateInput(input, regex) { - return regex.test(input); + return regex.test(input); } diff --git a/app/assets/javascripts/dossier_commentaires_modal.js b/app/assets/javascripts/dossier_commentaires_modal.js index b0218aaef..99ebd382a 100644 --- a/app/assets/javascripts/dossier_commentaires_modal.js +++ b/app/assets/javascripts/dossier_commentaires_modal.js @@ -1,15 +1,15 @@ $(document).on('turbolinks:load', init_modal_commentaire); function init_modal_commentaire() { - var modal = $("#modalCommentairesDossierParChamp"); - var body = modal.find(".modal-body"); - var originalBody = body.html(); + var modal = $("#modalCommentairesDossierParChamp"); + var body = modal.find(".modal-body"); + var originalBody = body.html(); - modal.on("show.bs.modal", function (e) { - body.load(e.relatedTarget.getAttribute("data-href")); - }); + modal.on("show.bs.modal", function (e) { + body.load(e.relatedTarget.getAttribute("data-href")); + }); - $("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) { - body.html(originalBody); - }); + $("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) { + body.html(originalBody); + }); } diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index 2902934e8..4e0d1836c 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -17,43 +17,43 @@ function pannel_switch() { } function the_terms() { - var the_terms = $("#dossier_autorisation_donnees"); + var the_terms = $("#dossier_autorisation_donnees"); - if (the_terms.size() == 0) - return; + if (the_terms.size() == 0) + return; + check_value(the_terms); + + the_terms.click(function () { check_value(the_terms); + }); - the_terms.click(function () { - check_value(the_terms); - }); - - function check_value(the_terms) { - if (the_terms.is(":checked")) { - $("#etape_suivante").removeAttr("disabled"); - } else { - $("#etape_suivante").attr("disabled", "disabled"); - } + function check_value(the_terms) { + if (the_terms.is(":checked")) { + $("#etape_suivante").removeAttr("disabled"); + } else { + $("#etape_suivante").attr("disabled", "disabled"); } + } } function error_form_siret(invalid_siret) { - setTimeout(function () { - $("input[type='submit']").val('Erreur SIRET'); - }, 10); + setTimeout(function () { + $("input[type='submit']").val('Erreur SIRET'); + }, 10); - $("input[type='submit']").removeClass('btn-success').addClass('btn-danger'); + $("input[type='submit']").removeClass('btn-success').addClass('btn-danger'); - $("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret); + $("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret); } function reset_form_siret() { - $("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider'); - $("#dossier_siret").removeClass('input-error'); + $("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider'); + $("#dossier_siret").removeClass('input-error'); } function toggle_etape_1() { - $('.row.etape.etape_1 .etapes_menu #logos').toggle(100); - $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); + $('.row.etape.etape_1 .etapes_menu #logos').toggle(100); + $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); } diff --git a/app/assets/javascripts/dossiers_list_filter.js b/app/assets/javascripts/dossiers_list_filter.js index 1fbe470d1..7627d7ad6 100644 --- a/app/assets/javascripts/dossiers_list_filter.js +++ b/app/assets/javascripts/dossiers_list_filter.js @@ -1,44 +1,44 @@ $(document).on('turbolinks:load', filters_init); function filters_init() { - $('html').click(function(event) { - var visible_filter = $('.filter_framed:visible') - if(visible_filter.length) { - if (!$(event.target).closest('.filter_framed').is(":visible")) { - visible_filter.hide(); - } - } - }); + $('html').click(function(event) { + var visible_filter = $('.filter_framed:visible') + if(visible_filter.length) { + if (!$(event.target).closest('.filter_framed').is(":visible")) { + visible_filter.hide(); + } + } + }); - $(".filter").on('click', function (event) { - filter_framed_show(event); - filter_framed_close_all_excepted(framed_id(event)); - event.stopPropagation(); - }); + $(".filter").on('click', function (event) { + filter_framed_show(event); + filter_framed_close_all_excepted(framed_id(event)); + event.stopPropagation(); + }); - $(".erase-filter").on('click', function (event) { - $(this).parent().find(".filter_input").val(""); - }); + $(".erase-filter").on('click', function (event) { + $(this).parent().find(".filter_input").val(""); + }); } function filter_framed_close_all_excepted(id) { - $(".filter_framed:not("+id+")").hide(); + $(".filter_framed:not("+id+")").hide(); - $(id).toggle(); + $(id).toggle(); } function framed_id(event) { - return "#framed_" + event.target.id + return "#framed_" + event.target.id } function filter_framed_show(event) { - dom_object = $(framed_id(event)); + dom_object = $(framed_id(event)); - var offset = $('#main-container').offset(); + var offset = $('#main-container').offset(); - var y = event.pageY - offset.top; - var x = event.pageX - offset.left; + var y = event.pageY - offset.top; + var x = event.pageX - offset.left; - dom_object.css('top', (y + 7) + 'px'); - dom_object.css('left', (x + 7) + 'px'); + dom_object.css('top', (y + 7) + 'px'); + dom_object.css('left', (x + 7) + 'px'); } diff --git a/app/assets/javascripts/franceconnect_kit.js b/app/assets/javascripts/franceconnect_kit.js index 0432ecf74..1d4565c86 100644 --- a/app/assets/javascripts/franceconnect_kit.js +++ b/app/assets/javascripts/franceconnect_kit.js @@ -1,5 +1,5 @@ $(document).on('turbolinks:load', franceconnect_kit); function franceconnect_kit() { - franceConnectKit.init() + franceConnectKit.init() } diff --git a/app/assets/javascripts/gestionnaire_dossier_modal.js b/app/assets/javascripts/gestionnaire_dossier_modal.js index 807eec9fd..bb02ca501 100644 --- a/app/assets/javascripts/gestionnaire_dossier_modal.js +++ b/app/assets/javascripts/gestionnaire_dossier_modal.js @@ -1,15 +1,15 @@ $(document).on('turbolinks:load', modal_action); function modal_action() { - $('#PJmodal').on('show.bs.modal', function (event) { - $("#PJmodal .modal-body .table .tr_content").hide(); + $('#PJmodal').on('show.bs.modal', function (event) { + $("#PJmodal .modal-body .table .tr_content").hide(); - var button = $(event.relatedTarget) // Button that triggered the modal - var modal_title = button.data('modal_title'); // Extract info from data-* attributes - var modal_index = button.data('modal_index'); // Extract info from data-* attributes + var button = $(event.relatedTarget) // Button that triggered the modal + var modal_title = button.data('modal_title'); // Extract info from data-* attributes + var modal_index = button.data('modal_index'); // Extract info from data-* attributes - var modal = $(this) - modal.find('#PJmodal_title').html(modal_title); - $("#PJmodal .modal-body .table #"+modal_index).show(); - }) + var modal = $(this) + modal.find('#PJmodal_title').html(modal_title); + $("#PJmodal .modal-body .table #"+modal_index).show(); + }) } diff --git a/app/assets/javascripts/pref_list_dossier.js b/app/assets/javascripts/pref_list_dossier.js index ffcd7b326..21e7966df 100644 --- a/app/assets/javascripts/pref_list_dossier.js +++ b/app/assets/javascripts/pref_list_dossier.js @@ -1,32 +1,32 @@ $(document).on('turbolinks:load', pref_list_dossier_actions); function pref_list_dossier_actions() { - pref_list_dossier_open_action(); - pref_list_dossier_close_action(); + pref_list_dossier_open_action(); + pref_list_dossier_close_action(); } function pref_list_dossier_open_action() { - $("#pref_list_dossier_open_action").on('click', function () { - $("#pref_list_menu").css('display', 'block'); - $("#pref_list_menu").css('visibility', 'visible'); + $("#pref_list_dossier_open_action").on('click', function () { + $("#pref_list_menu").css('display', 'block'); + $("#pref_list_menu").css('visibility', 'visible'); - $("#pref_list_menu").animate({ - right: 0 - }, 250); - }); + $("#pref_list_menu").animate({ + right: 0 + }, 250); + }); } function pref_list_dossier_close_action() { - $("#pref_list_dossier_close_action").on('click', function () { - $("#pref_list_menu").animate({ - right: parseInt($("#pref_list_menu").css('width'), 10)*(-1)+'px' - },{ - duration: 250, - complete: function () { - $("#pref_list_menu").css('display', 'none'); - $("#pref_list_menu").css('visibility', 'hidden'); - } - } - ) - }); + $("#pref_list_dossier_close_action").on('click', function () { + $("#pref_list_menu").animate({ + right: parseInt($("#pref_list_menu").css('width'), 10)*(-1)+'px' + },{ + duration: 250, + complete: function () { + $("#pref_list_menu").css('display', 'none'); + $("#pref_list_menu").css('visibility', 'hidden'); + } + } + ) + }); } diff --git a/app/assets/javascripts/procedure.js b/app/assets/javascripts/procedure.js index aec66d50e..d4f89f012 100644 --- a/app/assets/javascripts/procedure.js +++ b/app/assets/javascripts/procedure.js @@ -1,37 +1,37 @@ $(document).on('turbolinks:load', button_edit_procedure_init); function button_edit_procedure_init(){ - buttons_api_carto(); - button_cerfa(); - button_individual(); + buttons_api_carto(); + button_cerfa(); + button_individual(); } function buttons_api_carto () { - $("#procedure_module_api_carto_use_api_carto").on('change', function() { - $("#modules_api_carto").toggle() - }); + $("#procedure_module_api_carto_use_api_carto").on('change', function() { + $("#modules_api_carto").toggle() + }); - if ($('#procedure_module_api_carto_use_api_carto').is(':checked')) - $("#modules_api_carto").show(); + if ($('#procedure_module_api_carto_use_api_carto').is(':checked')) + $("#modules_api_carto").show(); } function button_cerfa () { - $("#procedure_cerfa_flag").on('change', function() { - $("#procedure_lien_demarche").toggle() - }); + $("#procedure_cerfa_flag").on('change', function() { + $("#procedure_lien_demarche").toggle() + }); - if ($('#procedure_cerfa_flag').is(':checked')) - $("#procedure_lien_demarche").show(); + if ($('#procedure_cerfa_flag').is(':checked')) + $("#procedure_lien_demarche").show(); } function button_individual () { - $("#procedure_for_individual").on('change', function() { - $("#individual_with_siret").toggle() - }); + $("#procedure_for_individual").on('change', function() { + $("#individual_with_siret").toggle() + }); - if ($('#procedure_for_individual').is(':checked')) - $("#individual_with_siret").show(); + if ($('#procedure_for_individual').is(':checked')) + $("#individual_with_siret").show(); } diff --git a/app/assets/javascripts/search.js b/app/assets/javascripts/search.js index a47c6993c..bfbc7aded 100644 --- a/app/assets/javascripts/search.js +++ b/app/assets/javascripts/search.js @@ -1,59 +1,59 @@ $(document).on('turbolinks:load', init_search_anim); function init_search_anim(){ - $("#search_area").on('click', search_fadeIn); + $("#search_area").on('click', search_fadeIn); } function search_fadeIn(){ - var search_area = $("#search_area"); - var body_dom = $('body'); - var positions = search_area.position(); - var width = search_area.width(); + var search_area = $("#search_area"); + var body_dom = $('body'); + var positions = search_area.position(); + var width = search_area.width(); - search_area.css('position', 'fixed'); - search_area.css('top', positions.top + $('.navbar').height()); - search_area.css('left', positions.left); - search_area.css('z-index', 300); - search_area.css('width', width); - search_area.find('#q').animate({ height: '50px' }); - search_area.find('#search_button').animate({ height: '50px' }); + search_area.css('position', 'fixed'); + search_area.css('top', positions.top + $('.navbar').height()); + search_area.css('left', positions.left); + search_area.css('z-index', 300); + search_area.css('width', width); + search_area.find('#q').animate({ height: '50px' }); + search_area.find('#search_button').animate({ height: '50px' }); - body_dom.append(search_area); - $('#mask_search').fadeIn(200); + body_dom.append(search_area); + $('#mask_search').fadeIn(200); - var body_width = body_dom.width(); + var body_width = body_dom.width(); - var search_area_width = body_width/2.5; + var search_area_width = body_width/2.5; - search_area.animate({ - width: search_area_width, - left: (body_width/2 - search_area_width/2 + 40) - }, 400, function() { - search_area.off(); - $("#search_area input").focus(); + search_area.animate({ + width: search_area_width, + left: (body_width/2 - search_area_width/2 + 40) + }, 400, function() { + search_area.off(); + $("#search_area input").focus(); - $('#mask_search').on('click', search_fadeOut) - }); + $('#mask_search').on('click', search_fadeOut) + }); } function search_fadeOut(){ - var search_area = $("#search_area"); + var search_area = $("#search_area"); - $('#mask_search').fadeOut(200); + $('#mask_search').fadeOut(200); - search_area.fadeOut(200, function(){ - search_area.css('position', 'static'); - search_area.css('top', ''); - search_area.css('left', ''); - search_area.css('z-index', ''); - search_area.css('width', 'auto'); - search_area.find('#q').css('height', 34); - search_area.find('#search_button').css('height', 34); + search_area.fadeOut(200, function(){ + search_area.css('position', 'static'); + search_area.css('top', ''); + search_area.css('left', ''); + search_area.css('z-index', ''); + search_area.css('width', 'auto'); + search_area.find('#q').css('height', 34); + search_area.find('#search_button').css('height', 34); - $('#search-block').append(search_area); - search_area.fadeIn(200); + $('#search-block').append(search_area); + search_area.fadeIn(200); - init_search_anim(); - }); + init_search_anim(); + }); } diff --git a/app/assets/javascripts/start.js b/app/assets/javascripts/start.js index 60e22e126..c261ae1fc 100644 --- a/app/assets/javascripts/start.js +++ b/app/assets/javascripts/start.js @@ -1,3 +1,3 @@ function show_dossier_id_input (){ - $("#btn_show_dossier_id_input").hide() + $("#btn_show_dossier_id_input").hide() } From e940c8534e6ba1e799eaf9256e550fa31685e3eb Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 15:10:03 +0200 Subject: [PATCH 14/96] Add a .editorconfig file --- .editorconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..16014361a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{haml,html,js,scss,rake,rb,yml}] +charset = utf-8 +indent_size = 2 +indent_style = space +trim_trailing_whitespace = true From b18c09e9fdae2567c7a50ccbd342f132e69de40a Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Wed, 29 Mar 2017 14:09:50 +0200 Subject: [PATCH 15/96] Download dossiers button exports all dossiers except draft --- .../backoffice/dossiers_controller.rb | 17 ++++----- app/models/dossier.rb | 22 ++++++------ .../dossiers/_download_dossiers.html.haml | 15 +++----- config/locales/dynamics/fr.yml | 2 -- spec/models/dossier_spec.rb | 36 +++++++++++++++++-- 5 files changed, 58 insertions(+), 34 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 7edc11989..2d226c0f3 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -39,16 +39,13 @@ class Backoffice::DossiersController < Backoffice::DossiersListController end def download_dossiers_tps - if procedure = Procedure.find_by(id: params[:procedure_id]) - dossiers = dossiers_list_facade(param_liste).dossiers_to_display - respond_with Dossier.export_full_generation(dossiers, request.format) unless dossiers.empty? - else - dossiers = dossiers_list_facade(param_liste).dossiers_to_display - respond_to do |format| - format.xlsx { render xlsx: dossiers } - format.ods { render ods: dossiers } - format.csv { render csv: dossiers } - end + procedure = Procedure.find_by(id: params[:procedure_id]) + export = Dossier.export_full_generation(procedure.dossiers.downloadable) + + respond_to do |format| + format.csv { send_data(SpreadsheetArchitect.to_csv(data: export[:data], headers: export[:headers]), filename: 'dossiers.csv') } + format.xlsx { send_data(SpreadsheetArchitect.to_xlsx(data: export[:data], headers: export[:headers]), filename: 'dossiers.xlsx') } + format.ods { send_data(SpreadsheetArchitect.to_ods(data: export[:data], headers: export[:headers]), filename: 'dossiers.ods') } end end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 7002b2ab9..67009ed79 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -201,6 +201,8 @@ class Dossier < ActiveRecord::Base scope :archived, -> { where(archived: true) } + scope :downloadable, -> { all_state } + def cerfa_available? procedure.cerfa_flag? && cerfa.size != 0 end @@ -261,21 +263,21 @@ class Dossier < ActiveRecord::Base return headers end - def self.export_full_generation(dossiers, format) - if dossiers && !dossiers.empty? - data = [] + def self.export_full_generation(dossiers) + data = [] + headers = [] + + if dossiers && dossiers.any? headers = dossiers.first.export_headers dossiers.each do |dossier| data << dossier.convert_specific_array_values_to_string(dossier.data_with_champs) end - if ["csv"].include?(format) - return SpreadsheetArchitect.to_csv(data: data, headers: headers) - elsif ["xlsx"].include?(format) - return SpreadsheetArchitect.to_xlsx(data: data, headers: headers) - elsif ["ods"].include?(format) - return SpreadsheetArchitect.to_ods(data: data, headers: headers) - end end + + return { + data: data, + headers: headers + } end def followers_gestionnaires_emails diff --git a/app/views/dossiers/_download_dossiers.html.haml b/app/views/dossiers/_download_dossiers.html.haml index cfd478d8c..71a010a84 100644 --- a/app/views/dossiers/_download_dossiers.html.haml +++ b/app/views/dossiers/_download_dossiers.html.haml @@ -1,13 +1,8 @@ -%div.dropdown.pull-right#download-menu - - if @facade_data_view.dossiers_to_display.count > 400 - %button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} - %span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'} - = t('dynamics.backoffice.limit_excess_download_all_dossiers') - - else - %a.dropdown-toggle#dropdownDownloadMenu.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } - %i.fa.fa-download - = t('dynamics.backoffice.download_all_dossiers') - %span.caret +.dropdown.pull-right#download-menu + %a.dropdown-toggle.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false } + %i.fa.fa-download + Télécharger tous les dossiers + %span.caret %ul.dropdown-menu.dropdown-menu-right %li = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do diff --git a/config/locales/dynamics/fr.yml b/config/locales/dynamics/fr.yml index 143e5ca14..72c3aa0f2 100644 --- a/config/locales/dynamics/fr.yml +++ b/config/locales/dynamics/fr.yml @@ -12,8 +12,6 @@ fr: pref_list: title: 'Gestion de colonnes affichées' description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.' - download_all_dossiers: 'Télécharger mes dossiers' - limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 400 pour le téléchargement' format_csv: 'Au format CSV' format_xlsx: 'Au format XLSX' format_ods: 'Au format ODS' diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 182b8c60b..e688656bd 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -611,7 +611,6 @@ describe Dossier do end describe '#data_with_champs' do - subject { dossier.data_with_champs } it { expect(subject[0]).to be_a_kind_of(Integer) } @@ -626,6 +625,27 @@ describe Dossier do it { expect(subject[9]).to eq(dossier.followers_gestionnaires_emails) } it { expect(subject.count).to eq(DossierProcedureSerializer.new(dossier).attributes.count + dossier.procedure.types_de_champ.count + dossier.export_entreprise_data.count) } end + + describe '.export_full_generation' do + + context 'when there are no dossiers' do + subject { Dossier.export_full_generation(Dossier.none) } + + it { expect(subject[:data]).to eq([]) } + it { expect(subject[:headers]).to eq([]) } + end + + context 'when there are some dossiers' do + let!(:dossier){ create(:dossier) } + let!(:dossier2){ create(:dossier) } + + subject { Dossier.export_full_generation(Dossier.all) } + + it { expect(subject[:data].size).to eq(2) } + it { expect(subject[:headers]).to eq(dossier.export_headers) } + end + + end end describe '#Dossier.to_csv' do @@ -670,7 +690,6 @@ describe Dossier do it { expect(subject[:entreprise_prenom]).to be_nil } end - describe '#Dossier.to_xlsx' do let!(:procedure) { create(:procedure) } let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) } @@ -966,4 +985,17 @@ describe Dossier do end end + + describe '.downloadable' do + let(:procedure) { create(:procedure) } + let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: :draft) } + let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: :initiated) } + let!(:dossier3) { create(:dossier, :with_entreprise, procedure: procedure, state: :received) } + + subject { procedure.dossiers.downloadable } + + it { is_expected.not_to include(dossier)} + it { is_expected.to include(dossier2)} + it { is_expected.to include(dossier3)} + end end From bf0d466f4b16de7329f667e6ba3c05f655014fe7 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Wed, 5 Apr 2017 11:34:16 +0200 Subject: [PATCH 16/96] Move export_full_generation method from Dossier to Procedure --- .../backoffice/dossiers_controller.rb | 2 +- app/models/dossier.rb | 17 ------------- app/models/procedure.rb | 14 +++++++++++ spec/models/dossier_spec.rb | 22 ---------------- spec/models/procedure_spec.rb | 25 +++++++++++++++++++ 5 files changed, 40 insertions(+), 40 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 2d226c0f3..4a27784ad 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -40,7 +40,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController def download_dossiers_tps procedure = Procedure.find_by(id: params[:procedure_id]) - export = Dossier.export_full_generation(procedure.dossiers.downloadable) + export = procedure.generate_export respond_to do |format| format.csv { send_data(SpreadsheetArchitect.to_csv(data: export[:data], headers: export[:headers]), filename: 'dossiers.csv') } diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 67009ed79..5cf14b5ea 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -263,23 +263,6 @@ class Dossier < ActiveRecord::Base return headers end - def self.export_full_generation(dossiers) - data = [] - headers = [] - - if dossiers && dossiers.any? - headers = dossiers.first.export_headers - dossiers.each do |dossier| - data << dossier.convert_specific_array_values_to_string(dossier.data_with_champs) - end - end - - return { - data: data, - headers: headers - } - end - def followers_gestionnaires_emails follows.includes(:gestionnaire).map { |f| f.gestionnaire }.pluck(:email).join(' ') end diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 1d791e9d8..0ffbc4714 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -130,4 +130,18 @@ class Procedure < ActiveRecord::Base self.dossiers.where.not(state: :draft).size end + def generate_export + exportable_dossiers = dossiers.downloadable + + headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : [] + data = exportable_dossiers.map do |dossier| + dossier.convert_specific_array_values_to_string(dossier.data_with_champs) + end + + { + headers: headers, + data: data + } + end + end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index e688656bd..ddc469b50 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -603,7 +603,6 @@ describe Dossier do let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure, follows: [follow], initiated_at: date1, received_at: date2, processed_at: date3) } describe '#export_headers' do - subject { dossier.export_headers } it { expect(subject).to include(:description) } @@ -625,27 +624,6 @@ describe Dossier do it { expect(subject[9]).to eq(dossier.followers_gestionnaires_emails) } it { expect(subject.count).to eq(DossierProcedureSerializer.new(dossier).attributes.count + dossier.procedure.types_de_champ.count + dossier.export_entreprise_data.count) } end - - describe '.export_full_generation' do - - context 'when there are no dossiers' do - subject { Dossier.export_full_generation(Dossier.none) } - - it { expect(subject[:data]).to eq([]) } - it { expect(subject[:headers]).to eq([]) } - end - - context 'when there are some dossiers' do - let!(:dossier){ create(:dossier) } - let!(:dossier2){ create(:dossier) } - - subject { Dossier.export_full_generation(Dossier.all) } - - it { expect(subject[:data].size).to eq(2) } - it { expect(subject[:headers]).to eq(dossier.export_headers) } - end - - end end describe '#Dossier.to_csv' do diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index c841cb0cb..a020e5677 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -256,4 +256,29 @@ describe Procedure do it { is_expected.to eq 2 } end + + describe '#generate_export' do + let(:procedure) { create :procedure } + subject { procedure.generate_export } + + context 'when there are no dossiers' do + it { expect(subject[:data]).to eq([]) } + it { expect(subject[:headers]).to eq([]) } + end + + context 'when there are some dossiers' do + let!(:dossier){ create(:dossier, procedure: procedure, state: 'initiated') } + let!(:dossier2){ create(:dossier, procedure: procedure, state: 'closed') } + + it { expect(subject[:data].size).to eq(2) } + it { expect(subject[:headers]).to eq(dossier.export_headers) } + end + + context 'when there is a draft dossier' do + let!(:dossier_not_exportable){ create(:dossier, procedure: procedure, state: 'draft') } + + it { expect(subject[:data]).to eq([]) } + it { expect(subject[:headers]).to eq([]) } + end + end end From 31a623ee7a27abccc68490dd68282eb17a32c7f8 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Wed, 5 Apr 2017 14:47:18 +0200 Subject: [PATCH 17/96] Stop sidekiq service before deploy and start it after --- config/deploy.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/deploy.rb b/config/deploy.rb index c3eb4342d..f03e38682 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -153,6 +153,7 @@ desc "Deploys the current version to the server." task :deploy => :environment do queue 'export PATH=$PATH:/usr/local/rbenv/bin:/usr/local/rbenv/shims' deploy do + queue %[sudo stop sidekiq_#{user!} || true] # Put things that will set up an empty directory into a fully set-up # instance of your project. invoke :'git:clone' @@ -163,6 +164,7 @@ task :deploy => :environment do to :launch do queue "/etc/init.d/#{user} upgrade " + queue! %[sudo start sidekiq_#{user!}] queue "cd #{deploy_to}/#{current_path}/" queue "bundle exec rake db:seed RAILS_ENV=#{rails_env}" From eaf3a790f5e7309ae1ef04a1ab39fc5a99a47358 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Wed, 5 Apr 2017 16:30:07 +0200 Subject: [PATCH 18/96] Add deployment instructions to circle.yml In order to do continuous delivery in staging --- circle.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/circle.yml b/circle.yml index 5f073c4fd..d16255161 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,9 @@ database: override: - bundle exec rake db:drop db:create db:migrate RAILS_ENV=test + +deployment: + staging: + branch: staging + commands: + - bundle exec rake deploy_ha From 548e8ce079aac83c9d9067fe95b11ff1b9e0c5e5 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Thu, 6 Apr 2017 12:18:54 +0200 Subject: [PATCH 19/96] [Fix #68] Remove reference to application_split2.scss It has been removed in 6a261d1 --- config/application.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 8edea6693..b3c5dc10c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -23,7 +23,6 @@ module TPS config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/validators #{config.root}/app/facades) config.assets.paths << Rails.root.join('app', 'assets', 'javascript') - config.assets.precompile += %w( application_split2.css ) if Rails.env.production? URL = "https://tps.apientreprise.fr/" From a93aba5967c14cb965390938d871eb83f556929e Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Thu, 6 Apr 2017 16:15:45 +0200 Subject: [PATCH 20/96] Update poltergeist --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 40665e46f..c627a8b96 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -69,7 +69,7 @@ GEM i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) - addressable (2.5.0) + addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) apipie-rails (0.3.7) json @@ -97,7 +97,7 @@ GEM browser (2.3.0) builder (3.2.3) byebug (9.0.6) - capybara (2.11.0) + capybara (2.13.0) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -413,7 +413,7 @@ GEM json orm_adapter (0.5.0) pg (0.19.0) - poltergeist (1.12.0) + poltergeist (1.14.0) capybara (~> 2.1) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) @@ -424,7 +424,7 @@ GEM pry-byebug (3.4.2) byebug (~> 9.0) pry (~> 0.10) - public_suffix (2.0.4) + public_suffix (2.0.5) rack (2.0.1) rack-handlers (0.7.3) rack @@ -626,7 +626,7 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff - websocket-driver (0.6.4) + websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) will_paginate (3.1.5) From 86ab596a87ac77ddb550a414f5ac620f2ab4073c Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Thu, 6 Apr 2017 16:58:00 +0200 Subject: [PATCH 21/96] Change test structure --- .../drawing_a_zone_with_freedraw_spec.rb | 23 ++++++++++++++----- spec/features/users/list_dossiers_spec.rb | 1 - 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb index b7a4f8495..3cbd1c26e 100644 --- a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb +++ b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb @@ -15,13 +15,24 @@ feature 'drawing a zone with freedraw' do expect(page).to have_css('#login_user') end - context 'when he enter login information' do + scenario 'he logs in and he is redirected to carte page', vcr: { cassette_name: 'drawing_a_zone_with_freedraw_redirected_to_carte_page' } do + within('#new_user') do + page.find_by_id('user_email').set user.email + page.find_by_id('user_password').set user.password + page.click_on 'Se connecter' + end + expect(page).to have_css('.content #map') + end + end + + context 'when user is logged in' do + before do + login_as user, scope: :user + end + + context 'when he is visiting the map page' do before do - within('#new_user') do - page.find_by_id('user_email').set user.email - page.find_by_id('user_password').set user.password - page.click_on 'Se connecter' - end + visit users_dossier_carte_path dossier_id: dossier.id end context 'when procedure have api carto activated' do diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index d970de7b4..1ae783994 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -1,7 +1,6 @@ require 'spec_helper' feature 'user access to the list of his dossier' do - let(:user) { create(:user) } let!(:last_updated_dossier) { create(:dossier, :with_entreprise, user: user, state: 'replied')} let!(:dossier1) { create(:dossier, :with_entreprise, user: user, state: 'replied') } From e6269335696ef750d39a537b50d2cbe24d724b0e Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Mon, 10 Apr 2017 16:05:18 +0200 Subject: [PATCH 22/96] Remove annoying test with external dependency --- .../drawing_a_zone_with_freedraw_spec.rb | 27 ---- ..._with_freedraw_when_draw_a_zone_on_map.yml | 143 ------------------ 2 files changed, 170 deletions(-) delete mode 100644 spec/fixtures/cassettes/drawing_a_zone_with_freedraw_when_draw_a_zone_on_map.yml diff --git a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb index 3cbd1c26e..57633a08b 100644 --- a/spec/features/users/drawing_a_zone_with_freedraw_spec.rb +++ b/spec/features/users/drawing_a_zone_with_freedraw_spec.rb @@ -52,33 +52,6 @@ feature 'drawing a zone with freedraw' do expect(page).to have_content('Le status de votre dossier n\'autorise pas cette URL') end end - - context 'when draw a zone on #map', js: true, vcr: { cassette_name: 'drawing_a_zone_with_freedraw_when_draw_a_zone_on_map' } do - context 'when module quartiers prioritaires is activated' do - let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) } - - before do - allow(ModuleApiCartoService). - to receive(:generate_qp). - and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "Quartier de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - - page.execute_script('freeDraw.fire("markers", {latLngs: []});') - wait_for_ajax - end - - scenario 'div #map .qp is present' do - expect(page).to have_css('.content #map.qp') - end - - scenario 'QP name is present on page' do - expect(page).to have_content('Quartier de test') - end - - scenario 'Commune is present on page' do - expect(page).to have_content('Paris') - end - end - end end end end diff --git a/spec/fixtures/cassettes/drawing_a_zone_with_freedraw_when_draw_a_zone_on_map.yml b/spec/fixtures/cassettes/drawing_a_zone_with_freedraw_when_draw_a_zone_on_map.yml deleted file mode 100644 index 290ed6d79..000000000 --- a/spec/fixtures/cassettes/drawing_a_zone_with_freedraw_when_draw_a_zone_on_map.yml +++ /dev/null @@ -1,143 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://auth.cloud.ovh.net/v2.0/tokens - body: - encoding: UTF-8 - string: '{"auth":{"passwordCredentials":{"username":"ovh_fake_username","password":"ovh_fake_password"},"tenantName":"ovh_fake_tenant_name"}}' - headers: - User-Agent: - - fog/1.38.0 fog-core/1.38.0 - Content-Type: - - application/json - response: - status: - code: 200 - message: '' - headers: - Vary: - - X-Auth-Token - Content-Type: - - application/json - Content-Length: - - '7079' - Date: - - Thu, 12 May 2016 14:05:17 GMT - Connection: - - close - body: - encoding: UTF-8 - string: '{"access": {"token": {"issued_at": "2016-05-12T14:05:17.214079", "expires": - "2016-05-13T14:05:17Z", "id": "ff665d4700654b6d9c94964dfc1a262f", "tenant": - {"id": "a24c37ed11a84896914514384898c34b", "enabled": true, "name": "2627898119540674", - "description": "apientreprise"}, "audit_ids": ["Y2ixVCRJQe-D6IN-cPQQsw"]}, - "serviceCatalog": [{"endpoints": [{"adminURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "GRA1", "internalURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "17f6ef1cc63e492ab8d3f2bda8428cb0", "publicURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "BHS1", "internalURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "21fdd202afd04470bbaf84f9396d0dcc", "publicURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "SBG1", "internalURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "a707bffedf1c4b80a124c585c67c1639", "publicURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}], - "endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL": - "https://network.compute.gra1.cloud.ovh.net/", "region": "GRA1", "internalURL": - "https://network.compute.gra1.cloud.ovh.net/", "id": "26a339a8c7d5463f89ca937068ebbcd4", - "publicURL": "https://network.compute.gra1.cloud.ovh.net/"}, {"adminURL": - "https://network.compute.bhs1.cloud.ovh.net/", "region": "BHS1", "internalURL": - "https://network.compute.bhs1.cloud.ovh.net/", "id": "3fe2326789ec4e37af2e6b2c80a90876", - "publicURL": "https://network.compute.bhs1.cloud.ovh.net/"}, {"adminURL": - "https://network.compute.sbg1.cloud.ovh.net/", "region": "SBG1", "internalURL": - "https://network.compute.sbg1.cloud.ovh.net/", "id": "075839111e7a41f1bb458926e5f04cec", - "publicURL": "https://network.compute.sbg1.cloud.ovh.net/"}], "endpoints_links": - [], "type": "network", "name": "neutron"}, {"endpoints": [{"adminURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "GRA1", "internalURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "7231957fdf0346e5adebe860ac5e5e57", "publicURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "BHS1", "internalURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "2f5b68f95d7b4b1fad1a683dac8e8ca3", "publicURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "region": "SBG1", "internalURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b", - "id": "021b61bd7313479e8f8d77d21c7b434a", "publicURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}], - "endpoints_links": [], "type": "volumev2", "name": "cinderv2"}, {"endpoints": - [{"adminURL": "https://image.compute.gra1.cloud.ovh.net/", "region": "GRA1", - "internalURL": "https://image.compute.gra1.cloud.ovh.net/", "id": "56795c82f1744e47b7782f1fc2407212", - "publicURL": "https://image.compute.gra1.cloud.ovh.net/"}, {"adminURL": "https://image.compute.bhs1.cloud.ovh.net/", - "region": "BHS1", "internalURL": "https://image.compute.bhs1.cloud.ovh.net/", - "id": "5eaa4cbe80354ea482f2b0477c9c16f0", "publicURL": "https://image.compute.bhs1.cloud.ovh.net/"}, - {"adminURL": "https://image.compute.sbg1.cloud.ovh.net/", "region": "SBG1", - "internalURL": "https://image.compute.sbg1.cloud.ovh.net/", "id": "15758b246d1340e887a2170bd3399071", - "publicURL": "https://image.compute.sbg1.cloud.ovh.net/"}], "endpoints_links": - [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "region": "GRA1", "internalURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "id": "a6936c8876c1490cbf91d0707e78d350", "publicURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "region": "BHS1", "internalURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "id": "43bc107cf78448faa9e5a6b3a5ca48dd", "publicURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "region": "SBG1", "internalURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b", - "id": "2be04ee1ddb148c19e91d3da5934fa55", "publicURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"}], - "endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints": - [{"adminURL": "https://storage.gra1.cloud.ovh.net", "region": "GRA1", "internalURL": - "http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b", "id": "c96f61d071a74e36bd3c07e53d241ce3", - "publicURL": "https://storage.gra1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://storage.bhs1.cloud.ovh.net:8888/", "region": "BHS1", - "internalURL": "http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b", - "id": "3327534a1a824389aae5d663b9821d67", "publicURL": "https://storage.bhs1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"}, - {"adminURL": "https://storage.sbg1.cloud.ovh.net", "region": "SBG1", "internalURL": - "http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b", "id": "2af96b87ad484cb7879a9ea554d5418c", - "publicURL": "https://storage.sbg1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"}], - "endpoints_links": [], "type": "object-store", "name": "swift"}, {"endpoints": - [{"adminURL": "https://auth.cloud.ovh.net:35357/v2.0", "region": "GRA1", "internalURL": - "http://127.0.0.1:5000/v2.0", "id": "62101e498fc3404dbc18ec80888992cb", "publicURL": - "https://auth.cloud.ovh.net/v2.0"}, {"adminURL": "https://auth.cloud.ovh.net:35357/v2.0", - "region": "BHS1", "internalURL": "http://127.0.0.1:5000/v2.0", "id": "00e403276b3246c4a5c54dc7133f9f0a", - "publicURL": "https://auth.cloud.ovh.net/v2.0"}, {"adminURL": "https://auth.cloud.ovh.net:35357/v2.0", - "region": "SBG1", "internalURL": "http://127.0.0.1:5000/v2.0", "id": "6094ef2ed9f240ed9b648dfcc0d9f923", - "publicURL": "https://auth.cloud.ovh.net/v2.0"}], "endpoints_links": [], "type": - "identity", "name": "keystone"}], "user": {"username": "MhsuDbK4DsPr", "roles_links": - [], "id": "43914cf4645747ba90d075c62ebb5018", "roles": [{"name": "_member_"}], - "name": "MhsuDbK4DsPr"}, "metadata": {"is_admin": 0, "roles": ["9fe2ff9ee4384b1894a90878d3e92bab"]}}}' - http_version: - recorded_at: Thu, 12 May 2016 14:05:17 GMT -- request: - method: get - uri: http://api-adresse.data.gouv.fr/search?limit=1&q=6%20RUE%20RAOUL%20NORDLING%20IMMEUBLE%20BORA%2092270%20BOIS%20COLOMBES - body: - encoding: US-ASCII - string: '' - headers: - Accept: - - "*/*; q=0.5, application/xml" - Accept-Encoding: - - gzip, deflate - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx/1.6.2 - Date: - - Thu, 12 May 2016 14:13:15 GMT - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '189' - Connection: - - keep-alive - Access-Control-Allow-Origin: - - "*" - Access-Control-Allow-Headers: - - X-Requested-With - body: - encoding: UTF-8 - string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL - 1.0", "query": "6 RUE RAOUL NORDLING IMMEUBLE BORA 92270 BOIS COLOMBES", "type": - "FeatureCollection", "features": []}' - http_version: - recorded_at: Thu, 12 May 2016 14:13:16 GMT -recorded_with: VCR 3.0.1 From 074c6fe72bf6c12db4ccbd2b478b1bcec46b63c7 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:42:00 +0200 Subject: [PATCH 23/96] Use scenic in all environments --- Gemfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index e6d77a9ab..60952ee60 100644 --- a/Gemfile +++ b/Gemfile @@ -93,6 +93,8 @@ gem 'simple_form' gem 'newrelic_rpm' +gem 'scenic' + # Sidekiq gem 'sidekiq' gem 'sidekiq-cron', '~> 0.4.4' @@ -145,6 +147,3 @@ group :production, :staging do gem 'sentry-raven' end -group :production, :staging, :development do - gem 'scenic' -end From 3ca914aba80741c7d4418da7529f352bb74c7a61 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:42:42 +0200 Subject: [PATCH 24/96] Delete some environment-based conditions We should always try to be the closest to the production environment --- app/models/notification.rb | 1 - ...0160127170437_change_date_creation_type_to_entreprise.rb | 6 +----- db/migrate/20161025150900_create_searches.rb | 4 ++-- db/migrate/20161102154835_update_searches_to_version_2.rb | 4 ++-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/app/models/notification.rb b/app/models/notification.rb index e538f0a25..4ff810f37 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -1,6 +1,5 @@ class Notification < ActiveRecord::Base belongs_to :dossier - serialize :liste if Rails.env.test? # after_save :broadcast_notification diff --git a/db/migrate/20160127170437_change_date_creation_type_to_entreprise.rb b/db/migrate/20160127170437_change_date_creation_type_to_entreprise.rb index 5168938c7..6451dc0d1 100644 --- a/db/migrate/20160127170437_change_date_creation_type_to_entreprise.rb +++ b/db/migrate/20160127170437_change_date_creation_type_to_entreprise.rb @@ -1,10 +1,6 @@ class ChangeDateCreationTypeToEntreprise < ActiveRecord::Migration def up - if Rails.env.test? - change_column :entreprises, :date_creation, "timestamp" - else - change_column :entreprises, :date_creation, "timestamp USING to_timestamp(date_creation) at time zone 'UTC-2'" - end + change_column :entreprises, :date_creation, "timestamp USING to_timestamp(date_creation) at time zone 'UTC-2'" end def down diff --git a/db/migrate/20161025150900_create_searches.rb b/db/migrate/20161025150900_create_searches.rb index 5252c6006..3b2ee975f 100644 --- a/db/migrate/20161025150900_create_searches.rb +++ b/db/migrate/20161025150900_create_searches.rb @@ -9,7 +9,7 @@ class CreateSearches < ActiveRecord::Migration add_index :individuals, :dossier_id add_index :pieces_justificatives, :dossier_id add_index :rna_informations, :entreprise_id - create_view :searches unless Rails.env.test? #, materialized: true + create_view :searches end def down @@ -22,6 +22,6 @@ class CreateSearches < ActiveRecord::Migration remove_index :individuals, :dossier_id remove_index :pieces_justificatives, :dossier_id remove_index :rna_informations, :entreprise_id - drop_view :searches unless Rails.env.test? #, materialized: true + drop_view :searches end end diff --git a/db/migrate/20161102154835_update_searches_to_version_2.rb b/db/migrate/20161102154835_update_searches_to_version_2.rb index b749a08ea..55223b4cf 100644 --- a/db/migrate/20161102154835_update_searches_to_version_2.rb +++ b/db/migrate/20161102154835_update_searches_to_version_2.rb @@ -1,9 +1,9 @@ class UpdateSearchesToVersion2 < ActiveRecord::Migration def up - replace_view :searches, version: 2 unless Rails.env.test? + replace_view :searches, version: 2 end def down - replace_view :searches, version: 1 unless Rails.env.test? + replace_view :searches, version: 1 end end From aef804a988ee892c89498b2a776bf0a34c6ffa6d Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:43:07 +0200 Subject: [PATCH 25/96] Use a postgresql database for tests Try to be the closest to the production environment --- README.md | 1 + config/database.yml | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5c17747dc..e33184bf1 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Les informations nécessaire à l'initialisation de la base doivent être pré-c su - postgres psql > create user tps with password 'lol' superuser; + > create user tps_test with password 'tps_test' superuser; > \q diff --git a/config/database.yml b/config/database.yml index 76a34a338..9f8cb0b14 100644 --- a/config/database.yml +++ b/config/database.yml @@ -9,7 +9,10 @@ development: test: - adapter: sqlite3 + adapter: postgresql + encoding: unicode + database: tps_test + host: localhost pool: 5 - timeout: 5000 - database: db/test.sqlite3 + username: tps_test + password: tps_test From 30d1d872776e496c507b122e1d5e2fe190fd2c16 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 12:09:25 +0200 Subject: [PATCH 26/96] Fix a test due to the move to Postgresql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit double precision’s length is 15 digits --- spec/controllers/users/carte_controller_shared_example.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb index 6e5fe11a1..55d63d266 100644 --- a/spec/controllers/users/carte_controller_shared_example.rb +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -164,7 +164,7 @@ shared_examples 'carte_controller_spec' do subject { Cadastre.last } it { expect(subject.surface_intersection).to eq('0.0006') } - it { expect(subject.surface_parcelle).to eq(11252.692583090324) } + it { expect(subject.surface_parcelle).to eq(11252.6925830903) } it { expect(subject.numero).to eq('0013') } it { expect(subject.feuille).to eq(1) } it { expect(subject.section).to eq('CD') } From 0e13e4bdfd817585ada22abaae398bf6346413a8 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:43:49 +0200 Subject: [PATCH 27/96] Use transaction instead of truncation DatabaseCleaner strategy It is the recommended strategy for ActiveRecod --- spec/spec_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f3b8d6030..d28fae75d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -55,7 +55,7 @@ VCR.configure do |c| c.configure_rspec_metadata! end -DatabaseCleaner.strategy = :truncation +DatabaseCleaner.strategy = :transaction SIADETOKEN = :valid_token unless defined? SIADETOKEN BROWSER.value = Browser.new('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)') From fa9bf2d398603b4071dc384e7e0553a17491ea1d Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 12:09:51 +0200 Subject: [PATCH 28/96] Fix a test now that we use transaction instead of truncation --- spec/models/concern/mail_template_concern_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/models/concern/mail_template_concern_spec.rb b/spec/models/concern/mail_template_concern_spec.rb index f177a360a..b82d78117 100644 --- a/spec/models/concern/mail_template_concern_spec.rb +++ b/spec/models/concern/mail_template_concern_spec.rb @@ -8,8 +8,8 @@ describe MailTemplateConcern do it 'works' do initiated_mail.object = '[TPS] --numero_dossier-- --libelle_procedure-- --lien_dossier--' expected = - "[TPS] 1 Demande de subvention " + - "http://localhost:3000/users/dossiers/1/recapitulatif" + "[TPS] #{dossier.id} Demande de subvention " + + "http://localhost:3000/users/dossiers/#{dossier.id}/recapitulatif" expect(initiated_mail.object_for_dossier(dossier)).to eq(expected) end From 8015710db27fda83ff26a90dd309ddedbc019bd2 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:52:52 +0200 Subject: [PATCH 29/96] Add config/database.yml.ci --- config/database.yml.ci | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 config/database.yml.ci diff --git a/config/database.yml.ci b/config/database.yml.ci new file mode 100644 index 000000000..3d17efadf --- /dev/null +++ b/config/database.yml.ci @@ -0,0 +1,6 @@ +test: + adapter: postgresql + database: app_test + pool: 5 + username: + password: From 8a424059f9889a1bffbc049f5455c6352329afa2 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 11:53:16 +0200 Subject: [PATCH 30/96] Update circle.yml so that it works properly with postgresql --- circle.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index d16255161..8fbdcce89 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,7 @@ database: override: - - bundle exec rake db:drop db:create db:migrate RAILS_ENV=test + - cp config/database.yml.ci config/database.yml + - bundle exec rake db:create db:schema:load db:migrate RAILS_ENV=test deployment: staging: From 82b07be45535329fa36ae88e8ed486aab65bcaa4 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 10 Apr 2017 17:33:05 +0200 Subject: [PATCH 31/96] Fix a failing test, incompatible with the new DatabaseCleaner strategy --- spec/features/admin/procedure_creation_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/procedure_creation_spec.rb b/spec/features/admin/procedure_creation_spec.rb index 8081ca485..fbf76005a 100644 --- a/spec/features/admin/procedure_creation_spec.rb +++ b/spec/features/admin/procedure_creation_spec.rb @@ -67,7 +67,7 @@ feature 'As an administrateur I wanna create a new procedure', js: true do page.find_by_id('onglet-preview').trigger('click') expect(page).to have_current_path(admin_procedure_previsualisation_path(Procedure.first.id.to_s)) - expect(page.find_by_id('champs_1')['placeholder']).to eq('libelle de champ') + expect(page.find("input[type='text']")['placeholder']).to eq('libelle de champ') expect(page.first('.piece-libelle').text).to eq('libelle de piece') end From beea66ad301c30c45dcc3e0f2333f53f32e855a3 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Mon, 10 Apr 2017 17:54:29 +0200 Subject: [PATCH 32/96] Remove the sqlite3 gem We now run tests with PostgreSQL --- Gemfile | 1 - Gemfile.lock | 2 -- 2 files changed, 3 deletions(-) diff --git a/Gemfile b/Gemfile index 60952ee60..aaa5c392f 100644 --- a/Gemfile +++ b/Gemfile @@ -116,7 +116,6 @@ group :test do gem 'guard-livereload', '~> 2.4', require: false gem 'vcr' gem 'rails-controller-testing' - gem 'sqlite3' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index c627a8b96..7cd099c9f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -574,7 +574,6 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.3.13) swd (1.0.1) activesupport (>= 3) attr_required (>= 0.0.5) @@ -705,7 +704,6 @@ DEPENDENCIES spreadsheet_architect spring spring-commands-rspec - sqlite3 therubyracer timecop turbolinks (~> 5.0) From e120e58b07b9e59bfd5770c28a5e15ad8f1336d2 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 13:33:43 +0200 Subject: [PATCH 33/96] Change the username and password for the development DB --- README.md | 2 +- config/database.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e33184bf1..b4b35074e 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Les informations nécessaire à l'initialisation de la base doivent être pré-c su - postgres psql - > create user tps with password 'lol' superuser; + > create user tps_development with password 'tps_development' superuser; > create user tps_test with password 'tps_test' superuser; > \q diff --git a/config/database.yml b/config/database.yml index 9f8cb0b14..f3163b7a2 100644 --- a/config/database.yml +++ b/config/database.yml @@ -4,8 +4,8 @@ development: database: tps_development host: localhost pool: 5 - username: tps - password: lol + username: tps_development + password: tps_development test: From d5fdd12da826e1c976b234e376ffb46026ed09eb Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Tue, 4 Apr 2017 13:34:01 +0200 Subject: [PATCH 34/96] Clean database.yml --- config/database.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/database.yml b/config/database.yml index f3163b7a2..75dedfa2d 100644 --- a/config/database.yml +++ b/config/database.yml @@ -7,7 +7,6 @@ development: username: tps_development password: tps_development - test: adapter: postgresql encoding: unicode From e7e4e41e12b7b7d9f4938bb78893509448d7fd61 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Thu, 6 Apr 2017 11:38:44 +0200 Subject: [PATCH 35/96] Haml Ruby evaluation tags must be followed by a space --- app/views/admin/accompagnateurs/show.html.haml | 2 +- .../admin/change_dossier_state/check.html.haml | 2 +- .../admin/gestionnaires/_informations.html.haml | 2 +- app/views/admin/gestionnaires/_list.html.haml | 2 +- app/views/admin/mail_templates/edit.html.haml | 2 +- .../pieces_justificatives/_fields.html.haml | 6 +++--- .../admin/procedures/_informations.html.haml | 8 ++++---- .../admin/procedures/_modal_publish.html.haml | 6 +++--- app/views/admin/procedures/_onglets.html.haml | 4 ++-- app/views/admin/procedures/new.html.haml | 2 +- app/views/admin/procedures/show.html.haml | 10 +++++----- app/views/administrateurs/sessions/new.html.haml | 2 +- app/views/administrations/index.html.haml | 4 ++-- .../backoffice/dossiers/_filter_framed.html.haml | 2 +- .../backoffice/dossiers/_followers.html.haml | 2 +- app/views/backoffice/dossiers/_list.html.haml | 4 ++-- .../backoffice/dossiers/_pref_list.html.haml | 4 ++-- .../dossiers/_state_description.html.haml | 12 ++++++------ app/views/backoffice/dossiers/index.html.haml | 8 ++++---- app/views/backoffice/dossiers/search.html.haml | 2 +- app/views/dossiers/_infos_dossier.html.haml | 12 ++++++------ .../dossiers/_pieces_justificatives.html.haml | 4 ++-- app/views/dossiers/etapes/_etape1.html.haml | 4 ++-- .../etapes/etape_2/_individual.html.haml | 2 +- app/views/layouts/_ie_lt_10.html.haml | 4 ++-- app/views/layouts/_navbar.html.haml | 4 ++-- app/views/layouts/application.html.haml | 4 ++-- ...admin_procedurescontroller_archived.html.haml | 2 +- ...el_admin_procedurescontroller_draft.html.haml | 2 +- ...el_admin_procedurescontroller_index.html.haml | 2 +- ...l_admin_procedurescontroller_navbar.html.haml | 6 +++--- ...backoffice_dossierscontroller_index.html.haml | 2 +- ...anel_users_dossierscontroller_index.html.haml | 2 +- ...ar_admin_procedurescontroller_index.html.haml | 4 ++-- ..._backoffice_dossierscontroller_show.html.haml | 2 +- .../navbars/_navbar_log_options.html.haml | 8 ++++---- app/views/root/landing.html.haml | 6 +++--- app/views/users/carte/_init_carto.html.haml | 2 +- app/views/users/carte/show.html.haml | 12 ++++++------ app/views/users/description/_champs.html.haml | 6 +++--- .../description/_pieces_justificatives.html.haml | 14 +++++++------- app/views/users/description/_show.html.haml | 10 +++++----- .../champs/_header_private_section.html.haml | 2 +- .../description/champs/_header_section.html.haml | 2 +- .../users/dossiers/_state_description.html.haml | 16 ++++++++-------- .../users/sessions/_resume_procedure.html.haml | 4 ++-- app/views/users/sessions/new.html.haml | 2 +- 47 files changed, 113 insertions(+), 113 deletions(-) diff --git a/app/views/admin/accompagnateurs/show.html.haml b/app/views/admin/accompagnateurs/show.html.haml index d62a10c54..eba44b222 100644 --- a/app/views/admin/accompagnateurs/show.html.haml +++ b/app/views/admin/accompagnateurs/show.html.haml @@ -13,7 +13,7 @@ .row .col-xs-5 = hidden_field_tag :procedure_id, params[:procedure_id] - =render partial: 'admin/gestionnaires/informations', locals: {f: f} + = render partial: 'admin/gestionnaires/informations', locals: {f: f} .col-xs-2 %br %br diff --git a/app/views/admin/change_dossier_state/check.html.haml b/app/views/admin/change_dossier_state/check.html.haml index 796518ae7..957c4f3c7 100644 --- a/app/views/admin/change_dossier_state/check.html.haml +++ b/app/views/admin/change_dossier_state/check.html.haml @@ -13,5 +13,5 @@ %select{id: :next_state, name: :next_state} - Dossier.states.each do |state| %option{value: state[0]} - =DossierDecorator.case_state_fr state[1] + = DossierDecorator.case_state_fr state[1] = f.submit 'Valider' diff --git a/app/views/admin/gestionnaires/_informations.html.haml b/app/views/admin/gestionnaires/_informations.html.haml index b7c9a268c..f7246847c 100644 --- a/app/views/admin/gestionnaires/_informations.html.haml +++ b/app/views/admin/gestionnaires/_informations.html.haml @@ -1,4 +1,4 @@ --{email: 'Email*'}.each do |key, value| +- {email: 'Email*'}.each do |key, value| .form-group %h4 = value diff --git a/app/views/admin/gestionnaires/_list.html.haml b/app/views/admin/gestionnaires/_list.html.haml index 48cdd8f68..82f8ff862 100644 --- a/app/views/admin/gestionnaires/_list.html.haml +++ b/app/views/admin/gestionnaires/_list.html.haml @@ -11,7 +11,7 @@ .delete.btn.btn-sm.fa.fa-trash .confirm - =link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), {method: :delete, class: 'btn btn-sm btn-success'} + = link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), {method: :delete, class: 'btn btn-sm btn-success'} .cancel.btn.btn-sm.btn-danger.fa.fa-minus{style: 'top: 0'} = smart_listing.paginate diff --git a/app/views/admin/mail_templates/edit.html.haml b/app/views/admin/mail_templates/edit.html.haml index 31ff8fd7f..8d72c9cc6 100644 --- a/app/views/admin/mail_templates/edit.html.haml +++ b/app/views/admin/mail_templates/edit.html.haml @@ -27,4 +27,4 @@ %td.center = "--#{balise.first}--" %td - =balise.second[:description] + = balise.second[:description] diff --git a/app/views/admin/pieces_justificatives/_fields.html.haml b/app/views/admin/pieces_justificatives/_fields.html.haml index 7c7871a32..7cbdf5a99 100644 --- a/app/views/admin/pieces_justificatives/_fields.html.haml +++ b/app/views/admin/pieces_justificatives/_fields.html.haml @@ -2,16 +2,16 @@ .form-inline .form-group %h4 Libellé - =ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé' + = ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé' .form-group %h4 Description - =ff.text_area :description, class: 'form-control description', placeholder: 'Description' + = ff.text_area :description, class: 'form-control description', placeholder: 'Description' .form-group %h4 Lien du formulaire vierge %small (optionel) - =ff.url_field :lien_demarche, class: 'form-control', placeholder: 'Lien du document vierge' + = ff.url_field :lien_demarche, class: 'form-control', placeholder: 'Lien du document vierge' .form-group = ff.hidden_field :order_place, value: ff.index diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index b1aef83f2..5b62353d9 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -2,7 +2,7 @@ .alert.alert-info Cette procédure est publiée, certains éléments de la description ne sont plus modifiables --{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| +- {libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| .form-group %h4 = value @@ -26,7 +26,7 @@ %h4 Drapeau européen .checkbox %label - =f.check_box :euro_flag + = f.check_box :euro_flag Afficher le drapeau européen - unless @procedure.locked? @@ -37,7 +37,7 @@ = f.fields_for :module_api_carto, @procedure.module_api_carto do |ff| .checkbox %label - =ff.check_box :use_api_carto, id: :procedure_module_api_carto_use_api_carto + = ff.check_box :use_api_carto, id: :procedure_module_api_carto_use_api_carto Utilisation de la cartographie %ul#modules_api_carto @@ -67,7 +67,7 @@ %h4 Particuliers .checkbox %label - =f.check_box :for_individual + = f.check_box :for_individual Cette procédure s'adresse à un public qui %b ne possède pas (ou pas encore) de numéro SIRET, diff --git a/app/views/admin/procedures/_modal_publish.html.haml b/app/views/admin/procedures/_modal_publish.html.haml index a241ae444..1749f2e77 100644 --- a/app/views/admin/procedures/_modal_publish.html.haml +++ b/app/views/admin/procedures/_modal_publish.html.haml @@ -6,12 +6,12 @@ %button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"} %span{"aria-hidden" => "true"} × %h4#myModalLabel.modal-title - =@procedure.archived?? 'Réactiver' : 'Publier' + = @procedure.archived?? 'Réactiver' : 'Publier' la procédure %span#publishModal_title .modal-body Vous vous apprêtez à - =@procedure.archived?? 'republier' : 'publier' + = @procedure.archived?? 'republier' : 'publier' votre procédure au public. - unless @procedure.archived? %b @@ -23,7 +23,7 @@ %br %h4 Lien de la procédure %p.center - ="#{root_url}commencer/" + = "#{root_url}commencer/" = text_field_tag('procedure_path', @procedure.default_path, id: 'procedure_path', placeholder: 'Chemin vers la procédure', diff --git a/app/views/admin/procedures/_onglets.html.haml b/app/views/admin/procedures/_onglets.html.haml index ca258a54d..2caac8f1c 100644 --- a/app/views/admin/procedures/_onglets.html.haml +++ b/app/views/admin/procedures/_onglets.html.haml @@ -3,7 +3,7 @@ %li{class: @draft_class} %a{:href => "#{url_for :admin_procedures_draft}"} %h5.text-primary - ="Brouillons" + = "Brouillons" %li{class: @active_class} %a{:href => "#{url_for :admin_procedures}"} @@ -13,5 +13,5 @@ %li{class: @archived_class} %a{:href => "#{url_for :admin_procedures_archived}"} %h5{style: 'color: black'} - ="Archivées" + = "Archivées" %br diff --git a/app/views/admin/procedures/new.html.haml b/app/views/admin/procedures/new.html.haml index b6c555d99..703f98e12 100644 --- a/app/views/admin/procedures/new.html.haml +++ b/app/views/admin/procedures/new.html.haml @@ -1,6 +1,6 @@ .row.white-back %h2 - =t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure') + = t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure') #procedure_new.section.section-label = form_for @procedure, url: {controller: 'admin/procedures', action: :create}, multipart: true do |f| diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index 7249a0ed6..e08f0a40e 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -1,6 +1,6 @@ .row.white-back #procedure_show - -unless @facade.procedure.published? + - unless @facade.procedure.published? - if @facade.procedure.gestionnaires.size == 0 %a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure'} %i.fa.fa-eraser @@ -10,13 +10,13 @@ %i.fa.fa-eraser Publier - =render partial: '/admin/procedures/modal_publish' + = render partial: '/admin/procedures/modal_publish' %a#transfer.btn.btn-small.btn-default{"data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px; margin-right: 10px'} %i.fa.fa-exchange Transférer - =render partial: '/admin/procedures/modal_transfer' + = render partial: '/admin/procedures/modal_transfer' - if @facade.procedure.archived? %a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'} @@ -90,7 +90,7 @@ %br %br %h3 - =t('dynamics.admin.procedure.stats.title') + = t('dynamics.admin.procedure.stats.title') .row .col-xs-6{style:'margin-left:3%'} @@ -129,4 +129,4 @@ - if @facade.dossiers_for_pie_highchart.blank? Aucune statistique pour le moment - else - =pie_chart @facade.dossiers_for_pie_highchart + = pie_chart @facade.dossiers_for_pie_highchart diff --git a/app/views/administrateurs/sessions/new.html.haml b/app/views/administrateurs/sessions/new.html.haml index a2b8d0435..1d2a616cb 100644 --- a/app/views/administrateurs/sessions/new.html.haml +++ b/app/views/administrateurs/sessions/new.html.haml @@ -3,7 +3,7 @@ = image_tag(image_url(LOGO_NAME)) %br %h2#login_admin - =t('dynamics.admin.connexion_title') + = t('dynamics.admin.connexion_title') %br %br diff --git a/app/views/administrations/index.html.haml b/app/views/administrations/index.html.haml index 4e83c9cfc..0262424be 100644 --- a/app/views/administrations/index.html.haml +++ b/app/views/administrations/index.html.haml @@ -8,7 +8,7 @@ = f.submit 'Créer un administrateur', class: 'btn btn-success', id: 'submit_new_administrateur' .text-center - =link_to 'Stats', administrations_stats_path, style: 'margin-bottom: 50px; display: block', 'data-no-turbolink': true + = link_to 'Stats', administrations_stats_path, style: 'margin-bottom: 50px; display: block', 'data-no-turbolink': true = smart_listing_render :admins @@ -16,4 +16,4 @@ %br .text-center - =link_to 'Deconnexion', '/administrations/sign_out', method: :delete + = link_to 'Deconnexion', '/administrations/sign_out', method: :delete diff --git a/app/views/backoffice/dossiers/_filter_framed.html.haml b/app/views/backoffice/dossiers/_filter_framed.html.haml index 5e8337870..393edbdeb 100644 --- a/app/views/backoffice/dossiers/_filter_framed.html.haml +++ b/app/views/backoffice/dossiers/_filter_framed.html.haml @@ -2,7 +2,7 @@ .panel-heading = preference.libelle - =form_tag @facade_data_view.filter_url, {class: 'panel-body form-inline', method: :post} do + = form_tag @facade_data_view.filter_url, {class: 'panel-body form-inline', method: :post} do %input.form-control.filter_input{name: "filter_input[#{preference.table_attr}]", style:'width: 69%', value: "#{preference.filter}"} %button.btn.btn-sm.btn-success %i.fa.fa-check diff --git a/app/views/backoffice/dossiers/_followers.html.haml b/app/views/backoffice/dossiers/_followers.html.haml index c9cd2b528..633e2dcc1 100644 --- a/app/views/backoffice/dossiers/_followers.html.haml +++ b/app/views/backoffice/dossiers/_followers.html.haml @@ -1,5 +1,5 @@ %h3 - =t('dynamics.dossiers.followers.title') + = t('dynamics.dossiers.followers.title') %br .row diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index bf18a4ad2..c4c7a796d 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -11,7 +11,7 @@ %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"} - if preference.table.to_s.include? 'champs' = preference.libelle - -else + - else = smart_listing.sortable preference.libelle, preference.table_attr - if @facade_data_view.active_filter? preference %i.filter.fa.fa-filter{style: "color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"} @@ -54,7 +54,7 @@ %td.center - if current_gestionnaire.follow?(dossier.id) = link_to('Quitter'.html_safe, backoffice_dossier_follow_path(dossier_id: dossier.id), 'data-method' => :put, class: 'btn-sm btn-danger', id: "suivre_dossier_#{dossier.id}") - -else + - else = link_to('Suivre', backoffice_dossier_follow_path(dossier_id: dossier.id), 'data-method' => :put, class: 'btn-sm btn-primary', id: "suivre_dossier_#{dossier.id}") %td.center{style:"color: #{dossier.total_follow == 0 ? 'red' : ''}"} = dossier.total_follow diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 00fe0f247..1e171f124 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -1,10 +1,10 @@ %button#pref_list_dossier_close_action.btn.btn-danger.btn-xs.fixed-right %i.fa.fa-close %h3 - =t('dynamics.backoffice.pref_list.title') + = t('dynamics.backoffice.pref_list.title') %p{style:'margin-top: 15px; margin-bottom: 20px'} - =t('dynamics.backoffice.pref_list.description') + = t('dynamics.backoffice.pref_list.description') %h4.text-primary Actuelles diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml index 60ac57068..1b726ba0d 100644 --- a/app/views/backoffice/dossiers/_state_description.html.haml +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -5,17 +5,17 @@ .col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1 .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} .col-xs-11 - -if dossiers_list_facade.liste == 'nouveaux' + - if dossiers_list_facade.liste == 'nouveaux' Tous les dossiers présents dans cette liste sont ceux qui %b n'ont jamais été ouvert par votre service. Il attende une première lecture et intervention de votre part. - -elsif dossiers_list_facade.liste == 'a_traiter' + - elsif dossiers_list_facade.liste == 'a_traiter' Tous les dossiers présents dans cette liste sont ceux qui sont %b en cours de construction avec l'usager. Ils ne sont pas figés et ne sont donc pas complets. - -elsif dossiers_list_facade.liste == 'fige' + - elsif dossiers_list_facade.liste == 'fige' Tous les dossiers présents dans cette liste ont été déclarés %b complets @@ -23,14 +23,14 @@ %b plus modifiables par l'usager. Ils attendent donc leurs dépots officiels qui doit être effectué par l'usager. - -elsif dossiers_list_facade.liste == 'deposes' + - elsif dossiers_list_facade.liste == 'deposes' Tous les dossiers présents dans cette liste ont été %b officiellement déposé par l'usager pour examen. Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant examen final. - -elsif dossiers_list_facade.liste == 'a_instruire' + - elsif dossiers_list_facade.liste == 'a_instruire' Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers %b qui ont reçu bonne réception. - -elsif dossiers_list_facade.liste == 'termine' + - elsif dossiers_list_facade.liste == 'termine' Tous les dossiers présents dans cette liste sont considérés comme cloturé car ils ont tous reçu un verdict final qui peut être "Validé", "Refusé" ou "Sans suite". diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index 561c8df4b..e1ce91192 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -16,13 +16,13 @@ .row.center .col-xs-3 - =link_to 'Tous les états', '?liste=all_state', class: 'text-info', style:"text-decoration: #{@facade_data_view.liste == 'all_state'? 'underline' : ''}" + = link_to 'Tous les états', '?liste=all_state', class: 'text-info', style:"text-decoration: #{@facade_data_view.liste == 'all_state'? 'underline' : ''}" .col-xs-3 - =link_to 'En construction', '?liste=a_traiter', class: 'text-danger', style:"text-decoration: #{@facade_data_view.liste == 'a_traiter'? 'underline' : ''}" + = link_to 'En construction', '?liste=a_traiter', class: 'text-danger', style:"text-decoration: #{@facade_data_view.liste == 'a_traiter'? 'underline' : ''}" .col-xs-3 - =link_to 'En instruction', '?liste=a_instruire', class: 'text-warning', style:"text-decoration: #{@facade_data_view.liste == 'a_instruire'? 'underline' : ''}" + = link_to 'En instruction', '?liste=a_instruire', class: 'text-warning', style:"text-decoration: #{@facade_data_view.liste == 'a_instruire'? 'underline' : ''}" .col-xs-3 - =link_to 'Terminés', '?liste=termine', class: 'text-success', style:"text-decoration: #{@facade_data_view.liste == 'termine'? 'underline' : ''}" + = link_to 'Terminés', '?liste=termine', class: 'text-success', style:"text-decoration: #{@facade_data_view.liste == 'termine'? 'underline' : ''}" .default_data_block.default_visible .row.show-block#follow_dossiers diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml index 8700346d4..32713d212 100644 --- a/app/views/backoffice/dossiers/search.html.haml +++ b/app/views/backoffice/dossiers/search.html.haml @@ -10,7 +10,7 @@ %div.carret-down Résultat de la recherche %div.col-lg-2.col-md-2.col-sm-2.col-xs-2.count - =@dossiers.count + = @dossiers.count dossiers %div.body = smart_listing_render :search diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 39772f897..063e4f671 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -43,10 +43,10 @@ - if @facade.dossier.mandataire_social && gestionnaire_signed_in? .mandataire_social.text-success.center %br - ="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (" + = "Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (" %b - ="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" - =")" + = "#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" + = ")" %div.row - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.count > 0 .col-xs-12 @@ -124,7 +124,7 @@ %th Lien %thead.tr_content#cerfa - -if @facade.procedure.cerfa_flag? + - if @facade.procedure.cerfa_flag? - if @facade.dossier.cerfa_available? - @facade.cerfas_ordered.each do |cerfa| %tr @@ -133,7 +133,7 @@ %td.col-md-6.col-sm-6.col-xs-6.col-lg-4 = cerfa.created_at %td.col-md-6.col-sm-6.col-xs-6.col-lg-4 - =link_to 'Récupérer', cerfa.content_url, {target: :blank} + = link_to 'Récupérer', cerfa.content_url, {target: :blank} - @facade.dossier.types_de_piece_justificative.each do |type_de_piece_justificative| %tbody.tr_content{id: "type_de_pj_#{type_de_piece_justificative.id}"} - @facade.dossier.retrieve_all_piece_justificative_by_type(type_de_piece_justificative.id).each do |piece_justificative| @@ -143,7 +143,7 @@ %td.col-md-6.col-sm-6.col-xs-6.col-lg-4 = piece_justificative.created_at %td.col-md-6.col-sm-6.col-xs-6.col-lg-4 - =link_to 'Récupérer', piece_justificative.content_url, {target: :blank} + = link_to 'Récupérer', piece_justificative.content_url, {target: :blank} .modal-footer #modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"} diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 888c65b1a..4cdda96bd 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -3,7 +3,7 @@ - if @facade.procedure.cerfa_flag? %tr{id: "piece_justificative_0"} %th{class:'col-lg-6'} - ='Formulaire' + = 'Formulaire' %td.col-lg-6.col-md-6.col-sm-6.col-xs-6 - if @facade.dossier.cerfa_available? %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter @@ -42,4 +42,4 @@ = 'Pièce non fournie' -#- if gestionnaire_signed_in? - =render partial: '/dossiers/modal_historique' + = render partial: '/dossiers/modal_historique' diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index 784796e4b..98efbc2ae 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -4,10 +4,10 @@ #logos.center{class: (@facade.entreprise.nil? ? '' : 'mask')} - if @facade.procedure.euro_flag #euro_flag.flag - =image_tag('drapeau_europe.png') + = image_tag('drapeau_europe.png') #logo_procedure.flag - =image_tag( @facade.procedure.decorate.logo_img ) + = image_tag( @facade.procedure.decorate.logo_img ) .etape.etapes_informations.col-xs-9 .row diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml index 48bc13797..d6b78e478 100644 --- a/app/views/dossiers/etapes/etape_2/_individual.html.haml +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -38,7 +38,7 @@ = f.check_box :autorisation_donnees = " ".html_safe Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS. - =link_to 'en savoir plus', cgu_path, target: '_blank' + = link_to 'en savoir plus', cgu_path, target: '_blank' .row .col-xs-5.col-xs-5 .col-xs-2.col-xs-2 diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml index 1c2ebbad5..81ae102b6 100644 --- a/app/views/layouts/_ie_lt_10.html.haml +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -1,8 +1,8 @@ -="".html_safe += "".html_safe diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index e06e7ac45..b4ab94f15 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -9,9 +9,9 @@ .col-xs-10.no-padding #navbar-body .row - -begin + - begin = render partial: @navbar_url - -rescue + - rescue = render partial: 'layouts/navbars/navbar_default' = render partial: 'layouts/navbars/navbar_log_options' diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index ab1caee1b..96010a34f 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -3,7 +3,7 @@ %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ %meta{ name: "turbolinks-cache-control", content: "no-cache" } %title - =t('dynamics.page_title') + = t('dynamics.page_title') %meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"} = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true @@ -44,7 +44,7 @@ - else - main_container_size = 12 - =render partial: 'layouts/main_container', locals: {main_container_size: main_container_size} + = render partial: 'layouts/main_container', locals: {main_container_size: main_container_size} #mask_search %h1 %i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'} diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml index 36682366a..fb215e59f 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_archived.html.haml @@ -1 +1 @@ -=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' += render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml index 36682366a..fb215e59f 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_draft.html.haml @@ -1 +1 @@ -=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' += render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index' diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml index c246b2d97..be385802c 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_index.html.haml @@ -23,7 +23,7 @@ %a{:href => "#{url_for :admin_procedures_archived}", id: "archived-procedures"} %div.procedure_list_element{class: @archived_class} - ="Archivées" + = "Archivées" .badge.progress-bar-purple = current_administrateur.procedures.where(archived: true).count diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml index fe18dc18d..f59bb061e 100644 --- a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_navbar.html.haml @@ -1,9 +1,9 @@ %div#first-block %div.en-cours - -unless @procedure.logo.blank? + - unless @procedure.logo.blank? = image_tag @procedure.decorate.logo_img, style: 'width: 30px' %b - =@procedure.libelle + = @procedure.libelle %div#action-block @@ -16,7 +16,7 @@ %a{:href => "#{url_for admin_procedure_accompagnateurs_path(@procedure)}", id: 'onglet-accompagnateurs'} %div.procedure_list_element{class: ('active' if active == 'Accompagnateurs')} - =t('dynamics.admin.procedure.onglets.accompagnateurs') + = t('dynamics.admin.procedure.onglets.accompagnateurs') %a{:href => "#{url_for edit_admin_procedure_path(@procedure)}", id: 'onglet-description'} %div.procedure_list_element{class: ('active' if active == 'Description')} diff --git a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml index 6f8b17d10..32f2d44b3 100644 --- a/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_backoffice_dossierscontroller_index.html.haml @@ -29,7 +29,7 @@ - if total_new > 0 .badge.progress-bar-success{title:'Nouveaux dossiers'} = total_new - -if procedure[:unread_notifications] > 0 + - if procedure[:unread_notifications] > 0 .badge.progress-bar-warning{title: 'Notifications'} = procedure[:unread_notifications] #notifications_list.hidden diff --git a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml index a6f39fe6d..04a7b90ec 100644 --- a/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml +++ b/app/views/layouts/left_panels/_left_panel_users_dossierscontroller_index.html.haml @@ -25,7 +25,7 @@ %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.'} %div.procedure_list_element{ class: @dossiers_list_facade.en_instruction_class, id: 'en_instruction' } - ="En instruction" + = "En instruction" .badge.progress-bar-default = @dossiers_list_facade.en_instruction_total diff --git a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml index 13fdaf3c7..becba7d6a 100644 --- a/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml +++ b/app/views/layouts/navbars/_navbar_admin_procedurescontroller_index.html.haml @@ -13,12 +13,12 @@ = link_to(admin_procedures_path, id: :menu_item_procedure) do %i.fa.fa-list{ style: "background-size: 10px;"}   - =t('dynamics.admin.menu.procedures') + = t('dynamics.admin.menu.procedures') %li = link_to(admin_gestionnaires_path) do %i.fa.fa-user   - =t('dynamics.admin.menu.accompagnateurs') + = t('dynamics.admin.menu.accompagnateurs') %li.divider{ role: :separator} %li = link_to(admin_profile_path, id: :profile) do diff --git a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml index d6c9f218f..55500a0be 100644 --- a/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml +++ b/app/views/layouts/navbars/_navbar_backoffice_dossierscontroller_show.html.haml @@ -8,7 +8,7 @@ = link_to backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), "data-method" => :put, class: "button-navbar-action",id: "suivre_dossier_#{@facade.dossier.id}" do %i.fa.fa-user-times Ne plus suivre - -else + - else = link_to backoffice_dossier_follow_path(dossier_id: @facade.dossier.id), 'data-method' => :put, class: 'button-navbar-action', id: "suivre_dossier_#{@facade.dossier.id}" do %i.fa.fa-user-plus Suivre le dossier diff --git a/app/views/layouts/navbars/_navbar_log_options.html.haml b/app/views/layouts/navbars/_navbar_log_options.html.haml index 56d847d1c..6d04a698a 100644 --- a/app/views/layouts/navbars/_navbar_log_options.html.haml +++ b/app/views/layouts/navbars/_navbar_log_options.html.haml @@ -1,15 +1,15 @@ --if user_signed_in? +- if user_signed_in? #sign_out.col-xs-2.no-padding = render partial: 'users/login_banner' = render partial: 'layouts/credentials' --elsif gestionnaire_signed_in? +- elsif gestionnaire_signed_in? #sign_out.col-xs-2.no-padding = render partial: 'gestionnaires/login_banner' = render partial: 'layouts/credentials' --elsif administrateur_signed_in? +- elsif administrateur_signed_in? #sign_out.col-xs-2.no-padding = render partial: 'administrateurs/login_banner' = render partial: 'layouts/credentials' --else +- else #sign_in.col-xs-2 = link_to "Connexion", new_user_session_path, :class => 'btn btn-lg btn-primary' diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index 2326d629d..4ca3c7355 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -46,17 +46,17 @@ .col-md-4.col-lg-4 %h3.text-primary Acteurs publics %h4 Créez des démarches en ligne simplifiées et sécurisées. - =link_to 'Démonstration', "#{@demo_environment_host}/administrateurs/sign_in/demo", {class: 'btn btn-lg btn-primary'} + = link_to 'Démonstration', "#{@demo_environment_host}/administrateurs/sign_in/demo", {class: 'btn btn-lg btn-primary'} .col-md-4.col-lg-4 %h3.text-warning Agents et services %h4 Accompagnez et co-traitez les projets avec les usagers. - =link_to 'Démonstration', "#{@demo_environment_host}/gestionnaires/sign_in/demo", {class: 'btn btn-lg btn-warning'} + = link_to 'Démonstration', "#{@demo_environment_host}/gestionnaires/sign_in/demo", {class: 'btn btn-lg btn-warning'} .col-md-4.col-lg-4 %h3.text-success Usagers %h4 Profitez de démarches simplifiées et d’échanges continus avec les services traitants. - =link_to 'Démonstration', "#{@demo_environment_host}/users/sign_in/demo", {class: 'btn btn-lg btn-success'} + = link_to 'Démonstration', "#{@demo_environment_host}/users/sign_in/demo", {class: 'btn btn-lg btn-success'} .split-hr-left diff --git a/app/views/users/carte/_init_carto.html.haml b/app/views/users/carte/_init_carto.html.haml index 8516fe270..533f121ec 100644 --- a/app/views/users/carte/_init_carto.html.haml +++ b/app/views/users/carte/_init_carto.html.haml @@ -1,3 +1,3 @@ %script{type: 'text/javascript'} - ="var dossier_id =#{dossier.id}" + = "var dossier_id =#{dossier.id}" $(document).on('turbolinks:load', initCarto); diff --git a/app/views/users/carte/show.html.haml b/app/views/users/carte/show.html.haml index ca76d5f34..860a44b03 100644 --- a/app/views/users/carte/show.html.haml +++ b/app/views/users/carte/show.html.haml @@ -1,7 +1,7 @@ .row#carto_page .col-lg-12.col-md-12.col-sm-12.col-xs-12 %h2 - ='Localisation' + = 'Localisation' %h4.text-primary Positionnez-vous et dessinez sur la carte la zone d'action de votre demande. %br @@ -16,7 +16,7 @@ %br %br - =render partial: 'users/carte/map', locals: {dossier: @dossier} + = render partial: 'users/carte/map', locals: {dossier: @dossier} = form_tag(url_for({controller: :carte, action: :save, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do %br @@ -24,9 +24,9 @@ %input{id: 'quartier_prioritaires', type:'hidden', value: "#{@dossier.quartier_prioritaires.to_json}"} %input{id: 'cadastres', type:'hidden', value: "#{@dossier.cadastres.to_json}"} - -if @dossier.draft? - =render partial: '/layouts/etape_suivante' - -else - =render partial: '/layouts/modifications_terminees' + - if @dossier.draft? + = render partial: '/layouts/etape_suivante' + - else + = render partial: '/layouts/modifications_terminees' = render partial: 'users/carte/init_carto', locals: {dossier: @dossier} diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index 7ee565d10..2d7f6faf6 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -4,11 +4,11 @@ - unless @headers.blank? - if @champs.first.type_champ != 'header_section' - =render partial: render_partial_url, locals: {libelle: 'Dossier', order_place: -1, champs: @champs} + = render partial: render_partial_url, locals: {libelle: 'Dossier', order_place: -1, champs: @champs} - @headers.each do |header| .row %div{class: "type_champ-#{header.type_champ}"} - =render partial: render_partial_url, locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} + = render partial: render_partial_url, locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} - else .row - =render partial: render_partial_url, locals: {libelle: 'Dossier', order_place: -1, champs: @champs} + = render partial: render_partial_url, locals: {libelle: 'Dossier', order_place: -1, champs: @champs} diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index c7905af28..4e9877ba3 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -4,18 +4,18 @@ %th Formulaire de demande ou CERFA (complété et numérisé) %td - -unless dossier.procedure.lien_demarche.blank? + - unless dossier.procedure.lien_demarche.blank? %em Récupérer le formulaire de demande ou CERFA vierge pour mon dossier : = link_to "Télécharger", "#{dossier.procedure.lien_demarche}", target: :blank, id: :lien_cerfa -# %a{ id: 'lien_cerfa', href: "#{dossier.procedure.lien_demarche}", target: '_blank'} Télécharger %td - -if dossier.cerfa_available? + - if dossier.cerfa_available? %span.btn.btn-sm.btn-file.btn-success Modifier %input{type: 'file', name:'cerfa_pdf', id:'cerfa_pdf', accept: PieceJustificative.accept_format, :max_file_size => 6.megabytes } - -else + - else %input{type: 'file', name:'cerfa_pdf', id:'cerfa_pdf', accept: PieceJustificative.accept_format, :max_file_size => 6.megabytes } - dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative| @@ -30,12 +30,12 @@ = link_to "Télécharger", type_de_piece_justificative.lien_demarche, target: :blank %td - -if type_de_piece_justificative.api_entreprise + - if type_de_piece_justificative.api_entreprise %span.text-success{ id: "piece_justificative_#{type_de_piece_justificative.id}" } Nous l'avons récupéré pour vous. - -else - -if dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id).nil? + - else + - if dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id).nil? = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 6.megabytes - -else + - else %span.btn.btn-sm.btn-file.btn-success Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 6.megabytes diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index ac21a126e..5a5309090 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -8,7 +8,7 @@ .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} .col-xs-10{style:'padding-right: 0px'} %b - =link_to 'Accéder au guide', @dossier.procedure.lien_notice, {target: '_blank'} + = link_to 'Accéder au guide', @dossier.procedure.lien_notice, {target: '_blank'} pour remplir pour votre dossier %h2.text-info @@ -16,11 +16,11 @@ -#TODO use form_for = form_tag(url_for({controller: 'users/description', action: :update, dossier_id: @dossier.id}), class: 'form', method: 'POST', multipart: true) do - -unless @champs.nil? + - unless @champs.nil? #liste_champs - =render partial: 'users/description/champs', locals:{private: false} + = render partial: 'users/description/champs', locals:{private: false} - -if !@procedure.lien_demarche.blank? || @procedure.cerfa_flag || @dossier.types_de_piece_justificative.size > 0 + - if !@procedure.lien_demarche.blank? || @procedure.cerfa_flag || @dossier.types_de_piece_justificative.size > 0 %br %h3 Pièces jointes @@ -30,7 +30,7 @@ .col-lg-8 = render partial: 'users/description/pieces_justificatives', locals: { dossier: @dossier } - -route = Rails.application.routes.recognize_path(request.referrer) # WTF ? + - route = Rails.application.routes.recognize_path(request.referrer) # WTF ? - unless route[:controller].match('admin') %div{style: 'text-align:right'} %h6 Tous les champs portant un * sont obligatoires. diff --git a/app/views/users/description/champs/_header_private_section.html.haml b/app/views/users/description/champs/_header_private_section.html.haml index f1ec1ce8f..b5be240c6 100644 --- a/app/views/users/description/champs/_header_private_section.html.haml +++ b/app/views/users/description/champs/_header_private_section.html.haml @@ -2,5 +2,5 @@ .col-lg-12.col-md-12.col-sm-12.col-xs-12 %br %h3.text-info - =libelle + = libelle = render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place} diff --git a/app/views/users/description/champs/_header_section.html.haml b/app/views/users/description/champs/_header_section.html.haml index cc2c1099f..8415bfdee 100644 --- a/app/views/users/description/champs/_header_section.html.haml +++ b/app/views/users/description/champs/_header_section.html.haml @@ -4,6 +4,6 @@ .col-xs-12.title .carret-right .carret-down - =libelle + = libelle .body = render partial: 'users/description/champs/render_list_champs', locals: {champs: champs, order_place: order_place} diff --git a/app/views/users/dossiers/_state_description.html.haml b/app/views/users/dossiers/_state_description.html.haml index 6d66eb71b..8ef35af08 100644 --- a/app/views/users/dossiers/_state_description.html.haml +++ b/app/views/users/dossiers/_state_description.html.haml @@ -5,33 +5,33 @@ .col-md-1.col-lg-1.col-sm-1.col-xs-1 .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} .col-xs-11 - -if dossiers_list_facade.liste == 'brouillon' + - if dossiers_list_facade.liste == 'brouillon' Les dossiers présents dans cette liste %b n'ont pas encore été soumis aux services instructeurs. Ils ne sont visibles que par vous. - -elsif dossiers_list_facade.liste == 'nouveaux' + - elsif dossiers_list_facade.liste == 'nouveaux' Les dossiers présents dans cette liste %b n'ont pas encore été ouverts par les services instructeurs. Une notification vous sera envoyée quand votre demande aura été étudiée. - -elsif dossiers_list_facade.liste == 'a_traiter' + - elsif dossiers_list_facade.liste == 'a_traiter' Les dossiers présents dans cette liste sont %b visibles par les services instructeurs. %br Ces dossiers ne sont pas encore figés et peuvent être modifiés à souhait. - -elsif dossiers_list_facade.liste == 'en_attente' + - elsif dossiers_list_facade.liste == 'en_attente' Les dossiers présents dans cette liste sont %b en cours de relecture par les services instructeurs. Il reviendra vers vous si des informations ou documents sont manquants pour le futur examen de votre dossier. - -elsif dossiers_list_facade.liste == 'valides' + - elsif dossiers_list_facade.liste == 'valides' Les dossiers présents dans cette liste ont été %b relus et considérés comme complets pour examen par les services instructeurs. Ceux-ci ne peuvent maintenant plus être modifiés. Il faut que vous procédiez à leur dépôt afin qu'une décision finale soit rendue. - -elsif dossiers_list_facade.liste == 'en_instruction' + - elsif dossiers_list_facade.liste == 'en_instruction' Les dossiers présents dans cette liste sont %b en cours de réception @@ -39,12 +39,12 @@ %b en cours d'examen par les services instructeurs. Une notification vous sera envoyée une fois qu'une décision aura été rendue. - -elsif dossiers_list_facade.liste == 'termine' + - elsif dossiers_list_facade.liste == 'termine' Les dossiers présents dans cette liste sont ceux qui ont été instruits et pour lesquels %b une décision finale a été rendue. Ils peuvent posséder trois états différents : Accepté, Refusé ou Sans Suite. - -elsif dossiers_list_facade.liste == 'invite' + - elsif dossiers_list_facade.liste == 'invite' Les dossiers présents dans cette liste sont ceux %b auxquels vous avez été invités diff --git a/app/views/users/sessions/_resume_procedure.html.haml b/app/views/users/sessions/_resume_procedure.html.haml index 590169cad..d05af8c9c 100644 --- a/app/views/users/sessions/_resume_procedure.html.haml +++ b/app/views/users/sessions/_resume_procedure.html.haml @@ -5,10 +5,10 @@ - if @dossier.procedure.euro_flag #euro_flag.flag - =image_tag('drapeau_europe.png') + = image_tag('drapeau_europe.png') #logo_procedure.flag - =image_tag( @dossier.procedure.decorate.logo_img ) + = image_tag( @dossier.procedure.decorate.logo_img ) %h2#titre_procedure.text-info = @dossier.procedure.libelle diff --git a/app/views/users/sessions/new.html.haml b/app/views/users/sessions/new.html.haml index 30847c93e..fd7e38efb 100644 --- a/app/views/users/sessions/new.html.haml +++ b/app/views/users/sessions/new.html.haml @@ -3,7 +3,7 @@ = render partial: 'users/sessions/resume_procedure' %h2#login_user - =t('dynamics.users.connexion_title') + = t('dynamics.users.connexion_title') %a.btn_fc#btn_fcp{href: '/france_connect/particulier'} = image_tag 'franceconnect_logo.png' From a3d04fe7a90fad73569513bce9ae1642da2441ad Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Thu, 6 Apr 2017 11:40:34 +0200 Subject: [PATCH 36/96] Html Ruby evaluation tags must be followed by a single space --- app/views/dossiers/etapes/_etape2.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/dossiers/etapes/_etape2.html.haml b/app/views/dossiers/etapes/_etape2.html.haml index fde33f55f..0c18f10e7 100644 --- a/app/views/dossiers/etapes/_etape2.html.haml +++ b/app/views/dossiers/etapes/_etape2.html.haml @@ -1,4 +1,4 @@ - if @facade.procedure.for_individual? - = render partial: 'dossiers/etapes/etape_2/individual' + = render partial: 'dossiers/etapes/etape_2/individual' - else = render partial: 'dossiers/etapes/etape_2/entreprise' From 7e067c26241bef732f7bcc2ac8376f9df83d34b4 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Thu, 6 Apr 2017 11:39:35 +0200 Subject: [PATCH 37/96] Static classes attribute must use the inline tag syntax --- app/views/dossiers/_pieces_justificatives.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 4cdda96bd..7b703c2b1 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ %table.table - if @facade.procedure.cerfa_flag? %tr{id: "piece_justificative_0"} - %th{class:'col-lg-6'} + %th.col-lg-6 = 'Formulaire' %td.col-lg-6.col-md-6.col-sm-6.col-xs-6 - if @facade.dossier.cerfa_available? From 2d5df47c4ee82fdb8c3574cf3cec2d309f8ec630 Mon Sep 17 00:00:00 2001 From: gregoirenovel Date: Thu, 6 Apr 2017 15:32:05 +0200 Subject: [PATCH 38/96] Use implicit div tags in HAML files --- app/views/admin/procedures/index.html.haml | 12 ++-- .../dossiers/_filter_framed.html.haml | 4 +- .../backoffice/dossiers/search.html.haml | 14 ++--- app/views/dossiers/_dossier_show.html.haml | 60 +++++++++---------- app/views/dossiers/_edit_carto.html.haml | 2 +- .../dossiers/_edit_pieces_jointes.html.haml | 2 +- app/views/dossiers/_infos_dossier.html.haml | 58 +++++++++--------- .../dossiers/_infos_entreprise.html.haml | 54 ++++++++--------- .../commentaires/_commentaire.html.haml | 2 +- app/views/layouts/_credentials.html.haml | 4 +- app/views/layouts/_ie_lt_10.html.haml | 2 +- app/views/layouts/application.html.haml | 6 +- ...admin_procedurescontroller_index.html.haml | 12 ++-- ...dmin_procedurescontroller_navbar.html.haml | 22 +++---- ...koffice_dossierscontroller_index.html.haml | 12 ++-- .../_left_panel_cgucontroller_index.html.haml | 28 ++++----- ...l_users_dossierscontroller_index.html.haml | 16 ++--- ...ers_recapitulatifcontroller_show.html.haml | 10 ++-- ...ssiers_procedurecontroller_index.html.haml | 10 ++-- ...ers_recapitulatifcontroller_show.html.haml | 8 +-- app/views/users/dossiers/index.html.haml | 14 ++--- app/views/users/recapitulatif/show.html.haml | 2 +- 22 files changed, 177 insertions(+), 177 deletions(-) diff --git a/app/views/admin/procedures/index.html.haml b/app/views/admin/procedures/index.html.haml index 8ebb524ef..cd41c6513 100644 --- a/app/views/admin/procedures/index.html.haml +++ b/app/views/admin/procedures/index.html.haml @@ -1,14 +1,14 @@ #admins_index .default_data_block.default_visible - %div.row.show-block#new_dossiers - %div.header - %div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title - %div.carret-right - %div.carret-down + .row.show-block#new_dossiers + .header + .col-lg-10.col-md-10.col-sm-10.col-xs-10.title + .carret-right + .carret-down Procédures %a{href:'/admin/procedures/new'} %div#new-procedure.col-lg-2.col-md-2.col-sm-2.col-xs-2.action Nouvelle - %div.body + .body = smart_listing_render :procedures diff --git a/app/views/backoffice/dossiers/_filter_framed.html.haml b/app/views/backoffice/dossiers/_filter_framed.html.haml index 393edbdeb..f8c7b1e55 100644 --- a/app/views/backoffice/dossiers/_filter_framed.html.haml +++ b/app/views/backoffice/dossiers/_filter_framed.html.haml @@ -1,4 +1,4 @@ -%div.filter_framed.panel.panel-primary{id: "#{filter_framed_id}", style:'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none'} +.filter_framed.panel.panel-primary{id: "#{filter_framed_id}", style:'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none'} .panel-heading = preference.libelle @@ -6,5 +6,5 @@ %input.form-control.filter_input{name: "filter_input[#{preference.table_attr}]", style:'width: 69%', value: "#{preference.filter}"} %button.btn.btn-sm.btn-success %i.fa.fa-check - %div.btn.btn-sm.btn-danger.erase-filter + .btn.btn-sm.btn-danger.erase-filter %i.fa.fa-remove diff --git a/app/views/backoffice/dossiers/search.html.haml b/app/views/backoffice/dossiers/search.html.haml index 32713d212..34ffd639d 100644 --- a/app/views/backoffice/dossiers/search.html.haml +++ b/app/views/backoffice/dossiers/search.html.haml @@ -3,14 +3,14 @@ = render partial: 'backoffice/dossiers/pref_list' .default_data_block.default_visible - %div.row.show-block#new_dossiers - %div.header - %div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title - %div.carret-right - %div.carret-down + .row.show-block#new_dossiers + .header + .col-lg-10.col-md-10.col-sm-10.col-xs-10.title + .carret-right + .carret-down Résultat de la recherche - %div.col-lg-2.col-md-2.col-sm-2.col-xs-2.count + .col-lg-2.col-md-2.col-sm-2.col-xs-2.count = @dossiers.count dossiers - %div.body + .body = smart_listing_render :search diff --git a/app/views/dossiers/_dossier_show.html.haml b/app/views/dossiers/_dossier_show.html.haml index 842c9740c..a450fe7d0 100644 --- a/app/views/dossiers/_dossier_show.html.haml +++ b/app/views/dossiers/_dossier_show.html.haml @@ -2,48 +2,48 @@ - if @facade.procedure.individual_with_siret .default_data_block - %div.row.show-block.infos - %div.header - %div.col-xs-8.title-no-expanse - %div.carret-right + .row.show-block.infos + .header + .col-xs-8.title-no-expanse + .carret-right INFORMATIONS DU DEMANDEUR - if !@current_gestionnaire && ["draft", "updated", "replied", "initiated"].include?(@facade.dossier.state) %a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)} - %div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action + .col-lg-4.col-md-4.col-sm-4.col-xs-4.action = "Renseigner un SIRET" - unless @facade.entreprise.nil? .default_data_block - %div.row.show-block.infos#infos_entreprise - %div.header - %div.col-xs-12.title - %div.carret-right - %div.carret-down + .row.show-block.infos#infos_entreprise + .header + .col-xs-12.title + .carret-right + .carret-down INFORMATIONS DU DEMANDEUR - %div.body.display-block-on-print + .body.display-block-on-print = render partial: '/dossiers/infos_entreprise' .default_data_block.default_visible - %div.row.show-block.infos#infos_dossier - %div.header - %div.col-xs-10.title - %div.carret-right - %div.carret-down + .row.show-block.infos#infos_dossier + .header + .col-xs-10.title + .carret-right + .carret-down CONSTRUCTION DU DOSSIER = render partial: '/dossiers/edit_dossier' - %div.body.display-block-on-print + .body.display-block-on-print = render partial: '/dossiers/infos_dossier' - if @facade.dossier.procedure.module_api_carto.use_api_carto .default_data_block.default_visible.no-page-break-inside - %div.row.show-block#carto - %div.header - %div.col-xs-10.title - %div.carret-right - %div.carret-down + .row.show-block#carto + .header + .col-xs-10.title + .carret-right + .carret-down CARTOGRAPHIE = render partial: '/dossiers/edit_carto' - %div.body.display-block-on-print + .body.display-block-on-print %input{id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}", name: 'json_latlngs'} %input{id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"} %input{id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}"} @@ -54,14 +54,14 @@ - if @current_gestionnaire && gestionnaire_signed_in? && @champs_private.count > 0 .default_data_block.default_visible - %div.row.show-block#private-fields - %div.header - %div.col-xs-10.title - %div.carret-right - %div.carret-down + .row.show-block#private-fields + .header + .col-xs-10.title + .carret-right + .carret-down = "formulaire privé".upcase - %div.col-xs-2.count + .col-xs-2.count - private_fields_count = @champs_private.count = (private_fields_count == 1) ? "1 champ" : "#{private_fields_count} champs" - %div.body + .body = render partial: '/dossiers/infos_private_fields' diff --git a/app/views/dossiers/_edit_carto.html.haml b/app/views/dossiers/_edit_carto.html.haml index 08380a1a6..fedcf055d 100644 --- a/app/views/dossiers/_edit_carto.html.haml +++ b/app/views/dossiers/_edit_carto.html.haml @@ -1,5 +1,5 @@ - unless @facade.dossier.read_only? - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) %a#maj_carte.action{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - %div.col-lg-2.col-md-2.col-sm-2.col-xs-2.action + .col-lg-2.col-md-2.col-sm-2.col-xs-2.action = 'éditer'.upcase diff --git a/app/views/dossiers/_edit_pieces_jointes.html.haml b/app/views/dossiers/_edit_pieces_jointes.html.haml index c65d90d10..88f4bff34 100644 --- a/app/views/dossiers/_edit_pieces_jointes.html.haml +++ b/app/views/dossiers/_edit_pieces_jointes.html.haml @@ -1,7 +1,7 @@ - unless @facade.dossier.read_only? - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action + .col-lg-4.col-md-4.col-sm-4.col-xs-4.action %a#maj_pj.action{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button", diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 063e4f671..96524e556 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -1,26 +1,26 @@ -%div.row +.row .col-xs-12 - if @facade.procedure.for_individual? .row.title-row - %div.col-xs-4.split-hr - %div.col-xs-4.dossier-title= t('utils.depositaire').upcase - %div.col-xs-4.split-hr + .col-xs-4.split-hr + .col-xs-4.dossier-title= t('utils.depositaire').upcase + .col-xs-4.split-hr .row - %div.col-xs-6.depositaire-label Civilité - %div.col-xs-1.comments-off= "-" - %div.col-xs-5.depositaire-info= @facade.individual.gender + .col-xs-6.depositaire-label Civilité + .col-xs-1.comments-off= "-" + .col-xs-5.depositaire-info= @facade.individual.gender .row - %div.col-xs-6.depositaire-label Nom - %div.col-xs-1.comments-off= "-" - %div.col-xs-5.depositaire-info= @facade.individual.nom + .col-xs-6.depositaire-label Nom + .col-xs-1.comments-off= "-" + .col-xs-5.depositaire-info= @facade.individual.nom .row - %div.col-xs-6.depositaire-label Prénom - %div.col-xs-1.comments-off= "-" - %div.col-xs-5.despositaire-info= @facade.individual.prenom + .col-xs-6.depositaire-label Prénom + .col-xs-1.comments-off= "-" + .col-xs-5.despositaire-info= @facade.individual.prenom .row - %div.col-xs-6.depositaire-label Date de naissance - %div.col-xs-1.comments-off= "-" - %div.col-xs-5.depositaire-info= @facade.individual.birthdate + .col-xs-6.depositaire-label Date de naissance + .col-xs-1.comments-off= "-" + .col-xs-5.depositaire-info= @facade.individual.birthdate .row.margin-top-20 - unless @facade.champs.nil? @@ -28,15 +28,15 @@ - next if champ.type_champ == 'explication' - if champ.type_champ == 'header_section' .row.title-row.margin-top-40 - %div.col-xs-3.split-hr - %div.col-xs-6.dossier-title= champ.libelle.upcase - %div.col-xs-3.split-hr + .col-xs-3.split-hr + .col-xs-6.dossier-title= champ.libelle.upcase + .col-xs-3.split-hr - else .row - %div.col-xs-6.depositaire-label= champ.libelle - %div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off + .col-xs-6.depositaire-label= champ.libelle + .col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off = "-" - %div.col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" } + .col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" } - unless champ.decorate.value.blank? = champ.decorate.value.html_safe @@ -47,13 +47,13 @@ %b = "#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}" = ")" -%div.row +.row - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.count > 0 .col-xs-12 .row.title-row - %div.col-xs-4.split-hr - %div.col-xs-4.dossier-title= t('utils.pieces').upcase - %div.col-xs-4.split-hr + .col-xs-4.split-hr + .col-xs-4.dossier-title= t('utils.pieces').upcase + .col-xs-4.split-hr .col-xs-12#pieces_justificatives.margin-bot-40 .row @@ -77,9 +77,9 @@ .row.piece-row .col-xs-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" } .row - %div.col-xs-6.depositaire-label= type_de_piece_justificative.libelle - %div.col-xs-1.comments-off= "-" - %div.col-xs-5.despositaire-info + .col-xs-6.depositaire-label= type_de_piece_justificative.libelle + .col-xs-1.comments-off= "-" + .col-xs-5.despositaire-info - if type_de_piece_justificative.api_entreprise %span.text-success Nous l'avons récupéré pour vous. - elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil? diff --git a/app/views/dossiers/_infos_entreprise.html.haml b/app/views/dossiers/_infos_entreprise.html.haml index 599c9b7bb..661634697 100644 --- a/app/views/dossiers/_infos_entreprise.html.haml +++ b/app/views/dossiers/_infos_entreprise.html.haml @@ -2,51 +2,51 @@ %h4 = @facade.entreprise.raison_sociale_or_name .row.split-row - %div.col-xs-12.split-hr -%div.row + .col-xs-12.split-hr +.row .col-xs-12 .row - %div.col-xs-4.entreprise-label Siret : - %div.col-xs-8.entreprise-info= @facade.etablissement.siret + .col-xs-4.entreprise-label Siret : + .col-xs-8.entreprise-info= @facade.etablissement.siret - if @facade.etablissement.siret != @facade.entreprise.siret_siege_social .row - %div.col-xs-4.entreprise-label SIRET siège social : - %div.col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social + .col-xs-4.entreprise-label SIRET siège social : + .col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social .row - %div.col-xs-4.entreprise-label Forme juridique : - %div.col-xs-8.entreprise-info= @facade.entreprise.forme_juridique + .col-xs-4.entreprise-label Forme juridique : + .col-xs-8.entreprise-info= @facade.entreprise.forme_juridique .row - %div.col-xs-4.entreprise-label Libellé naf : - %div.col-xs-8.entreprise-info= @facade.etablissement.libelle_naf + .col-xs-4.entreprise-label Libellé naf : + .col-xs-8.entreprise-info= @facade.etablissement.libelle_naf .row - %div.col-xs-4.entreprise-label Code naf : - %div.col-xs-8.entreprise-info= @facade.etablissement.naf + .col-xs-4.entreprise-label Code naf : + .col-xs-8.entreprise-info= @facade.etablissement.naf .row - %div.col-xs-4.entreprise-label Date de création : - %div.col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y" + .col-xs-4.entreprise-label Date de création : + .col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y" .row - %div.col-xs-4.entreprise-label Effectif organisation : - %div.col-xs-8.entreprise-info= @facade.entreprise.effectif + .col-xs-4.entreprise-label Effectif organisation : + .col-xs-8.entreprise-info= @facade.entreprise.effectif .row - %div.col-xs-4.entreprise-label Code effectif : - %div.col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise + .col-xs-4.entreprise-label Code effectif : + .col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise .row - %div.col-xs-4.entreprise-label Numéro TVA intracommunautaire : - %div.col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire + .col-xs-4.entreprise-label Numéro TVA intracommunautaire : + .col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire .row - %div.col-xs-4.entreprise-label Adresse : - %div.col-xs-8.entreprise-info + .col-xs-4.entreprise-label Adresse : + .col-xs-8.entreprise-info - @facade.etablissement.adresse.split("\n").each do |line| = line .row - %div.col-xs-4.entreprise-label Capital social : - %div.col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social + .col-xs-4.entreprise-label Capital social : + .col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social .row - %div.col-xs-4.entreprise-label Exercices : - %div.col-xs-8.entreprise-info + .col-xs-4.entreprise-label Exercices : + .col-xs-8.entreprise-info - @facade.etablissement.exercices.each_with_index do |exercice, index| %strong = "#{exercice.dateFinExercice.year} : " @@ -54,6 +54,6 @@ %br .row.split-row - %div.col-xs-12.split-hr + .col-xs-12.split-hr - unless @facade.entreprise.rna_information.nil? = render partial: '/dossiers/infos_rna' diff --git a/app/views/dossiers/commentaires/_commentaire.html.haml b/app/views/dossiers/commentaires/_commentaire.html.haml index 576903f08..b5c928460 100644 --- a/app/views/dossiers/commentaires/_commentaire.html.haml +++ b/app/views/dossiers/commentaires/_commentaire.html.haml @@ -1,4 +1,4 @@ -%div.commentaire +.commentaire .comment-header = commentaire.header .content diff --git a/app/views/layouts/_credentials.html.haml b/app/views/layouts/_credentials.html.haml index 0622f4600..0f5457453 100644 --- a/app/views/layouts/_credentials.html.haml +++ b/app/views/layouts/_credentials.html.haml @@ -1,4 +1,4 @@ -%div.dropdown-menu#credentials - %div.description= t("utils.deconnexion") +.dropdown-menu#credentials + .description= t("utils.deconnexion") = @current_gestionnaire.email if @current_gestionnaire = @current_user.email if @current_user diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml index 81ae102b6..d191ed313 100644 --- a/app/views/layouts/_ie_lt_10.html.haml +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -1,6 +1,6 @@ = "

    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