Commit 45ec2653 authored by Jacob Schatz's avatar Jacob Schatz

Refactor `explore:*`

parent 8a7bbe1f
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, wrap-iife, no-shadow, consistent-return, one-var, one-var-declaration-per-line, camelcase, default-case, no-new, quotes, no-duplicate-case, no-case-declarations, no-fallthrough, max-len */ /* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, wrap-iife, no-shadow, consistent-return, one-var, one-var-declaration-per-line, camelcase, default-case, no-new, quotes, no-duplicate-case, no-case-declarations, no-fallthrough, max-len */
import { s__ } from './locale'; import { s__ } from "./locale";
import projectSelect from './project_select'; import projectSelect from "./project_select";
import IssuableIndex from './issuable_index'; import IssuableIndex from "./issuable_index";
import Milestone from './milestone'; import Milestone from "./milestone";
import IssuableForm from './issuable_form'; import IssuableForm from "./issuable_form";
import LabelsSelect from './labels_select'; import LabelsSelect from "./labels_select";
import MilestoneSelect from './milestone_select'; import MilestoneSelect from "./milestone_select";
import NewBranchForm from './new_branch_form'; import NewBranchForm from "./new_branch_form";
import NotificationsForm from './notifications_form'; import NotificationsForm from "./notifications_form";
import notificationsDropdown from './notifications_dropdown'; import notificationsDropdown from "./notifications_dropdown";
import groupAvatar from './group_avatar'; import groupAvatar from "./group_avatar";
import GroupLabelSubscription from './group_label_subscription'; import GroupLabelSubscription from "./group_label_subscription";
import LineHighlighter from './line_highlighter'; import LineHighlighter from "./line_highlighter";
import BuildArtifacts from './build_artifacts'; import BuildArtifacts from "./build_artifacts";
import CILintEditor from './ci_lint_editor'; import CILintEditor from "./ci_lint_editor";
import groupsSelect from './groups_select'; import groupsSelect from "./groups_select";
import Search from './search'; import Search from "./search";
import initAdmin from './admin'; import initAdmin from "./admin";
import NamespaceSelect from './namespace_select'; import NamespaceSelect from "./namespace_select";
import NewCommitForm from './new_commit_form'; import NewCommitForm from "./new_commit_form";
import Project from './project'; import Project from "./project";
import projectAvatar from './project_avatar'; import projectAvatar from "./project_avatar";
import MergeRequest from './merge_request'; import MergeRequest from "./merge_request";
import Compare from './compare'; import Compare from "./compare";
import initCompareAutocomplete from './compare_autocomplete'; import initCompareAutocomplete from "./compare_autocomplete";
import ProjectFindFile from './project_find_file'; import ProjectFindFile from "./project_find_file";
import ProjectNew from './project_new'; import ProjectNew from "./project_new";
import projectImport from './project_import'; import projectImport from "./project_import";
import Labels from './labels'; import Labels from "./labels";
import LabelManager from './label_manager'; import LabelManager from "./label_manager";
import Sidebar from './right_sidebar'; import Sidebar from "./right_sidebar";
import IssuableTemplateSelectors from './templates/issuable_template_selectors'; import IssuableTemplateSelectors from "./templates/issuable_template_selectors";
import Flash from './flash'; import Flash from "./flash";
import CommitsList from './commits'; import CommitsList from "./commits";
import Issue from './issue'; import Issue from "./issue";
import BindInOut from './behaviors/bind_in_out'; import BindInOut from "./behaviors/bind_in_out";
import SecretValues from './behaviors/secret_values'; import SecretValues from "./behaviors/secret_values";
import DeleteModal from './branches/branches_delete_modal'; import DeleteModal from "./branches/branches_delete_modal";
import Group from './group'; import Group from "./group";
import GroupsList from './groups_list'; import ProjectsList from "./projects_list";
import ProjectsList from './projects_list'; import setupProjectEdit from "./project_edit";
import setupProjectEdit from './project_edit'; import MiniPipelineGraph from "./mini_pipeline_graph_dropdown";
import MiniPipelineGraph from './mini_pipeline_graph_dropdown'; import BlobLinePermalinkUpdater from "./blob/blob_line_permalink_updater";
import BlobLinePermalinkUpdater from './blob/blob_line_permalink_updater'; import BlobForkSuggestion from "./blob/blob_fork_suggestion";
import Landing from './landing'; import UserCallout from "./user_callout";
import BlobForkSuggestion from './blob/blob_fork_suggestion'; import ShortcutsWiki from "./shortcuts_wiki";
import UserCallout from './user_callout'; import Pipelines from "./pipelines";
import ShortcutsWiki from './shortcuts_wiki'; import BlobViewer from "./blob/viewer/index";
import Pipelines from './pipelines'; import AutoWidthDropdownSelect from "./issuable/auto_width_dropdown_select";
import BlobViewer from './blob/viewer/index'; import UsersSelect from "./users_select";
import AutoWidthDropdownSelect from './issuable/auto_width_dropdown_select'; import RefSelectDropdown from "./ref_select_dropdown";
import UsersSelect from './users_select'; import GfmAutoComplete from "./gfm_auto_complete";
import RefSelectDropdown from './ref_select_dropdown'; import ShortcutsBlob from "./shortcuts_blob";
import GfmAutoComplete from './gfm_auto_complete'; import SigninTabsMemoizer from "./signin_tabs_memoizer";
import ShortcutsBlob from './shortcuts_blob'; import Star from "./star";
import SigninTabsMemoizer from './signin_tabs_memoizer'; import Todos from "./todos";
import Star from './star'; import TreeView from "./tree";
import Todos from './todos'; import UsagePing from "./usage_ping";
import TreeView from './tree'; import UsernameValidator from "./username_validator";
import UsagePing from './usage_ping'; import VersionCheckImage from "./version_check_image";
import UsernameValidator from './username_validator'; import Wikis from "./wikis";
import VersionCheckImage from './version_check_image'; import ZenMode from "./zen_mode";
import Wikis from './wikis'; import initSettingsPanels from "./settings_panels";
import ZenMode from './zen_mode'; import initExperimentalFlags from "./experimental_flags";
import initSettingsPanels from './settings_panels'; import OAuthRememberMe from "./oauth_remember_me";
import initExperimentalFlags from './experimental_flags'; import PerformanceBar from "./performance_bar";
import OAuthRememberMe from './oauth_remember_me'; import initBroadcastMessagesForm from "./broadcast_message";
import PerformanceBar from './performance_bar'; import initNotes from "./init_notes";
import initBroadcastMessagesForm from './broadcast_message'; import initLegacyFilters from "./init_legacy_filters";
import initNotes from './init_notes'; import initIssuableSidebar from "./init_issuable_sidebar";
import initLegacyFilters from './init_legacy_filters'; import initProjectVisibilitySelector from "./project_visibility";
import initIssuableSidebar from './init_issuable_sidebar'; import GpgBadges from "./gpg_badges";
import initProjectVisibilitySelector from './project_visibility'; import initChangesDropdown from "./init_changes_dropdown";
import GpgBadges from './gpg_badges'; import NewGroupChild from "./groups/new_group_child";
import initChangesDropdown from './init_changes_dropdown'; import AbuseReports from "./abuse_reports";
import NewGroupChild from './groups/new_group_child'; import { ajaxGet, convertPermissionToBoolean } from "./lib/utils/common_utils";
import AbuseReports from './abuse_reports'; import AjaxLoadingSpinner from "./ajax_loading_spinner";
import { ajaxGet, convertPermissionToBoolean } from './lib/utils/common_utils'; import GlFieldErrors from "./gl_field_errors";
import AjaxLoadingSpinner from './ajax_loading_spinner'; import GLForm from "./gl_form";
import GlFieldErrors from './gl_field_errors'; import Shortcuts from "./shortcuts";
import GLForm from './gl_form'; import ShortcutsNavigation from "./shortcuts_navigation";
import Shortcuts from './shortcuts'; import ShortcutsFindFile from "./shortcuts_find_file";
import ShortcutsNavigation from './shortcuts_navigation'; import ShortcutsIssuable from "./shortcuts_issuable";
import ShortcutsFindFile from './shortcuts_find_file'; import U2FAuthenticate from "./u2f/authenticate";
import ShortcutsIssuable from './shortcuts_issuable'; import Members from "./members";
import U2FAuthenticate from './u2f/authenticate'; import memberExpirationDate from "./member_expiration_date";
import Members from './members'; import DueDateSelectors from "./due_date_select";
import memberExpirationDate from './member_expiration_date'; import Diff from "./diff";
import DueDateSelectors from './due_date_select'; import ProjectLabelSubscription from "./project_label_subscription";
import Diff from './diff'; import SearchAutocomplete from "./search_autocomplete";
import ProjectLabelSubscription from './project_label_subscription'; import Activities from "./activities";
import SearchAutocomplete from './search_autocomplete';
import Activities from './activities';
(function() { (function() {
var Dispatcher; var Dispatcher;
...@@ -104,27 +102,34 @@ import Activities from './activities'; ...@@ -104,27 +102,34 @@ import Activities from './activities';
} }
Dispatcher.prototype.initPageScripts = function() { Dispatcher.prototype.initPageScripts = function() {
var path, shortcut_handler, fileBlobPermalinkUrlElement, fileBlobPermalinkUrl; var path,
const page = $('body').attr('data-page'); shortcut_handler,
fileBlobPermalinkUrlElement,
fileBlobPermalinkUrl;
const page = $("body").attr("data-page");
if (!page) { if (!page) {
return false; return false;
} }
const fail = () => Flash('Error loading dynamic module'); const fail = () => Flash("Error loading dynamic module");
path = page.split(':'); path = page.split(":");
shortcut_handler = null; shortcut_handler = null;
$('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => { $(".js-gfm-input:not(.js-vue-textarea)").each((i, el) => {
const gfm = new GfmAutoComplete(gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources); const gfm = new GfmAutoComplete(
const enableGFM = convertPermissionToBoolean(el.dataset.supportsAutocomplete); gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources
);
const enableGFM = convertPermissionToBoolean(
el.dataset.supportsAutocomplete
);
gfm.setup($(el), { gfm.setup($(el), {
emojis: true, emojis: true,
members: enableGFM, members: enableGFM,
issues: enableGFM, issues: enableGFM,
milestones: enableGFM, milestones: enableGFM,
mergeRequests: enableGFM, mergeRequests: enableGFM,
labels: enableGFM, labels: enableGFM
}); });
}); });
...@@ -132,287 +137,335 @@ import Activities from './activities'; ...@@ -132,287 +137,335 @@ import Activities from './activities';
new LineHighlighter(); new LineHighlighter();
new BlobLinePermalinkUpdater( new BlobLinePermalinkUpdater(
document.querySelector('#blob-content-holder'), document.querySelector("#blob-content-holder"),
'.diff-line-num[data-line-number]', ".diff-line-num[data-line-number]",
document.querySelectorAll('.js-data-file-blob-permalink-url, .js-blob-blame-link'), document.querySelectorAll(
".js-data-file-blob-permalink-url, .js-blob-blame-link"
)
); );
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
fileBlobPermalinkUrlElement = document.querySelector('.js-data-file-blob-permalink-url'); fileBlobPermalinkUrlElement = document.querySelector(
fileBlobPermalinkUrl = fileBlobPermalinkUrlElement && fileBlobPermalinkUrlElement.getAttribute('href'); ".js-data-file-blob-permalink-url"
);
fileBlobPermalinkUrl =
fileBlobPermalinkUrlElement &&
fileBlobPermalinkUrlElement.getAttribute("href");
new ShortcutsBlob({ new ShortcutsBlob({
skipResetBindings: true, skipResetBindings: true,
fileBlobPermalinkUrl, fileBlobPermalinkUrl
}); });
new BlobForkSuggestion({ new BlobForkSuggestion({
openButtons: document.querySelectorAll('.js-edit-blob-link-fork-toggler'), openButtons: document.querySelectorAll(
forkButtons: document.querySelectorAll('.js-fork-suggestion-button'), ".js-edit-blob-link-fork-toggler"
cancelButtons: document.querySelectorAll('.js-cancel-fork-suggestion-button'), ),
suggestionSections: document.querySelectorAll('.js-file-fork-suggestion-section'), forkButtons: document.querySelectorAll(".js-fork-suggestion-button"),
actionTextPieces: document.querySelectorAll('.js-file-fork-suggestion-section-action'), cancelButtons: document.querySelectorAll(
}) ".js-cancel-fork-suggestion-button"
.init(); ),
suggestionSections: document.querySelectorAll(
".js-file-fork-suggestion-section"
),
actionTextPieces: document.querySelectorAll(
".js-file-fork-suggestion-section-action"
)
}).init();
} }
const filteredSearchEnabled = gl.FilteredSearchManager && document.querySelector('.filtered-search'); const filteredSearchEnabled =
gl.FilteredSearchManager && document.querySelector(".filtered-search");
switch (page) { switch (page) {
case 'profiles:preferences:show': case "profiles:preferences:show":
initExperimentalFlags(); initExperimentalFlags();
break; break;
case 'sessions:new': case "sessions:new":
new UsernameValidator(); new UsernameValidator();
new SigninTabsMemoizer(); new SigninTabsMemoizer();
new OAuthRememberMe({ container: $(".omniauth-container") }).bindEvents(); new OAuthRememberMe({
container: $(".omniauth-container")
}).bindEvents();
break; break;
case 'projects:boards:show': case "projects:boards:show":
case 'projects:boards:index': case "projects:boards:index":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new UsersSelect(); new UsersSelect();
break; break;
case 'projects:merge_requests:index': case "projects:merge_requests:index":
case 'projects:issues:index': case "projects:issues:index":
if (filteredSearchEnabled) { if (filteredSearchEnabled) {
const filteredSearchManager = new gl.FilteredSearchManager(page === 'projects:issues:index' ? 'issues' : 'merge_requests'); const filteredSearchManager = new gl.FilteredSearchManager(
page === "projects:issues:index" ? "issues" : "merge_requests"
);
filteredSearchManager.setup(); filteredSearchManager.setup();
} }
const pagePrefix = page === 'projects:merge_requests:index' ? 'merge_request_' : 'issue_'; const pagePrefix =
page === "projects:merge_requests:index"
? "merge_request_"
: "issue_";
new IssuableIndex(pagePrefix); new IssuableIndex(pagePrefix);
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new UsersSelect(); new UsersSelect();
break; break;
case 'projects:issues:show': case "projects:issues:show":
new Issue(); new Issue();
shortcut_handler = new ShortcutsIssuable(); shortcut_handler = new ShortcutsIssuable();
new ZenMode(); new ZenMode();
initIssuableSidebar(); initIssuableSidebar();
break; break;
case 'dashboard:milestones:index': case "dashboard:milestones:index":
projectSelect(); projectSelect();
break; break;
case 'projects:milestones:show': case "projects:milestones:show":
case 'groups:milestones:show': case "groups:milestones:show":
case 'dashboard:milestones:show': case "dashboard:milestones:show":
new Milestone(); new Milestone();
new Sidebar(); new Sidebar();
break; break;
case 'dashboard:issues': case "dashboard:issues":
case 'dashboard:merge_requests': case "dashboard:merge_requests":
projectSelect(); projectSelect();
initLegacyFilters(); initLegacyFilters();
break; break;
case 'groups:issues': case "groups:issues":
case 'groups:merge_requests': case "groups:merge_requests":
if (filteredSearchEnabled) { if (filteredSearchEnabled) {
const filteredSearchManager = new gl.FilteredSearchManager(page === 'groups:issues' ? 'issues' : 'merge_requests'); const filteredSearchManager = new gl.FilteredSearchManager(
page === "groups:issues" ? "issues" : "merge_requests"
);
filteredSearchManager.setup(); filteredSearchManager.setup();
} }
projectSelect(); projectSelect();
break; break;
case 'dashboard:todos:index': case "dashboard:todos:index":
new Todos(); new Todos();
break; break;
case 'dashboard:projects:index': case "explore:projects:index":
case 'dashboard:projects:starred': case "explore:projects:trending":
case 'explore:projects:index': case "explore:projects:starred":
case 'explore:projects:trending': import("./pages/explore/projects")
case 'explore:projects:starred': .then(module => module.default())
case 'admin:projects:index': .catch(fail);
break;
case "dashboard:projects:index":
case "dashboard:projects:starred":
case "admin:projects:index":
new ProjectsList(); new ProjectsList();
break; break;
case 'explore:groups:index': case "explore:groups:index":
new GroupsList(); import("./pages/explore/groups")
const landingElement = document.querySelector('.js-explore-groups-landing'); .then(module => module.default())
if (!landingElement) break; .catch(fail);
const exploreGroupsLanding = new Landing(
landingElement,
landingElement.querySelector('.dismiss-button'),
'explore_groups_landing_dismissed',
);
exploreGroupsLanding.toggle();
break; break;
case 'projects:milestones:new': case "projects:milestones:new":
case 'projects:milestones:edit': case "projects:milestones:edit":
case 'projects:milestones:update': case "projects:milestones:update":
new ZenMode(); new ZenMode();
new DueDateSelectors(); new DueDateSelectors();
new GLForm($('.milestone-form'), true); new GLForm($(".milestone-form"), true);
break; break;
case 'groups:milestones:new': case "groups:milestones:new":
case 'groups:milestones:edit': case "groups:milestones:edit":
case 'groups:milestones:update': case "groups:milestones:update":
new ZenMode(); new ZenMode();
new DueDateSelectors(); new DueDateSelectors();
new GLForm($('.milestone-form'), false); new GLForm($(".milestone-form"), false);
break; break;
case 'projects:compare:show': case "projects:compare:show":
new Diff(); new Diff();
const paddingTop = 16; const paddingTop = 16;
initChangesDropdown(document.querySelector('.navbar-gitlab').offsetHeight - paddingTop); initChangesDropdown(
document.querySelector(".navbar-gitlab").offsetHeight - paddingTop
);
break; break;
case 'projects:branches:new': case "projects:branches:new":
case 'projects:branches:create': case "projects:branches:create":
new NewBranchForm($('.js-create-branch-form'), JSON.parse(document.getElementById('availableRefs').innerHTML)); new NewBranchForm(
$(".js-create-branch-form"),
JSON.parse(document.getElementById("availableRefs").innerHTML)
);
break; break;
case 'projects:branches:index': case "projects:branches:index":
AjaxLoadingSpinner.init(); AjaxLoadingSpinner.init();
new DeleteModal(); new DeleteModal();
break; break;
case 'projects:issues:new': case "projects:issues:new":
case 'projects:issues:edit': case "projects:issues:edit":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new GLForm($('.issue-form'), true); new GLForm($(".issue-form"), true);
new IssuableForm($('.issue-form')); new IssuableForm($(".issue-form"));
new LabelsSelect(); new LabelsSelect();
new MilestoneSelect(); new MilestoneSelect();
new IssuableTemplateSelectors(); new IssuableTemplateSelectors();
break; break;
case 'projects:merge_requests:creations:new': case "projects:merge_requests:creations:new":
const mrNewCompareNode = document.querySelector('.js-merge-request-new-compare'); const mrNewCompareNode = document.querySelector(
".js-merge-request-new-compare"
);
if (mrNewCompareNode) { if (mrNewCompareNode) {
new Compare({ new Compare({
targetProjectUrl: mrNewCompareNode.dataset.targetProjectUrl, targetProjectUrl: mrNewCompareNode.dataset.targetProjectUrl,
sourceBranchUrl: mrNewCompareNode.dataset.sourceBranchUrl, sourceBranchUrl: mrNewCompareNode.dataset.sourceBranchUrl,
targetBranchUrl: mrNewCompareNode.dataset.targetBranchUrl, targetBranchUrl: mrNewCompareNode.dataset.targetBranchUrl
}); });
} else { } else {
const mrNewSubmitNode = document.querySelector('.js-merge-request-new-submit'); const mrNewSubmitNode = document.querySelector(
".js-merge-request-new-submit"
);
new MergeRequest({ new MergeRequest({
action: mrNewSubmitNode.dataset.mrSubmitAction, action: mrNewSubmitNode.dataset.mrSubmitAction
}); });
} }
case 'projects:merge_requests:creations:diffs': case "projects:merge_requests:creations:diffs":
case 'projects:merge_requests:edit': case "projects:merge_requests:edit":
new Diff(); new Diff();
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new GLForm($('.merge-request-form'), true); new GLForm($(".merge-request-form"), true);
new IssuableForm($('.merge-request-form')); new IssuableForm($(".merge-request-form"));
new LabelsSelect(); new LabelsSelect();
new MilestoneSelect(); new MilestoneSelect();
new IssuableTemplateSelectors(); new IssuableTemplateSelectors();
new AutoWidthDropdownSelect($('.js-target-branch-select')).init(); new AutoWidthDropdownSelect($(".js-target-branch-select")).init();
break; break;
case 'projects:tags:new': case "projects:tags:new":
new ZenMode(); new ZenMode();
new GLForm($('.tag-form'), true); new GLForm($(".tag-form"), true);
new RefSelectDropdown($('.js-branch-select')); new RefSelectDropdown($(".js-branch-select"));
break; break;
case 'projects:snippets:show': case "projects:snippets:show":
initNotes(); initNotes();
new ZenMode(); new ZenMode();
break; break;
case 'projects:snippets:new': case "projects:snippets:new":
case 'projects:snippets:edit': case "projects:snippets:edit":
case 'projects:snippets:create': case "projects:snippets:create":
case 'projects:snippets:update': case "projects:snippets:update":
new GLForm($('.snippet-form'), true); new GLForm($(".snippet-form"), true);
new ZenMode(); new ZenMode();
break; break;
case 'snippets:new': case "snippets:new":
case 'snippets:edit': case "snippets:edit":
case 'snippets:create': case "snippets:create":
case 'snippets:update': case "snippets:update":
new GLForm($('.snippet-form'), false); new GLForm($(".snippet-form"), false);
new ZenMode(); new ZenMode();
break; break;
case 'projects:releases:edit': case "projects:releases:edit":
new ZenMode(); new ZenMode();
new GLForm($('.release-form'), true); new GLForm($(".release-form"), true);
break; break;
case 'projects:merge_requests:show': case "projects:merge_requests:show":
new Diff(); new Diff();
new ZenMode(); new ZenMode();
initIssuableSidebar(); initIssuableSidebar();
initNotes(); initNotes();
const mrShowNode = document.querySelector('.merge-request'); const mrShowNode = document.querySelector(".merge-request");
window.mergeRequest = new MergeRequest({ window.mergeRequest = new MergeRequest({
action: mrShowNode.dataset.mrAction, action: mrShowNode.dataset.mrAction
}); });
shortcut_handler = new ShortcutsIssuable(true); shortcut_handler = new ShortcutsIssuable(true);
break; break;
case 'dashboard:activity': case "dashboard:activity":
new Activities(); new Activities();
break; break;
case 'projects:commit:show': case "projects:commit:show":
new Diff(); new Diff();
new ZenMode(); new ZenMode();
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new MiniPipelineGraph({ new MiniPipelineGraph({
container: '.js-commit-pipeline-graph', container: ".js-commit-pipeline-graph"
}).bindEvents(); }).bindEvents();
initNotes(); initNotes();
const stickyBarPaddingTop = 16; const stickyBarPaddingTop = 16;
initChangesDropdown(document.querySelector('.navbar-gitlab').offsetHeight - stickyBarPaddingTop); initChangesDropdown(
$('.commit-info.branches').load(document.querySelector('.js-commit-box').dataset.commitPath); document.querySelector(".navbar-gitlab").offsetHeight -
stickyBarPaddingTop
);
$(".commit-info.branches").load(
document.querySelector(".js-commit-box").dataset.commitPath
);
break; break;
case 'projects:commit:pipelines': case "projects:commit:pipelines":
new MiniPipelineGraph({ new MiniPipelineGraph({
container: '.js-commit-pipeline-graph', container: ".js-commit-pipeline-graph"
}).bindEvents(); }).bindEvents();
$('.commit-info.branches').load(document.querySelector('.js-commit-box').dataset.commitPath); $(".commit-info.branches").load(
document.querySelector(".js-commit-box").dataset.commitPath
);
break; break;
case 'projects:activity': case "projects:activity":
new Activities(); new Activities();
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
break; break;
case 'projects:commits:show': case "projects:commits:show":
CommitsList.init(document.querySelector('.js-project-commits-show').dataset.commitsLimit); CommitsList.init(
document.querySelector(".js-project-commits-show").dataset
.commitsLimit
);
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
GpgBadges.fetch(); GpgBadges.fetch();
break; break;
case 'projects:show': case "projects:show":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new NotificationsForm(); new NotificationsForm();
new UserCallout({ new UserCallout({
setCalloutPerProject: true, setCalloutPerProject: true,
className: 'js-autodevops-banner', className: "js-autodevops-banner"
}); });
if ($('#tree-slider').length) new TreeView(); if ($("#tree-slider").length) new TreeView();
if ($('.blob-viewer').length) new BlobViewer(); if ($(".blob-viewer").length) new BlobViewer();
if ($('.project-show-activity').length) new Activities(); if ($(".project-show-activity").length) new Activities();
$('#tree-slider').waitForImages(function() { $("#tree-slider").waitForImages(function() {
ajaxGet(document.querySelector('.js-tree-content').dataset.logsPath); ajaxGet(
document.querySelector(".js-tree-content").dataset.logsPath
);
}); });
break; break;
case 'projects:edit': case "projects:edit":
setupProjectEdit(); setupProjectEdit();
// Initialize expandable settings panels // Initialize expandable settings panels
initSettingsPanels(); initSettingsPanels();
break; break;
case 'projects:imports:show': case "projects:imports:show":
projectImport(); projectImport();
break; break;
case 'projects:pipelines:new': case "projects:pipelines:new":
case 'projects:pipelines:create': case "projects:pipelines:create":
new NewBranchForm($('.js-new-pipeline-form')); new NewBranchForm($(".js-new-pipeline-form"));
break; break;
case 'projects:pipelines:builds': case "projects:pipelines:builds":
case 'projects:pipelines:failures': case "projects:pipelines:failures":
case 'projects:pipelines:show': case "projects:pipelines:show":
const { controllerAction } = document.querySelector('.js-pipeline-container').dataset; const { controllerAction } = document.querySelector(
const pipelineStatusUrl = `${document.querySelector('.js-pipeline-tab-link a').getAttribute('href')}/status.json`; ".js-pipeline-container"
).dataset;
const pipelineStatusUrl = `${document
.querySelector(".js-pipeline-tab-link a")
.getAttribute("href")}/status.json`;
new Pipelines({ new Pipelines({
initTabs: true, initTabs: true,
pipelineStatusUrl, pipelineStatusUrl,
tabsOptions: { tabsOptions: {
action: controllerAction, action: controllerAction,
defaultAction: 'pipelines', defaultAction: "pipelines",
parentEl: '.pipelines-tabs', parentEl: ".pipelines-tabs"
}, }
}); });
break; break;
case 'groups:activity': case "groups:activity":
new Activities(); new Activities();
break; break;
case 'groups:show': case "groups:show":
const newGroupChildWrapper = document.querySelector('.js-new-project-subgroup'); const newGroupChildWrapper = document.querySelector(
".js-new-project-subgroup"
);
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new NotificationsForm(); new NotificationsForm();
notificationsDropdown(); notificationsDropdown();
...@@ -422,259 +475,273 @@ import Activities from './activities'; ...@@ -422,259 +475,273 @@ import Activities from './activities';
new NewGroupChild(newGroupChildWrapper); new NewGroupChild(newGroupChildWrapper);
} }
break; break;
case 'groups:group_members:index': case "groups:group_members:index":
memberExpirationDate(); memberExpirationDate();
new Members(); new Members();
new UsersSelect(); new UsersSelect();
break; break;
case 'projects:project_members:index': case "projects:project_members:index":
memberExpirationDate('.js-access-expiration-date-groups'); memberExpirationDate(".js-access-expiration-date-groups");
groupsSelect(); groupsSelect();
memberExpirationDate(); memberExpirationDate();
new Members(); new Members();
new UsersSelect(); new UsersSelect();
break; break;
case 'groups:new': case "groups:new":
case 'admin:groups:new': case "admin:groups:new":
case 'groups:create': case "groups:create":
case 'admin:groups:create': case "admin:groups:create":
BindInOut.initAll(); BindInOut.initAll();
new Group(); new Group();
groupAvatar(); groupAvatar();
break; break;
case 'groups:edit': case "groups:edit":
case 'admin:groups:edit': case "admin:groups:edit":
groupAvatar(); groupAvatar();
break; break;
case 'projects:tree:show': case "projects:tree:show":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new TreeView(); new TreeView();
new BlobViewer(); new BlobViewer();
new NewCommitForm($('.js-create-dir-form')); new NewCommitForm($(".js-create-dir-form"));
$('#tree-slider').waitForImages(function() { $("#tree-slider").waitForImages(function() {
ajaxGet(document.querySelector('.js-tree-content').dataset.logsPath); ajaxGet(
document.querySelector(".js-tree-content").dataset.logsPath
);
}); });
break; break;
case 'projects:find_file:show': case "projects:find_file:show":
const findElement = document.querySelector('.js-file-finder'); const findElement = document.querySelector(".js-file-finder");
const projectFindFile = new ProjectFindFile($(".file-finder-holder"), { const projectFindFile = new ProjectFindFile(
url: findElement.dataset.fileFindUrl, $(".file-finder-holder"),
treeUrl: findElement.dataset.findTreeUrl, {
blobUrlTemplate: findElement.dataset.blobUrlTemplate, url: findElement.dataset.fileFindUrl,
}); treeUrl: findElement.dataset.findTreeUrl,
blobUrlTemplate: findElement.dataset.blobUrlTemplate
}
);
new ShortcutsFindFile(projectFindFile); new ShortcutsFindFile(projectFindFile);
shortcut_handler = true; shortcut_handler = true;
break; break;
case 'projects:blob:show': case "projects:blob:show":
new BlobViewer(); new BlobViewer();
initBlob(); initBlob();
break; break;
case 'projects:blame:show': case "projects:blame:show":
initBlob(); initBlob();
break; break;
case 'groups:labels:new': case "groups:labels:new":
case 'groups:labels:edit': case "groups:labels:edit":
case 'projects:labels:new': case "projects:labels:new":
case 'projects:labels:edit': case "projects:labels:edit":
new Labels(); new Labels();
break; break;
case 'groups:labels:index': case "groups:labels:index":
case 'projects:labels:index': case "projects:labels:index":
if ($('.prioritized-labels').length) { if ($(".prioritized-labels").length) {
new LabelManager(); new LabelManager();
} }
$('.label-subscription').each((i, el) => { $(".label-subscription").each((i, el) => {
const $el = $(el); const $el = $(el);
if ($el.find('.dropdown-group-label').length) { if ($el.find(".dropdown-group-label").length) {
new GroupLabelSubscription($el); new GroupLabelSubscription($el);
} else { } else {
new ProjectLabelSubscription($el); new ProjectLabelSubscription($el);
} }
}); });
break; break;
case 'projects:network:show': case "projects:network:show":
// Ensure we don't create a particular shortcut handler here. This is // Ensure we don't create a particular shortcut handler here. This is
// already created, where the network graph is created. // already created, where the network graph is created.
shortcut_handler = true; shortcut_handler = true;
break; break;
case 'projects:forks:new': case "projects:forks:new":
import(/* webpackChunkName: 'project_fork' */ './project_fork') import(/* webpackChunkName: 'project_fork' */ "./project_fork")
.then(fork => fork.default()) .then(fork => fork.default())
.catch(() => {}); .catch(() => {});
break; break;
case 'projects:artifacts:browse': case "projects:artifacts:browse":
new ShortcutsNavigation(); new ShortcutsNavigation();
new BuildArtifacts(); new BuildArtifacts();
break; break;
case 'projects:artifacts:file': case "projects:artifacts:file":
new ShortcutsNavigation(); new ShortcutsNavigation();
new BlobViewer(); new BlobViewer();
break; break;
case 'help:index': case "help:index":
VersionCheckImage.bindErrorEvent($('img.js-version-status-badge')); VersionCheckImage.bindErrorEvent($("img.js-version-status-badge"));
break; break;
case 'search:show': case "search:show":
new Search(); new Search();
break; break;
case 'projects:settings:repository:show': case "projects:settings:repository:show":
// Initialize expandable settings panels // Initialize expandable settings panels
initSettingsPanels(); initSettingsPanels();
break; break;
case 'projects:settings:ci_cd:show': case "projects:settings:ci_cd:show":
// Initialize expandable settings panels // Initialize expandable settings panels
initSettingsPanels(); initSettingsPanels();
const runnerToken = document.querySelector('.js-secret-runner-token'); const runnerToken = document.querySelector(".js-secret-runner-token");
if (runnerToken) { if (runnerToken) {
const runnerTokenSecretValue = new SecretValues(runnerToken); const runnerTokenSecretValue = new SecretValues(runnerToken);
runnerTokenSecretValue.init(); runnerTokenSecretValue.init();
} }
case 'groups:settings:ci_cd:show': case "groups:settings:ci_cd:show":
const secretVariableTable = document.querySelector('.js-secret-variable-table'); const secretVariableTable = document.querySelector(
".js-secret-variable-table"
);
if (secretVariableTable) { if (secretVariableTable) {
const secretVariableTableValues = new SecretValues(secretVariableTable); const secretVariableTableValues = new SecretValues(
secretVariableTable
);
secretVariableTableValues.init(); secretVariableTableValues.init();
} }
break; break;
case 'ci:lints:create': case "ci:lints:create":
case 'ci:lints:show': case "ci:lints:show":
new CILintEditor(); new CILintEditor();
break; break;
case 'users:show': case "users:show":
import('./pages/users/show').then(m => m.default()).catch(fail); import("./pages/users/show")
.then(m => m.default())
.catch(fail);
break; break;
case 'admin:conversational_development_index:show': case "admin:conversational_development_index:show":
new UserCallout(); new UserCallout();
break; break;
case 'snippets:show': case "snippets:show":
new LineHighlighter(); new LineHighlighter();
new BlobViewer(); new BlobViewer();
initNotes(); initNotes();
new ZenMode(); new ZenMode();
break; break;
case 'import:fogbugz:new_user_map': case "import:fogbugz:new_user_map":
new UsersSelect(); new UsersSelect();
break; break;
case 'profiles:personal_access_tokens:index': case "profiles:personal_access_tokens:index":
case 'admin:impersonation_tokens:index': case "admin:impersonation_tokens:index":
new DueDateSelectors(); new DueDateSelectors();
break; break;
case 'projects:clusters:show': case "projects:clusters:show":
import(/* webpackChunkName: "clusters" */ './clusters/clusters_bundle') import(/* webpackChunkName: "clusters" */ "./clusters/clusters_bundle")
.then(cluster => new cluster.default()) // eslint-disable-line new-cap .then(cluster => new cluster.default()) // eslint-disable-line new-cap
.catch((err) => { .catch(err => {
Flash(s__('ClusterIntegration|Problem setting up the cluster')); Flash(s__("ClusterIntegration|Problem setting up the cluster"));
throw err; throw err;
}); });
break; break;
case 'projects:clusters:index': case "projects:clusters:index":
import(/* webpackChunkName: "clusters_index" */ './clusters/clusters_index') import(/* webpackChunkName: "clusters_index" */ "./clusters/clusters_index")
.then(clusterIndex => clusterIndex.default()) .then(clusterIndex => clusterIndex.default())
.catch((err) => { .catch(err => {
Flash(s__('ClusterIntegration|Problem setting up the clusters list')); Flash(
s__("ClusterIntegration|Problem setting up the clusters list")
);
throw err; throw err;
}); });
break; break;
} }
switch (path[0]) { switch (path[0]) {
case 'sessions': case "sessions":
case 'omniauth_callbacks': case "omniauth_callbacks":
if (!gon.u2f) break; if (!gon.u2f) break;
const u2fAuthenticate = new U2FAuthenticate( const u2fAuthenticate = new U2FAuthenticate(
$('#js-authenticate-u2f'), $("#js-authenticate-u2f"),
'#js-login-u2f-form', "#js-login-u2f-form",
gon.u2f, gon.u2f,
document.querySelector('#js-login-2fa-device'), document.querySelector("#js-login-2fa-device"),
document.querySelector('.js-2fa-form'), document.querySelector(".js-2fa-form")
); );
u2fAuthenticate.start(); u2fAuthenticate.start();
// needed in rspec // needed in rspec
gl.u2fAuthenticate = u2fAuthenticate; gl.u2fAuthenticate = u2fAuthenticate;
case 'admin': case "admin":
initAdmin(); initAdmin();
switch (path[1]) { switch (path[1]) {
case 'broadcast_messages': case "broadcast_messages":
initBroadcastMessagesForm(); initBroadcastMessagesForm();
break; break;
case 'cohorts': case "cohorts":
new UsagePing(); new UsagePing();
break; break;
case 'groups': case "groups":
new UsersSelect(); new UsersSelect();
break; break;
case 'projects': case "projects":
document.querySelectorAll('.js-namespace-select') document
.querySelectorAll(".js-namespace-select")
.forEach(dropdown => new NamespaceSelect({ dropdown })); .forEach(dropdown => new NamespaceSelect({ dropdown }));
break; break;
case 'labels': case "labels":
switch (path[2]) { switch (path[2]) {
case 'new': case "new":
case 'edit': case "edit":
new Labels(); new Labels();
} }
case 'abuse_reports': case "abuse_reports":
new AbuseReports(); new AbuseReports();
break; break;
} }
break; break;
case 'dashboard': case "dashboard":
case 'root': case "root":
new UserCallout(); new UserCallout();
break; break;
case 'profiles': case "profiles":
new NotificationsForm(); new NotificationsForm();
notificationsDropdown(); notificationsDropdown();
break; break;
case 'projects': case "projects":
new Project(); new Project();
projectAvatar(); projectAvatar();
switch (path[1]) { switch (path[1]) {
case 'compare': case "compare":
initCompareAutocomplete(); initCompareAutocomplete();
break; break;
case 'edit': case "edit":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
new ProjectNew(); new ProjectNew();
import(/* webpackChunkName: 'project_permissions' */ './projects/permissions') import(/* webpackChunkName: 'project_permissions' */ "./projects/permissions")
.then(permissions => permissions.default()) .then(permissions => permissions.default())
.catch(() => {}); .catch(() => {});
break; break;
case 'new': case "new":
new ProjectNew(); new ProjectNew();
initProjectVisibilitySelector(); initProjectVisibilitySelector();
break; break;
case 'show': case "show":
new Star(); new Star();
new ProjectNew(); new ProjectNew();
notificationsDropdown(); notificationsDropdown();
break; break;
case 'wikis': case "wikis":
new Wikis(); new Wikis();
shortcut_handler = new ShortcutsWiki(); shortcut_handler = new ShortcutsWiki();
new ZenMode(); new ZenMode();
new GLForm($('.wiki-form'), true); new GLForm($(".wiki-form"), true);
break; break;
case 'snippets': case "snippets":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
if (path[2] === 'show') { if (path[2] === "show") {
new ZenMode(); new ZenMode();
new LineHighlighter(); new LineHighlighter();
new BlobViewer(); new BlobViewer();
} }
break; break;
case 'labels': case "labels":
case 'graphs': case "graphs":
case 'compare': case "compare":
case 'pipelines': case "pipelines":
case 'forks': case "forks":
case 'milestones': case "milestones":
case 'project_members': case "project_members":
case 'deploy_keys': case "deploy_keys":
case 'builds': case "builds":
case 'hooks': case "hooks":
case 'services': case "services":
case 'protected_branches': case "protected_branches":
shortcut_handler = new ShortcutsNavigation(); shortcut_handler = new ShortcutsNavigation();
} }
break; break;
...@@ -684,20 +751,20 @@ import Activities from './activities'; ...@@ -684,20 +751,20 @@ import Activities from './activities';
new Shortcuts(); new Shortcuts();
} }
if (document.querySelector('#peek')) { if (document.querySelector("#peek")) {
new PerformanceBar({ container: '#peek' }); new PerformanceBar({ container: "#peek" });
} }
}; };
Dispatcher.prototype.initSearch = function() { Dispatcher.prototype.initSearch = function() {
// Only when search form is present // Only when search form is present
if ($('.search').length) { if ($(".search").length) {
return new SearchAutocomplete(); return new SearchAutocomplete();
} }
}; };
Dispatcher.prototype.initFieldErrors = function() { Dispatcher.prototype.initFieldErrors = function() {
$('.gl-show-field-errors').each((i, form) => { $(".gl-show-field-errors").each((i, form) => {
new GlFieldErrors(form); new GlFieldErrors(form);
}); });
}; };
...@@ -705,7 +772,7 @@ import Activities from './activities'; ...@@ -705,7 +772,7 @@ import Activities from './activities';
return Dispatcher; return Dispatcher;
})(); })();
$(window).on('load', function() { $(window).on("load", function() {
new Dispatcher(); new Dispatcher();
}); });
}).call(window); }.call(window));
import GroupsList from "~/groups_list";
import Landing from "~/landing";
export default function() {
new GroupsList();
const landingElement = document.querySelector(".js-explore-groups-landing");
if (!landingElement) return;
const exploreGroupsLanding = new Landing(
landingElement,
landingElement.querySelector(".dismiss-button"),
"explore_groups_landing_dismissed"
);
exploreGroupsLanding.toggle();
}
import ProjectsList from "~/projects_list";
export default function() {
new ProjectsList();
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment