From 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 17 Dec 2020 11:59:07 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-7-stable-ee --- app/assets/javascripts/boards/boards_util.js | 77 +++++-- .../boards/components/board_assignee_dropdown.vue | 106 ++++++---- .../javascripts/boards/components/board_column.vue | 17 +- .../boards/components/board_column_new.vue | 30 +-- .../components/board_configuration_options.vue | 2 +- .../boards/components/board_content.vue | 66 ++++-- .../javascripts/boards/components/board_form.vue | 228 +++++++++++++-------- .../javascripts/boards/components/board_list.vue | 2 - .../boards/components/board_list_header.vue | 14 +- .../boards/components/board_list_header_new.vue | 109 +++++----- .../boards/components/board_list_new.vue | 145 +++++++++---- .../boards/components/board_promotion_state.js | 1 - .../boards/components/board_settings_sidebar.vue | 2 +- .../boards/components/boards_selector.vue | 83 ++++---- .../boards/components/issue_card_inner.vue | 25 ++- .../boards/components/new_list_dropdown.js | 1 + .../boards/components/project_select.vue | 3 +- .../components/sidebar/board_editable_item.vue | 15 +- .../components/sidebar/board_sidebar_due_date.vue | 2 +- .../sidebar/board_sidebar_labels_select.vue | 3 +- .../sidebar/board_sidebar_milestone_select.vue | 161 +++++++++++++++ app/assets/javascripts/boards/constants.js | 6 - app/assets/javascripts/boards/ee_functions.js | 2 - .../javascripts/boards/filtered_search_boards.js | 25 ++- .../boards/graphql/board.fragment.graphql | 4 + .../boards/graphql/board.mutation.graphql | 11 + .../boards/graphql/board_labels.query.graphql | 23 +++ .../boards/graphql/board_list.fragment.graphql | 5 + .../graphql/board_list_create.mutation.graphql | 24 +++ .../graphql/board_list_destroy.mutation.graphql | 5 + .../graphql/board_list_shared.fragment.graphql | 16 ++ .../graphql/board_list_update.mutation.graphql | 10 + .../boards/graphql/board_lists.query.graphql | 28 +++ .../boards/graphql/group_boards.query.graphql | 13 ++ .../boards/graphql/group_milestones.query.graphql | 17 ++ .../boards/graphql/issue.fragment.graphql | 31 +++ .../boards/graphql/issue_create.mutation.graphql | 10 + .../graphql/issue_move_list.mutation.graphql | 28 +++ .../graphql/issue_set_due_date.mutation.graphql | 8 + .../graphql/issue_set_labels.mutation.graphql | 15 ++ .../graphql/issue_set_milestone.mutation.graphql | 12 ++ .../issue_set_subscription.mutation.graphql | 8 + .../boards/graphql/lists_issues.query.graphql | 55 +++++ .../issue_set_subscription.mutation.graphql | 8 - .../boards/graphql/project_boards.query.graphql | 13 ++ .../boards/graphql/users_search.query.graphql | 11 + app/assets/javascripts/boards/index.js | 49 ++--- .../boards/mount_multiple_boards_switcher.js | 5 +- .../boards/queries/board.fragment.graphql | 4 - .../boards/queries/board.mutation.graphql | 11 - .../boards/queries/board_labels.query.graphql | 23 --- .../boards/queries/board_list.fragment.graphql | 5 - .../queries/board_list_create.mutation.graphql | 24 --- .../queries/board_list_destroy.mutation.graphql | 5 - .../queries/board_list_shared.fragment.graphql | 16 -- .../queries/board_list_update.mutation.graphql | 10 - .../boards/queries/board_lists.query.graphql | 28 --- .../boards/queries/group_boards.query.graphql | 13 -- .../boards/queries/issue.fragment.graphql | 27 --- .../boards/queries/issue_create.mutation.graphql | 10 - .../queries/issue_move_list.mutation.graphql | 28 --- .../queries/issue_set_due_date.mutation.graphql | 8 - .../queries/issue_set_labels.mutation.graphql | 15 -- .../boards/queries/lists_issues.query.graphql | 55 ----- .../boards/queries/project_boards.query.graphql | 13 -- .../boards/queries/users_search.query.graphql | 11 - app/assets/javascripts/boards/stores/actions.js | 126 +++++++----- .../javascripts/boards/stores/boards_store.js | 82 +------- app/assets/javascripts/boards/stores/getters.js | 9 +- .../javascripts/boards/stores/mutation_types.js | 1 + app/assets/javascripts/boards/stores/mutations.js | 12 +- app/assets/javascripts/boards/stores/state.js | 3 +- 72 files changed, 1213 insertions(+), 860 deletions(-) delete mode 100644 app/assets/javascripts/boards/components/board_promotion_state.js create mode 100644 app/assets/javascripts/boards/components/sidebar/board_sidebar_milestone_select.vue create mode 100644 app/assets/javascripts/boards/graphql/board.fragment.graphql create mode 100644 app/assets/javascripts/boards/graphql/board.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_labels.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_list.fragment.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_list_create.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_list_destroy.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_list_shared.fragment.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_list_update.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_lists.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/group_boards.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/group_milestones.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue.fragment.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_create.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_move_list.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_set_due_date.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_set_labels.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_set_milestone.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_set_subscription.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/lists_issues.query.graphql delete mode 100644 app/assets/javascripts/boards/graphql/mutations/issue_set_subscription.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/project_boards.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/users_search.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/board.fragment.graphql delete mode 100644 app/assets/javascripts/boards/queries/board.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_labels.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_list.fragment.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_list_create.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_list_destroy.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_list_shared.fragment.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_list_update.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/board_lists.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/group_boards.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/issue.fragment.graphql delete mode 100644 app/assets/javascripts/boards/queries/issue_create.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/issue_move_list.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/issue_set_due_date.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/issue_set_labels.mutation.graphql delete mode 100644 app/assets/javascripts/boards/queries/lists_issues.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/project_boards.query.graphql delete mode 100644 app/assets/javascripts/boards/queries/users_search.query.graphql (limited to 'app/assets/javascripts/boards') diff --git a/app/assets/javascripts/boards/boards_util.js b/app/assets/javascripts/boards/boards_util.js index 6b7b0c2e28d..e5ff41dab74 100644 --- a/app/assets/javascripts/boards/boards_util.js +++ b/app/assets/javascripts/boards/boards_util.js @@ -1,31 +1,39 @@ import { sortBy } from 'lodash'; -import ListIssue from 'ee_else_ce/boards/models/issue'; +import axios from '~/lib/utils/axios_utils'; import { ListType } from './constants'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; -import boardsStore from '~/boards/stores/boards_store'; export function getMilestone() { return null; } +export function updateListPosition(listObj) { + const { listType } = listObj; + let { position } = listObj; + if (listType === ListType.closed) { + position = Infinity; + } else if (listType === ListType.backlog) { + position = -Infinity; + } + + return { ...listObj, position }; +} + export function formatBoardLists(lists) { - const formattedLists = lists.nodes.map(list => - boardsStore.updateListPosition({ ...list, doNotFetchIssues: true }), - ); - return formattedLists.reduce((map, list) => { + return lists.nodes.reduce((map, list) => { return { ...map, - [list.id]: list, + [list.id]: updateListPosition(list), }; }, {}); } export function formatIssue(issue) { - return new ListIssue({ + return { ...issue, labels: issue.labels?.nodes || [], assignees: issue.assignees?.nodes || [], - }); + }; } export function formatListIssues(listIssues) { @@ -44,12 +52,12 @@ export function formatListIssues(listIssues) { [list.id]: sortedIssues.map(i => { const id = getIdFromGraphQLId(i.id); - const listIssue = new ListIssue({ + const listIssue = { ...i, id, labels: i.labels?.nodes || [], assignees: i.assignees?.nodes || [], - }); + }; issues[id] = listIssue; @@ -83,21 +91,48 @@ export function fullLabelId(label) { } export function moveIssueListHelper(issue, fromList, toList) { - if (toList.type === ListType.label) { - issue.addLabel(toList.label); + const updatedIssue = issue; + if ( + toList.listType === ListType.label && + !updatedIssue.labels.find(label => label.id === toList.label.id) + ) { + updatedIssue.labels.push(toList.label); } - if (fromList && fromList.type === ListType.label) { - issue.removeLabel(fromList.label); + if (fromList?.label && fromList.listType === ListType.label) { + updatedIssue.labels = updatedIssue.labels.filter(label => fromList.label.id !== label.id); } - if (toList.type === ListType.assignee) { - issue.addAssignee(toList.assignee); + if ( + toList.listType === ListType.assignee && + !updatedIssue.assignees.find(assignee => assignee.id === toList.assignee.id) + ) { + updatedIssue.assignees.push(toList.assignee); + } + if (fromList?.assignee && fromList.listType === ListType.assignee) { + updatedIssue.assignees = updatedIssue.assignees.filter( + assignee => assignee.id !== fromList.assignee.id, + ); } - if (fromList && fromList.type === ListType.assignee) { - issue.removeAssignee(fromList.assignee); + + return updatedIssue; +} + +export function getBoardsPath(endpoint, board) { + const path = `${endpoint}${board.id ? `/${board.id}` : ''}.json`; + + if (board.id) { + return axios.put(path, { board }); } + return axios.post(path, { board }); +} + +export function isListDraggable(list) { + return list.listType !== ListType.backlog && list.listType !== ListType.closed; +} - return issue; +// EE-specific feature. Find the implementation in the `ee/`-folder +export function transformBoardConfig() { + return ''; } export default { @@ -106,4 +141,6 @@ export default { formatListIssues, fullBoardId, fullLabelId, + getBoardsPath, + isListDraggable, }; diff --git a/app/assets/javascripts/boards/components/board_assignee_dropdown.vue b/app/assets/javascripts/boards/components/board_assignee_dropdown.vue index c81f171af2b..1469efae5a6 100644 --- a/app/assets/javascripts/boards/components/board_assignee_dropdown.vue +++ b/app/assets/javascripts/boards/components/board_assignee_dropdown.vue @@ -1,18 +1,20 @@ diff --git a/app/assets/javascripts/boards/components/board_column.vue b/app/assets/javascripts/boards/components/board_column.vue index cb93340bcf8..753e6941c43 100644 --- a/app/assets/javascripts/boards/components/board_column.vue +++ b/app/assets/javascripts/boards/components/board_column.vue @@ -2,15 +2,12 @@ // This component is being replaced in favor of './board_column_new.vue' for GraphQL boards import Sortable from 'sortablejs'; import BoardListHeader from 'ee_else_ce/boards/components/board_list_header.vue'; -import EmptyComponent from '~/vue_shared/components/empty_component'; import BoardList from './board_list.vue'; import boardsStore from '../stores/boards_store'; import { getBoardSortableDefaultOptions, sortableEnd } from '../mixins/sortable_default_options'; -import { ListType } from '../constants'; export default { components: { - BoardPromotionState: EmptyComponent, BoardListHeader, BoardList, }, @@ -42,9 +39,6 @@ export default { }; }, computed: { - showBoardListAndBoardInfo() { - return this.list.type !== ListType.promotion; - }, listIssues() { return this.list.issues; }, @@ -105,16 +99,7 @@ export default { class="board-inner gl-display-flex gl-flex-direction-column gl-relative gl-h-full gl-rounded-base" > - - - - + diff --git a/app/assets/javascripts/boards/components/board_column_new.vue b/app/assets/javascripts/boards/components/board_column_new.vue index 8a59355eb83..7839f45c48b 100644 --- a/app/assets/javascripts/boards/components/board_column_new.vue +++ b/app/assets/javascripts/boards/components/board_column_new.vue @@ -1,13 +1,11 @@ @@ -66,13 +58,12 @@ export default { diff --git a/app/assets/javascripts/boards/components/board_configuration_options.vue b/app/assets/javascripts/boards/components/board_configuration_options.vue index 754b00b54e0..99d1e4a2611 100644 --- a/app/assets/javascripts/boards/components/board_configuration_options.vue +++ b/app/assets/javascripts/boards/components/board_configuration_options.vue @@ -42,7 +42,7 @@ export default {