ngx-wapp-components 3.2.11 → 3.2.12-alpha.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.
@@ -5531,14 +5531,73 @@ class WFilterPanelComponent {
5531
5531
  this.hasDefaultValues = new EventEmitter();
5532
5532
  this.stateOptions = [{ label: this.translationsObject.advancedSearch.andButtonLabel, value: 'and' }, { label: this.translationsObject.advancedSearch.orButtonLabel, value: 'or' }];
5533
5533
  }
5534
- ngOnInit() {
5535
- this.isAdvancedSearch = this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId)?.advancedQueryValue ? true : false;
5536
- if ((this.storedQuery?.advancedQueryValue && this.storedQuery?.advancedQueryValue.rules.length == 0) || (this.storedQuery?.basicQueryValue && this.storedQuery?.basicQueryValue.rules.length == 0)) {
5537
- //Do nothing
5534
+ cloneDeep(value) {
5535
+ return JSON.parse(JSON.stringify(value));
5536
+ }
5537
+ hasStoredQueryValues() {
5538
+ return !!(this.storedQuery?.id === this.filterId &&
5539
+ ((this.storedQuery?.basicQueryValue?.rules?.length ?? 0) > 0 ||
5540
+ (this.storedQuery?.advancedQueryValue?.rules?.length ?? 0) > 0 ||
5541
+ (this.storedQuery?.groupedQueryValue?.rules?.length ?? 0) > 0));
5542
+ }
5543
+ buildQueryFromStored(source) {
5544
+ return {
5545
+ type: this.getQueryType(),
5546
+ basic: this.storedQuery?.basicQueryValue ? this.cloneDeep(this.storedQuery?.basicQueryValue) : null,
5547
+ advanced: this.storedQuery?.advancedQueryValue ? this.cloneDeep(this.storedQuery?.advancedQueryValue) : null,
5548
+ grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped && this.groupedQueryCtrl ? this.cloneDeep(this.groupedQueryCtrl?.value) : null,
5549
+ options: {
5550
+ periodSelectType: this.periodSelectComponent ? this.periodSelectComponent.periodCategorySelected : null,
5551
+ source,
5552
+ }
5553
+ };
5554
+ }
5555
+ buildQueryFromControls(source) {
5556
+ return {
5557
+ type: this.getQueryType(),
5558
+ basic: this.isAdvancedSearch ? null : this.cloneDeep(this.queryCtrl.value),
5559
+ advanced: this.isAdvancedSearch ? this.cloneDeep(this.advancedQueryCtrl.value) : null,
5560
+ grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped ? this.cloneDeep(this.groupedQueryCtrl.value) : null,
5561
+ options: {
5562
+ periodSelectType: this.periodSelectComponent ? this.periodSelectComponent.periodCategorySelected : null,
5563
+ source,
5564
+ }
5565
+ };
5566
+ }
5567
+ normalizeQueryForEmit(queries, persistOnStorage) {
5568
+ this.setEntity(queries);
5569
+ queries = this.initializeOperators(queries);
5570
+ queries = this.handleEmptyFieldsQuery(queries);
5571
+ if (queries.type !== QueryResultType.NoFilters) {
5572
+ this.nullableFilterOperationHandle(queries.basic ? queries.basic : queries.advanced);
5573
+ this.setPeriodSelectValue(queries.basic ? queries.basic : queries.advanced);
5538
5574
  }
5539
- else {
5540
- this.storedQuery = this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId);
5575
+ this.setEmtpyArraysToNull(queries.basic ? queries.basic : queries.advanced);
5576
+ if (persistOnStorage) {
5577
+ let storedQuery = {
5578
+ id: this.filterId,
5579
+ basicQueryValue: queries.basic,
5580
+ advancedQueryValue: queries.advanced,
5581
+ groupedQueryValue: queries.grouped
5582
+ };
5583
+ if (!(storedQuery.advancedQueryValue && storedQuery.advancedQueryValue.rules.length === 0)) {
5584
+ this.sessionStorage.setLastFilterPanelQuery(this.tenantId, storedQuery);
5585
+ }
5586
+ }
5587
+ this.keepLocalDateFilterOperationHandle(queries.basic ? queries.basic : queries.advanced);
5588
+ queries = this.deleteFieldsWithoutValue(queries);
5589
+ queries = this.handleEmptyFieldsQuery(queries);
5590
+ if (queries.advanced) {
5591
+ queries.advanced = this.modifyTreeListValueParentToNull(queries.advanced);
5592
+ }
5593
+ else if (queries.basic) {
5594
+ queries.basic = this.modifyTreeListValueParentToNull(queries.basic);
5541
5595
  }
5596
+ return queries;
5597
+ }
5598
+ ngOnInit() {
5599
+ this.isAdvancedSearch = this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId)?.advancedQueryValue ? true : false;
5600
+ this.storedQuery = this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId);
5542
5601
  this.getQueryBuilderFilterPanel();
5543
5602
  }
5544
5603
  initQueryBuilderControls() {
@@ -5547,28 +5606,15 @@ class WFilterPanelComponent {
5547
5606
  if (this.filterPanelObject.allowGrouped) {
5548
5607
  this.groupedQueryCtrl = this.formBuilder.control(this.groupedQuery);
5549
5608
  }
5550
- if ((this.storedQuery?.advancedQueryValue && this.storedQuery?.advancedQueryValue.rules.length == 0) || (this.storedQuery?.basicQueryValue && this.storedQuery?.basicQueryValue.rules.length == 0)) {
5551
- //Do nothing
5552
- }
5553
- else {
5554
- let lastQuery = {
5555
- type: this.getQueryType(),
5556
- basic: this.storedQuery?.basicQueryValue ? Object.assign({}, this.storedQuery?.basicQueryValue) : null,
5557
- advanced: this.storedQuery?.advancedQueryValue ? Object.assign({}, this.storedQuery?.advancedQueryValue) : null,
5558
- grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped && this.groupedQueryCtrl ? Object.assign({}, this.groupedQueryCtrl?.value) : null
5559
- };
5560
- this.setNoFiltersQueryType(lastQuery)
5561
- .then((res) => {
5562
- lastQuery = this.deleteFieldsWithoutValue(lastQuery);
5563
- lastQuery = this.handleEmptyFieldsQuery(lastQuery);
5564
- this.lastQuery.emit(lastQuery);
5565
- }).then(() => {
5566
- this.inverseNullableFilterOperationHandle(this.advancedQueryCtrl.value);
5567
- })
5568
- .then(() => {
5569
- this.onSearchClicked();
5570
- });
5609
+ const hasStoredQuery = this.hasStoredQueryValues();
5610
+ const initSource = hasStoredQuery ? 'init-storage' : 'init-default';
5611
+ if (hasStoredQuery) {
5612
+ let lastQuery = this.normalizeQueryForEmit(this.buildQueryFromStored(initSource), false);
5613
+ this.lastQuery.emit(this.cloneDeep(lastQuery));
5614
+ this.onSearchClicked(initSource, lastQuery);
5615
+ return;
5571
5616
  }
5617
+ this.onSearchClicked(initSource);
5572
5618
  }
5573
5619
  nullableSelectPlaceholder(rule, options) {
5574
5620
  if (rule.operator == 'is' && rule.value == 'null') {
@@ -5582,6 +5628,9 @@ class WFilterPanelComponent {
5582
5628
  return this.translationsObject.fieldsPlaceholders.list;
5583
5629
  }
5584
5630
  setEmtpyArraysToNull(query) {
5631
+ if (!query) {
5632
+ return;
5633
+ }
5585
5634
  if ("rules" in query) {
5586
5635
  query.rules.forEach((rule) => {
5587
5636
  this.setEmtpyArraysToNull(rule);
@@ -5611,54 +5660,18 @@ class WFilterPanelComponent {
5611
5660
  }
5612
5661
  }
5613
5662
  }
5614
- onSearchClicked() {
5615
- let queries = {
5616
- type: this.getQueryType(),
5617
- basic: this.isAdvancedSearch ? null : Object.assign({}, this.queryCtrl.value),
5618
- advanced: this.isAdvancedSearch ? Object.assign({}, this.advancedQueryCtrl.value) : null,
5619
- grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped ? Object.assign({}, this.groupedQueryCtrl.value) : null,
5620
- options: {
5621
- periodSelectType: this.periodSelectComponent ? this.periodSelectComponent.periodCategorySelected : null,
5622
- }
5623
- };
5624
- this.setEntity(queries);
5625
- queries = this.initializeOperators(queries);
5626
- this.setNoFiltersQueryType(queries).then((resQueries) => {
5627
- if (resQueries.type != 0) {
5628
- this.nullableFilterOperationHandle(queries.basic ? queries.basic : queries.advanced);
5629
- this.setPeriodSelectValue(queries.basic ? queries.basic : queries.advanced);
5630
- }
5631
- }).then((resQueries) => {
5632
- let storedQuery = {
5633
- id: this.filterId,
5634
- basicQueryValue: queries.basic,
5635
- advancedQueryValue: queries.advanced,
5636
- groupedQueryValue: queries.grouped
5663
+ onSearchClicked(source = 'user-click', preBuiltQuery) {
5664
+ let queries = preBuiltQuery ? this.cloneDeep(preBuiltQuery) : this.buildQueryFromControls(source);
5665
+ if (!preBuiltQuery) {
5666
+ queries = this.normalizeQueryForEmit(queries, true);
5667
+ }
5668
+ else {
5669
+ queries.options = {
5670
+ ...(queries.options ?? {}),
5671
+ source,
5637
5672
  };
5638
- this.setEmtpyArraysToNull(queries.basic ? queries.basic : queries.advanced);
5639
- if (storedQuery.advancedQueryValue && storedQuery.advancedQueryValue.rules == 0) {
5640
- //Do nothing
5641
- }
5642
- else {
5643
- this.sessionStorage.setLastFilterPanelQuery(this.tenantId, storedQuery);
5644
- }
5645
- this.keepLocalDateFilterOperationHandle(queries.basic ? queries.basic : queries.advanced);
5646
- }).then((resQueries) => {
5647
- queries = this.deleteFieldsWithoutValue(queries);
5648
- queries = this.handleEmptyFieldsQuery(queries);
5649
- if (queries.advanced) {
5650
- queries.advanced = this.modifyTreeListValueParentToNull(queries.advanced);
5651
- }
5652
- else {
5653
- queries.basic = this.modifyTreeListValueParentToNull(queries.basic);
5654
- }
5655
- this.searchClicked.emit(queries);
5656
- }).then(() => {
5657
- this.inverseNullableFilterOperationHandle(this.advancedQueryCtrl.value);
5658
- })
5659
- .catch((error) => {
5660
- console.error("Error en la promesa:", error);
5661
- });
5673
+ }
5674
+ this.searchClicked.emit(queries);
5662
5675
  }
5663
5676
  setNoFiltersQueryType(queries) {
5664
5677
  return new Promise((resolve, reject) => {
@@ -5680,14 +5693,23 @@ class WFilterPanelComponent {
5680
5693
  }
5681
5694
  }
5682
5695
  handleEmptyFieldsQuery(queries) {
5683
- if (queries.advanced != null && queries.advanced?.rules.length == 0) {
5684
- queries.type = 0;
5696
+ const basicHasRules = !!queries.basic?.rules?.length;
5697
+ const advancedHasRules = !!queries.advanced?.rules?.length;
5698
+ const groupedHasRules = !!queries.grouped?.rules?.length;
5699
+ if (groupedHasRules) {
5700
+ queries.type = QueryResultType.Grouped;
5701
+ }
5702
+ else if (advancedHasRules) {
5703
+ queries.type = QueryResultType.Advanced;
5685
5704
  }
5686
- if (queries.basic != null && queries.basic?.rules.length == 0) {
5687
- queries.type = 0;
5705
+ else if (basicHasRules) {
5706
+ queries.type = QueryResultType.Basic;
5707
+ }
5708
+ else {
5709
+ queries.type = QueryResultType.NoFilters;
5688
5710
  }
5689
- if (queries.grouped != null && queries.grouped?.rules.length == 0) {
5690
- queries.type = 0;
5711
+ if (queries.grouped && !groupedHasRules) {
5712
+ queries.grouped = null;
5691
5713
  }
5692
5714
  return queries;
5693
5715
  }
@@ -5744,7 +5766,7 @@ class WFilterPanelComponent {
5744
5766
  }
5745
5767
  }
5746
5768
  keepLocalDateFilterOperationHandle(query) {
5747
- if (this.fieldsToKeepLocalDate.length > 0) {
5769
+ if (this.fieldsToKeepLocalDate.length > 0 && query) {
5748
5770
  if ("rules" in query) {
5749
5771
  query.rules.forEach((rule) => {
5750
5772
  this.keepLocalDateFilterOperationHandle(rule);
@@ -5879,7 +5901,7 @@ class WFilterPanelComponent {
5879
5901
  return QueryResultType.Basic;
5880
5902
  }
5881
5903
  else {
5882
- if (this.isAdvancedSearch && this.groupedQueryCtrl?.value) {
5904
+ if (this.isAdvancedSearch && this.groupedQueryCtrl?.value?.rules?.length) {
5883
5905
  return QueryResultType.Grouped;
5884
5906
  }
5885
5907
  else {