feat: rename list to project everywhere
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
This commit is contained in:
@ -1,13 +1,13 @@
|
||||
import AbstractService from './abstractService'
|
||||
import BackgroundImageModel from '../models/backgroundImage'
|
||||
import ListModel from '@/models/list'
|
||||
import ProjectModel from '@/models/project'
|
||||
import type { IBackgroundImage } from '@/modelTypes/IBackgroundImage'
|
||||
|
||||
export default class BackgroundUnsplashService extends AbstractService<IBackgroundImage> {
|
||||
constructor() {
|
||||
super({
|
||||
getAll: '/backgrounds/unsplash/search',
|
||||
update: '/lists/{listId}/backgrounds/unsplash',
|
||||
update: '/projects/{projectId}/backgrounds/unsplash',
|
||||
})
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ export default class BackgroundUnsplashService extends AbstractService<IBackgrou
|
||||
}
|
||||
|
||||
modelUpdateFactory(data) {
|
||||
return new ListModel(data)
|
||||
return new ProjectModel(data)
|
||||
}
|
||||
|
||||
async thumb(model) {
|
||||
|
@ -1,13 +1,13 @@
|
||||
import AbstractService from './abstractService'
|
||||
import ListModel from '@/models/list'
|
||||
import ProjectModel from '@/models/project'
|
||||
|
||||
import type { IList } from '@/modelTypes/IList'
|
||||
import type { IProject } from '@/modelTypes/IProject'
|
||||
import type { IFile } from '@/modelTypes/IFile'
|
||||
|
||||
export default class BackgroundUploadService extends AbstractService {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/lists/{listId}/backgrounds/upload',
|
||||
create: '/projects/{projectId}/backgrounds/upload',
|
||||
})
|
||||
}
|
||||
|
||||
@ -15,16 +15,16 @@ export default class BackgroundUploadService extends AbstractService {
|
||||
return false
|
||||
}
|
||||
|
||||
modelCreateFactory(data: Partial<IList>) {
|
||||
return new ListModel(data)
|
||||
modelCreateFactory(data: Partial<IProject>) {
|
||||
return new ProjectModel(data)
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads a file to the server
|
||||
*/
|
||||
create(listId: IList['id'], file: IFile) {
|
||||
create(projectId: IProject['id'], file: IFile) {
|
||||
return this.uploadFile(
|
||||
this.getReplacedRoute(this.paths.create, {listId}),
|
||||
this.getReplacedRoute(this.paths.create, {projectId}),
|
||||
file,
|
||||
'background',
|
||||
)
|
||||
|
@ -6,10 +6,10 @@ import type { IBucket } from '@/modelTypes/IBucket'
|
||||
export default class BucketService extends AbstractService<IBucket> {
|
||||
constructor() {
|
||||
super({
|
||||
getAll: '/lists/{listId}/buckets',
|
||||
create: '/lists/{listId}/buckets',
|
||||
update: '/lists/{listId}/buckets/{id}',
|
||||
delete: '/lists/{listId}/buckets/{id}',
|
||||
getAll: '/projects/{projectId}/buckets',
|
||||
create: '/projects/{projectId}/buckets',
|
||||
update: '/projects/{projectId}/buckets/{id}',
|
||||
delete: '/projects/{projectId}/buckets/{id}',
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,10 @@ import type {ILinkShare} from '@/modelTypes/ILinkShare'
|
||||
export default class LinkShareService extends AbstractService<ILinkShare> {
|
||||
constructor() {
|
||||
super({
|
||||
getAll: '/lists/{listId}/shares',
|
||||
get: '/lists/{listId}/shares/{id}',
|
||||
create: '/lists/{listId}/shares',
|
||||
delete: '/lists/{listId}/shares/{id}',
|
||||
getAll: '/projects/{projectId}/shares',
|
||||
get: '/projects/{projectId}/shares/{id}',
|
||||
create: '/projects/{projectId}/shares',
|
||||
delete: '/projects/{projectId}/shares/{id}',
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
import AbstractService from './abstractService'
|
||||
import ListModel from '@/models/list'
|
||||
import type {IList} from '@/modelTypes/IList'
|
||||
import ProjectModel from '@/models/project'
|
||||
import type {IProject} from '@/modelTypes/IProject'
|
||||
import TaskService from './task'
|
||||
import {colorFromHex} from '@/helpers/color/colorFromHex'
|
||||
|
||||
export default class ListService extends AbstractService<IList> {
|
||||
export default class ProjectService extends AbstractService<IProject> {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/namespaces/{namespaceId}/lists',
|
||||
get: '/lists/{id}',
|
||||
getAll: '/lists',
|
||||
update: '/lists/{id}',
|
||||
delete: '/lists/{id}',
|
||||
create: '/namespaces/{namespaceId}/projects',
|
||||
get: '/projects/{id}',
|
||||
getAll: '/projects',
|
||||
update: '/projects/{id}',
|
||||
delete: '/projects/{id}',
|
||||
})
|
||||
}
|
||||
|
||||
modelFactory(data) {
|
||||
return new ListModel(data)
|
||||
return new ProjectModel(data)
|
||||
}
|
||||
|
||||
beforeUpdate(model) {
|
||||
@ -34,29 +34,29 @@ export default class ListService extends AbstractService<IList> {
|
||||
return model
|
||||
}
|
||||
|
||||
beforeCreate(list) {
|
||||
list.hexColor = colorFromHex(list.hexColor)
|
||||
return list
|
||||
beforeCreate(project) {
|
||||
project.hexColor = colorFromHex(project.hexColor)
|
||||
return project
|
||||
}
|
||||
|
||||
async background(list: Pick<IList, 'id' | 'backgroundInformation'>) {
|
||||
if (list.backgroundInformation === null) {
|
||||
async background(project: Pick<IProject, 'id' | 'backgroundInformation'>) {
|
||||
if (project.backgroundInformation === null) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const response = await this.http({
|
||||
url: `/lists/${list.id}/background`,
|
||||
url: `/projects/${project.id}/background`,
|
||||
method: 'GET',
|
||||
responseType: 'blob',
|
||||
})
|
||||
return window.URL.createObjectURL(new Blob([response.data]))
|
||||
}
|
||||
|
||||
async removeBackground(list: Pick<IList, 'id'>) {
|
||||
async removeBackground(project: Pick<IProject, 'id'>) {
|
||||
const cancel = this.setLoading()
|
||||
|
||||
try {
|
||||
const response = await this.http.delete(`/lists/${list.id}/background`, list)
|
||||
const response = await this.http.delete(`/projects/${project.id}/background`, project)
|
||||
return response.data
|
||||
} finally {
|
||||
cancel()
|
@ -1,21 +1,21 @@
|
||||
import AbstractService from './abstractService'
|
||||
import listDuplicateModel from '@/models/listDuplicateModel'
|
||||
import type {IListDuplicate} from '@/modelTypes/IListDuplicate'
|
||||
import projectDuplicateModel from '@/models/projectDuplicateModel'
|
||||
import type {IProjectDuplicate} from '@/modelTypes/IProjectDuplicate'
|
||||
|
||||
export default class ListDuplicateService extends AbstractService<IListDuplicate> {
|
||||
export default class ProjectDuplicateService extends AbstractService<IProjectDuplicate> {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/lists/{listId}/duplicate',
|
||||
create: '/projects/{projectId}/duplicate',
|
||||
})
|
||||
}
|
||||
|
||||
beforeCreate(model) {
|
||||
|
||||
model.list = null
|
||||
model.project = null
|
||||
return model
|
||||
}
|
||||
|
||||
modelFactory(data) {
|
||||
return new listDuplicateModel(data)
|
||||
return new projectDuplicateModel(data)
|
||||
}
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
import AbstractService from './abstractService'
|
||||
import UserModel from '../models/user'
|
||||
|
||||
export default class ListUserService extends AbstractService {
|
||||
export default class ProjectUserService extends AbstractService {
|
||||
constructor() {
|
||||
super({
|
||||
getAll: '/lists/{listId}/listusers',
|
||||
getAll: '/projects/{projectId}/projectusers',
|
||||
})
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import {useI18n} from 'vue-i18n'
|
||||
import type {MaybeRef} from '@vueuse/core'
|
||||
import {useDebounceFn} from '@vueuse/core'
|
||||
|
||||
import type {IList} from '@/modelTypes/IList'
|
||||
import type {IProject} from '@/modelTypes/IProject'
|
||||
import type {ISavedFilter} from '@/modelTypes/ISavedFilter'
|
||||
|
||||
import AbstractService from '@/services/abstractService'
|
||||
@ -16,31 +16,31 @@ import {useNamespaceStore} from '@/stores/namespaces'
|
||||
|
||||
import {objectToSnakeCase, objectToCamelCase} from '@/helpers/case'
|
||||
import {success} from '@/message'
|
||||
import ListModel from '@/models/list'
|
||||
import ProjectModel from '@/models/project'
|
||||
|
||||
/**
|
||||
* Calculates the corresponding list id to this saved filter.
|
||||
* Calculates the corresponding project id to this saved filter.
|
||||
* This function matches the one in the api.
|
||||
*/
|
||||
function getListId(savedFilter: ISavedFilter) {
|
||||
let listId = savedFilter.id * -1 - 1
|
||||
if (listId > 0) {
|
||||
listId = 0
|
||||
function getProjectId(savedFilter: ISavedFilter) {
|
||||
let projectId = savedFilter.id * -1 - 1
|
||||
if (projectId > 0) {
|
||||
projectId = 0
|
||||
}
|
||||
return listId
|
||||
return projectId
|
||||
}
|
||||
|
||||
export function getSavedFilterIdFromListId(listId: IList['id']) {
|
||||
let filterId = listId * -1 - 1
|
||||
// FilterIds from listIds are always positive
|
||||
export function getSavedFilterIdFromProjectId(projectId: IProject['id']) {
|
||||
let filterId = projectId * -1 - 1
|
||||
// FilterIds from projectIds are always positive
|
||||
if (filterId < 0) {
|
||||
filterId = 0
|
||||
}
|
||||
return filterId
|
||||
}
|
||||
|
||||
export function isSavedFilter(list: IList) {
|
||||
return getSavedFilterIdFromListId(list.id) > 0
|
||||
export function isSavedFilter(project: IProject) {
|
||||
return getSavedFilterIdFromProjectId(project.id) > 0
|
||||
}
|
||||
|
||||
export default class SavedFilterService extends AbstractService<ISavedFilter> {
|
||||
@ -78,7 +78,7 @@ export default class SavedFilterService extends AbstractService<ISavedFilter> {
|
||||
}
|
||||
}
|
||||
|
||||
export function useSavedFilter(listId?: MaybeRef<IList['id']>) {
|
||||
export function useSavedFilter(projectId?: MaybeRef<IProject['id']>) {
|
||||
const router = useRouter()
|
||||
const {t} = useI18n({useScope:'global'})
|
||||
const namespaceStore = useNamespaceStore()
|
||||
@ -94,13 +94,13 @@ export function useSavedFilter(listId?: MaybeRef<IList['id']>) {
|
||||
})
|
||||
|
||||
// load SavedFilter
|
||||
watch(() => unref(listId), async (watchedListId) => {
|
||||
if (watchedListId === undefined) {
|
||||
watch(() => unref(projectId), async (watchedProjectId) => {
|
||||
if (watchedProjectId === undefined) {
|
||||
return
|
||||
}
|
||||
|
||||
// We assume the listId in the route is the pseudolist
|
||||
const savedFilterId = getSavedFilterIdFromListId(watchedListId)
|
||||
// We assume the projectId in the route is the pseudoproject
|
||||
const savedFilterId = getSavedFilterIdFromProjectId(watchedProjectId)
|
||||
|
||||
filter.value = new SavedFilterModel({id: savedFilterId})
|
||||
const response = await filterService.get(filter.value)
|
||||
@ -111,7 +111,7 @@ export function useSavedFilter(listId?: MaybeRef<IList['id']>) {
|
||||
async function createFilter() {
|
||||
filter.value = await filterService.create(filter.value)
|
||||
await namespaceStore.loadNamespaces()
|
||||
router.push({name: 'list.index', params: {listId: getListId(filter.value)}})
|
||||
router.push({name: 'project.index', params: {projectId: getProjectId(filter.value)}})
|
||||
}
|
||||
|
||||
async function saveFilter() {
|
||||
@ -120,8 +120,8 @@ export function useSavedFilter(listId?: MaybeRef<IList['id']>) {
|
||||
success({message: t('filters.edit.success')})
|
||||
response.filters = objectToSnakeCase(response.filters)
|
||||
filter.value = response
|
||||
await useBaseStore().setCurrentList(new ListModel({
|
||||
id: getListId(filter.value),
|
||||
await useBaseStore().setCurrentProject(new ProjectModel({
|
||||
id: getProjectId(filter.value),
|
||||
title: filter.value.title,
|
||||
}))
|
||||
router.back()
|
||||
|
@ -18,7 +18,7 @@ const parseDate = date => {
|
||||
export default class TaskService extends AbstractService<ITask> {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/lists/{listId}',
|
||||
create: '/projects/{projectId}',
|
||||
getAll: '/tasks/all',
|
||||
get: '/tasks/{id}',
|
||||
update: '/tasks/{id}',
|
||||
@ -43,8 +43,8 @@ export default class TaskService extends AbstractService<ITask> {
|
||||
|
||||
model.title = model.title?.trim()
|
||||
|
||||
// Ensure that listId is an int
|
||||
model.listId = Number(model.listId)
|
||||
// Ensure that projectId is an int
|
||||
model.projectId = Number(model.projectId)
|
||||
|
||||
// Convert dates into an iso string
|
||||
model.dueDate = parseDate(model.dueDate)
|
||||
|
@ -17,7 +17,7 @@ export interface GetAllTasksParams {
|
||||
export default class TaskCollectionService extends AbstractService<ITask> {
|
||||
constructor() {
|
||||
super({
|
||||
getAll: '/lists/{listId}/tasks',
|
||||
getAll: '/projects/{projectId}/tasks',
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1,20 +1,20 @@
|
||||
import AbstractService from './abstractService'
|
||||
import TeamListModel from '@/models/teamList'
|
||||
import type {ITeamList} from '@/modelTypes/ITeamList'
|
||||
import TeamProjectModel from '@/models/teamProject'
|
||||
import type {ITeamProject} from '@/modelTypes/ITeamProject'
|
||||
import TeamModel from '@/models/team'
|
||||
|
||||
export default class TeamListService extends AbstractService<ITeamList> {
|
||||
export default class TeamProjectService extends AbstractService<ITeamProject> {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/lists/{listId}/teams',
|
||||
getAll: '/lists/{listId}/teams',
|
||||
update: '/lists/{listId}/teams/{teamId}',
|
||||
delete: '/lists/{listId}/teams/{teamId}',
|
||||
create: '/projects/{projectId}/teams',
|
||||
getAll: '/projects/{projectId}/teams',
|
||||
update: '/projects/{projectId}/teams/{teamId}',
|
||||
delete: '/projects/{projectId}/teams/{teamId}',
|
||||
})
|
||||
}
|
||||
|
||||
modelFactory(data) {
|
||||
return new TeamListModel(data)
|
||||
return new TeamProjectModel(data)
|
||||
}
|
||||
|
||||
modelGetAllFactory(data) {
|
||||
|
@ -1,20 +1,20 @@
|
||||
import AbstractService from './abstractService'
|
||||
import UserListModel from '@/models/userList'
|
||||
import type {IUserList} from '@/modelTypes/IUserList'
|
||||
import UserProjectModel from '@/models/userProject'
|
||||
import type {IUserProject} from '@/modelTypes/IUserProject'
|
||||
import UserModel from '@/models/user'
|
||||
|
||||
export default class UserListService extends AbstractService<IUserList> {
|
||||
export default class UserProjectService extends AbstractService<IUserProject> {
|
||||
constructor() {
|
||||
super({
|
||||
create: '/lists/{listId}/users',
|
||||
getAll: '/lists/{listId}/users',
|
||||
update: '/lists/{listId}/users/{userId}',
|
||||
delete: '/lists/{listId}/users/{userId}',
|
||||
create: '/projects/{projectId}/users',
|
||||
getAll: '/projects/{projectId}/users',
|
||||
update: '/projects/{projectId}/users/{userId}',
|
||||
delete: '/projects/{projectId}/users/{userId}',
|
||||
})
|
||||
}
|
||||
|
||||
modelFactory(data) {
|
||||
return new UserListModel(data)
|
||||
return new UserProjectModel(data)
|
||||
}
|
||||
|
||||
modelGetAllFactory(data) {
|
||||
|
Reference in New Issue
Block a user