diff --git a/src/app/datasets/datasets-filter/datasets-filter.component.html b/src/app/datasets/datasets-filter/datasets-filter.component.html
index 427c4c5c4..d74d5f793 100644
--- a/src/app/datasets/datasets-filter/datasets-filter.component.html
+++ b/src/app/datasets/datasets-filter/datasets-filter.component.html
@@ -185,6 +185,9 @@
=
+
+ contains
+
<
@@ -193,7 +196,7 @@
{{
- condition.relation === "EQUAL_TO_STRING"
+ ["EQUAL_TO_STRING", "CONTAINS_STRING"].includes(condition.relation)
? '"' + condition.rhs + '"'
: condition.rhs
}}
diff --git a/src/app/samples/sample-dashboard/sample-dashboard.component.html b/src/app/samples/sample-dashboard/sample-dashboard.component.html
index 73dcb7133..63f510707 100644
--- a/src/app/samples/sample-dashboard/sample-dashboard.component.html
+++ b/src/app/samples/sample-dashboard/sample-dashboard.component.html
@@ -45,6 +45,9 @@
=
+
+ =
+
<
@@ -53,7 +56,7 @@
{{
- characteristic.relation === "EQUAL_TO_STRING"
+ [ "EQUAL_TO_STRING", "CONTAINS_STRING" ].includes(characteristic.relation)
? '"' + characteristic.rhs + '"'
: characteristic.rhs
}}
diff --git a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.html b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.html
index ca56f2041..621808f89 100644
--- a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.html
+++ b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.html
@@ -33,6 +33,7 @@
Add Characteristic
is less than
is equal to (numeric)
is equal to (string)
+ contains string
diff --git a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.spec.ts b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.spec.ts
index e15b29033..3b6b65f15 100644
--- a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.spec.ts
+++ b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.spec.ts
@@ -107,7 +107,7 @@ describe("SearchParametersDialogComponent", () => {
});
describe("#toggleUnitField()", () => {
- it("should enable unitField if lhs is valid and relation is not EQUAL_TO_STRING", () => {
+ it("should enable unitField if lhs is valid and relation is not CONTAINS_STRING or EQUAL_TO_STRING" , () => {
const formValues = {
lhs: "mass",
relation: "LESS_THAN",
diff --git a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.ts b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.ts
index a79bfb0d3..a96b87c3e 100644
--- a/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.ts
+++ b/src/app/shared/modules/search-parameters-dialog/search-parameters-dialog.component.ts
@@ -55,7 +55,7 @@ export class SearchParametersDialogComponent {
const { lhs, relation, unit } = this.parametersForm.value;
const rawRhs = this.parametersForm.get("rhs")?.value;
const rhs =
- relation === "EQUAL_TO_STRING" ? String(rawRhs) : Number(rawRhs);
+ [ "CONTAINS_STRING", "EQUAL_TO_STRING" ].includes(relation) ? String(rawRhs) : Number(rawRhs);
this.parametersForm.patchValue({ rhs });
this.dialogRef.close({ data: { lhs, relation, rhs, unit } });
};
@@ -70,7 +70,7 @@ export class SearchParametersDialogComponent {
toggleUnitField = (): void => {
const lhsInvalid = this.parametersForm.get("lhs")?.invalid;
const { relation } = this.parametersForm.value;
- const isStringRelation = relation === "EQUAL_TO_STRING" ? true : false;
+ const isStringRelation = [ "CONTAINS_STRING", "EQUAL_TO_STRING" ].includes(relation) ? true : false;
const unitField = this.parametersForm.get("unit");
unitField?.enable();
if (lhsInvalid || isStringRelation) {
@@ -85,7 +85,7 @@ export class SearchParametersDialogComponent {
if (invalid) {
return invalid;
}
- if (relation !== "EQUAL_TO_STRING" && isNaN(Number(rhs))) {
+ if (![ "CONTAINS_STRING", "EQUAL_TO_STRING" ].includes(relation) && isNaN(Number(rhs))) {
return true;
}
return lhs.length * rhs.length === 0;
diff --git a/src/app/state-management/models/index.ts b/src/app/state-management/models/index.ts
index cddf0e9bf..b6462b9b9 100644
--- a/src/app/state-management/models/index.ts
+++ b/src/app/state-management/models/index.ts
@@ -81,6 +81,7 @@ export enum JobViewMode {
type ScientificConditionRelation =
| "EQUAL_TO_NUMERIC"
| "EQUAL_TO_STRING"
+ | "CONTAINS_STRING"
| "GREATER_THAN"
| "LESS_THAN";