ngx-manage
Version:
- angular class descriptor and state
224 lines • 18.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component } from '@angular/core';
import { Input } from '@angular/core';
import { TemplateService } from './template.service';
import { BaseValueType, BaseValueProp } from './descriptor';
var BaseComponent = /** @class */ (function () {
function BaseComponent(template) {
this.template = template;
this.values = [];
}
/**
* @return {?}
*/
BaseComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
// <pre>{{Value | json}}</pre>
var _this = this;
this.template.getTemplates().subscribe((/**
* @param {?} message
* @return {?}
*/
function (message) {
var e_1, _a;
if (message) {
//console.log('subscribe',this);
/** @type {?} */
var _base_ = message.Template[BaseValueType.Text];
_this.error = message.Template[BaseValueType.Error];
_this.descriptor = _this._value !== undefined ? Object.getOwnPropertyDescriptor(_this._value.__proto__.__proto__, message.Shema) : undefined;
/** @type {?} */
var all = [];
/** @type {?} */
var overwriteProp = _this.owner ? _this.owner.prop : undefined;
if (_this.descriptor && _this.descriptor.value) {
/** @type {?} */
var v = _this.descriptor.value;
try {
for (var _b = tslib_1.__values(v.list), _c = _b.next(); !_c.done; _c = _b.next()) {
var name = _c.value;
/** @type {?} */
var descriptor = v.hash[name];
/** @type {?} */
var template = void 0;
if (descriptor.param.type == BaseValueType.Custom && descriptor.param.template) {
template = message.Template[descriptor.param.template];
}
else {
template = message.Template[descriptor.param.type];
}
template = template || _base_;
if (descriptor.param.prop !== BaseValueProp.None) {
/** @type {?} */
var prop = descriptor.param.prop == BaseValueProp.Input ?
(overwriteProp && overwriteProp == BaseValueProp.Disabled ? BaseValueProp.Disabled : descriptor.param.prop)
: descriptor.param.prop;
all.push({
value: {
target: _this._value,
prop: prop,
name: name,
owner: _this.owner,
param: descriptor.param,
uid: Math.random().toString(36).substring(2) + Date.now().toString(36),
/**
* @return {?}
*/
get value() { return this.target[this.name]; },
/**
* @param {?} value
* @return {?}
*/
set value(value) {
this.target[this.name] = value;
}
},
template: template
});
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
_this.values = all;
}
}));
};
/**
* @return {?}
*/
BaseComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
};
BaseComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-base',
template: "<table class=\"table table-scroll\">\n <tr *ngFor=\"let data of values\">\n <ng-template \n [ngIf]=\"data.template\" \n [ngTemplateOutlet]=\"data.template\" \n [ngTemplateOutletContext]=\"{ $implicit: data.value }\"\n >\n </ng-template>\n </tr>\n</table>\n<div *ngIf=\"values.length==0 && error\">\n <ng-template \n [ngIf]=\"error\" \n [ngTemplateOutlet]=\"error\" \n [ngTemplateOutletContext]=\"{ $implicit: _value }\"\n >\n </ng-template>\n</div>\n",
styles: [""]
}] }
];
/** @nocollapse */
BaseComponent.ctorParameters = function () { return [
{ type: TemplateService }
]; };
BaseComponent.propDecorators = {
_value: [{ type: Input, args: ['value',] }],
owner: [{ type: Input, args: ['owner',] }]
};
return BaseComponent;
}());
export { BaseComponent };
if (false) {
/** @type {?} */
BaseComponent.prototype._value;
/** @type {?} */
BaseComponent.prototype.owner;
/**
* @type {?}
* @private
*/
BaseComponent.prototype.descriptor;
/** @type {?} */
BaseComponent.prototype.values;
/** @type {?} */
BaseComponent.prototype.error;
/**
* @type {?}
* @private
*/
BaseComponent.prototype.template;
}
var TemplateBaseComponent = /** @class */ (function () {
function TemplateBaseComponent() {
}
/**
* @param {?} value
* @return {?}
*/
TemplateBaseComponent.prototype.isDisabled = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value.prop == BaseValueProp.Disabled;
};
/**
* @param {?} value
* @return {?}
*/
TemplateBaseComponent.prototype.isHidden = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value.prop == BaseValueProp.Hidden;
};
/**
* @param {?} value
* @return {?}
*/
TemplateBaseComponent.prototype.isInput = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value.prop == BaseValueProp.Input;
};
/**
* @param {?} value
* @return {?}
*/
TemplateBaseComponent.prototype.isText = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value.prop == BaseValueProp.Text;
};
/**
* @return {?}
*/
TemplateBaseComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.disabled = this.Value.prop == BaseValueProp.Disabled;
if (this.Value.prop == BaseValueProp.Input || this.Value.prop == BaseValueProp.Disabled) {
this.type = "text";
}
else if (this.Value.prop == BaseValueProp.Hidden) {
this.type = "hidden";
}
};
TemplateBaseComponent.propDecorators = {
Value: [{ type: Input, args: ['value',] }],
Owner: [{ type: Input, args: ['owner',] }]
};
return TemplateBaseComponent;
}());
export { TemplateBaseComponent };
if (false) {
/** @type {?} */
TemplateBaseComponent.prototype.Value;
/** @type {?} */
TemplateBaseComponent.prototype.Owner;
/** @type {?} */
TemplateBaseComponent.prototype.type;
/** @type {?} */
TemplateBaseComponent.prototype.disabled;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWFuYWdlLyIsInNvdXJjZXMiOlsibGliL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWEsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSXZFO0lBYUUsdUJBQW9CLFFBQXdCO1FBQXhCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBSnJDLFdBQU0sR0FBYyxFQUFFLENBQUM7SUFNOUIsQ0FBQzs7OztJQUVELGdDQUFROzs7SUFBUjtRQUVFLCtCQUErQjtRQUZqQyxpQkE4REM7UUExREMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQ3BDLFVBQUMsT0FBTzs7WUFDSixJQUFHLE9BQU8sRUFDVjs7O29CQUVRLE1BQU0sR0FBb0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxLQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuRCxLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUksQ0FBQyxNQUFNLEtBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDOztvQkFDbkksR0FBRyxHQUFHLEVBQUU7O29CQUNOLGFBQWEsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFD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QixzQ0FBbUM7O0lBQ25DLHFDQUFZOztJQUNaLHlDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RlbXBsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVZhbHVlVHlwZSwgQmFzZVZhbHVlLCBCYXNlVmFsdWVQcm9wIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1iYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZSA6IGFueTtcbiAgQElucHV0KCdvd25lcicpIHB1YmxpYyBvd25lciA6IGFueTtcbiAgcHJpdmF0ZSBkZXNjcmlwdG9yOlByb3BlcnR5RGVzY3JpcHRvcjtcbiAgcHVibGljIHZhbHVlczpBcnJheTxhbnk+ID0gW107XG4gIFxuICBwdWJsaWMgZXJyb3I6VGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlOlRlbXBsYXRlU2VydmljZSkgXG4gIHsgXG4gIH1cblxuICBuZ09uSW5pdCgpIFxuICB7XG4gICAgLy8gIDxwcmU+e3tWYWx1ZSB8IGpzb259fTwvcHJlPlxuXG4gICAgdGhpcy50ZW1wbGF0ZS5nZXRUZW1wbGF0ZXMoKS5zdWJzY3JpYmUoXG4gICAgICAobWVzc2FnZSk9PntcbiAgICAgICAgICBpZihtZXNzYWdlKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ3N1YnNjcmliZScsdGhpcyk7XG4gICAgICAgICAgICBjb25zdCBfYmFzZV86VGVtcGxhdGVSZWY8YW55PiA9IG1lc3NhZ2UuVGVtcGxhdGVbQmFzZVZhbHVlVHlwZS5UZXh0XTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlLlRlbXBsYXRlW0Jhc2VWYWx1ZVR5cGUuRXJyb3JdO1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5fdmFsdWUhPT11bmRlZmluZWQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuX3ZhbHVlLl9fcHJvdG9fXy5fX3Byb3RvX18sbWVzc2FnZS5TaGVtYSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgYWxsID0gW107XG4gICAgICAgICAgICBjb25zdCBvdmVyd3JpdGVQcm9wID0gdGhpcy5vd25lciA/IHRoaXMub3duZXIucHJvcCA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYodGhpcy5kZXNjcmlwdG9yICYmIHRoaXMuZGVzY3JpcHRvci52YWx1ZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGZvcih2YXIgbmFtZSBvZiB2Lmxpc3QpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdG9yOkJhc2VWYWx1ZSA9IHYuaGFzaFtuYW1lXTtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgaWYoZGVzY3JpcHRvci5wYXJhbS50eXBlPT1CYXNlVmFsdWVUeXBlLkN1c3RvbSAmJiBkZXNjcmlwdG9yLnBhcmFtLnRlbXBsYXRlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbWVzc2FnZS5UZW1wbGF0ZVtkZXNjcmlwdG9yLnBhcmFtLnRlbXBsYXRlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbWVzc2FnZS5UZW1wbGF0ZVtkZXNjcmlwdG9yLnBhcmFtLnR5cGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlIHx8IF9iYXNlXztcbiAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBpZihkZXNjcmlwdG9yLnBhcmFtLnByb3AhPT1CYXNlVmFsdWVQcm9wLk5vbmUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGV0IHByb3AgPSBkZXNjcmlwdG9yLnBhcmFtLnByb3A9PUJhc2VWYWx1ZVByb3AuSW5wdXQgP1xuICAgICAgICAgICAgICAgICAgICAob3ZlcndyaXRlUHJvcCAmJiBvdmVyd3JpdGVQcm9wPT1CYXNlVmFsdWVQcm9wLkRpc2FibGVkID8gQmFzZVZhbHVlUHJvcC5EaXNhYmxlZCA6IGRlc2NyaXB0b3IucGFyYW0ucHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBkZXNjcmlwdG9yLnBhcmFtLnByb3A7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGFsbC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIDogdGhpcy5fdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcCAgICA6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgb3duZXIgICA6IHRoaXMub3duZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW0gICA6IGRlc2NyaXB0b3IucGFyYW0sXG4gICAgICAgICAgICAgICAgICAgICAgdWlkICAgICA6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKSArIERhdGUubm93KCkudG9TdHJpbmcoMzYpLFxuICAgICAgICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMudGFyZ2V0W3RoaXMubmFtZV19LFxuICAgICAgICAgICAgICAgICAgICAgIHNldCB2YWx1ZSh2YWx1ZSkgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRbdGhpcy5uYW1lXSA9IHZhbHVlIFxuICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlICAgOiB0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IGFsbDtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgndmFsdWUnKSBWYWx1ZSA6IGFueTtcbiAgQElucHV0KCdvd25lcicpIHB1YmxpYyBPd25lciA6IGFueTtcbiAgdHlwZTpzdHJpbmc7XG4gIHB1YmxpYyBkaXNhYmxlZDpCb29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCl7fVxuICBpc0Rpc2FibGVkKHZhbHVlKTpCb29sZWFuXG4gIHtcbiAgICByZXR1cm4gdmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5EaXNhYmxlZDtcbiAgfVxuICBpc0hpZGRlbih2YWx1ZSk6Qm9vbGVhblxuICB7XG4gICAgcmV0dXJuIHZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuSGlkZGVuO1xuICB9XG4gIGlzSW5wdXQodmFsdWUpOkJvb2xlYW5cbiAge1xuICAgIHJldHVybiB2YWx1ZS5wcm9wPT1CYXNlVmFsdWVQcm9wLklucHV0O1xuICB9XG4gIGlzVGV4dCh2YWx1ZSk6Qm9vbGVhblxuICB7XG4gICAgcmV0dXJuIHZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuVGV4dDtcbiAgfVxuICBuZ09uSW5pdCgpIFxuICB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuVmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5EaXNhYmxlZDtcbiAgICBpZih0aGlzLlZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuSW5wdXQgfHwgdGhpcy5WYWx1ZS5wcm9wPT1CYXNlVmFsdWVQcm9wLkRpc2FibGVkKVxuICAgIHtcbiAgICAgIHRoaXMudHlwZSA9IFwidGV4dFwiO1xuICAgIH1cbiAgICBlbHNlIGlmKHRoaXMuVmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5IaWRkZW4pXG4gICAge1xuICAgICAgdGhpcy50eXBlID0gXCJoaWRkZW5cIjtcbiAgICB9XG4gIH1cblxufSJdfQ==