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
1
Merge Requests
1
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
nexedi
gitlab-ce
Commits
620f4db1
Commit
620f4db1
authored
Jan 07, 2020
by
Sarah Groff Hennigh-Palermo
Committed by
Martin Wortschack
Jan 07, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add assets module, fix linting
This involves four files, two subs
parent
16761366
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
308 additions
and
164 deletions
+308
-164
app/assets/javascripts/releases/list/components/release_block.vue
...ts/javascripts/releases/list/components/release_block.vue
+19
-164
app/assets/javascripts/releases/list/components/release_block_assets.vue
...scripts/releases/list/components/release_block_assets.vue
+65
-0
app/assets/javascripts/releases/list/components/release_block_author.vue
...scripts/releases/list/components/release_block_author.vue
+42
-0
app/assets/javascripts/releases/list/components/release_block_header.vue
...scripts/releases/list/components/release_block_header.vue
+47
-0
app/assets/javascripts/releases/list/components/release_block_metadata.vue
...ripts/releases/list/components/release_block_metadata.vue
+84
-0
app/assets/javascripts/releases/list/components/release_block_milestones.vue
...pts/releases/list/components/release_block_milestones.vue
+51
-0
No files found.
app/assets/javascripts/releases/list/components/release_block.vue
View file @
620f4db1
<
script
>
/* eslint-disable @gitlab/vue-i18n/no-bare-strings */
import
_
from
'
underscore
'
;
import
{
GlTooltipDirective
,
GlLink
,
GlBadge
}
from
'
@gitlab/ui
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
import
UserAvatarLink
from
'
~/vue_shared/components/user_avatar/user_avatar_link.vue
'
;
import
timeagoMixin
from
'
~/vue_shared/mixins/timeago
'
;
import
{
__
,
n__
,
sprintf
}
from
'
~/locale
'
;
import
{
slugify
}
from
'
~/lib/utils/text_utility
'
;
import
{
getLocationHash
}
from
'
~/lib/utils/url_utility
'
;
import
{
scrollToElement
}
from
'
~/lib/utils/common_utils
'
;
import
glFeatureFlagsMixin
from
'
~/vue_shared/mixins/gl_feature_flags_mixin
'
;
import
ReleaseBlockFooter
from
'
./release_block_footer.vue
'
;
import
EvidenceBlock
from
'
./evidence_block.vue
'
;
import
ReleaseBlockAssets
from
'
./release_block_assets.vue
'
;
import
ReleaseBlockFooter
from
'
./release_block_footer.vue
'
;
import
ReleaseBlockHeader
from
'
./release_block_header.vue
'
;
import
ReleaseBlockMetadata
from
'
./release_block_metadata.vue
'
;
import
ReleaseBlockMilestoneInfo
from
'
./release_block_milestone_info.vue
'
;
export
default
{
name
:
'
ReleaseBlock
'
,
components
:
{
EvidenceBlock
,
GlLink
,
GlBadge
,
Icon
,
UserAvatarLink
,
ReleaseBlockAssets
,
ReleaseBlockFooter
,
ReleaseBlockHeader
,
ReleaseBlockMetadata
,
ReleaseBlockMilestoneInfo
,
},
directives
:
{
GlTooltip
:
GlTooltipDirective
,
},
mixins
:
[
timeagoMixin
,
glFeatureFlagsMixin
()],
mixins
:
[
glFeatureFlagsMixin
()],
props
:
{
release
:
{
type
:
Object
,
...
...
@@ -45,45 +38,14 @@ export default {
id
()
{
return
slugify
(
this
.
release
.
tag_name
);
},
releasedTimeAgo
()
{
return
sprintf
(
__
(
'
released %{time}
'
),
{
time
:
this
.
timeFormatted
(
this
.
release
.
released_at
),
});
},
userImageAltDescription
()
{
return
this
.
author
&&
this
.
author
.
username
?
sprintf
(
__
(
"
%{username}'s avatar
"
),
{
username
:
this
.
author
.
username
})
:
null
;
},
commit
()
{
return
this
.
release
.
commit
||
{};
},
commitUrl
()
{
return
this
.
release
.
commit_path
;
},
tagUrl
()
{
return
this
.
release
.
tag_path
;
},
assets
()
{
return
this
.
release
.
assets
||
{};
},
author
()
{
return
this
.
release
.
author
||
{};
},
hasAuthor
()
{
return
!
_
.
isEmpty
(
this
.
author
);
},
hasEvidence
()
{
return
Boolean
(
this
.
release
.
evidence_sha
);
},
shouldRenderMilestones
()
{
return
!
_
.
isEmpty
(
this
.
release
.
milestones
);
},
labelText
()
{
return
n__
(
'
Milestone
'
,
'
Milestones
'
,
this
.
release
.
milestones
.
length
);
},
shouldShowEditButton
()
{
return
Boolean
(
this
.
release
.
_links
&&
this
.
release
.
_links
.
edit_url
);
milestones
()
{
return
this
.
release
.
milestones
||
[];
},
shouldShowEvidence
()
{
return
this
.
glFeatures
.
releaseEvidenceCollection
;
...
...
@@ -91,6 +53,11 @@ export default {
shouldShowFooter
()
{
return
this
.
glFeatures
.
releaseIssueSummary
;
},
shouldRenderAssets
()
{
return
Boolean
(
this
.
assets
.
links
.
length
||
(
this
.
assets
.
sources
&&
this
.
assets
.
sources
.
length
),
);
},
shouldRenderReleaseMetaData
()
{
return
!
this
.
glFeatures
.
releaseIssueSummary
;
},
...
...
@@ -113,127 +80,15 @@ export default {
</
script
>
<
template
>
<div
:id=
"id"
:class=
"
{ 'bg-line-target-blue': isHighlighted }" class="card release-block">
<div
class=
"card-header d-flex align-items-center bg-white pr-0"
>
<h2
class=
"card-title my-2 mr-auto gl-font-size-20"
>
{{
release
.
name
}}
<gl-badge
v-if=
"release.upcoming_release"
variant=
"warning"
class=
"align-middle"
>
{{
__
(
'
Upcoming Release
'
)
}}
</gl-badge>
</h2>
<gl-link
v-if=
"shouldShowEditButton"
v-gl-tooltip
class=
"btn btn-default append-right-10 js-edit-button ml-2"
:title=
"__('Edit this release')"
:href=
"release._links.edit_url"
>
<icon
name=
"pencil"
/>
</gl-link>
</div>
<release-block-header
:release=
"release"
/>
<div
class=
"card-body"
>
<div
v-if=
"shouldRenderMilestoneInfo"
>
<release-block-milestone-info
:milestones=
"
release.
milestones"
/>
<release-block-milestone-info
:milestones=
"milestones"
/>
<hr
class=
"mb-3 mt-0"
/>
</div>
<div
v-if=
"shouldRenderReleaseMetaData"
class=
"card-subtitle d-flex flex-wrap text-secondary"
>
<div
class=
"append-right-8"
>
<icon
name=
"commit"
class=
"align-middle"
/>
<gl-link
v-if=
"commitUrl"
v-gl-tooltip
.
bottom
:title=
"commit.title"
:href=
"commitUrl"
>
{{
commit
.
short_id
}}
</gl-link>
<span
v-else
v-gl-tooltip
.
bottom
:title=
"commit.title"
>
{{
commit
.
short_id
}}
</span>
</div>
<div
class=
"append-right-8"
>
<icon
name=
"tag"
class=
"align-middle"
/>
<gl-link
v-if=
"tagUrl"
v-gl-tooltip
.
bottom
:title=
"__('Tag')"
:href=
"tagUrl"
>
{{
release
.
tag_name
}}
</gl-link>
<span
v-else
v-gl-tooltip
.
bottom
:title=
"__('Tag')"
>
{{
release
.
tag_name
}}
</span>
</div>
<template
v-if=
"shouldRenderMilestones"
>
<div
class=
"js-milestone-list-label"
>
<icon
name=
"flag"
class=
"align-middle"
/>
<span
class=
"js-label-text"
>
{{
labelText
}}
</span>
</div>
<template
v-for=
"(milestone, index) in release.milestones"
>
<gl-link
:key=
"milestone.id"
v-gl-tooltip
:title=
"milestone.description"
:href=
"milestone.web_url"
class=
"append-right-4 prepend-left-4 js-milestone-link"
>
{{
milestone
.
title
}}
</gl-link>
<template
v-if=
"index !== release.milestones.length - 1"
>
•
</
template
>
</template>
</template>
<div
class=
"append-right-4"
>
•
<span
v-gl-tooltip
.
bottom
:title=
"tooltipTitle(release.released_at)"
>
{{ releasedTimeAgo }}
</span>
</div>
<div
v-if=
"hasAuthor"
class=
"d-flex"
>
by
<user-avatar-link
class=
"prepend-left-4"
:link-href=
"author.web_url"
:img-src=
"author.avatar_url"
:img-alt=
"userImageAltDescription"
:tooltip-text=
"author.username"
/>
</div>
</div>
<div
v-if=
"assets.links.length || (assets.sources && assets.sources.length)"
class=
"card-text prepend-top-default"
>
<b>
{{ __('Assets') }}
<span
class=
"js-assets-count badge badge-pill"
>
{{ assets.count }}
</span>
</b>
<ul
v-if=
"assets.links.length"
class=
"pl-0 mb-0 prepend-top-8 list-unstyled js-assets-list"
>
<li
v-for=
"link in assets.links"
:key=
"link.name"
class=
"append-bottom-8"
>
<gl-link
v-gl-tooltip
.
bottom
:title=
"__('Download asset')"
:href=
"link.url"
>
<icon
name=
"package"
class=
"align-middle append-right-4 align-text-bottom"
/>
{{ link.name }}
<span
v-if=
"link.external"
>
{{ __('(external source)') }}
</span>
</gl-link>
</li>
</ul>
<div
v-if=
"assets.sources && assets.sources.length"
class=
"dropdown"
>
<button
type=
"button"
class=
"btn btn-link"
data-toggle=
"dropdown"
aria-haspopup=
"true"
aria-expanded=
"false"
>
<icon
name=
"doc-code"
class=
"align-top append-right-4"
/>
{{ __('Source code') }}
<icon
name=
"arrow-down"
/>
</button>
<div
class=
"js-sources-dropdown dropdown-menu"
>
<li
v-for=
"asset in assets.sources"
:key=
"asset.url"
>
<gl-link
:href=
"asset.url"
>
{{ __('Download') }} {{ asset.format }}
</gl-link>
</li>
</div>
</div>
</div>
<release-block-metadata
v-if=
"shouldRenderReleaseMetaData"
:release=
"release"
/>
<release-block-assets
v-if=
"shouldRenderAssets"
:assets=
"assets"
/>
<evidence-block
v-if=
"hasEvidence && shouldShowEvidence"
:release=
"release"
/>
<div
class=
"card-text prepend-top-default"
>
...
...
app/assets/javascripts/releases/list/components/release_block_assets.vue
0 → 100644
View file @
620f4db1
<
script
>
import
{
GlTooltipDirective
,
GlLink
}
from
'
@gitlab/ui
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
export
default
{
name
:
'
ReleaseBlockAssets
'
,
components
:
{
GlLink
,
Icon
,
},
directives
:
{
GlTooltip
:
GlTooltipDirective
,
},
props
:
{
assets
:
{
type
:
Object
,
required
:
true
,
},
},
computed
:
{
hasAssets
()
{
return
Boolean
(
this
.
assets
.
count
);
},
},
};
</
script
>
<
template
>
<div
class=
"card-text prepend-top-default"
>
<b>
{{
__
(
'
Assets
'
)
}}
<span
class=
"js-assets-count badge badge-pill"
>
{{
assets
.
count
}}
</span>
</b>
<ul
v-if=
"assets.links.length"
class=
"pl-0 mb-0 prepend-top-8 list-unstyled js-assets-list"
>
<li
v-for=
"link in assets.links"
:key=
"link.name"
class=
"append-bottom-8"
>
<gl-link
v-gl-tooltip
.
bottom
:title=
"__('Download asset')"
:href=
"link.url"
>
<icon
name=
"package"
class=
"align-middle append-right-4 align-text-bottom"
/>
{{
link
.
name
}}
<span
v-if=
"link.external"
>
{{
__
(
'
(external source)
'
)
}}
</span>
</gl-link>
</li>
</ul>
<div
v-if=
"hasAssets"
class=
"dropdown"
>
<button
type=
"button"
class=
"btn btn-link"
data-toggle=
"dropdown"
aria-haspopup=
"true"
aria-expanded=
"false"
>
<icon
name=
"doc-code"
class=
"align-top append-right-4"
/>
{{
__
(
'
Source code
'
)
}}
<icon
name=
"arrow-down"
/>
</button>
<div
class=
"js-sources-dropdown dropdown-menu"
>
<li
v-for=
"asset in assets.sources"
:key=
"asset.url"
>
<gl-link
:href=
"asset.url"
>
{{
__
(
'
Download
'
)
}}
{{
asset
.
format
}}
</gl-link>
</li>
</div>
</div>
</div>
</
template
>
app/assets/javascripts/releases/list/components/release_block_author.vue
0 → 100644
View file @
620f4db1
<
script
>
import
{
__
,
sprintf
}
from
'
~/locale
'
;
import
{
GlSprintf
}
from
'
@gitlab/ui
'
;
import
UserAvatarLink
from
'
~/vue_shared/components/user_avatar/user_avatar_link.vue
'
;
export
default
{
name
:
'
ReleaseBlockAuthor
'
,
components
:
{
GlSprintf
,
UserAvatarLink
,
},
props
:
{
author
:
{
type
:
Object
,
required
:
true
,
},
},
computed
:
{
userImageAltDescription
()
{
return
this
.
author
&&
this
.
author
.
username
?
sprintf
(
__
(
"
%{username}'s avatar
"
),
{
username
:
this
.
author
.
username
})
:
null
;
},
},
};
</
script
>
<
template
>
<div
class=
"d-flex"
>
<gl-sprintf
message=
"by %
{user}">
<template
#user
>
<user-avatar-link
class=
"prepend-left-4"
:link-href=
"author.web_url"
:img-src=
"author.avatar_url"
:img-alt=
"userImageAltDescription"
:tooltip-text=
"author.username"
/>
</
template
>
</gl-sprintf>
</div>
</template>
app/assets/javascripts/releases/list/components/release_block_header.vue
0 → 100644
View file @
620f4db1
<
script
>
import
{
GlTooltipDirective
,
GlLink
,
GlBadge
}
from
'
@gitlab/ui
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
export
default
{
name
:
'
ReleaseBlockHeader
'
,
components
:
{
GlLink
,
GlBadge
,
Icon
,
},
directives
:
{
GlTooltip
:
GlTooltipDirective
,
},
props
:
{
release
:
{
type
:
Object
,
required
:
true
,
},
},
computed
:
{
shouldShowEditButton
()
{
return
Boolean
(
this
.
release
.
_links
&&
this
.
release
.
_links
.
edit_url
);
},
},
};
</
script
>
<
template
>
<div
class=
"card-header d-flex align-items-center bg-white pr-0"
>
<h2
class=
"card-title my-2 mr-auto gl-font-size-20"
>
{{
release
.
name
}}
<gl-badge
v-if=
"release.upcoming_release"
variant=
"warning"
class=
"align-middle"
>
{{
__
(
'
Upcoming Release
'
)
}}
</gl-badge>
</h2>
<gl-link
v-if=
"shouldShowEditButton"
v-gl-tooltip
class=
"btn btn-default append-right-10 js-edit-button ml-2"
:title=
"__('Edit this release')"
:href=
"release._links.edit_url"
>
<icon
name=
"pencil"
/>
</gl-link>
</div>
</
template
>
app/assets/javascripts/releases/list/components/release_block_metadata.vue
0 → 100644
View file @
620f4db1
<
script
>
import
{
GlTooltipDirective
,
GlLink
}
from
'
@gitlab/ui
'
;
import
{
__
,
sprintf
}
from
'
~/locale
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
import
timeagoMixin
from
'
~/vue_shared/mixins/timeago
'
;
import
ReleaseBlockAuthor
from
'
./release_block_author.vue
'
;
import
ReleaseBlockMilestones
from
'
./release_block_milestones.vue
'
;
export
default
{
name
:
'
ReleaseBlockMetadata
'
,
components
:
{
Icon
,
GlLink
,
ReleaseBlockAuthor
,
ReleaseBlockMilestones
,
},
directives
:
{
GlTooltip
:
GlTooltipDirective
,
},
mixins
:
[
timeagoMixin
],
props
:
{
release
:
{
type
:
Object
,
required
:
true
,
},
},
computed
:
{
author
()
{
return
this
.
release
.
author
;
},
commit
()
{
return
this
.
release
.
commit
||
{};
},
commitUrl
()
{
return
this
.
release
.
commit_path
;
},
hasAuthor
()
{
return
Boolean
(
this
.
author
);
},
releasedTimeAgo
()
{
return
sprintf
(
__
(
'
released %{time}
'
),
{
time
:
this
.
timeFormatted
(
this
.
release
.
released_at
),
});
},
shouldRenderMilestones
()
{
return
Boolean
(
this
.
release
.
milestones
?.
length
);
},
tagUrl
()
{
return
this
.
release
.
tag_path
;
},
},
};
</
script
>
<
template
>
<div
class=
"card-subtitle d-flex flex-wrap text-secondary"
>
<div
class=
"append-right-8"
>
<icon
name=
"commit"
class=
"align-middle"
/>
<gl-link
v-if=
"commitUrl"
v-gl-tooltip
.
bottom
:title=
"commit.title"
:href=
"commitUrl"
>
{{
commit
.
short_id
}}
</gl-link>
<span
v-else
v-gl-tooltip
.
bottom
:title=
"commit.title"
>
{{
commit
.
short_id
}}
</span>
</div>
<div
class=
"append-right-8"
>
<icon
name=
"tag"
class=
"align-middle"
/>
<gl-link
v-if=
"tagUrl"
v-gl-tooltip
.
bottom
:title=
"__('Tag')"
:href=
"tagUrl"
>
{{
release
.
tag_name
}}
</gl-link>
<span
v-else
v-gl-tooltip
.
bottom
:title=
"__('Tag')"
>
{{
release
.
tag_name
}}
</span>
</div>
<release-block-milestones
v-if=
"shouldRenderMilestones"
:milestones=
"release.milestones"
/>
<div
class=
"append-right-4"
>
•
<span
v-gl-tooltip
.
bottom
:title=
"tooltipTitle(release.released_at)"
>
{{
releasedTimeAgo
}}
</span>
</div>
<release-block-author
v-if=
"hasAuthor"
:author=
"author"
/>
</div>
</
template
>
app/assets/javascripts/releases/list/components/release_block_milestones.vue
0 → 100644
View file @
620f4db1
<
script
>
import
{
GlTooltipDirective
,
GlLink
}
from
'
@gitlab/ui
'
;
import
{
n__
}
from
'
~/locale
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
export
default
{
name
:
'
ReleaseBlockMilestones
'
,
components
:
{
GlLink
,
Icon
,
},
directives
:
{
GlTooltip
:
GlTooltipDirective
,
},
props
:
{
milestones
:
{
type
:
Array
,
required
:
true
,
},
},
computed
:
{
labelText
()
{
return
n__
(
'
Milestone
'
,
'
Milestones
'
,
this
.
milestones
.
length
);
},
},
};
</
script
>
<
template
>
<div>
<div
class=
"js-milestone-list-label"
>
<icon
name=
"flag"
class=
"align-middle"
/>
<span
class=
"js-label-text"
>
{{
labelText
}}
</span>
</div>
<template
v-for=
"(milestone, index) in milestones"
>
<gl-link
:key=
"milestone.id"
v-gl-tooltip
:title=
"milestone.description"
:href=
"milestone.web_url"
class=
"mx-1 js-milestone-link"
>
{{
milestone
.
title
}}
</gl-link>
<template
v-if=
"index !== milestones.length - 1"
>
•
</
template
>
</template>
</div>
</template>
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