
fix: project table view fix: e2e tests fix: typo in readme fix: list view route fix: don't wait until background is loaded for list to show fix: rename component imports fix: lint fix: parse task text fix: use list card grid fix: use correct class names fix: i18n keys fix: load project fix: task overview fix: list view spacing fix: find project fix: setLoading when updating a project fix: loading saved filter fix: project store loading fix: color picker import fix: cypress tests feat: migrate old list settings chore: add const for project settings fix: wrong projecten rename from lists chore: rename unused variable fix: editor list fix: shortcut list class name fix: pagination list class name fix: notifications list class name fix: list view variable name chore: clarify comment fix: i18n keys fix: router imports fix: comment chore: remove debugging leftover fix: remove duplicate variables fix: change comment fix: list view variable name fix: list view css class name fix: list item property name fix: name update tasks function correctly fix: update comment fix: project create route fix: list view class names fix: list view component name fix: result list class name fix: animation class list name fix: change debug log fix: revert a few navigation changes fix: use @ for imports of all views fix: rename link share list class fix: remove unused css class fix: dynamically import project components again
65 lines
1.5 KiB
TypeScript
65 lines
1.5 KiB
TypeScript
import AbstractService from './abstractService'
|
|
import ProjectModel from '@/models/project'
|
|
import type {IProject} from '@/modelTypes/IProject'
|
|
import TaskService from './task'
|
|
import {colorFromHex} from '@/helpers/color/colorFromHex'
|
|
|
|
export default class ProjectService extends AbstractService<IProject> {
|
|
constructor() {
|
|
super({
|
|
create: '/namespaces/{namespaceId}/projects',
|
|
get: '/projects/{id}',
|
|
getAll: '/projects',
|
|
update: '/projects/{id}',
|
|
delete: '/projects/{id}',
|
|
})
|
|
}
|
|
|
|
modelFactory(data) {
|
|
return new ProjectModel(data)
|
|
}
|
|
|
|
beforeUpdate(model) {
|
|
if(typeof model.tasks !== 'undefined') {
|
|
const taskService = new TaskService()
|
|
model.tasks = model.tasks.map(task => {
|
|
return taskService.beforeUpdate(task)
|
|
})
|
|
}
|
|
|
|
if(typeof model.hexColor !== 'undefined') {
|
|
model.hexColor = colorFromHex(model.hexColor)
|
|
}
|
|
|
|
return model
|
|
}
|
|
|
|
beforeCreate(project) {
|
|
project.hexColor = colorFromHex(project.hexColor)
|
|
return project
|
|
}
|
|
|
|
async background(project: Pick<IProject, 'id' | 'backgroundInformation'>) {
|
|
if (project.backgroundInformation === null) {
|
|
return ''
|
|
}
|
|
|
|
const response = await this.http({
|
|
url: `/projects/${project.id}/background`,
|
|
method: 'GET',
|
|
responseType: 'blob',
|
|
})
|
|
return window.URL.createObjectURL(new Blob([response.data]))
|
|
}
|
|
|
|
async removeBackground(project: Pick<IProject, 'id'>) {
|
|
const cancel = this.setLoading()
|
|
|
|
try {
|
|
const response = await this.http.delete(`/projects/${project.id}/background`, project)
|
|
return response.data
|
|
} finally {
|
|
cancel()
|
|
}
|
|
}
|
|
} |