UNPKG

@rucken/todo-core

Version:

Core with base class and entities for todo application maked on Angular7+ and based on Rucken template

160 lines 15.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { serializeModel, transformDateToString, transformStringToDate, transformStringToObject, translate, User } from '@rucken/core'; import { Transform, Type } from 'class-transformer'; import { IsNotEmpty } from 'class-validator'; import { DateTime } from 'luxon'; import { Project } from './project'; import { Status } from './status'; export class Task { constructor() { this.id = undefined; this.project = undefined; this.title = undefined; this.description = undefined; this.status = undefined; this.openAt = undefined; this.closeAt = undefined; this.createdAt = undefined; this.updatedAt = undefined; this.createdUser = undefined; this.updatedUser = undefined; this.assignedUser = undefined; } /** * @return {?} */ toString() { return this.title; } /** * @return {?} */ get range() { /** @type {?} */ const arr = []; if (this.openAt) { if (!this.closeAt) { arr.push(' >= '); } arr.push((typeof this.openAt === 'string' ? DateTime.fromISO(String(this.openAt)) : DateTime.fromJSDate((/** @type {?} */ (this.openAt)))).toLocaleString()); } if (this.openAt && this.closeAt) { arr.push(' - '); } if (this.closeAt) { if (!this.openAt) { arr.push(' <= '); } arr.push((typeof this.closeAt === 'string' ? DateTime.fromISO(String(this.closeAt)) : DateTime.fromJSDate((/** @type {?} */ (this.closeAt)))).toLocaleString()); } return arr.join(''); } } Task.strings = { id: translate('Id'), project: translate('Project'), title: translate('Title'), description: translate('Description'), status: translate('Status'), openAt: translate('Open at'), closeAt: translate('Close at'), createdAt: translate('Created at'), updatedAt: translate('Updated at'), range: translate('Task time'), createdUser: translate('Created user'), updatedUser: translate('Updated user'), assignedUser: translate('Assigned user'), createTitle: translate('Add new task'), viewTitle: translate('Task #{{id}}'), updateTitle: translate('Update task #{{id}}'), deleteTitle: translate('Delete task #{{id}}'), deleteMessage: translate('Do you really want to delete task?') }; tslib_1.__decorate([ IsNotEmpty(), Type(serializeModel(Project)), Transform(transformStringToObject, { toPlainOnly: true }), tslib_1.__metadata("design:type", Project) ], Task.prototype, "project", void 0); tslib_1.__decorate([ IsNotEmpty(), tslib_1.__metadata("design:type", String) ], Task.prototype, "title", void 0); tslib_1.__decorate([ IsNotEmpty(), Type(serializeModel(Status)), Transform(transformStringToObject, { toPlainOnly: true }), tslib_1.__metadata("design:type", Status) ], Task.prototype, "status", void 0); tslib_1.__decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), tslib_1.__metadata("design:type", Object) ], Task.prototype, "openAt", void 0); tslib_1.__decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), tslib_1.__metadata("design:type", Object) ], Task.prototype, "closeAt", void 0); tslib_1.__decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), tslib_1.__metadata("design:type", Object) ], Task.prototype, "createdAt", void 0); tslib_1.__decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), tslib_1.__metadata("design:type", Object) ], Task.prototype, "updatedAt", void 0); tslib_1.__decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), tslib_1.__metadata("design:type", User) ], Task.prototype, "createdUser", void 0); tslib_1.__decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), tslib_1.__metadata("design:type", User) ], Task.prototype, "updatedUser", void 0); tslib_1.__decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), tslib_1.__metadata("design:type", User) ], Task.prototype, "assignedUser", void 0); if (false) { /** @type {?} */ Task.strings; /** @type {?} */ Task.prototype.id; /** @type {?} */ Task.prototype.project; /** @type {?} */ Task.prototype.title; /** @type {?} */ Task.prototype.description; /** @type {?} */ Task.prototype.status; /** @type {?} */ Task.prototype.openAt; /** @type {?} */ Task.prototype.closeAt; /** @type {?} */ Task.prototype.createdAt; /** @type {?} */ Task.prototype.updatedAt; /** @type {?} */ Task.prototype.createdUser; /** @type {?} */ Task.prototype.updatedUser; /** @type {?} */ Task.prototype.assignedUser; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby1jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxFQUNMLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sT0FBTyxJQUFJO0lBQWpCO1FBdUJFLE9BQUUsR0FBVyxTQUFTLENBQUM7UUFLdkIsWUFBTyxHQUFZLFNBQVMsQ0FBQztRQUc3QixVQUFLLEdBQVcsU0FBUyxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBS2hDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFJM0IsV0FBTSxHQUFrQixTQUFTLENBQUM7UUFJbEMsWUFBTyxHQUFrQixTQUFTLENBQUM7UUFJbkMsY0FBUyxHQUFrQixTQUFTLENBQUM7UUFJckMsY0FBUyxHQUFrQixTQUFTLENBQUM7UUFJckMsZ0JBQVcsR0FBUyxTQUFTLENBQUM7UUFJOUIsZ0JBQVcsR0FBUyxTQUFTLENBQUM7UUFJOUIsaUJBQVksR0FBUyxTQUFTLENBQUM7SUFtQ2pDLENBQUM7Ozs7SUFqQ0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOzs7O0lBRUQsSUFBSSxLQUFLOztjQUNELEdBQUcsR0FBYSxFQUFF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QztzQ0FDNUMsSUFBSTswQ0FBYTs7O0lBakUvQixhQW9CRTs7SUFFRixrQkFBdUI7O0lBRXZCLHVCQUc2Qjs7SUFFN0IscUJBQzBCOztJQUUxQiwyQkFBZ0M7O0lBRWhDLHNCQUcyQjs7SUFFM0Isc0JBRWtDOztJQUVsQyx1QkFFbUM7O0lBRW5DLHlCQUVxQzs7SUFFckMseUJBRXFDOztJQUVyQywyQkFFOEI7O0lBRTlCLDJCQUU4Qjs7SUFFOUIsNEJBRStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2VyaWFsaXplTW9kZWwsXG4gIHRyYW5zZm9ybURhdGVUb1N0cmluZyxcbiAgdHJhbnNmb3JtU3RyaW5nVG9EYXRlLFxuICB0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCxcbiAgdHJhbnNsYXRlLFxuICBVc2VyXG59IGZyb20gJ0BydWNrZW4vY29yZSc7XG5pbXBvcnQgeyBUcmFuc2Zvcm0sIFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBJc05vdEVtcHR5IH0gZnJvbSAnY2xhc3MtdmFsaWRhdG9yJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgSU1vZGVsIH0gZnJvbSAnbmd4LXJlcG9zaXRvcnknO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vcHJvamVjdCc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuL3N0YXR1cyc7XG5cbmV4cG9ydCBjbGFzcyBUYXNrIGltcGxlbWVudHMgSU1vZGVsIHtcbiAgc3RhdGljIHN0cmluZ3MgPSB7XG4gICAgaWQ6IHRyYW5zbGF0ZSgnSWQnKSxcbiAgICBwcm9qZWN0OiB0cmFuc2xhdGUoJ1Byb2plY3QnKSxcbiAgICB0aXRsZTogdHJhbnNsYXRlKCdUaXRsZScpLFxuICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUoJ0Rlc2NyaXB0aW9uJyksXG4gICAgc3RhdHVzOiB0cmFuc2xhdGUoJ1N0YXR1cycpLFxuICAgIG9wZW5BdDogdHJhbnNsYXRlKCdPcGVuIGF0JyksXG4gICAgY2xvc2VBdDogdHJhbnNsYXRlKCdDbG9zZSBhdCcpLFxuICAgIGNyZWF0ZWRBdDogdHJhbnNsYXRlKCdDcmVhdGVkIGF0JyksXG4gICAgdXBkYXRlZEF0OiB0cmFuc2xhdGUoJ1VwZGF0ZWQgYXQnKSxcbiAgICByYW5nZTogdHJhbnNsYXRlKCdUYXNrIHRpbWUnKSxcbiAgICBjcmVhdGVkVXNlcjogdHJhbnNsYXRlKCdDcmVhdGVkIHVzZXInKSxcbiAgICB1cGRhdGVkVXNlcjogdHJhbnNsYXRlKCdVcGRhdGVkIHVzZXInKSxcbiAgICBhc3NpZ25lZFVzZXI6IHRyYW5zbGF0ZSgnQXNzaWduZWQgdXNlcicpLFxuXG4gICAgY3JlYXRlVGl0bGU6IHRyYW5zbGF0ZSgnQWRkIG5ldyB0YXNrJyksXG4gICAgdmlld1RpdGxlOiB0cmFuc2xhdGUoJ1Rhc2sgI3t7aWR9fScpLFxuICAgIHVwZGF0ZVRpdGxlOiB0cmFuc2xhdGUoJ1VwZGF0ZSB0YXNrICN7e2lkfX0nKSxcbiAgICBkZWxldGVUaXRsZTogdHJhbnNsYXRlKCdEZWxldGUgdGFzayAje3tpZH19JyksXG4gICAgZGVsZXRlTWVzc2FnZTogdHJhbnNsYXRlKCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRhc2s/JylcbiAgfTtcblxuICBpZDogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIEBJc05vdEVtcHR5KClcbiAgQFR5cGUoc2VyaWFsaXplTW9kZWwoUHJvamVjdCkpXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9PYmplY3QsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgcHJvamVjdDogUHJvamVjdCA9IHVuZGVmaW5lZDtcblxuICBASXNOb3RFbXB0eSgpXG4gIHRpdGxlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBASXNOb3RFbXB0eSgpXG4gIEBUeXBlKHNlcmlhbGl6ZU1vZGVsKFN0YXR1cykpXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9PYmplY3QsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgc3RhdHVzOiBTdGF0dXMgPSB1bmRlZmluZWQ7XG5cbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb0RhdGUsIHsgdG9DbGFzc09ubHk6IHRydWUgfSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1EYXRlVG9TdHJpbmcsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgb3BlbkF0OiBEYXRlIHwgc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9EYXRlLCB7IHRvQ2xhc3NPbmx5OiB0cnVlIH0pXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtRGF0ZVRvU3RyaW5nLCB7IHRvUGxhaW5Pbmx5OiB0cnVlIH0pXG4gIGNsb3NlQXQ6IERhdGUgfCBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb0RhdGUsIHsgdG9DbGFzc09ubHk6IHRydWUgfSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1EYXRlVG9TdHJpbmcsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgY3JlYXRlZEF0OiBEYXRlIHwgc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9EYXRlLCB7IHRvQ2xhc3NPbmx5OiB0cnVlIH0pXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtRGF0ZVRvU3RyaW5nLCB7IHRvUGxhaW5Pbmx5OiB0cnVlIH0pXG4gIHVwZGF0ZWRBdDogRGF0ZSB8IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICBjcmVhdGVkVXNlcjogVXNlciA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICB1cGRhdGVkVXNlcjogVXNlciA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICBhc3NpZ25lZFVzZXI6IFVzZXIgPSB1bmRlZmluZWQ7XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgcmFuZ2UoKSB7XG4gICAgY29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLm9wZW5BdCkge1xuICAgICAgaWYgKCF0aGlzLmNsb3NlQXQpIHtcbiAgICAgICAgYXJyLnB1c2goJyA+PSAnKTtcbiAgICAgIH1cbiAgICAgIGFyci5wdXNoKFxuICAgICAgICAodHlwZW9mIHRoaXMub3BlbkF0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUlTTyhTdHJpbmcodGhpcy5vcGVuQXQpKVxuICAgICAgICAgIDogRGF0ZVRpbWUuZnJvbUpTRGF0ZSh0aGlzLm9wZW5BdCBhcyBEYXRlKVxuICAgICAgICApLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5BdCAmJiB0aGlzLmNsb3NlQXQpIHtcbiAgICAgIGFyci5wdXNoKCcgLSAnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2xvc2VBdCkge1xuICAgICAgaWYgKCF0aGlzLm9wZW5BdCkge1xuICAgICAgICBhcnIucHVzaCgnIDw9ICcpO1xuICAgICAgfVxuICAgICAgYXJyLnB1c2goXG4gICAgICAgICh0eXBlb2YgdGhpcy5jbG9zZUF0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUlTTyhTdHJpbmcodGhpcy5jbG9zZUF0KSlcbiAgICAgICAgICA6IERhdGVUaW1lLmZyb21KU0RhdGUodGhpcy5jbG9zZUF0IGFzIERhdGUpXG4gICAgICAgICkudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5qb2luKCcnKTtcbiAgfVxufVxuIl19