diff options
Diffstat (limited to 'app/assets/javascripts/boards/index.js')
-rw-r--r-- | app/assets/javascripts/boards/index.js | 82 |
1 files changed, 35 insertions, 47 deletions
diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 971edd71eec..1173c6d0578 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import Vue from 'vue'; -import { mapActions } from 'vuex'; +import { mapActions, mapState } from 'vuex'; import 'ee_else_ce/boards/models/issue'; import 'ee_else_ce/boards/models/list'; @@ -24,7 +24,6 @@ import { deprecatedCreateFlash as Flash } from '~/flash'; import { __ } from '~/locale'; import './models/label'; import './models/assignee'; -import { BoardType } from './constants'; import toggleFocusMode from '~/boards/toggle_focus'; import FilteredSearchBoards from '~/boards/filtered_search_boards'; @@ -42,11 +41,9 @@ import { NavigationType, convertObjectPropsToCamelCase, parseBoolean, + urlParamsToObject, } from '~/lib/utils/common_utils'; -import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher'; -import projectBoardQuery from './queries/project_board.query.graphql'; -import groupQuery from './queries/group_board.query.graphql'; Vue.use(VueApollo); @@ -85,6 +82,11 @@ export default () => { BoardAddIssuesModal, BoardSettingsSidebar: () => import('~/boards/components/board_settings_sidebar.vue'), }, + provide: { + boardId: $boardApp.dataset.boardId, + groupId: Number($boardApp.dataset.groupId) || null, + rootPath: $boardApp.dataset.rootPath, + }, store, apolloProvider, data() { @@ -94,16 +96,14 @@ export default () => { boardsEndpoint: $boardApp.dataset.boardsEndpoint, recentBoardsEndpoint: $boardApp.dataset.recentBoardsEndpoint, listsEndpoint: $boardApp.dataset.listsEndpoint, - boardId: $boardApp.dataset.boardId, disabled: parseBoolean($boardApp.dataset.disabled), - issueLinkBase: $boardApp.dataset.issueLinkBase, - rootPath: $boardApp.dataset.rootPath, bulkUpdatePath: $boardApp.dataset.bulkUpdatePath, detailIssue: boardsStore.detail, parent: $boardApp.dataset.parent, }; }, computed: { + ...mapState(['isShowingEpicsSwimlanes']), detailIssueVisible() { return Object.keys(this.detailIssue.issue).length; }, @@ -114,10 +114,15 @@ export default () => { recentBoardsEndpoint: this.recentBoardsEndpoint, listsEndpoint: this.listsEndpoint, bulkUpdatePath: this.bulkUpdatePath, - boardId: this.boardId, + boardId: $boardApp.dataset.boardId, fullPath: $boardApp.dataset.fullPath, }; - this.setInitialBoardData({ ...endpoints, boardType: this.parent }); + this.setInitialBoardData({ + ...endpoints, + boardType: this.parent, + disabled: this.disabled, + showPromotion: parseBoolean($boardApp.getAttribute('data-show-promotion')), + }); boardsStore.setEndpoints(endpoints); boardsStore.rootPath = this.boardsEndpoint; @@ -125,55 +130,24 @@ export default () => { eventHub.$on('newDetailIssue', this.updateDetailIssue); eventHub.$on('clearDetailIssue', this.clearDetailIssue); sidebarEventHub.$on('toggleSubscription', this.toggleSubscription); + eventHub.$on('performSearch', this.performSearch); }, beforeDestroy() { eventHub.$off('updateTokens', this.updateTokens); eventHub.$off('newDetailIssue', this.updateDetailIssue); eventHub.$off('clearDetailIssue', this.clearDetailIssue); sidebarEventHub.$off('toggleSubscription', this.toggleSubscription); + eventHub.$off('performSearch', this.performSearch); }, mounted() { this.filterManager = new FilteredSearchBoards(boardsStore.filter, true, boardsStore.cantEdit); this.filterManager.setup(); - boardsStore.disabled = this.disabled; - - if (gon.features.graphqlBoardLists) { - this.$apollo.addSmartQuery('lists', { - query() { - return this.parent === BoardType.group ? groupQuery : projectBoardQuery; - }, - variables() { - return { - fullPath: this.state.endpoints.fullPath, - boardId: `gid://gitlab/Board/${this.boardId}`, - }; - }, - update(data) { - return this.getNodes(data); - }, - result({ data, error }) { - if (error) { - throw error; - } - - const lists = this.getNodes(data); + this.performSearch(); - lists.forEach(list => - boardsStore.addList({ - ...list, - id: getIdFromGraphQLId(list.id), - }), - ); + boardsStore.disabled = this.disabled; - boardsStore.addBlankState(); - setPromotionState(boardsStore); - }, - error() { - Flash(__('An error occurred while fetching the board lists. Please try again.')); - }, - }); - } else { + if (!gon.features.graphqlBoardLists) { boardsStore .all() .then(res => res.data) @@ -189,10 +163,22 @@ export default () => { } }, methods: { - ...mapActions(['setInitialBoardData']), + ...mapActions([ + 'setInitialBoardData', + 'setFilters', + 'fetchEpicsSwimlanes', + 'fetchIssuesForAllLists', + ]), updateTokens() { this.filterManager.updateTokens(); }, + performSearch() { + this.setFilters(convertObjectPropsToCamelCase(urlParamsToObject(window.location.search))); + if (gon.features.boardsWithSwimlanes && this.isShowingEpicsSwimlanes) { + this.fetchEpicsSwimlanes(false); + this.fetchIssuesForAllLists(); + } + }, updateDetailIssue(newIssue, multiSelect = false) { const { sidebarInfoEndpoint } = newIssue; if (sidebarInfoEndpoint && newIssue.subscribed === undefined) { @@ -354,6 +340,8 @@ export default () => { class="btn btn-success gl-ml-3" type="button" data-placement="bottom" + data-track-event="click_button" + data-track-label="board_add_issues" ref="addIssuesButton" :class="{ 'disabled': disabled }" :title="tooltipTitle" |