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