@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
JavaScript
/**
* @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