@rucken/todo-core
Version:
Core with base class and entities for todo application maked on Angular7+ and based on Rucken template
670 lines (646 loc) • 28.1 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@rucken/core'), require('class-transformer'), require('ngx-repository'), require('class-validator'), require('luxon')) :
typeof define === 'function' && define.amd ? define('@rucken/todo-core', ['exports', '@angular/common', '@angular/core', '@rucken/core', 'class-transformer', 'ngx-repository', 'class-validator', 'luxon'], factory) :
(global = global || self, factory((global.rucken = global.rucken || {}, global.rucken['todo-core'] = {}), global.ng.common, global.ng.core, global.core$1, global.classTransformer, global.ngxRepository, global.classValidator, global.luxon));
}(this, function (exports, common, core, core$1, classTransformer, ngxRepository, classValidator, luxon) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var 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
*/
var Status = /** @class */ (function () {
function Status() {
this.id = undefined;
this.name = undefined;
this.title = undefined;
this.createdAt = undefined;
this.updatedAt = undefined;
}
/**
* @return {?}
*/
Status.prototype.toString = /**
* @return {?}
*/
function () {
return this.title;
};
Status.strings = {
id: core$1.translate('Id'),
name: core$1.translate('Name'),
title: core$1.translate('Title'),
project: core$1.translate('Project'),
createdAt: core$1.translate('Created at'),
updatedAt: core$1.translate('Updated at'),
createTitle: core$1.translate('Add new status'),
viewTitle: core$1.translate('Status #{{id}}'),
updateTitle: core$1.translate('Update status #{{id}}'),
deleteTitle: core$1.translate('Delete status #{{id}}'),
deleteMessage: core$1.translate('Do you really want to delete status?')
};
__decorate([
classValidator.IsNotEmpty(),
__metadata("design:type", String)
], Status.prototype, "name", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Status.prototype, "createdAt", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Status.prototype, "updatedAt", void 0);
return Status;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var Project = /** @class */ (function () {
function Project() {
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;
}
Object.defineProperty(Project.prototype, "isPublicAsString", {
get: /**
* @return {?}
*/
function () {
if (this.isPublic) {
return core$1.translate('Yes');
}
else {
return core$1.translate('No');
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(Project.prototype, "usersAsString", {
get: /**
* @return {?}
*/
function () {
return this.users.join(', ');
},
enumerable: true,
configurable: true
});
Object.defineProperty(Project.prototype, "statusesAsString", {
get: /**
* @return {?}
*/
function () {
return this.statuses.join(', ');
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
Project.prototype.toString = /**
* @return {?}
*/
function () {
return this.title;
};
Project.strings = {
id: core$1.translate('Id'),
title: core$1.translate('Title'),
description: core$1.translate('Description'),
isPublic: core$1.translate('Is public'),
createdAt: core$1.translate('Created at'),
updatedAt: core$1.translate('Updated at'),
statuses: core$1.translate('Statuses'),
tasks: core$1.translate('Tasks'),
users: core$1.translate('Users'),
completedTasksCount: core$1.translate('Completed tasks'),
tasksCount: core$1.translate('Tasks'),
createTitle: core$1.translate('Add new project'),
viewTitle: core$1.translate('Project #{{id}}'),
updateTitle: core$1.translate('Update project #{{id}}'),
deleteTitle: core$1.translate('Delete project #{{id}}'),
deleteMessage: core$1.translate('Do you really want to delete project?')
};
__decorate([
classValidator.IsNotEmpty(),
__metadata("design:type", String)
], Project.prototype, "title", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Project.prototype, "createdAt", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Project.prototype, "updatedAt", void 0);
__decorate([
classValidator.IsOptional(),
classTransformer.Type(core$1.serializeModel(Status)),
__metadata("design:type", Array)
], Project.prototype, "statuses", void 0);
__decorate([
classValidator.IsOptional(),
classTransformer.Type(core$1.serializeModel(core$1.User)),
__metadata("design:type", Array)
], Project.prototype, "users", void 0);
__decorate([
classTransformer.Type(core$1.serializeModel(core$1.User)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", core$1.User)
], Project.prototype, "createdUser", void 0);
__decorate([
classTransformer.Type(core$1.serializeModel(core$1.User)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", core$1.User)
], Project.prototype, "updatedUser", void 0);
return Project;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var DEFAULT_PROJECTS_CONFIG = {
name: 'project',
pluralName: 'projects',
autoload: true,
paginationMeta: {
perPage: 5
},
actionOptions: {
responseData: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
if (action === ngxRepository.ProviderActionEnum.Delete) {
return true;
}
else {
if (action === ngxRepository.ProviderActionEnum.LoadAll) {
return classTransformer.plainToClass(Project, data && data.body && data.body.projects);
}
else {
return classTransformer.plainToClass(Project, data && data.body && data.body.project);
}
}
}),
responsePaginationMeta: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (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 {?} */
var PROJECTS_CONFIG_TOKEN = 'ProjectsConfig';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var DEFAULT_STATUSES_CONFIG = {
name: 'status',
pluralName: 'statuses',
autoload: true,
paginationMeta: {
perPage: 5
},
actionOptions: {
responseData: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
if (action === ngxRepository.ProviderActionEnum.Delete) {
return true;
}
else {
if (action === ngxRepository.ProviderActionEnum.LoadAll) {
return classTransformer.plainToClass(Status, data && data.body && data.body.statuses);
}
else {
return classTransformer.plainToClass(Status, data && data.body && data.body.status);
}
}
}),
responsePaginationMeta: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (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 {?} */
var STATUSES_CONFIG_TOKEN = 'StatusesConfig';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
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'
? luxon.DateTime.fromISO(String(this.openAt))
: luxon.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'
? luxon.DateTime.fromISO(String(this.closeAt))
: luxon.DateTime.fromJSDate((/** @type {?} */ (this.closeAt)))).toLocaleString());
}
return arr.join('');
},
enumerable: true,
configurable: true
});
Task.strings = {
id: core$1.translate('Id'),
project: core$1.translate('Project'),
title: core$1.translate('Title'),
description: core$1.translate('Description'),
status: core$1.translate('Status'),
openAt: core$1.translate('Open at'),
closeAt: core$1.translate('Close at'),
createdAt: core$1.translate('Created at'),
updatedAt: core$1.translate('Updated at'),
range: core$1.translate('Task time'),
createdUser: core$1.translate('Created user'),
updatedUser: core$1.translate('Updated user'),
assignedUser: core$1.translate('Assigned user'),
createTitle: core$1.translate('Add new task'),
viewTitle: core$1.translate('Task #{{id}}'),
updateTitle: core$1.translate('Update task #{{id}}'),
deleteTitle: core$1.translate('Delete task #{{id}}'),
deleteMessage: core$1.translate('Do you really want to delete task?')
};
__decorate([
classValidator.IsNotEmpty(),
classTransformer.Type(core$1.serializeModel(Project)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", Project)
], Task.prototype, "project", void 0);
__decorate([
classValidator.IsNotEmpty(),
__metadata("design:type", String)
], Task.prototype, "title", void 0);
__decorate([
classValidator.IsNotEmpty(),
classTransformer.Type(core$1.serializeModel(Status)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", Status)
], Task.prototype, "status", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Task.prototype, "openAt", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Task.prototype, "closeAt", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Task.prototype, "createdAt", void 0);
__decorate([
classTransformer.Transform(core$1.transformStringToDate, { toClassOnly: true }),
classTransformer.Transform(core$1.transformDateToString, { toPlainOnly: true }),
__metadata("design:type", Object)
], Task.prototype, "updatedAt", void 0);
__decorate([
classTransformer.Type(core$1.serializeModel(core$1.User)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", core$1.User)
], Task.prototype, "createdUser", void 0);
__decorate([
classTransformer.Type(core$1.serializeModel(core$1.User)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", core$1.User)
], Task.prototype, "updatedUser", void 0);
__decorate([
classTransformer.Type(core$1.serializeModel(core$1.User)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", core$1.User)
], Task.prototype, "assignedUser", void 0);
return Task;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var DEFAULT_TASKS_CONFIG = {
name: 'task',
pluralName: 'tasks',
autoload: true,
paginationMeta: {
perPage: 5
},
actionOptions: {
responseData: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
if (action === ngxRepository.ProviderActionEnum.Delete) {
return true;
}
else {
if (action === ngxRepository.ProviderActionEnum.LoadAll) {
return classTransformer.plainToClass(Task, data && data.body && data.body.tasks);
}
else {
return classTransformer.plainToClass(Task, data && data.body && data.body.task);
}
}
}),
responsePaginationMeta: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (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 {?} */
var TASKS_CONFIG_TOKEN = 'TasksConfig';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var 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
*/
var ɵ0 = {
title: core$1.translate('Russian'),
code: 'ru',
translations: [RuI18n]
}, ɵ1 = {
title: core$1.translate('English'),
code: 'en',
translations: []
};
var RuckenTodoCoreModule = /** @class */ (function () {
function RuckenTodoCoreModule() {
}
RuckenTodoCoreModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule],
providers: __spread([
{
provide: core$1.LANGUAGES_ITEM_CONFIG_TOKEN,
useValue: ɵ0,
multi: true
},
{
provide: core$1.LANGUAGES_ITEM_CONFIG_TOKEN,
useValue: ɵ1,
multi: true
}
], ENTITIES_PROVIDERS)
},] }
];
return RuckenTodoCoreModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusWithProject = /** @class */ (function (_super) {
__extends(StatusWithProject, _super);
function StatusWithProject() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.project = undefined;
return _this;
}
StatusWithProject.strings = __assign({}, Status.strings, { project: core$1.translate('Project') });
__decorate([
classTransformer.Type(core$1.serializeModel(Project)),
classTransformer.Transform(core$1.transformStringToObject, { toPlainOnly: true }),
__metadata("design:type", Project)
], StatusWithProject.prototype, "project", void 0);
return StatusWithProject;
}(Status));
exports.DEFAULT_PROJECTS_CONFIG = DEFAULT_PROJECTS_CONFIG;
exports.DEFAULT_STATUSES_CONFIG = DEFAULT_STATUSES_CONFIG;
exports.DEFAULT_TASKS_CONFIG = DEFAULT_TASKS_CONFIG;
exports.ENTITIES_PROVIDERS = ENTITIES_PROVIDERS;
exports.PROJECTS_CONFIG_TOKEN = PROJECTS_CONFIG_TOKEN;
exports.Project = Project;
exports.RuI18n = RuI18n;
exports.RuckenTodoCoreModule = RuckenTodoCoreModule;
exports.STATUSES_CONFIG_TOKEN = STATUSES_CONFIG_TOKEN;
exports.Status = Status;
exports.StatusWithProject = StatusWithProject;
exports.TASKS_CONFIG_TOKEN = TASKS_CONFIG_TOKEN;
exports.Task = Task;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=rucken-todo-core.umd.js.map