diff --git a/src/components/board/TagsTabSidebard.vue b/src/components/board/TagsTabSidebard.vue index d742185fb..712fdf4e6 100644 --- a/src/components/board/TagsTabSidebard.vue +++ b/src/components/board/TagsTabSidebard.vue @@ -3,16 +3,35 @@ @@ -26,13 +45,25 @@ export default { data() { return { editingLabelId: null, - editingLabel: null + editingLabel: null, + addLabelObj: null, + addLabel: false, } }, computed: { ...mapGetters({ labels: 'currentBoardLabels' - }) + }), + addLabelObjValidated() { + if (this.addLabelObj.title == '') return false; + if (this.addLabelObj.color == '') return false; + return true; + }, + editLabelObjValidated() { + if (this.editingLabel.title == '') return false; + if (this.editingLabel.color == '') return false; + return true; + } }, methods: { clickEdit(label) { @@ -45,7 +76,16 @@ export default { updateLabel(label) { this.$store.dispatch('updateLabelFromCurrentBoard', this.editingLabel) this.editingLabelId = null - } + }, + clickShowAddLabel() { + this.addLabelObj = { boardId: 1, cardId: null, color: '000', title: 'new'} + this.addLabel=true + }, + clickAddLabel() { + this.$store.dispatch('addLabelToCurrentBoard', this.addLabelObj) + this.addLabel = false + this.addLabelObj = null + }, } } diff --git a/src/services/BoardApi.js b/src/services/BoardApi.js index ebb493168..a5e66b43a 100644 --- a/src/services/BoardApi.js +++ b/src/services/BoardApi.js @@ -135,4 +135,50 @@ export class BoardApi { }) } + // Label API Calls + deleteLabel(id) { + return axios.delete(this.url(`/labels/${id}`)) + .then( + (response) => { + return Promise.resolve(response.data) + }, + (err) => { + return Promise.reject(err) + } + ) + .catch((err) => { + return Promise.reject(err) + }) + } + + updateLabel(label) { + return axios.put(this.url('/labels/${label.id}'), label) + .then( + (response) => { + return Promise.resolve(response.data) + }, + (err) => { + return Promise.reject(err) + } + ) + .catch((err) => { + return Promise.reject(err) + }) + } + + createLabel(labelData) { + return axios.post(this.url('/labels'), labelData) + .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 4b6de5ee5..8b416de67 100644 --- a/src/store/main.js +++ b/src/store/main.js @@ -139,6 +139,7 @@ export default new Vuex.Store({ // label mutators removeLabelFromCurrentBoard(state, labelId) { + console.log(labelId) const removeIndex = state.currentBoard.labels.findIndex((l) => { return labelId === l.id }) @@ -155,6 +156,10 @@ export default new Vuex.Store({ labelToUpdate.title = newLabel.title labelToUpdate.color = newLabel.color + }, + addLabelToCurrentBoard(state, newLabel) { + + state.currentBoard.labels.push(newLabel) } }, actions: { @@ -234,11 +239,23 @@ export default new Vuex.Store({ }, // label actions - removeLabelFromCurrentBoard({ commit }, labelId) { - commit('removeLabelFromCurrentBoard', labelId); + removeLabelFromCurrentBoard({ commit }, label) { + apiClient.deleteLabel(label) + .then((label) => { + commit('removeLabelFromCurrentBoard', label.id); + }) }, updateLabelFromCurrentBoard({ commit }, newLabel) { - commit('updateLabelFromCurrentBoard', newLabel); + apiClient.updateLabel(newLabel) + .then((newLabel) => { + commit('updateLabelFromCurrentBoard', newLabel); + }) }, + addLabelToCurrentBoard({ commit }, newLabel) { + apiClient.createLabel(newLabel) + .then((newLabel) => { + commit('addLabelToCurrentBoard', newLabel); + }) + } } }) \ No newline at end of file