diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2017-09-06 17:14:34 +0100 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2017-09-09 09:54:27 +0100 |
commit | 96e6fc70b40c51af50bee6c421f7f363acd899d4 (patch) | |
tree | 1bcdec4ae4d83d08c5a2c43573df64edd7d309d7 /app/assets/javascripts/lib/utils/common_utils.js | |
parent | 6a1b84c7b450e65eaad6bf016fc9b7310e89784c (diff) | |
download | gitlab-ce-96e6fc70b40c51af50bee6c421f7f363acd899d4.tar.gz |
Import modules instead of using the ones in global namespace
Removes set favicon related methods from global scope
Improves test related with favicon
Removes convertPermissionToBoolean from global scope.
Adds tests for convertPermissionToBoolean - were non existant
Removes setParamInURL from gl.utils
Removes parseIntPagination from gl.utils namespace
Remove normalizeCRLFHeaders from gl.utils namespace
Removes normalizeHeaders from gl.utils namespace
Use gl.utils for filtered search
Fix bad import
Fix broken test by cleaning window.history namespace
Adds changelog
Diffstat (limited to 'app/assets/javascripts/lib/utils/common_utils.js')
-rw-r--r-- | app/assets/javascripts/lib/utils/common_utils.js | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index 87b3b0bc8a4..76e436ceab5 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -1,4 +1,5 @@ -/* eslint-disable no-param-reassing */ +window.gl = window.gl || {}; +window.gl.utils = window.gl.utils || {}; export const getPagePath = (index = 0) => $('body').data('page').split(':')[index]; window.gl.utils.getPagePath = getPagePath; @@ -48,7 +49,7 @@ export const ajaxPost = (url, data) => $.ajax({ window.gl.utils.ajaxPost = ajaxPost; // TODO: This function seems not to be used anywhere -window.gl.utils.extractLast = term => this.split(term).pop(); +// window.gl.utils.extractLast = term => this.split(term).pop(); export const rstrip = function rstrip(val) { if (val) { @@ -145,10 +146,11 @@ window.gl.utils.parseUrlPathname = parseUrlPathname; // We can trust that each param has one & since values containing & will be encoded // Remove the first character of search as it is always ? -window.gl.utils.getUrlParamsArray = () => window.location.search.slice(1).split('&').map((param) => { +export const getUrlParamsArray = () => window.location.search.slice(1).split('&').map((param) => { const split = param.split('='); return [decodeURI(split[0]), split[1]].join('='); }); +window.gl.utils.getUrlParamsArray = getUrlParamsArray; export const isMetaKey = e => e.metaKey || e.ctrlKey || e.altKey || e.shiftKey; window.gl.utils.isMetaKey = isMetaKey; @@ -178,8 +180,8 @@ window.gl.utils.scrollToElement = scrollToElement; */ export const getParameterByName = (name, urlToParse) => { const url = urlToParse || window.location.href; - name = name.replace(/[[\]]/g, '\\$&'); - const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); + const parsedName = name.replace(/[[\]]/g, '\\$&'); + const regex = new RegExp(`[?&]${parsedName}(=([^&#]*)|&|#|$)`); const results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; @@ -200,6 +202,7 @@ export const getSelectedFragment = () => { }; window.gl.utils.getSelectedFragment = getSelectedFragment; +// TODO: Update this name, there is a gl.text.insertText function. export const insertText = (target, text) => { // Firefox doesn't support `document.execCommand('insertText', false, text)` on textareas const selectionStart = target.selectionStart; @@ -212,7 +215,9 @@ export const insertText = (target, text) => { const insertedText = text instanceof Function ? text(textBefore, textAfter) : text; const newText = textBefore + insertedText + textAfter; + // eslint-disable-next-line no-param-reassign target.value = newText; + // eslint-disable-next-line no-param-reassign target.selectionStart = target.selectionEnd = selectionStart + insertedText.length; // Trigger autosave @@ -242,6 +247,7 @@ export const nodeMatchesSelector = (node, selector) => { let parentNode = node.parentNode; if (!parentNode) { parentNode = document.createElement('div'); + // eslint-disable-next-line no-param-reassign node = node.cloneNode(true); parentNode.appendChild(node); } @@ -264,7 +270,6 @@ export const normalizeHeaders = (headers) => { return upperCaseHeaders; }; -window.gl.utils.normalizeHeaders = normalizeHeaders; /** this will take in the getAllResponseHeaders result and normalize them @@ -281,7 +286,6 @@ export const normalizeCRLFHeaders = (headers) => { return normalizeHeaders(headersObject); }; -window.gl.utils.normalizeCRLFHeaders = normalizeCRLFHeaders; /** * Parses pagination object string values into numbers. @@ -297,7 +301,6 @@ export const parseIntPagination = paginationInformation => ({ nextPage: parseInt(paginationInformation['X-NEXT-PAGE'], 10), previousPage: parseInt(paginationInformation['X-PREV-PAGE'], 10), }); -window.gl.utils.parseIntPagination = parseIntPagination; /** * Updates the search parameter of a URL given the parameter and value provided. @@ -320,6 +323,7 @@ export const setParamInURL = (param, value) => { .split('&') .reduce((acc, element) => { const val = element.split('='); + // eslint-disable-next-line no-param-reassign acc[val[0]] = decodeURIComponent(val[1]); return acc; }, {}); @@ -337,7 +341,6 @@ export const setParamInURL = (param, value) => { return search; }; -window.gl.utils.setParamInURL = setParamInURL; /** * Converts permission provided as strings to booleans. @@ -346,7 +349,6 @@ window.gl.utils.setParamInURL = setParamInURL; * @returns {Boolean} */ export const convertPermissionToBoolean = permission => permission === 'true'; -window.gl.utils.convertPermissionToBoolean = convertPermissionToBoolean; /** * Back Off exponential algorithm @@ -400,7 +402,6 @@ export const backOff = (fn, timeout = 60000) => { fn(next, stop); }); }; -window.gl.utils.backOff = backOff; export const setFavicon = (faviconPath) => { const faviconEl = document.getElementById('favicon'); @@ -408,7 +409,6 @@ export const setFavicon = (faviconPath) => { faviconEl.setAttribute('href', faviconPath); } }; -window.gl.utils.setFavicon = setFavicon; export const resetFavicon = () => { const faviconEl = document.getElementById('favicon'); @@ -417,7 +417,6 @@ export const resetFavicon = () => { faviconEl.setAttribute('href', originalFavicon); } }; -window.gl.utils.resetFavicon = resetFavicon; export const setCiStatusFavicon = (pageUrl) => { $.ajax({ @@ -425,14 +424,13 @@ export const setCiStatusFavicon = (pageUrl) => { dataType: 'json', success: (data) => { if (data && data.favicon) { - gl.utils.setFavicon(data.favicon); + setFavicon(data.favicon); } else { - gl.utils.resetFavicon(); + resetFavicon(); } }, error: () => { - gl.utils.resetFavicon(); + resetFavicon(); }, }); }; -window.gl.utils.setCiStatusFavicon = setCiStatusFavicon; |