From a607f343c5c28511e92e058a9556b89f897ae8c2 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 9 Jan 2018 12:10:53 +0000 Subject: Admin dispatcher JS imports --- app/assets/javascripts/abuse_reports.js | 36 ------------- app/assets/javascripts/admin.js | 59 ---------------------- app/assets/javascripts/broadcast_message.js | 28 ---------- app/assets/javascripts/dispatcher.js | 44 ++++++++-------- .../pages/admin/abuse_reports/abuse_reports.js | 36 +++++++++++++ .../javascripts/pages/admin/abuse_reports/index.js | 3 ++ app/assets/javascripts/pages/admin/admin.js | 59 ++++++++++++++++++++++ .../admin/broadcast_messages/broadcast_message.js | 28 ++++++++++ .../pages/admin/broadcast_messages/index.js | 3 ++ .../javascripts/pages/admin/cohorts/index.js | 3 ++ .../javascripts/pages/admin/cohorts/usage_ping.js | 12 +++++ .../javascripts/pages/admin/groups/edit/index.js | 3 ++ .../javascripts/pages/admin/groups/new/index.js | 9 ++++ .../javascripts/pages/admin/groups/show/index.js | 3 ++ .../pages/admin/impersonation_tokens/index.js | 3 ++ app/assets/javascripts/pages/admin/index.js | 3 ++ .../javascripts/pages/admin/labels/edit/index.js | 3 ++ .../javascripts/pages/admin/labels/new/index.js | 3 ++ .../javascripts/pages/admin/projects/index.js | 9 ++++ app/assets/javascripts/usage_ping.js | 12 ----- 20 files changed, 204 insertions(+), 155 deletions(-) delete mode 100644 app/assets/javascripts/abuse_reports.js delete mode 100644 app/assets/javascripts/admin.js delete mode 100644 app/assets/javascripts/broadcast_message.js create mode 100644 app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js create mode 100644 app/assets/javascripts/pages/admin/abuse_reports/index.js create mode 100644 app/assets/javascripts/pages/admin/admin.js create mode 100644 app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js create mode 100644 app/assets/javascripts/pages/admin/broadcast_messages/index.js create mode 100644 app/assets/javascripts/pages/admin/cohorts/index.js create mode 100644 app/assets/javascripts/pages/admin/cohorts/usage_ping.js create mode 100644 app/assets/javascripts/pages/admin/groups/edit/index.js create mode 100644 app/assets/javascripts/pages/admin/groups/new/index.js create mode 100644 app/assets/javascripts/pages/admin/groups/show/index.js create mode 100644 app/assets/javascripts/pages/admin/impersonation_tokens/index.js create mode 100644 app/assets/javascripts/pages/admin/index.js create mode 100644 app/assets/javascripts/pages/admin/labels/edit/index.js create mode 100644 app/assets/javascripts/pages/admin/labels/new/index.js create mode 100644 app/assets/javascripts/pages/admin/projects/index.js delete mode 100644 app/assets/javascripts/usage_ping.js (limited to 'app/assets') diff --git a/app/assets/javascripts/abuse_reports.js b/app/assets/javascripts/abuse_reports.js deleted file mode 100644 index d2d3a257c0d..00000000000 --- a/app/assets/javascripts/abuse_reports.js +++ /dev/null @@ -1,36 +0,0 @@ -import { truncate } from './lib/utils/text_utility'; - -const MAX_MESSAGE_LENGTH = 500; -const MESSAGE_CELL_SELECTOR = '.abuse-reports .message'; - -export default class AbuseReports { - constructor() { - $(MESSAGE_CELL_SELECTOR).each(this.truncateLongMessage); - $(document) - .off('click', MESSAGE_CELL_SELECTOR) - .on('click', MESSAGE_CELL_SELECTOR, this.toggleMessageTruncation); - } - - truncateLongMessage() { - const $messageCellElement = $(this); - const reportMessage = $messageCellElement.text(); - if (reportMessage.length > MAX_MESSAGE_LENGTH) { - $messageCellElement.data('original-message', reportMessage); - $messageCellElement.data('message-truncated', 'true'); - $messageCellElement.text(truncate(reportMessage, MAX_MESSAGE_LENGTH)); - } - } - - toggleMessageTruncation() { - const $messageCellElement = $(this); - const originalMessage = $messageCellElement.data('original-message'); - if (!originalMessage) return; - if ($messageCellElement.data('message-truncated') === 'true') { - $messageCellElement.data('message-truncated', 'false'); - $messageCellElement.text(originalMessage); - } else { - $messageCellElement.data('message-truncated', 'true'); - $messageCellElement.text(`${originalMessage.substr(0, (MAX_MESSAGE_LENGTH - 3))}...`); - } - } -} diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js deleted file mode 100644 index c1f7fa2aced..00000000000 --- a/app/assets/javascripts/admin.js +++ /dev/null @@ -1,59 +0,0 @@ -import { refreshCurrentPage } from './lib/utils/url_utility'; - -function showBlacklistType() { - if ($('input[name="blacklist_type"]:checked').val() === 'file') { - $('.blacklist-file').show(); - $('.blacklist-raw').hide(); - } else { - $('.blacklist-file').hide(); - $('.blacklist-raw').show(); - } -} - -export default function adminInit() { - const modal = $('.change-owner-holder'); - - $('input#user_force_random_password').on('change', function randomPasswordClick() { - const $elems = $('#user_password, #user_password_confirmation'); - if ($(this).attr('checked')) { - $elems.val('').attr('disabled', true); - } else { - $elems.removeAttr('disabled'); - } - }); - - $('body').on('click', '.js-toggle-colors-link', (e) => { - e.preventDefault(); - $('.js-toggle-colors-container').toggle(); - }); - - $('.log-tabs a').on('click', function logTabsClick(e) { - e.preventDefault(); - $(this).tab('show'); - }); - - $('.log-bottom').on('click', (e) => { - e.preventDefault(); - const $visibleLog = $('.file-content:visible'); - $visibleLog.animate({ - scrollTop: $visibleLog.find('ol').height(), - }, 'fast'); - }); - - $('.change-owner-link').on('click', function changeOwnerLinkClick(e) { - e.preventDefault(); - $(this).hide(); - modal.show(); - }); - - $('.change-owner-cancel-link').on('click', (e) => { - e.preventDefault(); - modal.hide(); - $('.change-owner-link').show(); - }); - - $('li.project_member, li.group_member').on('ajax:success', refreshCurrentPage); - - $("input[name='blacklist_type']").on('click', showBlacklistType); - showBlacklistType(); -} diff --git a/app/assets/javascripts/broadcast_message.js b/app/assets/javascripts/broadcast_message.js deleted file mode 100644 index ff88083a4b4..00000000000 --- a/app/assets/javascripts/broadcast_message.js +++ /dev/null @@ -1,28 +0,0 @@ -export default function initBroadcastMessagesForm() { - $('input#broadcast_message_color').on('input', function onMessageColorInput() { - const previewColor = $(this).val(); - $('div.broadcast-message-preview').css('background-color', previewColor); - }); - - $('input#broadcast_message_font').on('input', function onMessageFontInput() { - const previewColor = $(this).val(); - $('div.broadcast-message-preview').css('color', previewColor); - }); - - const previewPath = $('textarea#broadcast_message_message').data('preview-path'); - - $('textarea#broadcast_message_message').on('input', _.debounce(function onMessageInput() { - const message = $(this).val(); - if (message === '') { - $('.js-broadcast-message-preview').text('Your message here'); - } else { - $.ajax({ - url: previewPath, - type: 'POST', - data: { - broadcast_message: { message }, - }, - }); - } - }, 250)); -} diff --git a/app/assets/javascripts/dispatcher.js b/app/assets/javascripts/dispatcher.js index 9d9605045fb..d0073a1a403 100644 --- a/app/assets/javascripts/dispatcher.js +++ b/app/assets/javascripts/dispatcher.js @@ -13,8 +13,6 @@ import groupAvatar from './group_avatar'; import GroupLabelSubscription from './group_label_subscription'; import LineHighlighter from './line_highlighter'; import groupsSelect from './groups_select'; -import initAdmin from './admin'; -import NamespaceSelect from './namespace_select'; import NewCommitForm from './new_commit_form'; import Project from './project'; import projectAvatar from './project_avatar'; @@ -51,14 +49,12 @@ import GfmAutoComplete from './gfm_auto_complete'; import ShortcutsBlob from './shortcuts_blob'; import Star from './star'; import TreeView from './tree'; -import UsagePing from './usage_ping'; import VersionCheckImage from './version_check_image'; import Wikis from './wikis'; import ZenMode from './zen_mode'; import initSettingsPanels from './settings_panels'; import initExperimentalFlags from './experimental_flags'; import PerformanceBar from './performance_bar'; -import initBroadcastMessagesForm from './broadcast_message'; import initNotes from './init_notes'; import initLegacyFilters from './init_legacy_filters'; import initIssuableSidebar from './init_issuable_sidebar'; @@ -66,7 +62,6 @@ import initProjectVisibilitySelector from './project_visibility'; import GpgBadges from './gpg_badges'; import initChangesDropdown from './init_changes_dropdown'; import NewGroupChild from './groups/new_group_child'; -import AbuseReports from './abuse_reports'; import { ajaxGet, convertPermissionToBoolean } from './lib/utils/common_utils'; import AjaxLoadingSpinner from './ajax_loading_spinner'; import GlFieldErrors from './gl_field_errors'; @@ -229,9 +224,6 @@ import Activities from './activities'; .then(callDefault) .catch(fail); break; - case 'admin:projects:index': - new ProjectsList(); - break; case 'explore:groups:index': import('./pages/explore/groups') .then(callDefault) @@ -441,15 +433,19 @@ import Activities from './activities'; new UsersSelect(); break; case 'groups:new': - case 'admin:groups:new': case 'groups:create': - case 'admin:groups:create': BindInOut.initAll(); new Group(); groupAvatar(); break; - case 'groups:edit': + case 'admin:groups:create': + case 'admin:groups:new': + import('./pages/admin/groups/new').then(m => m.default()).catch(fail); + break; case 'admin:groups:edit': + import('./pages/admin/groups/edit').then(m => m.default()).catch(fail); + break; + case 'groups:edit': groupAvatar(); break; case 'projects:tree:show': @@ -565,8 +561,10 @@ import Activities from './activities'; case 'import:fogbugz:new_user_map': import('./pages/import/fogbugz/new_user_map').then(m => m.default()).catch(fail); break; - case 'profiles:personal_access_tokens:index': case 'admin:impersonation_tokens:index': + import('./pages/admin/impersonation_tokens').then(m => m.default()).catch(fail); + break; + case 'profiles:personal_access_tokens:index': new DueDateSelectors(); break; case 'projects:clusters:show': @@ -601,29 +599,35 @@ import Activities from './activities'; // needed in rspec gl.u2fAuthenticate = u2fAuthenticate; case 'admin': - initAdmin(); + import('./pages/admin').then(m => m.default()).catch(fail); switch (path[1]) { case 'broadcast_messages': - initBroadcastMessagesForm(); + import('./pages/admin/broadcast_messages').then(m => m.default()).catch(fail); break; case 'cohorts': - new UsagePing(); + import('./pages/admin/cohorts').then(m => m.default()).catch(fail); break; case 'groups': - new UsersSelect(); + switch (path[2]) { + case 'show': + import('./pages/admin/groups/show').then(m => m.default()).catch(fail); + break; + } break; case 'projects': - document.querySelectorAll('.js-namespace-select') - .forEach(dropdown => new NamespaceSelect({ dropdown })); + import('./pages/admin/projects').then(m => m.default()).catch(fail); break; case 'labels': switch (path[2]) { case 'new': + import('./pages/admin/labels/new').then(m => m.default()).catch(fail); + break; case 'edit': - new Labels(); + import('./pages/admin/labels/edit').then(m => m.default()).catch(fail); + break; } case 'abuse_reports': - new AbuseReports(); + import('./pages/admin/abuse_reports').then(m => m.default()).catch(fail); break; } break; diff --git a/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js b/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js new file mode 100644 index 00000000000..d87e6304a24 --- /dev/null +++ b/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js @@ -0,0 +1,36 @@ +import { truncate } from '../../../lib/utils/text_utility'; + +const MAX_MESSAGE_LENGTH = 500; +const MESSAGE_CELL_SELECTOR = '.abuse-reports .message'; + +export default class AbuseReports { + constructor() { + $(MESSAGE_CELL_SELECTOR).each(this.truncateLongMessage); + $(document) + .off('click', MESSAGE_CELL_SELECTOR) + .on('click', MESSAGE_CELL_SELECTOR, this.toggleMessageTruncation); + } + + truncateLongMessage() { + const $messageCellElement = $(this); + const reportMessage = $messageCellElement.text(); + if (reportMessage.length > MAX_MESSAGE_LENGTH) { + $messageCellElement.data('original-message', reportMessage); + $messageCellElement.data('message-truncated', 'true'); + $messageCellElement.text(truncate(reportMessage, MAX_MESSAGE_LENGTH)); + } + } + + toggleMessageTruncation() { + const $messageCellElement = $(this); + const originalMessage = $messageCellElement.data('original-message'); + if (!originalMessage) return; + if ($messageCellElement.data('message-truncated') === 'true') { + $messageCellElement.data('message-truncated', 'false'); + $messageCellElement.text(originalMessage); + } else { + $messageCellElement.data('message-truncated', 'true'); + $messageCellElement.text(`${originalMessage.substr(0, (MAX_MESSAGE_LENGTH - 3))}...`); + } + } +} diff --git a/app/assets/javascripts/pages/admin/abuse_reports/index.js b/app/assets/javascripts/pages/admin/abuse_reports/index.js new file mode 100644 index 00000000000..c0b6e8d4095 --- /dev/null +++ b/app/assets/javascripts/pages/admin/abuse_reports/index.js @@ -0,0 +1,3 @@ +import AbuseReports from './abuse_reports'; + +export default () => new AbuseReports(); diff --git a/app/assets/javascripts/pages/admin/admin.js b/app/assets/javascripts/pages/admin/admin.js new file mode 100644 index 00000000000..135c15c346b --- /dev/null +++ b/app/assets/javascripts/pages/admin/admin.js @@ -0,0 +1,59 @@ +import { refreshCurrentPage } from '../../lib/utils/url_utility'; + +function showBlacklistType() { + if ($('input[name="blacklist_type"]:checked').val() === 'file') { + $('.blacklist-file').show(); + $('.blacklist-raw').hide(); + } else { + $('.blacklist-file').hide(); + $('.blacklist-raw').show(); + } +} + +export default function adminInit() { + const modal = $('.change-owner-holder'); + + $('input#user_force_random_password').on('change', function randomPasswordClick() { + const $elems = $('#user_password, #user_password_confirmation'); + if ($(this).attr('checked')) { + $elems.val('').attr('disabled', true); + } else { + $elems.removeAttr('disabled'); + } + }); + + $('body').on('click', '.js-toggle-colors-link', (e) => { + e.preventDefault(); + $('.js-toggle-colors-container').toggle(); + }); + + $('.log-tabs a').on('click', function logTabsClick(e) { + e.preventDefault(); + $(this).tab('show'); + }); + + $('.log-bottom').on('click', (e) => { + e.preventDefault(); + const $visibleLog = $('.file-content:visible'); + $visibleLog.animate({ + scrollTop: $visibleLog.find('ol').height(), + }, 'fast'); + }); + + $('.change-owner-link').on('click', function changeOwnerLinkClick(e) { + e.preventDefault(); + $(this).hide(); + modal.show(); + }); + + $('.change-owner-cancel-link').on('click', (e) => { + e.preventDefault(); + modal.hide(); + $('.change-owner-link').show(); + }); + + $('li.project_member, li.group_member').on('ajax:success', refreshCurrentPage); + + $("input[name='blacklist_type']").on('click', showBlacklistType); + showBlacklistType(); +} diff --git a/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js new file mode 100644 index 00000000000..ff88083a4b4 --- /dev/null +++ b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js @@ -0,0 +1,28 @@ +export default function initBroadcastMessagesForm() { + $('input#broadcast_message_color').on('input', function onMessageColorInput() { + const previewColor = $(this).val(); + $('div.broadcast-message-preview').css('background-color', previewColor); + }); + + $('input#broadcast_message_font').on('input', function onMessageFontInput() { + const previewColor = $(this).val(); + $('div.broadcast-message-preview').css('color', previewColor); + }); + + const previewPath = $('textarea#broadcast_message_message').data('preview-path'); + + $('textarea#broadcast_message_message').on('input', _.debounce(function onMessageInput() { + const message = $(this).val(); + if (message === '') { + $('.js-broadcast-message-preview').text('Your message here'); + } else { + $.ajax({ + url: previewPath, + type: 'POST', + data: { + broadcast_message: { message }, + }, + }); + } + }, 250)); +} diff --git a/app/assets/javascripts/pages/admin/broadcast_messages/index.js b/app/assets/javascripts/pages/admin/broadcast_messages/index.js new file mode 100644 index 00000000000..b548c48282a --- /dev/null +++ b/app/assets/javascripts/pages/admin/broadcast_messages/index.js @@ -0,0 +1,3 @@ +import initBroadcastMessagesForm from './broadcast_message'; + +export default () => initBroadcastMessagesForm(); diff --git a/app/assets/javascripts/pages/admin/cohorts/index.js b/app/assets/javascripts/pages/admin/cohorts/index.js new file mode 100644 index 00000000000..42ef9d38ef7 --- /dev/null +++ b/app/assets/javascripts/pages/admin/cohorts/index.js @@ -0,0 +1,3 @@ +import initUsagePing from './usage_ping'; + +export default () => initUsagePing(); diff --git a/app/assets/javascripts/pages/admin/cohorts/usage_ping.js b/app/assets/javascripts/pages/admin/cohorts/usage_ping.js new file mode 100644 index 00000000000..2389056bd02 --- /dev/null +++ b/app/assets/javascripts/pages/admin/cohorts/usage_ping.js @@ -0,0 +1,12 @@ +export default function UsagePing() { + const usageDataUrl = $('.usage-data').data('endpoint'); + + $.ajax({ + type: 'GET', + url: usageDataUrl, + dataType: 'html', + success(html) { + $('.usage-data').html(html); + }, + }); +} diff --git a/app/assets/javascripts/pages/admin/groups/edit/index.js b/app/assets/javascripts/pages/admin/groups/edit/index.js new file mode 100644 index 00000000000..ff9ef8d2449 --- /dev/null +++ b/app/assets/javascripts/pages/admin/groups/edit/index.js @@ -0,0 +1,3 @@ +import groupAvatar from '../../../../group_avatar'; + +export default () => groupAvatar(); diff --git a/app/assets/javascripts/pages/admin/groups/new/index.js b/app/assets/javascripts/pages/admin/groups/new/index.js new file mode 100644 index 00000000000..fb5c46e4729 --- /dev/null +++ b/app/assets/javascripts/pages/admin/groups/new/index.js @@ -0,0 +1,9 @@ +import BindInOut from '../../../../behaviors/bind_in_out'; +import Group from '../../../../group'; +import groupAvatar from '../../../../group_avatar'; + +export default () => { + BindInOut.initAll(); + new Group(); // eslint-disable-line no-new + groupAvatar(); +}; diff --git a/app/assets/javascripts/pages/admin/groups/show/index.js b/app/assets/javascripts/pages/admin/groups/show/index.js new file mode 100644 index 00000000000..5defea104d4 --- /dev/null +++ b/app/assets/javascripts/pages/admin/groups/show/index.js @@ -0,0 +1,3 @@ +import UsersSelect from '../../../../users_select'; + +export default () => new UsersSelect(); diff --git a/app/assets/javascripts/pages/admin/impersonation_tokens/index.js b/app/assets/javascripts/pages/admin/impersonation_tokens/index.js new file mode 100644 index 00000000000..030328a1363 --- /dev/null +++ b/app/assets/javascripts/pages/admin/impersonation_tokens/index.js @@ -0,0 +1,3 @@ +import DueDateSelectors from '../../../due_date_select'; + +export default () => new DueDateSelectors(); diff --git a/app/assets/javascripts/pages/admin/index.js b/app/assets/javascripts/pages/admin/index.js new file mode 100644 index 00000000000..8b843037d85 --- /dev/null +++ b/app/assets/javascripts/pages/admin/index.js @@ -0,0 +1,3 @@ +import initAdmin from './admin'; + +export default () => initAdmin(); diff --git a/app/assets/javascripts/pages/admin/labels/edit/index.js b/app/assets/javascripts/pages/admin/labels/edit/index.js new file mode 100644 index 00000000000..d7ec6e47f67 --- /dev/null +++ b/app/assets/javascripts/pages/admin/labels/edit/index.js @@ -0,0 +1,3 @@ +import Labels from '../../../../labels'; + +export default () => new Labels(); diff --git a/app/assets/javascripts/pages/admin/labels/new/index.js b/app/assets/javascripts/pages/admin/labels/new/index.js new file mode 100644 index 00000000000..d7ec6e47f67 --- /dev/null +++ b/app/assets/javascripts/pages/admin/labels/new/index.js @@ -0,0 +1,3 @@ +import Labels from '../../../../labels'; + +export default () => new Labels(); diff --git a/app/assets/javascripts/pages/admin/projects/index.js b/app/assets/javascripts/pages/admin/projects/index.js new file mode 100644 index 00000000000..71e0ddcd7b6 --- /dev/null +++ b/app/assets/javascripts/pages/admin/projects/index.js @@ -0,0 +1,9 @@ +import ProjectsList from '../../../projects_list'; +import NamespaceSelect from '../../../namespace_select'; + +export default () => { + new ProjectsList(); // eslint-disable-line no-new + + document.querySelectorAll('.js-namespace-select') + .forEach(dropdown => new NamespaceSelect({ dropdown })); +}; diff --git a/app/assets/javascripts/usage_ping.js b/app/assets/javascripts/usage_ping.js deleted file mode 100644 index 2389056bd02..00000000000 --- a/app/assets/javascripts/usage_ping.js +++ /dev/null @@ -1,12 +0,0 @@ -export default function UsagePing() { - const usageDataUrl = $('.usage-data').data('endpoint'); - - $.ajax({ - type: 'GET', - url: usageDataUrl, - dataType: 'html', - success(html) { - $('.usage-data').html(html); - }, - }); -} -- cgit v1.2.3