Skip to content

Commit 40a7ec9

Browse files
committed
bugs #14274 (archive-search/collect): fix the restoration of rule categories from saved search criteria
1 parent 94e19a2 commit 40a7ec9

File tree

2 files changed

+74
-82
lines changed

2 files changed

+74
-82
lines changed

ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/archive-search.component.ts

Lines changed: 23 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft
487487
this.searchCriteriaKeys = [];
488488
this.included = false;
489489
}
490-
this.reMapSearchCriteriaFromSearchCriteriaHistory(event);
490+
this.applySearchCriteriaHistory(event);
491491
}
492492

493493
emitOrderChange() {
@@ -758,49 +758,34 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft
758758
this.recursiveCheck(this.nodeArray, show);
759759
}
760760

761-
public reMapSearchCriteriaFromSearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
761+
private applySearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
762762
this.subscribeResetNodesOnFilingHoldingNodesChanges();
763763
this.recursiveCheck(this.nodeArray, false);
764764

765765
storedSearchCriteriaHistory.searchCriteriaList.forEach((criteria: SearchCriteriaEltements) => {
766766
this.fillTreeNodeAsSearchCriteriaHistory(criteria);
767-
const c = criteria.criteria;
767+
768+
const category = criteria.category as SearchCriteriaTypeEnum;
769+
const isRuleCategory = Object.keys(SearchCriteriaTypeEnum)
770+
.filter((key) => key.includes('RULE'))
771+
.includes(category);
772+
773+
if (isRuleCategory) {
774+
this.addCriteriaCategory(category);
775+
}
776+
768777
criteria.values.forEach((value) => {
769-
if (
770-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.APPRAISAL_RULE] ||
771-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.NODES] ||
772-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.ACCESS_RULE] ||
773-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.STORAGE_RULE] ||
774-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.REUSE_RULE] ||
775-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.DISSEMINATION_RULE]
776-
) {
777-
this.addCriteriaCategory(criteria.category);
778-
this.addCriteria(
779-
c,
780-
value,
781-
value.value,
782-
criteria.keyTranslated,
783-
criteria.operator,
784-
criteria.category,
785-
criteria.valueTranslated,
786-
criteria.dataType,
787-
true,
788-
);
789-
} else if (criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.FIELDS]) {
790-
this.addCriteria(
791-
c,
792-
value,
793-
c === ALL_ARCHIVE_UNIT_TYPES
794-
? this.translateService.instant('COLLECT.SEARCH_CRITERIA_FILTER.FIELDS.UNIT_TYPE.' + value.id)
795-
: value.value,
796-
criteria.keyTranslated,
797-
criteria.operator,
798-
SearchCriteriaTypeEnum.FIELDS,
799-
criteria.valueTranslated,
800-
criteria.dataType,
801-
true,
802-
);
803-
}
778+
this.addCriteria(
779+
criteria.criteria,
780+
value,
781+
value.value,
782+
criteria.keyTranslated,
783+
criteria.operator,
784+
category,
785+
criteria.valueTranslated,
786+
criteria.dataType,
787+
true,
788+
);
804789
});
805790
});
806791
}

ui/ui-frontend/projects/collect/src/app/collect/archive-search-collect/archive-search-collect.component.ts

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -911,58 +911,38 @@ export class ArchiveSearchCollectComponent extends SidenavPage<any> implements O
911911
this.searchCriteriaKeys = [];
912912
this.included = false;
913913
}
914-
this.reMapSearchCriteriaFromSearchCriteriaHistory(event);
914+
this.applySearchCriteriaHistory(event);
915915
}
916916

917-
public reMapSearchCriteriaFromSearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
917+
private applySearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
918918
// TODO : to uncomment when filing will be available
919919
// this.setFilingHoldingScheme();
920920
// this.checkAllNodes(false);
921+
921922
storedSearchCriteriaHistory.searchCriteriaList.forEach((criteria: SearchCriteriaEltements) => {
922923
this.fillTreeNodeAsSearchCriteriaHistory(criteria);
923-
const c = criteria.criteria;
924+
925+
const category = criteria.category as SearchCriteriaTypeEnum;
926+
const isRuleCategory = Object.keys(SearchCriteriaTypeEnum)
927+
.filter((key) => key.includes('RULE'))
928+
.includes(category);
929+
930+
if (isRuleCategory) {
931+
this.addCriteriaCategory(category);
932+
}
933+
924934
criteria.values.forEach((value) => {
925-
if (
926-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.APPRAISAL_RULE] ||
927-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.NODES] ||
928-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.ACCESS_RULE] ||
929-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.STORAGE_RULE] ||
930-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.REUSE_RULE] ||
931-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.DISSEMINATION_RULE]
932-
) {
933-
this.addCriteriaCategory(criteria.category);
934-
this.archiveHelperService.addCriteria(
935-
this.searchCriterias,
936-
this.searchCriteriaKeys,
937-
this.nbQueryCriteria,
938-
c,
939-
value,
940-
value.value,
941-
criteria.keyTranslated,
942-
criteria.operator,
943-
criteria.category,
944-
criteria.valueTranslated,
945-
criteria.dataType,
946-
true,
947-
);
948-
} else if (criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.FIELDS]) {
949-
this.archiveHelperService.addCriteria(
950-
this.searchCriterias,
951-
this.searchCriteriaKeys,
952-
this.nbQueryCriteria,
953-
c,
954-
value,
955-
c === ALL_ARCHIVE_UNIT_TYPES
956-
? this.translateService.instant('COLLECT.SEARCH_CRITERIA_FILTER.FIELDS.UNIT_TYPE.' + value.id)
957-
: value.value,
958-
criteria.keyTranslated,
959-
criteria.operator,
960-
SearchCriteriaTypeEnum.FIELDS,
961-
criteria.valueTranslated,
962-
criteria.dataType,
963-
true,
964-
);
965-
}
935+
this.addCriteria(
936+
criteria.criteria,
937+
value,
938+
value.value,
939+
criteria.keyTranslated,
940+
criteria.operator,
941+
category,
942+
criteria.valueTranslated,
943+
criteria.dataType,
944+
true,
945+
);
966946
});
967947
});
968948
}
@@ -1063,6 +1043,33 @@ export class ArchiveSearchCollectComponent extends SidenavPage<any> implements O
10631043
}
10641044
}
10651045

1046+
private addCriteria(
1047+
keyElt: string,
1048+
valueElt: CriteriaValue,
1049+
labelElt: string,
1050+
keyTranslated: boolean,
1051+
operator: string,
1052+
category: SearchCriteriaTypeEnum,
1053+
valueTranslated: boolean,
1054+
dataType: string,
1055+
emit: boolean,
1056+
) {
1057+
this.archiveHelperService.addCriteria(
1058+
this.searchCriterias,
1059+
this.searchCriteriaKeys,
1060+
this.nbQueryCriteria,
1061+
keyElt,
1062+
valueElt,
1063+
labelElt,
1064+
keyTranslated,
1065+
operator,
1066+
category,
1067+
valueTranslated,
1068+
dataType,
1069+
emit,
1070+
);
1071+
}
1072+
10661073
trackBy(_: number, unit: Unit) {
10671074
// FIXME: for some reason, that trackBy - used to make Angular update the Unit in the list when it's modified in the sidenav - is not always working correctly: sometimes, the Unit is updated, sometimes not. It looks like it is updated for "simple" Units (with only Généralités) and not for "complex" ones.
10681075
return unit['#id'];

0 commit comments

Comments
 (0)