Merge branch 'url-utility-es-module' into 'master'
Moved URL utility methods into exported es modules See merge request gitlab-org/gitlab-ce!15783
This commit is contained in:
commit
4ccbd556d9
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, one-var, no-var, one-var-declaration-per-line, no-unused-vars, no-else-return, prefer-arrow-callback, camelcase, quotes, comma-dangle, max-len */
|
||||
import { refreshCurrentPage } from './lib/utils/url_utility';
|
||||
|
||||
window.Admin = (function() {
|
||||
function Admin() {
|
||||
|
@ -40,10 +41,10 @@ window.Admin = (function() {
|
|||
return $('.change-owner-link').show();
|
||||
});
|
||||
$('li.project_member').bind('ajax:success', function() {
|
||||
return gl.utils.refreshCurrentPage();
|
||||
return refreshCurrentPage();
|
||||
});
|
||||
$('li.group_member').bind('ajax:success', function() {
|
||||
return gl.utils.refreshCurrentPage();
|
||||
return refreshCurrentPage();
|
||||
});
|
||||
showBlacklistType = function() {
|
||||
if ($("input[name='blacklist_type']:checked").val() === 'file') {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// %button.js-toggle-button
|
||||
// %div.js-toggle-content
|
||||
//
|
||||
import { getLocationHash } from '../lib/utils/url_utility';
|
||||
|
||||
$(() => {
|
||||
function toggleContainer(container, toggleState) {
|
||||
|
@ -32,7 +33,7 @@ $(() => {
|
|||
|
||||
// If we're accessing a permalink, ensure it is not inside a
|
||||
// closed js-toggle-container!
|
||||
const hash = window.gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
const anchor = hash && document.getElementById(hash);
|
||||
const container = anchor && $(anchor).closest('.js-toggle-container');
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable func-names, object-shorthand, prefer-arrow-callback */
|
||||
import Dropzone from 'dropzone';
|
||||
import '../lib/utils/url_utility';
|
||||
import { visitUrl } from '../lib/utils/url_utility';
|
||||
import { HIDDEN_CLASS } from '../lib/utils/constants';
|
||||
import csrf from '../lib/utils/csrf';
|
||||
|
||||
|
@ -49,7 +49,7 @@ export default class BlobFileDropzone {
|
|||
});
|
||||
this.on('success', function (header, response) {
|
||||
$('#modal-upload-blob').modal('hide');
|
||||
window.gl.utils.visitUrl(response.filePath);
|
||||
visitUrl(response.filePath);
|
||||
});
|
||||
this.on('maxfilesexceeded', function (file) {
|
||||
dropzoneMessage.addClass(HIDDEN_CLASS);
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { getLocationHash } from '../lib/utils/url_utility';
|
||||
|
||||
const lineNumberRe = /^L[0-9]+/;
|
||||
|
||||
const updateLineNumbersOnBlobPermalinks = (linksToUpdate) => {
|
||||
const hash = gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
if (hash && lineNumberRe.test(hash)) {
|
||||
const hashUrlString = `#${hash}`;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import './lib/utils/url_utility';
|
||||
import { getLocationHash } from './lib/utils/url_utility';
|
||||
import FilesCommentButton from './files_comment_button';
|
||||
import SingleFileDiff from './single_file_diff';
|
||||
import imageDiffHelper from './image_diff/helpers/index';
|
||||
|
@ -31,7 +31,7 @@ export default class Diff {
|
|||
isBound = true;
|
||||
}
|
||||
|
||||
if (gl.utils.getLocationHash()) {
|
||||
if (getLocationHash()) {
|
||||
this.highlightSelectedLine();
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ export default class Diff {
|
|||
}
|
||||
|
||||
openAnchoredDiff(cb) {
|
||||
const locationHash = gl.utils.getLocationHash();
|
||||
const locationHash = getLocationHash();
|
||||
const anchoredDiff = locationHash && locationHash.split('_')[0];
|
||||
|
||||
if (!anchoredDiff) return;
|
||||
|
@ -128,7 +128,7 @@ export default class Diff {
|
|||
}
|
||||
// eslint-disable-next-line class-methods-use-this
|
||||
highlightSelectedLine() {
|
||||
const hash = gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
const $diffFiles = $('.diff-file');
|
||||
$diffFiles.find('.hll').removeClass('hll');
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { visitUrl } from '../lib/utils/url_utility';
|
||||
import Flash from '../flash';
|
||||
import FilteredSearchContainer from './container';
|
||||
import RecentSearchesRoot from './recent_searches_root';
|
||||
|
@ -566,7 +567,7 @@ class FilteredSearchManager {
|
|||
if (this.updateObject) {
|
||||
this.updateObject(parameterizedUrl);
|
||||
} else {
|
||||
gl.utils.visitUrl(parameterizedUrl);
|
||||
visitUrl(parameterizedUrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/* global fuzzaldrinPlus */
|
||||
import _ from 'underscore';
|
||||
import fuzzaldrinPlus from 'fuzzaldrin-plus';
|
||||
import { visitUrl } from './lib/utils/url_utility';
|
||||
import { isObject } from './lib/utils/type_utility';
|
||||
|
||||
var GitLabDropdown, GitLabDropdownFilter, GitLabDropdownRemote, GitLabDropdownInput;
|
||||
|
@ -852,7 +853,7 @@ GitLabDropdown = (function() {
|
|||
if ($el.length) {
|
||||
var href = $el.attr('href');
|
||||
if (href && href !== '#') {
|
||||
gl.utils.visitUrl(href);
|
||||
visitUrl(href);
|
||||
} else {
|
||||
$el.trigger('click');
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import eventHub from '../event_hub';
|
|||
import { getParameterByName } from '../../lib/utils/common_utils';
|
||||
import loadingIcon from '../../vue_shared/components/loading_icon.vue';
|
||||
import { COMMON_STR } from '../constants';
|
||||
|
||||
import { mergeUrlParams } from '../../lib/utils/url_utility';
|
||||
import groupsComponent from './groups.vue';
|
||||
|
||||
export default {
|
||||
|
@ -93,7 +93,7 @@ export default {
|
|||
this.isLoading = false;
|
||||
$.scrollTo(0);
|
||||
|
||||
const currentPath = gl.utils.mergeUrlParams({ page }, window.location.href);
|
||||
const currentPath = mergeUrlParams({ page }, window.location.href);
|
||||
window.history.replaceState({
|
||||
page: currentPath,
|
||||
}, document.title, currentPath);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
import { visitUrl } from '../../lib/utils/url_utility';
|
||||
import tooltip from '../../vue_shared/directives/tooltip';
|
||||
import identicon from '../../vue_shared/components/identicon.vue';
|
||||
import eventHub from '../event_hub';
|
||||
|
@ -60,7 +61,7 @@ export default {
|
|||
if (this.hasChildren) {
|
||||
eventHub.$emit('toggleChildren', this.group);
|
||||
} else {
|
||||
gl.utils.visitUrl(this.group.relativePath);
|
||||
visitUrl(this.group.relativePath);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { visitUrl } from '../lib/utils/url_utility';
|
||||
import DropLab from '../droplab/drop_lab';
|
||||
import ISetter from '../droplab/plugins/input_setter';
|
||||
|
||||
|
@ -54,9 +55,9 @@ export default class NewGroupChild {
|
|||
|
||||
onClickNewGroupChildButton(e) {
|
||||
if (e.target.dataset.action === NEW_PROJECT) {
|
||||
gl.utils.visitUrl(this.newGroupPath);
|
||||
visitUrl(this.newGroupPath);
|
||||
} else if (e.target.dataset.action === NEW_SUBGROUP) {
|
||||
gl.utils.visitUrl(this.subgroupPath);
|
||||
visitUrl(this.subgroupPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import Visibility from 'visibilityjs';
|
||||
import { visitUrl } from '../../lib/utils/url_utility';
|
||||
import Poll from '../../lib/utils/poll';
|
||||
import eventHub from '../event_hub';
|
||||
import Service from '../services/index';
|
||||
|
@ -8,7 +9,6 @@ import titleComponent from './title.vue';
|
|||
import descriptionComponent from './description.vue';
|
||||
import editedComponent from './edited.vue';
|
||||
import formComponent from './form.vue';
|
||||
import '../../lib/utils/url_utility';
|
||||
import RecaptchaDialogImplementor from '../../vue_shared/mixins/recaptcha_dialog_implementor';
|
||||
|
||||
export default {
|
||||
|
@ -177,7 +177,7 @@ export default {
|
|||
.then(data => this.checkForSpam(data))
|
||||
.then((data) => {
|
||||
if (location.pathname !== data.web_url) {
|
||||
gl.utils.visitUrl(data.web_url);
|
||||
visitUrl(data.web_url);
|
||||
}
|
||||
|
||||
return this.service.getData();
|
||||
|
@ -212,7 +212,7 @@ export default {
|
|||
// Stop the poll so we don't get 404's with the issuable not existing
|
||||
this.poll.stop();
|
||||
|
||||
gl.utils.visitUrl(data.web_url);
|
||||
visitUrl(data.web_url);
|
||||
})
|
||||
.catch(() => {
|
||||
eventHub.$emit('close.form');
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import _ from 'underscore';
|
||||
import { visitUrl } from './lib/utils/url_utility';
|
||||
import bp from './breakpoints';
|
||||
import { bytesToKiB } from './lib/utils/number_utils';
|
||||
import { setCiStatusFavicon } from './lib/utils/common_utils';
|
||||
|
@ -209,7 +210,7 @@ export default class Job {
|
|||
}
|
||||
|
||||
if (log.status !== this.buildStatus) {
|
||||
gl.utils.visitUrl(this.pagePath);
|
||||
visitUrl(this.pagePath);
|
||||
}
|
||||
})
|
||||
.fail(() => {
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { getLocationHash } from './url_utility';
|
||||
|
||||
export const getPagePath = (index = 0) => $('body').attr('data-page').split(':')[index];
|
||||
|
||||
|
@ -65,7 +66,7 @@ export const disableButtonIfEmptyField = (fieldSelector, buttonSelector, eventNa
|
|||
// automatically adjust scroll position for hash urls taking the height of the navbar into account
|
||||
// https://github.com/twitter/bootstrap/issues/1768
|
||||
export const handleLocationHash = () => {
|
||||
let hash = window.gl.utils.getLocationHash();
|
||||
let hash = getLocationHash();
|
||||
if (!hash) return;
|
||||
|
||||
// This is required to handle non-unicode characters in hash
|
||||
|
|
|
@ -1,93 +1,69 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, one-var, one-var-declaration-per-line, no-void, guard-for-in, no-restricted-syntax, prefer-template, quotes, max-len */
|
||||
|
||||
var base;
|
||||
var w = window;
|
||||
if (w.gl == null) {
|
||||
w.gl = {};
|
||||
}
|
||||
if ((base = w.gl).utils == null) {
|
||||
base.utils = {};
|
||||
}
|
||||
// Returns an array containing the value(s) of the
|
||||
// of the key passed as an argument
|
||||
w.gl.utils.getParameterValues = function(sParam) {
|
||||
var i, sPageURL, sParameterName, sURLVariables, values;
|
||||
sPageURL = decodeURIComponent(window.location.search.substring(1));
|
||||
sURLVariables = sPageURL.split('&');
|
||||
sParameterName = void 0;
|
||||
values = [];
|
||||
i = 0;
|
||||
while (i < sURLVariables.length) {
|
||||
sParameterName = sURLVariables[i].split('=');
|
||||
export function getParameterValues(sParam) {
|
||||
const sPageURL = decodeURIComponent(window.location.search.substring(1));
|
||||
|
||||
return sPageURL.split('&').reduce((acc, urlParam) => {
|
||||
const sParameterName = urlParam.split('=');
|
||||
|
||||
if (sParameterName[0] === sParam) {
|
||||
values.push(sParameterName[1].replace(/\+/g, ' '));
|
||||
acc.push(sParameterName[1].replace(/\+/g, ' '));
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
return values;
|
||||
};
|
||||
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
|
||||
// @param {Object} params - url keys and value to merge
|
||||
// @param {String} url
|
||||
w.gl.utils.mergeUrlParams = function(params, url) {
|
||||
var lastChar, newUrl, paramName, paramValue, pattern;
|
||||
newUrl = decodeURIComponent(url);
|
||||
for (paramName in params) {
|
||||
paramValue = params[paramName];
|
||||
pattern = new RegExp("\\b(" + paramName + "=).*?(&|$)");
|
||||
if (paramValue == null) {
|
||||
newUrl = newUrl.replace(pattern, '');
|
||||
export function mergeUrlParams(params, url) {
|
||||
let newUrl = Object.keys(params).reduce((acc, paramName) => {
|
||||
const paramValue = params[paramName];
|
||||
const pattern = new RegExp(`\\b(${paramName}=).*?(&|$)`);
|
||||
|
||||
if (paramValue === null) {
|
||||
return acc.replace(pattern, '');
|
||||
} else if (url.search(pattern) !== -1) {
|
||||
newUrl = newUrl.replace(pattern, "$1" + paramValue + "$2");
|
||||
} else {
|
||||
newUrl = "" + newUrl + (newUrl.indexOf('?') > 0 ? '&' : '?') + paramName + "=" + paramValue;
|
||||
return acc.replace(pattern, `$1${paramValue}$2`);
|
||||
}
|
||||
}
|
||||
|
||||
return `${acc}${acc.indexOf('?') > 0 ? '&' : '?'}${paramName}=${paramValue}`;
|
||||
}, decodeURIComponent(url));
|
||||
|
||||
// Remove a trailing ampersand
|
||||
lastChar = newUrl[newUrl.length - 1];
|
||||
const lastChar = newUrl[newUrl.length - 1];
|
||||
|
||||
if (lastChar === '&') {
|
||||
newUrl = newUrl.slice(0, -1);
|
||||
}
|
||||
|
||||
return newUrl;
|
||||
};
|
||||
// removes parameter query string from url. returns the modified url
|
||||
w.gl.utils.removeParamQueryString = function(url, param) {
|
||||
var urlVariables, variables;
|
||||
url = decodeURIComponent(url);
|
||||
urlVariables = url.split('&');
|
||||
return ((function() {
|
||||
var j, len, results;
|
||||
results = [];
|
||||
for (j = 0, len = urlVariables.length; j < len; j += 1) {
|
||||
variables = urlVariables[j];
|
||||
if (variables.indexOf(param) === -1) {
|
||||
results.push(variables);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
})()).join('&');
|
||||
};
|
||||
w.gl.utils.removeParams = (params) => {
|
||||
}
|
||||
|
||||
export function removeParamQueryString(url, param) {
|
||||
const decodedUrl = decodeURIComponent(url);
|
||||
const urlVariables = decodedUrl.split('&');
|
||||
|
||||
return urlVariables.filter(variable => variable.indexOf(param) === -1).join('&');
|
||||
}
|
||||
|
||||
export function removeParams(params) {
|
||||
const url = document.createElement('a');
|
||||
url.href = window.location.href;
|
||||
|
||||
params.forEach((param) => {
|
||||
url.search = w.gl.utils.removeParamQueryString(url.search, param);
|
||||
url.search = removeParamQueryString(url.search, param);
|
||||
});
|
||||
|
||||
return url.href;
|
||||
};
|
||||
w.gl.utils.getLocationHash = function(url) {
|
||||
var hashIndex;
|
||||
if (typeof url === 'undefined') {
|
||||
// Note: We can't use window.location.hash here because it's
|
||||
// not consistent across browsers - Firefox will pre-decode it
|
||||
url = window.location.href;
|
||||
}
|
||||
hashIndex = url.indexOf('#');
|
||||
}
|
||||
|
||||
export function getLocationHash(url = window.location.href) {
|
||||
const hashIndex = url.indexOf('#');
|
||||
|
||||
return hashIndex === -1 ? null : url.substring(hashIndex + 1);
|
||||
};
|
||||
}
|
||||
|
||||
w.gl.utils.refreshCurrentPage = () => gl.utils.visitUrl(window.location.href);
|
||||
|
||||
// eslint-disable-next-line import/prefer-default-export
|
||||
export function visitUrl(url, external = false) {
|
||||
if (external) {
|
||||
// Simulate `target="blank" rel="noopener noreferrer"`
|
||||
|
@ -100,12 +76,10 @@ export function visitUrl(url, external = false) {
|
|||
}
|
||||
}
|
||||
|
||||
export function refreshCurrentPage() {
|
||||
visitUrl(window.location.href);
|
||||
}
|
||||
|
||||
export function redirectTo(url) {
|
||||
return window.location.assign(url);
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.utils = {
|
||||
...(window.gl.utils || {}),
|
||||
visitUrl,
|
||||
};
|
||||
|
|
|
@ -29,7 +29,7 @@ import './commit/image_file';
|
|||
// lib/utils
|
||||
import { handleLocationHash } from './lib/utils/common_utils';
|
||||
import './lib/utils/datetime_utility';
|
||||
import './lib/utils/url_utility';
|
||||
import { getLocationHash, visitUrl } from './lib/utils/url_utility';
|
||||
|
||||
// behaviors
|
||||
import './behaviors/';
|
||||
|
@ -119,7 +119,7 @@ $(function () {
|
|||
// `hashchange` is not triggered when link target is already in window.location
|
||||
$body.on('click', 'a[href^="#"]', function() {
|
||||
var href = this.getAttribute('href');
|
||||
if (href.substr(1) === gl.utils.getLocationHash()) {
|
||||
if (href.substr(1) === getLocationHash()) {
|
||||
setTimeout(handleLocationHash, 1);
|
||||
}
|
||||
});
|
||||
|
@ -291,7 +291,7 @@ $(function () {
|
|||
const action = `${this.action}${link.search === '' ? '?' : '&'}`;
|
||||
|
||||
event.preventDefault();
|
||||
gl.utils.visitUrl(`${action}${$(this).serialize()}`);
|
||||
visitUrl(`${action}${$(this).serialize()}`);
|
||||
});
|
||||
|
||||
const flashContainer = document.querySelector('.flash-container');
|
||||
|
|
|
@ -11,6 +11,7 @@ import {
|
|||
handleLocationHash,
|
||||
isMetaClick,
|
||||
} from './lib/utils/common_utils';
|
||||
import { getLocationHash } from './lib/utils/url_utility';
|
||||
import initDiscussionTab from './image_diff/init_discussion_tab';
|
||||
import Diff from './diff';
|
||||
|
||||
|
@ -317,7 +318,7 @@ import Diff from './diff';
|
|||
|
||||
// Scroll any linked note into view
|
||||
// Similar to `toggler_behavior` in the discussion tab
|
||||
const hash = window.gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
const anchor = hash && $container.find(`.note[id="${hash}"]`);
|
||||
if (anchor && anchor.length > 0) {
|
||||
const notesContent = anchor.closest('.notes_content');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, comma-dangle, object-shorthand, no-else-return, prefer-template, quotes, prefer-arrow-callback, max-len */
|
||||
import Api from './api';
|
||||
import './lib/utils/url_utility';
|
||||
import { mergeUrlParams } from './lib/utils/url_utility';
|
||||
|
||||
export default class NamespaceSelect {
|
||||
constructor(opts) {
|
||||
|
@ -50,7 +50,7 @@ export default class NamespaceSelect {
|
|||
}
|
||||
},
|
||||
url(namespace) {
|
||||
return gl.utils.mergeUrlParams({ [fieldName]: namespace.id }, window.location.href);
|
||||
return mergeUrlParams({ [fieldName]: namespace.id }, window.location.href);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import Autosize from 'autosize';
|
|||
import 'vendor/jquery.caret'; // required by jquery.atwho
|
||||
import 'vendor/jquery.atwho';
|
||||
import AjaxCache from '~/lib/utils/ajax_cache';
|
||||
import { getLocationHash } from './lib/utils/url_utility';
|
||||
import Flash from './flash';
|
||||
import CommentTypeToggle from './comment_type_toggle';
|
||||
import GLForm from './gl_form';
|
||||
|
@ -330,7 +331,7 @@ export default class Notes {
|
|||
}
|
||||
|
||||
static updateNoteTargetSelector($note) {
|
||||
const hash = gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
// Needs to be an explicit true/false for the jQuery `toggleClass(force)`
|
||||
const addTargetClass = Boolean(hash && $note.filter(`#${hash}`).length > 0);
|
||||
$note.toggleClass('target', addTargetClass);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import { mapGetters, mapActions } from 'vuex';
|
||||
import { getLocationHash } from '../../lib/utils/url_utility';
|
||||
import Flash from '../../flash';
|
||||
import store from '../stores/';
|
||||
import * as constants from '../constants';
|
||||
|
@ -95,7 +96,7 @@
|
|||
this.poll();
|
||||
},
|
||||
checkLocationHash() {
|
||||
const hash = gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
const element = document.getElementById(hash);
|
||||
|
||||
if (hash && element) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { getParameterByName } from '~/lib/utils/common_utils';
|
||||
import '~/lib/utils/url_utility';
|
||||
import { removeParams } from './lib/utils/url_utility';
|
||||
|
||||
(() => {
|
||||
const ENDLESS_SCROLL_BOTTOM_PX = 400;
|
||||
|
@ -7,7 +7,7 @@ import '~/lib/utils/url_utility';
|
|||
|
||||
const Pager = {
|
||||
init(limit = 0, preload = false, disable = false, prepareData = $.noop, callback = $.noop) {
|
||||
this.url = $('.content_list').data('href') || gl.utils.removeParams(['limit', 'offset']);
|
||||
this.url = $('.content_list').data('href') || removeParams(['limit', 'offset']);
|
||||
this.limit = limit;
|
||||
this.offset = parseInt(getParameterByName('offset'), 10) || this.limit;
|
||||
this.disable = disable;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'vendor/peek';
|
||||
import 'vendor/peek.performance_bar';
|
||||
import { getParameterValues } from './lib/utils/url_utility';
|
||||
|
||||
export default class PerformanceBar {
|
||||
constructor(opts) {
|
||||
|
@ -39,7 +40,7 @@ export default class PerformanceBar {
|
|||
}
|
||||
|
||||
handleLineProfileLink(e) {
|
||||
const lineProfilerParameter = gl.utils.getParameterValues('lineprofiler');
|
||||
const lineProfilerParameter = getParameterValues('lineprofiler');
|
||||
const lineProfilerParameterRegex = new RegExp(`lineprofiler=${lineProfilerParameter[0]}`);
|
||||
const shouldToggleModal = lineProfilerParameter.length > 0 &&
|
||||
lineProfilerParameterRegex.test(e.currentTarget.href);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, consistent-return, no-new, prefer-arrow-callback, no-return-assign, one-var, one-var-declaration-per-line, object-shorthand, no-else-return, newline-per-chained-call, no-shadow, vars-on-top, prefer-template, max-len */
|
||||
|
||||
import Cookies from 'js-cookie';
|
||||
import { visitUrl } from './lib/utils/url_utility';
|
||||
import projectSelect from './project_select';
|
||||
|
||||
export default class Project {
|
||||
|
@ -122,7 +123,7 @@ export default class Project {
|
|||
var action = $form.attr('action');
|
||||
var divider = action.indexOf('?') === -1 ? '?' : '&';
|
||||
if (shouldVisit) {
|
||||
gl.utils.visitUrl(`${action}${divider}${$form.serialize()}`);
|
||||
visitUrl(`${action}${divider}${$form.serialize()}`);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import '../lib/utils/url_utility';
|
||||
import { getParameterValues } from '../lib/utils/url_utility';
|
||||
|
||||
const bindEvents = () => {
|
||||
const path = gl.utils.getParameterValues('path')[0];
|
||||
const path = getParameterValues('path')[0];
|
||||
|
||||
// get the path url and append it in the inputS
|
||||
$('.js-path-name').val(path);
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import Vue from 'vue';
|
||||
import { visitUrl } from '../../lib/utils/url_utility';
|
||||
import flash from '../../flash';
|
||||
import service from '../services';
|
||||
import * as types from './mutation_types';
|
||||
|
||||
export const redirectToUrl = (_, url) => gl.utils.visitUrl(url);
|
||||
export const redirectToUrl = (_, url) => visitUrl(url);
|
||||
|
||||
export const setInitialData = ({ commit }, data) => commit(types.SET_INITIAL_DATA, data);
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { visitUrl } from '../../../lib/utils/url_utility';
|
||||
import { normalizeHeaders } from '../../../lib/utils/common_utils';
|
||||
import flash from '../../../flash';
|
||||
import service from '../../services';
|
||||
|
@ -73,7 +74,7 @@ export const clickedTreeRow = ({ commit, dispatch }, row) => {
|
|||
} else if (row.type === 'submodule') {
|
||||
commit(types.TOGGLE_LOADING, row);
|
||||
|
||||
gl.utils.visitUrl(row.url);
|
||||
visitUrl(row.url);
|
||||
} else if (row.type === 'blob' && row.opened) {
|
||||
dispatch('setFileActive', row);
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import Cookies from 'js-cookie';
|
||||
import Mousetrap from 'mousetrap';
|
||||
import { refreshCurrentPage, visitUrl } from './lib/utils/url_utility';
|
||||
import findAndFollowLink from './shortcuts_dashboard_navigation';
|
||||
|
||||
const defaultStopCallback = Mousetrap.stopCallback;
|
||||
|
@ -38,7 +39,7 @@ export default class Shortcuts {
|
|||
|
||||
if (typeof findFileURL !== 'undefined' && findFileURL !== null) {
|
||||
Mousetrap.bind('t', () => {
|
||||
gl.utils.visitUrl(findFileURL);
|
||||
visitUrl(findFileURL);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -62,7 +63,7 @@ export default class Shortcuts {
|
|||
} else {
|
||||
Cookies.set(performanceBarCookieName, 'true', { path: '/' });
|
||||
}
|
||||
gl.utils.refreshCurrentPage();
|
||||
refreshCurrentPage();
|
||||
}
|
||||
|
||||
static toggleMarkdownPreview(e) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* global Mousetrap */
|
||||
|
||||
import { getLocationHash, visitUrl } from './lib/utils/url_utility';
|
||||
import Shortcuts from './shortcuts';
|
||||
|
||||
const defaults = {
|
||||
|
@ -18,9 +18,9 @@ export default class ShortcutsBlob extends Shortcuts {
|
|||
|
||||
moveToFilePermalink() {
|
||||
if (this.options.fileBlobPermalinkUrl) {
|
||||
const hash = gl.utils.getLocationHash();
|
||||
const hash = getLocationHash();
|
||||
const hashUrlString = hash ? `#${hash}` : '';
|
||||
gl.utils.visitUrl(`${this.options.fileBlobPermalinkUrl}${hashUrlString}`);
|
||||
visitUrl(`${this.options.fileBlobPermalinkUrl}${hashUrlString}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { visitUrl } from '../lib/utils/url_utility';
|
||||
import Flash from '../flash';
|
||||
import Service from './services/sidebar_service';
|
||||
import Store from './stores/sidebar_store';
|
||||
|
@ -81,7 +82,7 @@ export default class SidebarMediator {
|
|||
.then(response => response.json())
|
||||
.then((data) => {
|
||||
if (location.pathname !== data.web_url) {
|
||||
gl.utils.visitUrl(data.web_url);
|
||||
visitUrl(data.web_url);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* eslint-disable class-methods-use-this, no-unneeded-ternary, quote-props */
|
||||
|
||||
import { visitUrl } from './lib/utils/url_utility';
|
||||
import UsersSelect from './users_select';
|
||||
import { isMetaClick } from './lib/utils/common_utils';
|
||||
|
||||
|
@ -150,7 +150,7 @@ export default class Todos {
|
|||
|
||||
window.open(todoLink, windowTarget);
|
||||
} else {
|
||||
gl.utils.visitUrl(todoLink);
|
||||
visitUrl(todoLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, quotes, consistent-return, no-var, one-var, one-var-declaration-per-line, no-else-return, prefer-arrow-callback, class-methods-use-this */
|
||||
import { visitUrl } from './lib/utils/url_utility';
|
||||
|
||||
export default class TreeView {
|
||||
constructor() {
|
||||
|
@ -14,7 +15,7 @@ export default class TreeView {
|
|||
e.preventDefault();
|
||||
return window.open(path, '_blank');
|
||||
} else {
|
||||
return gl.utils.visitUrl(path);
|
||||
return visitUrl(path);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -56,7 +57,7 @@ export default class TreeView {
|
|||
} else if (e.which === 13) {
|
||||
path = $('.tree-item.selected .tree-item-file-name a').attr('href');
|
||||
if (path) {
|
||||
return gl.utils.visitUrl(path);
|
||||
return visitUrl(path);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import '~/lib/utils/datetime_utility';
|
||||
import { visitUrl } from '../../lib/utils/url_utility';
|
||||
import Flash from '../../flash';
|
||||
import MemoryUsage from './mr_widget_memory_usage';
|
||||
import StatusIcon from './mr_widget_status_icon';
|
||||
|
@ -36,7 +37,7 @@ export default {
|
|||
.then(res => res.json())
|
||||
.then((res) => {
|
||||
if (res.redirect_url) {
|
||||
gl.utils.visitUrl(res.redirect_url);
|
||||
visitUrl(res.redirect_url);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
import Vue from 'vue';
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
import '~/lib/utils/url_utility';
|
||||
import '~/boards/models/issue';
|
||||
import '~/boards/models/label';
|
||||
import '~/boards/models/list';
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
/* global mockBoardService */
|
||||
|
||||
import Vue from 'vue';
|
||||
import '~/lib/utils/url_utility';
|
||||
import '~/boards/models/issue';
|
||||
import '~/boards/models/label';
|
||||
import '~/boards/models/list';
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
import Vue from 'vue';
|
||||
|
||||
import '~/lib/utils/url_utility';
|
||||
import '~/boards/models/issue';
|
||||
import '~/boards/models/label';
|
||||
import '~/boards/models/list';
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import * as recentSearchesStoreSrc from '~/filtered_search/stores/recent_searches_store';
|
||||
import RecentSearchesService from '~/filtered_search/services/recent_searches_service';
|
||||
import RecentSearchesServiceError from '~/filtered_search/services/recent_searches_service_error';
|
||||
import RecentSearchesRoot from '~/filtered_search/recent_searches_root';
|
||||
import '~/lib/utils/url_utility';
|
||||
import '~/lib/utils/common_utils';
|
||||
import '~/filtered_search/filtered_search_token_keys';
|
||||
import '~/filtered_search/filtered_search_tokenizer';
|
||||
|
@ -162,7 +162,7 @@ describe('Filtered Search Manager', () => {
|
|||
it('should search with a single word', (done) => {
|
||||
input.value = 'searchTerm';
|
||||
|
||||
spyOn(gl.utils, 'visitUrl').and.callFake((url) => {
|
||||
spyOn(urlUtils, 'visitUrl').and.callFake((url) => {
|
||||
expect(url).toEqual(`${defaultParams}&search=searchTerm`);
|
||||
done();
|
||||
});
|
||||
|
@ -173,7 +173,7 @@ describe('Filtered Search Manager', () => {
|
|||
it('should search with multiple words', (done) => {
|
||||
input.value = 'awesome search terms';
|
||||
|
||||
spyOn(gl.utils, 'visitUrl').and.callFake((url) => {
|
||||
spyOn(urlUtils, 'visitUrl').and.callFake((url) => {
|
||||
expect(url).toEqual(`${defaultParams}&search=awesome+search+terms`);
|
||||
done();
|
||||
});
|
||||
|
@ -184,7 +184,7 @@ describe('Filtered Search Manager', () => {
|
|||
it('should search with special characters', (done) => {
|
||||
input.value = '~!@#$%^&*()_+{}:<>,.?/';
|
||||
|
||||
spyOn(gl.utils, 'visitUrl').and.callFake((url) => {
|
||||
spyOn(urlUtils, 'visitUrl').and.callFake((url) => {
|
||||
expect(url).toEqual(`${defaultParams}&search=~!%40%23%24%25%5E%26*()_%2B%7B%7D%3A%3C%3E%2C.%3F%2F`);
|
||||
done();
|
||||
});
|
||||
|
@ -198,7 +198,7 @@ describe('Filtered Search Manager', () => {
|
|||
${FilteredSearchSpecHelper.createFilterVisualTokenHTML('label', '~bug')}
|
||||
`);
|
||||
|
||||
spyOn(gl.utils, 'visitUrl').and.callFake((url) => {
|
||||
spyOn(urlUtils, 'visitUrl').and.callFake((url) => {
|
||||
expect(url).toEqual(`${defaultParams}&label_name[]=bug`);
|
||||
done();
|
||||
});
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import '~/gl_dropdown';
|
||||
import '~/lib/utils/common_utils';
|
||||
import '~/lib/utils/url_utility';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
|
||||
describe('glDropdown', function describeDropdown() {
|
||||
preloadFixtures('static/gl_dropdown.html.raw');
|
||||
|
@ -137,13 +137,13 @@ describe('glDropdown', function describeDropdown() {
|
|||
expect(this.dropdownContainerElement).toHaveClass('open');
|
||||
const randomIndex = Math.floor(Math.random() * (this.projectsData.length - 1)) + 0;
|
||||
navigateWithKeys('down', randomIndex, () => {
|
||||
spyOn(gl.utils, 'visitUrl').and.stub();
|
||||
spyOn(urlUtils, 'visitUrl').and.stub();
|
||||
navigateWithKeys('enter', null, () => {
|
||||
expect(this.dropdownContainerElement).not.toHaveClass('open');
|
||||
const link = $(`${ITEM_SELECTOR}:eq(${randomIndex}) a`, this.$dropdownMenuElement);
|
||||
expect(link).toHaveClass('is-active');
|
||||
const linkedLocation = link.attr('href');
|
||||
if (linkedLocation && linkedLocation !== '#') expect(gl.utils.visitUrl).toHaveBeenCalledWith(linkedLocation);
|
||||
if (linkedLocation && linkedLocation !== '#') expect(urlUtils.visitUrl).toHaveBeenCalledWith(linkedLocation);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
import * as utils from '~/lib/utils/url_utility';
|
||||
import appComponent from '~/groups/components/app.vue';
|
||||
import groupFolderComponent from '~/groups/components/group_folder.vue';
|
||||
import groupItemComponent from '~/groups/components/group_item.vue';
|
||||
|
||||
import eventHub from '~/groups/event_hub';
|
||||
import GroupsStore from '~/groups/store/groups_store';
|
||||
import GroupsService from '~/groups/service/groups_service';
|
||||
|
@ -176,7 +176,7 @@ describe('AppComponent', () => {
|
|||
it('should fetch groups for provided page details and update window state', (done) => {
|
||||
spyOn(vm, 'fetchGroups').and.returnValue(returnServicePromise(mockGroups));
|
||||
spyOn(vm, 'updateGroups').and.callThrough();
|
||||
spyOn(gl.utils, 'mergeUrlParams').and.callThrough();
|
||||
spyOn(utils, 'mergeUrlParams').and.callThrough();
|
||||
spyOn(window.history, 'replaceState');
|
||||
spyOn($, 'scrollTo');
|
||||
|
||||
|
@ -192,7 +192,7 @@ describe('AppComponent', () => {
|
|||
setTimeout(() => {
|
||||
expect(vm.isLoading).toBeFalsy();
|
||||
expect($.scrollTo).toHaveBeenCalledWith(0);
|
||||
expect(gl.utils.mergeUrlParams).toHaveBeenCalledWith({ page: 2 }, jasmine.any(String));
|
||||
expect(utils.mergeUrlParams).toHaveBeenCalledWith({ page: 2 }, jasmine.any(String));
|
||||
expect(window.history.replaceState).toHaveBeenCalledWith({
|
||||
page: jasmine.any(String),
|
||||
}, jasmine.any(String), jasmine.any(String));
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import groupItemComponent from '~/groups/components/group_item.vue';
|
||||
import groupFolderComponent from '~/groups/components/group_folder.vue';
|
||||
import eventHub from '~/groups/event_hub';
|
||||
|
@ -136,13 +136,13 @@ describe('GroupItemComponent', () => {
|
|||
const group = Object.assign({}, mockParentGroupItem);
|
||||
group.childrenCount = 0;
|
||||
const newVm = createComponent(group);
|
||||
spyOn(gl.utils, 'visitUrl').and.stub();
|
||||
spyOn(urlUtils, 'visitUrl').and.stub();
|
||||
spyOn(eventHub, '$emit');
|
||||
|
||||
newVm.onClickRowGroup(event);
|
||||
setTimeout(() => {
|
||||
expect(eventHub.$emit).not.toHaveBeenCalled();
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(newVm.group.relativePath);
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith(newVm.group.relativePath);
|
||||
done();
|
||||
}, 0);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Vue from 'vue';
|
||||
import '~/render_math';
|
||||
import '~/render_gfm';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import issuableApp from '~/issue_show/components/app.vue';
|
||||
import eventHub from '~/issue_show/event_hub';
|
||||
import issueShowData from '../mock_data';
|
||||
|
@ -180,7 +181,7 @@ describe('Issuable output', () => {
|
|||
});
|
||||
|
||||
it('does not redirect if issue has not moved', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => {
|
||||
resolve({
|
||||
json() {
|
||||
|
@ -196,7 +197,7 @@ describe('Issuable output', () => {
|
|||
|
||||
setTimeout(() => {
|
||||
expect(
|
||||
gl.utils.visitUrl,
|
||||
urlUtils.visitUrl,
|
||||
).not.toHaveBeenCalled();
|
||||
|
||||
done();
|
||||
|
@ -204,7 +205,7 @@ describe('Issuable output', () => {
|
|||
});
|
||||
|
||||
it('redirects if returned web_url has changed', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => {
|
||||
resolve({
|
||||
json() {
|
||||
|
@ -220,7 +221,7 @@ describe('Issuable output', () => {
|
|||
|
||||
setTimeout(() => {
|
||||
expect(
|
||||
gl.utils.visitUrl,
|
||||
urlUtils.visitUrl,
|
||||
).toHaveBeenCalledWith('/testing-issue-move');
|
||||
|
||||
done();
|
||||
|
@ -319,7 +320,7 @@ describe('Issuable output', () => {
|
|||
|
||||
describe('deleteIssuable', () => {
|
||||
it('changes URL when deleted', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
spyOn(vm.service, 'deleteIssuable').and.callFake(() => new Promise((resolve) => {
|
||||
resolve({
|
||||
json() {
|
||||
|
@ -332,7 +333,7 @@ describe('Issuable output', () => {
|
|||
|
||||
setTimeout(() => {
|
||||
expect(
|
||||
gl.utils.visitUrl,
|
||||
urlUtils.visitUrl,
|
||||
).toHaveBeenCalledWith('/test');
|
||||
|
||||
done();
|
||||
|
@ -340,7 +341,7 @@ describe('Issuable output', () => {
|
|||
});
|
||||
|
||||
it('stops polling when deleting', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
spyOn(vm.poll, 'stop').and.callThrough();
|
||||
spyOn(vm.service, 'deleteIssuable').and.callFake(() => new Promise((resolve) => {
|
||||
resolve({
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { bytesToKiB } from '~/lib/utils/number_utils';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import '~/lib/utils/datetime_utility';
|
||||
import '~/lib/utils/url_utility';
|
||||
import Job from '~/job';
|
||||
import '~/breakpoints';
|
||||
|
||||
|
@ -65,7 +65,7 @@ describe('Job', () => {
|
|||
const deferred2 = $.Deferred();
|
||||
const deferred3 = $.Deferred();
|
||||
spyOn($, 'ajax').and.returnValues(deferred1.promise(), deferred2.promise(), deferred3.promise());
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
deferred1.resolve({
|
||||
html: '<span>Update<span>',
|
||||
|
@ -103,7 +103,7 @@ describe('Job', () => {
|
|||
|
||||
spyOn($, 'ajax').and.returnValues(deferred1.promise(), deferred2.promise(), deferred3.promise());
|
||||
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
deferred1.resolve({
|
||||
html: '<span>Update<span>',
|
||||
|
@ -134,7 +134,7 @@ describe('Job', () => {
|
|||
describe('truncated information', () => {
|
||||
describe('when size is less than total', () => {
|
||||
it('shows information about truncated log', () => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
const deferred = $.Deferred();
|
||||
spyOn($, 'ajax').and.returnValue(deferred.promise());
|
||||
|
||||
|
@ -153,7 +153,7 @@ describe('Job', () => {
|
|||
|
||||
it('shows the size in KiB', () => {
|
||||
const size = 50;
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
const deferred = $.Deferred();
|
||||
|
||||
spyOn($, 'ajax').and.returnValue(deferred.promise());
|
||||
|
@ -179,7 +179,7 @@ describe('Job', () => {
|
|||
|
||||
spyOn($, 'ajax').and.returnValues(deferred1.promise(), deferred2.promise(), deferred3.promise());
|
||||
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
deferred1.resolve({
|
||||
html: '<span>Update</span>',
|
||||
|
@ -214,7 +214,7 @@ describe('Job', () => {
|
|||
|
||||
it('renders the raw link', () => {
|
||||
const deferred = $.Deferred();
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
spyOn($, 'ajax').and.returnValue(deferred.promise());
|
||||
deferred.resolve({
|
||||
|
@ -236,7 +236,7 @@ describe('Job', () => {
|
|||
describe('when size is equal than total', () => {
|
||||
it('does not show the trunctated information', () => {
|
||||
const deferred = $.Deferred();
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
spyOn($, 'ajax').and.returnValue(deferred.promise());
|
||||
deferred.resolve({
|
||||
|
@ -257,7 +257,7 @@ describe('Job', () => {
|
|||
describe('output trace', () => {
|
||||
beforeEach(() => {
|
||||
const deferred = $.Deferred();
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
spyOn($, 'ajax').and.returnValue(deferred.promise());
|
||||
deferred.resolve({
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable no-var, comma-dangle, object-shorthand */
|
||||
/* global Notes */
|
||||
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import '~/merge_request_tabs';
|
||||
import '~/commit/pipelines/pipelines_bundle';
|
||||
import '~/breakpoints';
|
||||
|
@ -333,7 +334,7 @@ import 'vendor/jquery.scrollTo';
|
|||
|
||||
describe('with note fragment hash', () => {
|
||||
it('should expand and scroll to linked fragment hash #note_xxx', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue(noteId);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(noteId);
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
expect(noteId.length).toBeGreaterThan(0);
|
||||
|
@ -345,7 +346,7 @@ import 'vendor/jquery.scrollTo';
|
|||
});
|
||||
|
||||
it('should gracefully ignore non-existant fragment hash', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue('note_something-that-does-not-exist');
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue('note_something-that-does-not-exist');
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
expect(window.notes.toggleDiffNote).not.toHaveBeenCalled();
|
||||
|
@ -354,7 +355,7 @@ import 'vendor/jquery.scrollTo';
|
|||
|
||||
describe('with line number fragment hash', () => {
|
||||
it('should gracefully ignore line number fragment hash', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue(noteLineNumId);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(noteLineNumId);
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
expect(noteLineNumId.length).toBeGreaterThan(0);
|
||||
|
@ -387,7 +388,7 @@ import 'vendor/jquery.scrollTo';
|
|||
|
||||
describe('with note fragment hash', () => {
|
||||
it('should expand and scroll to linked fragment hash #note_xxx', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue(noteId);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(noteId);
|
||||
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
|
@ -400,7 +401,7 @@ import 'vendor/jquery.scrollTo';
|
|||
});
|
||||
|
||||
it('should gracefully ignore non-existant fragment hash', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue('note_something-that-does-not-exist');
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue('note_something-that-does-not-exist');
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
expect(window.notes.toggleDiffNote).not.toHaveBeenCalled();
|
||||
|
@ -409,7 +410,7 @@ import 'vendor/jquery.scrollTo';
|
|||
|
||||
describe('with line number fragment hash', () => {
|
||||
it('should gracefully ignore line number fragment hash', function () {
|
||||
spyOn(window.gl.utils, 'getLocationHash').and.returnValue(noteLineNumId);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(noteLineNumId);
|
||||
this.class.loadDiff('/foo/bar/merge_requests/1/diffs');
|
||||
|
||||
expect(noteLineNumId.length).toBeGreaterThan(0);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable space-before-function-paren, no-unused-expressions, no-var, object-shorthand, comma-dangle, max-len */
|
||||
/* global Notes */
|
||||
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import 'autosize';
|
||||
import '~/gl_form';
|
||||
import '~/lib/utils/text_utility';
|
||||
|
@ -168,8 +169,7 @@ import '~/notes';
|
|||
});
|
||||
|
||||
it('sets target when hash matches', () => {
|
||||
spyOn(gl.utils, 'getLocationHash');
|
||||
gl.utils.getLocationHash.and.returnValue(hash);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(hash);
|
||||
|
||||
Notes.updateNoteTargetSelector($note);
|
||||
|
||||
|
@ -178,8 +178,7 @@ import '~/notes';
|
|||
});
|
||||
|
||||
it('unsets target when hash does not match', () => {
|
||||
spyOn(gl.utils, 'getLocationHash');
|
||||
gl.utils.getLocationHash.and.returnValue('note_doesnotexist');
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue('note_doesnotexist');
|
||||
|
||||
Notes.updateNoteTargetSelector($note);
|
||||
|
||||
|
@ -187,8 +186,7 @@ import '~/notes';
|
|||
});
|
||||
|
||||
it('unsets target when there is not a hash fragment anymore', () => {
|
||||
spyOn(gl.utils, 'getLocationHash');
|
||||
gl.utils.getLocationHash.and.returnValue(null);
|
||||
spyOn(urlUtils, 'getLocationHash').and.returnValue(null);
|
||||
|
||||
Notes.updateNoteTargetSelector($note);
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* global fixture */
|
||||
|
||||
import * as utils from '~/lib/utils/url_utility';
|
||||
import '~/pager';
|
||||
|
||||
describe('pager', () => {
|
||||
|
@ -30,7 +31,7 @@ describe('pager', () => {
|
|||
|
||||
it('should use current url if data-href attribute not provided', () => {
|
||||
const href = `${gl.TEST_HOST}/some_list`;
|
||||
spyOn(gl.utils, 'removeParams').and.returnValue(href);
|
||||
spyOn(utils, 'removeParams').and.returnValue(href);
|
||||
Pager.init();
|
||||
expect(Pager.url).toBe(href);
|
||||
});
|
||||
|
@ -44,9 +45,9 @@ describe('pager', () => {
|
|||
it('keeps extra query parameters from url', () => {
|
||||
window.history.replaceState({}, null, '?filter=test&offset=100');
|
||||
const href = `${gl.TEST_HOST}/some_list?filter=test`;
|
||||
spyOn(gl.utils, 'removeParams').and.returnValue(href);
|
||||
spyOn(utils, 'removeParams').and.returnValue(href);
|
||||
Pager.init();
|
||||
expect(gl.utils.removeParams).toHaveBeenCalledWith(['limit', 'offset']);
|
||||
expect(utils.removeParams).toHaveBeenCalledWith(['limit', 'offset']);
|
||||
expect(Pager.url).toEqual(href);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import store from '~/repo/stores';
|
||||
import service from '~/repo/services';
|
||||
import repoCommitSection from '~/repo/components/repo_commit_section.vue';
|
||||
|
@ -97,7 +98,7 @@ describe('RepoCommitSection', () => {
|
|||
});
|
||||
|
||||
it('redirects to MR creation page if start new MR checkbox checked', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
vm.startNewMR = true;
|
||||
|
||||
vm.makeCommit();
|
||||
|
@ -105,7 +106,7 @@ describe('RepoCommitSection', () => {
|
|||
getSetTimeoutPromise()
|
||||
.then(() => Vue.nextTick())
|
||||
.then(() => {
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalled();
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalled();
|
||||
})
|
||||
.then(done)
|
||||
.catch(done.fail);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import store from '~/repo/stores';
|
||||
import service from '~/repo/services';
|
||||
import { file, resetStore } from '../../helpers';
|
||||
|
@ -255,7 +256,7 @@ describe('Multi-file store tree actions', () => {
|
|||
let row;
|
||||
|
||||
beforeEach(() => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
row = {
|
||||
url: 'submoduleurl',
|
||||
|
@ -276,7 +277,7 @@ describe('Multi-file store tree actions', () => {
|
|||
it('opens submodule URL', (done) => {
|
||||
store.dispatch('clickedTreeRow', row)
|
||||
.then(() => {
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith('submoduleurl');
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith('submoduleurl');
|
||||
|
||||
done();
|
||||
}).catch(done.fail);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import store from '~/repo/stores';
|
||||
import service from '~/repo/services';
|
||||
import { resetStore, file } from '../helpers';
|
||||
|
@ -10,11 +11,11 @@ describe('Multi-file store actions', () => {
|
|||
|
||||
describe('redirectToUrl', () => {
|
||||
it('calls visitUrl', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
store.dispatch('redirectToUrl', 'test')
|
||||
.then(() => {
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith('test');
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith('test');
|
||||
|
||||
done();
|
||||
})
|
||||
|
@ -326,13 +327,13 @@ describe('Multi-file store actions', () => {
|
|||
});
|
||||
|
||||
it('redirects to new merge request page', (done) => {
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
store.state.endpoints.newMergeRequestUrl = 'newMergeRequestUrl?branch=';
|
||||
|
||||
store.dispatch('commitChanges', { payload, newMr: true })
|
||||
.then(() => {
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith('newMergeRequestUrl?branch=master');
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith('newMergeRequestUrl?branch=master');
|
||||
|
||||
done();
|
||||
}).catch(done.fail);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import '~/gl_dropdown';
|
||||
import '~/search_autocomplete';
|
||||
import '~/lib/utils/common_utils';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
|
||||
(function() {
|
||||
var assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget;
|
||||
|
@ -121,7 +122,7 @@ import '~/lib/utils/common_utils';
|
|||
loadFixtures('static/search_autocomplete.html.raw');
|
||||
|
||||
// Prevent turbolinks from triggering within gl_dropdown
|
||||
spyOn(window.gl.utils, 'visitUrl').and.returnValue(true);
|
||||
spyOn(urlUtils, 'visitUrl').and.returnValue(true);
|
||||
|
||||
window.gon = {};
|
||||
window.gon.current_user_id = userId;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import SidebarMediator from '~/sidebar/sidebar_mediator';
|
||||
import SidebarStore from '~/sidebar/stores/sidebar_store';
|
||||
import SidebarService from '~/sidebar/services/sidebar_service';
|
||||
|
@ -85,12 +86,12 @@ describe('Sidebar mediator', () => {
|
|||
const moveToProjectId = 7;
|
||||
this.mediator.store.setMoveToProjectId(moveToProjectId);
|
||||
spyOn(this.mediator.service, 'moveIssue').and.callThrough();
|
||||
spyOn(gl.utils, 'visitUrl');
|
||||
spyOn(urlUtils, 'visitUrl');
|
||||
|
||||
this.mediator.moveIssue()
|
||||
.then(() => {
|
||||
expect(this.mediator.service.moveIssue).toHaveBeenCalledWith(moveToProjectId);
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith('/root/some-project/issues/5');
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith('/root/some-project/issues/5');
|
||||
})
|
||||
.then(done)
|
||||
.catch(done.fail);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import Todos from '~/todos';
|
||||
import '~/lib/utils/common_utils';
|
||||
|
||||
|
@ -16,7 +17,7 @@ describe('Todos', () => {
|
|||
it('opens the todo url', (done) => {
|
||||
const todoLink = todoItem.dataset.url;
|
||||
|
||||
spyOn(gl.utils, 'visitUrl').and.callFake((url) => {
|
||||
spyOn(urlUtils, 'visitUrl').and.callFake((url) => {
|
||||
expect(url).toEqual(todoLink);
|
||||
done();
|
||||
});
|
||||
|
@ -31,7 +32,7 @@ describe('Todos', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
metakeyEvent = $.Event('click', { keyCode: 91, ctrlKey: true });
|
||||
visitUrlSpy = spyOn(gl.utils, 'visitUrl').and.callFake(() => {});
|
||||
visitUrlSpy = spyOn(urlUtils, 'visitUrl').and.callFake(() => {});
|
||||
windowOpenSpy = spyOn(window, 'open').and.callFake(() => {});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import * as urlUtils from '~/lib/utils/url_utility';
|
||||
import deploymentComponent from '~/vue_merge_request_widget/components/mr_widget_deployment';
|
||||
import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';
|
||||
|
||||
|
@ -108,13 +109,13 @@ describe('MRWidgetDeployment', () => {
|
|||
it('should show a confirm dialog and call service.stopEnvironment when confirmed', (done) => {
|
||||
spyOn(window, 'confirm').and.returnValue(true);
|
||||
spyOn(MRWidgetService, 'stopEnvironment').and.returnValue(returnPromise(true));
|
||||
spyOn(gl.utils, 'visitUrl').and.returnValue(true);
|
||||
spyOn(urlUtils, 'visitUrl').and.returnValue(true);
|
||||
vm = mockStopEnvironment();
|
||||
|
||||
expect(window.confirm).toHaveBeenCalled();
|
||||
expect(MRWidgetService.stopEnvironment).toHaveBeenCalledWith(deploymentMockData.stop_url);
|
||||
setTimeout(() => {
|
||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(url);
|
||||
expect(urlUtils.visitUrl).toHaveBeenCalledWith(url);
|
||||
done();
|
||||
}, 333);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue