diff --git a/.gitlab/merge_request_templates/New Static Analysis Check.md b/.gitlab/merge_request_templates/New Static Analysis Check.md index 6ad56cd5cd0..9cf21fa49e8 100644 --- a/.gitlab/merge_request_templates/New Static Analysis Check.md +++ b/.gitlab/merge_request_templates/New Static Analysis Check.md @@ -1,6 +1,6 @@ ## Description of the proposal diff --git a/app/assets/javascripts/boards/components/board_app.vue b/app/assets/javascripts/boards/components/board_app.vue index d41fc1e9300..192b64c16d6 100644 --- a/app/assets/javascripts/boards/components/board_app.vue +++ b/app/assets/javascripts/boards/components/board_app.vue @@ -11,10 +11,11 @@ export default { BoardSettingsSidebar, BoardTopBar, }, - inject: ['initialBoardId'], + inject: ['initialBoardId', 'initialFilterParams'], data() { return { boardId: this.initialBoardId, + filterParams: { ...this.initialFilterParams }, }; }, computed: { @@ -30,14 +31,19 @@ export default { switchBoard(id) { this.boardId = id; }, + setFilters(filters) { + const filterParams = { ...filters }; + if (filterParams.groupBy) delete filterParams.groupBy; + this.filterParams = filterParams; + }, }, }; diff --git a/app/assets/javascripts/boards/components/board_column.vue b/app/assets/javascripts/boards/components/board_column.vue index 54af5d35005..83ba538168a 100644 --- a/app/assets/javascripts/boards/components/board_column.vue +++ b/app/assets/javascripts/boards/components/board_column.vue @@ -20,6 +20,10 @@ export default { type: String, required: true, }, + filters: { + type: Object, + required: true, + }, }, computed: { ...mapState(['filterParams', 'highlightedLists']), @@ -33,6 +37,9 @@ export default { isListDraggable() { return isListDraggable(this.list); }, + filtersToUse() { + return this.isApolloBoard ? this.filters : this.filterParams; + }, }, watch: { filterParams: { @@ -83,13 +90,13 @@ export default { class="board-inner gl-display-flex gl-flex-direction-column gl-relative gl-h-full gl-rounded-base gl-bg-gray-50" :class="{ 'board-column-highlighted': highlighted }" > - + diff --git a/app/assets/javascripts/boards/components/board_content.vue b/app/assets/javascripts/boards/components/board_content.vue index 8a37719eae8..7baa821402a 100644 --- a/app/assets/javascripts/boards/components/board_content.vue +++ b/app/assets/javascripts/boards/components/board_content.vue @@ -44,6 +44,10 @@ export default { type: String, required: true, }, + filterParams: { + type: Object, + required: true, + }, }, data() { return { @@ -92,7 +96,7 @@ export default { }), fullPath: this.fullPath, boardId: this.boardId, - filterParams: this.filterParams, + filters: this.filterParams, }; }, boardListsToUse() { @@ -176,6 +180,7 @@ export default { ref="board" :board-id="boardId" :list="list" + :filters="filterParams" :data-draggable-item-type="$options.draggableItemTypes.list" :class="{ 'gl-xs-display-none!': addColumnFormVisible }" /> @@ -190,6 +195,7 @@ export default { ref="swimlanes" :lists="boardListsToUse" :can-admin-list="canAdminList" + :filters="filterParams" :style="{ height: boardHeight }" /> diff --git a/app/assets/javascripts/boards/components/board_filtered_search.vue b/app/assets/javascripts/boards/components/board_filtered_search.vue index 1bc5d910561..24c4917bf7e 100644 --- a/app/assets/javascripts/boards/components/board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/board_filtered_search.vue @@ -1,7 +1,7 @@ diff --git a/app/assets/javascripts/boards/constants.js b/app/assets/javascripts/boards/constants.js index 712e3e1ac4a..7b7d2493ca5 100644 --- a/app/assets/javascripts/boards/constants.js +++ b/app/assets/javascripts/boards/constants.js @@ -1,5 +1,5 @@ import boardListsQuery from 'ee_else_ce/boards/graphql/board_lists.query.graphql'; -import { TYPE_ISSUE } from '~/issues/constants'; +import { TYPE_EPIC, TYPE_ISSUE } from '~/issues/constants'; import { s__, __ } from '~/locale'; import updateEpicSubscriptionMutation from '~/sidebar/queries/update_epic_subscription.mutation.graphql'; import updateEpicTitleMutation from '~/sidebar/queries/update_epic_title.mutation.graphql'; @@ -12,14 +12,6 @@ import groupBoardQuery from './graphql/group_board.query.graphql'; import projectBoardQuery from './graphql/project_board.query.graphql'; import listIssuesQuery from './graphql/lists_issues.query.graphql'; -/* eslint-disable-next-line @gitlab/require-i18n-strings */ -export const AssigneeIdParamValues = ['Any', 'None']; - -export const issuableTypes = { - issue: 'issue', - epic: 'epic', -}; - export const BoardType = { project: 'project', group: 'group', @@ -94,7 +86,7 @@ export const titleQueries = { [TYPE_ISSUE]: { mutation: issueSetTitleMutation, }, - [issuableTypes.epic]: { + [TYPE_EPIC]: { mutation: updateEpicTitleMutation, }, }; @@ -103,7 +95,7 @@ export const subscriptionQueries = { [TYPE_ISSUE]: { mutation: issueSetSubscriptionMutation, }, - [issuableTypes.epic]: { + [TYPE_EPIC]: { mutation: updateEpicSubscriptionMutation, }, }; diff --git a/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql b/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql index 9e6c26063e9..14811b435e1 100644 --- a/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql +++ b/app/assets/javascripts/boards/graphql/group_board_milestones.query.graphql @@ -1,5 +1,5 @@ query GroupBoardMilestones($fullPath: ID!, $searchTerm: String, $state: MilestoneStateEnum) { - group(fullPath: $fullPath) { + workspace: group(fullPath: $fullPath) { id milestones( includeAncestors: true diff --git a/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql b/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql index 02aa08f90ef..9af92a6ff2d 100644 --- a/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql +++ b/app/assets/javascripts/boards/graphql/project_board_milestones.query.graphql @@ -1,5 +1,5 @@ query ProjectBoardMilestones($fullPath: ID!, $searchTerm: String, $state: MilestoneStateEnum) { - project(fullPath: $fullPath) { + workspace: project(fullPath: $fullPath) { id milestones( searchTitle: $searchTerm diff --git a/app/assets/javascripts/boards/issue_board_filters.js b/app/assets/javascripts/boards/issue_board_filters.js index 7e9b68778d5..27efb3f775c 100644 --- a/app/assets/javascripts/boards/issue_board_filters.js +++ b/app/assets/javascripts/boards/issue_board_filters.js @@ -1,5 +1,7 @@ import groupBoardMembers from '~/boards/graphql/group_board_members.query.graphql'; import projectBoardMembers from '~/boards/graphql/project_board_members.query.graphql'; +import groupBoardMilestonesQuery from './graphql/group_board_milestones.query.graphql'; +import projectBoardMilestonesQuery from './graphql/project_board_milestones.query.graphql'; import boardLabels from './graphql/board_labels.query.graphql'; export default function issueBoardFilters(apollo, fullPath, isGroupBoard) { @@ -37,8 +39,27 @@ export default function issueBoardFilters(apollo, fullPath, isGroupBoard) { .then(transformLabels); }; + const fetchMilestones = (searchTerm) => { + const variables = { + fullPath, + searchTerm, + }; + + const query = isGroupBoard ? groupBoardMilestonesQuery : projectBoardMilestonesQuery; + + return apollo + .query({ + query, + variables, + }) + .then(({ data }) => { + return data.workspace?.milestones.nodes; + }); + }; + return { fetchLabels, fetchUsers, + fetchMilestones, }; } diff --git a/app/assets/javascripts/boards/stores/actions.js b/app/assets/javascripts/boards/stores/actions.js index 1b4e6334723..c210a419771 100644 --- a/app/assets/javascripts/boards/stores/actions.js +++ b/app/assets/javascripts/boards/stores/actions.js @@ -286,8 +286,8 @@ export default { variables, }) .then(({ data }) => { - const errors = data[boardType]?.errors; - const milestones = data[boardType]?.milestones.nodes; + const errors = data.workspace?.errors; + const milestones = data.workspace?.milestones.nodes; if (errors?.[0]) { throw new Error(errors[0]); diff --git a/app/assets/javascripts/boards/stores/mutations.js b/app/assets/javascripts/boards/stores/mutations.js index fef5862f319..91669bf3562 100644 --- a/app/assets/javascripts/boards/stores/mutations.js +++ b/app/assets/javascripts/boards/stores/mutations.js @@ -1,14 +1,14 @@ import { cloneDeep, pull, union } from 'lodash'; import Vue from 'vue'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; +import { TYPE_EPIC } from '~/issues/constants'; import { s__, __ } from '~/locale'; import { formatIssue } from '../boards_util'; -import { issuableTypes } from '../constants'; import * as mutationTypes from './mutation_types'; const updateListItemsCount = ({ state, listId, value }) => { const list = state.boardLists[listId]; - if (state.issuableType === issuableTypes.epic) { + if (state.issuableType === TYPE_EPIC) { Vue.set(state.boardLists, listId, { ...list, epicsCount: list.epicsCount + value }); } else { Vue.set(state.boardLists, listId, { ...list }); diff --git a/app/assets/javascripts/issues/show/components/edit_actions.vue b/app/assets/javascripts/issues/show/components/edit_actions.vue index 120034b8d67..608e9aec1d7 100644 --- a/app/assets/javascripts/issues/show/components/edit_actions.vue +++ b/app/assets/javascripts/issues/show/components/edit_actions.vue @@ -1,17 +1,10 @@