UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

217 lines (216 loc) 15.9 kB
/** * @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