@pepperi-addons/ngx-lib 0.2.59-query-builder.1 → 0.2.59-query-builder.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +111 -30
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -1
- package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +4 -2
- package/esm2015/query-builder/query-builder.component.js +63 -18
- package/esm2015/query-builder/query-builder.service.js +29 -14
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +91 -30
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -1
- package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -0
- package/query-builder/query-builder.component.d.ts +22 -10
- package/query-builder/query-builder.service.d.ts +10 -6
|
@@ -287,6 +287,7 @@
|
|
|
287
287
|
var PepQueryBuilderSectionComponent = /** @class */ (function () {
|
|
288
288
|
function PepQueryBuilderSectionComponent(_typeConvertorService) {
|
|
289
289
|
this._typeConvertorService = _typeConvertorService;
|
|
290
|
+
this.hasFields = true;
|
|
290
291
|
this.createSection = new i0.EventEmitter();
|
|
291
292
|
this.createItem = new i0.EventEmitter();
|
|
292
293
|
this.remove = new i0.EventEmitter();
|
|
@@ -333,7 +334,7 @@
|
|
|
333
334
|
PepQueryBuilderSectionComponent.decorators = [
|
|
334
335
|
{ type: i0.Component, args: [{
|
|
335
336
|
selector: 'pep-query-builder-section',
|
|
336
|
-
template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\r\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\r\n sizeType=\"sm\" [viewType]=\"'toggle'\">\r\n </pep-group-buttons>\r\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\r\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\r\n [disabled]=\"
|
|
337
|
+
template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\r\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\r\n sizeType=\"sm\" [viewType]=\"'toggle'\" [buttonsDisabled]=\"!hasFields\">\r\n </pep-group-buttons>\r\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\r\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\r\n [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\r\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\r\n <ng-container *ngIf=\"depth.current < depth.max-1\">\r\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\r\n classNames=\"\" [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\r\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container #sectionContainer></ng-container>\r\n </div>\r\n <pep-button *ngIf=\"depth.current > 0\" styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\"\r\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\r\n (buttonClick)=\"onDeleteSectionClicked()\">\r\n </pep-button>\r\n</div>",
|
|
337
338
|
styles: [".query-section-container{border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);padding:.5rem;width:100%}"]
|
|
338
339
|
},] }
|
|
339
340
|
];
|
|
@@ -343,6 +344,7 @@
|
|
|
343
344
|
PepQueryBuilderSectionComponent.propDecorators = {
|
|
344
345
|
form: [{ type: i0.Input }],
|
|
345
346
|
depth: [{ type: i0.Input }],
|
|
347
|
+
hasFields: [{ type: i0.Input }],
|
|
346
348
|
createSection: [{ type: i0.Output }],
|
|
347
349
|
createItem: [{ type: i0.Output }],
|
|
348
350
|
remove: [{ type: i0.Output }],
|
|
@@ -668,27 +670,54 @@
|
|
|
668
670
|
this.outputQuery$ = this._outputQuery$.asObservable();
|
|
669
671
|
}
|
|
670
672
|
Object.defineProperty(PepQueryBuilderService.prototype, "maxDepth", {
|
|
673
|
+
get: function () {
|
|
674
|
+
return this._maxStructureDepth;
|
|
675
|
+
},
|
|
671
676
|
set: function (value) {
|
|
672
677
|
this._maxStructureDepth = value;
|
|
673
678
|
},
|
|
674
679
|
enumerable: false,
|
|
675
680
|
configurable: true
|
|
676
681
|
});
|
|
682
|
+
Object.defineProperty(PepQueryBuilderService.prototype, "fields", {
|
|
683
|
+
set: function (list) {
|
|
684
|
+
this._smartFilterFields = this.convertToSmartFilterFields(list);
|
|
685
|
+
},
|
|
686
|
+
enumerable: false,
|
|
687
|
+
configurable: true
|
|
688
|
+
});
|
|
689
|
+
Object.defineProperty(PepQueryBuilderService.prototype, "hasFields", {
|
|
690
|
+
get: function () {
|
|
691
|
+
var _a;
|
|
692
|
+
return ((_a = this._smartFilterFields) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
693
|
+
},
|
|
694
|
+
enumerable: false,
|
|
695
|
+
configurable: true
|
|
696
|
+
});
|
|
697
|
+
Object.defineProperty(PepQueryBuilderService.prototype, "form", {
|
|
698
|
+
get: function () {
|
|
699
|
+
return this._form;
|
|
700
|
+
},
|
|
701
|
+
set: function (value) {
|
|
702
|
+
this._form = value;
|
|
703
|
+
},
|
|
704
|
+
enumerable: false,
|
|
705
|
+
configurable: true
|
|
706
|
+
});
|
|
677
707
|
/**
|
|
678
|
-
*
|
|
679
|
-
* might has a different structure than the
|
|
708
|
+
* builds a dynamic UI query structure
|
|
709
|
+
* might has a different structure than the query's due to parent-child elements merge
|
|
680
710
|
* @param query legacy query
|
|
681
|
-
* @param fields an array of legacy fields
|
|
682
711
|
* @param containerRef reference to root element
|
|
683
712
|
*/
|
|
684
|
-
PepQueryBuilderService.prototype.
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
this.
|
|
690
|
-
this.flatten(query, query.RightNode, result.containerRef, result.parentForm, 1);
|
|
713
|
+
PepQueryBuilderService.prototype.buildQueryStructure = function (query, containerRef) {
|
|
714
|
+
//update root operator
|
|
715
|
+
if (this.hasProperty(query, 'ComplexId') &&
|
|
716
|
+
(query === null || query === void 0 ? void 0 : query.Operation) &&
|
|
717
|
+
query.Operation !== this._form.get('operator').value) {
|
|
718
|
+
this._form.get('operator').setValue(query.Operation);
|
|
691
719
|
}
|
|
720
|
+
this.flatten(null, query, containerRef, this._form, 1);
|
|
692
721
|
};
|
|
693
722
|
/**
|
|
694
723
|
* checks if the object contains property
|
|
@@ -709,7 +738,7 @@
|
|
|
709
738
|
PepQueryBuilderService.prototype.flatten = function (parent, current, containerRef, parentForm, depth) {
|
|
710
739
|
if (this.hasProperty(current, 'ComplexId')) {
|
|
711
740
|
var section = current;
|
|
712
|
-
if (parent.Operation === current.Operation) {
|
|
741
|
+
if ((parent === null || parent === void 0 ? void 0 : parent.Operation) === current.Operation) {
|
|
713
742
|
this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);
|
|
714
743
|
this.flatten(parent, section.RightNode, containerRef, parentForm, depth);
|
|
715
744
|
}
|
|
@@ -736,7 +765,7 @@
|
|
|
736
765
|
var factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);
|
|
737
766
|
var componentRef = containerRef.createComponent(factory);
|
|
738
767
|
var sectionGroup = this._fb.group({
|
|
739
|
-
operator: this._fb.control(operator)
|
|
768
|
+
operator: this._fb.control(operator || PepOperatorTypes.And)
|
|
740
769
|
});
|
|
741
770
|
var counter = 1;
|
|
742
771
|
Object.keys(parentForm.controls).forEach(function (item) {
|
|
@@ -746,11 +775,11 @@
|
|
|
746
775
|
});
|
|
747
776
|
var formKey = "section" + counter;
|
|
748
777
|
parentForm.addControl(formKey, sectionGroup);
|
|
778
|
+
componentRef.instance.form = sectionGroup;
|
|
749
779
|
componentRef.instance.depth = {
|
|
750
780
|
current: depth,
|
|
751
781
|
max: this._maxStructureDepth
|
|
752
782
|
};
|
|
753
|
-
componentRef.instance.form = sectionGroup;
|
|
754
783
|
componentRef.instance.createSection.subscribe(function () {
|
|
755
784
|
var section = _this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);
|
|
756
785
|
_this.createItem(null, section.containerRef, section.parentForm);
|
|
@@ -923,38 +952,90 @@
|
|
|
923
952
|
]; };
|
|
924
953
|
|
|
925
954
|
var PepQueryBuilderComponent = /** @class */ (function () {
|
|
926
|
-
|
|
955
|
+
//sectionContainer;
|
|
956
|
+
function PepQueryBuilderComponent(_fb, queryBuilderService) {
|
|
927
957
|
var _this = this;
|
|
928
958
|
this._fb = _fb;
|
|
929
|
-
this.
|
|
930
|
-
this.
|
|
931
|
-
this.fields = new Array();
|
|
959
|
+
this.queryBuilderService = queryBuilderService;
|
|
960
|
+
this._query = null;
|
|
932
961
|
this.queryChange = new i0.EventEmitter();
|
|
933
962
|
this.formValidationChange = new i0.EventEmitter();
|
|
934
|
-
this.
|
|
963
|
+
this._lastFormValidStatus = true;
|
|
964
|
+
this.hasFields = false;
|
|
935
965
|
this.setupForm();
|
|
936
|
-
this.
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
_this.
|
|
966
|
+
this.initDepth();
|
|
967
|
+
this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe(function (val) {
|
|
968
|
+
if (_this.queryBuilderService.form.valid !== _this._lastFormValidStatus) {
|
|
969
|
+
_this._lastFormValidStatus = _this.queryBuilderService.form.valid;
|
|
970
|
+
_this.formValidationChange.emit(_this._lastFormValidStatus);
|
|
940
971
|
}
|
|
941
972
|
});
|
|
942
|
-
this._outputQuerySubscription$ = this.
|
|
973
|
+
this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe(function (outputQuery) {
|
|
943
974
|
_this.queryChange.emit(outputQuery);
|
|
944
975
|
});
|
|
945
976
|
}
|
|
977
|
+
Object.defineProperty(PepQueryBuilderComponent.prototype, "query", {
|
|
978
|
+
set: function (object) {
|
|
979
|
+
this._query = object;
|
|
980
|
+
this.loadQuery();
|
|
981
|
+
},
|
|
982
|
+
enumerable: false,
|
|
983
|
+
configurable: true
|
|
984
|
+
});
|
|
985
|
+
Object.defineProperty(PepQueryBuilderComponent.prototype, "fields", {
|
|
986
|
+
set: function (list) {
|
|
987
|
+
this.queryBuilderService.fields = list;
|
|
988
|
+
this.hasFields = this.queryBuilderService.hasFields;
|
|
989
|
+
this.loadQuery();
|
|
990
|
+
},
|
|
991
|
+
enumerable: false,
|
|
992
|
+
configurable: true
|
|
993
|
+
});
|
|
946
994
|
Object.defineProperty(PepQueryBuilderComponent.prototype, "maxDepth", {
|
|
947
995
|
set: function (value) {
|
|
948
|
-
this.
|
|
996
|
+
this.queryBuilderService.maxDepth = value;
|
|
949
997
|
},
|
|
950
998
|
enumerable: false,
|
|
951
999
|
configurable: true
|
|
952
1000
|
});
|
|
1001
|
+
PepQueryBuilderComponent.prototype.ngOnInit = function () {
|
|
1002
|
+
//console.log('this.queryRoot.get()', this.root.sectionContainer);
|
|
1003
|
+
// this.queryBuilderService.createFilterTree(this.query, this.fields, this.form, this.queryRoot);
|
|
1004
|
+
};
|
|
953
1005
|
PepQueryBuilderComponent.prototype.setupForm = function () {
|
|
954
|
-
this.form = this._fb.group({
|
|
1006
|
+
this.queryBuilderService.form = this._fb.group({
|
|
1007
|
+
operator: this._fb.control(PepOperatorTypes.And)
|
|
1008
|
+
});
|
|
955
1009
|
};
|
|
956
|
-
PepQueryBuilderComponent.prototype.
|
|
957
|
-
this.
|
|
1010
|
+
PepQueryBuilderComponent.prototype.initDepth = function () {
|
|
1011
|
+
this.depth = {
|
|
1012
|
+
current: 0,
|
|
1013
|
+
max: this.queryBuilderService.maxDepth
|
|
1014
|
+
};
|
|
1015
|
+
};
|
|
1016
|
+
/**
|
|
1017
|
+
* builds UI query structure as soon as both the fields and query loads
|
|
1018
|
+
*/
|
|
1019
|
+
PepQueryBuilderComponent.prototype.loadQuery = function () {
|
|
1020
|
+
var _a;
|
|
1021
|
+
if (this._query &&
|
|
1022
|
+
this.queryBuilderService.hasFields &&
|
|
1023
|
+
((_a = this.root) === null || _a === void 0 ? void 0 : _a.sectionContainer)) {
|
|
1024
|
+
this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);
|
|
1025
|
+
}
|
|
1026
|
+
};
|
|
1027
|
+
PepQueryBuilderComponent.prototype.onCreateSection = function () {
|
|
1028
|
+
var section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);
|
|
1029
|
+
this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);
|
|
1030
|
+
//console.log('onCreateSection outer');
|
|
1031
|
+
};
|
|
1032
|
+
PepQueryBuilderComponent.prototype.onCreateItem = function () {
|
|
1033
|
+
this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);
|
|
1034
|
+
//console.log('onCreateItem outer');
|
|
1035
|
+
};
|
|
1036
|
+
PepQueryBuilderComponent.prototype.onOperatorChange = function () {
|
|
1037
|
+
this.queryBuilderService.createOutputQuery();
|
|
1038
|
+
//console.log('onOperatorChange outer');
|
|
958
1039
|
};
|
|
959
1040
|
PepQueryBuilderComponent.prototype.ngOnDestroy = function () {
|
|
960
1041
|
if (this._formSubscription$) {
|
|
@@ -969,7 +1050,7 @@
|
|
|
969
1050
|
PepQueryBuilderComponent.decorators = [
|
|
970
1051
|
{ type: i0.Component, args: [{
|
|
971
1052
|
selector: 'pep-query-builder',
|
|
972
|
-
template: "<
|
|
1053
|
+
template: "<pep-query-builder-section #rootContainer [form]=\"queryBuilderService.form\" [depth]=\"depth\" [hasFields]=\"hasFields\"\r\n (createSection)=\"onCreateSection()\" (createItem)=\"onCreateItem()\" (operatorChange)=\"onOperatorChange()\">\r\n</pep-query-builder-section>",
|
|
973
1054
|
styles: [""]
|
|
974
1055
|
},] }
|
|
975
1056
|
];
|
|
@@ -983,7 +1064,7 @@
|
|
|
983
1064
|
maxDepth: [{ type: i0.Input }],
|
|
984
1065
|
queryChange: [{ type: i0.Output }],
|
|
985
1066
|
formValidationChange: [{ type: i0.Output }],
|
|
986
|
-
|
|
1067
|
+
root: [{ type: i0.ViewChild, args: ['rootContainer', { static: true },] }]
|
|
987
1068
|
};
|
|
988
1069
|
|
|
989
1070
|
var PepQueryBuilderModule = /** @class */ (function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-query-builder.umd.js","sources":["../../../projects/ngx-lib/query-builder/common/model/operator.ts","../../../projects/ngx-lib/query-builder/common/services/type-convertor.service.ts","../../../projects/ngx-lib/query-builder/query-builder-section/query-builder-section.component.ts","../../../projects/ngx-lib/query-builder/query-builder-item/query-builder-item.component.ts","../../../projects/ngx-lib/query-builder/common/model/type-map.ts","../../../projects/ngx-lib/query-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/query-builder/common/services/output-query.service.ts","../../../projects/ngx-lib/query-builder/common/model/type.ts","../../../projects/ngx-lib/query-builder/query-builder.service.ts","../../../projects/ngx-lib/query-builder/query-builder.component.ts","../../../projects/ngx-lib/query-builder/query-builder.module.ts","../../../projects/ngx-lib/query-builder/public-api.ts","../../../projects/ngx-lib/query-builder/pepperi-addons-ngx-lib-query-builder.ts"],"sourcesContent":["import { PepSmartFilterOperators, IPepSmartFilterOperator } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\nexport interface IPepQueryBuilderOperator {\r\n legacy: string, //legacy Operator \r\n smartFilter: IPepSmartFilterOperator, //smart filter operator \r\n type: PepSmartFilterType[] | null //smart filter type\r\n}\r\n\r\nconst Equals: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.Equals,\r\n type: ['boolean', 'int', 'text']\r\n};\r\n\r\nconst NotEqual: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEqual',\r\n smartFilter: PepSmartFilterOperators.NotEqual,\r\n type: null\r\n};\r\n\r\nconst LessThan: IPepQueryBuilderOperator = {\r\n legacy: '<',\r\n smartFilter: PepSmartFilterOperators.LessThan,\r\n type: null\r\n};\r\n\r\nconst GreaterThan: IPepQueryBuilderOperator = {\r\n legacy: '>',\r\n smartFilter: PepSmartFilterOperators.GreaterThan,\r\n type: null\r\n};\r\n\r\n/*\r\nconst GreaterThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '>=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.GreaterThanOrEquals,\r\n type: 'int'\r\n }\r\n};\r\n\r\nconst LessThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '<=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.LessThanOrEquals,\r\n type: 'int',\r\n type: 'Integer'\r\n }\r\n}; */\r\n\r\nconst NumberRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.NumberRange,\r\n type: ['int']\r\n};\r\n\r\nconst Contains: IPepQueryBuilderOperator = {\r\n legacy: 'Contains',\r\n smartFilter: PepSmartFilterOperators.Contains,\r\n type: null\r\n};\r\n\r\n/*\r\nconst BeginsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'BeginsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.BeginsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst EndsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'EndsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.EndsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst Before: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'Before',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.Before,\r\n type: 'date'\r\n }\r\n};\r\n\r\nconst After: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'After',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.After,\r\n type: 'date'\r\n }\r\n}; */\r\n\r\nconst InTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'InTheLast',\r\n smartFilter: PepSmartFilterOperators.InTheLast,\r\n type: null\r\n};\r\n\r\nconst NotInTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'NotInTheLast',\r\n smartFilter: PepSmartFilterOperators.NotInTheLast,\r\n type: null\r\n};\r\n\r\nconst Today: IPepQueryBuilderOperator = {\r\n legacy: 'Today',\r\n smartFilter: PepSmartFilterOperators.Today,\r\n type: null\r\n};\r\n\r\nconst ThisWeek: IPepQueryBuilderOperator = {\r\n legacy: 'ThisWeek',\r\n smartFilter: PepSmartFilterOperators.ThisWeek,\r\n type: null\r\n};\r\n\r\nconst ThisMonth: IPepQueryBuilderOperator = {\r\n legacy: 'ThisMonth',\r\n smartFilter: PepSmartFilterOperators.ThisMonth,\r\n type: null\r\n};\r\n\r\nconst DateRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.DateRange,\r\n type: ['date-time']\r\n};\r\n\r\nconst DueIn: IPepQueryBuilderOperator = {\r\n legacy: 'DueIn',\r\n smartFilter: PepSmartFilterOperators.DueIn,\r\n type: null\r\n};\r\n\r\nconst NotDueIn: IPepQueryBuilderOperator = {\r\n legacy: 'NotDueIn',\r\n smartFilter: PepSmartFilterOperators.NotDueIn,\r\n type: null\r\n};\r\n\r\nconst On: IPepQueryBuilderOperator = {\r\n legacy: 'On',\r\n smartFilter: PepSmartFilterOperators.On,\r\n type: null\r\n};\r\n\r\nconst IsEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsEmpty',\r\n smartFilter: PepSmartFilterOperators.IsEmpty,\r\n type: null\r\n};\r\n\r\nconst IsNotEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEmpty',\r\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\r\n type: null\r\n};\r\n\r\nconst In: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.In,\r\n type: ['multi-select']\r\n};\r\n\r\n\r\nconst PepQueryBuilderOperators = [\r\n Equals,\r\n NotEqual,\r\n LessThan,\r\n // LessThanOrEquals,\r\n GreaterThan,\r\n // GreaterThanOrEquals,\r\n NumberRange,\r\n Contains,\r\n // BeginsWith,\r\n // EndsWith,\r\n // After,\r\n // Before,\r\n InTheLast,\r\n NotInTheLast,\r\n Today,\r\n ThisWeek,\r\n ThisMonth,\r\n DateRange,\r\n DueIn,\r\n NotDueIn,\r\n On,\r\n IsEmpty,\r\n IsNotEmpty,\r\n In\r\n]\r\n\r\n/**\r\n * gets a smart filter operator item\r\n * @param operator legacy operator\r\n * @param type smart filter's type\r\n * @returns smart filter operator item\r\n */\r\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\r\n const smartFilterOperator = PepQueryBuilderOperators.find(item =>\r\n item.legacy === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operator value\r\n * @param operator smart filter operator item\r\n * @param type smart filter's type\r\n * @returns legacy operator value\r\n */\r\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\r\n const legacyOperator = PepQueryBuilderOperators.find(item =>\r\n item.smartFilter === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return legacyOperator ? legacyOperator.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepTypeConvertorService {\r\n private readonly _operators: IPepOption[] = [];\r\n private readonly _booleans: IPepOption[] = [];\r\n\r\n public get operators(): IPepOption[] {\r\n return this._operators;\r\n }\r\n\r\n public get booleans(): IPepOption[] {\r\n return this._booleans;\r\n }\r\n\r\n constructor() {\r\n this.initOperators();\r\n this.initBooleans();\r\n }\r\n\r\n private initOperators() {\r\n this._operators.push({\r\n key: 'AND',\r\n value: 'And'\r\n });\r\n this._operators.push({\r\n key: 'OR',\r\n value: 'Or'\r\n });\r\n }\r\n\r\n private initBooleans() {\r\n this._booleans.push({\r\n key: 'True',\r\n value: 'True'\r\n });\r\n this._booleans.push({\r\n key: 'False',\r\n value: 'False'\r\n });\r\n }\r\n\r\n}","import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n IPepButtonClickEvent,\r\n PepButton,\r\n} from '@pepperi-addons/ngx-lib/button';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryDepth } from '../common/model/structure';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-section',\r\n templateUrl: './query-builder-section.component.html',\r\n styleUrls: ['./query-builder-section.component.scss'],\r\n})\r\nexport class PepQueryBuilderSectionComponent {\r\n @Input() form: FormGroup;\r\n @Input() depth: IPepQueryDepth;\r\n\r\n @Output()\r\n createSection = new EventEmitter();\r\n @Output()\r\n createItem = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n @Output()\r\n operatorChange = new EventEmitter();\r\n\r\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\r\n\r\n toggleButtons: Array<PepButton>;\r\n\r\n constructor(private _typeConvertorService: PepTypeConvertorService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.initOperators();\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n initOperators() {\r\n this.toggleButtons = this._typeConvertorService.operators.map((operator: IPepOption) => {\r\n return {\r\n key: operator.key,\r\n value: operator.value,\r\n callback: (event: IPepButtonClickEvent) =>\r\n this.onOperatorChanged(event)\r\n } as PepButton\r\n });\r\n }\r\n\r\n onOperatorChanged(event) {\r\n if (event?.source?.key) {\r\n this.f.operator.setValue(event.source.key);\r\n this.operatorChange.emit();\r\n }\r\n }\r\n\r\n onAddRuleClicked() {\r\n this.createItem.emit();\r\n }\r\n\r\n onAddRuleSetClicked() {\r\n this.createSection.emit();\r\n }\r\n\r\n onDeleteSectionClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepSmartFilterData } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-item',\r\n templateUrl: './query-builder-item.component.html',\r\n styleUrls: ['./query-builder-item.component.scss'],\r\n})\r\nexport class PepQueryBuilderItemComponent {\r\n @Input() formKey: string;\r\n _fields: Array<any> = [];\r\n _options: IPepOption[] = [];\r\n @Input()\r\n set fields(list: Array<IPepSmartFilterField>) {\r\n if (list?.length > 0) {\r\n this._fields = list;\r\n this._options = list.map(field => {\r\n return {\r\n key: field.id,\r\n value: field.name\r\n }\r\n })\r\n }\r\n }\r\n _selectedField: PepSmartFilterBaseField = null;\r\n @Input()\r\n set selected(value: any) {\r\n if (value) {\r\n this._selectedField = value;\r\n }\r\n }\r\n _filter: IPepSmartFilterData;\r\n @Input()\r\n set filter(value: IPepSmartFilterData) {\r\n if (value) {\r\n this._filter = value;\r\n }\r\n }\r\n _parentForm: FormGroup;\r\n @Input()\r\n set parentForm(value: FormGroup) {\r\n if (value) {\r\n this._parentForm = value;\r\n this.addToParentForm();\r\n }\r\n }\r\n\r\n @Output()\r\n filterChange = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n\r\n\r\n //test: any = {};\r\n\r\n _form: FormGroup;\r\n /*fieldWidth = 26;\r\n filterWidth = 67.5;\r\n binWidth = 6.5; */\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public typeConvertorService: PepTypeConvertorService\r\n ) {\r\n this.setupForm();\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n setupForm() {\r\n this._form = this._fb.group({\r\n fieldId: this._fb.control(null),\r\n fieldType: this._fb.control(null),\r\n operator: this._fb.control(null),\r\n operatorUnit: this._fb.control(null),\r\n values: this._fb.group({\r\n first: this._fb.control(null),\r\n second: this._fb.control(null)\r\n }),\r\n });\r\n }\r\n\r\n addToParentForm() {\r\n this._parentForm.setControl(this.formKey, this._form);\r\n }\r\n\r\n onFieldChanged(key) {\r\n const item = this._fields.find(field => field.id === key);\r\n\r\n this.setupForm();\r\n this.addToParentForm();\r\n\r\n /**\r\n * hack due to angular's change detection bug -\r\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\r\n */\r\n this._selectedField = null;\r\n setTimeout(() => {\r\n this._selectedField = item ? item : null;\r\n }, 0);\r\n\r\n this._filter = null;\r\n }\r\n\r\n onFilterChanged() {\r\n if (this._form.valid) {\r\n this.filterChange.emit();\r\n }\r\n }\r\n\r\n onDeleteItemClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\nexport class PepQueryBuilderTypeMap {\r\n private map: Map<string, PepSmartFilterType>;\r\n\r\n constructor() {\r\n this.loadTypes();\r\n }\r\n\r\n private loadTypes() {\r\n this.map = new Map<string, PepSmartFilterType>();\r\n this.map.set('Bool', 'boolean');\r\n this.map.set('JsonBool', 'boolean');\r\n this.map.set('Integer', 'int');\r\n this.map.set('Double', 'int');\r\n this.map.set('String', 'text');\r\n this.map.set('Guid', 'text');\r\n this.map.set('Date', 'date');\r\n this.map.set('DateTime', 'date-time');\r\n this.map.set('MultipleStringValues', 'multi-select');\r\n }\r\n\r\n /**\r\n * Converts legacy field type to smart builder type\r\n * @param type legacy type\r\n * @returns smart builder field type\r\n */\r\n getSmartBuilderType(key: string): PepSmartFilterType | null {\r\n const item = this.map.get(key);\r\n return item ? item : null;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\ninterface IPepQueryBuilderOperationUnit {\r\n legacy: string,\r\n smartFilter: IPepSmartFilterOperatorUnit,\r\n}\r\n\r\nconst Days: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Days',\r\n smartFilter: PepSmartFilterOperatorUnits.Days\r\n};\r\n\r\nconst Weeks: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Weeks',\r\n smartFilter: PepSmartFilterOperatorUnits.Weeks\r\n};\r\n\r\nconst Months: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Months',\r\n smartFilter: PepSmartFilterOperatorUnits.Months\r\n};\r\n\r\nconst Years: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Years',\r\n smartFilter: PepSmartFilterOperatorUnits.Years\r\n};\r\n\r\nconst PepQueryBuilderOperationUnit = [\r\n Days,\r\n Weeks,\r\n Months,\r\n Years,\r\n];\r\n\r\n/**\r\n * gets a smart filter operation unit item\r\n * @param operationUnit legacy operation unit\r\n * @returns smart filter operation unit item\r\n */\r\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\r\n const smartFilterOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\r\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operation unit value\r\n * @param operationUnit smart filter operation unit item\r\n * @returns legacy operation unit value\r\n */\r\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\r\n const legacyOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\r\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepQueryItem } from '../model/legacy';\r\nimport { getLegacyOperator } from '../model/operator';\r\nimport { getLegacyOperationUnit } from '../model/operator-unit';\r\nimport { PepSmartFilterOperators } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepOutputQueryService {\r\n private _complexIdCounter: number;\r\n private _expressionIdCounter: number;\r\n\r\n constructor() {\r\n //\r\n }\r\n\r\n /**\r\n * generates a legacy query structure \r\n * @param filters UI smart filters structure \r\n * @returns legacy query\r\n */\r\n generateQuery(filters: any) {\r\n this.initParams();\r\n\r\n return this.sectionWalk(filters);\r\n }\r\n\r\n /**\r\n * init params\r\n */\r\n private initParams() {\r\n this._complexIdCounter = 1;\r\n this._expressionIdCounter = 1;\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds legacy query structure\r\n * @param current UI object represents either a section or filter component\r\n * @returns section query data\r\n */\r\n private sectionWalk(current: any) {\r\n let section: any = null;\r\n\r\n Object.keys(current).forEach(key => {\r\n if (key.includes('item')) {\r\n section = this.addToSection(section, {\r\n ExpressionId: (this._expressionIdCounter++).toString(),\r\n ApiName: current[key].fieldId,\r\n Operation: getLegacyOperator(current[key].operator, current[key].fieldType),\r\n Values: this.getItemValues(current[key])\r\n } as IPepQueryItem, current.operator);\r\n } else if (key.includes('section')) {\r\n const childSection = this.sectionWalk(current[key]);\r\n if (childSection) {\r\n section = this.addToSection(section, childSection, current.operator);\r\n }\r\n }\r\n });\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * adds a legacy filter object to the current query structure\r\n * @param section section query data\r\n * @param item filter item\r\n * @param operator query operator\r\n * @returns \r\n */\r\n private addToSection(section: any, item: any, operator: string): any {\r\n return section ? this.createSection(section, item, operator) : item;\r\n }\r\n\r\n /**\r\n * creates a legacy complex object\r\n * @param left LeftNode object\r\n * @param right RightNode object\r\n * @param operator query operator\r\n * @returns legacy complex object\r\n */\r\n private createSection(left: any, right: any, operator: string) {\r\n return {\r\n ComplexId: (this._complexIdCounter++).toString(),\r\n LeftNode: left,\r\n RightNode: right,\r\n Operation: operator\r\n }\r\n }\r\n\r\n /**\r\n * gets legacy filter values object\r\n * @param current UI filter object's values\r\n * @returns an array represents legacy values\r\n */\r\n private getItemValues(current: any) {\r\n let values: any[] = [];\r\n\r\n if (current?.values?.first) {\r\n if (current.operator === PepSmartFilterOperators.In) { //multi select \r\n values = current.values.first;\r\n } else if (\r\n current.operator === PepSmartFilterOperators.InTheLast ||\r\n current.operator === PepSmartFilterOperators.NotInTheLast ||\r\n current.operator === PepSmartFilterOperators.DueIn ||\r\n current.operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit \r\n values.push(current.values.first);\r\n if (current.operatorUnit) {\r\n values.push(getLegacyOperationUnit(current.operatorUnit));\r\n }\r\n } else {\r\n values.push(current.values.first);\r\n if (current.values.second) {\r\n values.push(current.values.second);\r\n }\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}","export enum PepOperatorTypes {\r\n And = 'AND',\r\n Or = 'OR'\r\n}\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { } from 'lodash';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport {\r\n IPepSmartFilterField,\r\n IPepSmartFilterData,\r\n PepSmartFilterOperators,\r\n IPepSmartFilterOperator,\r\n PepSmartFilterType,\r\n createSmartFilter,\r\n createSmartFilterField\r\n} from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { getSmartBuilderOperator } from './common/model/operator';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\nimport { PepQueryBuilderTypeMap } from './common/model/type-map';\r\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryBuilderValues } from './common/model/filter';\r\nimport { PepOperatorTypes } from './common/model/type';\r\nimport { IPepQueryDepth } from './common/model/structure';\r\n\r\nconst MAX_STRUCTURE_DEPTH = 3;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepQueryBuilderService {\r\n private _outputQuery$ = new BehaviorSubject<any>(null);\r\n\r\n private _smartFilterFields: Array<IPepSmartFilterField>;\r\n private _form: FormGroup;\r\n private _maxStructureDepth = MAX_STRUCTURE_DEPTH;\r\n\r\n public outputQuery$ = this._outputQuery$.asObservable();\r\n\r\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputQueryService: PepOutputQueryService) {\r\n\r\n }\r\n\r\n set maxDepth(value) {\r\n this._maxStructureDepth = value;\r\n }\r\n\r\n /**\r\n * creates a dynamic UI filter structure\r\n * might has a different structure than the input's due to merge of parent-child elements\r\n * @param query legacy query\r\n * @param fields an array of legacy fields \r\n * @param containerRef reference to root element\r\n */\r\n createFilterTree(\r\n query: IPepQuerySection,\r\n fields: Array<IPepQueryBuilderField>,\r\n form: FormGroup,\r\n containerRef: ViewContainerRef\r\n ) {\r\n this._form = form;\r\n this._smartFilterFields = this.convertToSmartFilterFields(fields);\r\n const result = this.createSection(query?.Operation ? query.Operation : PepOperatorTypes.And, containerRef, this._form, 0);\r\n if (query) {\r\n this.flatten(query, query.LeftNode, result.containerRef, result.parentForm, 1);\r\n this.flatten(query, query.RightNode, result.containerRef, result.parentForm, 1);\r\n }\r\n }\r\n\r\n /**\r\n * checks if the object contains property\r\n * @param obj object\r\n * @param prop property name\r\n * @returns true if contains, false otherwise\r\n */\r\n private hasProperty(obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds UI filters structure\r\n * @param parent legacy complex object\r\n * @param current child legacy object (either another complex or expression type)\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n private flatten(parent: IPepQuerySection, current: IPepQuerySection | IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n if (this.hasProperty(current, 'ComplexId')) {\r\n const section = current as IPepQuerySection;\r\n if (parent.Operation === current.Operation) {\r\n this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);\r\n this.flatten(parent, section.RightNode, containerRef, parentForm, depth);\r\n } else {\r\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\r\n this.flatten(section, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\r\n this.flatten(section, section.RightNode, result.containerRef, result.parentForm, depth + 1);\r\n }\r\n } else if (this.hasProperty(current, 'ExpressionId')) {\r\n this.createItem(current as IPepQueryItem, containerRef, parentForm);\r\n }\r\n }\r\n\r\n /**\r\n * creates a container object of two or more child filter items\r\n * @param operator AND/OR operator\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n * @param depth\r\n * @returns an object containing the current element and current form\r\n */\r\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n const sectionGroup = this._fb.group({\r\n operator: this._fb.control(operator)\r\n });\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\r\n const formKey = `section${counter}`;\r\n parentForm.addControl(formKey, sectionGroup);\r\n\r\n componentRef.instance.depth = {\r\n current: depth,\r\n max: this._maxStructureDepth\r\n };\r\n componentRef.instance.form = sectionGroup;\r\n componentRef.instance.createSection.subscribe(() => {\r\n const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);\r\n this.createItem(null, section.containerRef, section.parentForm);\r\n });\r\n componentRef.instance.createItem.subscribe(() => {\r\n this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.operatorChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n\r\n return {\r\n containerRef: componentRef.instance.sectionContainer,\r\n parentForm: sectionGroup\r\n };\r\n }\r\n\r\n /**\r\n * creates a component represents filter item (leaf element - has no childs)\r\n * @param current filter legacy element\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n createItem(current: IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\r\n const formKey = `item${counter}`;\r\n\r\n componentRef.instance.formKey = formKey;\r\n componentRef.instance.fields = this._smartFilterFields;\r\n const selectedField = this.getSelectedField(current);\r\n if (selectedField) {\r\n componentRef.instance.selected = selectedField;\r\n if (current) {\r\n componentRef.instance.filter = this.getFilter(current, selectedField);\r\n }\r\n }\r\n componentRef.instance.parentForm = parentForm;\r\n componentRef.instance.filterChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n }\r\n\r\n /**\r\n * creates a smart filter object\r\n * @param current filter legacy element\r\n * @param field filter's selected field\r\n * @returns smart filter object\r\n */\r\n private getFilter(current: IPepQueryItem, field: any): IPepSmartFilterData | null {\r\n const operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\r\n if (operator) {\r\n const filterValues: IPepQueryBuilderValues = this.getFilterValues(current, operator, field);\r\n return createSmartFilter(\r\n current.ApiName,\r\n operator,\r\n filterValues.first,\r\n filterValues.second,\r\n filterValues.operationUnit\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * get smart filter field\r\n * @param current filter legacy element\r\n * @returns smart filter field, if not found returns the first fields\r\n */\r\n private getSelectedField(current: IPepQueryItem): IPepSmartFilterField | null {\r\n if (current) {\r\n const item = this._smartFilterFields.find(field => field.id === current.ApiName);\r\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n } else {\r\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n }\r\n }\r\n\r\n /**\r\n * gets smart filter's values data\r\n * @param current filter legacy element\r\n * @param operator smart filter operator\r\n * @param field filter's selected field\r\n * @returns object contains the filter values data\r\n */\r\n private getFilterValues(current: IPepQueryItem, operator: IPepSmartFilterOperator, field: any) {\r\n const data: IPepQueryBuilderValues = {\r\n first: null,\r\n second: null,\r\n operationUnit: null\r\n };\r\n\r\n if (operator === PepSmartFilterOperators.In) { //multi select \r\n //filter keys don't exist on field options\r\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\r\n return field.options.find(option => option.key === item);\r\n }) : null;\r\n } else if (\r\n operator === PepSmartFilterOperators.InTheLast ||\r\n operator === PepSmartFilterOperators.NotInTheLast ||\r\n operator === PepSmartFilterOperators.DueIn ||\r\n operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n if (current?.Values?.length === 2) {\r\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\r\n }\r\n } else {\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * converts legacy fields to smart filter fields\r\n * @param fields legacy fields array\r\n * @returns smart filter fields array\r\n */\r\n private convertToSmartFilterFields(fields: Array<IPepQueryBuilderField>) {\r\n if (fields?.length > 0) {\r\n const typeMapper = new PepQueryBuilderTypeMap();\r\n return fields.map((field) => {\r\n return createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n } as IPepSmartFilterField\r\n , typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType)\r\n })\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * creates a legacy output query \r\n */\r\n private createOutputQuery() {\r\n if (this._form.valid) {\r\n const query = this._outputQueryService.generateQuery(this._form.value);\r\n this._outputQuery$.next(query);\r\n }\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { IPepQueryBuilderField, IPepQuerySection } from './common/model/legacy';\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pep-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n})\r\nexport class PepQueryBuilderComponent implements OnInit, OnDestroy {\r\n @Input() query: IPepQuerySection = null;\r\n @Input() fields: Array<IPepQueryBuilderField> = new Array<IPepQueryBuilderField>();\r\n @Input()\r\n set maxDepth(value: number) {\r\n this._queryBuilderService.maxDepth = value;\r\n }\r\n\r\n @Output()\r\n queryChange: EventEmitter<IPepQuerySection> = new EventEmitter<IPepQuerySection>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('queryRoot', { read: ViewContainerRef, static: true }) queryRoot: ViewContainerRef;\r\n\r\n _formSubscription$: Subscription;\r\n _outputQuerySubscription$: Subscription;\r\n\r\n _isFormValid = true;\r\n\r\n form: FormGroup;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n private _queryBuilderService: PepQueryBuilderService\r\n ) {\r\n this.setupForm();\r\n this._formSubscription$ = this.form.valueChanges.subscribe((val) => {\r\n if (this.form.valid !== this._isFormValid) {\r\n this._isFormValid = this.form.valid;\r\n this.formValidationChange.emit(this._isFormValid);\r\n }\r\n });\r\n this._outputQuerySubscription$ = this._queryBuilderService.outputQuery$.subscribe((outputQuery) => {\r\n this.queryChange.emit(outputQuery);\r\n });\r\n }\r\n\r\n setupForm() {\r\n this.form = this._fb.group({})\r\n }\r\n ngOnInit() {\r\n this._queryBuilderService.createFilterTree(this.query, this.fields, this.form, this.queryRoot);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._formSubscription$) {\r\n this._formSubscription$.unsubscribe();\r\n }\r\n if (this._outputQuerySubscription$) {\r\n this._outputQuerySubscription$.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\r\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\r\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\r\n\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { PepTypeConvertorService } from './common/services/type-convertor.service';\r\n\r\nimport { PepQueryBuilderComponent } from './query-builder.component';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n PepSelectModule,\r\n PepButtonModule,\r\n PepGroupButtonsModule,\r\n PepSmartFiltersModule\r\n ],\r\n exports: [\r\n PepQueryBuilderComponent\r\n ],\r\n declarations: [\r\n PepQueryBuilderComponent,\r\n PepQueryBuilderSectionComponent,\r\n PepQueryBuilderItemComponent\r\n ],\r\n providers: [\r\n PepQueryBuilderService,\r\n PepOutputQueryService,\r\n PepTypeConvertorService\r\n ]\r\n})\r\nexport class PepQueryBuilderModule { }\r\n","/*\r\n * Public API Surface of ngx-lib/query-builder\r\n */\r\nexport * from './query-builder.module';\r\nexport * from './query-builder.component';\r\nexport * from './query-builder.service';\r\nexport * from './common/model/legacy';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepOutputQueryService as ɵa} from './common/services/output-query.service';\nexport {PepTypeConvertorService as ɵc} from './common/services/type-convertor.service';\nexport {PepQueryBuilderItemComponent as ɵd} from './query-builder-item/query-builder-item.component';\nexport {PepQueryBuilderSectionComponent as ɵb} from './query-builder-section/query-builder-section.component';"],"names":["PepSmartFilterOperators","Injectable","EventEmitter","Component","Input","Output","ViewChild","ViewContainerRef","FormBuilder","PepSmartFilterOperatorUnits","BehaviorSubject","createSmartFilter","createSmartFilterField","ComponentFactoryResolver","NgModule","CommonModule","ReactiveFormsModule","FlexLayoutModule","PepSelectModule","PepButtonModule","PepGroupButtonsModule","PepSmartFiltersModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-query-builder.umd.js","sources":["../../../projects/ngx-lib/query-builder/common/model/operator.ts","../../../projects/ngx-lib/query-builder/common/services/type-convertor.service.ts","../../../projects/ngx-lib/query-builder/query-builder-section/query-builder-section.component.ts","../../../projects/ngx-lib/query-builder/query-builder-item/query-builder-item.component.ts","../../../projects/ngx-lib/query-builder/common/model/type-map.ts","../../../projects/ngx-lib/query-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/query-builder/common/services/output-query.service.ts","../../../projects/ngx-lib/query-builder/common/model/type.ts","../../../projects/ngx-lib/query-builder/query-builder.service.ts","../../../projects/ngx-lib/query-builder/query-builder.component.ts","../../../projects/ngx-lib/query-builder/query-builder.module.ts","../../../projects/ngx-lib/query-builder/public-api.ts","../../../projects/ngx-lib/query-builder/pepperi-addons-ngx-lib-query-builder.ts"],"sourcesContent":["import { PepSmartFilterOperators, IPepSmartFilterOperator } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\nexport interface IPepQueryBuilderOperator {\r\n legacy: string, //legacy Operator \r\n smartFilter: IPepSmartFilterOperator, //smart filter operator \r\n type: PepSmartFilterType[] | null //smart filter type\r\n}\r\n\r\nconst Equals: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.Equals,\r\n type: ['boolean', 'int', 'text']\r\n};\r\n\r\nconst NotEqual: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEqual',\r\n smartFilter: PepSmartFilterOperators.NotEqual,\r\n type: null\r\n};\r\n\r\nconst LessThan: IPepQueryBuilderOperator = {\r\n legacy: '<',\r\n smartFilter: PepSmartFilterOperators.LessThan,\r\n type: null\r\n};\r\n\r\nconst GreaterThan: IPepQueryBuilderOperator = {\r\n legacy: '>',\r\n smartFilter: PepSmartFilterOperators.GreaterThan,\r\n type: null\r\n};\r\n\r\n/*\r\nconst GreaterThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '>=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.GreaterThanOrEquals,\r\n type: 'int'\r\n }\r\n};\r\n\r\nconst LessThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '<=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.LessThanOrEquals,\r\n type: 'int',\r\n type: 'Integer'\r\n }\r\n}; */\r\n\r\nconst NumberRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.NumberRange,\r\n type: ['int']\r\n};\r\n\r\nconst Contains: IPepQueryBuilderOperator = {\r\n legacy: 'Contains',\r\n smartFilter: PepSmartFilterOperators.Contains,\r\n type: null\r\n};\r\n\r\n/*\r\nconst BeginsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'BeginsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.BeginsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst EndsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'EndsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.EndsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst Before: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'Before',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.Before,\r\n type: 'date'\r\n }\r\n};\r\n\r\nconst After: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'After',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.After,\r\n type: 'date'\r\n }\r\n}; */\r\n\r\nconst InTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'InTheLast',\r\n smartFilter: PepSmartFilterOperators.InTheLast,\r\n type: null\r\n};\r\n\r\nconst NotInTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'NotInTheLast',\r\n smartFilter: PepSmartFilterOperators.NotInTheLast,\r\n type: null\r\n};\r\n\r\nconst Today: IPepQueryBuilderOperator = {\r\n legacy: 'Today',\r\n smartFilter: PepSmartFilterOperators.Today,\r\n type: null\r\n};\r\n\r\nconst ThisWeek: IPepQueryBuilderOperator = {\r\n legacy: 'ThisWeek',\r\n smartFilter: PepSmartFilterOperators.ThisWeek,\r\n type: null\r\n};\r\n\r\nconst ThisMonth: IPepQueryBuilderOperator = {\r\n legacy: 'ThisMonth',\r\n smartFilter: PepSmartFilterOperators.ThisMonth,\r\n type: null\r\n};\r\n\r\nconst DateRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.DateRange,\r\n type: ['date-time']\r\n};\r\n\r\nconst DueIn: IPepQueryBuilderOperator = {\r\n legacy: 'DueIn',\r\n smartFilter: PepSmartFilterOperators.DueIn,\r\n type: null\r\n};\r\n\r\nconst NotDueIn: IPepQueryBuilderOperator = {\r\n legacy: 'NotDueIn',\r\n smartFilter: PepSmartFilterOperators.NotDueIn,\r\n type: null\r\n};\r\n\r\nconst On: IPepQueryBuilderOperator = {\r\n legacy: 'On',\r\n smartFilter: PepSmartFilterOperators.On,\r\n type: null\r\n};\r\n\r\nconst IsEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsEmpty',\r\n smartFilter: PepSmartFilterOperators.IsEmpty,\r\n type: null\r\n};\r\n\r\nconst IsNotEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEmpty',\r\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\r\n type: null\r\n};\r\n\r\nconst In: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.In,\r\n type: ['multi-select']\r\n};\r\n\r\n\r\nconst PepQueryBuilderOperators = [\r\n Equals,\r\n NotEqual,\r\n LessThan,\r\n // LessThanOrEquals,\r\n GreaterThan,\r\n // GreaterThanOrEquals,\r\n NumberRange,\r\n Contains,\r\n // BeginsWith,\r\n // EndsWith,\r\n // After,\r\n // Before,\r\n InTheLast,\r\n NotInTheLast,\r\n Today,\r\n ThisWeek,\r\n ThisMonth,\r\n DateRange,\r\n DueIn,\r\n NotDueIn,\r\n On,\r\n IsEmpty,\r\n IsNotEmpty,\r\n In\r\n]\r\n\r\n/**\r\n * gets a smart filter operator item\r\n * @param operator legacy operator\r\n * @param type smart filter's type\r\n * @returns smart filter operator item\r\n */\r\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\r\n const smartFilterOperator = PepQueryBuilderOperators.find(item =>\r\n item.legacy === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operator value\r\n * @param operator smart filter operator item\r\n * @param type smart filter's type\r\n * @returns legacy operator value\r\n */\r\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\r\n const legacyOperator = PepQueryBuilderOperators.find(item =>\r\n item.smartFilter === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return legacyOperator ? legacyOperator.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepTypeConvertorService {\r\n private readonly _operators: IPepOption[] = [];\r\n private readonly _booleans: IPepOption[] = [];\r\n\r\n public get operators(): IPepOption[] {\r\n return this._operators;\r\n }\r\n\r\n public get booleans(): IPepOption[] {\r\n return this._booleans;\r\n }\r\n\r\n constructor() {\r\n this.initOperators();\r\n this.initBooleans();\r\n }\r\n\r\n private initOperators() {\r\n this._operators.push({\r\n key: 'AND',\r\n value: 'And'\r\n });\r\n this._operators.push({\r\n key: 'OR',\r\n value: 'Or'\r\n });\r\n }\r\n\r\n private initBooleans() {\r\n this._booleans.push({\r\n key: 'True',\r\n value: 'True'\r\n });\r\n this._booleans.push({\r\n key: 'False',\r\n value: 'False'\r\n });\r\n }\r\n\r\n}","import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n IPepButtonClickEvent,\r\n PepButton,\r\n} from '@pepperi-addons/ngx-lib/button';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryDepth } from '../common/model/structure';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-section',\r\n templateUrl: './query-builder-section.component.html',\r\n styleUrls: ['./query-builder-section.component.scss'],\r\n})\r\nexport class PepQueryBuilderSectionComponent {\r\n @Input() form: FormGroup;\r\n @Input() depth: IPepQueryDepth;\r\n @Input() hasFields = true;\r\n\r\n @Output()\r\n createSection = new EventEmitter();\r\n @Output()\r\n createItem = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n @Output()\r\n operatorChange = new EventEmitter();\r\n\r\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\r\n\r\n toggleButtons: Array<PepButton>;\r\n\r\n constructor(private _typeConvertorService: PepTypeConvertorService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.initOperators();\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n initOperators() {\r\n this.toggleButtons = this._typeConvertorService.operators.map((operator: IPepOption) => {\r\n return {\r\n key: operator.key,\r\n value: operator.value,\r\n callback: (event: IPepButtonClickEvent) =>\r\n this.onOperatorChanged(event)\r\n } as PepButton\r\n });\r\n }\r\n\r\n onOperatorChanged(event) {\r\n if (event?.source?.key) {\r\n this.f.operator.setValue(event.source.key);\r\n this.operatorChange.emit();\r\n }\r\n }\r\n\r\n onAddRuleClicked() {\r\n this.createItem.emit();\r\n }\r\n\r\n onAddRuleSetClicked() {\r\n this.createSection.emit();\r\n }\r\n\r\n onDeleteSectionClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepSmartFilterData } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-item',\r\n templateUrl: './query-builder-item.component.html',\r\n styleUrls: ['./query-builder-item.component.scss'],\r\n})\r\nexport class PepQueryBuilderItemComponent {\r\n @Input() formKey: string;\r\n _fields: Array<any> = [];\r\n _options: IPepOption[] = [];\r\n @Input()\r\n set fields(list: Array<IPepSmartFilterField>) {\r\n if (list?.length > 0) {\r\n this._fields = list;\r\n this._options = list.map(field => {\r\n return {\r\n key: field.id,\r\n value: field.name\r\n }\r\n })\r\n }\r\n }\r\n _selectedField: PepSmartFilterBaseField = null;\r\n @Input()\r\n set selected(value: any) {\r\n if (value) {\r\n this._selectedField = value;\r\n }\r\n }\r\n _filter: IPepSmartFilterData;\r\n @Input()\r\n set filter(value: IPepSmartFilterData) {\r\n if (value) {\r\n this._filter = value;\r\n }\r\n }\r\n _parentForm: FormGroup;\r\n @Input()\r\n set parentForm(value: FormGroup) {\r\n if (value) {\r\n this._parentForm = value;\r\n this.addToParentForm();\r\n }\r\n }\r\n\r\n @Output()\r\n filterChange = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n\r\n\r\n //test: any = {};\r\n\r\n _form: FormGroup;\r\n /*fieldWidth = 26;\r\n filterWidth = 67.5;\r\n binWidth = 6.5; */\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public typeConvertorService: PepTypeConvertorService\r\n ) {\r\n this.setupForm();\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n setupForm() {\r\n this._form = this._fb.group({\r\n fieldId: this._fb.control(null),\r\n fieldType: this._fb.control(null),\r\n operator: this._fb.control(null),\r\n operatorUnit: this._fb.control(null),\r\n values: this._fb.group({\r\n first: this._fb.control(null),\r\n second: this._fb.control(null)\r\n }),\r\n });\r\n }\r\n\r\n addToParentForm() {\r\n this._parentForm.setControl(this.formKey, this._form);\r\n }\r\n\r\n onFieldChanged(key) {\r\n const item = this._fields.find(field => field.id === key);\r\n\r\n this.setupForm();\r\n this.addToParentForm();\r\n\r\n /**\r\n * hack due to angular's change detection bug -\r\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\r\n */\r\n this._selectedField = null;\r\n setTimeout(() => {\r\n this._selectedField = item ? item : null;\r\n }, 0);\r\n\r\n this._filter = null;\r\n }\r\n\r\n onFilterChanged() {\r\n if (this._form.valid) {\r\n this.filterChange.emit();\r\n }\r\n }\r\n\r\n onDeleteItemClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\nexport class PepQueryBuilderTypeMap {\r\n private map: Map<string, PepSmartFilterType>;\r\n\r\n constructor() {\r\n this.loadTypes();\r\n }\r\n\r\n private loadTypes() {\r\n this.map = new Map<string, PepSmartFilterType>();\r\n this.map.set('Bool', 'boolean');\r\n this.map.set('JsonBool', 'boolean');\r\n this.map.set('Integer', 'int');\r\n this.map.set('Double', 'int');\r\n this.map.set('String', 'text');\r\n this.map.set('Guid', 'text');\r\n this.map.set('Date', 'date');\r\n this.map.set('DateTime', 'date-time');\r\n this.map.set('MultipleStringValues', 'multi-select');\r\n }\r\n\r\n /**\r\n * Converts legacy field type to smart builder type\r\n * @param type legacy type\r\n * @returns smart builder field type\r\n */\r\n getSmartBuilderType(key: string): PepSmartFilterType | null {\r\n const item = this.map.get(key);\r\n return item ? item : null;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\ninterface IPepQueryBuilderOperationUnit {\r\n legacy: string,\r\n smartFilter: IPepSmartFilterOperatorUnit,\r\n}\r\n\r\nconst Days: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Days',\r\n smartFilter: PepSmartFilterOperatorUnits.Days\r\n};\r\n\r\nconst Weeks: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Weeks',\r\n smartFilter: PepSmartFilterOperatorUnits.Weeks\r\n};\r\n\r\nconst Months: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Months',\r\n smartFilter: PepSmartFilterOperatorUnits.Months\r\n};\r\n\r\nconst Years: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Years',\r\n smartFilter: PepSmartFilterOperatorUnits.Years\r\n};\r\n\r\nconst PepQueryBuilderOperationUnit = [\r\n Days,\r\n Weeks,\r\n Months,\r\n Years,\r\n];\r\n\r\n/**\r\n * gets a smart filter operation unit item\r\n * @param operationUnit legacy operation unit\r\n * @returns smart filter operation unit item\r\n */\r\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\r\n const smartFilterOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\r\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operation unit value\r\n * @param operationUnit smart filter operation unit item\r\n * @returns legacy operation unit value\r\n */\r\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\r\n const legacyOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\r\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepQueryItem } from '../model/legacy';\r\nimport { getLegacyOperator } from '../model/operator';\r\nimport { getLegacyOperationUnit } from '../model/operator-unit';\r\nimport { PepSmartFilterOperators } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepOutputQueryService {\r\n private _complexIdCounter: number;\r\n private _expressionIdCounter: number;\r\n\r\n constructor() {\r\n //\r\n }\r\n\r\n /**\r\n * generates a legacy query structure \r\n * @param filters UI smart filters structure \r\n * @returns legacy query\r\n */\r\n generateQuery(filters: any) {\r\n this.initParams();\r\n\r\n return this.sectionWalk(filters);\r\n }\r\n\r\n /**\r\n * init params\r\n */\r\n private initParams() {\r\n this._complexIdCounter = 1;\r\n this._expressionIdCounter = 1;\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds legacy query structure\r\n * @param current UI object represents either a section or filter component\r\n * @returns section query data\r\n */\r\n private sectionWalk(current: any) {\r\n let section: any = null;\r\n\r\n Object.keys(current).forEach(key => {\r\n if (key.includes('item')) {\r\n section = this.addToSection(section, {\r\n ExpressionId: (this._expressionIdCounter++).toString(),\r\n ApiName: current[key].fieldId,\r\n Operation: getLegacyOperator(current[key].operator, current[key].fieldType),\r\n Values: this.getItemValues(current[key])\r\n } as IPepQueryItem, current.operator);\r\n } else if (key.includes('section')) {\r\n const childSection = this.sectionWalk(current[key]);\r\n if (childSection) {\r\n section = this.addToSection(section, childSection, current.operator);\r\n }\r\n }\r\n });\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * adds a legacy filter object to the current query structure\r\n * @param section section query data\r\n * @param item filter item\r\n * @param operator query operator\r\n * @returns \r\n */\r\n private addToSection(section: any, item: any, operator: string): any {\r\n return section ? this.createSection(section, item, operator) : item;\r\n }\r\n\r\n /**\r\n * creates a legacy complex object\r\n * @param left LeftNode object\r\n * @param right RightNode object\r\n * @param operator query operator\r\n * @returns legacy complex object\r\n */\r\n private createSection(left: any, right: any, operator: string) {\r\n return {\r\n ComplexId: (this._complexIdCounter++).toString(),\r\n LeftNode: left,\r\n RightNode: right,\r\n Operation: operator\r\n }\r\n }\r\n\r\n /**\r\n * gets legacy filter values object\r\n * @param current UI filter object's values\r\n * @returns an array represents legacy values\r\n */\r\n private getItemValues(current: any) {\r\n let values: any[] = [];\r\n\r\n if (current?.values?.first) {\r\n if (current.operator === PepSmartFilterOperators.In) { //multi select \r\n values = current.values.first;\r\n } else if (\r\n current.operator === PepSmartFilterOperators.InTheLast ||\r\n current.operator === PepSmartFilterOperators.NotInTheLast ||\r\n current.operator === PepSmartFilterOperators.DueIn ||\r\n current.operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit \r\n values.push(current.values.first);\r\n if (current.operatorUnit) {\r\n values.push(getLegacyOperationUnit(current.operatorUnit));\r\n }\r\n } else {\r\n values.push(current.values.first);\r\n if (current.values.second) {\r\n values.push(current.values.second);\r\n }\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}","export enum PepOperatorTypes {\r\n And = 'AND',\r\n Or = 'OR'\r\n}\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { } from 'lodash';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport {\r\n IPepSmartFilterField,\r\n IPepSmartFilterData,\r\n PepSmartFilterOperators,\r\n IPepSmartFilterOperator,\r\n PepSmartFilterType,\r\n createSmartFilter,\r\n createSmartFilterField\r\n} from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { getSmartBuilderOperator } from './common/model/operator';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\nimport { PepQueryBuilderTypeMap } from './common/model/type-map';\r\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryBuilderValues } from './common/model/filter';\r\nimport { PepOperatorTypes } from './common/model/type';\r\n\r\nconst MAX_STRUCTURE_DEPTH = 3;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PepQueryBuilderService {\r\n private _outputQuery$ = new BehaviorSubject<any>(null);\r\n\r\n private _smartFilterFields: Array<IPepSmartFilterField>;\r\n private _form: FormGroup;\r\n private _maxStructureDepth = MAX_STRUCTURE_DEPTH;\r\n\r\n public outputQuery$ = this._outputQuery$.asObservable();\r\n\r\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputQueryService: PepOutputQueryService) {\r\n\r\n }\r\n\r\n set maxDepth(value) {\r\n this._maxStructureDepth = value;\r\n }\r\n\r\n get maxDepth() {\r\n return this._maxStructureDepth;\r\n }\r\n\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this._smartFilterFields = this.convertToSmartFilterFields(list);\r\n }\r\n\r\n get hasFields(): boolean {\r\n return this._smartFilterFields?.length > 0;\r\n }\r\n\r\n set form(value: FormGroup) {\r\n this._form = value;\r\n }\r\n\r\n get form() {\r\n return this._form;\r\n }\r\n\r\n /**\r\n * builds a dynamic UI query structure\r\n * might has a different structure than the query's due to parent-child elements merge\r\n * @param query legacy query \r\n * @param containerRef reference to root element\r\n */\r\n buildQueryStructure(\r\n query: IPepQuerySection,\r\n containerRef: ViewContainerRef\r\n ) {\r\n //update root operator \r\n if (this.hasProperty(query, 'ComplexId') &&\r\n query?.Operation &&\r\n query.Operation !== this._form.get('operator').value) {\r\n this._form.get('operator').setValue(query.Operation);\r\n }\r\n this.flatten(null, query, containerRef, this._form, 1);\r\n }\r\n\r\n /**\r\n * checks if the object contains property\r\n * @param obj object\r\n * @param prop property name\r\n * @returns true if contains, false otherwise\r\n */\r\n private hasProperty(obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds UI filters structure\r\n * @param parent legacy complex object\r\n * @param current child legacy object (either another complex or expression type)\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n private flatten(parent: IPepQuerySection, current: IPepQuerySection | IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n if (this.hasProperty(current, 'ComplexId')) {\r\n const section = current as IPepQuerySection;\r\n if (parent?.Operation === current.Operation) {\r\n this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);\r\n this.flatten(parent, section.RightNode, containerRef, parentForm, depth);\r\n } else {\r\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\r\n this.flatten(section, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\r\n this.flatten(section, section.RightNode, result.containerRef, result.parentForm, depth + 1);\r\n }\r\n } else if (this.hasProperty(current, 'ExpressionId')) {\r\n this.createItem(current as IPepQueryItem, containerRef, parentForm);\r\n }\r\n }\r\n\r\n /**\r\n * creates a container object of two or more child filter items\r\n * @param operator AND/OR operator\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n * @param depth\r\n * @returns an object containing the current element and current form\r\n */\r\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n const sectionGroup = this._fb.group({\r\n operator: this._fb.control(operator || PepOperatorTypes.And)\r\n });\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\r\n const formKey = `section${counter}`;\r\n parentForm.addControl(formKey, sectionGroup);\r\n\r\n componentRef.instance.form = sectionGroup;\r\n componentRef.instance.depth = {\r\n current: depth,\r\n max: this._maxStructureDepth\r\n };\r\n componentRef.instance.createSection.subscribe(() => {\r\n const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);\r\n this.createItem(null, section.containerRef, section.parentForm);\r\n });\r\n componentRef.instance.createItem.subscribe(() => {\r\n this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.operatorChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n\r\n return {\r\n containerRef: componentRef.instance.sectionContainer,\r\n parentForm: sectionGroup\r\n };\r\n }\r\n\r\n /**\r\n * creates a component represents filter item (leaf element - has no childs)\r\n * @param current filter legacy element\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n createItem(current: IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\r\n const formKey = `item${counter}`;\r\n\r\n componentRef.instance.formKey = formKey;\r\n componentRef.instance.fields = this._smartFilterFields;\r\n const selectedField = this.getSelectedField(current);\r\n if (selectedField) {\r\n componentRef.instance.selected = selectedField;\r\n if (current) {\r\n componentRef.instance.filter = this.getFilter(current, selectedField);\r\n }\r\n }\r\n componentRef.instance.parentForm = parentForm;\r\n componentRef.instance.filterChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n }\r\n\r\n /**\r\n * creates a smart filter object\r\n * @param current filter legacy element\r\n * @param field filter's selected field\r\n * @returns smart filter object\r\n */\r\n private getFilter(current: IPepQueryItem, field: any): IPepSmartFilterData | null {\r\n const operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\r\n if (operator) {\r\n const filterValues: IPepQueryBuilderValues = this.getFilterValues(current, operator, field);\r\n return createSmartFilter(\r\n current.ApiName,\r\n operator,\r\n filterValues.first,\r\n filterValues.second,\r\n filterValues.operationUnit\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * get smart filter field\r\n * @param current filter legacy element\r\n * @returns smart filter field, if not found returns the first fields\r\n */\r\n private getSelectedField(current: IPepQueryItem): IPepSmartFilterField | null {\r\n if (current) {\r\n const item = this._smartFilterFields.find(field => field.id === current.ApiName);\r\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n } else {\r\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n }\r\n }\r\n\r\n /**\r\n * gets smart filter's values data\r\n * @param current filter legacy element\r\n * @param operator smart filter operator\r\n * @param field filter's selected field\r\n * @returns object contains the filter values data\r\n */\r\n private getFilterValues(current: IPepQueryItem, operator: IPepSmartFilterOperator, field: any) {\r\n const data: IPepQueryBuilderValues = {\r\n first: null,\r\n second: null,\r\n operationUnit: null\r\n };\r\n\r\n if (operator === PepSmartFilterOperators.In) { //multi select \r\n //filter keys don't exist on field options\r\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\r\n return field.options.find(option => option.key === item);\r\n }) : null;\r\n } else if (\r\n operator === PepSmartFilterOperators.InTheLast ||\r\n operator === PepSmartFilterOperators.NotInTheLast ||\r\n operator === PepSmartFilterOperators.DueIn ||\r\n operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n if (current?.Values?.length === 2) {\r\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\r\n }\r\n } else {\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * converts legacy fields to smart filter fields\r\n * @param fields legacy fields array\r\n * @returns smart filter fields array\r\n */\r\n private convertToSmartFilterFields(fields: Array<IPepQueryBuilderField>) {\r\n if (fields?.length > 0) {\r\n const typeMapper = new PepQueryBuilderTypeMap();\r\n return fields.map((field) => {\r\n return createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n } as IPepSmartFilterField\r\n , typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType)\r\n })\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * creates a legacy output query \r\n */\r\n createOutputQuery() {\r\n if (this._form.valid) {\r\n const query = this._outputQueryService.generateQuery(this._form.value);\r\n this._outputQuery$.next(query);\r\n }\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { IPepQueryBuilderField, IPepQuerySection } from './common/model/legacy';\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { IPepQueryDepth } from './common/model/structure';\r\nimport { PepOperatorTypes } from './common/model/type';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pep-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n})\r\nexport class PepQueryBuilderComponent implements OnInit, OnDestroy {\r\n _query: IPepQuerySection = null;\r\n @Input()\r\n set query(object: IPepQuerySection) {\r\n this._query = object;\r\n this.loadQuery()\r\n }\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this.queryBuilderService.fields = list;\r\n this.hasFields = this.queryBuilderService.hasFields;\r\n this.loadQuery();\r\n }\r\n @Input()\r\n set maxDepth(value: number) {\r\n this.queryBuilderService.maxDepth = value;\r\n }\r\n\r\n @Output()\r\n queryChange: EventEmitter<IPepQuerySection> = new EventEmitter<IPepQuerySection>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('rootContainer', { static: true }) root: PepQueryBuilderSectionComponent;\r\n\r\n _formSubscription$: Subscription;\r\n _outputQuerySubscription$: Subscription;\r\n\r\n _lastFormValidStatus = true;\r\n\r\n //form: FormGroup;\r\n depth: IPepQueryDepth;\r\n hasFields = false;\r\n //sectionContainer;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public queryBuilderService: PepQueryBuilderService\r\n ) {\r\n this.setupForm();\r\n this.initDepth();\r\n this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe((val) => {\r\n if (this.queryBuilderService.form.valid !== this._lastFormValidStatus) {\r\n this._lastFormValidStatus = this.queryBuilderService.form.valid;\r\n this.formValidationChange.emit(this._lastFormValidStatus);\r\n }\r\n });\r\n this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe((outputQuery) => {\r\n this.queryChange.emit(outputQuery);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n //console.log('this.queryRoot.get()', this.root.sectionContainer);\r\n // this.queryBuilderService.createFilterTree(this.query, this.fields, this.form, this.queryRoot);\r\n }\r\n\r\n setupForm() {\r\n this.queryBuilderService.form = this._fb.group({\r\n operator: this._fb.control(PepOperatorTypes.And)\r\n });\r\n }\r\n\r\n initDepth() {\r\n this.depth = {\r\n current: 0,\r\n max: this.queryBuilderService.maxDepth\r\n }\r\n }\r\n\r\n /**\r\n * builds UI query structure as soon as both the fields and query loads\r\n */\r\n loadQuery() {\r\n if (\r\n this._query &&\r\n this.queryBuilderService.hasFields &&\r\n this.root?.sectionContainer\r\n ) {\r\n this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);\r\n }\r\n }\r\n\r\n onCreateSection() {\r\n const section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);\r\n this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);\r\n //console.log('onCreateSection outer');\r\n }\r\n\r\n onCreateItem() {\r\n this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);\r\n //console.log('onCreateItem outer');\r\n }\r\n\r\n onOperatorChange() {\r\n this.queryBuilderService.createOutputQuery();\r\n //console.log('onOperatorChange outer');\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._formSubscription$) {\r\n this._formSubscription$.unsubscribe();\r\n }\r\n if (this._outputQuerySubscription$) {\r\n this._outputQuerySubscription$.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\r\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\r\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\r\n\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { PepTypeConvertorService } from './common/services/type-convertor.service';\r\n\r\nimport { PepQueryBuilderComponent } from './query-builder.component';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n PepSelectModule,\r\n PepButtonModule,\r\n PepGroupButtonsModule,\r\n PepSmartFiltersModule\r\n ],\r\n exports: [\r\n PepQueryBuilderComponent\r\n ],\r\n declarations: [\r\n PepQueryBuilderComponent,\r\n PepQueryBuilderSectionComponent,\r\n PepQueryBuilderItemComponent\r\n ],\r\n providers: [\r\n PepQueryBuilderService,\r\n PepOutputQueryService,\r\n PepTypeConvertorService\r\n ]\r\n})\r\nexport class PepQueryBuilderModule { }\r\n","/*\r\n * Public API Surface of ngx-lib/query-builder\r\n */\r\nexport * from './query-builder.module';\r\nexport * from './query-builder.component';\r\nexport * from './query-builder.service';\r\nexport * from './common/model/legacy';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepOutputQueryService as ɵa} from './common/services/output-query.service';\nexport {PepTypeConvertorService as ɵc} from './common/services/type-convertor.service';\nexport {PepQueryBuilderItemComponent as ɵd} from './query-builder-item/query-builder-item.component';\nexport {PepQueryBuilderSectionComponent as ɵb} from './query-builder-section/query-builder-section.component';"],"names":["PepSmartFilterOperators","Injectable","EventEmitter","Component","Input","Output","ViewChild","ViewContainerRef","FormBuilder","PepSmartFilterOperatorUnits","BehaviorSubject","createSmartFilter","createSmartFilterField","ComponentFactoryResolver","NgModule","CommonModule","ReactiveFormsModule","FlexLayoutModule","PepSelectModule","PepButtonModule","PepGroupButtonsModule","PepSmartFiltersModule"],"mappings":"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"}
|