diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-17 15:09:26 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-17 15:09:26 +0300 |
commit | 75a4eaade04ee758bb3b253f27bf1c20c67991f0 (patch) | |
tree | 779b3011793bf35770774dbaa51eec55efd320cd /app | |
parent | 839e879bcf197a283da8481ddcb15b177172784d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
14 files changed, 73 insertions, 191 deletions
diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index bb311148627..4323499ef1f 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -522,7 +522,7 @@ export default { :file="file" :reviewed="fileReviews[index]" :is-first-file="index === 0" - :is-last-file="index === diffs.length - 1" + :is-last-file="index === diffFilesLength - 1" :help-page-path="helpPagePath" :can-current-user-fork="canCurrentUserFork" :view-diffs-file-by-file="viewDiffsFileByFile" diff --git a/app/assets/javascripts/ide/components/branches/search_list.vue b/app/assets/javascripts/ide/components/branches/search_list.vue index 1ae7cf9339d..62e93335a20 100644 --- a/app/assets/javascripts/ide/components/branches/search_list.vue +++ b/app/assets/javascripts/ide/components/branches/search_list.vue @@ -57,7 +57,10 @@ export default { <template> <div> - <label class="dropdown-input pt-3 pb-3 mb-0 border-bottom block position-relative" @click.stop> + <label + class="dropdown-input gl-pt-3 gl-pb-5 gl-mb-0 gl-border-b-1 gl-border-b-solid gl-display-block" + @click.stop + > <input ref="searchInput" v-model="search" diff --git a/app/assets/javascripts/ide/components/merge_requests/list.vue b/app/assets/javascripts/ide/components/merge_requests/list.vue index 680e8841a1f..7cb6d4d3dac 100644 --- a/app/assets/javascripts/ide/components/merge_requests/list.vue +++ b/app/assets/javascripts/ide/components/merge_requests/list.vue @@ -75,7 +75,10 @@ export default { <template> <div> - <label class="dropdown-input pt-3 pb-3 mb-0 border-bottom block" @click.stop> + <label + class="dropdown-input gl-pt-3 gl-pb-5 gl-mb-0 gl-border-b-1 gl-border-b-solid gl-display-block" + @click.stop + > <tokened-input v-model="search" :tokens="searchTokens" diff --git a/app/assets/javascripts/ide/components/nav_form.vue b/app/assets/javascripts/ide/components/nav_form.vue index 62bb4841760..98f0504298b 100644 --- a/app/assets/javascripts/ide/components/nav_form.vue +++ b/app/assets/javascripts/ide/components/nav_form.vue @@ -1,13 +1,12 @@ <script> -import Tab from '~/vue_shared/components/tabs/tab.vue'; -import Tabs from '~/vue_shared/components/tabs/tabs'; +import { GlTab, GlTabs } from '@gitlab/ui'; import BranchesSearchList from './branches/search_list.vue'; import MergeRequestSearchList from './merge_requests/list.vue'; export default { components: { - Tabs, - Tab, + GlTab, + GlTabs, BranchesSearchList, MergeRequestSearchList, }, @@ -23,20 +22,14 @@ export default { <template> <div class="ide-nav-form p-0"> - <tabs v-if="showMergeRequests" stop-propagation> - <tab active> - <template #title> - {{ __('Branches') }} - </template> + <gl-tabs v-if="showMergeRequests"> + <gl-tab :title="__('Branches')"> <branches-search-list /> - </tab> - <tab> - <template #title> - {{ __('Merge Requests') }} - </template> + </gl-tab> + <gl-tab :title="__('Merge Requests')"> <merge-request-search-list /> - </tab> - </tabs> + </gl-tab> + </gl-tabs> <branches-search-list v-else /> </div> </template> diff --git a/app/assets/javascripts/vue_shared/components/tabs/tab.vue b/app/assets/javascripts/vue_shared/components/tabs/tab.vue deleted file mode 100644 index d24c27cfcc3..00000000000 --- a/app/assets/javascripts/vue_shared/components/tabs/tab.vue +++ /dev/null @@ -1,47 +0,0 @@ -<script> -export default { - props: { - title: { - type: String, - required: false, - default: '', - }, - active: { - type: Boolean, - required: false, - default: false, - }, - }, - data() { - return { - // props can't be updated, so we map it to data where we can - localActive: this.active, - }; - }, - watch: { - active() { - this.localActive = this.active; - }, - }, - created() { - this.isTab = true; - }, - updated() { - if (this.$parent) { - this.$parent.$forceUpdate(); - } - }, -}; -</script> - -<template> - <div - :class="{ - active: localActive, - }" - class="tab-pane" - role="tabpanel" - > - <slot></slot> - </div> -</template> diff --git a/app/assets/javascripts/vue_shared/components/tabs/tabs.js b/app/assets/javascripts/vue_shared/components/tabs/tabs.js deleted file mode 100644 index 233df96a520..00000000000 --- a/app/assets/javascripts/vue_shared/components/tabs/tabs.js +++ /dev/null @@ -1,76 +0,0 @@ -export default { - props: { - stopPropagation: { - type: Boolean, - required: false, - default: false, - }, - }, - data() { - return { - currentIndex: 0, - tabs: [], - }; - }, - mounted() { - this.updateTabs(); - }, - methods: { - updateTabs() { - this.tabs = this.$children.filter((child) => child.isTab); - this.currentIndex = this.tabs.findIndex((tab) => tab.localActive); - }, - setTab(e, index) { - if (this.stopPropagation) { - e.stopPropagation(); - e.preventDefault(); - } - - this.tabs[this.currentIndex].localActive = false; - this.tabs[index].localActive = true; - - this.currentIndex = index; - }, - }, - render(h) { - const navItems = this.tabs.map((tab, i) => - h( - 'li', - { - key: i, - }, - [ - h( - 'a', - { - class: tab.localActive ? 'active' : null, - attrs: { - href: '#', - }, - on: { - click: (e) => this.setTab(e, i), - }, - }, - tab.$slots.title || tab.title, - ), - ], - ), - ); - const nav = h( - 'ul', - { - class: 'nav-links tab-links', - }, - [navItems], - ); - const content = h( - 'div', - { - class: ['tab-content'], - }, - [this.$slots.default], - ); - - return h('div', {}, [[nav], content]); - }, -}; diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss index 7c4d51ab677..009019a45d9 100644 --- a/app/assets/stylesheets/page_bundles/ide.scss +++ b/app/assets/stylesheets/page_bundles/ide.scss @@ -1043,8 +1043,7 @@ $ide-commit-header-height: 48px; .input-icon { right: auto; left: 10px; - top: 50%; - transform: translateY(-50%); + top: 1rem; } } diff --git a/app/finders/concerns/packages/finder_helper.rb b/app/finders/concerns/packages/finder_helper.rb index 524e7aa7ff9..30bc0ff7909 100644 --- a/app/finders/concerns/packages/finder_helper.rb +++ b/app/finders/concerns/packages/finder_helper.rb @@ -4,6 +4,9 @@ module Packages module FinderHelper extend ActiveSupport::Concern + InvalidPackageTypeError = Class.new(StandardError) + InvalidStatusError = Class.new(StandardError) + private def packages_visible_to_user(user, within_group:) @@ -25,5 +28,35 @@ module Packages ::Project.in_namespace(namespace_ids) .public_or_visible_to_user(user, ::Gitlab::Access::REPORTER) end + + def package_type + params[:package_type].presence + end + + def filter_by_package_type(packages) + return packages unless package_type + raise InvalidPackageTypeError unless ::Packages::Package.package_types.key?(package_type) + + packages.with_package_type(package_type) + end + + def filter_by_package_name(packages) + return packages unless params[:package_name].present? + + packages.search_by_name(params[:package_name]) + end + + def filter_with_version(packages) + return packages if params[:include_versionless].present? + + packages.has_version + end + + def filter_by_status(packages) + return packages.displayable unless params[:status].present? + raise InvalidStatusError unless Package.statuses.key?(params[:status]) + + packages.with_status(params[:status]) + end end end diff --git a/app/finders/packages/group_packages_finder.rb b/app/finders/packages/group_packages_finder.rb index 860c4068b31..db5161d6e16 100644 --- a/app/finders/packages/group_packages_finder.rb +++ b/app/finders/packages/group_packages_finder.rb @@ -2,9 +2,7 @@ module Packages class GroupPackagesFinder - attr_reader :current_user, :group, :params - - InvalidPackageTypeError = Class.new(StandardError) + include ::Packages::FinderHelper def initialize(current_user, group, params = { exclude_subgroups: false, order_by: 'created_at', sort: 'asc' }) @current_user = current_user @@ -20,6 +18,8 @@ module Packages private + attr_reader :current_user, :group, :params + def packages_for_group_projects packages = ::Packages::Package .including_build_info @@ -32,6 +32,7 @@ module Packages packages = filter_with_version(packages) packages = filter_by_package_type(packages) packages = filter_by_package_name(packages) + packages = filter_by_status(packages) packages end @@ -46,10 +47,6 @@ module Packages .with_feature_available_for_user(:repository, current_user) end - def package_type - params[:package_type].presence - end - def groups return [group] if exclude_subgroups? @@ -59,24 +56,5 @@ module Packages def exclude_subgroups? params[:exclude_subgroups] end - - def filter_by_package_type(packages) - return packages unless package_type - raise InvalidPackageTypeError unless Package.package_types.key?(package_type) - - packages.with_package_type(package_type) - end - - def filter_by_package_name(packages) - return packages unless params[:package_name].present? - - packages.search_by_name(params[:package_name]) - end - - def filter_with_version(packages) - return packages if params[:include_versionless].present? - - packages.has_version - end end end diff --git a/app/finders/packages/packages_finder.rb b/app/finders/packages/packages_finder.rb index 72a63224d2f..bd9e62e3f2a 100644 --- a/app/finders/packages/packages_finder.rb +++ b/app/finders/packages/packages_finder.rb @@ -2,7 +2,7 @@ module Packages class PackagesFinder - attr_reader :params, :project + include ::Packages::FinderHelper def initialize(project, params = {}) @project = project @@ -21,29 +21,14 @@ module Packages packages = filter_with_version(packages) packages = filter_by_package_type(packages) packages = filter_by_package_name(packages) + packages = filter_by_status(packages) packages = order_packages(packages) packages end private - def filter_with_version(packages) - return packages if params[:include_versionless].present? - - packages.has_version - end - - def filter_by_package_type(packages) - return packages unless params[:package_type] - - packages.with_package_type(params[:package_type]) - end - - def filter_by_package_name(packages) - return packages unless params[:package_name] - - packages.search_by_name(params[:package_name]) - end + attr_reader :params, :project def order_packages(packages) packages.sort_by_attribute("#{params[:order_by]}_#{params[:sort]}") diff --git a/app/models/packages/package.rb b/app/models/packages/package.rb index 7bc74e0db74..391540634be 100644 --- a/app/models/packages/package.rb +++ b/app/models/packages/package.rb @@ -69,6 +69,8 @@ class Packages::Package < ApplicationRecord composer: 6, generic: 7, golang: 8, debian: 9, rubygems: 10 } + enum status: { default: 0, hidden: 1, processing: 2 } + scope :with_name, ->(name) { where(name: name) } scope :with_name_like, ->(name) { where(arel_table[:name].matches(name)) } scope :with_normalized_pypi_name, ->(name) { where("LOWER(regexp_replace(name, '[-_.]+', '-', 'g')) = ?", name.downcase) } @@ -76,6 +78,8 @@ class Packages::Package < ApplicationRecord scope :with_version, ->(version) { where(version: version) } scope :without_version_like, -> (version) { where.not(arel_table[:version].matches(version)) } scope :with_package_type, ->(package_type) { where(package_type: package_type) } + scope :with_status, ->(status) { where(status: status) } + scope :displayable, -> { with_status(:default) } scope :including_build_info, -> { includes(pipelines: :user) } scope :including_project_route, -> { includes(project: { namespace: :route }) } scope :including_tags, -> { includes(:tags) } diff --git a/app/services/packages/create_package_service.rb b/app/services/packages/create_package_service.rb index fcf252cf971..3dc06497d9f 100644 --- a/app/services/packages/create_package_service.rb +++ b/app/services/packages/create_package_service.rb @@ -9,7 +9,9 @@ module Packages .packages .with_package_type(package_type) .safe_find_or_create_by!(name: name, version: version) do |package| + package.status = params[:status] if params[:status] package.creator = package_creator + add_build_info(package) end end @@ -29,8 +31,9 @@ module Packages { creator: package_creator, name: params[:name], - version: params[:version] - }.merge(attrs) + version: params[:version], + status: params[:status] + }.compact.merge(attrs) end def package_creator diff --git a/app/services/packages/generic/create_package_file_service.rb b/app/services/packages/generic/create_package_file_service.rb index b14b1c193ec..1451a022a39 100644 --- a/app/services/packages/generic/create_package_file_service.rb +++ b/app/services/packages/generic/create_package_file_service.rb @@ -15,13 +15,16 @@ module Packages package_params = { name: params[:package_name], version: params[:package_version], - build: params[:build] + build: params[:build], + status: params[:status] } package = ::Packages::Generic::FindOrCreatePackageService .new(project, current_user, package_params) .execute + package.update_column(:status, params[:status]) if params[:status] && params[:status] != package.status + package.build_infos.safe_find_or_create_by!(pipeline: params[:build].pipeline) if params[:build].present? package end diff --git a/app/services/packages/maven/find_or_create_package_service.rb b/app/services/packages/maven/find_or_create_package_service.rb index 6e0346058e8..4c916d264a7 100644 --- a/app/services/packages/maven/find_or_create_package_service.rb +++ b/app/services/packages/maven/find_or_create_package_service.rb @@ -42,6 +42,7 @@ module Packages package_params = { name: package_name, path: params[:path], + status: params[:status], version: version } |