com.phloxui
Version:
PhloxUI Ng2+ Framework
197 lines (196 loc) • 18 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Component, Input, ViewContainerRef, ComponentFactoryResolver, ElementRef } from '@angular/core';
import { AbstractDataEditor } from '../AbstractDataEditor';
import { RecordView } from './RecordView.component';
import { CalendarView } from './CalendarView.component';
import { FormView } from './FormView.component';
import { ViewModel } from '../../model/ViewModel';
var /** @type {?} */ TYPE_NAME = "phx-view-wrapper";
var /** @type {?} */ RECORD_VIEW = RecordView.TYPE_NAME;
var /** @type {?} */ CALENDAR_VIEW = CalendarView.TYPE_NAME;
var /** @type {?} */ FORM_VIEW = FormView.TYPE_NAME;
var /** @type {?} */ KANBAN_VIEW = 'kanban-view';
var /** @type {?} */ RECYCLE_VIEW = 'recycle-view';
var ViewWrapper = /** @class */ (function () {
function ViewWrapper(target, componentFactoryResolver, elementRef) {
this.target = target;
this.componentFactoryResolver = componentFactoryResolver;
this.elementRef = elementRef;
this.isRendered = false;
}
/**
* @return {?}
*/
ViewWrapper.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.addViewWrapper(this);
}
};
/**
* @return {?}
*/
ViewWrapper.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.removeViewWrapper(this);
}
};
/**
* @return {?}
*/
ViewWrapper.prototype.reRender = /**
* @return {?}
*/
function () {
this.isRendered = false;
this.render();
};
/**
* @return {?}
*/
ViewWrapper.prototype.render = /**
* @return {?}
*/
function () {
var _this = this;
if (this.isRendered) {
return;
}
if (this.model === null || this.model === undefined) {
return;
}
// remove old dom
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
if (this.componentRef !== null && typeof this.componentRef !== 'undefined') {
if (typeof this.componentRef.instance.setData === 'function') {
this.componentRef.instance.setData(null);
}
if (typeof this.componentRef.instance.setDataParent === 'function') {
this.componentRef.instance.setDataParent(null);
}
this.componentRef.destroy();
}
}
var /** @type {?} */ compType = this.getViewComponentType(this.model.type);
if (compType != null && (typeof compType !== 'undefined')) {
var /** @type {?} */ simpleCompoFactory = this.componentFactoryResolver.resolveComponentFactory(compType);
var /** @type {?} */ compRef = this.target.createComponent(simpleCompoFactory);
compRef.instance.setEditor(this.editor);
compRef.instance.setModel(this.model);
this.componentRef = compRef;
// use Function handler form because cant use output and emit out
var /** @type {?} */ showEvent = compRef.instance.getShowEvent();
if (showEvent !== null && typeof showEvent !== 'undefined') {
showEvent.subscribe(function (event) {
if (_this.showEventHandler !== null && typeof _this.showEventHandler !== 'undefined') {
_this.showEventHandler(event);
}
});
}
var /** @type {?} */ hideEvent = compRef.instance.getHideEvent();
if (hideEvent !== null && typeof hideEvent !== 'undefined') {
hideEvent.subscribe(function (event) {
if (_this.hideEventHandler !== null && typeof _this.hideEventHandler !== 'undefined') {
_this.hideEventHandler(event);
}
});
}
}
this.isRendered = true;
};
/**
* @param {?} typeName
* @return {?}
*/
ViewWrapper.prototype.getViewComponentType = /**
* @param {?} typeName
* @return {?}
*/
function (typeName) {
if (typeName === RECORD_VIEW) {
return RecordView;
}
else if (typeName === CALENDAR_VIEW) {
return CalendarView;
}
else if (typeName === FORM_VIEW) {
return FormView;
}
else if (typeName === KANBAN_VIEW) {
}
else if (typeName === RECYCLE_VIEW) {
}
return null;
};
/**
* @return {?}
*/
ViewWrapper.prototype.isRender = /**
* @return {?}
*/
function () {
return this.isRendered;
};
ViewWrapper.TYPE_NAME = TYPE_NAME;
ViewWrapper.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: ""
},] },
];
/** @nocollapse */
ViewWrapper.ctorParameters = function () { return [
{ type: ViewContainerRef, },
{ type: ComponentFactoryResolver, },
{ type: ElementRef, },
]; };
ViewWrapper.propDecorators = {
"editor": [{ type: Input },],
"model": [{ type: Input },],
"showEventHandler": [{ type: Input },],
"hideEventHandler": [{ type: Input },],
};
return ViewWrapper;
}());
export { ViewWrapper };
function ViewWrapper_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ViewWrapper.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ViewWrapper.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ViewWrapper.propDecorators;
/** @type {?} */
ViewWrapper.TYPE_NAME;
/** @type {?} */
ViewWrapper.prototype.editor;
/** @type {?} */
ViewWrapper.prototype.model;
/** @type {?} */
ViewWrapper.prototype.componentFactoryResolver;
/** @type {?} */
ViewWrapper.prototype.target;
/** @type {?} */
ViewWrapper.prototype.showEventHandler;
/** @type {?} */
ViewWrapper.prototype.hideEventHandler;
/** @type {?} */
ViewWrapper.prototype.isRendered;
/** @type {?} */
ViewWrapper.prototype.elementRef;
/** @type {?} */
ViewWrapper.prototype.componentRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1dyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2VkaXRvci9lZGl0b3IuaW50ZXJuYWwvVmlld1dyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxnQkFBZ0IsRUFBUSx3QkFBd0IsRUFDdEUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxxQkFBTSxTQUFTLEdBQVcsa0JBQWtCLENBQUM7QUFFN0MscUJBQU0sV0FBVyxHQUFXLFVBQVUsQ0FBQyxTQUFTLENBQUM7QUFDakQscUJBQU0sYUFBYSxHQUFXLFlBQVksQ0FBQyxTQUFTLENBQUM7QUFDckQscUJBQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDN0MscUJBQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQztBQUMxQyxxQkFBTSxZQUFZLEdBQVcsY0FBYyxDQUFDOztJQXlCMUMscUJBQVksTUFBd0IsRUFBRSx3QkFBa0QsRUFBRSxVQUFzQjtRQUM5RyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsd0JBQXdCLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7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QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FFckM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FFdEM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDOzs7OztJQUdQLDhCQUFROzs7O1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7OzRCQWpIa0IsU0FBUzs7Z0JBUHJELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsRUFBRTtpQkFDYjs7OztnQkFwQmtDLGdCQUFnQjtnQkFBUSx3QkFBd0I7Z0JBQ3RFLFVBQVU7OzsyQkF3QnBCLEtBQUs7MEJBRUwsS0FBSztxQ0FJTCxLQUFLO3FDQUVMLEtBQUs7O3NCQWpDUjs7U0FxQmEsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgVHlwZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBPdXRwdXQsXG4gIE9uRGVzdHJveSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhRWRpdG9yIH0gZnJvbSAnLi4vQWJzdHJhY3REYXRhRWRpdG9yJztcbmltcG9ydCB7IFJlY29yZFZpZXcgfSBmcm9tICcuL1JlY29yZFZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyVmlldyB9IGZyb20gJy4vQ2FsZW5kYXJWaWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtVmlldyB9IGZyb20gJy4vRm9ybVZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL1ZpZXdNb2RlbCc7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtdmlldy13cmFwcGVyXCI7XG5cbmNvbnN0IFJFQ09SRF9WSUVXOiBzdHJpbmcgPSBSZWNvcmRWaWV3LlRZUEVfTkFNRTtcbmNvbnN0IENBTEVOREFSX1ZJRVc6IHN0cmluZyA9IENhbGVuZGFyVmlldy5UWVBFX05BTUU7XG5jb25zdCBGT1JNX1ZJRVc6IHN0cmluZyA9IEZvcm1WaWV3LlRZUEVfTkFNRTtcbmNvbnN0IEtBTkJBTl9WSUVXOiBzdHJpbmcgPSAna2FuYmFuLXZpZXcnO1xuY29uc3QgUkVDWUNMRV9WSUVXOiBzdHJpbmcgPSAncmVjeWNsZS12aWV3JztcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3V3JhcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZWRpdG9yOiBBYnN0cmFjdERhdGFFZGl0b3I7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgbW9kZWw6IFZpZXdNb2RlbDtcbiAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjtcbiAgcHJpdmF0ZSB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWY7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgc2hvd0V2ZW50SGFuZGxlcjogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgaGlkZUV2ZW50SGFuZGxlcjogRnVuY3Rpb247XG4gIHByaXZhdGUgaXNSZW5kZXJlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmOiBhbnk7XG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBhbnk7XG5cbiAgY29uc3RydWN0b3IodGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy5pc1JlbmRlcmVkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yICE9PSBudWxsICYmICh0eXBlb2YgdGhpcy5lZGl0b3IgIT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgdGhpcy5lZGl0b3IuYWRkVmlld1dyYXBwZXIodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmVkaXRvciAhPT0gbnVsbCAmJiAodHlwZW9mIHRoaXMuZWRpdG9yICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnJlbW92ZVZpZXdXcmFwcGVyKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZVJlbmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzUmVuZGVyZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1JlbmRlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYodGhpcy5tb2RlbCA9PT0gbnVsbCB8fCB0aGlzLm1vZGVsID09PSB1bmRlZmluZWQpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBvbGQgZG9tXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZiAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5lbGVtZW50UmVmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmNvbXBvbmVudFJlZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXREYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YVBhcmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGFQYXJlbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNvbXBUeXBlID0gdGhpcy5nZXRWaWV3Q29tcG9uZW50VHlwZSh0aGlzLm1vZGVsLnR5cGUpO1xuXG4gICAgaWYgKGNvbXBUeXBlICE9IG51bGwgJiYgKHR5cGVvZiBjb21wVHlwZSAhPT0gJ3VuZGVmaW5lZCcpKSB7XG4gICAgICBjb25zdCBzaW1wbGVDb21wb0ZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wVHlwZSk7XG4gICAgICBsZXQgY29tcFJlZiA9IHRoaXMudGFyZ2V0LmNyZWF0ZUNvbXBvbmVudChzaW1wbGVDb21wb0ZhY3RvcnkpO1xuICAgICAgY29tcFJlZi5pbnN0YW5jZS5zZXRFZGl0b3IodGhpcy5lZGl0b3IpO1xuICAgICAgY29tcFJlZi5pbnN0YW5jZS5zZXRNb2RlbCh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcFJlZjtcblxuICAgICAgLy8gdXNlIEZ1bmN0aW9uIGhhbmRsZXIgZm9ybSBiZWNhdXNlIGNhbnQgdXNlIG91dHB1dCBhbmQgZW1pdCBvdXRcbiAgICAgIGxldCBzaG93RXZlbnQgPSBjb21wUmVmLmluc3RhbmNlLmdldFNob3dFdmVudCgpO1xuICAgICAgaWYgKHNob3dFdmVudCAhPT0gbnVsbCAmJiB0eXBlb2Ygc2hvd0V2ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaG93RXZlbnQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0V2ZW50SGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5zaG93RXZlbnRIYW5kbGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5zaG93RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbGV0IGhpZGVFdmVudCA9IGNvbXBSZWYuaW5zdGFuY2UuZ2V0SGlkZUV2ZW50KCk7XG4gICAgICBpZiAoaGlkZUV2ZW50ICE9PSBudWxsICYmIHR5cGVvZiBoaWRlRXZlbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGhpZGVFdmVudC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5oaWRlRXZlbnRIYW5kbGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmhpZGVFdmVudEhhbmRsZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pc1JlbmRlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Vmlld0NvbXBvbmVudFR5cGUodHlwZU5hbWU6IHN0cmluZyk6IFR5cGU8YW55PiB7XG5cbiAgICBpZiAodHlwZU5hbWUgPT09IFJFQ09SRF9WSUVXKSB7XG4gICAgICByZXR1cm4gUmVjb3JkVmlldztcbiAgICB9IGVsc2UgaWYgKHR5cGVOYW1lID09PSBDQUxFTkRBUl9WSUVXKSB7XG4gICAgICByZXR1cm4gQ2FsZW5kYXJWaWV3O1xuICAgIH0gZWxzZSBpZiAodHlwZU5hbWUgPT09IEZPUk1fVklFVykge1xuICAgICAgcmV0dXJuIEZvcm1WaWV3O1xuICAgIH0gZWxzZSBpZiAodHlwZU5hbWUgPT09IEtBTkJBTl9WSUVXKSB7XG5cbiAgICB9IGVsc2UgaWYgKHR5cGVOYW1lID09PSBSRUNZQ0xFX1ZJRVcpIHtcblxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIGlzUmVuZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUmVuZGVyZWQ7XG4gIH1cbn1cbiJdfQ==