Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
gitlab-ce
Commits
fc53ce8e
Commit
fc53ce8e
authored
Dec 12, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add latest changes from gitlab-org/gitlab@master
parent
8e22ef10
Changes
39
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
203 additions
and
48 deletions
+203
-48
.nvmrc
.nvmrc
+1
-1
app/assets/javascripts/boards/components/issue_due_date.vue
app/assets/javascripts/boards/components/issue_due_date.vue
+2
-2
app/assets/javascripts/deploy_keys/components/key.vue
app/assets/javascripts/deploy_keys/components/key.vue
+1
-1
app/assets/javascripts/diffs/components/app.vue
app/assets/javascripts/diffs/components/app.vue
+1
-0
app/assets/javascripts/diffs/store/actions.js
app/assets/javascripts/diffs/store/actions.js
+7
-1
app/assets/javascripts/diffs/store/modules/diff_state.js
app/assets/javascripts/diffs/store/modules/diff_state.js
+1
-0
app/assets/javascripts/diffs/store/mutations.js
app/assets/javascripts/diffs/store/mutations.js
+2
-0
app/assets/javascripts/error_tracking/components/error_details.vue
...s/javascripts/error_tracking/components/error_details.vue
+2
-2
app/assets/javascripts/ide/components/ide_status_bar.vue
app/assets/javascripts/ide/components/ide_status_bar.vue
+3
-3
app/assets/javascripts/issuable_suggestions/components/item.vue
...sets/javascripts/issuable_suggestions/components/item.vue
+1
-1
app/assets/javascripts/jobs/components/sidebar.vue
app/assets/javascripts/jobs/components/sidebar.vue
+2
-2
app/assets/javascripts/jobs/store/utils.js
app/assets/javascripts/jobs/store/utils.js
+1
-1
app/assets/javascripts/lib/utils/common_utils.js
app/assets/javascripts/lib/utils/common_utils.js
+17
-1
app/assets/javascripts/lib/utils/datetime_utility.js
app/assets/javascripts/lib/utils/datetime_utility.js
+3
-3
app/assets/javascripts/mr_popover/components/mr_popover.vue
app/assets/javascripts/mr_popover/components/mr_popover.vue
+1
-1
app/assets/javascripts/pipelines/components/time_ago.vue
app/assets/javascripts/pipelines/components/time_ago.vue
+3
-3
app/assets/javascripts/registry/list/components/table_registry.vue
...s/javascripts/registry/list/components/table_registry.vue
+1
-1
app/assets/javascripts/releases/list/components/release_block.vue
...ts/javascripts/releases/list/components/release_block.vue
+1
-1
app/assets/javascripts/releases/list/components/release_block_footer.vue
...scripts/releases/list/components/release_block_footer.vue
+1
-1
app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue
..._request_widget/components/deployment/deployment_info.vue
+1
-1
app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue
...vascripts/vue_shared/components/issue/issue_milestone.vue
+2
-2
app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue
...ared/components/sidebar/collapsed_grouped_date_picker.vue
+1
-1
app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue
...ts/javascripts/vue_shared/components/time_ago_tooltip.vue
+1
-1
app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js
...s/javascripts/vue_shared/mixins/related_issuable_mixin.js
+3
-3
app/assets/javascripts/vue_shared/mixins/timeago.js
app/assets/javascripts/vue_shared/mixins/timeago.js
+1
-1
app/controllers/projects/merge_requests_controller.rb
app/controllers/projects/merge_requests_controller.rb
+1
-0
changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml
...s/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml
+5
-0
doc/user/application_security/container_scanning/index.md
doc/user/application_security/container_scanning/index.md
+88
-0
locale/gitlab.pot
locale/gitlab.pot
+6
-0
spec/frontend/environments/environment_item_spec.js
spec/frontend/environments/environment_item_spec.js
+2
-2
spec/frontend/jobs/components/erased_block_spec.js
spec/frontend/jobs/components/erased_block_spec.js
+3
-3
spec/frontend/registry/list/components/table_registry_spec.js
.../frontend/registry/list/components/table_registry_spec.js
+1
-1
spec/frontend/releases/list/components/release_block_footer_spec.js
...end/releases/list/components/release_block_footer_spec.js
+4
-4
spec/frontend/releases/list/components/release_block_spec.js
spec/frontend/releases/list/components/release_block_spec.js
+1
-1
spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
...vue_shared/components/issue/related_issuable_item_spec.js
+2
-2
spec/javascripts/diffs/components/app_spec.js
spec/javascripts/diffs/components/app_spec.js
+1
-0
spec/javascripts/diffs/store/actions_spec.js
spec/javascripts/diffs/store/actions_spec.js
+4
-0
spec/javascripts/diffs/store/mutations_spec.js
spec/javascripts/diffs/store/mutations_spec.js
+3
-1
spec/javascripts/lib/utils/common_utils_spec.js
spec/javascripts/lib/utils/common_utils_spec.js
+22
-0
No files found.
.nvmrc
View file @
fc53ce8e
12.
4
.0
12.
10
.0
app/assets/javascripts/boards/components/issue_due_date.vue
View file @
fc53ce8e
...
...
@@ -35,10 +35,10 @@ export default {
title
()
{
const
timeago
=
getTimeago
();
const
{
timeDifference
,
standardDateFormat
}
=
this
;
const
formatedDate
=
standardDateFormat
;
const
format
t
edDate
=
standardDateFormat
;
if
(
timeDifference
>=
-
1
&&
timeDifference
<
7
)
{
return
`
${
timeago
.
format
(
this
.
issueDueDate
)}
(
${
formatedDate
}
)`
;
return
`
${
timeago
.
format
(
this
.
issueDueDate
)}
(
${
format
t
edDate
}
)`
;
}
return
timeago
.
format
(
this
.
issueDueDate
);
...
...
app/assets/javascripts/deploy_keys/components/key.vue
View file @
fc53ce8e
...
...
@@ -159,7 +159,7 @@ export default {
<div
role=
"rowheader"
class=
"table-mobile-header"
>
{{ __('Created') }}
</div>
<div
class=
"table-mobile-content text-secondary key-created-at"
>
<span
v-tooltip
:title=
"tooltipTitle(deployKey.created_at)"
>
<icon
name=
"calendar"
/>
<span>
{{ timeFormated(deployKey.created_at) }}
</span>
<icon
name=
"calendar"
/>
<span>
{{ timeFormat
t
ed(deployKey.created_at) }}
</span>
</span>
</div>
</div>
...
...
app/assets/javascripts/diffs/components/app.vue
View file @
fc53ce8e
...
...
@@ -177,6 +177,7 @@ export default {
projectPath
:
this
.
projectPath
,
dismissEndpoint
:
this
.
dismissEndpoint
,
showSuggestPopover
:
this
.
showSuggestPopover
,
useSingleDiffStyle
:
this
.
glFeatures
.
singleMrDiffView
,
});
if
(
this
.
shouldShow
)
{
...
...
app/assets/javascripts/diffs/store/actions.js
View file @
fc53ce8e
...
...
@@ -46,6 +46,7 @@ export const setBaseConfig = ({ commit }, options) => {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
}
=
options
;
commit
(
types
.
SET_BASE_CONFIG
,
{
endpoint
,
...
...
@@ -54,11 +55,15 @@ export const setBaseConfig = ({ commit }, options) => {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
});
};
export
const
fetchDiffFiles
=
({
state
,
commit
})
=>
{
const
worker
=
new
TreeWorker
();
const
urlParams
=
{
w
:
state
.
showWhitespace
?
'
0
'
:
'
1
'
,
};
commit
(
types
.
SET_LOADING
,
true
);
...
...
@@ -69,9 +74,10 @@ export const fetchDiffFiles = ({ state, commit }) => {
});
return
axios
.
get
(
mergeUrlParams
(
{
w
:
state
.
showWhitespace
?
'
0
'
:
'
1
'
}
,
state
.
endpoint
))
.
get
(
mergeUrlParams
(
urlParams
,
state
.
endpoint
))
.
then
(
res
=>
{
commit
(
types
.
SET_LOADING
,
false
);
commit
(
types
.
SET_MERGE_REQUEST_DIFFS
,
res
.
data
.
merge_request_diffs
||
[]);
commit
(
types
.
SET_DIFF_DATA
,
res
.
data
);
...
...
app/assets/javascripts/diffs/store/modules/diff_state.js
View file @
fc53ce8e
...
...
@@ -31,4 +31,5 @@ export default () => ({
fileFinderVisible
:
false
,
dismissEndpoint
:
''
,
showSuggestPopover
:
true
,
useSingleDiffStyle
:
false
,
});
app/assets/javascripts/diffs/store/mutations.js
View file @
fc53ce8e
...
...
@@ -19,6 +19,7 @@ export default {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
}
=
options
;
Object
.
assign
(
state
,
{
endpoint
,
...
...
@@ -27,6 +28,7 @@ export default {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
});
},
...
...
app/assets/javascripts/error_tracking/components/error_details.vue
View file @
fc53ce8e
...
...
@@ -56,7 +56,7 @@ export default {
__
(
'
Reported %{timeAgo} by %{reportedBy}
'
),
{
reportedBy
:
`<strong>
${
this
.
error
.
culprit
}
</strong>`
,
timeAgo
:
this
.
timeFormated
(
this
.
stacktraceData
.
date_received
),
timeAgo
:
this
.
timeFormat
t
ed
(
this
.
stacktraceData
.
date_received
),
},
false
,
);
...
...
@@ -107,7 +107,7 @@ export default {
this
.
$refs
.
sentryIssueForm
.
submit
();
},
formatDate
(
date
)
{
return
`
${
this
.
timeFormated
(
date
)}
(
${
dateFormat
(
date
,
'
UTC:yyyy-mm-dd h:MM:ssTT Z
'
)}
)`
;
return
`
${
this
.
timeFormat
t
ed
(
date
)}
(
${
dateFormat
(
date
,
'
UTC:yyyy-mm-dd h:MM:ssTT Z
'
)}
)`
;
},
},
};
...
...
app/assets/javascripts/ide/components/ide_status_bar.vue
View file @
fc53ce8e
...
...
@@ -22,7 +22,7 @@ export default {
mixins
:
[
timeAgoMixin
],
data
()
{
return
{
lastCommitFormatedAge
:
null
,
lastCommitFormat
t
edAge
:
null
,
};
},
computed
:
{
...
...
@@ -62,7 +62,7 @@ export default {
},
commitAgeUpdate
()
{
if
(
this
.
lastCommit
)
{
this
.
lastCommitFormat
edAge
=
this
.
timeForma
ted
(
this
.
lastCommit
.
committed_date
);
this
.
lastCommitFormat
tedAge
=
this
.
timeFormat
ted
(
this
.
lastCommit
.
committed_date
);
}
},
getCommitPath
(
shortSha
)
{
...
...
@@ -118,7 +118,7 @@ export default {
:title=
"tooltipTitle(lastCommit.committed_date)"
data-placement=
"top"
data-container=
"body"
>
{{
lastCommitFormatedAge
}}
</time
>
{{
lastCommitFormat
t
edAge
}}
</time
>
</div>
<ide-status-list
class=
"ml-auto"
/>
...
...
app/assets/javascripts/issuable_suggestions/components/item.vue
View file @
fc53ce8e
...
...
@@ -91,7 +91,7 @@ export default {
/>
<gl-tooltip
:target=
"() => $refs.state"
placement=
"bottom"
>
<span
class=
"d-block"
>
<span
class=
"bold"
>
{{
stateTitle
}}
</span>
{{
timeFormated
(
closedOrCreatedDate
)
}}
<span
class=
"bold"
>
{{
stateTitle
}}
</span>
{{
timeFormat
t
ed
(
closedOrCreatedDate
)
}}
</span>
<span
class=
"text-tertiary"
>
{{
tooltipTitle
(
closedOrCreatedDate
)
}}
</span>
</gl-tooltip>
...
...
app/assets/javascripts/jobs/components/sidebar.vue
View file @
fc53ce8e
...
...
@@ -168,13 +168,13 @@ export default {
/>
<detail-row
v-if=
"job.finished_at"
:value=
"timeFormated(job.finished_at)"
:value=
"timeFormat
t
ed(job.finished_at)"
class=
"js-job-finished"
title=
"Finished"
/>
<detail-row
v-if=
"job.erased_at"
:value=
"timeFormated(job.erased_at)"
:value=
"timeFormat
t
ed(job.erased_at)"
class=
"js-job-erased"
title=
"Erased"
/>
...
...
app/assets/javascripts/jobs/store/utils.js
View file @
fc53ce8e
...
...
@@ -114,7 +114,7 @@ export const logLinesParser = (lines = [], accumulator = []) =>
acc
.
push
(
parseHeaderLine
(
line
,
lineNumber
));
}
else
if
(
isCollapsibleSection
(
acc
,
last
,
line
))
{
// if the object belongs to a nested section, we append it to the new `lines` array of the
// previously formated header
// previously format
t
ed header
last
.
lines
.
push
(
parseLine
(
line
,
lineNumber
));
}
else
if
(
line
.
section_duration
)
{
// if the line has section_duration, we look for the correct header to add it
...
...
app/assets/javascripts/lib/utils/common_utils.js
View file @
fc53ce8e
...
...
@@ -5,7 +5,7 @@
import
$
from
'
jquery
'
;
import
axios
from
'
./axios_utils
'
;
import
{
getLocationHash
}
from
'
./url_utility
'
;
import
{
convertToCamelCase
}
from
'
./text_utility
'
;
import
{
convertToCamelCase
,
convertToSnakeCase
}
from
'
./text_utility
'
;
import
{
isObject
}
from
'
./type_utility
'
;
import
breakpointInstance
from
'
../../breakpoints
'
;
...
...
@@ -697,6 +697,22 @@ export const convertObjectPropsToCamelCase = (obj = {}, options = {}) => {
},
initial
);
};
/**
* Converts all the object keys to snake case
*
* @param {Object} obj Object to transform
* @returns {Object}
*/
// Follow up to add additional options param:
// https://gitlab.com/gitlab-org/gitlab/issues/39173
export
const
convertObjectPropsToSnakeCase
=
(
obj
=
{})
=>
obj
?
Object
.
entries
(
obj
).
reduce
(
(
acc
,
[
key
,
value
])
=>
({
...
acc
,
[
convertToSnakeCase
(
key
)]:
value
}),
{},
)
:
{};
export
const
imagePath
=
imgUrl
=>
`
${
gon
.
asset_host
||
''
}${
gon
.
relative_url_root
||
''
}
/assets/
${
imgUrl
}
`
;
...
...
app/assets/javascripts/lib/utils/datetime_utility.js
View file @
fc53ce8e
...
...
@@ -447,7 +447,7 @@ export const parsePikadayDate = dateString => {
/**
* Used `onSelect` method in pickaday
* @param {Date} date UTC format
* @return {String} Date formated in yyyy-mm-dd
* @return {String} Date format
t
ed in yyyy-mm-dd
*/
export
const
pikadayToString
=
date
=>
{
const
day
=
pad
(
date
.
getDate
());
...
...
@@ -513,8 +513,8 @@ export const stringifyTime = (timeObject, fullNameFormat = false) => {
if
(
fullNameFormat
&&
isNonZero
)
{
// Remove traling 's' if unit value is singular
const
formatedUnitName
=
unitValue
>
1
?
unitName
:
unitName
.
replace
(
/s$/
,
''
);
return
`
${
memo
}
${
unitValue
}
${
formatedUnitName
}
`
;
const
format
t
edUnitName
=
unitValue
>
1
?
unitName
:
unitName
.
replace
(
/s$/
,
''
);
return
`
${
memo
}
${
unitValue
}
${
format
t
edUnitName
}
`
;
}
return
isNonZero
?
`
${
memo
}
${
unitValue
}${
unitName
.
charAt
(
0
)}
`
:
memo
;
...
...
app/assets/javascripts/mr_popover/components/mr_popover.vue
View file @
fc53ce8e
...
...
@@ -45,7 +45,7 @@ export default {
return
this
.
mergeRequest
.
headPipeline
&&
this
.
mergeRequest
.
headPipeline
.
detailedStatus
;
},
formattedTime
()
{
return
this
.
timeFormated
(
this
.
mergeRequest
.
createdAt
);
return
this
.
timeFormat
t
ed
(
this
.
mergeRequest
.
createdAt
);
},
statusBoxClass
()
{
switch
(
this
.
mergeRequest
.
state
)
{
...
...
app/assets/javascripts/pipelines/components/time_ago.vue
View file @
fc53ce8e
...
...
@@ -31,7 +31,7 @@ export default {
hasFinishedTime
()
{
return
this
.
finishedTime
!==
''
;
},
durationFormated
()
{
durationFormat
t
ed
()
{
const
date
=
new
Date
(
this
.
duration
*
1000
);
let
hh
=
date
.
getUTCHours
();
...
...
@@ -59,7 +59,7 @@ export default {
<div
class=
"table-mobile-header"
role=
"rowheader"
>
{{
s__
(
'
Pipeline|Duration
'
)
}}
</div>
<div
class=
"table-mobile-content"
>
<p
v-if=
"hasDuration"
class=
"duration"
>
<span
v-html=
"iconTimerSvg"
>
</span>
{{
durationFormated
}}
<span
v-html=
"iconTimerSvg"
>
</span>
{{
durationFormat
t
ed
}}
</p>
<p
v-if=
"hasFinishedTime"
class=
"finished-at d-none d-sm-none d-md-block"
>
...
...
@@ -71,7 +71,7 @@ export default {
data-placement=
"top"
data-container=
"body"
>
{{
timeFormated
(
finishedTime
)
}}
{{
timeFormat
t
ed
(
finishedTime
)
}}
</time>
</p>
</div>
...
...
app/assets/javascripts/registry/list/components/table_registry.vue
View file @
fc53ce8e
...
...
@@ -247,7 +247,7 @@ export default {
<td>
<span
v-gl-tooltip
.
bottom
:title=
"tooltipTitle(item.createdAt)"
>
{{
timeFormated(item.createdAt)
timeFormat
t
ed(item.createdAt)
}}
</span>
</td>
...
...
app/assets/javascripts/releases/list/components/release_block.vue
View file @
fc53ce8e
...
...
@@ -48,7 +48,7 @@ export default {
},
releasedTimeAgo
()
{
return
sprintf
(
__
(
'
released %{time}
'
),
{
time
:
this
.
timeFormated
(
this
.
release
.
released_at
),
time
:
this
.
timeFormat
t
ed
(
this
.
release
.
released_at
),
});
},
userImageAltDescription
()
{
...
...
app/assets/javascripts/releases/list/components/release_block_footer.vue
View file @
fc53ce8e
...
...
@@ -50,7 +50,7 @@ export default {
},
computed
:
{
releasedAtTimeAgo
()
{
return
this
.
timeFormated
(
this
.
releasedAt
);
return
this
.
timeFormat
t
ed
(
this
.
releasedAt
);
},
userImageAltDescription
()
{
return
this
.
author
&&
this
.
author
.
username
...
...
app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue
View file @
fc53ce8e
...
...
@@ -41,7 +41,7 @@ export default {
},
computed
:
{
deployTimeago
()
{
return
this
.
timeFormated
(
this
.
deployment
.
deployed_at
);
return
this
.
timeFormat
t
ed
(
this
.
deployment
.
deployed_at
);
},
deployedText
()
{
return
this
.
$options
.
deployedTextMap
[
this
.
computedDeploymentStatus
];
...
...
app/assets/javascripts/vue_shared/components/issue/issue_milestone.vue
View file @
fc53ce8e
...
...
@@ -54,7 +54,7 @@ export default {
return
timeFor
(
this
.
milestoneDue
,
sprintf
(
__
(
'
Expired %{expiredOn}
'
),
{
expiredOn
:
this
.
timeFormated
(
this
.
milestoneDue
),
expiredOn
:
this
.
timeFormat
t
ed
(
this
.
milestoneDue
),
}),
);
}
...
...
@@ -62,7 +62,7 @@ export default {
return
sprintf
(
this
.
isMilestoneStarted
?
__
(
'
Started %{startsIn}
'
)
:
__
(
'
Starts %{startsIn}
'
),
{
startsIn
:
this
.
timeFormated
(
this
.
milestoneStart
),
startsIn
:
this
.
timeFormat
t
ed
(
this
.
milestoneStart
),
},
);
}
...
...
app/assets/javascripts/vue_shared/components/sidebar/collapsed_grouped_date_picker.vue
View file @
fc53ce8e
...
...
@@ -64,7 +64,7 @@ export default {
tooltipText
(
dateType
=
'
min
'
)
{
const
defaultText
=
dateType
===
'
min
'
?
__
(
'
Start date
'
)
:
__
(
'
Due date
'
);
const
date
=
this
[
`
${
dateType
}
Date`
];
const
timeAgo
=
dateType
===
'
min
'
?
this
.
timeFormated
(
date
)
:
timeFor
(
date
);
const
timeAgo
=
dateType
===
'
min
'
?
this
.
timeFormat
t
ed
(
date
)
:
timeFor
(
date
);
const
dateText
=
date
?
[
this
.
dateText
(
dateType
),
`(
${
timeAgo
}
)`
].
join
(
'
'
)
:
''
;
if
(
date
)
{
...
...
app/assets/javascripts/vue_shared/components/time_ago_tooltip.vue
View file @
fc53ce8e
...
...
@@ -35,7 +35,7 @@ export default {
v-gl-tooltip.viewport=
"
{ placement: tooltipPlacement }"
:class="cssClass"
:title="tooltipTitle(time)"
v-text="timeFormated(time)"
v-text="timeFormat
t
ed(time)"
>
</time>
</
template
>
app/assets/javascripts/vue_shared/mixins/related_issuable_mixin.js
View file @
fc53ce8e
...
...
@@ -159,7 +159,7 @@ const mixins = {
return
this
.
displayReference
.
split
(
this
.
pathIdSeparator
).
pop
();
},
createdAtInWords
()
{
return
this
.
createdAt
?
this
.
timeFormated
(
this
.
createdAt
)
:
''
;
return
this
.
createdAt
?
this
.
timeFormat
t
ed
(
this
.
createdAt
)
:
''
;
},
createdAtTimestamp
()
{
return
this
.
createdAt
?
formatDate
(
new
Date
(
this
.
createdAt
))
:
''
;
...
...
@@ -168,10 +168,10 @@ const mixins = {
return
this
.
mergedAt
?
formatDate
(
new
Date
(
this
.
mergedAt
))
:
''
;
},
mergedAtInWords
()
{
return
this
.
mergedAt
?
this
.
timeFormated
(
this
.
mergedAt
)
:
''
;
return
this
.
mergedAt
?
this
.
timeFormat
t
ed
(
this
.
mergedAt
)
:
''
;
},
closedAtInWords
()
{
return
this
.
closedAt
?
this
.
timeFormated
(
this
.
closedAt
)
:
''
;
return
this
.
closedAt
?
this
.
timeFormat
t
ed
(
this
.
closedAt
)
:
''
;
},
closedAtTimestamp
()
{
return
this
.
closedAt
?
formatDate
(
new
Date
(
this
.
closedAt
))
:
''
;
...
...
app/assets/javascripts/vue_shared/mixins/timeago.js
View file @
fc53ce8e
...
...
@@ -5,7 +5,7 @@ import { formatDate, getTimeago } from '../../lib/utils/datetime_utility';
*/
export
default
{
methods
:
{
timeFormated
(
time
)
{
timeFormat
t
ed
(
time
)
{
const
timeago
=
getTimeago
();
return
timeago
.
format
(
time
);
...
...
app/controllers/projects/merge_requests_controller.rb
View file @
fc53ce8e
...
...
@@ -20,6 +20,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
before_action
:check_user_can_push_to_source_branch!
,
only:
[
:rebase
]
before_action
only:
[
:show
]
do
push_frontend_feature_flag
(
:diffs_batch_load
,
@project
)
push_frontend_feature_flag
(
:single_mr_diff_view
,
@project
)
end
before_action
do
...
...
changelogs/unreleased/nfriend-atmtwps-merge-immediately-dialog.yml
0 → 100644
View file @
fc53ce8e
---
title
:
Show merge immediately dialog even if the MR's pipeline hasn't finished
merge_request
:
21556
author
:
type
:
changed
doc/user/application_security/container_scanning/index.md
View file @
fc53ce8e
This diff is collapsed.
Click to expand it.
locale/gitlab.pot
View file @
fc53ce8e
...
...
@@ -5202,6 +5202,9 @@ msgstr ""
msgid "CustomCycleAnalytics|Add stage"
msgstr ""
msgid "CustomCycleAnalytics|Editing stage"
msgstr ""
msgid "CustomCycleAnalytics|Enter a name for the stage"
msgstr ""
...
...
@@ -5235,6 +5238,9 @@ msgstr ""
msgid "CustomCycleAnalytics|Stop event label"
msgstr ""
msgid "CustomCycleAnalytics|Update stage"
msgstr ""
msgid "Customize colors"
msgstr ""
...
...
spec/frontend/environments/environment_item_spec.js
View file @
fc53ce8e
...
...
@@ -45,9 +45,9 @@ describe('Environment item', () => {
});
it
(
'
should render last deployment date
'
,
()
=>
{
const
formatedDate
=
format
(
environment
.
last_deployment
.
deployed_at
);
const
format
t
edDate
=
format
(
environment
.
last_deployment
.
deployed_at
);
expect
(
wrapper
.
find
(
'
.environment-created-date-timeago
'
).
text
()).
toContain
(
formatedDate
);
expect
(
wrapper
.
find
(
'
.environment-created-date-timeago
'
).
text
()).
toContain
(
format
t
edDate
);
});
describe
(
'
With user information
'
,
()
=>
{
...
...
spec/frontend/jobs/components/erased_block_spec.js
View file @
fc53ce8e
...
...
@@ -8,7 +8,7 @@ describe('Erased block', () => {
const
erasedAt
=
'
2016-11-07T11:11:16.525Z
'
;
const
timeago
=
getTimeago
();
const
formatedDate
=
timeago
.
format
(
erasedAt
);
const
format
t
edDate
=
timeago
.
format
(
erasedAt
);
const
createComponent
=
props
=>
{
wrapper
=
mount
(
ErasedBlock
,
{
...
...
@@ -41,7 +41,7 @@ describe('Erased block', () => {
});
it
(
'
renders erasedAt
'
,
()
=>
{
expect
(
wrapper
.
text
().
trim
()).
toContain
(
formatedDate
);
expect
(
wrapper
.
text
().
trim
()).
toContain
(
format
t
edDate
);
});
});
...
...
@@ -57,7 +57,7 @@ describe('Erased block', () => {
});
it
(
'
renders erasedAt
'
,
()
=>
{
expect
(
wrapper
.
text
().
trim
()).
toContain
(
formatedDate
);
expect
(
wrapper
.
text
().
trim
()).
toContain
(
format
t
edDate
);
});
});
});
spec/frontend/registry/list/components/table_registry_spec.js
View file @
fc53ce8e
...
...
@@ -68,7 +68,7 @@ describe('table registry', () => {
expect
(
tds
.
at
(
2
).
html
()).
toContain
(
repoPropsData
.
list
[
0
].
shortRevision
);
expect
(
tds
.
at
(
3
).
html
()).
toContain
(
repoPropsData
.
list
[
0
].
layers
);
expect
(
tds
.
at
(
3
).
html
()).
toContain
(
repoPropsData
.
list
[
0
].
size
);
expect
(
tds
.
at
(
4
).
html
()).
toContain
(
wrapper
.
vm
.
timeFormated
(
repoPropsData
.
list
[
0
].
createdAt
));
expect
(
tds
.
at
(
4
).
html
()).
toContain
(
wrapper
.
vm
.
timeFormat
t
ed
(
repoPropsData
.
list
[
0
].
createdAt
));
});
it
(
'
should have a label called Image ID
'
,
()
=>
{
...
...
spec/frontend/releases/list/components/release_block_footer_spec.js
View file @
fc53ce8e
...
...
@@ -8,8 +8,8 @@ import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
jest
.
mock
(
'
~/vue_shared/mixins/timeago
'
,
()
=>
({
methods
:
{
timeFormated
()
{
return
'
7 fortnight
e
s ago
'
;
timeFormat
t
ed
()
{
return
'
7 fortnights ago
'
;
},
tooltipTitle
()
{
return
'
February 30, 2401
'
;
...
...
@@ -82,7 +82,7 @@ describe('Release block footer', () => {
it
(
'
renders the author and creation time info
'
,
()
=>
{
expect
(
trimText
(
authorDateInfoSection
().
text
())).
toBe
(
`Created 7 fortnight
e
s ago by
${
releaseClone
.
author
.
username
}
`
,
`Created 7 fortnights ago by
${
releaseClone
.
author
.
username
}
`
,
);
});
...
...
@@ -139,7 +139,7 @@ describe('Release block footer', () => {
beforeEach
(()
=>
factory
({
author
:
undefined
}));
it
(
'
renders the release date without the author name
'
,
()
=>
{
expect
(
trimText
(
authorDateInfoSection
().
text
())).
toBe
(
'
Created 7 fortnight
e
s ago
'
);
expect
(
trimText
(
authorDateInfoSection
().
text
())).
toBe
(
'
Created 7 fortnights ago
'
);
});
});
...
...
spec/frontend/releases/list/components/release_block_spec.js
View file @
fc53ce8e
...
...
@@ -68,7 +68,7 @@ describe('Release block', () => {
});
it
(
'
renders release date
'
,
()
=>
{
expect
(
wrapper
.
text
()).
toContain
(
timeagoMixin
.
methods
.
timeFormated
(
release
.
released_at
));
expect
(
wrapper
.
text
()).
toContain
(
timeagoMixin
.
methods
.
timeFormat
t
ed
(
release
.
released_at
));
});
it
(
'
renders number of assets provided
'
,
()
=>
{
...
...
spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
View file @
fc53ce8e
...
...
@@ -90,11 +90,11 @@ describe('RelatedIssuableItem', () => {
it
(
'
renders state title
'
,
()
=>
{
const
stateTitle
=
tokenState
.
attributes
(
'
title
'
);
const
formatedCreateDate
=
formatDate
(
props
.
createdAt
);
const
format
t
edCreateDate
=
formatDate
(
props
.
createdAt
);
expect
(
stateTitle
).
toContain
(
'
<span class="bold">Opened</span>
'
);
expect
(
stateTitle
).
toContain
(
`<span class="text-tertiary">
${
formatedCreateDate
}
</span>`
);
expect
(
stateTitle
).
toContain
(
`<span class="text-tertiary">
${
format
t
edCreateDate
}
</span>`
);
});
it
(
'
renders aria label
'
,
()
=>
{
...
...
spec/javascripts/diffs/components/app_spec.js
View file @
fc53ce8e
...
...
@@ -41,6 +41,7 @@ describe('diffs/components/app', () => {
changesEmptyStateIllustration
:
''
,
dismissEndpoint
:
''
,
showSuggestPopover
:
true
,
useSingleDiffStyle
:
false
,
...
props
,
},
store
,
...
...
spec/javascripts/diffs/store/actions_spec.js
View file @
fc53ce8e
...
...
@@ -75,6 +75,7 @@ describe('DiffsStoreActions', () => {
const
projectPath
=
'
/root/project
'
;
const
dismissEndpoint
=
'
/-/user_callouts
'
;
const
showSuggestPopover
=
false
;
const
useSingleDiffStyle
=
false
;
testAction
(
setBaseConfig
,
...
...
@@ -85,6 +86,7 @@ describe('DiffsStoreActions', () => {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
},
{
endpoint
:
''
,
...
...
@@ -93,6 +95,7 @@ describe('DiffsStoreActions', () => {
projectPath
:
''
,
dismissEndpoint
:
''
,
showSuggestPopover
:
true
,
useSingleDiffStyle
:
true
,
},
[
{
...
...
@@ -104,6 +107,7 @@ describe('DiffsStoreActions', () => {
projectPath
,
dismissEndpoint
,
showSuggestPopover
,
useSingleDiffStyle
,
},
},
],
...
...
spec/javascripts/diffs/store/mutations_spec.js
View file @
fc53ce8e
...
...
@@ -10,11 +10,13 @@ describe('DiffsStoreMutations', () => {
const
state
=
{};
const
endpoint
=
'
/diffs/endpoint
'
;
const
projectPath
=
'
/root/project
'
;
const
useSingleDiffStyle
=
false
;
mutations
[
types
.
SET_BASE_CONFIG
](
state
,
{
endpoint
,
projectPath
});
mutations
[
types
.
SET_BASE_CONFIG
](
state
,
{
endpoint
,
projectPath
,
useSingleDiffStyle
});
expect
(
state
.
endpoint
).
toEqual
(
endpoint
);
expect
(
state
.
projectPath
).
toEqual
(
projectPath
);
expect
(
state
.
useSingleDiffStyle
).
toEqual
(
useSingleDiffStyle
);
});
});
...
...
spec/javascripts/lib/utils/common_utils_spec.js
View file @
fc53ce8e
...
...
@@ -721,6 +721,28 @@ describe('common_utils', () => {
});
});
describe
(
'
convertObjectPropsToSnakeCase
'
,
()
=>
{
it
(
'
converts each object key to snake case
'
,
()
=>
{
const
obj
=
{
some
:
'
some
'
,
'
cool object
'
:
'
cool object
'
,
likeThisLongOne
:
'
likeThisLongOne
'
,
};
expect
(
commonUtils
.
convertObjectPropsToSnakeCase
(
obj
)).
toEqual
({
some
:
'
some
'
,
cool_object
:
'
cool object
'
,
like_this_long_one
:
'
likeThisLongOne
'
,
});
});
it
(
'
returns an empty object if there are no keys
'
,
()
=>
{
[
''
,
{},
[],
null
].
forEach
(
badObj
=>
{
expect
(
commonUtils
.
convertObjectPropsToSnakeCase
(
badObj
)).
toEqual
({});
});
});
});
describe
(
'
with options
'
,
()
=>
{
const
objWithoutChildren
=
{
project_name
:
'
GitLab CE
'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment