import AbstractModel from './abstractModel' import TaskModel from '@/models/task' import UserModel from '@/models/user' import SubscriptionModel from '@/models/subscription' import type {IList} from '@/modelTypes/IList' import type {IUser} from '@/modelTypes/IUser' import type {ITask} from '@/modelTypes/ITask' import type {INamespace} from '@/modelTypes/INamespace' import type {ISubscription} from '@/modelTypes/ISubscription' import {getSavedFilterIdFromListId} from '@/helpers/savedFilter' export default class ListModel extends AbstractModel implements IList { id = 0 title = '' description = '' owner: IUser = UserModel tasks: ITask[] = [] namespaceId: INamespace['id'] = 0 isArchived = false hexColor = '' identifier = '' backgroundInformation: any = null isFavorite = false subscription: ISubscription = null position = 0 backgroundBlurHash = '' created: Date = null updated: Date = null constructor(data: Partial = {}) { super() this.assignData(data) this.owner = new UserModel(this.owner) // Make all tasks to task models this.tasks = this.tasks.map(t => { return new TaskModel(t) }) if (this.hexColor !== '' && this.hexColor.substring(0, 1) !== '#') { this.hexColor = '#' + this.hexColor } if (typeof this.subscription !== 'undefined' && this.subscription !== null) { this.subscription = new SubscriptionModel(this.subscription) } this.created = new Date(this.created) this.updated = new Date(this.updated) } isSavedFilter() { return this.getSavedFilterId() > 0 } getSavedFilterId() { return getSavedFilterIdFromListId(this.id) } }