ftable
Version:
Angular 6/7 Tables
138 lines (137 loc) • 12.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, ViewChild, ComponentFactoryResolver } from '@angular/core';
import { EmptyFFilterComponent } from './filters/emptyffilter.component';
import { TextFFilterComponent } from './filters/textffilter.component';
import { NumberFFilterComponent } from './filters/numberffilter.component';
import { CheckBoxFFilterComponent } from './filters/checkboxffilter.component';
import { DateFFilterComponent } from './filters/dateffilter.component';
import { FFilterDirective } from './ffilter.directive';
import { EventEmitter } from '@angular/core';
import { Output } from '@angular/core';
import { debounceTime } from 'rxjs/operators';
export class FFilterComponent {
/**
* @param {?} componentFactoryResolver
*/
constructor(componentFactoryResolver) {
this.componentFactoryResolver = componentFactoryResolver;
this.debounce = 500;
// Other data needed to be passed to filter
this.filter = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
this.loadComponent();
}
/**
* @return {?}
*/
ngOnDestroy() {
// clearInterval(this.interval);
}
/**
* @return {?}
*/
loadComponent() {
// filter counter
// Check if standard filters else load custom
/** @type {?} */
let fftilter;
if (this.filterType === 'string') {
fftilter = TextFFilterComponent;
}
else if (this.filterType === 'number') {
fftilter = NumberFFilterComponent;
}
else if (this.filterType === 'checkbox') {
fftilter = CheckBoxFFilterComponent;
}
else if (this.filterType === 'date') {
fftilter = DateFFilterComponent;
}
else if (typeof this.filterType !== 'string') {
fftilter = this.filterType;
}
else {
// No filter Filter
fftilter = EmptyFFilterComponent;
}
/** @type {?} */
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(fftilter);
// get reference of insertion point through
/** @type {?} */
const viewContainerRef = this.ffilterHost.viewContainerRef;
viewContainerRef.clear();
// Create instance of component
/** @type {?} */
const componentRef = viewContainerRef.createComponent(componentFactory);
// Pass data to filters
((/** @type {?} */ (componentRef.instance))).columnName = this.columnName;
((/** @type {?} */ (componentRef.instance))).source = this.source;
((/** @type {?} */ (componentRef.instance))).otherData = this.otherData;
// Bubble filter event
((/** @type {?} */ (componentRef.instance))).filter.pipe(debounceTime(this.debounce)).subscribe((event) => {
this.filter.emit(event);
});
this.filterr = ((/** @type {?} */ (componentRef.instance)));
}
/**
* @return {?}
*/
reset() {
this.filterr.reset();
}
}
FFilterComponent.totalfilters = 0;
FFilterComponent.decorators = [
{ type: Component, args: [{
selector: 'ft-ffilter',
template: `
<ng-template ffilter-host></ng-template>
`
}] }
];
/** @nocollapse */
FFilterComponent.ctorParameters = () => [
{ type: ComponentFactoryResolver }
];
FFilterComponent.propDecorators = {
ffilterHost: [{ type: ViewChild, args: [FFilterDirective,] }],
source: [{ type: Input }],
columnName: [{ type: Input }],
debounce: [{ type: Input }],
filterType: [{ type: Input }],
otherData: [{ type: Input }],
filter: [{ type: Output }]
};
if (false) {
/** @type {?} */
FFilterComponent.totalfilters;
/** @type {?} */
FFilterComponent.prototype.ffilterHost;
/** @type {?} */
FFilterComponent.prototype.source;
/** @type {?} */
FFilterComponent.prototype.columnName;
/** @type {?} */
FFilterComponent.prototype.debounce;
/** @type {?} */
FFilterComponent.prototype.filterType;
/** @type {?} */
FFilterComponent.prototype.otherData;
/** @type {?} */
FFilterComponent.prototype.filter;
/** @type {?} */
FFilterComponent.prototype.filterr;
/**
* @type {?}
* @private
*/
FFilterComponent.prototype.componentFactoryResolver;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mdGFibGUvIiwic291cmNlcyI6WyJsaWIvZmZpbHRlci9mZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLHdCQUF3QixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTOUMsTUFBTSxPQUFPLGdCQUFnQjs7OztJQWUzQixZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQVR0RCxhQUFRLEdBQVcsR0FBRyxDQUFDOztRQUs3QixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFJWSxDQUFDOzs7O0lBRTNFLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxnQ0FBZ0M7SUFDbEMsQ0FBQzs7OztJQUVELGFBQWE7Ozs7WUFHTixRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUM5QixRQUFRLEdBQUcsb0JBQW9CLENBQUM7U0FDbkM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ3JDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQztTQUNyQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDdkMsUUFBUSxHQUFHLHdCQUF3QixDQUFDO1NBQ3JDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLE1BQU0sRUFBRTtZQUNyQyxRQUFRLEdBQUcsb0JBQW9CLENBQUM7U0FDbkM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBTSxRQUFRLEVBQUU7WUFDN0MsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDOUI7YUFBTTtZQUNGLG1CQUFtQjtZQUNuQixRQUFRLEdBQUcscUJBQXFCLENBQUM7U0FDckM7O2NBRUssZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQzs7O2NBRWxGLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCO1FBQzFELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDOzs7Y0FFbkIsWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RSx1QkFBdUI7UUFDdkIsQ0FBQyxtQkFBYSxZQUFZLENBQUMsUUFBUSxFQUFBLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsRSxDQUFDLG1CQUFhLFlBQVksQ0FBQyxRQUFRLEVBQUEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELENBQUMsbUJBQWEsWUFBWSxDQUFDLFFBQVEsRUFBQSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFaEUsc0JBQXNCO1FBQ3RCLENBQUMsbUJBQWEsWUFBWSxDQUFDLFFBQVEsRUFBQSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsbUJBQWEsWUFBWSxDQUFDLFFBQVEsRUFBQSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7OztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O0FBbERNLDZCQUFZLEdBQUcsQ0FBQyxDQUFDOztZQXJCekIsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixRQUFRLEVBQUU7OzthQUdDO2FBQ1o7Ozs7WUFuQjZDLHdCQUF3Qjs7OzBCQXNCbkUsU0FBUyxTQUFDLGdCQUFnQjtxQkFDMUIsS0FBSzt5QkFFTCxLQUFLO3VCQUNMLEtBQUs7eUJBRUwsS0FBSzt3QkFDTCxLQUFLO3FCQUVMLE1BQU07Ozs7SUFHUCw4QkFBd0I7O0lBWnhCLHVDQUEyRDs7SUFDM0Qsa0NBQStCOztJQUUvQixzQ0FBbUM7O0lBQ25DLG9DQUF1Qzs7SUFFdkMsc0NBQWdDOztJQUNoQyxxQ0FBK0I7O0lBRS9CLGtDQUE4RDs7SUFFOUQsbUNBQXFCOzs7OztJQUVULG9EQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbXB0eUZGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvZW1wdHlmZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRGRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXJzL3RleHRmZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE51bWJlckZGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvbnVtYmVyZmZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja0JveEZGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvY2hlY2tib3hmZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVGRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXJzL2RhdGVmZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZGaWx0ZXJEaXJlY3RpdmUgfSBmcm9tICcuL2ZmaWx0ZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRkZpbHRlckJhc2UgfSBmcm9tICcuL2ZpbHRlcnMvZmZpbHRlci5iYXNlJztcclxuXHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmdC1mZmlsdGVyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZmlsdGVyLWhvc3Q+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRkZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChGRmlsdGVyRGlyZWN0aXZlKSBmZmlsdGVySG9zdDogRkZpbHRlckRpcmVjdGl2ZTsgLy8gSGFuZGxlIHRvIHRlbXBsYXRlIHdoZXJlIHRvIGxvYWQgY3VzdG9tIGZpbHRlclxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3VyY2U6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbk5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVib3VuY2U6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGZpbHRlclR5cGU6IGFueTsgLy8gVHlwZSBvZiBmaWx0ZXIgdG8gbG9hZCBvciBjdXN0b20uXHJcbiAgQElucHV0KCkgcHVibGljIG90aGVyRGF0YTogYW55OyAgLy8gT3RoZXIgZGF0YSBuZWVkZWQgdG8gYmUgcGFzc2VkIHRvIGZpbHRlclxyXG5cclxuICBAT3V0cHV0KCkgZmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIFxyXG4gIGZpbHRlcnI6IEZGaWx0ZXJCYXNlO1xyXG4gIHN0YXRpYyB0b3RhbGZpbHRlcnMgPSAwO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubG9hZENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gIH1cclxuXHJcbiAgbG9hZENvbXBvbmVudCgpIHtcclxuICAgIC8vIGZpbHRlciBjb3VudGVyXHJcbiAgICAvLyBDaGVjayBpZiBzdGFuZGFyZCBmaWx0ZXJzIGVsc2UgbG9hZCBjdXN0b21cclxuICAgIGxldCAgZmZ0aWx0ZXI7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGZmdGlsdGVyID0gVGV4dEZGaWx0ZXJDb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBmZnRpbHRlciA9IE51bWJlckZGaWx0ZXJDb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgIGZmdGlsdGVyID0gQ2hlY2tCb3hGRmlsdGVyQ29tcG9uZW50O1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgZmZ0aWx0ZXIgPSBEYXRlRkZpbHRlckNvbXBvbmVudDtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZmlsdGVyVHlwZSAgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZmZ0aWx0ZXIgPSB0aGlzLmZpbHRlclR5cGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgICAvLyBObyBmaWx0ZXIgRmlsdGVyXHJcbiAgICAgICAgIGZmdGlsdGVyID0gRW1wdHlGRmlsdGVyQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShmZnRpbHRlcik7XHJcbiAgICAvLyBnZXQgcmVmZXJlbmNlIG9mIGluc2VydGlvbiBwb2ludCB0aHJvdWdoXHJcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5mZmlsdGVySG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgLy8gQ3JlYXRlIGluc3RhbmNlIG9mIGNvbXBvbmVudFxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAvLyBQYXNzIGRhdGEgdG8gZmlsdGVyc1xyXG4gICAgKDxGRmlsdGVyQmFzZT5jb21wb25lbnRSZWYuaW5zdGFuY2UpLmNvbHVtbk5hbWUgPSB0aGlzLmNvbHVtbk5hbWU7XHJcbiAgICAoPEZGaWx0ZXJCYXNlPmNvbXBvbmVudFJlZi5pbnN0YW5jZSkuc291cmNlID0gdGhpcy5zb3VyY2U7XHJcbiAgICAoPEZGaWx0ZXJCYXNlPmNvbXBvbmVudFJlZi5pbnN0YW5jZSkub3RoZXJEYXRhID0gdGhpcy5vdGhlckRhdGE7XHJcblxyXG4gICAgLy8gQnViYmxlIGZpbHRlciBldmVudFxyXG4gICAgKDxGRmlsdGVyQmFzZT5jb21wb25lbnRSZWYuaW5zdGFuY2UpLmZpbHRlci5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXIuZW1pdChldmVudCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZmlsdGVyciA9ICg8RkZpbHRlckJhc2U+Y29tcG9uZW50UmVmLmluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpIHtcclxuICAgIHRoaXMuZmlsdGVyci5yZXNldCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19