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