ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
83 lines • 13.7 kB
JavaScript
import { Injectable, Injector } from "@angular/core";
import { FilterExpressionUtils } from "../util/filter-expression.utils";
import { Util } from "../util/util";
import * as i0 from "@angular/core";
export class OntimizeExportDataBaseProviderService {
constructor(injector) {
this.injector = injector;
}
initializeProvider(table) {
this.table = table;
const tableOptions = this.table.oTableOptions;
this.colsNotIncluded = this.table.getColumnsNotIncluded();
this.columns = tableOptions.visibleColumns.filter(c => this.colsNotIncluded.indexOf(c) === -1);
const tableColumnNames = tableOptions.visibleColumns.filter(c => this.colsNotIncluded.indexOf(c) === -1);
this.columnNames = this.table.getColumnNames(tableColumnNames);
this.sqlTypes = this.table.getSqlTypes();
this.entity = this.table.entity;
this.service = this.table.service;
this.filter = this.getFilterWithBasicExpression();
}
getFilterWithBasicExpression() {
let filter = {};
let parentKeysfilter = this.table.getComponentFilter();
filter = this.applyParentItemExpression(filter);
filter = this.applyColumnFilters(filter);
filter = Object.assign(filter || {}, parentKeysfilter);
if (!this.table.pageable) {
filter = this.applyQuickAndBuilderFilters(filter);
}
return filter;
}
applyParentItemExpression(filter) {
if (Object.keys(filter).length > 0) {
const parentItemExpr = FilterExpressionUtils.buildExpressionFromObject(filter);
filter = {};
filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = parentItemExpr;
}
return filter;
}
applyColumnFilters(filter) {
const beColFilter = this.table.getColumnFiltersExpression();
if (beColFilter) {
const currentFilterExpr = filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY];
if (!Util.isDefined(currentFilterExpr)) {
filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = beColFilter;
}
else {
filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] =
FilterExpressionUtils.buildComplexExpression(currentFilterExpr, beColFilter, FilterExpressionUtils.OP_AND);
}
}
return filter;
}
applyQuickAndBuilderFilters(filter) {
const quickFilterExpr = Util.isDefined(this.table.oTableQuickFilterComponent)
? this.table.oTableQuickFilterComponent.filterExpression
: undefined;
const filterBuilderExpr = Util.isDefined(this.table.filterBuilder)
? this.table.filterBuilder.getExpression()
: undefined;
let complexExpr = quickFilterExpr || filterBuilderExpr;
if (quickFilterExpr && filterBuilderExpr) {
complexExpr = FilterExpressionUtils.buildComplexExpression(quickFilterExpr, filterBuilderExpr, FilterExpressionUtils.OP_AND);
}
if (complexExpr) {
const currentBasicExpr = filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY];
if (!Util.isDefined(currentBasicExpr)) {
filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] = complexExpr;
}
else {
filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] =
FilterExpressionUtils.buildComplexExpression(currentBasicExpr, complexExpr, FilterExpressionUtils.OP_AND);
}
}
return filter;
}
}
OntimizeExportDataBaseProviderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OntimizeExportDataBaseProviderService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
OntimizeExportDataBaseProviderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OntimizeExportDataBaseProviderService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OntimizeExportDataBaseProviderService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib250aW1pemUtZXhwb3J0LWRhdGEtYmFzZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL29udGltaXplLWV4cG9ydC1kYXRhLWJhc2UtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUlwQyxNQUFNLE9BQU8scUNBQXFDO0lBV2hELFlBQXNCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBSSxDQUFDO0lBRzdDLGtCQUFrQixDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRy9GLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pHLElBQUks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QUN2RCxJQUFJLGVBQWUsSUFBSSxpQkFBaUIsRUFBRTtZQUN4QyxXQUFXLEdBQUcscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlIO1FBRUQsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRTVFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQzthQUNsRTtpQkFBTTtnQkFDTCxNQUFNLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUM7b0JBQ2hELHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM3RztTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7bUlBMUdVLHFDQUFxQzt1SUFBckMscUNBQXFDOzRGQUFyQyxxQ0FBcUM7a0JBRGpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdGFibGUvby10YWJsZS1iYXNlLmNsYXNzXCI7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tIFwiLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlsc1wiO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gXCIuLi91dGlsL3V0aWxcIjtcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT250aW1pemVFeHBvcnREYXRhQmFzZVByb3ZpZGVyU2VydmljZSB7XG5cbiAgdGFibGU6IE9UYWJsZUJhc2U7XG4gIGNvbHVtbnM6IGFueTtcbiAgY29sc05vdEluY2x1ZGVkOiBzdHJpbmdbXVxuICBjb2x1bW5OYW1lczogYW55O1xuICBzcWxUeXBlczogYW55O1xuICBlbnRpdHk6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBmaWx0ZXI6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cblxuXG4gIGluaXRpYWxpemVQcm92aWRlcih0YWJsZTogT1RhYmxlQmFzZSkge1xuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAvLyBUYWJsZSBjb2x1bW5zXG4gICAgY29uc3QgdGFibGVPcHRpb25zID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zO1xuICAgIHRoaXMuY29sc05vdEluY2x1ZGVkID0gdGhpcy50YWJsZS5nZXRDb2x1bW5zTm90SW5jbHVkZWQoKVxuICAgIHRoaXMuY29sdW1ucyA9IHRhYmxlT3B0aW9ucy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoYyA9PiB0aGlzLmNvbHNOb3RJbmNsdWRlZC5pbmRleE9mKGMpID09PSAtMSk7XG5cbiAgICAvLyBUYWJsZSBjb2x1bW4gbmFtZXNcbiAgICBjb25zdCB0YWJsZUNvbHVtbk5hbWVzID0gdGFibGVPcHRpb25zLnZpc2libGVDb2x1bW5zLmZpbHRlcihjID0+IHRoaXMuY29sc05vdEluY2x1ZGVkLmluZGV4T2YoYykgPT09IC0xKTtcbiAgICB0aGlzLmNvbHVtbk5hbWVzID0gdGhpcy50YWJsZS5nZXRDb2x1bW5OYW1lcyh0YWJsZUNvbHVtbk5hbWVzKTtcblxuICAgIC8vIFRhYmxlIGNvbHVtbiBzcWxUeXBlc1xuICAgIHRoaXMuc3FsVHlwZXMgPSB0aGlzLnRhYmxlLmdldFNxbFR5cGVzKCk7XG5cbiAgICAvLyBUYWJsZSBlbnRpdHlcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMudGFibGUuZW50aXR5O1xuXG4gICAgLy8gVGFibGUgc2VydmljZVxuICAgIHRoaXMuc2VydmljZSA9IHRoaXMudGFibGUuc2VydmljZTtcblxuICAgIC8vIFRhYmxlIGZpbHRlclxuICAgIHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJXaXRoQmFzaWNFeHByZXNzaW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmlsdGVyV2l0aEJhc2ljRXhwcmVzc2lvbigpOiBhbnkge1xuICAgIGxldCBmaWx0ZXIgPSB7fTtcbiAgICBsZXQgcGFyZW50S2V5c2ZpbHRlciA9IHRoaXMudGFibGUuZ2V0Q29tcG9uZW50RmlsdGVyKCk7XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFwcGx5UGFyZW50SXRlbUV4cHJlc3Npb24oZmlsdGVyKTtcbiAgICBmaWx0ZXIgPSB0aGlzLmFwcGx5Q29sdW1uRmlsdGVycyhmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gT2JqZWN0LmFzc2lnbihmaWx0ZXIgfHwge30sIHBhcmVudEtleXNmaWx0ZXIpO1xuXG4gICAgaWYgKCF0aGlzLnRhYmxlLnBhZ2VhYmxlKSB7XG4gICAgICBmaWx0ZXIgPSB0aGlzLmFwcGx5UXVpY2tBbmRCdWlsZGVyRmlsdGVycyhmaWx0ZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UGFyZW50SXRlbUV4cHJlc3Npb24oZmlsdGVyOiBhbnkpOiBhbnkge1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBhcmVudEl0ZW1FeHByID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkZyb21PYmplY3QoZmlsdGVyKTtcbiAgICAgIGZpbHRlciA9IHt9O1xuICAgICAgZmlsdGVyW0ZpbHRlckV4cHJlc3Npb25VdGlscy5GSUxURVJfRVhQUkVTU0lPTl9LRVldID0gcGFyZW50SXRlbUV4cHI7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29sdW1uRmlsdGVycyhmaWx0ZXI6IGFueSk6IGFueSB7XG4gICAgY29uc3QgYmVDb2xGaWx0ZXIgPSB0aGlzLnRhYmxlLmdldENvbHVtbkZpbHRlcnNFeHByZXNzaW9uKCk7XG5cbiAgICBpZiAoYmVDb2xGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXJFeHByID0gZmlsdGVyW0ZpbHRlckV4cHJlc3Npb25VdGlscy5GSUxURVJfRVhQUkVTU0lPTl9LRVldO1xuXG4gICAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKGN1cnJlbnRGaWx0ZXJFeHByKSkge1xuICAgICAgICBmaWx0ZXJbRmlsdGVyRXhwcmVzc2lvblV0aWxzLkZJTFRFUl9FWFBSRVNTSU9OX0tFWV0gPSBiZUNvbEZpbHRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlcltGaWx0ZXJFeHByZXNzaW9uVXRpbHMuRklMVEVSX0VYUFJFU1NJT05fS0VZXSA9XG4gICAgICAgICAgRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkQ29tcGxleEV4cHJlc3Npb24oY3VycmVudEZpbHRlckV4cHIsIGJlQ29sRmlsdGVyLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfQU5EKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVF1aWNrQW5kQnVpbGRlckZpbHRlcnMoZmlsdGVyOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHF1aWNrRmlsdGVyRXhwciA9IFV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGUub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQpXG4gICAgICA/IHRoaXMudGFibGUub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQuZmlsdGVyRXhwcmVzc2lvblxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWx0ZXJCdWlsZGVyRXhwciA9IFV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGUuZmlsdGVyQnVpbGRlcilcbiAgICAgID8gdGhpcy50YWJsZS5maWx0ZXJCdWlsZGVyLmdldEV4cHJlc3Npb24oKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgY29tcGxleEV4cHIgPSBxdWlja0ZpbHRlckV4cHIgfHwgZmlsdGVyQnVpbGRlckV4cHI7XG4gICAgaWYgKHF1aWNrRmlsdGVyRXhwciAmJiBmaWx0ZXJCdWlsZGVyRXhwcikge1xuICAgICAgY29tcGxleEV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRDb21wbGV4RXhwcmVzc2lvbihxdWlja0ZpbHRlckV4cHIsIGZpbHRlckJ1aWxkZXJFeHByLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfQU5EKTtcbiAgICB9XG5cbiAgICBpZiAoY29tcGxleEV4cHIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRCYXNpY0V4cHIgPSBmaWx0ZXJbRmlsdGVyRXhwcmVzc2lvblV0aWxzLkJBU0lDX0VYUFJFU1NJT05fS0VZXTtcblxuICAgICAgaWYgKCFVdGlsLmlzRGVmaW5lZChjdXJyZW50QmFzaWNFeHByKSkge1xuICAgICAgICBmaWx0ZXJbRmlsdGVyRXhwcmVzc2lvblV0aWxzLkJBU0lDX0VYUFJFU1NJT05fS0VZXSA9IGNvbXBsZXhFeHByO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyW0ZpbHRlckV4cHJlc3Npb25VdGlscy5CQVNJQ19FWFBSRVNTSU9OX0tFWV0gPVxuICAgICAgICAgIEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZENvbXBsZXhFeHByZXNzaW9uKGN1cnJlbnRCYXNpY0V4cHIsIGNvbXBsZXhFeHByLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfQU5EKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbn0iXX0=