@rh-support/cases 1.0.1 → 1.0.3
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.
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +21 -17
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +19 -20
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +18 -20
- package/lib/esm/components/case-list/case-list-filters/TypeFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/TypeFilter.js +19 -13
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +17 -19
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.js +29 -49
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +1 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.js +16 -15
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +161 -64
- package/lib/esm/css/caseList.css +7 -2
- package/lib/esm/css/caseSearch.css +0 -4
- package/lib/esm/enums/case.js +1 -1
- package/lib/esm/enums/filters.d.ts +35 -1
- package/lib/esm/enums/filters.d.ts.map +1 -1
- package/lib/esm/enums/filters.js +34 -0
- package/lib/esm/utils/caseSearchUtils.d.ts +3 -2
- package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseSearchUtils.js +66 -11
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BAIF,MAAM;;EAwLzC"}
|
|
@@ -3,20 +3,12 @@ import PEG from 'pegjs';
|
|
|
3
3
|
import { useEffect, useRef } from 'react';
|
|
4
4
|
import { SolrKeys } from '../../../enums/filters';
|
|
5
5
|
import { useCaseListStateContext } from '../CaseListContext';
|
|
6
|
-
// escaped from solrGrammar.txt
|
|
7
|
-
const grammarStringInternal = '{\r\n function joinByOr(val) {\r\n return "(" + [].concat.apply([], val).filter(function(item) {return item !== \' \'}).join(" or ")+")";\r\n }\r\n}\r\n\r\nquery = sequence\r\n\r\nsequence = first:sequencePart cont:sequenceCont { return first + cont; }\r\nsequenceCont = orSequence / andSequence / ""\r\n\r\nandSequence = parts:(" and " sequencePart)+ { return [].concat.apply([], parts).join(""); }\r\norSequence = parts:(" or " sequencePart)+ { return [].concat.apply([], parts).join(""); }\r\nsequencePart = criteria / "(" sq:sequence ")" { return \'(\' + sq + \')\' }\r\n\r\n\r\ncriteria = basicCriteria / notCriteria\r\nnotCriteria = "-"criteria:basicCriteria {return \'-\' + criteria; }\r\nbasicCriteria = field:basicFieldName ":"" "* value:value { return field + ":" + value; }\r\n/ field:severityFieldName ":"" "* value:severityValue { return field + ":" + value; }\r\n/ field:statusFieldName ":"" "* value:statusValue { return field + ":" + value; }\r\n/ field:groupFieldName ":"" "* value:groupValue { return field + ":" + value; }\r\n/ field:caseTypeFieldName ":"" "* value:caseTypeValue { return field + ":" + value; }\r\n/ field:productFieldName ":"" "* value:productValue { return field + ":" + value; }\r\n/ field:ftsFieldName ":"" "* value:booleanValue { return field + ":" + value; }\r\n/ field:accountNumberFieldName ":"" "* value:accountNumberValue { return field + ":" + value; }\r\n/ field:accountNameFieldName ":"" "* value:accountNameValue { return field + ":" + value; }\r\n/ field:escalatedFieldName ":"" "* value:booleanValue { return field + ":" + value; }\r\n/ field:cepFieldName ":"" "* value:booleanValue { return field + ":" + value; }\r\n/ field:contactSSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }\r\n/ field:ownerSSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }\r\n/ field:createdBySSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }\r\n/ field:textFieldName ":"" "* value:value { return value; }\r\n\r\nvalue = range / string\r\nrange = "[" from:([^" "]+) " TO " to:([^\\]]+) "]" {return "[" + from.join("") + " TO " + to.join("") + "]"; }\r\nstring = quoted_term / unquoted_term / _\r\n\r\nunquoted_term\r\n = term:term_char+\r\n { \r\n return term.join(\'\');\r\n }\r\n\r\nterm_char\r\n = [^: \\t\\r\\n\\f\\{\\}()"+-/^~\\[\\]]\r\n\r\n \r\nquoted_term\r\n = \'"\' term:[^"]+ \'"\'\r\n {\r\n return \'"\' + term.join(\'\') + \'"\';\r\n }\r\nbooleanValue = "true" / "false"\r\nnumber = digits:[0-9]+ { return digits.join(\'\'); }\r\nmultipleValue = "(" val:(value)+ ")" { return joinByOr(val); }\r\nstringOrMulti = string / multipleValue\r\n\r\nbasicFieldName = "contactName" {return "case_contactName";}\r\n/ "createdByName" {return "case_createdByName";}\r\n/ "createdDate" {return "case_createdDate";}\r\n/ "closedDate" {return "case_closedDate";}\r\n/ "description" {return "case_description";}\r\n/ "summary" {return "case_summary";}\r\n/ "productVersion" {return "case_version";}\r\n/ "lastModifiedDate" {return "case_lastModifiedDate";}\r\n/ "lastModifiedByName" {return "case_lastModifiedByName";}\r\n/ "ownerName" {return "case_owner";}\r\n/ "caseNumber" {return "case_number";}\r\n/ "openshiftClusterId" {return "case_openshift_cluster_id";}\r\n/ "alternateCaseId" {return "case_alternate_id";}\r\n\r\ncepFieldName = "CEP" {return "case_is_cep";}\r\nftsFieldName = "FTS" {return "case_24_7";}\r\nescalatedFieldName = "escalated" {return "case_customer_escalation";}\r\ncontactSSOFieldName = "contactSSO" {return "case_contact_sso_username";}\r\nownerSSOFieldName = "ownerSSO" {return "case_owner_sso_username";}\r\ncreatedBySSOFieldName = "createdBySSO" {return "case_createdby_sso_username";}\r\ntextFieldName = "text" {return "";}\r\n\r\nseverityFieldName = "severity" {return "case_severity";}\r\nseverityValue = string / severityMultipleValue / _ \r\nseverityMultipleValue = "(" val:(severityValue)+ ")" { return joinByOr(val); }\r\n\r\nstatusFieldName = "status" {return "case_status";}\r\nstatusValue = string / statusMultipleValue / _ \r\nstatusMultipleValue = "(" val:(statusValue)+ ")" { return joinByOr(val); }\r\n\r\ngroupFieldName = "group" {return "case_folderNumber";}\r\ngroupValue = string / groupMultipleValue / _ \r\ngroupMultipleValue = "(" val:(groupValue)+ ")" { return joinByOr(val); }\r\n\r\ncaseTypeFieldName = "caseType" {return "case_type";}\r\ncaseTypeValue = string / caseTypeMultipleValue / _ \r\ncaseTypeMultipleValue = "(" val:(caseTypeValue)+ ")" { return joinByOr(val); }\r\n\r\nproductFieldName = "productName" { return "case_product"; }\r\nproductValue = string / productMultipleValue / _ \r\nproductMultipleValue = "(" val:(productValue)+ ")" { return joinByOr(val); }\r\n\r\naccountNumberFieldName = "accountNumber" {return "case_accountNumber";}\r\naccountNumberValue = number / string / accountNumberMultipleValue / _ \r\naccountNumberMultipleValue = "(" val:(accountNumberValue)+ ")" { return joinByOr(val); }\r\n\r\naccountNameFieldName = "accountName" { return "case_account_name";}\r\naccountNameValue = string / accountNameMultipleValue / _ \r\naccountNameMultipleValue = "(" val:(accountNameValue)+ ")" { return joinByOr(val); }\r\n\r\n_ "whitespace"\r\n = [ \\t\\r\\n\\f]+';
|
|
8
6
|
export default function useAdvanceSearchParser({ onInit }) {
|
|
9
7
|
const { filterValuesFromFacetResponse } = useCaseListStateContext();
|
|
10
8
|
const { globalMetadataState: { caseGroups, loggedInUsersAccount, bookmarkedGroupAccounts, allCaseTypes }, } = useGlobalStateContext();
|
|
11
|
-
const grammerStringRef = useRef(grammarStringInternal);
|
|
12
9
|
const parserRef = useRef(null);
|
|
13
10
|
const parse = (stringQuery) => {
|
|
14
|
-
|
|
15
|
-
// so we just intialise the parser with basic grammar without values
|
|
16
|
-
if (!parserRef.current) {
|
|
17
|
-
initParser();
|
|
18
|
-
}
|
|
19
|
-
return parserRef.current.parse(stringQuery);
|
|
11
|
+
return parserRef.current.parse(stringQuery.replace(/ +/g, ' '));
|
|
20
12
|
};
|
|
21
13
|
const parseSafe = (stringQuery) => {
|
|
22
14
|
try {
|
|
@@ -25,69 +17,174 @@ export default function useAdvanceSearchParser({ onInit }) {
|
|
|
25
17
|
catch (e) { }
|
|
26
18
|
return '';
|
|
27
19
|
};
|
|
28
|
-
const initParser = () => {
|
|
20
|
+
const initParser = (grammer) => {
|
|
29
21
|
try {
|
|
30
|
-
parserRef.current = PEG.generate(
|
|
22
|
+
parserRef.current = PEG.generate(grammer);
|
|
31
23
|
}
|
|
32
|
-
catch (
|
|
24
|
+
catch (e) {
|
|
33
25
|
parserRef.current = null;
|
|
34
26
|
}
|
|
35
27
|
};
|
|
36
|
-
//
|
|
28
|
+
// init grammar parser once we have the values from facets
|
|
37
29
|
useEffect(() => {
|
|
38
|
-
if (!filterValuesFromFacetResponse
|
|
30
|
+
if (!filterValuesFromFacetResponse ||
|
|
31
|
+
caseGroups.isFetching ||
|
|
32
|
+
allCaseTypes.isFetching ||
|
|
33
|
+
bookmarkedGroupAccounts.isFetching ||
|
|
34
|
+
loggedInUsersAccount.isFetching)
|
|
39
35
|
return;
|
|
40
|
-
const statusValues = filterValuesFromFacetResponse[SolrKeys.status]
|
|
41
|
-
.map((status) => `"\\"${status.value}\\"" { return '"${status.value}"'; }`)
|
|
42
|
-
.join(' / ');
|
|
43
|
-
const severityValues = filterValuesFromFacetResponse[SolrKeys.severity]
|
|
44
|
-
.map((severity) => `"\\"${severity.value}\\"" { return '"${severity.value}"'; }`)
|
|
45
|
-
.join(' / ');
|
|
46
|
-
const productValues = filterValuesFromFacetResponse[SolrKeys.product]
|
|
47
|
-
.map((product) => `"\\"${product.value}\\"" { return '"${product.value}"'; }`)
|
|
48
|
-
.join(' / ');
|
|
49
|
-
writeValuesToGrammarString('status', statusValues);
|
|
50
|
-
writeValuesToGrammarString('severity', severityValues);
|
|
51
|
-
writeValuesToGrammarString('product', productValues);
|
|
52
|
-
initParser();
|
|
53
|
-
// // parse on page load so that we have the autocomplete setup on first load
|
|
54
|
-
onInit && onInit();
|
|
55
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
56
|
-
}, [filterValuesFromFacetResponse, caseGroups.data]);
|
|
57
|
-
// write case groups to solr grammar string
|
|
58
|
-
useEffect(() => {
|
|
59
|
-
const groupValues = (caseGroups.data || [])
|
|
60
|
-
.map((group) => `"\\"${group.name}\\"" { return '${group.groupNum}'; }`)
|
|
61
|
-
.join(' / ');
|
|
62
|
-
writeValuesToGrammarString('group', groupValues);
|
|
63
|
-
initParser();
|
|
64
|
-
}, [caseGroups.data]);
|
|
65
|
-
// write case types to solr grammar string
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
const caseTypeValues = (allCaseTypes.data || [])
|
|
68
|
-
.map((caseType) => `"\\"${caseType}\\"" { return '"${caseType}"'; }`)
|
|
69
|
-
.join(' / ');
|
|
70
|
-
writeValuesToGrammarString('caseType', caseTypeValues);
|
|
71
|
-
initParser();
|
|
72
|
-
}, [allCaseTypes.data]);
|
|
73
|
-
// write account numbers and account name to solr grammar string
|
|
74
|
-
useEffect(() => {
|
|
75
36
|
const accounts = (bookmarkedGroupAccounts.data || []);
|
|
76
37
|
const allAccounts = [...accounts, loggedInUsersAccount.data];
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
38
|
+
const grammarStringInternal = `
|
|
39
|
+
{
|
|
40
|
+
function joinByOr(val) {
|
|
41
|
+
return "(" + [].concat.apply([], val).filter(function(item) {return item !== ' '}).join(" OR ")+")";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
query = sequence
|
|
46
|
+
|
|
47
|
+
sequence = first:sequencePart cont:sequenceCont { return first + cont; }
|
|
48
|
+
|
|
49
|
+
sequenceCont = orSequence / andSequence / ""
|
|
50
|
+
|
|
51
|
+
andSequence = parts:(" and " sequencePart)+ { return [].concat.apply([], parts).join(""); }
|
|
52
|
+
orSequence = parts:(" or " sequencePart)+ { return [].concat.apply([], parts).join(""); }
|
|
53
|
+
sequencePart = criteria / "(" sq:sequence ")" { return '(' + sq + ')' }
|
|
54
|
+
|
|
55
|
+
criteria = basicCriteria / notCriteria
|
|
56
|
+
notCriteria = "-"criteria:basicCriteria {return '-' + criteria; }
|
|
57
|
+
basicCriteria = field:basicFieldName ":"" "* value:value { return field + ":" + value; }
|
|
58
|
+
/ field:severityFieldName ":"" "* value:severityValue { return field + ":" + value; }
|
|
59
|
+
/ field:statusFieldName ":"" "* value:statusValue { return field + ":" + value; }
|
|
60
|
+
/ field:groupFieldName ":"" "* value:groupValue { return field + ":" + value; }
|
|
61
|
+
/ field:caseTypeFieldName ":"" "* value:caseTypeValue { return field + ":" + value; }
|
|
62
|
+
/ field:productFieldName ":"" "* value:productValue { return field + ":" + value; }
|
|
63
|
+
/ field:versionFieldName ":"" "* value:versionValue { return field + ":" + value; }
|
|
64
|
+
/ field:ftsFieldName ":"" "* value:booleanValue { return field + ":" + value; }
|
|
65
|
+
/ field:accountNumberFieldName ":"" "* value:accountNumberValue { return field + ":" + value; }
|
|
66
|
+
/ field:accountNameFieldName ":"" "* value:accountNameValue { return field + ":" + value; }
|
|
67
|
+
/ field:escalatedFieldName ":"" "* value:booleanValue { return field + ":" + value; }
|
|
68
|
+
/ field:cepFieldName ":"" "* value:booleanValue { return field + ":" + value; }
|
|
69
|
+
/ field:contactSSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }
|
|
70
|
+
/ field:ownerSSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }
|
|
71
|
+
/ field:createdBySSOFieldName ":"" "* value:stringOrMulti { return field + ":" + value; }
|
|
72
|
+
/ field:textFieldName ":"" "* value:value { return value; }
|
|
73
|
+
|
|
74
|
+
value = range / string
|
|
75
|
+
range = "[" from:([^" "]+) " TO " to:([^\\]]+) "]" {return "[" + from.join("") + " TO " + to.join("") + "]"; }
|
|
76
|
+
string = quoted_term / unquoted_term / _
|
|
77
|
+
|
|
78
|
+
unquoted_term
|
|
79
|
+
= term:term_char+
|
|
80
|
+
{
|
|
81
|
+
return term.join('');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
term_char
|
|
85
|
+
= [^: \\t\\r\\n\\f\\{\\}()"+-/^~\\[\\]]
|
|
86
|
+
|
|
87
|
+
quoted_term
|
|
88
|
+
= '"' term:[^"]+ '"'
|
|
89
|
+
{
|
|
90
|
+
return '"' + term.join('') + '"';
|
|
91
|
+
}
|
|
92
|
+
booleanValue = "true" / "false"
|
|
93
|
+
number = digits:[0-9]+ { return digits.join(''); }
|
|
94
|
+
multipleValue = "(" val:(value)+ ")" { return joinByOr(val); }
|
|
95
|
+
stringOrMulti = string / multipleValue
|
|
96
|
+
|
|
97
|
+
basicFieldName = "contactName" {return "${SolrKeys.contactName}";}
|
|
98
|
+
/ "createdByName" {return "${SolrKeys.createdBy}";}
|
|
99
|
+
/ "createdDate" {return "${SolrKeys.createdDate}";}
|
|
100
|
+
/ "closedDate" {return "${SolrKeys.caseClosedDate}";}
|
|
101
|
+
/ "description" {return "${SolrKeys.description}";}
|
|
102
|
+
/ "summary" {return "${SolrKeys.caseSummary}";}
|
|
103
|
+
/ "lastModifiedDate" {return "${SolrKeys.modifiedDate}";}
|
|
104
|
+
/ "lastModifiedByName" {return "${SolrKeys.modifiedBy}";}
|
|
105
|
+
/ "ownerName" {return "${SolrKeys.ownerName}";}
|
|
106
|
+
/ "caseNumber" {return "${SolrKeys.caseNumber}";}
|
|
107
|
+
/ "openshiftClusterId" {return "${SolrKeys.openshiftClusterId}";}
|
|
108
|
+
/ "alternateCaseId" {return "${SolrKeys.alternateId}";}
|
|
109
|
+
|
|
110
|
+
cepFieldName = "CEP" {return "${SolrKeys.cep}";}
|
|
111
|
+
ftsFieldName = "FTS" {return "${SolrKeys.fts}";}
|
|
112
|
+
escalatedFieldName = "escalated" {return "${SolrKeys.escalation}";}
|
|
113
|
+
contactSSOFieldName = "contactSSO" {return "${SolrKeys.caseContactSSO}";}
|
|
114
|
+
ownerSSOFieldName = "ownerSSO" {return "${SolrKeys.caseOwner}";}
|
|
115
|
+
createdBySSOFieldName = "createdBySSO" {return "${SolrKeys.createdBySsoUsername}";}
|
|
116
|
+
textFieldName = "text" {return "";}
|
|
117
|
+
|
|
118
|
+
severityFieldName = "severity" {return "${SolrKeys.severity}";}
|
|
119
|
+
severityValue = string
|
|
120
|
+
/${(filterValuesFromFacetResponse[SolrKeys.severity] || [])
|
|
121
|
+
.map((severity) => `'"${severity.value}"' { return '"${severity.value}"'; } `)
|
|
122
|
+
.join(' / ')}
|
|
123
|
+
/ severityMultipleValue / _
|
|
124
|
+
severityMultipleValue = "(" val:(severityValue)+ ")" { return joinByOr(val); }
|
|
125
|
+
|
|
126
|
+
statusFieldName = "status" {return "${SolrKeys.status}";}
|
|
127
|
+
statusValue = string
|
|
128
|
+
/${(filterValuesFromFacetResponse[SolrKeys.status] || [])
|
|
129
|
+
.map((status) => `'"${status.value}"' { return '"${status.value}"'; } `)
|
|
130
|
+
.join(' / ')}
|
|
131
|
+
/ statusMultipleValue / _
|
|
132
|
+
statusMultipleValue = "(" val:(statusValue)+ ")" { return joinByOr(val); }
|
|
133
|
+
|
|
134
|
+
groupFieldName = "group" {return "${SolrKeys.group}";}
|
|
135
|
+
groupValue = string
|
|
136
|
+
/ ${(caseGroups.data || []).map((group) => `'"${group.name}"' { return '${group.groupNum}'; }`).join(' / ')}
|
|
137
|
+
/ groupMultipleValue / _
|
|
138
|
+
groupMultipleValue = "(" val:(groupValue)+ ")" { return joinByOr(val); }
|
|
139
|
+
|
|
140
|
+
caseTypeFieldName = "caseType" {return "${SolrKeys.type}";}
|
|
141
|
+
caseTypeValue = string
|
|
142
|
+
/ ${(allCaseTypes.data || []).map((caseType) => `'"${caseType}"' { return '"${caseType}"'; }`).join(' / ')}
|
|
143
|
+
/ caseTypeMultipleValue / _
|
|
144
|
+
caseTypeMultipleValue = "(" val:(caseTypeValue)+ ")" { return joinByOr(val); }
|
|
145
|
+
|
|
146
|
+
productFieldName = "productName" { return "${SolrKeys.product}"; }
|
|
147
|
+
productValue = string
|
|
148
|
+
/ ${(filterValuesFromFacetResponse[SolrKeys.product] || [])
|
|
149
|
+
.map((product) => `'"${product.value}"' { return '"${product.value}"'; } `)
|
|
150
|
+
.join(' / ')}
|
|
151
|
+
/ productMultipleValue / _
|
|
152
|
+
productMultipleValue = "(" val:(productValue)+ ")" { return joinByOr(val); }
|
|
153
|
+
|
|
154
|
+
versionFieldName = "productVersion" { return "${SolrKeys.version}"; }
|
|
155
|
+
versionValue = string
|
|
156
|
+
/ versionMultipleValue / _
|
|
157
|
+
versionMultipleValue = "(" val:(versionValue)+ ")" { return joinByOr(val); }
|
|
158
|
+
|
|
159
|
+
accountNumberFieldName = "accountNumber" {return "${SolrKeys.accountNumber}";}
|
|
160
|
+
accountNumberValue = number
|
|
161
|
+
/ string
|
|
162
|
+
/ ${allAccounts.map((account) => `"${account.accountNumber}" { return "${account.accountNumber}"; }`).join(' / ')}
|
|
163
|
+
/ accountNumberMultipleValue / _
|
|
164
|
+
accountNumberMultipleValue = "(" val:(accountNumberValue)+ ")" { return joinByOr(val); }
|
|
165
|
+
|
|
166
|
+
accountNameFieldName = "accountName" { return "case_account_name";}
|
|
167
|
+
accountNameValue = string
|
|
168
|
+
/ ${allAccounts.map((account) => `'"${account.name}"' { return "${account.name}"; }`).join(' / ')}
|
|
169
|
+
/ accountNameMultipleValue / _
|
|
170
|
+
accountNameMultipleValue = "(" val:(accountNameValue)+ ")" { return joinByOr(val); }
|
|
171
|
+
|
|
172
|
+
_ "whitespace"
|
|
173
|
+
= [ \\t\\r\\n\\f]+
|
|
174
|
+
|
|
175
|
+
EOF
|
|
176
|
+
= !.
|
|
177
|
+
`;
|
|
178
|
+
initParser(grammarStringInternal);
|
|
179
|
+
// parse on page load so that we have the autocomplete setup on first load
|
|
180
|
+
onInit && onInit();
|
|
181
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
182
|
+
}, [
|
|
183
|
+
filterValuesFromFacetResponse,
|
|
184
|
+
caseGroups.isFetching,
|
|
185
|
+
allCaseTypes.isFetching,
|
|
186
|
+
bookmarkedGroupAccounts.isFetching,
|
|
187
|
+
loggedInUsersAccount.isFetching,
|
|
188
|
+
]);
|
|
92
189
|
return { parse, parseSafe, parserRef };
|
|
93
190
|
}
|
package/lib/esm/css/caseList.css
CHANGED
|
@@ -155,11 +155,12 @@
|
|
|
155
155
|
font-size: 14px;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
.cases-main .case-search-top .filter-chip-wrapper .
|
|
158
|
+
.cases-main .case-search-top .filter-chip-wrapper button.pf-c-select__toggle {
|
|
159
159
|
font-size: 13px;
|
|
160
|
+
--pf-c-select__toggle-text--Color: var(--pf-c-select__toggle--m-placeholder__toggle-text--Color) !important;
|
|
160
161
|
}
|
|
161
162
|
|
|
162
|
-
.cases-main .case-search-top .filter-chip-wrapper .
|
|
163
|
+
.cases-main .case-search-top .filter-chip-wrapper button.pf-c-select__toggle svg {
|
|
163
164
|
margin-left: 4px;
|
|
164
165
|
}
|
|
165
166
|
|
|
@@ -469,3 +470,7 @@
|
|
|
469
470
|
min-width: 10%;
|
|
470
471
|
max-width: 10%;
|
|
471
472
|
}
|
|
473
|
+
|
|
474
|
+
.filter-group .pf-c-select__toggle {
|
|
475
|
+
--pf-c-select__toggle-text--Color: var(--pf-c-select__toggle--m-placeholder__toggle-text--Color) !important;
|
|
476
|
+
}
|
package/lib/esm/enums/case.js
CHANGED
|
@@ -35,7 +35,7 @@ export const caseListSortColumnIdsToSolrMap = {
|
|
|
35
35
|
[CaseListColumnIds.caseId]: SolrKeys.caseNumber,
|
|
36
36
|
[CaseListColumnIds.summary]: SolrKeys.caseSummary,
|
|
37
37
|
[CaseListColumnIds.severity]: SolrKeys.severity,
|
|
38
|
-
[CaseListColumnIds.owner]: SolrKeys.
|
|
38
|
+
[CaseListColumnIds.owner]: SolrKeys.createdBy,
|
|
39
39
|
[CaseListColumnIds.created]: SolrKeys.createdDate,
|
|
40
40
|
[CaseListColumnIds.status]: SolrKeys.status,
|
|
41
41
|
[CaseListColumnIds.modified]: SolrKeys.modifiedDate,
|
|
@@ -35,8 +35,42 @@ export declare enum SolrKeys {
|
|
|
35
35
|
cep = "case_is_cep",
|
|
36
36
|
accountName = "case_accountName",
|
|
37
37
|
alternateId = "case_alternate_id",
|
|
38
|
-
caseClosedDate = "case_closedDate"
|
|
38
|
+
caseClosedDate = "case_closedDate",
|
|
39
|
+
openshiftClusterId = "case_openshift_cluster_id"
|
|
39
40
|
}
|
|
41
|
+
export declare const advancedSearchMap: {
|
|
42
|
+
case_number: string;
|
|
43
|
+
case_summary: string;
|
|
44
|
+
case_product: string;
|
|
45
|
+
case_status: string;
|
|
46
|
+
case_accountNumber: string;
|
|
47
|
+
case_folderNumber: string;
|
|
48
|
+
case_folderName: string;
|
|
49
|
+
case_severity: string;
|
|
50
|
+
case_owner_sso_username: string;
|
|
51
|
+
case_owner: string;
|
|
52
|
+
case_contactName: string;
|
|
53
|
+
case_contact_sso_username: string;
|
|
54
|
+
case_customer_escalation: string;
|
|
55
|
+
case_version: string;
|
|
56
|
+
case_createdByName: string;
|
|
57
|
+
case_createdby_sso_username: string;
|
|
58
|
+
case_createdDate: string;
|
|
59
|
+
case_lastModifiedByName: string;
|
|
60
|
+
case_lastModifiedDate: string;
|
|
61
|
+
case_last_public_update_date: string;
|
|
62
|
+
case_last_public_update_by: string;
|
|
63
|
+
case_description: string;
|
|
64
|
+
uri: string;
|
|
65
|
+
case_24_7: string;
|
|
66
|
+
case_type: string;
|
|
67
|
+
case_is_cep: string;
|
|
68
|
+
case_accountName: string;
|
|
69
|
+
case_alternate_id: string;
|
|
70
|
+
case_closedDate: string;
|
|
71
|
+
case_openshift_cluster_id: string;
|
|
72
|
+
case_account_name: string;
|
|
73
|
+
};
|
|
40
74
|
export declare enum SolrPivotKeys {
|
|
41
75
|
product_version = "case_product,case_version"
|
|
42
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/enums/filters.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;CACpB;AAED,oBAAY,QAAQ;IAChB,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,OAAO,iBAAiB;IACxB,MAAM,gBAAgB;IACtB,aAAa,uBAAuB;IACpC,KAAK,sBAAsB;IAC3B,SAAS,oBAAoB;IAC7B,QAAQ,kBAAkB;IAC1B,SAAS,4BAA4B;IACrC,SAAS,eAAe;IACxB,WAAW,qBAAqB;IAChC,cAAc,8BAA8B;IAC5C,UAAU,6BAA6B;IACvC,OAAO,iBAAiB;IACxB,SAAS,uBAAuB;IAChC,oBAAoB,gCAAgC;IACpD,WAAW,qBAAqB;IAChC,UAAU,4BAA4B;IACtC,YAAY,0BAA0B;IACtC,oBAAoB,iCAAiC;IACrD,sBAAsB,+BAA+B;IACrD,WAAW,qBAAqB;IAChC,GAAG,QAAQ;IACX,GAAG,cAAc;IACjB,IAAI,cAAc;IAClB,GAAG,gBAAgB;IACnB,WAAW,qBAAqB;IAChC,WAAW,sBAAsB;IACjC,cAAc,oBAAoB;
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/enums/filters.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;CACpB;AAED,oBAAY,QAAQ;IAChB,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,OAAO,iBAAiB;IACxB,MAAM,gBAAgB;IACtB,aAAa,uBAAuB;IACpC,KAAK,sBAAsB;IAC3B,SAAS,oBAAoB;IAC7B,QAAQ,kBAAkB;IAC1B,SAAS,4BAA4B;IACrC,SAAS,eAAe;IACxB,WAAW,qBAAqB;IAChC,cAAc,8BAA8B;IAC5C,UAAU,6BAA6B;IACvC,OAAO,iBAAiB;IACxB,SAAS,uBAAuB;IAChC,oBAAoB,gCAAgC;IACpD,WAAW,qBAAqB;IAChC,UAAU,4BAA4B;IACtC,YAAY,0BAA0B;IACtC,oBAAoB,iCAAiC;IACrD,sBAAsB,+BAA+B;IACrD,WAAW,qBAAqB;IAChC,GAAG,QAAQ;IACX,GAAG,cAAc;IACjB,IAAI,cAAc;IAClB,GAAG,gBAAgB;IACnB,WAAW,qBAAqB;IAChC,WAAW,sBAAsB;IACjC,cAAc,oBAAoB;IAClC,kBAAkB,8BAA8B;CACnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC7B,CAAC;AAGF,oBAAY,aAAa;IACrB,eAAe,8BAA8B;CAChD;AAED,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAC3E,oBAAY,QAAQ;IAChB,UAAU,eAAe;IACzB,WAAW,YAAY;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,aAAa,qBAAqB;IAClC,QAAQ,aAAa;IACrB,SAAS,YAAY;IACrB,WAAW,gBAAgB;IAC3B,SAAS,mBAAmB;IAC5B,UAAU,uBAAuB;IACjC,OAAO,YAAY;IACnB,SAAS,gBAAgB;IACzB,oBAAoB,gCAAgC;IACpD,WAAW,gBAAgB;IAC3B,UAAU,qBAAqB;IAC/B,YAAY,qBAAqB;IACjC,oBAAoB,qBAAqB;IACzC,sBAAsB,qBAAqB;IAC3C,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,cAAc,iBAAiB;CAClC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;CAsB9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAElC,CAAC"}
|
package/lib/esm/enums/filters.js
CHANGED
|
@@ -38,7 +38,41 @@ export var SolrKeys;
|
|
|
38
38
|
SolrKeys["accountName"] = "case_accountName";
|
|
39
39
|
SolrKeys["alternateId"] = "case_alternate_id";
|
|
40
40
|
SolrKeys["caseClosedDate"] = "case_closedDate";
|
|
41
|
+
SolrKeys["openshiftClusterId"] = "case_openshift_cluster_id";
|
|
41
42
|
})(SolrKeys || (SolrKeys = {}));
|
|
43
|
+
export const advancedSearchMap = {
|
|
44
|
+
case_number: 'caseNumber',
|
|
45
|
+
case_summary: 'summary',
|
|
46
|
+
case_product: 'productName',
|
|
47
|
+
case_status: 'status',
|
|
48
|
+
case_accountNumber: 'accountNumber',
|
|
49
|
+
case_folderNumber: 'group',
|
|
50
|
+
case_folderName: 'groupName',
|
|
51
|
+
case_severity: 'severity',
|
|
52
|
+
case_owner_sso_username: 'caseOwner',
|
|
53
|
+
case_owner: 'ownerName',
|
|
54
|
+
case_contactName: 'contactName',
|
|
55
|
+
case_contact_sso_username: 'contactSSO',
|
|
56
|
+
case_customer_escalation: 'escalated',
|
|
57
|
+
case_version: 'productVersion',
|
|
58
|
+
case_createdByName: 'createdByName',
|
|
59
|
+
case_createdby_sso_username: 'createdBySSO',
|
|
60
|
+
case_createdDate: 'createdDate',
|
|
61
|
+
case_lastModifiedByName: 'lastModifiedByName',
|
|
62
|
+
case_lastModifiedDate: 'lastModifiedDate',
|
|
63
|
+
case_last_public_update_date: 'lastPublicUpdateDate',
|
|
64
|
+
case_last_public_update_by: 'lastPublicUpdateDateBy',
|
|
65
|
+
case_description: 'description',
|
|
66
|
+
uri: 'uri',
|
|
67
|
+
case_24_7: 'FTS',
|
|
68
|
+
case_type: 'caseType',
|
|
69
|
+
case_is_cep: 'CEP',
|
|
70
|
+
case_accountName: 'accountName',
|
|
71
|
+
case_alternate_id: 'alternateCaseId',
|
|
72
|
+
case_closedDate: 'closedDate',
|
|
73
|
+
case_openshift_cluster_id: 'openshiftClusterId',
|
|
74
|
+
case_account_name: 'accountName',
|
|
75
|
+
};
|
|
42
76
|
// just to keep ts happy since the below const does not work
|
|
43
77
|
export var SolrPivotKeys;
|
|
44
78
|
(function (SolrPivotKeys) {
|
|
@@ -11,12 +11,13 @@ export declare const FILTER_URL_PAGE_SIZE_SEARCH_PARAM = "size";
|
|
|
11
11
|
export declare const FILTER_URL_QUERY_TYPE = "searchType";
|
|
12
12
|
declare function createSolrQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth): any;
|
|
13
13
|
declare function createUserFriendlyQueryFromFilterState(filterInfo: Partial<IFilterInfo>, filterQuery: string, useKeyForKVPair?: boolean): string;
|
|
14
|
+
declare function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo: Partial<IFilterInfo>, filterQuery: string, useKeyForKVPair?: boolean): string;
|
|
14
15
|
declare function createAdvancedSearchQueryFromFilterState(filterInfo: Partial<IFilterInfo>, keyword: string, useKeyForKVPair?: any[]): string;
|
|
15
16
|
declare function createQueryForCSVDownload(filterState: ICaseListFilterState, loggedInUserRights: UserAuth, loggedInUsersAccount: any, startValue?: number, limitValue?: number): any;
|
|
16
17
|
declare function createSFDCQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth, loggedInUserAccount: Partial<IAccount>): Partial<ISFDCCaseFilter>;
|
|
17
18
|
declare function mapSFDCCaseListToSolrCaseList(response?: ISFDCCaseListResponse[]): ISolrCaseListResponse[];
|
|
18
19
|
declare function createURLQueryFromFilterState(filterState: ICaseListFilterState): string;
|
|
19
20
|
declare function createFilterStateFromUrlQuery(urlQuery: string, globalMetadataState: IGlobalMetadataState, pageSize?: number, currentPage?: number, searchType?: CaseSearchQueryType): ICaseListFilterState;
|
|
20
|
-
declare function createFilterStateFromAdvancedQuery(queryString: string, globalMetadataState: IGlobalMetadataState, currentFilterState: ICaseListFilterState): ICaseListFilterState;
|
|
21
|
-
export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
|
|
21
|
+
declare function createFilterStateFromAdvancedQuery(queryString: string, globalMetadataState: IGlobalMetadataState, currentFilterState: ICaseListFilterState, parsedQuery?: string, type?: CaseSearchQueryType): ICaseListFilterState;
|
|
22
|
+
export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
|
|
22
23
|
//# sourceMappingURL=caseSearchUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAUxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAUxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,OA4DhG;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UAwBnC;AAED,iBAAS,oDAAoD,CACzD,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UAgDnC;AAeD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UAoCvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,UAAU,SAAI,EACd,UAAU,SAAO,OAcpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAcD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBAsD9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBAqCxD;AAgGD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
|
|
@@ -19,7 +19,7 @@ import { getLabel } from '../components/case-list/case-list-filters/AccountsBook
|
|
|
19
19
|
import { initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
|
|
20
20
|
import { CaseListColumnIds, caseListSortColumnIdsToSolrMap, CaseStatus } from '../enums/case';
|
|
21
21
|
import { advanceSearchFieldNameToSolrFieldMapping, CaseSearchQueryType, fieldNameToSolrFieldMapping, } from '../enums/caseSearch';
|
|
22
|
-
import { AdditionalFilterLabels, ProductVersionKey, sfdcFieldToSolrMap, SolrKeys, SolrPivotKeys, SolrTags, } from '../enums/filters';
|
|
22
|
+
import { AdditionalFilterLabels, advancedSearchMap, ProductVersionKey, sfdcFieldToSolrMap, SolrKeys, SolrPivotKeys, SolrTags, } from '../enums/filters';
|
|
23
23
|
export const FILTER_URL_QUERY_SEARCH_PARAM = 'query';
|
|
24
24
|
export const FILTER_URL_CURRENT_PAGE_SEARCH_PARAM = 'p';
|
|
25
25
|
export const FILTER_URL_PAGE_SIZE_SEARCH_PARAM = 'size';
|
|
@@ -27,8 +27,7 @@ export const FILTER_URL_QUERY_TYPE = 'searchType';
|
|
|
27
27
|
function createSolrQueryFromFilterState(filterState, loggedInUser) {
|
|
28
28
|
const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
|
|
29
29
|
const rows = pageSize;
|
|
30
|
-
const
|
|
31
|
-
const queryString = ((isAdvancedSearch ? filterQueryInfo.parsedQuery : filterQueryInfo.queryString) || '*:*').trim();
|
|
30
|
+
const queryString = (filterQueryInfo.queryString || '*:*').trim();
|
|
32
31
|
const isCaseNumberQuery = isValidCaseNumber(queryString);
|
|
33
32
|
const q = isCaseNumberQuery ? `${SolrKeys.caseNumber}:${queryString}` : queryString;
|
|
34
33
|
const sort = `${caseListSortColumnIdsToSolrMap[column]} ${direction}`;
|
|
@@ -97,6 +96,52 @@ function createUserFriendlyQueryFromFilterState(filterInfo, filterQuery, useKeyF
|
|
|
97
96
|
filtersQuery !== '*:*' && finalQueryArr.push(filtersQuery);
|
|
98
97
|
return finalQueryArr.join(' AND ');
|
|
99
98
|
}
|
|
99
|
+
function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQuery, useKeyForKVPair = false) {
|
|
100
|
+
// if query contains quotes then we need to escape it so that solr parser can parse it successfully
|
|
101
|
+
//const searchTextQuery = filterQuery ? `keyword: "${filterQuery.replace(/"/g, '\\"')}"` : '';
|
|
102
|
+
let solrQuery = new SolrQueryBuilder();
|
|
103
|
+
Object.keys(filterInfo).forEach((_filterKey) => {
|
|
104
|
+
const fieldLabel = fieldNameToSolrFieldMapping[_filterKey]
|
|
105
|
+
? fieldNameToSolrFieldMapping[_filterKey]
|
|
106
|
+
: _filterKey;
|
|
107
|
+
const fieldValue = isKeyValuePair(filterInfo[_filterKey])
|
|
108
|
+
? filterInfo[_filterKey].map((item) => (useKeyForKVPair ? item.key : item.value))
|
|
109
|
+
: filterInfo[_filterKey];
|
|
110
|
+
if (_filterKey !== ProductVersionKey) {
|
|
111
|
+
Array.isArray(fieldValue) && fieldValue.length > 0 && solrQuery.where(fieldLabel).in(flatMap(fieldValue));
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const filtersQuery = solrQuery.build();
|
|
115
|
+
const productVersionQuery = createProductVersionQueryStringFromFilterState(filterInfo);
|
|
116
|
+
// add text: to string search and create and with the rest
|
|
117
|
+
const q = parseSolrQuery(filterQuery);
|
|
118
|
+
const newFilterInfo = {};
|
|
119
|
+
let advanceToBasicQuery = [];
|
|
120
|
+
Object.keys(q || {}).forEach((_key) => {
|
|
121
|
+
if (_key === SolrKeys.product) {
|
|
122
|
+
newFilterInfo[SolrPivotKeys.product_version] = generateProductVersionPivotValue(q[_key]);
|
|
123
|
+
}
|
|
124
|
+
// if it's an unnamed field we should add it to free text querystring
|
|
125
|
+
else if (_key === '<implicit>' || _key === 'undefined') {
|
|
126
|
+
advanceToBasicQuery.push(q[_key]);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// it means field is not supported as a filter
|
|
130
|
+
if (!fieldNameToSolrFieldMapping[_key]) {
|
|
131
|
+
// if it's supported in basic search mode then add it as a query string in the search input
|
|
132
|
+
if (advanceSearchFieldNameToSolrFieldMapping[_key] || SolrKeys[_key]) {
|
|
133
|
+
advanceToBasicQuery.push(`${advancedSearchMap[_key]}:${getStringOrBooleanValue(q[_key][0])}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const textSearch = advanceToBasicQuery.length !== 0 ? [`text:"${advanceToBasicQuery.join(' ')}"`] : [];
|
|
139
|
+
const parsedQueryString = []
|
|
140
|
+
.concat(textSearch)
|
|
141
|
+
.concat(productVersionQuery ? productVersionQuery : [])
|
|
142
|
+
.concat(filtersQuery !== '*:*' ? filtersQuery : []);
|
|
143
|
+
return parsedQueryString.join(' and ').replace(/ AND /g, ' and ').replace(/ OR /g, ' or ');
|
|
144
|
+
}
|
|
100
145
|
function createProductVersionQueryStringFromFilterState(filterInfo) {
|
|
101
146
|
const queryStringForProductFilter = buildSolrQuery({ [ProductVersionKey]: filterInfo[ProductVersionKey] });
|
|
102
147
|
let productVersionQuery = '';
|
|
@@ -107,7 +152,7 @@ function createProductVersionQueryStringFromFilterState(filterInfo) {
|
|
|
107
152
|
.replace(regexForProductReplace, fieldNameToSolrFieldMapping[SolrKeys.product])
|
|
108
153
|
.replace(regexForVersionReplace, fieldNameToSolrFieldMapping[SolrKeys.version]);
|
|
109
154
|
}
|
|
110
|
-
return productVersionQuery;
|
|
155
|
+
return productVersionQuery.replace(/\(\s+/g, '(').replace(/\s\)+/g, ')');
|
|
111
156
|
}
|
|
112
157
|
function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyForKVPair = []) {
|
|
113
158
|
const finalQueryArr = [];
|
|
@@ -141,8 +186,13 @@ function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyFor
|
|
|
141
186
|
filtersQuery !== '*:*' && finalQueryArr.push(filtersQuery);
|
|
142
187
|
return finalQueryArr.join(' and ');
|
|
143
188
|
}
|
|
189
|
+
function isBoolean(val) {
|
|
190
|
+
return val === false || val === true;
|
|
191
|
+
}
|
|
144
192
|
function getStringOrBooleanValue(val) {
|
|
145
|
-
|
|
193
|
+
if (isBoolean(val))
|
|
194
|
+
return val;
|
|
195
|
+
return val === 'true' ? true : val === 'false' ? false : `"${val}"`;
|
|
146
196
|
}
|
|
147
197
|
function createQueryForCSVDownload(filterState, loggedInUserRights, loggedInUsersAccount, startValue = 0, limitValue = 1000) {
|
|
148
198
|
if (loggedInUsersAccount.secureSupport) {
|
|
@@ -285,15 +335,19 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
|
|
|
285
335
|
}
|
|
286
336
|
}
|
|
287
337
|
});
|
|
338
|
+
const parsedQuery = filterQueryInfo.type === CaseSearchQueryType.ADVANCED
|
|
339
|
+
? createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQueryInfo.queryString, true)
|
|
340
|
+
: '';
|
|
288
341
|
const filterQuery = {
|
|
289
342
|
sortInfo,
|
|
290
343
|
paginationInfo,
|
|
291
|
-
filterQueryInfo,
|
|
344
|
+
filterQueryInfo: Object.assign(Object.assign({}, filterQueryInfo), { parsedQuery }),
|
|
292
345
|
filterInfo: Object.assign(Object.assign({}, defaultFilterInfo), filterInfo),
|
|
293
346
|
};
|
|
294
347
|
return filterQuery;
|
|
295
348
|
}
|
|
296
|
-
|
|
349
|
+
// when from advaced query we want to swith to basic query is called
|
|
350
|
+
function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, currentFilterState, parsedQuery = '', type = CaseSearchQueryType.BASIC) {
|
|
297
351
|
const filterObj = parseSolrQuery(queryString);
|
|
298
352
|
const newFilterInfo = {};
|
|
299
353
|
let advanceToBasicQuery = [];
|
|
@@ -312,14 +366,15 @@ function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, cu
|
|
|
312
366
|
}
|
|
313
367
|
else {
|
|
314
368
|
// if it's supported in basic search mode then add it as a query string in the search input
|
|
315
|
-
if (advanceSearchFieldNameToSolrFieldMapping[_key]) {
|
|
369
|
+
if (advanceSearchFieldNameToSolrFieldMapping[_key] || SolrKeys[_key]) {
|
|
316
370
|
const val = filterObj[_key];
|
|
317
|
-
advanceToBasicQuery.push(`${_key}
|
|
371
|
+
advanceToBasicQuery.push(`${_key}:${getStringOrBooleanValue(val)}`);
|
|
318
372
|
}
|
|
319
373
|
}
|
|
320
374
|
}
|
|
321
375
|
});
|
|
322
|
-
const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '),
|
|
376
|
+
const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '), parsedQuery,
|
|
377
|
+
type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), newFilterInfo) });
|
|
323
378
|
return filterState;
|
|
324
379
|
}
|
|
325
380
|
function generateFilterValue(solrFieldName, value, globalMetadataState) {
|
|
@@ -395,4 +450,4 @@ function generateProductVersionPivotValue(values) {
|
|
|
395
450
|
};
|
|
396
451
|
});
|
|
397
452
|
}
|
|
398
|
-
export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
|
|
453
|
+
export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"not ie <= 11",
|
|
100
100
|
"not op_mini all"
|
|
101
101
|
],
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "6ad83aaad97f659afae273d0bf00f1b7400584f1"
|
|
103
103
|
}
|