61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
class BoardService {
|
|
constructor (root) {
|
|
Vue.http.options.root = root;
|
|
|
|
this.lists = Vue.resource(`${root}/lists{/id}`, {}, {
|
|
generate: {
|
|
method: 'POST',
|
|
url: `${root}/lists/generate.json`
|
|
}
|
|
});
|
|
this.issue = Vue.resource(`${root}/issues{/id}`, {});
|
|
this.issues = Vue.resource(`${root}/lists{/id}/issues`, {});
|
|
|
|
Vue.http.interceptors.push((request, next) => {
|
|
request.headers['X-CSRF-Token'] = $.rails.csrfToken();
|
|
next();
|
|
});
|
|
}
|
|
|
|
all () {
|
|
return this.lists.get();
|
|
}
|
|
|
|
generateDefaultLists () {
|
|
return this.lists.generate({});
|
|
}
|
|
|
|
createList (label_id) {
|
|
return this.lists.save({}, {
|
|
list: {
|
|
label_id
|
|
}
|
|
});
|
|
}
|
|
|
|
updateList (id, position) {
|
|
return this.lists.update({ id }, {
|
|
list: {
|
|
position
|
|
}
|
|
});
|
|
}
|
|
|
|
destroyList (id) {
|
|
return this.lists.delete({ id });
|
|
}
|
|
|
|
getIssuesForList (id, filter = {}) {
|
|
let data = { id };
|
|
Object.keys(filter).forEach((key) => { data[key] = filter[key]; });
|
|
|
|
return this.issues.get(data);
|
|
}
|
|
|
|
moveIssue (id, from_list_id, to_list_id) {
|
|
return this.issue.update({ id }, {
|
|
from_list_id,
|
|
to_list_id
|
|
});
|
|
}
|
|
};
|