From 67b1d15efcb1062ab1b7beb13165a61d1bf4b5f6 Mon Sep 17 00:00:00 2001 From: DampToast <75002033+DampToast@users.noreply.github.com> Date: Wed, 9 Feb 2022 19:49:25 -0600 Subject: [PATCH] Make changes to fix special characters in Criterion labels (#1819) (#2301) Reverse the '&' and '+' replacement done on StringCriterion Decodes special characters in IHierarchicalLabeledIdCriterion --- .../src/models/list-filter/criteria/criterion.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ui/v2.5/src/models/list-filter/criteria/criterion.ts b/ui/v2.5/src/models/list-filter/criteria/criterion.ts index 3819bd417..b40209795 100644 --- a/ui/v2.5/src/models/list-filter/criteria/criterion.ts +++ b/ui/v2.5/src/models/list-filter/criteria/criterion.ts @@ -206,7 +206,10 @@ export function createStringCriterionOption( export class StringCriterion extends Criterion { public getLabelValue() { - return this.value; + let ret = this.value; + ret = StringCriterion.unreplaceSpecialCharacter(ret, "&"); + ret = StringCriterion.unreplaceSpecialCharacter(ret, "+"); + return ret; } public encodeValue() { @@ -221,6 +224,10 @@ export class StringCriterion extends Criterion { return str.replaceAll(c, encodeURIComponent(c)); } + private static unreplaceSpecialCharacter(str: string, c: string) { + return str.replaceAll(encodeURIComponent(c), c); + } + constructor(type: CriterionOption) { super(type, ""); } @@ -435,7 +442,9 @@ export class IHierarchicalLabeledIdCriterion extends Criterion v.label).join(", "); + const labels = decodeURI( + (this.value.items ?? []).map((v) => v.label).join(", ") + ); if (this.value.depth === 0) { return labels;