Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
e0bbadc2
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
e0bbadc2
编写于
12月 07, 2017
作者:
P
Phil Hughes
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use exported methods instead of gl.utils
上级
13df7a85
变更
47
隐藏空白更改
内联
并排
Showing
47 changed file
with
140 addition
and
126 deletion
+140
-126
app/assets/javascripts/admin.js
app/assets/javascripts/admin.js
+3
-2
app/assets/javascripts/behaviors/toggler_behavior.js
app/assets/javascripts/behaviors/toggler_behavior.js
+2
-1
app/assets/javascripts/blob/blob_file_dropzone.js
app/assets/javascripts/blob/blob_file_dropzone.js
+2
-2
app/assets/javascripts/blob/blob_line_permalink_updater.js
app/assets/javascripts/blob/blob_line_permalink_updater.js
+3
-1
app/assets/javascripts/diff.js
app/assets/javascripts/diff.js
+4
-4
app/assets/javascripts/filtered_search/filtered_search_manager.js
...ts/javascripts/filtered_search/filtered_search_manager.js
+2
-1
app/assets/javascripts/gl_dropdown.js
app/assets/javascripts/gl_dropdown.js
+2
-1
app/assets/javascripts/groups/components/app.vue
app/assets/javascripts/groups/components/app.vue
+2
-2
app/assets/javascripts/groups/components/group_item.vue
app/assets/javascripts/groups/components/group_item.vue
+2
-1
app/assets/javascripts/groups/new_group_child.js
app/assets/javascripts/groups/new_group_child.js
+3
-2
app/assets/javascripts/issue_show/components/app.vue
app/assets/javascripts/issue_show/components/app.vue
+3
-3
app/assets/javascripts/job.js
app/assets/javascripts/job.js
+2
-1
app/assets/javascripts/lib/utils/common_utils.js
app/assets/javascripts/lib/utils/common_utils.js
+2
-1
app/assets/javascripts/lib/utils/url_utility.js
app/assets/javascripts/lib/utils/url_utility.js
+4
-19
app/assets/javascripts/main.js
app/assets/javascripts/main.js
+3
-3
app/assets/javascripts/merge_request_tabs.js
app/assets/javascripts/merge_request_tabs.js
+2
-1
app/assets/javascripts/namespace_select.js
app/assets/javascripts/namespace_select.js
+2
-2
app/assets/javascripts/notes.js
app/assets/javascripts/notes.js
+2
-1
app/assets/javascripts/notes/components/issue_notes_app.vue
app/assets/javascripts/notes/components/issue_notes_app.vue
+2
-1
app/assets/javascripts/pager.js
app/assets/javascripts/pager.js
+2
-2
app/assets/javascripts/performance_bar.js
app/assets/javascripts/performance_bar.js
+2
-1
app/assets/javascripts/project.js
app/assets/javascripts/project.js
+2
-1
app/assets/javascripts/projects/project_import_gitlab_project.js
...ets/javascripts/projects/project_import_gitlab_project.js
+2
-2
app/assets/javascripts/repo/stores/actions.js
app/assets/javascripts/repo/stores/actions.js
+2
-1
app/assets/javascripts/repo/stores/actions/tree.js
app/assets/javascripts/repo/stores/actions/tree.js
+2
-1
app/assets/javascripts/shortcuts.js
app/assets/javascripts/shortcuts.js
+3
-2
app/assets/javascripts/shortcuts_blob.js
app/assets/javascripts/shortcuts_blob.js
+3
-3
app/assets/javascripts/sidebar/sidebar_mediator.js
app/assets/javascripts/sidebar/sidebar_mediator.js
+2
-1
app/assets/javascripts/todos.js
app/assets/javascripts/todos.js
+2
-2
app/assets/javascripts/tree.js
app/assets/javascripts/tree.js
+3
-2
app/assets/javascripts/vue_merge_request_widget/components/mr_widget_deployment.js
...e_merge_request_widget/components/mr_widget_deployment.js
+2
-1
spec/javascripts/filtered_search/filtered_search_manager_spec.js
...vascripts/filtered_search/filtered_search_manager_spec.js
+5
-5
spec/javascripts/gl_dropdown_spec.js
spec/javascripts/gl_dropdown_spec.js
+3
-3
spec/javascripts/groups/components/app_spec.js
spec/javascripts/groups/components/app_spec.js
+3
-3
spec/javascripts/groups/components/group_item_spec.js
spec/javascripts/groups/components/group_item_spec.js
+3
-3
spec/javascripts/issue_show/components/app_spec.js
spec/javascripts/issue_show/components/app_spec.js
+8
-7
spec/javascripts/job_spec.js
spec/javascripts/job_spec.js
+9
-9
spec/javascripts/merge_request_tabs_spec.js
spec/javascripts/merge_request_tabs_spec.js
+7
-6
spec/javascripts/notes_spec.js
spec/javascripts/notes_spec.js
+4
-6
spec/javascripts/pager_spec.js
spec/javascripts/pager_spec.js
+4
-3
spec/javascripts/repo/components/repo_commit_section_spec.js
spec/javascripts/repo/components/repo_commit_section_spec.js
+3
-2
spec/javascripts/repo/stores/actions/tree_spec.js
spec/javascripts/repo/stores/actions/tree_spec.js
+3
-2
spec/javascripts/repo/stores/actions_spec.js
spec/javascripts/repo/stores/actions_spec.js
+3
-2
spec/javascripts/search_autocomplete_spec.js
spec/javascripts/search_autocomplete_spec.js
+2
-1
spec/javascripts/sidebar/sidebar_mediator_spec.js
spec/javascripts/sidebar/sidebar_mediator_spec.js
+3
-2
spec/javascripts/todos_spec.js
spec/javascripts/todos_spec.js
+3
-2
spec/javascripts/vue_mr_widget/components/mr_widget_deployment_spec.js
...pts/vue_mr_widget/components/mr_widget_deployment_spec.js
+3
-2
未找到文件。
app/assets/javascripts/admin.js
浏览文件 @
e0bbadc2
/* 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
'
)
{
...
...
app/assets/javascripts/behaviors/toggler_behavior.js
浏览文件 @
e0bbadc2
...
...
@@ -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
'
);
...
...
app/assets/javascripts/blob/blob_file_dropzone.js
浏览文件 @
e0bbadc2
/* 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
);
...
...
app/assets/javascripts/blob/blob_line_permalink_updater.js
浏览文件 @
e0bbadc2
import
{
getLocationHash
}
from
'
../lib/utils/url_utility
'
;
const
lineNumberRe
=
/^L
[
0-9
]
+/
;
const
updateLineNumbersOnBlobPermalinks
=
(
linksToUpdate
)
=>
{
const
hash
=
g
l
.
utils
.
g
etLocationHash
();
const
hash
=
getLocationHash
();
if
(
hash
&&
lineNumberRe
.
test
(
hash
))
{
const
hashUrlString
=
`#
${
hash
}
`
;
...
...
app/assets/javascripts/diff.js
浏览文件 @
e0bbadc2
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
(
g
l
.
utils
.
g
etLocationHash
())
{
if
(
getLocationHash
())
{
this
.
highlightSelectedLine
();
}
...
...
@@ -73,7 +73,7 @@ export default class Diff {
}
openAnchoredDiff
(
cb
)
{
const
locationHash
=
g
l
.
utils
.
g
etLocationHash
();
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
=
g
l
.
utils
.
g
etLocationHash
();
const
hash
=
getLocationHash
();
const
$diffFiles
=
$
(
'
.diff-file
'
);
$diffFiles
.
find
(
'
.hll
'
).
removeClass
(
'
hll
'
);
...
...
app/assets/javascripts/filtered_search/filtered_search_manager.js
浏览文件 @
e0bbadc2
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
parameterizedUrl
);
urlU
tils
.
visitUrl
(
parameterizedUrl
);
}
}
...
...
app/assets/javascripts/gl_dropdown.js
浏览文件 @
e0bbadc2
...
...
@@ -2,6 +2,7 @@
/* global fuzzaldrinPlus */
import
_
from
'
underscore
'
;
import
fuzzaldrinPlus
from
'
fuzzaldrin-plus
'
;
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
href
);
urlU
tils
.
visitUrl
(
href
);
}
else
{
$el
.
trigger
(
'
click
'
);
}
...
...
app/assets/javascripts/groups/components/app.vue
浏览文件 @
e0bbadc2
...
...
@@ -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
*
as
utils
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
=
utils
.
mergeUrlParams
({
page
},
window
.
location
.
href
);
window
.
history
.
replaceState
({
page
:
currentPath
,
},
document
.
title
,
currentPath
);
...
...
app/assets/javascripts/groups/components/group_item.vue
浏览文件 @
e0bbadc2
<
script
>
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
this
.
group
.
relativePath
);
urlU
tils
.
visitUrl
(
this
.
group
.
relativePath
);
}
}
},
...
...
app/assets/javascripts/groups/new_group_child.js
浏览文件 @
e0bbadc2
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
);
}
}
}
app/assets/javascripts/issue_show/components/app.vue
浏览文件 @
e0bbadc2
<
script
>
import
Visibility
from
'
visibilityjs
'
;
import
*
as
urlUtils
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
'
;
export
default
{
props
:
{
...
...
@@ -169,7 +169,7 @@ export default {
.
then
(
res
=>
res
.
json
())
.
then
((
data
)
=>
{
if
(
location
.
pathname
!==
data
.
web_url
)
{
gl
.
u
tils
.
visitUrl
(
data
.
web_url
);
urlU
tils
.
visitUrl
(
data
.
web_url
);
}
return
this
.
service
.
getData
();
...
...
@@ -191,7 +191,7 @@ export default {
// Stop the poll so we don't get 404's with the issuable not existing
this
.
poll
.
stop
();
gl
.
u
tils
.
visitUrl
(
data
.
web_url
);
urlU
tils
.
visitUrl
(
data
.
web_url
);
})
.
catch
(()
=>
{
eventHub
.
$emit
(
'
close.form
'
);
...
...
app/assets/javascripts/job.js
浏览文件 @
e0bbadc2
import
_
from
'
underscore
'
;
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
this
.
pagePath
);
urlU
tils
.
visitUrl
(
this
.
pagePath
);
}
})
.
fail
(()
=>
{
...
...
app/assets/javascripts/lib/utils/common_utils.js
浏览文件 @
e0bbadc2
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
...
...
app/assets/javascripts/lib/utils/url_utility.js
浏览文件 @
e0bbadc2
...
...
@@ -17,20 +17,17 @@ export function getParameterValues(sParam) {
// @param {Object} params - url keys and value to merge
// @param {String} url
export
function
mergeUrlParams
(
params
,
url
)
{
let
newUrl
=
Object
.
keys
(
params
).
reduce
((
acc
Param
,
paramName
)
=>
{
let
newUrl
=
Object
.
keys
(
params
).
reduce
((
acc
,
paramName
)
=>
{
const
paramValue
=
params
[
paramName
];
const
pattern
=
new
RegExp
(
`\\b(
${
paramName
}
=).*?(&|$)`
);
let
acc
=
accParam
;
if
(
paramValue
===
null
)
{
acc
=
acc
.
replace
(
pattern
,
''
);
return
acc
.
replace
(
pattern
,
''
);
}
else
if
(
url
.
search
(
pattern
)
!==
-
1
)
{
acc
=
acc
.
replace
(
pattern
,
`$1
${
paramValue
}
$2`
);
}
else
{
acc
=
`
${
accParam
}${
accParam
.
indexOf
(
'
?
'
)
>
0
?
'
&
'
:
'
?
'
}${
paramName
}
=
${
paramValue
}
`
;
return
acc
.
replace
(
pattern
,
`$1
${
paramValue
}
$2`
);
}
return
acc
;
return
`
${
acc
}${
acc
.
indexOf
(
'
?
'
)
>
0
?
'
&
'
:
'
?
'
}${
paramName
}
=
${
paramValue
}
`
;
},
decodeURIComponent
(
url
));
// Remove a trailing ampersand
...
...
@@ -86,15 +83,3 @@ export function refreshCurrentPage() {
export
function
redirectTo
(
url
)
{
return
window
.
location
.
assign
(
url
);
}
window
.
gl
=
window
.
gl
||
{};
window
.
gl
.
utils
=
{
...(
window
.
gl
.
utils
||
{}),
mergeUrlParams
,
getLocationHash
,
getParameterValues
,
redirectTo
,
refreshCurrentPage
,
removeParams
,
visitUrl
,
};
app/assets/javascripts/main.js
浏览文件 @
e0bbadc2
...
...
@@ -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/
'
;
...
...
@@ -122,7 +122,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
)
===
g
l
.
utils
.
g
etLocationHash
())
{
if
(
href
.
substr
(
1
)
===
getLocationHash
())
{
setTimeout
(
handleLocationHash
,
1
);
}
});
...
...
@@ -294,7 +294,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
'
);
...
...
app/assets/javascripts/merge_request_tabs.js
浏览文件 @
e0bbadc2
...
...
@@ -11,6 +11,7 @@ import {
handleLocationHash
,
isMetaClick
,
}
from
'
./lib/utils/common_utils
'
;
import
*
as
urlUtils
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
.
u
tils
.
getLocationHash
();
const
hash
=
urlU
tils
.
getLocationHash
();
const
anchor
=
hash
&&
$container
.
find
(
`.note[id="
${
hash
}
"]`
);
if
(
anchor
&&
anchor
.
length
>
0
)
{
const
notesContent
=
anchor
.
closest
(
'
.notes_content
'
);
...
...
app/assets/javascripts/namespace_select.js
浏览文件 @
e0bbadc2
/* 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
);
},
});
}
...
...
app/assets/javascripts/notes.js
浏览文件 @
e0bbadc2
...
...
@@ -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
*
as
urlUtils
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
.
u
tils
.
getLocationHash
();
const
hash
=
urlU
tils
.
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
);
...
...
app/assets/javascripts/notes/components/issue_notes_app.vue
浏览文件 @
e0bbadc2
<
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
=
g
l
.
utils
.
g
etLocationHash
();
const
hash
=
getLocationHash
();
const
element
=
document
.
getElementById
(
hash
);
if
(
hash
&&
element
)
{
...
...
app/assets/javascripts/pager.js
浏览文件 @
e0bbadc2
import
{
getParameterByName
}
from
'
~/lib/utils/common_utils
'
;
import
'
~
/lib/utils/url_utility
'
;
import
*
as
utils
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
'
)
||
utils
.
removeParams
([
'
limit
'
,
'
offset
'
]);
this
.
limit
=
limit
;
this
.
offset
=
parseInt
(
getParameterByName
(
'
offset
'
),
10
)
||
this
.
limit
;
this
.
disable
=
disable
;
...
...
app/assets/javascripts/performance_bar.js
浏览文件 @
e0bbadc2
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
=
g
l
.
utils
.
g
etParameterValues
(
'
lineprofiler
'
);
const
lineProfilerParameter
=
getParameterValues
(
'
lineprofiler
'
);
const
lineProfilerParameterRegex
=
new
RegExp
(
`lineprofiler=
${
lineProfilerParameter
[
0
]}
`
);
const
shouldToggleModal
=
lineProfilerParameter
.
length
>
0
&&
lineProfilerParameterRegex
.
test
(
e
.
currentTarget
.
href
);
...
...
app/assets/javascripts/project.js
浏览文件 @
e0bbadc2
/* 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
()}
`
);
}
}
},
...
...
app/assets/javascripts/projects/project_import_gitlab_project.js
浏览文件 @
e0bbadc2
import
'
../lib/utils/url_utility
'
;
import
{
getParameterValues
}
from
'
../lib/utils/url_utility
'
;
const
bindEvents
=
()
=>
{
const
path
=
g
l
.
utils
.
g
etParameterValues
(
'
path
'
)[
0
];
const
path
=
getParameterValues
(
'
path
'
)[
0
];
// get the path url and append it in the inputS
$
(
'
.js-path-name
'
).
val
(
path
);
...
...
app/assets/javascripts/repo/stores/actions.js
浏览文件 @
e0bbadc2
import
Vue
from
'
vue
'
;
import
*
as
urlUtils
from
'
../../lib/utils/url_utility
'
;
import
flash
from
'
../../flash
'
;
import
service
from
'
../services
'
;
import
*
as
types
from
'
./mutation_types
'
;
export
const
redirectToUrl
=
(
_
,
url
)
=>
gl
.
u
tils
.
visitUrl
(
url
);
export
const
redirectToUrl
=
(
_
,
url
)
=>
urlU
tils
.
visitUrl
(
url
);
export
const
setInitialData
=
({
commit
},
data
)
=>
commit
(
types
.
SET_INITIAL_DATA
,
data
);
...
...
app/assets/javascripts/repo/stores/actions/tree.js
浏览文件 @
e0bbadc2
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
row
.
url
);
urlU
tils
.
visitUrl
(
row
.
url
);
}
else
if
(
row
.
type
===
'
blob
'
&&
row
.
opened
)
{
dispatch
(
'
setFileActive
'
,
row
);
}
else
{
...
...
app/assets/javascripts/shortcuts.js
浏览文件 @
e0bbadc2
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
)
{
...
...
app/assets/javascripts/shortcuts_blob.js
浏览文件 @
e0bbadc2
/* 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
=
g
l
.
utils
.
g
etLocationHash
();
const
hash
=
getLocationHash
();
const
hashUrlString
=
hash
?
`#
${
hash
}
`
:
''
;
gl
.
utils
.
visitUrl
(
`
${
this
.
options
.
fileBlobPermalinkUrl
}${
hashUrlString
}
`
);
visitUrl
(
`
${
this
.
options
.
fileBlobPermalinkUrl
}${
hashUrlString
}
`
);
}
}
}
app/assets/javascripts/sidebar/sidebar_mediator.js
浏览文件 @
e0bbadc2
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
data
.
web_url
);
urlU
tils
.
visitUrl
(
data
.
web_url
);
}
});
}
...
...
app/assets/javascripts/todos.js
浏览文件 @
e0bbadc2
/* eslint-disable class-methods-use-this, no-unneeded-ternary, quote-props */
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
todoLink
);
urlU
tils
.
visitUrl
(
todoLink
);
}
}
}
app/assets/javascripts/tree.js
浏览文件 @
e0bbadc2
/* 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
);
}
}
});
...
...
app/assets/javascripts/vue_merge_request_widget/components/mr_widget_deployment.js
浏览文件 @
e0bbadc2
import
'
~/lib/utils/datetime_utility
'
;
import
*
as
urlUtils
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
.
u
tils
.
visitUrl
(
res
.
redirect_url
);
urlU
tils
.
visitUrl
(
res
.
redirect_url
);
}
})
.
catch
(()
=>
{
...
...
spec/javascripts/filtered_search/filtered_search_manager_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
spyOn
(
urlU
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
expect
(
url
).
toEqual
(
`
${
defaultParams
}
&label_name[]=bug`
);
done
();
});
...
...
spec/javascripts/gl_dropdown_spec.js
浏览文件 @
e0bbadc2
...
...
@@ -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
.
u
tils
,
'
visitUrl
'
).
and
.
stub
();
spyOn
(
urlU
tils
,
'
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
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
linkedLocation
);
if
(
linkedLocation
&&
linkedLocation
!==
'
#
'
)
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
linkedLocation
);
});
});
});
...
...
spec/javascripts/groups/components/app_spec.js
浏览文件 @
e0bbadc2
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
));
...
...
spec/javascripts/groups/components/group_item_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
).
and
.
stub
();
spyOn
(
urlU
tils
,
'
visitUrl
'
).
and
.
stub
();
spyOn
(
eventHub
,
'
$emit
'
);
newVm
.
onClickRowGroup
(
event
);
setTimeout
(()
=>
{
expect
(
eventHub
.
$emit
).
not
.
toHaveBeenCalled
();
expect
(
gl
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
newVm
.
group
.
relativePath
);
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
newVm
.
group
.
relativePath
);
done
();
},
0
);
});
...
...
spec/javascripts/issue_show/components/app_spec.js
浏览文件 @
e0bbadc2
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
'
;
...
...
@@ -177,7 +178,7 @@ describe('Issuable output', () => {
});
it
(
'
does not redirect if issue has not moved
'
,
(
done
)
=>
{
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
vm
.
service
,
'
updateIssuable
'
).
and
.
callFake
(()
=>
new
Promise
((
resolve
)
=>
{
resolve
({
json
()
{
...
...
@@ -193,7 +194,7 @@ describe('Issuable output', () => {
setTimeout
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
,
urlU
tils
.
visitUrl
,
).
not
.
toHaveBeenCalled
();
done
();
...
...
@@ -201,7 +202,7 @@ describe('Issuable output', () => {
});
it
(
'
redirects if returned web_url has changed
'
,
(
done
)
=>
{
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
vm
.
service
,
'
updateIssuable
'
).
and
.
callFake
(()
=>
new
Promise
((
resolve
)
=>
{
resolve
({
json
()
{
...
...
@@ -217,7 +218,7 @@ describe('Issuable output', () => {
setTimeout
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
,
urlU
tils
.
visitUrl
,
).
toHaveBeenCalledWith
(
'
/testing-issue-move
'
);
done
();
...
...
@@ -270,7 +271,7 @@ describe('Issuable output', () => {
describe
(
'
deleteIssuable
'
,
()
=>
{
it
(
'
changes URL when deleted
'
,
(
done
)
=>
{
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
vm
.
service
,
'
deleteIssuable
'
).
and
.
callFake
(()
=>
new
Promise
((
resolve
)
=>
{
resolve
({
json
()
{
...
...
@@ -283,7 +284,7 @@ describe('Issuable output', () => {
setTimeout
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
,
urlU
tils
.
visitUrl
,
).
toHaveBeenCalledWith
(
'
/test
'
);
done
();
...
...
@@ -291,7 +292,7 @@ describe('Issuable output', () => {
});
it
(
'
stops polling when deleting
'
,
(
done
)
=>
{
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
vm
.
poll
,
'
stop
'
).
and
.
callThrough
();
spyOn
(
vm
.
service
,
'
deleteIssuable
'
).
and
.
callFake
(()
=>
new
Promise
((
resolve
)
=>
{
resolve
({
...
...
spec/javascripts/job_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
deferred1
.
resolve
({
html
:
'
<span>Update</span>
'
,
...
...
@@ -214,7 +214,7 @@ describe('Job', () => {
it
(
'
renders the raw link
'
,
()
=>
{
const
deferred
=
$
.
Deferred
();
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
$
,
'
ajax
'
).
and
.
returnValue
(
deferred
.
promise
());
deferred
.
resolve
({
...
...
@@ -257,7 +257,7 @@ describe('Job', () => {
describe
(
'
output trace
'
,
()
=>
{
beforeEach
(()
=>
{
const
deferred
=
$
.
Deferred
();
spyOn
(
gl
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
spyOn
(
$
,
'
ajax
'
).
and
.
returnValue
(
deferred
.
promise
());
deferred
.
resolve
({
...
...
spec/javascripts/merge_request_tabs_spec.js
浏览文件 @
e0bbadc2
/* 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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
noteId
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
'
note_something-that-does-not-exist
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
noteLineNumId
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
noteId
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
'
note_something-that-does-not-exist
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
noteLineNumId
);
spyOn
(
urlU
tils
,
'
getLocationHash
'
).
and
.
returnValue
(
noteLineNumId
);
this
.
class
.
loadDiff
(
'
/foo/bar/merge_requests/1/diffs
'
);
expect
(
noteLineNumId
.
length
).
toBeGreaterThan
(
0
);
...
...
spec/javascripts/notes_spec.js
浏览文件 @
e0bbadc2
/* 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
);
...
...
spec/javascripts/pager_spec.js
浏览文件 @
e0bbadc2
/* 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
);
});
});
...
...
spec/javascripts/repo/components/repo_commit_section_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
vm
.
startNewMR
=
true
;
vm
.
makeCommit
();
...
...
@@ -105,7 +106,7 @@ describe('RepoCommitSection', () => {
getSetTimeoutPromise
()
.
then
(()
=>
Vue
.
nextTick
())
.
then
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
).
toHaveBeenCalled
();
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalled
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
...
...
spec/javascripts/repo/stores/actions/tree_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
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
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
submoduleurl
'
);
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
submoduleurl
'
);
done
();
}).
catch
(
done
.
fail
);
...
...
spec/javascripts/repo/stores/actions_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
store
.
dispatch
(
'
redirectToUrl
'
,
'
test
'
)
.
then
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
test
'
);
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
test
'
);
done
();
})
...
...
spec/javascripts/search_autocomplete_spec.js
浏览文件 @
e0bbadc2
...
...
@@ -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
.
u
tils
,
'
visitUrl
'
).
and
.
returnValue
(
true
);
spyOn
(
urlU
tils
,
'
visitUrl
'
).
and
.
returnValue
(
true
);
window
.
gon
=
{};
window
.
gon
.
current_user_id
=
userId
;
...
...
spec/javascripts/sidebar/sidebar_mediator_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
);
spyOn
(
urlU
tils
,
'
visitUrl
'
);
this
.
mediator
.
moveIssue
()
.
then
(()
=>
{
expect
(
this
.
mediator
.
service
.
moveIssue
).
toHaveBeenCalledWith
(
moveToProjectId
);
expect
(
gl
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
/root/some-project/issues/5
'
);
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
'
/root/some-project/issues/5
'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
...
...
spec/javascripts/todos_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
spyOn
(
urlU
tils
,
'
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
.
u
tils
,
'
visitUrl
'
).
and
.
callFake
(()
=>
{});
visitUrlSpy
=
spyOn
(
urlU
tils
,
'
visitUrl
'
).
and
.
callFake
(()
=>
{});
windowOpenSpy
=
spyOn
(
window
,
'
open
'
).
and
.
callFake
(()
=>
{});
});
...
...
spec/javascripts/vue_mr_widget/components/mr_widget_deployment_spec.js
浏览文件 @
e0bbadc2
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
.
u
tils
,
'
visitUrl
'
).
and
.
returnValue
(
true
);
spyOn
(
urlU
tils
,
'
visitUrl
'
).
and
.
returnValue
(
true
);
vm
=
mockStopEnvironment
();
expect
(
window
.
confirm
).
toHaveBeenCalled
();
expect
(
MRWidgetService
.
stopEnvironment
).
toHaveBeenCalledWith
(
deploymentMockData
.
stop_url
);
setTimeout
(()
=>
{
expect
(
gl
.
u
tils
.
visitUrl
).
toHaveBeenCalledWith
(
url
);
expect
(
urlU
tils
.
visitUrl
).
toHaveBeenCalledWith
(
url
);
done
();
},
333
);
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录