diff --git a/src/features/kanban/Bucket.vue b/src/features/kanban/Bucket.vue new file mode 100644 index 000000000..9434c5a94 --- /dev/null +++ b/src/features/kanban/Bucket.vue @@ -0,0 +1,373 @@ + + + + + \ No newline at end of file diff --git a/src/features/kanban/BucketNew.vue b/src/features/kanban/BucketNew.vue new file mode 100644 index 000000000..8f47f1f2a --- /dev/null +++ b/src/features/kanban/BucketNew.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/components/tasks/partials/kanban-card.vue b/src/features/kanban/TaskCard.vue similarity index 98% rename from src/components/tasks/partials/kanban-card.vue rename to src/features/kanban/TaskCard.vue index 4bf4fa472..fd9cddab2 100644 --- a/src/components/tasks/partials/kanban-card.vue +++ b/src/features/kanban/TaskCard.vue @@ -81,7 +81,7 @@ import PriorityLabel from '@/components/tasks/partials/priorityLabel.vue' import User from '@/components/misc/user.vue' import Done from '@/components/misc/Done.vue' import Labels from '@/components/tasks/partials/labels.vue' -import ChecklistSummary from './checklist-summary.vue' +import ChecklistSummary from '@/components/tasks/partials/checklist-summary.vue' import {TASK_DEFAULT_COLOR, getHexColor} from '@/models/task' import type {ITask} from '@/modelTypes/ITask' diff --git a/src/features/kanban/TaskNew.vue b/src/features/kanban/TaskNew.vue new file mode 100644 index 000000000..7465f8b77 --- /dev/null +++ b/src/features/kanban/TaskNew.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/src/helpers/saveCollapsedBucketState.ts b/src/helpers/saveCollapsedBucketState.ts index f784a9190..d4f5b15b3 100644 --- a/src/helpers/saveCollapsedBucketState.ts +++ b/src/helpers/saveCollapsedBucketState.ts @@ -2,19 +2,17 @@ import type {IList} from '@/modelTypes/IList' const key = 'collapsedBuckets' -const getAllState = () => { +function getAllState() { const saved = localStorage.getItem(key) - if (saved === null) { - return {} - } - - return JSON.parse(saved) + return saved === null + ? {} + : JSON.parse(saved) } -export const saveCollapsedBucketState = ( +export function saveCollapsedBucketState( listId: IList['id'], - collapsedBuckets, -) => { + collapsedBuckets: any, +) { const state = getAllState() state[listId] = collapsedBuckets for (const bucketId in state[listId]) { @@ -25,11 +23,7 @@ export const saveCollapsedBucketState = ( localStorage.setItem(key, JSON.stringify(state)) } -export const getCollapsedBucketState = (listId : IList['id']) => { +export function getCollapsedBucketState(listId: IList['id']) { const state = getAllState() - if (typeof state[listId] !== 'undefined') { - return state[listId] - } - - return {} + return state[listId] ?? {} } diff --git a/src/models/bucket.ts b/src/models/bucket.ts index 2e0552491..0514d5b9e 100644 --- a/src/models/bucket.ts +++ b/src/models/bucket.ts @@ -7,13 +7,13 @@ import type {ITask} from '@/modelTypes/ITask' import type {IUser} from '@/modelTypes/IUser' export default class BucketModel extends AbstractModel implements IBucket { - id = 0 - title = '' - listId = '' - limit = 0 + id: number = 0 + title: string = '' + listId: number = '' + limit: number = 0 tasks: ITask[] = [] - isDoneBucket = false - position = 0 + isDoneBucket: boolean = false + position: boolean = 0 createdBy: IUser = null created: Date = null @@ -24,7 +24,6 @@ export default class BucketModel extends AbstractModel implements IBuck this.assignData(data) this.tasks = this.tasks.map(t => new TaskModel(t)) - this.createdBy = new UserModel(this.createdBy) this.created = new Date(this.created) this.updated = new Date(this.updated) diff --git a/src/models/task.ts b/src/models/task.ts index 5f4e01d70..f244dd8f1 100644 --- a/src/models/task.ts +++ b/src/models/task.ts @@ -133,6 +133,8 @@ export default class TaskModel extends AbstractModel implements ITask { this.updated = new Date(this.updated) this.listId = Number(this.listId) + + this.kanbanPosition } getTextIdentifier() { diff --git a/src/views/list/ListKanban.vue b/src/views/list/ListKanban.vue index 45fdc3d45..45772a187 100644 --- a/src/views/list/ListKanban.vue +++ b/src/views/list/ListKanban.vue @@ -1,248 +1,95 @@ - + + \ No newline at end of file