UNPKG

@rucken/todo-core

Version:

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

169 lines 15.9 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'; var Task = /** @class */ (function () { function Task() { 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 {?} */ Task.prototype.toString = /** * @return {?} */ function () { return this.title; }; Object.defineProperty(Task.prototype, "range", { get: /** * @return {?} */ function () { /** @type {?} */ var 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(''); }, enumerable: true, configurable: true }); 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); return Task; }()); export { Task }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby1jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxFQUNMLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDO0lBQUE7UUF1QkUsT0FBRSxHQUFXLFNBQVMsQ0FBQztRQUt2QixZQUFPLEdBQVksU0FBUyxDQUFDO1FBRzdCLFVBQUssR0FBVyxTQUFTLENBQUM7UUFFMUIsZ0JBQVcsR0FBVyxTQUFTLENBQUM7UUFLaEMsV0FBTSxHQUFXLFNBQVMsQ0FBQztRQUkzQixXQUFNLEdBQWtCLFNBQVMsQ0FBQztRQUlsQyxZQUFPLEdBQWtCLFNBQVMsQ0FBQztRQUluQyxjQUFTLEdBQWtCLFNBQVMsQ0FBQztRQUlyQyxjQUFTLEdBQWtCLFNBQVMsQ0FBQztRQUlyQyxnQkFBVyxHQUFTLFNBQVMsQ0FBQztRQUk5QixnQkFBVyxHQUFTLFNBQVMsQ0FBQztRQUk5QixpQkFBWSxHQUFTLFNBQVMsQ0FBQztJQW1DakMsQ0FBQzs7OztJQWpDQyx1QkFBUTs7O0lBQVI7UUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELHNCQUFJLHVCQUFLOzs7O1FBQVQ7O2dCQUNRLEdBQUcsR0FBYSxFQUFF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SUFBSSxFQUFFLENBQUM7MENBQzVDLElBQUk7OENBQWE7SUFtQ2pDLFdBQUM7Q0FBQSxBQXJHRCxJQXFHQztTQXJHWSxJQUFJOzs7SUFDZixhQW9CRTs7SUFFRixrQkFBdUI7O0lBRXZCLHVCQUc2Qjs7SUFFN0IscUJBQzBCOztJQUUxQiwyQkFBZ0M7O0lBRWhDLHNCQUcyQjs7SUFFM0Isc0JBRWtDOztJQUVsQyx1QkFFbUM7O0lBRW5DLHlCQUVxQzs7SUFFckMseUJBRXFDOztJQUVyQywyQkFFOEI7O0lBRTlCLDJCQUU4Qjs7SUFFOUIsNEJBRStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2VyaWFsaXplTW9kZWwsXG4gIHRyYW5zZm9ybURhdGVUb1N0cmluZyxcbiAgdHJhbnNmb3JtU3RyaW5nVG9EYXRlLFxuICB0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCxcbiAgdHJhbnNsYXRlLFxuICBVc2VyXG59IGZyb20gJ0BydWNrZW4vY29yZSc7XG5pbXBvcnQgeyBUcmFuc2Zvcm0sIFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBJc05vdEVtcHR5IH0gZnJvbSAnY2xhc3MtdmFsaWRhdG9yJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgSU1vZGVsIH0gZnJvbSAnbmd4LXJlcG9zaXRvcnknO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vcHJvamVjdCc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuL3N0YXR1cyc7XG5cbmV4cG9ydCBjbGFzcyBUYXNrIGltcGxlbWVudHMgSU1vZGVsIHtcbiAgc3RhdGljIHN0cmluZ3MgPSB7XG4gICAgaWQ6IHRyYW5zbGF0ZSgnSWQnKSxcbiAgICBwcm9qZWN0OiB0cmFuc2xhdGUoJ1Byb2plY3QnKSxcbiAgICB0aXRsZTogdHJhbnNsYXRlKCdUaXRsZScpLFxuICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUoJ0Rlc2NyaXB0aW9uJyksXG4gICAgc3RhdHVzOiB0cmFuc2xhdGUoJ1N0YXR1cycpLFxuICAgIG9wZW5BdDogdHJhbnNsYXRlKCdPcGVuIGF0JyksXG4gICAgY2xvc2VBdDogdHJhbnNsYXRlKCdDbG9zZSBhdCcpLFxuICAgIGNyZWF0ZWRBdDogdHJhbnNsYXRlKCdDcmVhdGVkIGF0JyksXG4gICAgdXBkYXRlZEF0OiB0cmFuc2xhdGUoJ1VwZGF0ZWQgYXQnKSxcbiAgICByYW5nZTogdHJhbnNsYXRlKCdUYXNrIHRpbWUnKSxcbiAgICBjcmVhdGVkVXNlcjogdHJhbnNsYXRlKCdDcmVhdGVkIHVzZXInKSxcbiAgICB1cGRhdGVkVXNlcjogdHJhbnNsYXRlKCdVcGRhdGVkIHVzZXInKSxcbiAgICBhc3NpZ25lZFVzZXI6IHRyYW5zbGF0ZSgnQXNzaWduZWQgdXNlcicpLFxuXG4gICAgY3JlYXRlVGl0bGU6IHRyYW5zbGF0ZSgnQWRkIG5ldyB0YXNrJyksXG4gICAgdmlld1RpdGxlOiB0cmFuc2xhdGUoJ1Rhc2sgI3t7aWR9fScpLFxuICAgIHVwZGF0ZVRpdGxlOiB0cmFuc2xhdGUoJ1VwZGF0ZSB0YXNrICN7e2lkfX0nKSxcbiAgICBkZWxldGVUaXRsZTogdHJhbnNsYXRlKCdEZWxldGUgdGFzayAje3tpZH19JyksXG4gICAgZGVsZXRlTWVzc2FnZTogdHJhbnNsYXRlKCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRhc2s/JylcbiAgfTtcblxuICBpZDogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIEBJc05vdEVtcHR5KClcbiAgQFR5cGUoc2VyaWFsaXplTW9kZWwoUHJvamVjdCkpXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9PYmplY3QsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgcHJvamVjdDogUHJvamVjdCA9IHVuZGVmaW5lZDtcblxuICBASXNOb3RFbXB0eSgpXG4gIHRpdGxlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBASXNOb3RFbXB0eSgpXG4gIEBUeXBlKHNlcmlhbGl6ZU1vZGVsKFN0YXR1cykpXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9PYmplY3QsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgc3RhdHVzOiBTdGF0dXMgPSB1bmRlZmluZWQ7XG5cbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb0RhdGUsIHsgdG9DbGFzc09ubHk6IHRydWUgfSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1EYXRlVG9TdHJpbmcsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgb3BlbkF0OiBEYXRlIHwgc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9EYXRlLCB7IHRvQ2xhc3NPbmx5OiB0cnVlIH0pXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtRGF0ZVRvU3RyaW5nLCB7IHRvUGxhaW5Pbmx5OiB0cnVlIH0pXG4gIGNsb3NlQXQ6IERhdGUgfCBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb0RhdGUsIHsgdG9DbGFzc09ubHk6IHRydWUgfSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1EYXRlVG9TdHJpbmcsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcbiAgY3JlYXRlZEF0OiBEYXRlIHwgc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtU3RyaW5nVG9EYXRlLCB7IHRvQ2xhc3NPbmx5OiB0cnVlIH0pXG4gIEBUcmFuc2Zvcm0odHJhbnNmb3JtRGF0ZVRvU3RyaW5nLCB7IHRvUGxhaW5Pbmx5OiB0cnVlIH0pXG4gIHVwZGF0ZWRBdDogRGF0ZSB8IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICBjcmVhdGVkVXNlcjogVXNlciA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICB1cGRhdGVkVXNlcjogVXNlciA9IHVuZGVmaW5lZDtcblxuICBAVHlwZShzZXJpYWxpemVNb2RlbChVc2VyKSlcbiAgQFRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmdUb09iamVjdCwgeyB0b1BsYWluT25seTogdHJ1ZSB9KVxuICBhc3NpZ25lZFVzZXI6IFVzZXIgPSB1bmRlZmluZWQ7XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgcmFuZ2UoKSB7XG4gICAgY29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLm9wZW5BdCkge1xuICAgICAgaWYgKCF0aGlzLmNsb3NlQXQpIHtcbiAgICAgICAgYXJyLnB1c2goJyA+PSAnKTtcbiAgICAgIH1cbiAgICAgIGFyci5wdXNoKFxuICAgICAgICAodHlwZW9mIHRoaXMub3BlbkF0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUlTTyhTdHJpbmcodGhpcy5vcGVuQXQpKVxuICAgICAgICAgIDogRGF0ZVRpbWUuZnJvbUpTRGF0ZSh0aGlzLm9wZW5BdCBhcyBEYXRlKVxuICAgICAgICApLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5BdCAmJiB0aGlzLmNsb3NlQXQpIHtcbiAgICAgIGFyci5wdXNoKCcgLSAnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2xvc2VBdCkge1xuICAgICAgaWYgKCF0aGlzLm9wZW5BdCkge1xuICAgICAgICBhcnIucHVzaCgnIDw9ICcpO1xuICAgICAgfVxuICAgICAgYXJyLnB1c2goXG4gICAgICAgICh0eXBlb2YgdGhpcy5jbG9zZUF0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gRGF0ZVRpbWUuZnJvbUlTTyhTdHJpbmcodGhpcy5jbG9zZUF0KSlcbiAgICAgICAgICA6IERhdGVUaW1lLmZyb21KU0RhdGUodGhpcy5jbG9zZUF0IGFzIERhdGUpXG4gICAgICAgICkudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5qb2luKCcnKTtcbiAgfVxufVxuIl19