feat: remember last board, list for new card dialog

Signed-off-by: Luka Trovic <luka@nextcloud.com>
This commit is contained in:
Luka Trovic
2023-08-22 15:27:21 +02:00
parent 56a00258d4
commit e03e57e5ac
3 changed files with 34 additions and 7 deletions

View File

@@ -149,11 +149,8 @@ describe('Card', function() {
cy.get('.reference-picker-modal--content .reference-picker').should('be.visible') cy.get('.reference-picker-modal--content .reference-picker').should('be.visible')
cy.get('.reference-picker-modal--content .reference-picker').contains('Create a new card') cy.get('.reference-picker-modal--content .reference-picker').contains('Create a new card')
cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle) cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle)
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').click() cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').contains(boardData.title)
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board li:contains("' + boardData.title + '")').should('be.visible').click() cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
cy.wait('@getBoard', { timeout: 7000 })
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').click()
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list li').eq(0).should('be.visible').click()
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click() cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
cy.wait('@save', { timeout: 7000 }) cy.wait('@save', { timeout: 7000 })
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible') cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible')

View File

@@ -129,6 +129,8 @@ export default {
} }
this.copiedCard = JSON.parse(JSON.stringify(this.card)) this.copiedCard = JSON.parse(JSON.stringify(this.card))
localStorage.setItem('deck.selectedBoardId', this.currentBoard.id)
localStorage.setItem('deck.selectedStackId', this.card.stackId)
}, },
async updateCardDue(val) { async updateCardDue(val) {

View File

@@ -21,7 +21,7 @@
:disabled="loading" :disabled="loading"
label="title" label="title"
class="selector-wrapper--selector multiselect-board" class="selector-wrapper--selector multiselect-board"
@select="fetchBoardDetails"> @select="onSelectBoard">
<template slot="singleLabel" slot-scope="props"> <template slot="singleLabel" slot-scope="props">
<span> <span>
<span :style="{ 'backgroundColor': '#' + props.option.color }" class="board-bullet" /> <span :style="{ 'backgroundColor': '#' + props.option.color }" class="board-bullet" />
@@ -47,7 +47,8 @@
:max-height="100" :max-height="100"
:disabled="loading || !selectedBoard" :disabled="loading || !selectedBoard"
class="selector-wrapper--selector multiselect-list" class="selector-wrapper--selector multiselect-list"
label="title" /> label="title"
@select="onSelectStack" />
</div> </div>
</div> </div>
@@ -220,6 +221,7 @@ export default {
return board?.permissions?.PERMISSION_EDIT && !board?.archived && !board?.deletedAt return board?.permissions?.PERMISSION_EDIT && !board?.archived && !board?.deletedAt
}) })
this.loading = false this.loading = false
this.preSelectBoard()
}) })
}, },
async fetchBoardDetails(board) { async fetchBoardDetails(board) {
@@ -230,6 +232,7 @@ export default {
this.labels = response.data.labels this.labels = response.data.labels
this.boardUsers = response.data.users this.boardUsers = response.data.users
this.boardAcl = response.data.acl this.boardAcl = response.data.acl
this.preSelectStack()
} catch (err) { } catch (err) {
return err return err
} }
@@ -295,6 +298,31 @@ export default {
openNewCard() { openNewCard() {
window.location = generateUrl('/apps/deck') + `#/board/${this.selectedBoard.id}/card/${this.newCard.id}` window.location = generateUrl('/apps/deck') + `#/board/${this.selectedBoard.id}/card/${this.newCard.id}`
}, },
preSelectBoard() {
const selectedBoardId = Number(localStorage.getItem('deck.selectedBoardId'))
const preSelectedBoard = this.boards.find(item => item.id === selectedBoardId)
if (preSelectedBoard) {
this.selectedBoard = preSelectedBoard
this.onSelectBoard(preSelectedBoard)
}
},
preSelectStack() {
const selectedStackId = Number(localStorage.getItem('deck.selectedStackId'))
const preSelectedStack = this.stacksFromBoard.find(item => item.id === selectedStackId)
if (preSelectedStack) {
this.selectedStack = preSelectedStack
}
},
async onSelectBoard(board) {
localStorage.setItem('deck.selectedBoardId', board.id)
this.selectedStack = ''
await this.fetchBoardDetails(board)
},
onSelectStack(stack) {
localStorage.setItem('deck.selectedStackId', stack.id)
},
}, },
} }