52d578229a
On the issues page (for instance), we have an `Issue` class. The constructor for that class makes some calls to get things like related branches using Axios. However, those calls were happening before the performance bar app was mounted, and so the interceptor wasn't configured - meaning we missed out on the performance data for those calls. This changes the performance bar app to be loaded eagerly instead of lazily, which solves that problem - related branches calls will now show up in the performance bar. The downside is that now the performance bar app is always imported, even when it's not used. However, it appears to be part of the main app bundle anyway, so this shouldn't affect the size of our assets.
89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
/* eslint-disable consistent-return, no-new */
|
|
|
|
import $ from 'jquery';
|
|
import GfmAutoComplete from './gfm_auto_complete';
|
|
import { convertPermissionToBoolean } from './lib/utils/common_utils';
|
|
import GlFieldErrors from './gl_field_errors';
|
|
import Shortcuts from './shortcuts';
|
|
import SearchAutocomplete from './search_autocomplete';
|
|
import performanceBar from './performance_bar';
|
|
|
|
function initSearch() {
|
|
// Only when search form is present
|
|
if ($('.search').length) {
|
|
return new SearchAutocomplete();
|
|
}
|
|
}
|
|
|
|
function initFieldErrors() {
|
|
$('.gl-show-field-errors').each((i, form) => {
|
|
new GlFieldErrors(form);
|
|
});
|
|
}
|
|
|
|
function initPageShortcuts(page) {
|
|
const pagesWithCustomShortcuts = [
|
|
'projects:activity',
|
|
'projects:artifacts:browse',
|
|
'projects:artifacts:file',
|
|
'projects:blame:show',
|
|
'projects:blob:show',
|
|
'projects:commit:show',
|
|
'projects:commits:show',
|
|
'projects:find_file:show',
|
|
'projects:issues:edit',
|
|
'projects:issues:index',
|
|
'projects:issues:new',
|
|
'projects:issues:show',
|
|
'projects:merge_requests:creations:diffs',
|
|
'projects:merge_requests:creations:new',
|
|
'projects:merge_requests:edit',
|
|
'projects:merge_requests:index',
|
|
'projects:merge_requests:show',
|
|
'projects:network:show',
|
|
'projects:show',
|
|
'projects:tree:show',
|
|
'groups:show',
|
|
];
|
|
|
|
if (pagesWithCustomShortcuts.indexOf(page) === -1) {
|
|
new Shortcuts();
|
|
}
|
|
}
|
|
|
|
function initGFMInput() {
|
|
$('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => {
|
|
const gfm = new GfmAutoComplete(
|
|
gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources,
|
|
);
|
|
const enableGFM = convertPermissionToBoolean(
|
|
el.dataset.supportsAutocomplete,
|
|
);
|
|
gfm.setup($(el), {
|
|
emojis: true,
|
|
members: enableGFM,
|
|
issues: enableGFM,
|
|
milestones: enableGFM,
|
|
mergeRequests: enableGFM,
|
|
labels: enableGFM,
|
|
});
|
|
});
|
|
}
|
|
|
|
function initPerformanceBar() {
|
|
if (document.querySelector('#js-peek')) {
|
|
performanceBar({ container: '#js-peek' });
|
|
}
|
|
}
|
|
|
|
export default () => {
|
|
initSearch();
|
|
initFieldErrors();
|
|
|
|
const page = $('body').attr('data-page');
|
|
if (page) {
|
|
initPageShortcuts(page);
|
|
initGFMInput();
|
|
initPerformanceBar();
|
|
}
|
|
};
|