diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-03 06:08:29 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-03 06:08:29 +0000 |
commit | 829c7542e8927a832df7a39ef241882c39c93399 (patch) | |
tree | aaaae42f1e43f15d6ab0641d11720644a59473e3 /app | |
parent | 173b547fb98ab12ae41f295915453e598be3a647 (diff) | |
download | gitlab-ce-829c7542e8927a832df7a39ef241882c39c93399.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
15 files changed, 74 insertions, 56 deletions
diff --git a/app/assets/javascripts/boards/components/board_content.vue b/app/assets/javascripts/boards/components/board_content.vue index 7baa821402a..6ed617acf30 100644 --- a/app/assets/javascripts/boards/components/board_content.vue +++ b/app/assets/javascripts/boards/components/board_content.vue @@ -6,6 +6,7 @@ import Draggable from 'vuedraggable'; import { mapState, mapGetters, mapActions } from 'vuex'; import { contentTop } from '~/lib/utils/common_utils'; import { s__ } from '~/locale'; +import eventHub from '~/boards/eventhub'; import { formatBoardLists } from 'ee_else_ce/boards/boards_util'; import BoardAddNewColumn from 'ee_else_ce/boards/components/board_add_new_column.vue'; import { defaultSortableOptions } from '~/sortable/constants'; @@ -130,6 +131,12 @@ export default { return this.isApolloBoard ? this.apolloError : this.error; }, }, + created() { + eventHub.$on('updateBoard', this.refetchLists); + }, + beforeDestroy() { + eventHub.$off('updateBoard', this.refetchLists); + }, mounted() { this.setBoardHeight(); @@ -156,6 +163,9 @@ export default { this.boardHeight = `${window.innerHeight - this.$el.getBoundingClientRect().top}px`; } }, + refetchLists() { + this.$apollo.queries.boardListsApollo.refetch(); + }, }, }; </script> diff --git a/app/assets/javascripts/boards/components/board_filtered_search.vue b/app/assets/javascripts/boards/components/board_filtered_search.vue index 24c4917bf7e..2e14afad963 100644 --- a/app/assets/javascripts/boards/components/board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/board_filtered_search.vue @@ -351,6 +351,7 @@ export default { eventHub.$on('updateTokens', this.updateTokens); if (!isEmpty(this.eeFilters)) { this.filterParams = this.eeFilters; + this.$emit('setFilters', this.formattedFilterParams); } }, beforeDestroy() { @@ -361,6 +362,7 @@ export default { updateTokens() { const rawFilterParams = queryToObject(window.location.search, { gatherArrays: true }); this.filterParams = convertObjectPropsToCamelCase(rawFilterParams, {}); + this.$emit('setFilters', this.formattedFilterParams); this.filteredSearchKey += 1; }, handleFilter(filters) { diff --git a/app/assets/javascripts/boards/components/board_form.vue b/app/assets/javascripts/boards/components/board_form.vue index b396686f477..896810bfb3a 100644 --- a/app/assets/javascripts/boards/components/board_form.vue +++ b/app/assets/javascripts/boards/components/board_form.vue @@ -4,6 +4,7 @@ import { mapActions, mapState } from 'vuex'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { visitUrl, updateHistory, getParameterByName } from '~/lib/utils/url_utility'; import { __, s__ } from '~/locale'; +import eventHub from '~/boards/eventhub'; import { formType } from '../constants'; import createBoardMutation from '../graphql/board_create.mutation.graphql'; @@ -217,16 +218,22 @@ export default { try { const board = await this.createOrUpdateBoard(); if (this.isApolloBoard) { - this.$emit('addBoard', board); + if (this.board.id) { + eventHub.$emit('updateBoard', board); + } else { + this.$emit('addBoard', board); + } } else { this.setBoard(board); } this.cancel(); - const param = getParameterByName('group_by') - ? `?group_by=${getParameterByName('group_by')}` - : ''; - updateHistory({ url: `${this.boardBaseUrl}/${getIdFromGraphQLId(board.id)}${param}` }); + if (!this.isApolloBoard) { + const param = getParameterByName('group_by') + ? `?group_by=${getParameterByName('group_by')}` + : ''; + updateHistory({ url: `${this.boardBaseUrl}/${getIdFromGraphQLId(board.id)}${param}` }); + } } catch { this.setError({ message: this.$options.i18n.saveErrorMessage }); } finally { diff --git a/app/assets/javascripts/boards/components/board_top_bar.vue b/app/assets/javascripts/boards/components/board_top_bar.vue index cf745d98541..7892eed6143 100644 --- a/app/assets/javascripts/boards/components/board_top_bar.vue +++ b/app/assets/javascripts/boards/components/board_top_bar.vue @@ -56,10 +56,28 @@ export default { return !this.isApolloBoard; }, update(data) { - return data.workspace.board; + const { board } = data.workspace; + return { + ...board, + labels: board.labels?.nodes, + }; }, }, }, + computed: { + hasScope() { + if (this.board.labels?.length > 0) { + return true; + } + let hasScope = false; + ['assignee', 'iterationCadence', 'iteration', 'milestone', 'weight'].forEach((attr) => { + if (this.board[attr] !== null && this.board[attr] !== undefined) { + hasScope = true; + } + }); + return hasScope; + }, + }, }; </script> @@ -75,16 +93,21 @@ export default { <new-board-button /> <issue-board-filtered-search v-if="isIssueBoard" + :board="board" + @setFilters="$emit('setFilters', $event)" + /> + <epic-board-filtered-search + v-else + :board="board" @setFilters="$emit('setFilters', $event)" /> - <epic-board-filtered-search v-else @setFilters="$emit('setFilters', $event)" /> </div> <div class="filter-dropdown-container gl-md-display-flex gl-flex-direction-column gl-md-flex-direction-row gl-align-items-flex-start" > <toggle-labels /> <toggle-epics-swimlanes v-if="swimlanesFeatureAvailable && isSignedIn" /> - <config-toggle /> + <config-toggle :board-has-scope="hasScope" /> <board-add-new-column-trigger v-if="canAdminList" /> <toggle-focus /> </div> diff --git a/app/assets/javascripts/boards/components/config_toggle.vue b/app/assets/javascripts/boards/components/config_toggle.vue index 7002fd44294..dd3b9472879 100644 --- a/app/assets/javascripts/boards/components/config_toggle.vue +++ b/app/assets/javascripts/boards/components/config_toggle.vue @@ -16,6 +16,13 @@ export default { }, mixins: [Tracking.mixin()], inject: ['canAdminList'], + props: { + boardHasScope: { + type: Boolean, + required: false, + default: false, + }, + }, computed: { ...mapGetters(['hasScope']), buttonText() { @@ -40,7 +47,7 @@ export default { v-gl-modal-directive="'board-config-modal'" v-gl-tooltip :title="tooltipTitle" - :class="{ 'dot-highlight': hasScope }" + :class="{ 'dot-highlight': hasScope || boardHasScope }" data-qa-selector="boards_config_button" @click.prevent="showPage" > diff --git a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue index 0e1a94ec740..cdcc7b8e5a6 100644 --- a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue @@ -46,6 +46,13 @@ export default { }, components: { BoardFilteredSearch }, inject: ['isSignedIn', 'releasesFetchPath', 'fullPath', 'isGroupBoard'], + props: { + board: { + type: Object, + required: false, + default: () => {}, + }, + }, computed: { tokensCE() { const { issue, incident } = this.$options.i18n; @@ -195,6 +202,7 @@ export default { <board-filtered-search data-testid="issue-board-filtered-search" :tokens="tokens" + :board="board" @setFilters="$emit('setFilters', $event)" /> </template> diff --git a/app/assets/stylesheets/_page_specific_files.scss b/app/assets/stylesheets/_page_specific_files.scss index fa5d2bf7972..1a998f89c68 100644 --- a/app/assets/stylesheets/_page_specific_files.scss +++ b/app/assets/stylesheets/_page_specific_files.scss @@ -7,7 +7,6 @@ @import './pages/issues'; @import './pages/labels'; @import './pages/login'; -@import './pages/ml_experiment_tracking'; @import './pages/merge_requests'; @import './pages/note_form'; @import './pages/notes'; diff --git a/app/assets/stylesheets/pages/ml_experiment_tracking.scss b/app/assets/stylesheets/page_bundles/ml_experiment_tracking.scss index 3c025b5d23f..d6aae61cb7e 100644 --- a/app/assets/stylesheets/pages/ml_experiment_tracking.scss +++ b/app/assets/stylesheets/page_bundles/ml_experiment_tracking.scss @@ -1,20 +1,5 @@ @import '../page_bundles/mixins_and_variables_and_functions'; -.ml-experiment-row { - .title { - margin-bottom: $gl-spacing-scale-1; - font-weight: $gl-font-weight-bold; - } - - .ml-experiment-info { - color: $gl-text-color-secondary; - } - - a { - color: $gl-text-color; - } -} - table.ml-candidate-table { table-layout: fixed; diff --git a/app/finders/ci/pipelines_finder.rb b/app/finders/ci/pipelines_finder.rb index a2d1805286d..e52fc510628 100644 --- a/app/finders/ci/pipelines_finder.rb +++ b/app/finders/ci/pipelines_finder.rb @@ -2,6 +2,8 @@ module Ci class PipelinesFinder + include UpdatedAtFilter + attr_reader :project, :pipelines, :params, :current_user ALLOWED_INDEXED_COLUMNS = %w[id status ref updated_at user_id].freeze @@ -146,13 +148,6 @@ module Ci end # rubocop: enable CodeReuse/ActiveRecord - def by_updated_at(items) - items = items.updated_before(params[:updated_before]) if params[:updated_before].present? - items = items.updated_after(params[:updated_after]) if params[:updated_after].present? - - items - end - def by_name(items) return items unless Feature.enabled?(:pipeline_name_search, project) && diff --git a/app/finders/deployments_finder.rb b/app/finders/deployments_finder.rb index 21869f6f31d..c5f8510ca16 100644 --- a/app/finders/deployments_finder.rb +++ b/app/finders/deployments_finder.rb @@ -14,6 +14,8 @@ # order_by: String (see ALLOWED_SORT_VALUES constant) # sort: String (asc | desc) class DeploymentsFinder + include UpdatedAtFilter + attr_reader :params # Warning: @@ -109,13 +111,6 @@ class DeploymentsFinder items.order(sort_params) # rubocop: disable CodeReuse/ActiveRecord end - def by_updated_at(items) - items = items.updated_before(params[:updated_before]) if params[:updated_before].present? - items = items.updated_after(params[:updated_after]) if params[:updated_after].present? - - items - end - def by_finished_at(items) items = items.finished_before(params[:finished_before]) if params[:finished_before].present? items = items.finished_after(params[:finished_after]) if params[:finished_after].present? diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 159836062cb..478a2ba622c 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -43,6 +43,7 @@ class IssuableFinder include FinderMethods include CreatedAtFilter include Gitlab::Utils::StrongMemoize + include UpdatedAtFilter requires_cross_project_access unless: -> { params.project? } @@ -289,13 +290,6 @@ class IssuableFinder end # rubocop: enable CodeReuse/ActiveRecord - def by_updated_at(items) - items = items.updated_after(params[:updated_after]) if params[:updated_after].present? - items = items.updated_before(params[:updated_before]) if params[:updated_before].present? - - items - end - def by_closed_at(items) items = items.closed_after(params[:closed_after]) if params[:closed_after].present? items = items.closed_before(params[:closed_before]) if params[:closed_before].present? diff --git a/app/views/projects/ml/candidates/show.html.haml b/app/views/projects/ml/candidates/show.html.haml index 77262243efb..aea74ecfb48 100644 --- a/app/views/projects/ml/candidates/show.html.haml +++ b/app/views/projects/ml/candidates/show.html.haml @@ -2,5 +2,6 @@ - add_to_breadcrumbs _("Experiments"), project_ml_experiments_path(@project) - add_to_breadcrumbs experiment.name, project_ml_experiment_path(@project, experiment.iid) - breadcrumb_title "Candidate #{@candidate.iid}" +- add_page_specific_style 'page_bundles/ml_experiment_tracking' #js-show-ml-candidate{ data: { view_model: show_candidate_view_model(@candidate) } } diff --git a/app/views/projects/ml/experiments/_experiment.html.haml b/app/views/projects/ml/experiments/_experiment.html.haml deleted file mode 100644 index 42823f47469..00000000000 --- a/app/views/projects/ml/experiments/_experiment.html.haml +++ /dev/null @@ -1,3 +0,0 @@ -%li.ml-experiment-row.py-3 - = link_to project_ml_experiment_path(@project, experiment.iid), class: "title" do - = experiment.name diff --git a/app/views/projects/ml/experiments/_experiment_list.html.haml b/app/views/projects/ml/experiments/_experiment_list.html.haml deleted file mode 100644 index a25e814b2b5..00000000000 --- a/app/views/projects/ml/experiments/_experiment_list.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -- if experiments.blank? - .nothing-here-block= s_('MlExperimentsEmptyState|No Experiments to Show') -- else - .ml-experiments-list-holder - %ul.content-list - = render partial: 'experiment', collection: experiments, as: :experiment - = paginate_collection @experiments diff --git a/app/views/projects/ml/experiments/show.html.haml b/app/views/projects/ml/experiments/show.html.haml index 4433d1fafe9..52145eb0964 100644 --- a/app/views/projects/ml/experiments/show.html.haml +++ b/app/views/projects/ml/experiments/show.html.haml @@ -1,6 +1,8 @@ - add_to_breadcrumbs _("Experiments"), project_ml_experiments_path(@project) - breadcrumb_title @experiment.name - page_title @experiment.name +- add_page_specific_style 'page_bundles/ml_experiment_tracking' + - items = candidates_table_items(@candidates) - metrics = unique_logged_names(@candidates, &:latest_metrics) - params = unique_logged_names(@candidates, &:params) |