Skip to content

Commit fa78d28

Browse files
authored
Merge pull request #3247 from ProgrammeVitam/cp_7.1__bugs_14274
CP V7.1 - bugs #14274 (archive-search/collect): fix the restoration of rule categories from saved search criteria
2 parents 77f4245 + e1b3d23 commit fa78d28

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
@@ -474,7 +474,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft
474474
this.searchCriteriaKeys = [];
475475
this.included = false;
476476
}
477-
this.reMapSearchCriteriaFromSearchCriteriaHistory(event);
477+
this.applySearchCriteriaHistory(event);
478478
}
479479

480480
emitOrderChange() {
@@ -744,49 +744,34 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft
744744
this.recursiveCheck(this.nodeArray, show);
745745
}
746746

747-
public reMapSearchCriteriaFromSearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
747+
private applySearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
748748
this.subscribeResetNodesOnFilingHoldingNodesChanges();
749749
this.recursiveCheck(this.nodeArray, false);
750750

751751
storedSearchCriteriaHistory.searchCriteriaList.forEach((criteria: SearchCriteriaEltements) => {
752752
this.fillTreeNodeAsSearchCriteriaHistory(criteria);
753-
const c = criteria.criteria;
753+
754+
const category = criteria.category as SearchCriteriaTypeEnum;
755+
const isRuleCategory = Object.keys(SearchCriteriaTypeEnum)
756+
.filter((key) => key.includes('RULE'))
757+
.includes(category);
758+
759+
if (isRuleCategory) {
760+
this.addCriteriaCategory(category);
761+
}
762+
754763
criteria.values.forEach((value) => {
755-
if (
756-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.APPRAISAL_RULE] ||
757-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.NODES] ||
758-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.ACCESS_RULE] ||
759-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.STORAGE_RULE] ||
760-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.REUSE_RULE] ||
761-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.DISSEMINATION_RULE]
762-
) {
763-
this.addCriteriaCategory(criteria.category);
764-
this.addCriteria(
765-
c,
766-
value,
767-
value.value,
768-
criteria.keyTranslated,
769-
criteria.operator,
770-
criteria.category,
771-
criteria.valueTranslated,
772-
criteria.dataType,
773-
true,
774-
);
775-
} else if (criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.FIELDS]) {
776-
this.addCriteria(
777-
c,
778-
value,
779-
c === ALL_ARCHIVE_UNIT_TYPES
780-
? this.translateService.instant('COLLECT.SEARCH_CRITERIA_FILTER.FIELDS.UNIT_TYPE.' + value.id)
781-
: value.value,
782-
criteria.keyTranslated,
783-
criteria.operator,
784-
SearchCriteriaTypeEnum.FIELDS,
785-
criteria.valueTranslated,
786-
criteria.dataType,
787-
true,
788-
);
789-
}
764+
this.addCriteria(
765+
criteria.criteria,
766+
value,
767+
value.value,
768+
criteria.keyTranslated,
769+
criteria.operator,
770+
category,
771+
criteria.valueTranslated,
772+
criteria.dataType,
773+
true,
774+
);
790775
});
791776
});
792777
}

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
@@ -877,58 +877,38 @@ export class ArchiveSearchCollectComponent extends SidenavPage<any> implements O
877877
this.searchCriteriaKeys = [];
878878
this.included = false;
879879
}
880-
this.reMapSearchCriteriaFromSearchCriteriaHistory(event);
880+
this.applySearchCriteriaHistory(event);
881881
}
882882

883-
public reMapSearchCriteriaFromSearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
883+
private applySearchCriteriaHistory(storedSearchCriteriaHistory: SearchCriteriaHistory) {
884884
// TODO : to uncomment when filing will be available
885885
// this.setFilingHoldingScheme();
886886
// this.checkAllNodes(false);
887+
887888
storedSearchCriteriaHistory.searchCriteriaList.forEach((criteria: SearchCriteriaEltements) => {
888889
this.fillTreeNodeAsSearchCriteriaHistory(criteria);
889-
const c = criteria.criteria;
890+
891+
const category = criteria.category as SearchCriteriaTypeEnum;
892+
const isRuleCategory = Object.keys(SearchCriteriaTypeEnum)
893+
.filter((key) => key.includes('RULE'))
894+
.includes(category);
895+
896+
if (isRuleCategory) {
897+
this.addCriteriaCategory(category);
898+
}
899+
890900
criteria.values.forEach((value) => {
891-
if (
892-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.APPRAISAL_RULE] ||
893-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.NODES] ||
894-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.ACCESS_RULE] ||
895-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.STORAGE_RULE] ||
896-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.REUSE_RULE] ||
897-
criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.DISSEMINATION_RULE]
898-
) {
899-
this.addCriteriaCategory(criteria.category);
900-
this.archiveHelperService.addCriteria(
901-
this.searchCriterias,
902-
this.searchCriteriaKeys,
903-
this.nbQueryCriteria,
904-
c,
905-
value,
906-
value.value,
907-
criteria.keyTranslated,
908-
criteria.operator,
909-
criteria.category,
910-
criteria.valueTranslated,
911-
criteria.dataType,
912-
true,
913-
);
914-
} else if (criteria.category === SearchCriteriaTypeEnum[SearchCriteriaTypeEnum.FIELDS]) {
915-
this.archiveHelperService.addCriteria(
916-
this.searchCriterias,
917-
this.searchCriteriaKeys,
918-
this.nbQueryCriteria,
919-
c,
920-
value,
921-
c === ALL_ARCHIVE_UNIT_TYPES
922-
? this.translateService.instant('COLLECT.SEARCH_CRITERIA_FILTER.FIELDS.UNIT_TYPE.' + value.id)
923-
: value.value,
924-
criteria.keyTranslated,
925-
criteria.operator,
926-
SearchCriteriaTypeEnum.FIELDS,
927-
criteria.valueTranslated,
928-
criteria.dataType,
929-
true,
930-
);
931-
}
901+
this.addCriteria(
902+
criteria.criteria,
903+
value,
904+
value.value,
905+
criteria.keyTranslated,
906+
criteria.operator,
907+
category,
908+
criteria.valueTranslated,
909+
criteria.dataType,
910+
true,
911+
);
932912
});
933913
});
934914
}
@@ -1029,6 +1009,33 @@ export class ArchiveSearchCollectComponent extends SidenavPage<any> implements O
10291009
}
10301010
}
10311011

1012+
private addCriteria(
1013+
keyElt: string,
1014+
valueElt: CriteriaValue,
1015+
labelElt: string,
1016+
keyTranslated: boolean,
1017+
operator: string,
1018+
category: SearchCriteriaTypeEnum,
1019+
valueTranslated: boolean,
1020+
dataType: string,
1021+
emit: boolean,
1022+
) {
1023+
this.archiveHelperService.addCriteria(
1024+
this.searchCriterias,
1025+
this.searchCriteriaKeys,
1026+
this.nbQueryCriteria,
1027+
keyElt,
1028+
valueElt,
1029+
labelElt,
1030+
keyTranslated,
1031+
operator,
1032+
category,
1033+
valueTranslated,
1034+
dataType,
1035+
emit,
1036+
);
1037+
}
1038+
10321039
trackBy(_: number, unit: Unit) {
10331040
// 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.
10341041
return unit['#id'];

0 commit comments

Comments
 (0)