From 1f828bf4d486118d698efd420f99b78a3b888fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Fri, 28 Jun 2019 22:48:18 +0200 Subject: [PATCH 01/19] Simplify code to check form changes --- .../javascripts/watch_form_changes.js.coffee | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/watch_form_changes.js.coffee b/app/assets/javascripts/watch_form_changes.js.coffee index f2ee99569..5b56fb982 100644 --- a/app/assets/javascripts/watch_form_changes.js.coffee +++ b/app/assets/javascripts/watch_form_changes.js.coffee @@ -6,22 +6,21 @@ App.WatchFormChanges = if($("[data-watch-form-message]").length) return $("[data-watch-form-message]").data("watch-form-message") + hasChanged: -> + App.WatchFormChanges.forms().is -> + $(this).serialize() != $(this).data("watchChanges") + checkChanges: -> - changes = false - App.WatchFormChanges.forms().each -> - form = $(this) - if form.serialize() != form.data("watchChanges") - changes = true - if changes - return confirm(App.WatchFormChanges.msg()) + if App.WatchFormChanges.hasChanged() + confirm(App.WatchFormChanges.msg()) else - return true + true initialize: -> if App.WatchFormChanges.forms().length == 0 || App.WatchFormChanges.msg() == undefined return - $(document).off("page:before-change").on("page:before-change", -> App.WatchFormChanges.checkChanges()) + $(document).off("page:before-change").on("page:before-change", App.WatchFormChanges.checkChanges) App.WatchFormChanges.forms().each -> form = $(this) From 49b4a0c71dbb30e1827f258b9aa18192e6246447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 8 Jul 2019 01:05:48 +0200 Subject: [PATCH 02/19] Simplify banners JavaScript There were functions which were just simple wrappers to common jQuery functions. --- app/assets/javascripts/banners.js.coffee | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/banners.js.coffee b/app/assets/javascripts/banners.js.coffee index 50b6db3d5..7ebbaf540 100644 --- a/app/assets/javascripts/banners.js.coffee +++ b/app/assets/javascripts/banners.js.coffee @@ -1,28 +1,18 @@ App.Banners = - - update_banner: (selector, text) -> - $(selector).html(text) - - update_background_color: (selector, background_color) -> - $(selector).css("background-color", background_color) - - update_font_color: (selector, font_color) -> - $(selector).css("color", font_color) - initialize: -> $("[data-js-banner-title]").on change: -> - App.Banners.update_banner("#js-banner-title", $(this).val()) + $("#js-banner-title").html($(this).val()) $("[data-js-banner-description]").on change: -> - App.Banners.update_banner("#js-banner-description", $(this).val()) + $("#js-banner-description").html($(this).val()) $("[name='banner[background_color]']").on change: -> - App.Banners.update_background_color("#js-banner-background", $(this).val()) + $("#js-banner-background").css("background-color", $(this).val()) $("[name='banner[font_color]']").on change: -> - App.Banners.update_font_color("#js-banner-title", $(this).val()) - App.Banners.update_font_color("#js-banner-description", $(this).val()) + $("#js-banner-title").css("color", $(this).val()) + $("#js-banner-description").css("color", $(this).val()) From 3120e0aa4180742761d48a5ba12dc57c75067d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 04:37:52 +0200 Subject: [PATCH 03/19] Use ECMAScript 5 array and string methods These methods were added in 2009 and are supported by 98.5% of the browsers, including Internet Explorer 9, 10 and 11. We were already using them in some places. --- app/assets/javascripts/columns_selector.js.coffee | 2 +- app/assets/javascripts/dashboard_graphs.js | 15 ++++++--------- app/assets/javascripts/documentable.js.coffee | 2 +- app/assets/javascripts/globalize.js.coffee | 6 ++---- app/assets/javascripts/imageable.js.coffee | 2 +- app/assets/javascripts/tags.js.coffee | 4 ++-- 6 files changed, 13 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/columns_selector.js.coffee b/app/assets/javascripts/columns_selector.js.coffee index 8a7f61208..3f8ad8907 100644 --- a/app/assets/javascripts/columns_selector.js.coffee +++ b/app/assets/javascripts/columns_selector.js.coffee @@ -17,7 +17,7 @@ App.ColumnsSelector = initChecks: () -> $(".column-selecteable th[data-field]").each -> field = $(this).data("field") - text = $.trim($(this).text()) + text = $(this).text().trim() item = $("#column_selector_item_template").clone() item.prop("id", "column_selector_item_" + field) input = item.find("input") diff --git a/app/assets/javascripts/dashboard_graphs.js b/app/assets/javascripts/dashboard_graphs.js index f12b9dbba..18ec9b83f 100644 --- a/app/assets/javascripts/dashboard_graphs.js +++ b/app/assets/javascripts/dashboard_graphs.js @@ -44,15 +44,12 @@ }; ProposalGraph.prototype.parseGoals = function(data) { - var i, l; - - this.goals = []; - for (i = 0, l = data.length; i < l; i += 1) { - this.goals.push({ - value: data[i].required_supports, - text: data[i].title - }); - } + this.goals = data.map(function(item) { + return { + value: item.required_supports, + text: item.title + }; + }); }; ProposalGraph.prototype.refreshData = function () { diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index 2cfe3323a..dd7f8c516 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -34,7 +34,7 @@ App.Documentable = data.submit() change: (e, data) -> - $.each data.files, (index, file) -> + data.files.forEach (file) -> App.Documentable.setFilename(inputData, file.name) fail: (e, data) -> diff --git a/app/assets/javascripts/globalize.js.coffee b/app/assets/javascripts/globalize.js.coffee index af320e2e1..7ab123707 100644 --- a/app/assets/javascripts/globalize.js.coffee +++ b/app/assets/javascripts/globalize.js.coffee @@ -97,7 +97,5 @@ App.Globalize = App.Globalize.remove_language(locale) $(".js-add-fields-container").on "cocoon:after-insert", -> - $.each( - App.Globalize.enabled_locales(), - (index, locale) -> App.Globalize.enable_locale(locale) - ) + App.Globalize.enabled_locales().forEach (locale) -> + App.Globalize.enable_locale(locale) diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 7317c2b49..d18c446c8 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -36,7 +36,7 @@ App.Imageable = data.submit() change: (e, data) -> - $.each data.files, (index, file) -> + data.files.forEach (file) -> App.Imageable.setFilename(inputData, file.name) fail: (e, data) -> diff --git a/app/assets/javascripts/tags.js.coffee b/app/assets/javascripts/tags.js.coffee index bdabac7fd..21d5ee39b 100644 --- a/app/assets/javascripts/tags.js.coffee +++ b/app/assets/javascripts/tags.js.coffee @@ -11,8 +11,8 @@ App.Tags = name = "\"#{$(this).text()}\"" current_tags = $tag_input.val().split(",").filter(Boolean) - if $.inArray(name, current_tags) >= 0 - current_tags.splice($.inArray(name, current_tags), 1) + if current_tags.indexOf(name) >= 0 + current_tags.splice(current_tags.indexOf(name), 1) else current_tags.push name From 1cc3324468b6d853b1687b5adb28b4631e707091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 29 Jun 2019 03:47:45 +0200 Subject: [PATCH 04/19] Use `each` and `forEach` instead of `for .. in` We're planning to replace CoffeeScript with JavaScript, and CoffeeScript compiles `for .. in` to complex JavaScript code. --- .../javascripts/budget_edit_associations.js.coffee | 7 +++---- app/assets/javascripts/columns_selector.js.coffee | 7 +++---- .../javascripts/legislation_annotatable.js.coffee | 2 +- app/assets/javascripts/map.js.coffee | 8 ++++---- app/assets/javascripts/polls.js.coffee | 12 ++++++------ app/assets/javascripts/stats.js.coffee | 2 +- 6 files changed, 18 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/budget_edit_associations.js.coffee b/app/assets/javascripts/budget_edit_associations.js.coffee index 4c5fad06d..f556f87bc 100644 --- a/app/assets/javascripts/budget_edit_associations.js.coffee +++ b/app/assets/javascripts/budget_edit_associations.js.coffee @@ -19,7 +19,6 @@ App.BudgetEditAssociations = $(".js-budget-show-users-list").on click: -> div_id = $(this).data().toggle - for list in $(".js-budget-users-list") - do -> - if (list.id != div_id) - $(list).addClass("is-hidden") if !$(list).hasClass("is-hidden") + $(".js-budget-users-list").each -> + if this.id != div_id + $(this).addClass("is-hidden") if !$(this).hasClass("is-hidden") diff --git a/app/assets/javascripts/columns_selector.js.coffee b/app/assets/javascripts/columns_selector.js.coffee index 3f8ad8907..b253a8aa3 100644 --- a/app/assets/javascripts/columns_selector.js.coffee +++ b/app/assets/javascripts/columns_selector.js.coffee @@ -9,10 +9,9 @@ App.ColumnsSelector = App.Cookies.saveCookie($("#js-columns-selector").data("cookie"), c_value, 30) columns = c_value.split(",") - for column in columns - do -> - $("[data-field=" + column + "]").removeClass("hidden") - $("#column_selector_" + column).prop("checked", true) + columns.forEach (column) -> + $("[data-field=" + column + "]").removeClass("hidden") + $("#column_selector_" + column).prop("checked", true) initChecks: () -> $(".column-selecteable th[data-field]").each -> diff --git a/app/assets/javascripts/legislation_annotatable.js.coffee b/app/assets/javascripts/legislation_annotatable.js.coffee index ba5b445fa..a549b9c53 100644 --- a/app/assets/javascripts/legislation_annotatable.js.coffee +++ b/app/assets/javascripts/legislation_annotatable.js.coffee @@ -158,7 +158,7 @@ App.LegislationAnnotatable = checkExist = setInterval((-> if $("span[data-annotation-id='#{last_annotation.id}']").length - for annotation in annotations + annotations.forEach (annotation) -> ann_weight = App.LegislationAnnotatable.propotionalWeight(annotation.weight, max_weight) el = $("span[data-annotation-id='#{annotation.id}']") el.addClass("weight-#{ann_weight}") diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index bed9019c8..332cac733 100644 --- a/app/assets/javascripts/map.js.coffee +++ b/app/assets/javascripts/map.js.coffee @@ -98,10 +98,10 @@ App.Map = map.on "click", moveOrPlaceMarker if addMarkerInvestments - for i in addMarkerInvestments - if App.Map.validCoordinates(i) - marker = createMarker(i.lat, i.long) - marker.options["id"] = i.investment_id + addMarkerInvestments.forEach (coordinates) -> + if App.Map.validCoordinates(coordinates) + marker = createMarker(coordinates.lat, coordinates.long) + marker.options["id"] = coordinates.investment_id marker.on "click", openMarkerPopup diff --git a/app/assets/javascripts/polls.js.coffee b/app/assets/javascripts/polls.js.coffee index 69893a82b..3690a6011 100644 --- a/app/assets/javascripts/polls.js.coffee +++ b/app/assets/javascripts/polls.js.coffee @@ -9,15 +9,15 @@ App.Polls = token = token.substring(0, 64) return token - replaceToken: -> - for link in $(".js-question-answer") - token_param = link.search.slice(-6) + replaceToken: (token) -> + $(".js-question-answer").each -> + token_param = this.search.slice(-6) if token_param == "token=" - link.href = link.href + @token + this.href = this.href + token initialize: -> - @token = App.Polls.generateToken() - App.Polls.replaceToken() + token = App.Polls.generateToken() + App.Polls.replaceToken(token) $(".zoom-link").on "click", (event) -> element = event.target diff --git a/app/assets/javascripts/stats.js.coffee b/app/assets/javascripts/stats.js.coffee index 982d2f98e..cbf7dc678 100644 --- a/app/assets/javascripts/stats.js.coffee +++ b/app/assets/javascripts/stats.js.coffee @@ -8,4 +8,4 @@ buildGraph = (el) -> App.Stats = initialize: -> - buildGraph(g) for g in $("[data-graph]") + $("[data-graph]").each -> buildGraph(this) From 4d7c124188c953658ae59579bb041fd447bce5cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 01:50:35 +0200 Subject: [PATCH 05/19] Remove unnecessary conditions The code won't do anything if there are no elements, so there's no need to check that condition. --- app/assets/javascripts/imageable.js.coffee | 3 +-- app/assets/javascripts/registration_form.js.coffee | 13 +++++-------- app/assets/javascripts/tree_navigator.js.coffee | 10 +++------- app/assets/javascripts/watch_form_changes.js.coffee | 3 +-- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index d18c446c8..5610395f6 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -9,8 +9,7 @@ App.Imageable = $("#new_image_link").removeClass("hide") $("#nested-image").on "cocoon:before-insert", -> - if $(".js-image-attachment").length > 0 - $(".js-image-attachment").closest(".image").remove() + $(".js-image-attachment").closest(".image").remove() $("#nested-image").on "cocoon:after-insert", (e, nested_image) -> $("#new_image_link").addClass("hide") diff --git a/app/assets/javascripts/registration_form.js.coffee b/app/assets/javascripts/registration_form.js.coffee index 1672190c8..5407151c9 100644 --- a/app/assets/javascripts/registration_form.js.coffee +++ b/app/assets/javascripts/registration_form.js.coffee @@ -1,9 +1,7 @@ App.RegistrationForm = initialize: -> - - registrationForm = $("form#new_user[action=\"/users\"]") - usernameInput = $("input#user_username") + usernameInput = $("form#new_user[action=\"/users\"] input#user_username") clearUsernameMessage = -> $("small").remove() @@ -18,8 +16,7 @@ App.RegistrationForm = showUsernameMessage(response) - if registrationForm.length > 0 - usernameInput.on "focusout", -> - clearUsernameMessage() - username = usernameInput.val() - validateUsername(username) if username != "" + usernameInput.on "focusout", -> + clearUsernameMessage() + username = usernameInput.val() + validateUsername(username) if username != "" diff --git a/app/assets/javascripts/tree_navigator.js.coffee b/app/assets/javascripts/tree_navigator.js.coffee index 86fd240fd..96ca16eb3 100644 --- a/app/assets/javascripts/tree_navigator.js.coffee +++ b/app/assets/javascripts/tree_navigator.js.coffee @@ -2,9 +2,6 @@ App.TreeNavigator = setNodes: (nodes) -> children = nodes.children("ul") - if(children.length == 0) - return - children.each -> link = $(this).prev("a") $('').insertBefore(link) @@ -30,7 +27,6 @@ App.TreeNavigator = elem.siblings("ul").show() if anchor = $(location).attr("hash") - if link = elem.find("a[href='#{anchor}']") - link.parents("ul").each -> - $(this).show() - $(this).siblings("span").removeClass("closed").addClass("open") + elem.find("a[href='#{anchor}']").parents("ul").each -> + $(this).show() + $(this).siblings("span").removeClass("closed").addClass("open") diff --git a/app/assets/javascripts/watch_form_changes.js.coffee b/app/assets/javascripts/watch_form_changes.js.coffee index 5b56fb982..739658011 100644 --- a/app/assets/javascripts/watch_form_changes.js.coffee +++ b/app/assets/javascripts/watch_form_changes.js.coffee @@ -3,8 +3,7 @@ App.WatchFormChanges = return $("form[data-watch-changes]") msg: -> - if($("[data-watch-form-message]").length) - return $("[data-watch-form-message]").data("watch-form-message") + return $("[data-watch-form-message]").data("watch-form-message") hasChanged: -> App.WatchFormChanges.forms().is -> From 936aa7af0fee60abbb3fa0f4a83acce5a94ccd0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 29 Jun 2019 15:33:40 +0200 Subject: [PATCH 06/19] Simplify adding rows to sortable tables The `append` method can handle arrays, so there's no need to loop through each element. There's more to improve on this method, like the `asc` variable being global to a table instead of depending on the current column, but for now I'm only refactoring and maintaining the current behaviour. --- app/assets/javascripts/table_sortable.js.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/table_sortable.js.coffee b/app/assets/javascripts/table_sortable.js.coffee index cc2b6adaa..4aab0e445 100644 --- a/app/assets/javascripts/table_sortable.js.coffee +++ b/app/assets/javascripts/table_sortable.js.coffee @@ -13,10 +13,10 @@ App.TableSortable = table = $(this).parents("table").eq(0) rows = table.find("tr:gt(0)").not("tfoot tr").toArray().sort(App.TableSortable.comparer($(this).index())) @asc = !@asc - if !@asc - rows = rows.reverse() - i = 0 - while i < rows.length - table.append rows[i] - i++ + + if @asc + table.append rows + else + table.append rows.reverse() + return From c55a1a9fafe0a51231cb3360bb3a990ab785388a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 29 Jun 2019 15:34:46 +0200 Subject: [PATCH 07/19] Simplify finding rows for sortable tables Including the table body is more intuitive than excluding the first row and the table foot. --- app/assets/javascripts/table_sortable.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/table_sortable.js.coffee b/app/assets/javascripts/table_sortable.js.coffee index 4aab0e445..49d833356 100644 --- a/app/assets/javascripts/table_sortable.js.coffee +++ b/app/assets/javascripts/table_sortable.js.coffee @@ -11,7 +11,7 @@ App.TableSortable = initialize: -> $("table.sortable th").click -> table = $(this).parents("table").eq(0) - rows = table.find("tr:gt(0)").not("tfoot tr").toArray().sort(App.TableSortable.comparer($(this).index())) + rows = table.find("tbody tr").toArray().sort(App.TableSortable.comparer($(this).index())) @asc = !@asc if @asc From 879cc2571fe449f8addef8ecd575b6c03628208e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 02:13:51 +0200 Subject: [PATCH 08/19] Use different names for variable and parameter Using the same name means from that point the name doesn't refer to the original parameter, which might be confusing when reading the method. --- app/assets/javascripts/documentable.js.coffee | 8 ++++---- app/assets/javascripts/imageable.js.coffee | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index dd7f8c516..4ef23aba5 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -28,10 +28,10 @@ App.Documentable = formData: null add: (e, data) -> - data = App.Documentable.buildFileUploadData(e, data) - App.Documentable.clearProgressBar(data) - App.Documentable.setProgressBar(data, "uploading") - data.submit() + upload_data = App.Documentable.buildFileUploadData(e, data) + App.Documentable.clearProgressBar(upload_data) + App.Documentable.setProgressBar(upload_data, "uploading") + upload_data.submit() change: (e, data) -> data.files.forEach (file) -> diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 5610395f6..37c50b8b2 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -29,10 +29,10 @@ App.Imageable = formData: null add: (e, data) -> - data = App.Imageable.buildFileUploadData(e, data) - App.Imageable.clearProgressBar(data) - App.Imageable.setProgressBar(data, "uploading") - data.submit() + upload_data = App.Imageable.buildFileUploadData(e, data) + App.Imageable.clearProgressBar(upload_data) + App.Imageable.setProgressBar(upload_data, "uploading") + upload_data.submit() change: (e, data) -> data.files.forEach (file) -> From 3b5d295cdcf0488db4b96b9f735555ad5bd4f02f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 03:13:29 +0200 Subject: [PATCH 09/19] Simplify function call --- app/assets/javascripts/documentable.js.coffee | 6 +----- app/assets/javascripts/imageable.js.coffee | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index 4ef23aba5..eb805daad 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -28,7 +28,7 @@ App.Documentable = formData: null add: (e, data) -> - upload_data = App.Documentable.buildFileUploadData(e, data) + upload_data = App.Documentable.buildData(data, e.target) App.Documentable.clearProgressBar(upload_data) App.Documentable.setProgressBar(upload_data, "uploading") upload_data.submit() @@ -72,10 +72,6 @@ App.Documentable = $(data.progressBar).find(".loading-bar").css "width", "#{progress}%" return - buildFileUploadData: (e, data) -> - data = @buildData(data, e.target) - return data - buildData: (data, input) -> wrapper = $(input).closest(".direct-upload") data.input = input diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 37c50b8b2..3eb725f7f 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -29,7 +29,7 @@ App.Imageable = formData: null add: (e, data) -> - upload_data = App.Imageable.buildFileUploadData(e, data) + upload_data = App.Imageable.buildData(data, e.target) App.Imageable.clearProgressBar(upload_data) App.Imageable.setProgressBar(upload_data, "uploading") upload_data.submit() @@ -72,10 +72,6 @@ App.Imageable = $(data.progressBar).find(".loading-bar").css "width", "#{progress}%" return - buildFileUploadData: (e, data) -> - data = @buildData(data, e.target) - return data - buildData: (data, input) -> wrapper = $(input).closest(".direct-upload") data.input = input From 1634cd5263880d124088d0220ad7279f0f23b7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 04:59:53 +0200 Subject: [PATCH 10/19] Use `each` instead of `$.each` Iterating through the jQuery elements with `each` is more similar to other iterators we use. Furthermore, we avoid declaring the `index` variable we don't use. --- app/assets/javascripts/documentable.js.coffee | 4 ++-- app/assets/javascripts/imageable.js.coffee | 4 ++-- app/assets/javascripts/map.js.coffee | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index eb805daad..5c5f8d315 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -3,8 +3,8 @@ App.Documentable = initialize: -> inputFiles = $(".js-document-attachment") - $.each inputFiles, (index, input) -> - App.Documentable.initializeDirectUploadInput(input) + inputFiles.each -> + App.Documentable.initializeDirectUploadInput(this) $("#nested-documents").on "cocoon:after-remove", -> App.Documentable.unlockUploads() diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 3eb725f7f..c8395646c 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -2,8 +2,8 @@ App.Imageable = initialize: -> inputFiles = $(".js-image-attachment") - $.each inputFiles, (index, input) -> - App.Imageable.initializeDirectUploadInput(input) + inputFiles.each -> + App.Imageable.initializeDirectUploadInput(this) $("#nested-image").on "cocoon:after-remove", -> $("#new_image_link").removeClass("hide") diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index 332cac733..8bbb4abbf 100644 --- a/app/assets/javascripts/map.js.coffee +++ b/app/assets/javascripts/map.js.coffee @@ -3,9 +3,8 @@ App.Map = initialize: -> maps = $("*[data-map]") - if maps.length > 0 - $.each maps, (index, map) -> - App.Map.initializeMap map + maps.each -> + App.Map.initializeMap(this) $(".js-toggle-map").on click: -> From dcc838b3d82d3cdc79b317b96b766fbcc0c3cd94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 05:15:48 +0200 Subject: [PATCH 11/19] Make conditions easier to read Combining both the inline and "traditional" `if` styles made the code difficult to read, particularly when compiled to JavaScript. --- app/assets/javascripts/budget_edit_associations.js.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/budget_edit_associations.js.coffee b/app/assets/javascripts/budget_edit_associations.js.coffee index f556f87bc..c10cc75a8 100644 --- a/app/assets/javascripts/budget_edit_associations.js.coffee +++ b/app/assets/javascripts/budget_edit_associations.js.coffee @@ -20,5 +20,5 @@ App.BudgetEditAssociations = click: -> div_id = $(this).data().toggle $(".js-budget-users-list").each -> - if this.id != div_id - $(this).addClass("is-hidden") if !$(this).hasClass("is-hidden") + if this.id != div_id && !$(this).hasClass("is-hidden") + $(this).addClass("is-hidden") From aa458b8c873ff8168e3b50b39e735ad8bfe12889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 19:08:46 +0200 Subject: [PATCH 12/19] Extract functions in foundation extras In foundation extras we were assigning functions to local variables, but in the rest of the CoffeeScript files we use them as object properties. --- .../javascripts/foundation_extras.js.coffee | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/foundation_extras.js.coffee b/app/assets/javascripts/foundation_extras.js.coffee index c12a2de92..92f20f6b4 100644 --- a/app/assets/javascripts/foundation_extras.js.coffee +++ b/app/assets/javascripts/foundation_extras.js.coffee @@ -1,24 +1,21 @@ App.FoundationExtras = + clearSticky: -> + $("[data-sticky]").foundation("destroy") if $("[data-sticky]").length + + mobile_ui_init: -> + $(window).trigger "load.zf.sticky" + + desktop_ui_init: -> + $(window).trigger "init.zf.sticky" initialize: -> $(document).foundation() $(window).trigger "resize" - - clearSticky = -> - $("[data-sticky]").foundation("destroy") if $("[data-sticky]").length - - $(document).on("page:before-unload", clearSticky) - - window.addEventListener("popstate", clearSticky, false) - - mobile_ui_init = -> - $(window).trigger "load.zf.sticky" - - desktop_ui_init = -> - $(window).trigger "init.zf.sticky" + $(document).on("page:before-unload", this.clearSticky) + window.addEventListener("popstate", this.clearSticky, false) $ -> if $(window).width() < 620 - do mobile_ui_init + App.FoundationExtras.mobile_ui_init() else - do desktop_ui_init + App.FoundationExtras.desktop_ui_init() From 747767386aafb1e512919f2c19e7bfb10730ceb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 19:12:22 +0200 Subject: [PATCH 13/19] Use `this` instead of `@` in CoffeeScript We're using `this` most of the time, and it's what's used in JavaScript. --- app/assets/javascripts/documentable.js.coffee | 4 ++-- app/assets/javascripts/imageable.js.coffee | 4 ++-- app/assets/javascripts/legislation_annotatable.js.coffee | 6 +++--- app/assets/javascripts/table_sortable.js.coffee | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index 5c5f8d315..5da604b45 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -17,9 +17,9 @@ App.Documentable = initializeDirectUploadInput: (input) -> - inputData = @buildData([], input) + inputData = this.buildData([], input) - @initializeRemoveCachedDocumentLink(input, inputData) + this.initializeRemoveCachedDocumentLink(input, inputData) $(input).fileupload diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index c8395646c..67a2e2370 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -18,9 +18,9 @@ App.Imageable = initializeDirectUploadInput: (input) -> - inputData = @buildData([], input) + inputData = this.buildData([], input) - @initializeRemoveCachedImageLink(input, inputData) + this.initializeRemoveCachedImageLink(input, inputData) $(input).fileupload diff --git a/app/assets/javascripts/legislation_annotatable.js.coffee b/app/assets/javascripts/legislation_annotatable.js.coffee index a549b9c53..46f95e114 100644 --- a/app/assets/javascripts/legislation_annotatable.js.coffee +++ b/app/assets/javascripts/legislation_annotatable.js.coffee @@ -85,7 +85,7 @@ App.LegislationAnnotatable = return customShow: (position) -> - $(@element).html "" + $(this.element).html "" # Clean comments section and open it $("#comments-box").html "" App.LegislationAllegations.show_comments() @@ -96,8 +96,8 @@ App.LegislationAnnotatable = method: "GET" url: "#{annotation_url}/annotations/new" dataType: "script").done (-> - $("#new_legislation_annotation #legislation_annotation_quote").val(@annotation.quote) - $("#new_legislation_annotation #legislation_annotation_ranges").val(JSON.stringify(@annotation.ranges)) + $("#new_legislation_annotation #legislation_annotation_quote").val(this.annotation.quote) + $("#new_legislation_annotation #legislation_annotation_ranges").val(JSON.stringify(this.annotation.ranges)) $("#comments-box").css({ top: position.top - $(".calc-comments").offset().top }) unless $("[data-legislation-open-phase]").data("legislation-open-phase") == false diff --git a/app/assets/javascripts/table_sortable.js.coffee b/app/assets/javascripts/table_sortable.js.coffee index 49d833356..80f429239 100644 --- a/app/assets/javascripts/table_sortable.js.coffee +++ b/app/assets/javascripts/table_sortable.js.coffee @@ -12,9 +12,9 @@ App.TableSortable = $("table.sortable th").click -> table = $(this).parents("table").eq(0) rows = table.find("tbody tr").toArray().sort(App.TableSortable.comparer($(this).index())) - @asc = !@asc + this.asc = !this.asc - if @asc + if this.asc table.append rows else table.append rows.reverse() From 86e704d8a4d829f9dcc1297bc076b8d313c67794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 21:39:06 +0200 Subject: [PATCH 14/19] Use strict mode in JavaScript Strict mode is supported by 98% of the browsers, including Internet Explorer 10, and it helps developers avoid common JavaScript pitfalls. --- app/assets/javascripts/advanced_search.js.coffee | 2 ++ app/assets/javascripts/allow_participation.js.coffee | 2 ++ app/assets/javascripts/answers.js.coffee | 2 ++ app/assets/javascripts/app.js.coffee | 2 ++ app/assets/javascripts/application.js | 4 ++++ app/assets/javascripts/banners.js.coffee | 2 ++ app/assets/javascripts/budget_edit_associations.js.coffee | 2 ++ app/assets/javascripts/check_all_none.js.coffee | 2 ++ app/assets/javascripts/checkbox_toggle.js.coffee | 2 ++ app/assets/javascripts/columns_selector.js.coffee | 2 ++ app/assets/javascripts/comments.js.coffee | 2 ++ app/assets/javascripts/cookies.js.coffee | 2 ++ app/assets/javascripts/documentable.js.coffee | 2 ++ app/assets/javascripts/embed_video.js.coffee | 2 ++ app/assets/javascripts/fixed_bar.js.coffee | 2 ++ app/assets/javascripts/flaggable.js.coffee | 2 ++ app/assets/javascripts/followable.js.coffee | 2 ++ app/assets/javascripts/forms.js.coffee | 2 ++ app/assets/javascripts/foundation_extras.js.coffee | 2 ++ app/assets/javascripts/gettext.js.coffee | 2 ++ app/assets/javascripts/globalize.js.coffee | 2 ++ app/assets/javascripts/ie_alert.js.coffee | 2 ++ app/assets/javascripts/imageable.js.coffee | 2 ++ app/assets/javascripts/investment_report_alert.js.coffee | 2 ++ app/assets/javascripts/legislation.js.coffee | 2 ++ app/assets/javascripts/legislation_admin.js.coffee | 2 ++ app/assets/javascripts/legislation_allegations.js.coffee | 2 ++ app/assets/javascripts/legislation_annotatable.js.coffee | 2 ++ app/assets/javascripts/location_changer.js.coffee | 2 ++ app/assets/javascripts/managers.js.coffee | 2 ++ app/assets/javascripts/map.js.coffee | 2 ++ app/assets/javascripts/markdown_editor.js.coffee | 2 ++ app/assets/javascripts/modal_download.js.coffee | 2 ++ app/assets/javascripts/moderator_budget_investments.js.coffee | 2 ++ app/assets/javascripts/moderator_comment.js.coffee | 2 ++ app/assets/javascripts/moderator_debates.js.coffee | 2 ++ .../javascripts/moderator_proposal_notifications.js.coffee | 2 ++ app/assets/javascripts/moderator_proposals.js.coffee | 2 ++ app/assets/javascripts/polls.js.coffee | 2 ++ app/assets/javascripts/polls_admin.js.coffee | 2 ++ app/assets/javascripts/prevent_double_submission.js.coffee | 2 ++ app/assets/javascripts/questions.js.coffee | 2 ++ app/assets/javascripts/registration_form.js.coffee | 2 ++ .../javascripts/send_admin_notification_alert.js.coffee | 2 ++ app/assets/javascripts/send_newsletter_alert.js.coffee | 2 ++ app/assets/javascripts/settings.js.coffee | 2 ++ app/assets/javascripts/social_share.js.coffee | 2 ++ app/assets/javascripts/sortable.js.coffee | 2 ++ app/assets/javascripts/stat_graphs.js | 4 ++++ app/assets/javascripts/stats.js.coffee | 2 ++ app/assets/javascripts/suggest.js.coffee | 2 ++ app/assets/javascripts/table_sortable.js.coffee | 2 ++ app/assets/javascripts/tag_autocomplete.js.coffee | 2 ++ app/assets/javascripts/tags.js.coffee | 2 ++ app/assets/javascripts/tree_navigator.js.coffee | 2 ++ app/assets/javascripts/users.js.coffee | 2 ++ .../javascripts/valuation_budget_investment_form.js.coffee | 2 ++ app/assets/javascripts/votations.js.coffee | 2 ++ app/assets/javascripts/votes.js.coffee | 2 ++ app/assets/javascripts/watch_form_changes.js.coffee | 2 ++ 60 files changed, 124 insertions(+) diff --git a/app/assets/javascripts/advanced_search.js.coffee b/app/assets/javascripts/advanced_search.js.coffee index 9503e02c9..77f9183b5 100644 --- a/app/assets/javascripts/advanced_search.js.coffee +++ b/app/assets/javascripts/advanced_search.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.AdvancedSearch = advanced_search_terms: -> diff --git a/app/assets/javascripts/allow_participation.js.coffee b/app/assets/javascripts/allow_participation.js.coffee index 0427ae730..3438e46c4 100644 --- a/app/assets/javascripts/allow_participation.js.coffee +++ b/app/assets/javascripts/allow_participation.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.AllowParticipation = initialize: -> diff --git a/app/assets/javascripts/answers.js.coffee b/app/assets/javascripts/answers.js.coffee index 2a2687648..caa1b18d9 100644 --- a/app/assets/javascripts/answers.js.coffee +++ b/app/assets/javascripts/answers.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Answers = initializeAnswers: (answers) -> diff --git a/app/assets/javascripts/app.js.coffee b/app/assets/javascripts/app.js.coffee index d8efafdee..b0ea6be5e 100644 --- a/app/assets/javascripts/app.js.coffee +++ b/app/assets/javascripts/app.js.coffee @@ -1 +1,3 @@ +"use strict" + window.App = {} diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 9174fd0ff..757ea52f3 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -88,6 +88,8 @@ //= require votations var initialize_modules = function() { + "use strict"; + App.Answers.initialize(); App.Questions.initialize(); App.Comments.initialize(); @@ -141,6 +143,8 @@ var initialize_modules = function() { }; $(function(){ + "use strict"; + Turbolinks.enableProgressBar(); $(document).ready(initialize_modules); diff --git a/app/assets/javascripts/banners.js.coffee b/app/assets/javascripts/banners.js.coffee index 7ebbaf540..8a1710b5e 100644 --- a/app/assets/javascripts/banners.js.coffee +++ b/app/assets/javascripts/banners.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Banners = initialize: -> $("[data-js-banner-title]").on diff --git a/app/assets/javascripts/budget_edit_associations.js.coffee b/app/assets/javascripts/budget_edit_associations.js.coffee index c10cc75a8..5daa48441 100644 --- a/app/assets/javascripts/budget_edit_associations.js.coffee +++ b/app/assets/javascripts/budget_edit_associations.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.BudgetEditAssociations = set_text: (response)-> diff --git a/app/assets/javascripts/check_all_none.js.coffee b/app/assets/javascripts/check_all_none.js.coffee index f0507b277..45df897ea 100644 --- a/app/assets/javascripts/check_all_none.js.coffee +++ b/app/assets/javascripts/check_all_none.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.CheckAllNone = initialize: -> diff --git a/app/assets/javascripts/checkbox_toggle.js.coffee b/app/assets/javascripts/checkbox_toggle.js.coffee index f20476f8d..3368e8a68 100644 --- a/app/assets/javascripts/checkbox_toggle.js.coffee +++ b/app/assets/javascripts/checkbox_toggle.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.CheckboxToggle = initialize: -> diff --git a/app/assets/javascripts/columns_selector.js.coffee b/app/assets/javascripts/columns_selector.js.coffee index b253a8aa3..0bcb78e4f 100644 --- a/app/assets/javascripts/columns_selector.js.coffee +++ b/app/assets/javascripts/columns_selector.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ColumnsSelector = initColums: () -> diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index d80ee6e0b..87b4d3683 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Comments = add_comment: (parent_id, response_html) -> diff --git a/app/assets/javascripts/cookies.js.coffee b/app/assets/javascripts/cookies.js.coffee index 4a1c84e2d..1c317b7fc 100644 --- a/app/assets/javascripts/cookies.js.coffee +++ b/app/assets/javascripts/cookies.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Cookies = saveCookie: (name, value, days) -> diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index 5da604b45..a81f4b120 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Documentable = initialize: -> diff --git a/app/assets/javascripts/embed_video.js.coffee b/app/assets/javascripts/embed_video.js.coffee index 6f7ef12a4..163f831c7 100644 --- a/app/assets/javascripts/embed_video.js.coffee +++ b/app/assets/javascripts/embed_video.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.EmbedVideo = initialize: -> diff --git a/app/assets/javascripts/fixed_bar.js.coffee b/app/assets/javascripts/fixed_bar.js.coffee index f1ba7550f..59b3255f0 100644 --- a/app/assets/javascripts/fixed_bar.js.coffee +++ b/app/assets/javascripts/fixed_bar.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.FixedBar = initialize: -> $("[data-fixed-bar]").each -> diff --git a/app/assets/javascripts/flaggable.js.coffee b/app/assets/javascripts/flaggable.js.coffee index 411723368..fe5709ddd 100644 --- a/app/assets/javascripts/flaggable.js.coffee +++ b/app/assets/javascripts/flaggable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Flaggable = update: (resource_id, button) -> diff --git a/app/assets/javascripts/followable.js.coffee b/app/assets/javascripts/followable.js.coffee index 5fad5f563..4f1d339d5 100644 --- a/app/assets/javascripts/followable.js.coffee +++ b/app/assets/javascripts/followable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Followable = update: (followable_id, button, notice) -> diff --git a/app/assets/javascripts/forms.js.coffee b/app/assets/javascripts/forms.js.coffee index 2ce43367c..a9ce6a8a9 100644 --- a/app/assets/javascripts/forms.js.coffee +++ b/app/assets/javascripts/forms.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Forms = disableEnter: -> diff --git a/app/assets/javascripts/foundation_extras.js.coffee b/app/assets/javascripts/foundation_extras.js.coffee index 92f20f6b4..e2c949daa 100644 --- a/app/assets/javascripts/foundation_extras.js.coffee +++ b/app/assets/javascripts/foundation_extras.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.FoundationExtras = clearSticky: -> $("[data-sticky]").foundation("destroy") if $("[data-sticky]").length diff --git a/app/assets/javascripts/gettext.js.coffee b/app/assets/javascripts/gettext.js.coffee index 4d9700921..2d954e56d 100644 --- a/app/assets/javascripts/gettext.js.coffee +++ b/app/assets/javascripts/gettext.js.coffee @@ -1,3 +1,5 @@ +"use strict" + i18n = { es: { "Comments": "Comentarios", diff --git a/app/assets/javascripts/globalize.js.coffee b/app/assets/javascripts/globalize.js.coffee index 7ab123707..f65e14668 100644 --- a/app/assets/javascripts/globalize.js.coffee +++ b/app/assets/javascripts/globalize.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Globalize = selected_language: -> diff --git a/app/assets/javascripts/ie_alert.js.coffee b/app/assets/javascripts/ie_alert.js.coffee index 30c7620ce..75338974b 100644 --- a/app/assets/javascripts/ie_alert.js.coffee +++ b/app/assets/javascripts/ie_alert.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.IeAlert = set_cookie_and_hide: (event) -> event.preventDefault() diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 67a2e2370..7dbeeb382 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Imageable = initialize: -> diff --git a/app/assets/javascripts/investment_report_alert.js.coffee b/app/assets/javascripts/investment_report_alert.js.coffee index 91dc6ba44..d968deb55 100644 --- a/app/assets/javascripts/investment_report_alert.js.coffee +++ b/app/assets/javascripts/investment_report_alert.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.InvestmentReportAlert = initialize: -> $("#js-investment-report-alert").on "click", -> diff --git a/app/assets/javascripts/legislation.js.coffee b/app/assets/javascripts/legislation.js.coffee index ec104f2e2..d2c710c80 100644 --- a/app/assets/javascripts/legislation.js.coffee +++ b/app/assets/javascripts/legislation.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Legislation = initialize: -> diff --git a/app/assets/javascripts/legislation_admin.js.coffee b/app/assets/javascripts/legislation_admin.js.coffee index c64826224..847c39663 100644 --- a/app/assets/javascripts/legislation_admin.js.coffee +++ b/app/assets/javascripts/legislation_admin.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.LegislationAdmin = initialize: -> diff --git a/app/assets/javascripts/legislation_allegations.js.coffee b/app/assets/javascripts/legislation_allegations.js.coffee index 3a3f9ce4d..4823d1e58 100644 --- a/app/assets/javascripts/legislation_allegations.js.coffee +++ b/app/assets/javascripts/legislation_allegations.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.LegislationAllegations = toggle_comments: -> diff --git a/app/assets/javascripts/legislation_annotatable.js.coffee b/app/assets/javascripts/legislation_annotatable.js.coffee index 46f95e114..4337d0771 100644 --- a/app/assets/javascripts/legislation_annotatable.js.coffee +++ b/app/assets/javascripts/legislation_annotatable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.LegislationAnnotatable = makeEditableAndHighlight: (colour) -> diff --git a/app/assets/javascripts/location_changer.js.coffee b/app/assets/javascripts/location_changer.js.coffee index 630cd1b11..409e5a3c0 100644 --- a/app/assets/javascripts/location_changer.js.coffee +++ b/app/assets/javascripts/location_changer.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.LocationChanger = initialize: -> diff --git a/app/assets/javascripts/managers.js.coffee b/app/assets/javascripts/managers.js.coffee index 63218f2f5..b0d33ad81 100644 --- a/app/assets/javascripts/managers.js.coffee +++ b/app/assets/javascripts/managers.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Managers = generatePassword: -> diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index 8bbb4abbf..358e78968 100644 --- a/app/assets/javascripts/map.js.coffee +++ b/app/assets/javascripts/map.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Map = initialize: -> diff --git a/app/assets/javascripts/markdown_editor.js.coffee b/app/assets/javascripts/markdown_editor.js.coffee index b3dc7c14e..349c50c27 100644 --- a/app/assets/javascripts/markdown_editor.js.coffee +++ b/app/assets/javascripts/markdown_editor.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.MarkdownEditor = refresh_preview: (element, md) -> diff --git a/app/assets/javascripts/modal_download.js.coffee b/app/assets/javascripts/modal_download.js.coffee index b4cad86dc..ef35a9a65 100644 --- a/app/assets/javascripts/modal_download.js.coffee +++ b/app/assets/javascripts/modal_download.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModalDownload = enableButton: -> diff --git a/app/assets/javascripts/moderator_budget_investments.js.coffee b/app/assets/javascripts/moderator_budget_investments.js.coffee index 612a058a4..4bcb49ad1 100644 --- a/app/assets/javascripts/moderator_budget_investments.js.coffee +++ b/app/assets/javascripts/moderator_budget_investments.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModeratorBudgetInvestments = add_class_faded: (id) -> diff --git a/app/assets/javascripts/moderator_comment.js.coffee b/app/assets/javascripts/moderator_comment.js.coffee index fcc6e92c1..0e866d762 100644 --- a/app/assets/javascripts/moderator_comment.js.coffee +++ b/app/assets/javascripts/moderator_comment.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModeratorComments = add_class_faded: (id) -> diff --git a/app/assets/javascripts/moderator_debates.js.coffee b/app/assets/javascripts/moderator_debates.js.coffee index 7cb25eb51..39bd7df10 100644 --- a/app/assets/javascripts/moderator_debates.js.coffee +++ b/app/assets/javascripts/moderator_debates.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModeratorDebates = add_class_faded: (id) -> diff --git a/app/assets/javascripts/moderator_proposal_notifications.js.coffee b/app/assets/javascripts/moderator_proposal_notifications.js.coffee index b2e8fbf44..12c9040d1 100644 --- a/app/assets/javascripts/moderator_proposal_notifications.js.coffee +++ b/app/assets/javascripts/moderator_proposal_notifications.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModeratorProposalNotifications = add_class_faded: (id) -> diff --git a/app/assets/javascripts/moderator_proposals.js.coffee b/app/assets/javascripts/moderator_proposals.js.coffee index 2106b5c65..2920ab58f 100644 --- a/app/assets/javascripts/moderator_proposals.js.coffee +++ b/app/assets/javascripts/moderator_proposals.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ModeratorProposals = add_class_faded: (id) -> diff --git a/app/assets/javascripts/polls.js.coffee b/app/assets/javascripts/polls.js.coffee index 3690a6011..6b7cae960 100644 --- a/app/assets/javascripts/polls.js.coffee +++ b/app/assets/javascripts/polls.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Polls = generateToken: -> token = "" diff --git a/app/assets/javascripts/polls_admin.js.coffee b/app/assets/javascripts/polls_admin.js.coffee index a2d0569a7..fb5e954d4 100644 --- a/app/assets/javascripts/polls_admin.js.coffee +++ b/app/assets/javascripts/polls_admin.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.PollsAdmin = initialize: -> diff --git a/app/assets/javascripts/prevent_double_submission.js.coffee b/app/assets/javascripts/prevent_double_submission.js.coffee index eefb8a9fe..acfaa1068 100644 --- a/app/assets/javascripts/prevent_double_submission.js.coffee +++ b/app/assets/javascripts/prevent_double_submission.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.PreventDoubleSubmission = disable_buttons: (buttons) -> setTimeout -> diff --git a/app/assets/javascripts/questions.js.coffee b/app/assets/javascripts/questions.js.coffee index 72023a841..bf9078be2 100644 --- a/app/assets/javascripts/questions.js.coffee +++ b/app/assets/javascripts/questions.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Questions = nestedQuestions: -> diff --git a/app/assets/javascripts/registration_form.js.coffee b/app/assets/javascripts/registration_form.js.coffee index 5407151c9..dec7c4e1f 100644 --- a/app/assets/javascripts/registration_form.js.coffee +++ b/app/assets/javascripts/registration_form.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.RegistrationForm = initialize: -> diff --git a/app/assets/javascripts/send_admin_notification_alert.js.coffee b/app/assets/javascripts/send_admin_notification_alert.js.coffee index c2c9f1195..5bb03f7e7 100644 --- a/app/assets/javascripts/send_admin_notification_alert.js.coffee +++ b/app/assets/javascripts/send_admin_notification_alert.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.SendAdminNotificationAlert = initialize: -> $("#js-send-admin_notification-alert").on "click", -> diff --git a/app/assets/javascripts/send_newsletter_alert.js.coffee b/app/assets/javascripts/send_newsletter_alert.js.coffee index e8e3e5f2a..834d90778 100644 --- a/app/assets/javascripts/send_newsletter_alert.js.coffee +++ b/app/assets/javascripts/send_newsletter_alert.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.SendNewsletterAlert = initialize: -> $("#js-send-newsletter-alert").on "click", -> diff --git a/app/assets/javascripts/settings.js.coffee b/app/assets/javascripts/settings.js.coffee index beb70d7af..cb3313d44 100644 --- a/app/assets/javascripts/settings.js.coffee +++ b/app/assets/javascripts/settings.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Settings = initialize: -> diff --git a/app/assets/javascripts/social_share.js.coffee b/app/assets/javascripts/social_share.js.coffee index 5776fd555..1ebde6d16 100644 --- a/app/assets/javascripts/social_share.js.coffee +++ b/app/assets/javascripts/social_share.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.SocialShare = initialize: -> diff --git a/app/assets/javascripts/sortable.js.coffee b/app/assets/javascripts/sortable.js.coffee index 1e24da891..09d3050f4 100644 --- a/app/assets/javascripts/sortable.js.coffee +++ b/app/assets/javascripts/sortable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Sortable = initialize: -> $(".sortable").sortable diff --git a/app/assets/javascripts/stat_graphs.js b/app/assets/javascripts/stat_graphs.js index 256078a85..479e20287 100644 --- a/app/assets/javascripts/stat_graphs.js +++ b/app/assets/javascripts/stat_graphs.js @@ -4,10 +4,14 @@ //= require stats var initialize_stats_modules = function() { + "use strict"; + App.Stats.initialize(); }; $(function(){ + "use strict"; + $(document).ready(initialize_stats_modules); $(document).on("page:load", initialize_stats_modules); $(document).on("ajax:complete", initialize_stats_modules); diff --git a/app/assets/javascripts/stats.js.coffee b/app/assets/javascripts/stats.js.coffee index cbf7dc678..0cb687230 100644 --- a/app/assets/javascripts/stats.js.coffee +++ b/app/assets/javascripts/stats.js.coffee @@ -1,3 +1,5 @@ +"use strict" + # Helper for generate C3.js graphs #---------------------------------------------------------------------- diff --git a/app/assets/javascripts/suggest.js.coffee b/app/assets/javascripts/suggest.js.coffee index c8e242cf6..24159e36a 100644 --- a/app/assets/javascripts/suggest.js.coffee +++ b/app/assets/javascripts/suggest.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Suggest = initialize: -> diff --git a/app/assets/javascripts/table_sortable.js.coffee b/app/assets/javascripts/table_sortable.js.coffee index 80f429239..784147327 100644 --- a/app/assets/javascripts/table_sortable.js.coffee +++ b/app/assets/javascripts/table_sortable.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.TableSortable = getCellValue: (row, index) -> $(row).children("td").eq(index).text() diff --git a/app/assets/javascripts/tag_autocomplete.js.coffee b/app/assets/javascripts/tag_autocomplete.js.coffee index 73c1b31f3..f1230e058 100644 --- a/app/assets/javascripts/tag_autocomplete.js.coffee +++ b/app/assets/javascripts/tag_autocomplete.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.TagAutocomplete = split: ( val ) -> diff --git a/app/assets/javascripts/tags.js.coffee b/app/assets/javascripts/tags.js.coffee index 21d5ee39b..21c53cbc9 100644 --- a/app/assets/javascripts/tags.js.coffee +++ b/app/assets/javascripts/tags.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Tags = initialize: -> diff --git a/app/assets/javascripts/tree_navigator.js.coffee b/app/assets/javascripts/tree_navigator.js.coffee index 96ca16eb3..4ba26dfe0 100644 --- a/app/assets/javascripts/tree_navigator.js.coffee +++ b/app/assets/javascripts/tree_navigator.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.TreeNavigator = setNodes: (nodes) -> children = nodes.children("ul") diff --git a/app/assets/javascripts/users.js.coffee b/app/assets/javascripts/users.js.coffee index 29039de95..b5da545fa 100644 --- a/app/assets/javascripts/users.js.coffee +++ b/app/assets/javascripts/users.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Users = initialize: -> diff --git a/app/assets/javascripts/valuation_budget_investment_form.js.coffee b/app/assets/javascripts/valuation_budget_investment_form.js.coffee index 51fb1d156..6aec6be07 100644 --- a/app/assets/javascripts/valuation_budget_investment_form.js.coffee +++ b/app/assets/javascripts/valuation_budget_investment_form.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.ValuationBudgetInvestmentForm = showFeasibleFields: -> diff --git a/app/assets/javascripts/votations.js.coffee b/app/assets/javascripts/votations.js.coffee index ab22c2afa..2ce9333d0 100644 --- a/app/assets/javascripts/votations.js.coffee +++ b/app/assets/javascripts/votations.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Votations = checkMaxVotes: -> diff --git a/app/assets/javascripts/votes.js.coffee b/app/assets/javascripts/votes.js.coffee index d0bed54ad..ec57df968 100644 --- a/app/assets/javascripts/votes.js.coffee +++ b/app/assets/javascripts/votes.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.Votes = hoverize: (votes) -> diff --git a/app/assets/javascripts/watch_form_changes.js.coffee b/app/assets/javascripts/watch_form_changes.js.coffee index 739658011..acf02c312 100644 --- a/app/assets/javascripts/watch_form_changes.js.coffee +++ b/app/assets/javascripts/watch_form_changes.js.coffee @@ -1,3 +1,5 @@ +"use strict" + App.WatchFormChanges = forms: -> return $("form[data-watch-changes]") From 00d7c92e8673b5f7be55764b4175a7badb178040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 30 Jun 2019 23:57:01 +0200 Subject: [PATCH 15/19] Don't assign in conditionals The assignment operator can easily be mistaken with the equality operator when used in a condition, making the code more difficult to read. --- app/assets/javascripts/tree_navigator.js.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/tree_navigator.js.coffee b/app/assets/javascripts/tree_navigator.js.coffee index 4ba26dfe0..7b531d7b2 100644 --- a/app/assets/javascripts/tree_navigator.js.coffee +++ b/app/assets/javascripts/tree_navigator.js.coffee @@ -28,7 +28,9 @@ App.TreeNavigator = elem.removeClass("closed").addClass("open") elem.siblings("ul").show() - if anchor = $(location).attr("hash") + anchor = $(location).attr("hash") + + if anchor elem.find("a[href='#{anchor}']").parents("ul").each -> $(this).show() $(this).siblings("span").removeClass("closed").addClass("open") From ba325526aeee106cbf372fb8427b6b6cbe790b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 1 Jul 2019 00:43:52 +0200 Subject: [PATCH 16/19] Use `Array.apply` to repeat a loop In JavaScript we cannot easily repeat something N times, and CoffeeScript's range loop compiles into complex JavaScript. We could also use `Array.from({ length: N })`, but that's not supported by old browsers like Internet Explorer 11. --- app/assets/javascripts/managers.js.coffee | 15 +++++++-------- app/assets/javascripts/polls.js.coffee | 10 +++------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/managers.js.coffee b/app/assets/javascripts/managers.js.coffee index b0d33ad81..9e112900c 100644 --- a/app/assets/javascripts/managers.js.coffee +++ b/app/assets/javascripts/managers.js.coffee @@ -3,14 +3,13 @@ App.Managers = generatePassword: -> - chars = "aAbcdeEfghiJkmnpqrstuUvwxyz23456789" - pass = "" - x = 0 - while x < 12 - i = Math.floor(Math.random() * chars.length) - pass += chars.charAt(i) - x++ - return pass + possible_chars = "aAbcdeEfghiJkmnpqrstuUvwxyz23456789" + + chars = Array.apply(null, length: 12).map -> + i = Math.floor(Math.random() * possible_chars.length) + possible_chars.charAt(i) + + chars.join("") togglePassword: (type) -> $("#user_password").prop "type", type diff --git a/app/assets/javascripts/polls.js.coffee b/app/assets/javascripts/polls.js.coffee index 6b7cae960..0dae792b0 100644 --- a/app/assets/javascripts/polls.js.coffee +++ b/app/assets/javascripts/polls.js.coffee @@ -2,14 +2,10 @@ App.Polls = generateToken: -> - token = "" - rand = "" - for n in [0..5] - rand = Math.random().toString(36).substr(2) # remove `0.` - token = token + rand + strings = Array.apply(null, length: 6).map -> + Math.random().toString(36).substr(2) # remove `0.` - token = token.substring(0, 64) - return token + strings.join("").substring(0, 64) replaceToken: (token) -> $(".js-question-answer").each -> From cc7e0d586b50f77a257e050a7b161c5f780bcef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 1 Jul 2019 17:11:54 +0200 Subject: [PATCH 17/19] Reduce local variables usage in CoffeeScript Local variables are one of the things CoffeeScript doesn't compile to modern JavaScript automatically: it uses `var` instead of `const` or `let`. Besides, using `$this = $(this)` is usually done to reference the current object in another function where the current object is a different one. Here we were using it with no clear purpose. --- .../javascripts/checkbox_toggle.js.coffee | 5 ++--- .../javascripts/columns_selector.js.coffee | 6 ++---- app/assets/javascripts/comments.js.coffee | 9 +++------ app/assets/javascripts/documentable.js.coffee | 4 +--- app/assets/javascripts/forms.js.coffee | 4 +--- app/assets/javascripts/globalize.js.coffee | 6 ++---- app/assets/javascripts/imageable.js.coffee | 3 +-- .../legislation_annotatable.js.coffee | 12 ++++-------- app/assets/javascripts/managers.js.coffee | 3 +-- app/assets/javascripts/map.js.coffee | 7 ++----- .../javascripts/markdown_editor.js.coffee | 4 ++-- app/assets/javascripts/polls.js.coffee | 3 +-- app/assets/javascripts/social_share.js.coffee | 4 +--- app/assets/javascripts/tags.js.coffee | 6 ++---- app/assets/javascripts/tree_navigator.js.coffee | 17 +++++++---------- .../javascripts/watch_form_changes.js.coffee | 3 +-- 16 files changed, 33 insertions(+), 63 deletions(-) diff --git a/app/assets/javascripts/checkbox_toggle.js.coffee b/app/assets/javascripts/checkbox_toggle.js.coffee index 3368e8a68..0121b0b3a 100644 --- a/app/assets/javascripts/checkbox_toggle.js.coffee +++ b/app/assets/javascripts/checkbox_toggle.js.coffee @@ -4,9 +4,8 @@ App.CheckboxToggle = initialize: -> $("[data-checkbox-toggle]").on "change", -> - $this = $(this) - $target = $($this.data("checkbox-toggle")) - if $this.is(":checked") + $target = $($(this).data("checkbox-toggle")) + if $(this).is(":checked") $target.show() else $target.hide() diff --git a/app/assets/javascripts/columns_selector.js.coffee b/app/assets/javascripts/columns_selector.js.coffee index 0bcb78e4f..312f2e129 100644 --- a/app/assets/javascripts/columns_selector.js.coffee +++ b/app/assets/javascripts/columns_selector.js.coffee @@ -41,12 +41,10 @@ App.ColumnsSelector = $(".column-selector-item input").prop("checked", false) toggleColumn: (event) -> - column = $(event.target).data("column") - App.ColumnsSelector.displayColumn(column) + App.ColumnsSelector.displayColumn($(event.target).data("column")) displayColumn: (column) -> - item = $("#column_selector_" + column) - if item.prop("checked") + if $("#column_selector_" + column).prop("checked") $("[data-field=" + column + "]").removeClass("hidden") else $("[data-field=" + column + "]").addClass("hidden") diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index 87b4d3683..cbd84f8c2 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -42,12 +42,9 @@ App.Comments = initialize: -> $("body .js-add-comment-link").each -> - $this = $(this) - - unless $this.data("initialized") is "yes" - $this.on("click", -> - id = $(this).data().id - App.Comments.toggle_form(id) + unless $(this).data("initialized") is "yes" + $(this).on("click", -> + App.Comments.toggle_form($(this).data().id) false ).data "initialized", "yes" diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index a81f4b120..9287304c2 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -3,9 +3,7 @@ App.Documentable = initialize: -> - - inputFiles = $(".js-document-attachment") - inputFiles.each -> + $(".js-document-attachment").each -> App.Documentable.initializeDirectUploadInput(this) $("#nested-documents").on "cocoon:after-remove", -> diff --git a/app/assets/javascripts/forms.js.coffee b/app/assets/javascripts/forms.js.coffee index a9ce6a8a9..bc56e8b04 100644 --- a/app/assets/javascripts/forms.js.coffee +++ b/app/assets/javascripts/forms.js.coffee @@ -27,9 +27,7 @@ App.Forms = synchronizeInputs: -> progress_bar = "[name='progress_bar[percentage]']" - process_background = "[name='legislation_process[background_color]']" - process_font = ", [name='legislation_process[font_color]']" - processes = process_background + process_font + processes = "[name='legislation_process[background_color]'], [name='legislation_process[font_color]']" banners = "[name='banner[background_color]'], [name='banner[font_color]']" inputs = $("#{progress_bar}, #{processes}, #{banners}") diff --git a/app/assets/javascripts/globalize.js.coffee b/app/assets/javascripts/globalize.js.coffee index f65e14668..46976864f 100644 --- a/app/assets/javascripts/globalize.js.coffee +++ b/app/assets/javascripts/globalize.js.coffee @@ -89,14 +89,12 @@ App.Globalize = App.Globalize.update_description() $(".js-select-language").on "change", -> - locale = $(this).val() - App.Globalize.display_translations(locale) + App.Globalize.display_translations($(this).val()) $(".js-delete-language").on "click", (e) -> e.preventDefault() - locale = $(this).data("locale") + App.Globalize.remove_language($(this).data("locale")) $(this).hide() - App.Globalize.remove_language(locale) $(".js-add-fields-container").on "cocoon:after-insert", -> App.Globalize.enabled_locales().forEach (locale) -> diff --git a/app/assets/javascripts/imageable.js.coffee b/app/assets/javascripts/imageable.js.coffee index 7dbeeb382..656514484 100644 --- a/app/assets/javascripts/imageable.js.coffee +++ b/app/assets/javascripts/imageable.js.coffee @@ -3,8 +3,7 @@ App.Imageable = initialize: -> - inputFiles = $(".js-image-attachment") - inputFiles.each -> + $(".js-image-attachment").each -> App.Imageable.initializeDirectUploadInput(this) $("#nested-image").on "cocoon:after-remove", -> diff --git a/app/assets/javascripts/legislation_annotatable.js.coffee b/app/assets/javascripts/legislation_annotatable.js.coffee index 4337d0771..fc985e749 100644 --- a/app/assets/javascripts/legislation_annotatable.js.coffee +++ b/app/assets/javascripts/legislation_annotatable.js.coffee @@ -20,7 +20,7 @@ App.LegislationAnnotatable = try if !document.execCommand("BackColor", false, colour) App.LegislationAnnotatable.makeEditableAndHighlight colour - catch ex + catch App.LegislationAnnotatable.makeEditableAndHighlight colour return @@ -182,9 +182,8 @@ App.LegislationAnnotatable = current_user_id = $("html").data("current-user-id") $(".legislation-annotatable").each -> - $this = $(this) - ann_id = $this.data("legislation-draft-version-id") - base_url = $this.data("legislation-annotatable-base-url") + ann_id = $(this).data("legislation-draft-version-id") + base_url = $(this).data("legislation-annotatable-base-url") App.LegislationAnnotatable.app = new annotator.App() .include -> @@ -203,7 +202,4 @@ App.LegislationAnnotatable = App.LegislationAnnotatable.app.start().then -> App.LegislationAnnotatable.app.ident.identity = current_user_id - - options = {} - options["legislation_draft_version_id"] = ann_id - App.LegislationAnnotatable.app.annotations.load(options) + App.LegislationAnnotatable.app.annotations.load(legislation_draft_version_id: ann_id) diff --git a/app/assets/javascripts/managers.js.coffee b/app/assets/javascripts/managers.js.coffee index 9e112900c..3ec7683c1 100644 --- a/app/assets/javascripts/managers.js.coffee +++ b/app/assets/javascripts/managers.js.coffee @@ -16,8 +16,7 @@ App.Managers = initialize: -> $(".generate-random-value").on "click", -> - password = App.Managers.generatePassword() - $("#user_password").val(password) + $("#user_password").val(App.Managers.generatePassword()) $(".show-password").on "click", -> if $("#user_password").is("input[type='password']") diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index 358e78968..25ef1dbbf 100644 --- a/app/assets/javascripts/map.js.coffee +++ b/app/assets/javascripts/map.js.coffee @@ -3,9 +3,7 @@ App.Map = initialize: -> - maps = $("*[data-map]") - - maps.each -> + $("*[data-map]").each -> App.Map.initializeMap(this) $(".js-toggle-map").on @@ -83,8 +81,7 @@ App.Map = e.target.bindPopup(getPopupContent(data)).openPopup() getPopupContent = (data) -> - content = "#{data["investment_title"]}" - return content + "#{data["investment_title"]}" mapCenterLatLng = new (L.LatLng)(mapCenterLatitude, mapCenterLongitude) map = L.map(element.id).setView(mapCenterLatLng, zoom) diff --git a/app/assets/javascripts/markdown_editor.js.coffee b/app/assets/javascripts/markdown_editor.js.coffee index 349c50c27..eb10c3108 100644 --- a/app/assets/javascripts/markdown_editor.js.coffee +++ b/app/assets/javascripts/markdown_editor.js.coffee @@ -34,8 +34,8 @@ App.MarkdownEditor = editor.toggleClass("fullscreen") $(".fullscreen-container").toggleClass("medium-8", "medium-12") span = $(this).find("span") - current_html = span.html() - if(current_html == span.data("open-text")) + + if(span.html() == span.data("open-text")) span.html(span.data("closed-text")) else span.html(span.data("open-text")) diff --git a/app/assets/javascripts/polls.js.coffee b/app/assets/javascripts/polls.js.coffee index 0dae792b0..db6c0619c 100644 --- a/app/assets/javascripts/polls.js.coffee +++ b/app/assets/javascripts/polls.js.coffee @@ -18,8 +18,7 @@ App.Polls = App.Polls.replaceToken(token) $(".zoom-link").on "click", (event) -> - element = event.target - answer = $(element).closest("div.answer") + answer = $(event.target).closest("div.answer") if $(answer).hasClass("medium-6") $(answer).removeClass("medium-6") diff --git a/app/assets/javascripts/social_share.js.coffee b/app/assets/javascripts/social_share.js.coffee index 1ebde6d16..4a89dfbe4 100644 --- a/app/assets/javascripts/social_share.js.coffee +++ b/app/assets/javascripts/social_share.js.coffee @@ -4,6 +4,4 @@ App.SocialShare = initialize: -> $(".social-share-button a").each -> - element = $(this) - site = element.data("site") - element.append("#{site}") + $(this).append("#{$(this).data("site")}") diff --git a/app/assets/javascripts/tags.js.coffee b/app/assets/javascripts/tags.js.coffee index 21c53cbc9..f29b384a7 100644 --- a/app/assets/javascripts/tags.js.coffee +++ b/app/assets/javascripts/tags.js.coffee @@ -6,10 +6,8 @@ App.Tags = $tag_input = $("input.js-tag-list") $("body .js-add-tag-link").each -> - $this = $(this) - - unless $this.data("initialized") is "yes" - $this.on("click", -> + unless $(this).data("initialized") is "yes" + $(this).on("click", -> name = "\"#{$(this).text()}\"" current_tags = $tag_input.val().split(",").filter(Boolean) diff --git a/app/assets/javascripts/tree_navigator.js.coffee b/app/assets/javascripts/tree_navigator.js.coffee index 7b531d7b2..066967e0c 100644 --- a/app/assets/javascripts/tree_navigator.js.coffee +++ b/app/assets/javascripts/tree_navigator.js.coffee @@ -2,9 +2,7 @@ App.TreeNavigator = setNodes: (nodes) -> - children = nodes.children("ul") - - children.each -> + nodes.children("ul").each -> link = $(this).prev("a") $('').insertBefore(link) App.TreeNavigator.setNodes($(this).children()) @@ -20,13 +18,12 @@ App.TreeNavigator = $("[data-tree-navigator] span").on click: -> - elem = $(this) - if(elem.hasClass("open")) - elem.removeClass("open").addClass("closed") - elem.siblings("ul").hide() - else if(elem.hasClass("closed")) - elem.removeClass("closed").addClass("open") - elem.siblings("ul").show() + if($(this).hasClass("open")) + $(this).removeClass("open").addClass("closed") + $(this).siblings("ul").hide() + else if($(this).hasClass("closed")) + $(this).removeClass("closed").addClass("open") + $(this).siblings("ul").show() anchor = $(location).attr("hash") diff --git a/app/assets/javascripts/watch_form_changes.js.coffee b/app/assets/javascripts/watch_form_changes.js.coffee index acf02c312..2f3e70eba 100644 --- a/app/assets/javascripts/watch_form_changes.js.coffee +++ b/app/assets/javascripts/watch_form_changes.js.coffee @@ -24,5 +24,4 @@ App.WatchFormChanges = $(document).off("page:before-change").on("page:before-change", App.WatchFormChanges.checkChanges) App.WatchFormChanges.forms().each -> - form = $(this) - form.data("watchChanges", form.serialize()) + $(this).data("watchChanges", $(this).serialize()) From f83f0f08be755d95ec846450b73e40b20d0b8449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 1 Jul 2019 22:16:15 +0200 Subject: [PATCH 18/19] Fix typo --- app/assets/javascripts/forms.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/forms.js.coffee b/app/assets/javascripts/forms.js.coffee index bc56e8b04..e81ec0668 100644 --- a/app/assets/javascripts/forms.js.coffee +++ b/app/assets/javascripts/forms.js.coffee @@ -5,7 +5,7 @@ App.Forms = disableEnter: -> $("form.js-enter-disabled").on("keyup keypress", (event) -> if event.which == 13 - e.preventDefault() + event.preventDefault() ) submitOnChange: -> From d8be18d6a9047c038246648d1e2174a44d887374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 2 Jul 2019 15:06:21 +0200 Subject: [PATCH 19/19] Use double quotes in CoffeeScript We accidentally added some single quotes recently. --- app/assets/javascripts/answers.js.coffee | 4 +- app/assets/javascripts/application.js | 2 +- app/assets/javascripts/ckeditor/loader.js.erb | 2 +- app/assets/javascripts/cookies.js.coffee | 12 ++--- app/assets/javascripts/dashboard_graphs.js | 54 +++++++++---------- .../javascripts/modal_download.js.coffee | 2 +- app/assets/javascripts/questions.js.coffee | 4 +- 7 files changed, 40 insertions(+), 40 deletions(-) diff --git a/app/assets/javascripts/answers.js.coffee b/app/assets/javascripts/answers.js.coffee index caa1b18d9..3a2fb10b1 100644 --- a/app/assets/javascripts/answers.js.coffee +++ b/app/assets/javascripts/answers.js.coffee @@ -3,7 +3,7 @@ App.Answers = initializeAnswers: (answers) -> - $(answers).on 'cocoon:after-insert', (e, new_answer) -> + $(answers).on "cocoon:after-insert", (e, new_answer) -> given_order = App.Answers.maxGivenOrder(answers) + 1 $(new_answer).find("[name$='[given_order]']").val(given_order) @@ -15,7 +15,7 @@ App.Answers = return max_order nestedAnswers: -> - $('.js-answers').each (index, answers) -> + $(".js-answers").each (index, answers) -> App.Answers.initializeAnswers(answers) initialize: -> diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 757ea52f3..8381fd0fc 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -135,7 +135,7 @@ var initialize_modules = function() { App.SendAdminNotificationAlert.initialize(); App.ModalDownload.initialize(); App.Settings.initialize(); - if ( $('#js-columns-selector').length ) + if ( $("#js-columns-selector").length ) App.ColumnsSelector.initialize(); App.BudgetEditAssociations.initialize(); if ( $("#votation_type_enum_type").length ) diff --git a/app/assets/javascripts/ckeditor/loader.js.erb b/app/assets/javascripts/ckeditor/loader.js.erb index a01df8811..9f0d7a2a3 100644 --- a/app/assets/javascripts/ckeditor/loader.js.erb +++ b/app/assets/javascripts/ckeditor/loader.js.erb @@ -1,3 +1,3 @@ //= require ckeditor/init -CKEDITOR.config.customConfig = "<%= javascript_path 'ckeditor/config.js' %>"; +CKEDITOR.config.customConfig = "<%= javascript_path "ckeditor/config.js" %>"; diff --git a/app/assets/javascripts/cookies.js.coffee b/app/assets/javascripts/cookies.js.coffee index 1c317b7fc..aa5a875f6 100644 --- a/app/assets/javascripts/cookies.js.coffee +++ b/app/assets/javascripts/cookies.js.coffee @@ -7,19 +7,19 @@ App.Cookies = if days date = new Date date.setTime date.getTime() + days * 24 * 60 * 60 * 1000 - expires = '; expires=' + date.toGMTString() + expires = "; expires=" + date.toGMTString() else - expires = '' - document.cookie = name + '=' + value + expires + '; path=/' + expires = "" + document.cookie = name + "=" + value + expires + "; path=/" return getCookie: (name) -> if document.cookie.length > 0 - c_start = document.cookie.indexOf(name + '=') + c_start = document.cookie.indexOf(name + "=") if c_start != -1 c_start = c_start + name.length + 1 - c_end = document.cookie.indexOf(';', c_start) + c_end = document.cookie.indexOf(";", c_start) if c_end == -1 c_end = document.cookie.length return unescape(document.cookie.substring(c_start, c_end)) - '' + "" diff --git a/app/assets/javascripts/dashboard_graphs.js b/app/assets/javascripts/dashboard_graphs.js index 18ec9b83f..261bc5293 100644 --- a/app/assets/javascripts/dashboard_graphs.js +++ b/app/assets/javascripts/dashboard_graphs.js @@ -5,7 +5,7 @@ // TODO: This module is complex enough to require its own tests. Rewrite it using Ecma6 class syntax and // write tests for this feature after consul has been migrated to Rails 5.1 (function(){ - 'use strict'; + "use strict"; var ProposalGraph = function(url) { this.url = url; @@ -15,9 +15,9 @@ this.groupBy = null; this.proposalSuccess = null; this.maximumValue = 0; - this.progressLabel = 'Progress'; - this.supportsLabel = 'Supports'; - this.successLabel = 'Success'; + this.progressLabel = "Progress"; + this.supportsLabel = "Supports"; + this.successLabel = "Success"; this.goals = null; this.achievements = null; this.xColumnValues = null; @@ -132,7 +132,7 @@ this.achievements.push({ value: this.formatGroup(group), text: data[group].title, - position: 'start' + position: "start" }); } } @@ -150,13 +150,13 @@ this.formatXColumnValues(); - colors[this.progressColumnValues[0]] = '#004a83'; - colors[this.successfulColumnValues[0]] = '#ff7f0e'; + colors[this.progressColumnValues[0]] = "#004a83"; + colors[this.successfulColumnValues[0]] = "#ff7f0e"; c3.generate({ - bindto: '#' + this.targetId, + bindto: "#" + this.targetId, data: { - x: 'x', + x: "x", columns: [ this.xColumnValues, this.progressColumnValues, @@ -166,7 +166,7 @@ color: function (color, d) { var achievement; - if (d.id === this.successfulColumnValues[0] || !Object.prototype.hasOwnProperty.call(d, 'x')) { + if (d.id === this.successfulColumnValues[0] || !Object.prototype.hasOwnProperty.call(d, "x")) { return color; } @@ -175,7 +175,7 @@ }.bind(this)); if (achievement !== undefined) { - return '#ff0000'; + return "#ff0000"; } return color; @@ -190,11 +190,11 @@ max: maximumValue, label: { text: this.supportsLabel, - position: 'outer-middle' + position: "outer-middle" } }, x: { - type: 'category', + type: "category", tick: { values: this.tickXValues(), centered: true @@ -217,7 +217,7 @@ }.bind(this)); if (achievement !== undefined) { - return this.xColumnValues[d + 1] + ': ' + achievement.text; + return this.xColumnValues[d + 1] + ": " + achievement.text; } return this.xColumnValues[d + 1]; @@ -270,7 +270,7 @@ } } - this.xColumnValues.unshift('x'); + this.xColumnValues.unshift("x"); }; ProposalGraph.prototype.formatGroup = function(group) { @@ -283,21 +283,21 @@ }; ProposalGraph.prototype.isDailyGrouped = function() { - return this.groupBy === undefined || this.groupBy === '' || this.groupBy === null; + return this.groupBy === undefined || this.groupBy === "" || this.groupBy === null; }; $(document).ready(function () { - $('[data-proposal-graph-url]').each(function () { - var graph = new ProposalGraph($(this).data('proposal-graph-url')); - graph.successfulProposalDataUrl = $(this).data('successful-proposal-graph-url'); - graph.proposalAchievementsUrl = $(this).data('proposal-achievements-url'); - graph.targetId = $(this).attr('id'); - graph.groupBy = $(this).data('proposal-graph-group-by'); - graph.progressLabel = $(this).data('proposal-graph-progress-label'); - graph.supportsLabel = $(this).data('proposal-graph-supports-label'); - graph.successLabel = $(this).data('proposal-graph-success-label'); - graph.proposalSuccess = parseInt($(this).data('proposal-success'), 10); - graph.resourcesUrl = $(this).data('proposal-resources-url'); + $("[data-proposal-graph-url]").each(function () { + var graph = new ProposalGraph($(this).data("proposal-graph-url")); + graph.successfulProposalDataUrl = $(this).data("successful-proposal-graph-url"); + graph.proposalAchievementsUrl = $(this).data("proposal-achievements-url"); + graph.targetId = $(this).attr("id"); + graph.groupBy = $(this).data("proposal-graph-group-by"); + graph.progressLabel = $(this).data("proposal-graph-progress-label"); + graph.supportsLabel = $(this).data("proposal-graph-supports-label"); + graph.successLabel = $(this).data("proposal-graph-success-label"); + graph.proposalSuccess = parseInt($(this).data("proposal-success"), 10); + graph.resourcesUrl = $(this).data("proposal-resources-url"); graph.refresh(); }); diff --git a/app/assets/javascripts/modal_download.js.coffee b/app/assets/javascripts/modal_download.js.coffee index ef35a9a65..a1e36010a 100644 --- a/app/assets/javascripts/modal_download.js.coffee +++ b/app/assets/javascripts/modal_download.js.coffee @@ -4,7 +4,7 @@ App.ModalDownload = enableButton: -> $("#js-download-modal-submit").attr("disabled", false) - $("#js-download-modal-submit").removeClass('disabled') + $("#js-download-modal-submit").removeClass("disabled") initialize: -> $("#js-download-modal-submit").on "click", -> diff --git a/app/assets/javascripts/questions.js.coffee b/app/assets/javascripts/questions.js.coffee index bf9078be2..cf396bffc 100644 --- a/app/assets/javascripts/questions.js.coffee +++ b/app/assets/javascripts/questions.js.coffee @@ -3,8 +3,8 @@ App.Questions = nestedQuestions: -> - $('.js-questions').on 'cocoon:after-insert', (e, new_question) -> - App.Answers.initializeAnswers($(new_question).find('.js-answers')) + $(".js-questions").on "cocoon:after-insert", (e, new_question) -> + App.Answers.initializeAnswers($(new_question).find(".js-answers")) initialize: -> App.Questions.nestedQuestions()