com.phloxui
Version:
PhloxUI Ng2+ Framework
217 lines (216 loc) • 15.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractDataView } from './AbstractDataView';
import { Option } from '../../decorator/Option.decorator';
/**
* @abstract
*/
var AbstractHasFormatterDataView = /** @class */ (function (_super) {
tslib_1.__extends(AbstractHasFormatterDataView, _super);
function AbstractHasFormatterDataView(elementRef, formatterFactory) {
var _this = _super.call(this, elementRef) || this;
_this.formatterFactory = formatterFactory;
_this._formatterInited = false;
return _this;
}
Object.defineProperty(AbstractHasFormatterDataView.prototype, "formattedData", {
get: /**
* @return {?}
*/
function () {
if (!this.formatterUsePropertyValue && this._formatterInited) {
return this.getFormattedData();
}
else {
return this._formattedData;
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
this._formattedData = this.getFormattedData();
this._formatterInited = true;
};
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.isFormatterUsePropertyValue = /**
* @return {?}
*/
function () {
return this.formatterUsePropertyValue;
};
/**
* @param {?} formatter
* @param {?} data
* @return {?}
*/
AbstractHasFormatterDataView.resolveFormattedData = /**
* @param {?} formatter
* @param {?} data
* @return {?}
*/
function (formatter, data) {
if (formatter !== null && typeof formatter !== 'undefined') {
return formatter.format(data);
}
return data;
};
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.getFormatterName = /**
* @return {?}
*/
function () {
return this.formatterName;
};
/**
* @param {?} formatterName
* @return {?}
*/
AbstractHasFormatterDataView.prototype.setFormatterName = /**
* @param {?} formatterName
* @return {?}
*/
function (formatterName) {
this.formatterName = formatterName;
var /** @type {?} */ formatter = null;
if (this.formatterFactory !== null && typeof this.formatterFactory !== 'undefined') {
formatter = this.formatterFactory.createFormatter(formatterName);
}
this.formatter = formatter;
this.setFormatterOptions(this.formatterOptions);
this._formattedData = this.getFormattedData();
};
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.getFormatterOptions = /**
* @return {?}
*/
function () {
return this.formatterOptions;
};
/**
* @param {?} options
* @return {?}
*/
AbstractHasFormatterDataView.prototype.setFormatterOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
this.formatterOptions = options;
if (this.formatter !== null && typeof this.formatter !== 'undefined') {
var /** @type {?} */ f = this.formatter;
if (typeof f.setOptions === 'function') {
f.setOptions(this.formatterOptions);
}
}
};
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.getFormatter = /**
* @return {?}
*/
function () {
return this.formatter;
};
/**
* @param {?} formatter
* @return {?}
*/
AbstractHasFormatterDataView.prototype.setFormatter = /**
* @param {?} formatter
* @return {?}
*/
function (formatter) {
this.formatter = formatter;
if (this.formatter !== null && typeof this.formatter !== 'undefined') {
this.formatterName = this.formatter.getName();
}
else {
this.formatterName = null;
}
this.setFormatterOptions(this.formatterOptions);
this._formattedData = this.getFormattedData();
};
/**
* @param {?} options
* @return {?}
*/
AbstractHasFormatterDataView.prototype.setOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
_super.prototype.setOptions.call(this, options);
if (this.formatter !== null && typeof this.formatter !== 'undefined') {
this.setFormatter(this.formatter);
}
else if (this.formatterName !== null && typeof this.formatterName !== 'undefined') {
this.setFormatterName(this.formatterName);
}
else {
this.formatter = null;
this.formatterName = null;
}
};
/**
* @return {?}
*/
AbstractHasFormatterDataView.prototype.getFormattedData = /**
* @return {?}
*/
function () {
return AbstractHasFormatterDataView.resolveFormattedData(this.formatter, this.mappedData);
};
tslib_1.__decorate([
Option('formatter.name'),
tslib_1.__metadata("design:type", String)
], AbstractHasFormatterDataView.prototype, "formatterName", void 0);
tslib_1.__decorate([
Option('formatter.options'),
tslib_1.__metadata("design:type", Object)
], AbstractHasFormatterDataView.prototype, "formatterOptions", void 0);
tslib_1.__decorate([
Option('formatter.instance'),
tslib_1.__metadata("design:type", Object)
], AbstractHasFormatterDataView.prototype, "formatter", void 0);
tslib_1.__decorate([
Option('formatter.usePropertyValue'),
tslib_1.__metadata("design:type", Boolean)
], AbstractHasFormatterDataView.prototype, "formatterUsePropertyValue", void 0);
return AbstractHasFormatterDataView;
}(AbstractDataView));
export { AbstractHasFormatterDataView };
function AbstractHasFormatterDataView_tsickle_Closure_declarations() {
/** @type {?} */
AbstractHasFormatterDataView.prototype.formatterName;
/** @type {?} */
AbstractHasFormatterDataView.prototype.formatterOptions;
/** @type {?} */
AbstractHasFormatterDataView.prototype.formatter;
/** @type {?} */
AbstractHasFormatterDataView.prototype.formatterUsePropertyValue;
/** @type {?} */
AbstractHasFormatterDataView.prototype.formatterFactory;
/** @type {?} */
AbstractHasFormatterDataView.prototype._formattedData;
/** @type {?} */
AbstractHasFormatterDataView.prototype._formatterInited;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RIYXNGb3JtYXR0ZXJEYXRhVmlldy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9BYnN0cmFjdEhhc0Zvcm1hdHRlckRhdGFWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztJQUdDLHdEQUFnQjtJQXNCekUsc0NBQVksVUFBc0IsRUFBRSxnQkFBa0M7UUFBdEUsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FJbEI7UUFGQyxLQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsS0FBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQzs7S0FDL0I7MEJBYlUsdURBQWE7Ozs7O1lBQ3RCLEVBQUUsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUM7Z0JBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUNoQztZQUFBLElBQUksQ0FBQSxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVCOzs7Ozs7OztJQVVJLCtDQUFROzs7O1FBQ2IsaUJBQU0sUUFBUSxXQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDOzs7OztJQUd4QixrRUFBMkI7Ozs7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQzs7Ozs7OztJQUcxQixpREFBb0I7Ozs7O2NBQUMsU0FBcUIsRUFBRSxJQUFTO1FBQ2pFLEVBQUUsQ0FBQSxD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QWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjs7Ozs7SUFHSSx1REFBZ0I7Ozs7UUFDckIsTUFBTSxDQUFDLDRCQUE0QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7UUEzRzNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzs7OztRQUV4QixNQUFNLENBQUMsbUJBQW1CLENBQUM7Ozs7UUFFM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDOzs7O1FBRTVCLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQzs7O3VDQWZ2QztFQU8yRCxnQkFBZ0I7U0FBckQsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFWaWV3IH0gZnJvbSAnLi9BYnN0cmFjdERhdGFWaWV3JztcbmltcG9ydCB7IElIYXNGb3JtYXR0ZXIgfSBmcm9tICcuLi9JSGFzRm9ybWF0dGVyJztcbmltcG9ydCB7IElGb3JtYXR0ZXIgfSBmcm9tICcuLi8uLi9zaGFyZS9mb3JtYXR0ZXIvSUZvcm1hdHRlcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBGb3JtYXR0ZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vc2VydmljZS9Gb3JtYXR0ZXJGYWN0b3J5LnNlcnZpY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RIYXNGb3JtYXR0ZXJEYXRhVmlldyBleHRlbmRzIEFic3RyYWN0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQsIElIYXNGb3JtYXR0ZXIge1xuXG4gIEBPcHRpb24oJ2Zvcm1hdHRlci5uYW1lJylcbiAgcHJvdGVjdGVkIGZvcm1hdHRlck5hbWU6IHN0cmluZztcbiAgQE9wdGlvbignZm9ybWF0dGVyLm9wdGlvbnMnKVxuICBwcm90ZWN0ZWQgZm9ybWF0dGVyT3B0aW9uczogYW55O1xuICBAT3B0aW9uKCdmb3JtYXR0ZXIuaW5zdGFuY2UnKVxuICBwcm90ZWN0ZWQgZm9ybWF0dGVyOiBJRm9ybWF0dGVyO1xuICBAT3B0aW9uKCdmb3JtYXR0ZXIudXNlUHJvcGVydHlWYWx1ZScpXG4gIHByb3RlY3RlZCBmb3JtYXR0ZXJVc2VQcm9wZXJ0eVZhbHVlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgZm9ybWF0dGVyRmFjdG9yeTogRm9ybWF0dGVyRmFjdG9yeTtcbiAgcHJvdGVjdGVkIF9mb3JtYXR0ZWREYXRhOiBhbnk7XG4gIHByaXZhdGUgX2Zvcm1hdHRlckluaXRlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgZ2V0IGZvcm1hdHRlZERhdGEoKTogYW55e1xuICAgIGlmKCF0aGlzLmZvcm1hdHRlclVzZVByb3BlcnR5VmFsdWUgJiYgdGhpcy5fZm9ybWF0dGVySW5pdGVkKXtcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZERhdGEoKTtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWREYXRhO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGZvcm1hdHRlckZhY3Rvcnk6IEZvcm1hdHRlckZhY3RvcnkpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgIHRoaXMuZm9ybWF0dGVyRmFjdG9yeSA9IGZvcm1hdHRlckZhY3Rvcnk7XG4gICAgdGhpcy5fZm9ybWF0dGVySW5pdGVkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuX2Zvcm1hdHRlZERhdGEgPSB0aGlzLmdldEZvcm1hdHRlZERhdGEoKTtcbiAgICB0aGlzLl9mb3JtYXR0ZXJJbml0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzRm9ybWF0dGVyVXNlUHJvcGVydHlWYWx1ZSgpOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLmZvcm1hdHRlclVzZVByb3BlcnR5VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlc29sdmVGb3JtYXR0ZWREYXRhKGZvcm1hdHRlcjogSUZvcm1hdHRlciwgZGF0YTogYW55KTogYW55IHtcbiAgICBpZihmb3JtYXR0ZXIgIT09IG51bGwgJiYgdHlwZW9mIGZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJOYW1lO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdHRlck5hbWUoZm9ybWF0dGVyTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXR0ZXJOYW1lID0gZm9ybWF0dGVyTmFtZTtcblxuICAgIGxldCBmb3JtYXR0ZXI6IGFueSA9IG51bGw7XG4gICAgaWYgKHRoaXMuZm9ybWF0dGVyRmFjdG9yeSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5mb3JtYXR0ZXJGYWN0b3J5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZXJGYWN0b3J5LmNyZWF0ZUZvcm1hdHRlcihmb3JtYXR0ZXJOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgdGhpcy5zZXRGb3JtYXR0ZXJPcHRpb25zKHRoaXMuZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgdGhpcy5fZm9ybWF0dGVkRGF0YSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRlck9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdHRlck9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXR0ZXJPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmKHRoaXMuZm9ybWF0dGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgbGV0IGY6IGFueSA9IHRoaXMuZm9ybWF0dGVyO1xuICAgICAgaWYodHlwZW9mIGYuc2V0T3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAgIGYuc2V0T3B0aW9ucyh0aGlzLmZvcm1hdHRlck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtYXR0ZXIoKTogSUZvcm1hdHRlciB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdHRlcihmb3JtYXR0ZXI6IElGb3JtYXR0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcblxuICAgIGlmICh0aGlzLmZvcm1hdHRlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5mb3JtYXR0ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmZvcm1hdHRlck5hbWUgPSB0aGlzLmZvcm1hdHRlci5nZXROYW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVyTmFtZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRGb3JtYXR0ZXJPcHRpb25zKHRoaXMuZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgdGhpcy5fZm9ybWF0dGVkRGF0YSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgIGlmKHRoaXMuZm9ybWF0dGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgdGhpcy5zZXRGb3JtYXR0ZXIodGhpcy5mb3JtYXR0ZXIpO1xuICAgIH0gZWxzZSBpZih0aGlzLmZvcm1hdHRlck5hbWUgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZm9ybWF0dGVyTmFtZSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgdGhpcy5zZXRGb3JtYXR0ZXJOYW1lKHRoaXMuZm9ybWF0dGVyTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVyID0gbnVsbDtcbiAgICAgIHRoaXMuZm9ybWF0dGVyTmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRlZERhdGEoKTogYW55IHtcbiAgICByZXR1cm4gQWJzdHJhY3RIYXNGb3JtYXR0ZXJEYXRhVmlldy5yZXNvbHZlRm9ybWF0dGVkRGF0YSh0aGlzLmZvcm1hdHRlciwgdGhpcy5tYXBwZWREYXRhKTtcbiAgfVxufVxuIl19