diff --git a/src/components/Controls.vue b/src/components/Controls.vue index ef1976d64..6ea550ed9 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -40,9 +40,11 @@
- - +
@@ -68,6 +70,12 @@ export default { default: null } }, + data() { + return { + newStackTitle: '', + stack: '' + } + }, computed: { ...mapState({ compactMode: state => state.compactMode @@ -82,6 +90,12 @@ export default { }, toggleCompactMode() { this.$store.dispatch('toggleCompactMode') + }, + clickAddNewStack() { + this.stack = { title: this.newStackTitle } + this.$store.dispatch('createStack', this.stack) + this.newStackTitle = '' + this.stack = null } } } diff --git a/src/components/board/Board.vue b/src/components/board/Board.vue index fe01fec5f..c9fdf3c4d 100644 --- a/src/components/board/Board.vue +++ b/src/components/board/Board.vue @@ -26,7 +26,10 @@
-

{{ stack.title }}

+

{{ stack.title }} +

@@ -103,7 +106,6 @@ export default { this.$store.dispatch('setCurrentBoard', board) this.$store.dispatch('loadStacks', board) this.loading = false - console.log(board) this.$store.state.labels = board.labels }) }, @@ -125,6 +127,9 @@ export default { order: this.stacksByBoard().length } this.$store.dispatch('createStack', newStack) + }, + deleteStack(stack) { + this.$store.dispatch('deleteStack', stack) } } } diff --git a/src/components/board/DeletedTabSidebard.vue b/src/components/board/DeletedTabSidebard.vue index eb4076b14..8f9e84dad 100644 --- a/src/components/board/DeletedTabSidebard.vue +++ b/src/components/board/DeletedTabSidebard.vue @@ -1,6 +1,26 @@ @@ -24,3 +44,21 @@ export default { } + + diff --git a/src/components/board/Stack.vue b/src/components/board/Stack.vue new file mode 100644 index 000000000..c9fdf3c4d --- /dev/null +++ b/src/components/board/Stack.vue @@ -0,0 +1,167 @@ + + + + + + + diff --git a/src/components/board/TagsTabSidebard.vue b/src/components/board/TagsTabSidebard.vue index 6b79db502..55052e6c5 100644 --- a/src/components/board/TagsTabSidebard.vue +++ b/src/components/board/TagsTabSidebard.vue @@ -117,7 +117,7 @@ export default { this.addLabel = true }, clickAddLabel() { - this.$store.dispatch('addLabelToCurrentBoard', this.addLabelObj) + this.$store.dispatch('createStack', this.addLabelObj) this.addLabel = false this.addLabelObj = null } diff --git a/src/components/cards/CardItem.vue b/src/components/cards/CardItem.vue index d9bc48f63..439c00477 100644 --- a/src/components/cards/CardItem.vue +++ b/src/components/cards/CardItem.vue @@ -28,7 +28,7 @@
- +
@@ -121,6 +121,10 @@ export default { }, startEditing() { this.editing = true + }, + clickTitleEditSave() { + + this.editing = false } } } diff --git a/src/services/StackApi.js b/src/services/StackApi.js index 2a6fe4e1e..5085234fe 100644 --- a/src/services/StackApi.js +++ b/src/services/StackApi.js @@ -78,4 +78,34 @@ export class StackApi { }) } + deleteStack(stackId) { + return axios.delete(this.url(`/stacks/${stackId}`)) + .then( + (response) => { + return Promise.resolve(response.data) + }, + (err) => { + return Promise.reject(err) + } + ) + .catch((err) => { + return Promise.reject(err) + }) + } + + updateStack(stack) { + return axios.put(this.url(`/stacks/${stack.id}`), { stack }) + .then( + (response) => { + return Promise.resolve(response.data) + }, + (err) => { + return Promise.reject(err) + } + ) + .catch((err) => { + return Promise.reject(err) + }) + } + } diff --git a/src/store/main.js b/src/store/main.js index 8b31c5ab6..9ca218366 100644 --- a/src/store/main.js +++ b/src/store/main.js @@ -169,10 +169,8 @@ export default new Vuex.Store({ }, // acl mutators - addAclToCurrentBoard(state, acl) { - console.log(state.currentBoard) - let id = acl.participant.uid - state.currentBoard.acl[id] = acl + addAclToCurrentBoard(state, createdAcl) { + state.currentBoard.acl[createdAcl.id] = createdAcl console.log(state.currentBoard) }, updateAclFromCurrentBoard(state, acl) { @@ -293,11 +291,11 @@ export default new Vuex.Store({ }, // acl actions - addAclToCurrentBoard({ commit }, acl) { - acl.boardId = this.state.currentBoard.id - apiClient.addAcl(acl) - .then((acl) => { - commit('addAclToCurrentBoard', acl) + addAclToCurrentBoard({ commit }, newAcl) { + newAcl.boardId = this.state.currentBoard.id + apiClient.addAcl(newAcl) + .then((returnAcl) => { + commit('addAclToCurrentBoard', returnAcl) }) }, updateAclFromCurrentBoard({ commit }, acl) { diff --git a/src/store/stack.js b/src/store/stack.js index 4ac673d74..4a0fde50d 100644 --- a/src/store/stack.js +++ b/src/store/stack.js @@ -51,6 +51,16 @@ export default { for (let i = 0; i < newOrder.length; i++) { newOrder[i].order = parseInt(i) } + }, + deleteStack(state, stack) { + let existingIndex = state.stacks.findIndex(_stack => _stack.id === stack.id) + console.log(existingIndex) + if (existingIndex !== -1) { + state.stacks.splice(existingIndex, 1) + } + }, + updateStack(state, stack) { + } }, actions: { @@ -77,9 +87,22 @@ export default { }) }, createStack({ commit }, stack) { + stack.boardId = this.state.currentBoard.id apiClient.createStack(stack) + .then((createdStack) => { + commit('addStack', createdStack) + }) + }, + deleteStack({ commit }, stack) { + apiClient.deleteStack(stack.id) .then((stack) => { - commit('addStack', stack) + commit('deleteStack', stack) + }) + }, + updateStack({ commit }, stack) { + apiClient.updateStack(stack) + .then((stack) => { + commit('updateStack', stack) }) } }