frontend/src/services/list.js
konrad cac8b09263 Add limits for kanban boards (#234)
Prevent dropping a task onto a bucket which has its limit reached

Fix closing the dropdown

Add notice to show the limit

Add input to change kanban bucket limit

Add menu item to save bucket limit

Fix parsing dates from the api

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#234
2020-09-04 20:01:02 +00:00

58 lines
1.2 KiB
JavaScript

import AbstractService from './abstractService'
import ListModel from '../models/list'
import TaskService from './task'
import {formatISO} from 'date-fns'
export default class ListService extends AbstractService {
constructor() {
super({
create: '/namespaces/{namespaceId}/lists',
get: '/lists/{id}',
getAll: '/lists',
update: '/lists/{id}',
delete: '/lists/{id}',
})
}
processModel(model) {
model.created = formatISO(new Date(model.created))
model.updated = formatISO(new Date(model.updated))
return model
}
modelFactory(data) {
return new ListModel(data)
}
beforeUpdate(model) {
let taskService = new TaskService()
model.tasks = model.tasks.map(task => {
return taskService.beforeUpdate(task)
})
model.hexColor = model.hexColor.substring(1, 7)
return model
}
beforeCreate(list) {
list.hexColor = list.hexColor.substring(1, 7)
return list
}
background(list) {
if (list.background === null) {
return Promise.resolve('')
}
return this.http({
url: `/lists/${list.id}/background`,
method: 'GET',
responseType: 'blob',
})
.then(response => {
return window.URL.createObjectURL(new Blob([response.data]))
})
.catch(e => {
return e
})
}
}