From 7f6474b269a5cfa454d28c0c0da969490c9eb33e Mon Sep 17 00:00:00 2001 From: Jared Deckard Date: Tue, 26 Jul 2016 22:32:10 -0500 Subject: Restore comments lost when converting CoffeeScript to JavaScript --- app/assets/javascripts/LabelManager.js | 5 ++ app/assets/javascripts/api.js | 6 ++ app/assets/javascripts/application.js | 21 ++++++ app/assets/javascripts/autosave.js | 6 +- app/assets/javascripts/awards_handler.js | 5 ++ app/assets/javascripts/behaviors/autosize.js | 2 - .../javascripts/behaviors/details_behavior.js | 6 ++ app/assets/javascripts/behaviors/quick_submit.js | 20 ++++- app/assets/javascripts/behaviors/requires_input.js | 19 ++++- .../javascripts/behaviors/toggler_behavior.js | 7 ++ app/assets/javascripts/blob/blob_file_dropzone.js | 3 + app/assets/javascripts/blob/template_selector.js | 3 + app/assets/javascripts/blob_edit/edit_blob.js | 2 + app/assets/javascripts/breakpoints.js | 2 + app/assets/javascripts/build.js | 8 ++ app/assets/javascripts/commit/image-file.js | 2 + app/assets/javascripts/commits.js | 1 + app/assets/javascripts/copy_to_clipboard.js | 7 +- app/assets/javascripts/diff.js | 3 + app/assets/javascripts/dispatcher.js | 4 + app/assets/javascripts/due_date_select.js | 3 + app/assets/javascripts/extensions/jquery.js | 2 + app/assets/javascripts/gfm_auto_complete.js.es6 | 24 ++++++ app/assets/javascripts/gl_dropdown.js | 64 ++++++++++++++++ app/assets/javascripts/gl_form.js | 6 ++ app/assets/javascripts/graphs/graphs_bundle.js | 8 +- .../graphs/stat_graph_contributors_graph.js | 1 + app/assets/javascripts/groups_select.js | 1 + app/assets/javascripts/issuable.js.es6 | 2 + app/assets/javascripts/issue.js | 9 ++- app/assets/javascripts/issues-bulk-assignment.js | 6 ++ app/assets/javascripts/labels.js | 3 + app/assets/javascripts/labels_select.js | 9 +++ app/assets/javascripts/lib/chart.js | 1 - app/assets/javascripts/lib/cropper.js | 1 - app/assets/javascripts/lib/d3.js | 1 - app/assets/javascripts/lib/raphael.js | 5 -- .../javascripts/lib/utils/datetime_utility.js | 1 + .../lib/utils/emoji_aliases.js.coffee.erb | 2 - .../javascripts/lib/utils/emoji_aliases.js.erb | 6 ++ app/assets/javascripts/lib/utils/notify.js | 5 ++ app/assets/javascripts/lib/utils/text_utility.js | 5 +- app/assets/javascripts/lib/utils/url_utility.js | 6 ++ app/assets/javascripts/line_highlighter.js | 69 ++++++++++++++++- app/assets/javascripts/merge_request.js | 15 +++- app/assets/javascripts/merge_request_tabs.js | 87 +++++++++++++++++++++- app/assets/javascripts/merge_request_widget.js | 8 ++ app/assets/javascripts/milestone.js | 1 + app/assets/javascripts/milestone_select.js | 1 + app/assets/javascripts/network/branch-graph.js | 13 ++++ app/assets/javascripts/network/network_bundle.js | 7 +- app/assets/javascripts/notes.js | 74 +++++++++++++++--- app/assets/javascripts/preview_markdown.js | 10 +++ app/assets/javascripts/profile/gl_crop.js | 12 ++- app/assets/javascripts/profile/profile.js | 4 + app/assets/javascripts/profile/profile_bundle.js | 1 - app/assets/javascripts/project.js | 6 ++ app/assets/javascripts/project_find_file.js | 9 +++ app/assets/javascripts/project_show.js | 2 + app/assets/javascripts/projects_list.js | 1 + .../javascripts/protected_branch_dropdown.js.es6 | 1 + app/assets/javascripts/search_autocomplete.js | 22 ++++++ app/assets/javascripts/shortcuts.js | 1 + app/assets/javascripts/shortcuts_find_file.js | 2 + app/assets/javascripts/shortcuts_issuable.js | 6 +- app/assets/javascripts/syntax_highlight.js | 11 +++ app/assets/javascripts/todos.js | 6 ++ app/assets/javascripts/tree.js | 3 + app/assets/javascripts/u2f/authenticate.js | 18 +++++ app/assets/javascripts/u2f/register.js | 7 ++ app/assets/javascripts/user_tabs.js | 69 +++++++++++++++++ app/assets/javascripts/users/calendar.js | 7 ++ app/assets/javascripts/users/users_bundle.js | 1 - app/assets/javascripts/users_select.js | 8 ++ app/assets/javascripts/zen_mode.js | 37 ++++++--- 75 files changed, 760 insertions(+), 62 deletions(-) delete mode 100644 app/assets/javascripts/lib/utils/emoji_aliases.js.coffee.erb create mode 100644 app/assets/javascripts/lib/utils/emoji_aliases.js.erb (limited to 'app/assets') diff --git a/app/assets/javascripts/LabelManager.js b/app/assets/javascripts/LabelManager.js index 151455ce4a3..d4a4c7abaa1 100644 --- a/app/assets/javascripts/LabelManager.js +++ b/app/assets/javascripts/LabelManager.js @@ -3,6 +3,7 @@ LabelManager.prototype.errorMessage = 'Unable to update label prioritization at this time'; function LabelManager(opts) { + // Defaults var ref, ref1, ref2; if (opts == null) { opts = {}; @@ -28,6 +29,7 @@ $btn = $(e.currentTarget); $label = $("#" + ($btn.data('domId'))); action = $btn.parents('.js-prioritized-labels').length ? 'remove' : 'add'; + // Make sure tooltip will hide $tooltip = $("#" + ($btn.find('.has-tooltip:visible').attr('aria-describedby'))); $tooltip.tooltip('destroy'); return _this.toggleLabelPriority($label, action); @@ -42,6 +44,7 @@ url = $label.find('.js-toggle-priority').data('url'); $target = this.prioritizedLabels; $from = this.otherLabels; + // Optimistic update if (action === 'remove') { $target = this.otherLabels; $from = this.prioritizedLabels; @@ -53,6 +56,7 @@ $target.find('.empty-message').addClass('hidden'); } $label.detach().appendTo($target); + // Return if we are not persisting state if (!persistState) { return; } @@ -61,6 +65,7 @@ url: url, type: 'DELETE' }); + // Restore empty message if (!$from.find('li').length) { $from.find('.empty-message').removeClass('hidden'); } diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 84b292e59c6..6df2ecf57a2 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -24,6 +24,8 @@ return callback(group); }); }, + // Return groups list. Filtered by query + // Only active groups retrieved groups: function(query, skip_ldap, callback) { var url = Api.buildUrl(Api.groupsPath); return $.ajax({ @@ -38,6 +40,7 @@ return callback(groups); }); }, + // Return namespaces list. Filtered by query namespaces: function(query, callback) { var url = Api.buildUrl(Api.namespacesPath); return $.ajax({ @@ -52,6 +55,7 @@ return callback(namespaces); }); }, + // Return projects list. Filtered by query projects: function(query, order, callback) { var url = Api.buildUrl(Api.projectsPath); return $.ajax({ @@ -82,6 +86,7 @@ return callback(message.responseJSON); }); }, + // Return group projects list. Filtered by query groupProjects: function(group_id, query, callback) { var url = Api.buildUrl(Api.groupProjectsPath) .replace(':id', group_id); @@ -97,6 +102,7 @@ return callback(projects); }); }, + // Return text for a specific license licenseText: function(key, data, callback) { var url = Api.buildUrl(Api.licensePath) .replace(':key', key); diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index fea6f41d5e9..31fa508d6c1 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -1,3 +1,9 @@ +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// /*= require jquery2 */ /*= require jquery-ui/autocomplete */ /*= require jquery-ui/datepicker */ @@ -76,6 +82,7 @@ } }; + // Disable button if text field is empty window.disableButtonIfEmptyField = function(field_selector, button_selector) { var closest_submit, field; field = $(field_selector); @@ -92,6 +99,7 @@ }); }; + // Disable button if any input field with given selector is empty window.disableButtonIfAnyEmptyField = function(form, form_selector, button_selector) { var closest_submit, updateButtons; closest_submit = form.find(button_selector); @@ -128,6 +136,8 @@ window.addEventListener("hashchange", shiftWindow); window.onload = function() { + // Scroll the window to avoid the topnav bar + // https://github.com/twitter/bootstrap/issues/1768 if (location.hash) { return setTimeout(shiftWindow, 100); } @@ -149,6 +159,8 @@ return $(this).select().one('mouseup', function(e) { return e.preventDefault(); }); + // Click a .js-select-on-focus field, select the contents + // Prevent a mouseup event from deselecting the input }); $('.remove-row').bind('ajax:success', function() { $(this).tooltip('destroy') @@ -163,6 +175,7 @@ }); $('select.select2').select2({ width: 'resolve', + // Initialize select2 selects dropdownAutoWidth: true }); $('.js-select2').bind('select2-close', function() { @@ -170,7 +183,9 @@ $('.select2-container-active').removeClass('select2-container-active'); return $(':focus').blur(); }), 1); + // Close select2 on escape }); + // Initialize tooltips $body.tooltip({ selector: '.has-tooltip, [data-toggle="tooltip"]', placement: function(_, el) { @@ -179,14 +194,17 @@ }); $('.trigger-submit').on('change', function() { return $(this).parents('form').submit(); + // Form submitter }); gl.utils.localTimeAgo($('abbr.timeago, .js-timeago'), true); + // Flash if ((flash = $(".flash-container")).length > 0) { flash.click(function() { return $(this).fadeOut(); }); flash.show(); } + // Disable form buttons while a form is submitting $body.on('ajax:complete, ajax:beforeSend, submit', 'form', function(e) { var buttons; buttons = $('[type="submit"]', this); @@ -207,6 +225,7 @@ } }); $('.account-box').hover(function() { + // Show/Hide the profile menu when hovering the account box return $(this).toggleClass('hover'); }); $document.on('click', '.diff-content .js-show-suppressed-diff', function() { @@ -214,6 +233,7 @@ $container = $(this).parent(); $container.next('table').show(); return $container.remove(); + // Commit show suppressed diff }); $('.navbar-toggle').on('click', function() { $('.header-content .title').toggle(); @@ -221,6 +241,7 @@ $('.header-content .navbar-collapse').toggle(); return $('.navbar-toggle').toggleClass('active'); }); + // Show/hide comments on diff $body.on("click", ".js-toggle-diff-comments", function(e) { var $this = $(this); $this.toggleClass('active'); diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 7116512d6b7..a9aec6e8ea4 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -16,7 +16,7 @@ } Autosave.prototype.restore = function() { - var e, error, text; + var e, text; if (window.localStorage == null) { return; } @@ -41,7 +41,7 @@ if ((text != null ? text.length : void 0) > 0) { try { return window.localStorage.setItem(this.key, text); - } catch (undefined) {} + } catch (error) {} } else { return this.reset(); } @@ -53,7 +53,7 @@ } try { return window.localStorage.removeItem(this.key); - } catch (undefined) {} + } catch (error) {} }; return Autosave; diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 5ea18ea8b7a..0decc6d09e6 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -86,6 +86,8 @@ AwardsHandler.prototype.positionMenu = function($menu, $addBtn) { var css, position; position = $addBtn.data('position'); + // The menu could potentially be off-screen or in a hidden overflow element + // So we position the element absolute in the body css = { top: ($addBtn.offset().top + $addBtn.outerHeight()) + "px" }; @@ -284,6 +286,7 @@ if (emojiIcon.length > 0) { unicodeName = emojiIcon.data('unicode-name'); } else { + // Find by alias unicodeName = $(".emoji-menu-content [data-aliases*=':" + emoji + ":']").data('unicode-name'); } return "emoji-" + unicodeName; @@ -350,8 +353,10 @@ return function(ev) { var found_emojis, h5, term, ul; term = $(ev.target).val(); + // Clean previous search results $('ul.emoji-menu-search, h5.emoji-search').remove(); if (term) { + // Generate a search result block h5 = $('
').text('Search results'); found_emojis = _this.searchEmojis(term).show(); ul = $('