UNPKG

@rucken/todo-core

Version:

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

565 lines (550 loc) 18.5 kB
import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { translate, transformStringToDate, transformDateToString, serializeModel, User, transformStringToObject, LANGUAGES_ITEM_CONFIG_TOKEN } from '@rucken/core'; import { Transform, Type, plainToClass } from 'class-transformer'; import { ProviderActionEnum } from 'ngx-repository'; import { __decorate, __metadata } from 'tslib'; import { IsNotEmpty, IsOptional } from 'class-validator'; import { DateTime } from 'luxon'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const RuI18n = { Id: 'Ид.', Title: 'Заголовок', Description: 'Описание', 'Is public': 'Публичный', 'Created at': 'Дата создания', 'Updated at': 'Дата изменения', Statuses: 'Статусы', Tasks: 'Задачи', Users: 'Пользователи', 'Completed tasks': 'Выполненные задачи', 'Add new project': 'Добавить проект', 'Project #{{id}}': 'Проекта #{{id}}', 'Update project #{{id}}': 'Редактирование проекта #{{id}}', 'Delete project #{{id}}': 'Удалить проект #{{id}}', 'Do you really want to delete project?': 'Вы действительно хотите удалить этот проект?', Yes: 'Да', No: 'Нет', Project: 'Проект', Name: 'Наименование', 'Add new status': 'Создание нового статуса', 'Status #{{id}}': 'Статус #{{id}}', 'Update status #{{id}}': 'Изменить статус #{{id}}', 'Delete status #{{id}}': 'Удалить статус #{{id}}', 'Do you really want to delete status?': 'Вы действительно хотите удалить статус?', Status: 'Статус', 'Open at': 'Дата открытия', 'Close at': 'Дата закрытия', 'Task time': 'Время задачи', 'Created user': 'Создал', 'Updated user': 'Обновил', 'Assigned user': 'Пользователь', 'Add new task': 'Создание новой задачи', 'Task #{{id}}': 'Задача #{{id}}', 'Update task #{{id}}': 'Изменить задачу #{{id}}', 'Delete task #{{id}}': 'Удалить задачу #{{id}}', 'Do you really want to delete task?': 'Вы действительно хотите удалить задачу?', Russian: 'Русский', English: 'Английский' }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class Status { constructor() { this.id = undefined; this.name = undefined; this.title = undefined; this.createdAt = undefined; this.updatedAt = undefined; } /** * @return {?} */ toString() { return this.title; } } Status.strings = { id: translate('Id'), name: translate('Name'), title: translate('Title'), project: translate('Project'), createdAt: translate('Created at'), updatedAt: translate('Updated at'), createTitle: translate('Add new status'), viewTitle: translate('Status #{{id}}'), updateTitle: translate('Update status #{{id}}'), deleteTitle: translate('Delete status #{{id}}'), deleteMessage: translate('Do you really want to delete status?') }; __decorate([ IsNotEmpty(), __metadata("design:type", String) ], Status.prototype, "name", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Status.prototype, "createdAt", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Status.prototype, "updatedAt", void 0); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class Project { constructor() { this.id = undefined; this.completedTasksCount = undefined; this.tasksCount = undefined; this.title = undefined; this.description = undefined; this.isPublic = undefined; this.createdAt = undefined; this.updatedAt = undefined; this.statuses = []; this.users = []; this.createdUser = undefined; this.updatedUser = undefined; } /** * @return {?} */ get isPublicAsString() { if (this.isPublic) { return translate('Yes'); } else { return translate('No'); } } /** * @return {?} */ get usersAsString() { return this.users.join(', '); } /** * @return {?} */ get statusesAsString() { return this.statuses.join(', '); } /** * @return {?} */ toString() { return this.title; } } Project.strings = { id: translate('Id'), title: translate('Title'), description: translate('Description'), isPublic: translate('Is public'), createdAt: translate('Created at'), updatedAt: translate('Updated at'), statuses: translate('Statuses'), tasks: translate('Tasks'), users: translate('Users'), completedTasksCount: translate('Completed tasks'), tasksCount: translate('Tasks'), createTitle: translate('Add new project'), viewTitle: translate('Project #{{id}}'), updateTitle: translate('Update project #{{id}}'), deleteTitle: translate('Delete project #{{id}}'), deleteMessage: translate('Do you really want to delete project?') }; __decorate([ IsNotEmpty(), __metadata("design:type", String) ], Project.prototype, "title", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Project.prototype, "createdAt", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Project.prototype, "updatedAt", void 0); __decorate([ IsOptional(), Type(serializeModel(Status)), __metadata("design:type", Array) ], Project.prototype, "statuses", void 0); __decorate([ IsOptional(), Type(serializeModel(User)), __metadata("design:type", Array) ], Project.prototype, "users", void 0); __decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", User) ], Project.prototype, "createdUser", void 0); __decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", User) ], Project.prototype, "updatedUser", void 0); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_PROJECTS_CONFIG = { name: 'project', pluralName: 'projects', autoload: true, paginationMeta: { perPage: 5 }, actionOptions: { responseData: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { if (action === ProviderActionEnum.Delete) { return true; } else { if (action === ProviderActionEnum.LoadAll) { return plainToClass(Project, data && data.body && data.body.projects); } else { return plainToClass(Project, data && data.body && data.body.project); } } }), responsePaginationMeta: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { return { totalResults: data && data.body && data.body.meta && data.body.meta.totalResults, perPage: undefined }; }) }, restOptions: { limitQueryParam: 'per_page', pageQueryParam: 'cur_page', searchTextQueryParam: 'q' } }; /** @type {?} */ const PROJECTS_CONFIG_TOKEN = 'ProjectsConfig'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_STATUSES_CONFIG = { name: 'status', pluralName: 'statuses', autoload: true, paginationMeta: { perPage: 5 }, actionOptions: { responseData: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { if (action === ProviderActionEnum.Delete) { return true; } else { if (action === ProviderActionEnum.LoadAll) { return plainToClass(Status, data && data.body && data.body.statuses); } else { return plainToClass(Status, data && data.body && data.body.status); } } }), responsePaginationMeta: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { return { totalResults: data && data.body && data.body.meta && data.body.meta.totalResults, perPage: undefined }; }) }, restOptions: { limitQueryParam: 'per_page', pageQueryParam: 'cur_page', searchTextQueryParam: 'q' } }; /** @type {?} */ const STATUSES_CONFIG_TOKEN = 'StatusesConfig'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ 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?') }; __decorate([ IsNotEmpty(), Type(serializeModel(Project)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", Project) ], Task.prototype, "project", void 0); __decorate([ IsNotEmpty(), __metadata("design:type", String) ], Task.prototype, "title", void 0); __decorate([ IsNotEmpty(), Type(serializeModel(Status)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", Status) ], Task.prototype, "status", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Task.prototype, "openAt", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Task.prototype, "closeAt", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Task.prototype, "createdAt", void 0); __decorate([ Transform(transformStringToDate, { toClassOnly: true }), Transform(transformDateToString, { toPlainOnly: true }), __metadata("design:type", Object) ], Task.prototype, "updatedAt", void 0); __decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", User) ], Task.prototype, "createdUser", void 0); __decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", User) ], Task.prototype, "updatedUser", void 0); __decorate([ Type(serializeModel(User)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", User) ], Task.prototype, "assignedUser", void 0); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_TASKS_CONFIG = { name: 'task', pluralName: 'tasks', autoload: true, paginationMeta: { perPage: 5 }, actionOptions: { responseData: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { if (action === ProviderActionEnum.Delete) { return true; } else { if (action === ProviderActionEnum.LoadAll) { return plainToClass(Task, data && data.body && data.body.tasks); } else { return plainToClass(Task, data && data.body && data.body.task); } } }), responsePaginationMeta: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { return { totalResults: data && data.body && data.body.meta && data.body.meta.totalResults, perPage: undefined }; }) }, restOptions: { limitQueryParam: 'per_page', pageQueryParam: 'cur_page', searchTextQueryParam: 'q' } }; /** @type {?} */ const TASKS_CONFIG_TOKEN = 'TasksConfig'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const ENTITIES_PROVIDERS = [ { provide: PROJECTS_CONFIG_TOKEN, useValue: DEFAULT_PROJECTS_CONFIG }, { provide: STATUSES_CONFIG_TOKEN, useValue: DEFAULT_STATUSES_CONFIG }, { provide: TASKS_CONFIG_TOKEN, useValue: DEFAULT_TASKS_CONFIG } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ const ɵ0 = { title: translate('Russian'), code: 'ru', translations: [RuI18n] }, ɵ1 = { title: translate('English'), code: 'en', translations: [] }; class RuckenTodoCoreModule { } RuckenTodoCoreModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule], providers: [ { provide: LANGUAGES_ITEM_CONFIG_TOKEN, useValue: ɵ0, multi: true }, { provide: LANGUAGES_ITEM_CONFIG_TOKEN, useValue: ɵ1, multi: true }, ...ENTITIES_PROVIDERS ] },] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class StatusWithProject extends Status { constructor() { super(...arguments); this.project = undefined; } } StatusWithProject.strings = Object.assign({}, Status.strings, { project: translate('Project') }); __decorate([ Type(serializeModel(Project)), Transform(transformStringToObject, { toPlainOnly: true }), __metadata("design:type", Project) ], StatusWithProject.prototype, "project", void 0); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { DEFAULT_PROJECTS_CONFIG, DEFAULT_STATUSES_CONFIG, DEFAULT_TASKS_CONFIG, ENTITIES_PROVIDERS, PROJECTS_CONFIG_TOKEN, Project, RuI18n, RuckenTodoCoreModule, STATUSES_CONFIG_TOKEN, Status, StatusWithProject, TASKS_CONFIG_TOKEN, Task }; //# sourceMappingURL=rucken-todo-core.js.map