@rh-support/cases 1.0.3 → 1.0.5
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-search/AdvanceSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.js +7 -18
- package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.js +26 -19
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +3 -1
- package/lib/esm/enums/case.d.ts +15 -1
- package/lib/esm/enums/case.d.ts.map +1 -1
- package/lib/esm/enums/case.js +16 -2
- package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseSearchUtils.js +13 -23
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,MAAM;IACZ,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,eAwS1C"}
|
|
@@ -5,15 +5,13 @@ import isEmpty from 'lodash/isEmpty';
|
|
|
5
5
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
6
6
|
import { Trans, useTranslation } from 'react-i18next';
|
|
7
7
|
import { CaseSearchQueryType } from '../../../enums/caseSearch';
|
|
8
|
-
import {
|
|
9
|
-
import { updateFilterQuery } from '../CaseListFilterReducer';
|
|
8
|
+
import { CaseListFilterStateContext } from '../CaseListFilterContext';
|
|
10
9
|
import useAdvanceSearchParser from './useAdvanceSearchParser';
|
|
11
10
|
export function AdvanceSearch(props) {
|
|
12
11
|
const { t } = useTranslation();
|
|
13
12
|
const filterState = useContext(CaseListFilterStateContext);
|
|
14
13
|
const { filterQueryInfo } = filterState;
|
|
15
14
|
const isFirstMountRef = useRef(true);
|
|
16
|
-
const dispatch = useContext(CaseListFilterDispatchContext);
|
|
17
15
|
const [inputString, setInputString] = useState('');
|
|
18
16
|
const [autoCompleteList, setAutoCompleteList] = useState([]);
|
|
19
17
|
const dropdownWrapperRef = useRef(null);
|
|
@@ -35,7 +33,12 @@ export function AdvanceSearch(props) {
|
|
|
35
33
|
setIsParsingSuccessful(false);
|
|
36
34
|
props.onAdvancedSearchValidation(false);
|
|
37
35
|
parserErrorRef.current = e;
|
|
38
|
-
|
|
36
|
+
// sometimes a race condition happens. Before parse js runs successfully we
|
|
37
|
+
// reach to this line because of that wrapped this line in try/catch
|
|
38
|
+
try {
|
|
39
|
+
autoCompleteSetup(e.expected, inputString.substring(e.location.start.offset, inputString.length));
|
|
40
|
+
}
|
|
41
|
+
catch (_a) { }
|
|
39
42
|
}
|
|
40
43
|
};
|
|
41
44
|
const { parse, parseSafe, parserRef } = useAdvanceSearchParser({ onInit: parseQuery });
|
|
@@ -200,20 +203,6 @@ export function AdvanceSearch(props) {
|
|
|
200
203
|
props.onSearchSubmit && props.onSearchSubmit(CaseSearchQueryType.ADVANCED, parsedQuery);
|
|
201
204
|
};
|
|
202
205
|
const onBasicClick = () => {
|
|
203
|
-
var _a, _b;
|
|
204
|
-
if (inputString) {
|
|
205
|
-
if (((_a = filterState.filterQueryInfo) === null || _a === void 0 ? void 0 : _a.queryString) === '') {
|
|
206
|
-
props.onSearchValChange && props.onSearchValChange('');
|
|
207
|
-
}
|
|
208
|
-
updateFilterQuery(dispatch, {
|
|
209
|
-
type: CaseSearchQueryType.BASIC,
|
|
210
|
-
queryString: ((_b = filterState.filterQueryInfo) === null || _b === void 0 ? void 0 : _b.queryString) || '',
|
|
211
|
-
parsedQuery: '',
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
updateFilterQuery(dispatch, Object.assign(Object.assign({}, filterState.filterQueryInfo), { type: CaseSearchQueryType.BASIC }));
|
|
216
|
-
}
|
|
217
206
|
props.onSearchTypeChange && props.onSearchTypeChange(CaseSearchQueryType.BASIC);
|
|
218
207
|
};
|
|
219
208
|
const isQueryInValid = inputString && !isParsingSuccessful;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAsBA,UAAU,MAAM;IACZ,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,eAsLvC"}
|
|
@@ -2,13 +2,13 @@ import { Button, SearchInput } from '@patternfly/react-core';
|
|
|
2
2
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
3
3
|
import { AbilityContext, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
4
4
|
import isEmpty from 'lodash/isEmpty';
|
|
5
|
-
import React, { useContext, useEffect, useState } from 'react';
|
|
5
|
+
import React, { useCallback, useContext, useEffect, useState } from 'react';
|
|
6
6
|
import { Trans, useTranslation } from 'react-i18next';
|
|
7
7
|
import { CaseSearchQueryType } from '../../../enums/caseSearch';
|
|
8
8
|
import { createFilterStateFromAdvancedQuery, createUserFriendlyQueryFromFilterStateAdvancedSearch, } from '../../../utils/caseSearchUtils';
|
|
9
9
|
import { useCaseListStateContext } from '../CaseListContext';
|
|
10
|
-
import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
|
|
11
|
-
import { updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
|
|
10
|
+
import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialPaginationInfo, } from '../CaseListFilterContext';
|
|
11
|
+
import { initialFilterInfo, updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
|
|
12
12
|
import { AdvanceSearch } from './AdvanceSearch';
|
|
13
13
|
import { BookmarkedSearchesSelector } from './BookmarkedSearchesSelector';
|
|
14
14
|
export function CaseSearch(props) {
|
|
@@ -19,23 +19,28 @@ export function CaseSearch(props) {
|
|
|
19
19
|
const filterState = useContext(CaseListFilterStateContext);
|
|
20
20
|
const { filterQueryInfo } = filterState;
|
|
21
21
|
const [searchVal, setSearchVal] = useState(filterQueryInfo.queryString);
|
|
22
|
-
const [searchType, setSearchType] = useState(CaseSearchQueryType.BASIC);
|
|
23
22
|
const [isAdvancedSearchValid, setIsAdvancedSearchValid] = useState(true);
|
|
24
23
|
const dispatch = useContext(CaseListFilterDispatchContext);
|
|
25
24
|
const { isFetching } = useCaseListStateContext();
|
|
25
|
+
const getType = useCallback(() => (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type) || CaseSearchQueryType.BASIC, [filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type]);
|
|
26
26
|
// on queryString and parsedQuery change need to update search
|
|
27
27
|
useEffect(() => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, [filterQueryInfo.type]);
|
|
28
|
+
if (getType() === CaseSearchQueryType.ADVANCED) {
|
|
29
|
+
setSearchVal(filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.parsedQuery);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
setSearchVal(filterQueryInfo.queryString);
|
|
33
|
+
}
|
|
34
|
+
}, [filterQueryInfo, getType]);
|
|
36
35
|
const onSearchValChange = (value) => {
|
|
37
36
|
if (isEmpty(value.trim())) {
|
|
38
|
-
|
|
37
|
+
setSearchVal('');
|
|
38
|
+
// clear search but keep type and sort info
|
|
39
|
+
updateFilterState(dispatch, Object.assign(Object.assign({}, filterState), { filterInfo: initialFilterInfo, filterQueryInfo: {
|
|
40
|
+
queryString: '',
|
|
41
|
+
parsedQuery: '',
|
|
42
|
+
type: CaseSearchQueryType.ADVANCED,
|
|
43
|
+
}, paginationInfo: initialPaginationInfo }));
|
|
39
44
|
}
|
|
40
45
|
else {
|
|
41
46
|
setSearchVal(value.trim());
|
|
@@ -44,10 +49,10 @@ export function CaseSearch(props) {
|
|
|
44
49
|
const clearSearchVal = () => {
|
|
45
50
|
setSearchVal('');
|
|
46
51
|
(filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString) &&
|
|
47
|
-
updateFilterQuery(dispatch, { type:
|
|
52
|
+
updateFilterQuery(dispatch, { type: getType(), queryString: '', parsedQuery: '' });
|
|
48
53
|
};
|
|
49
54
|
const onCaseSearch = (parsedQuery = '', queryString = searchVal) => {
|
|
50
|
-
updateFilterQuery(dispatch, { type:
|
|
55
|
+
updateFilterQuery(dispatch, { type: getType(), queryString, parsedQuery });
|
|
51
56
|
};
|
|
52
57
|
const onCaseSearchAdvanced = (type, parsedQuery = '', queryStringInputBox = searchVal) => {
|
|
53
58
|
const newFilterState = createFilterStateFromAdvancedQuery(parsedQuery.replace(/ and /g, ' AND ').replace(/ or /g, ' OR '), globalMetadataState, filterState, queryStringInputBox, type);
|
|
@@ -64,7 +69,9 @@ export function CaseSearch(props) {
|
|
|
64
69
|
parsedQuery,
|
|
65
70
|
});
|
|
66
71
|
}
|
|
67
|
-
|
|
72
|
+
else {
|
|
73
|
+
updateFilterQuery(dispatch, Object.assign(Object.assign({}, filterState.filterQueryInfo), { type: CaseSearchQueryType.BASIC }));
|
|
74
|
+
}
|
|
68
75
|
};
|
|
69
76
|
// To check is Search Button is disabled or not
|
|
70
77
|
const isSearchButtonDisabled = isEmpty(filterQueryInfo.queryString) && isEmpty(searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim());
|
|
@@ -79,7 +86,7 @@ export function CaseSearch(props) {
|
|
|
79
86
|
const handleSubmit = (ev) => {
|
|
80
87
|
ev.preventDefault();
|
|
81
88
|
// for advance search submit should only happen on btn click or ctrl+enter which will be handled manually
|
|
82
|
-
|
|
89
|
+
getType() === CaseSearchQueryType.BASIC && onCaseSearch();
|
|
83
90
|
};
|
|
84
91
|
const renderBasicSearch = () => {
|
|
85
92
|
return (React.createElement(React.Fragment, null,
|
|
@@ -96,6 +103,6 @@ export function CaseSearch(props) {
|
|
|
96
103
|
};
|
|
97
104
|
return (React.createElement(React.Fragment, null,
|
|
98
105
|
React.createElement("form", { onSubmit: handleSubmit, onKeyDown: handleSearchInputKeyDown },
|
|
99
|
-
React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC ===
|
|
100
|
-
React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType:
|
|
106
|
+
React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === getType() ? renderBasicSearch() : renderAdvanceSearch())),
|
|
107
|
+
React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: getType(), isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
|
|
101
108
|
}
|
|
@@ -1 +1 @@
|
|
|
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;;
|
|
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;;EA0LzC"}
|
|
@@ -50,7 +50,7 @@ export default function useAdvanceSearchParser({ onInit }) {
|
|
|
50
50
|
|
|
51
51
|
andSequence = parts:(" and " sequencePart)+ { return [].concat.apply([], parts).join(""); }
|
|
52
52
|
orSequence = parts:(" or " sequencePart)+ { return [].concat.apply([], parts).join(""); }
|
|
53
|
-
sequencePart = criteria / "(" sq:sequence ")" { return '(' + sq + ')' }
|
|
53
|
+
sequencePart = criteria / "("__ sq:sequence __")" { return '(' + sq + ')' }
|
|
54
54
|
|
|
55
55
|
criteria = basicCriteria / notCriteria
|
|
56
56
|
notCriteria = "-"criteria:basicCriteria {return '-' + criteria; }
|
|
@@ -169,6 +169,8 @@ export default function useAdvanceSearchParser({ onInit }) {
|
|
|
169
169
|
/ accountNameMultipleValue / _
|
|
170
170
|
accountNameMultipleValue = "(" val:(accountNameValue)+ ")" { return joinByOr(val); }
|
|
171
171
|
|
|
172
|
+
__ = [ ]*
|
|
173
|
+
|
|
172
174
|
_ "whitespace"
|
|
173
175
|
= [ \\t\\r\\n\\f]+
|
|
174
176
|
|
package/lib/esm/enums/case.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SolrKeys } from './filters';
|
|
1
|
+
import { SFDCKeys, SolrKeys } from './filters';
|
|
2
2
|
export declare enum CaseStatus {
|
|
3
3
|
WaitingOnCustomer = "Waiting on Customer",
|
|
4
4
|
WaitingOnRedHat = "Waiting on Red Hat",
|
|
@@ -42,4 +42,18 @@ export declare const caseListSortColumnIdsToSolrMap: {
|
|
|
42
42
|
type: SolrKeys;
|
|
43
43
|
closedDate: SolrKeys;
|
|
44
44
|
};
|
|
45
|
+
export declare const caseListSortColumnIdsToSFDCMap: {
|
|
46
|
+
number: SFDCKeys;
|
|
47
|
+
summary: SFDCKeys;
|
|
48
|
+
severity: SFDCKeys;
|
|
49
|
+
contactName: SFDCKeys;
|
|
50
|
+
createdDate: SFDCKeys;
|
|
51
|
+
status: SFDCKeys;
|
|
52
|
+
lastModifiedDate: SFDCKeys;
|
|
53
|
+
accountNumber: SFDCKeys;
|
|
54
|
+
folderName: SFDCKeys;
|
|
55
|
+
alternateCaseId: SFDCKeys;
|
|
56
|
+
type: SFDCKeys;
|
|
57
|
+
closedDate: SFDCKeys;
|
|
58
|
+
};
|
|
45
59
|
//# sourceMappingURL=case.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../src/enums/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../src/enums/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE/C,oBAAY,UAAU;IAClB,iBAAiB,wBAAwB;IACzC,eAAe,uBAAuB;IACtC,IAAI,mBAAmB;IACvB,MAAM,WAAW;IACjB,GAAG,cAAc;CACpB;AAED,oBAAY,YAAY;IACpB,MAAM,eAAe;IACrB,SAAS,kBAAkB;IAC3B,MAAM,eAAe;IACrB,GAAG,YAAY;CAClB;AAED,eAAO,MAAM,cAAc,0UACgT,CAAC;AAE5U,oBAAY,iBAAiB;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,gBAAgB;IACrB,OAAO,gBAAgB;IACvB,MAAM,WAAW;IACjB,QAAQ,qBAAqB;IAC7B,iBAAiB,YAAY;IAC7B,aAAa,kBAAkB;IAC/B,KAAK,eAAe;IACpB,eAAe,oBAAoB;IACnC,IAAI,SAAS;IACb,cAAc,eAAe;CAChC;AAED,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC"}
|
package/lib/esm/enums/case.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SolrKeys } from './filters';
|
|
1
|
+
import { SFDCKeys, SolrKeys } from './filters';
|
|
2
2
|
export var CaseStatus;
|
|
3
3
|
(function (CaseStatus) {
|
|
4
4
|
CaseStatus["WaitingOnCustomer"] = "Waiting on Customer";
|
|
@@ -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.contactName,
|
|
39
39
|
[CaseListColumnIds.created]: SolrKeys.createdDate,
|
|
40
40
|
[CaseListColumnIds.status]: SolrKeys.status,
|
|
41
41
|
[CaseListColumnIds.modified]: SolrKeys.modifiedDate,
|
|
@@ -45,3 +45,17 @@ export const caseListSortColumnIdsToSolrMap = {
|
|
|
45
45
|
[CaseListColumnIds.type]: SolrKeys.type,
|
|
46
46
|
[CaseListColumnIds.caseClosedDate]: SolrKeys.caseClosedDate,
|
|
47
47
|
};
|
|
48
|
+
export const caseListSortColumnIdsToSFDCMap = {
|
|
49
|
+
[CaseListColumnIds.caseId]: SFDCKeys.caseNumber,
|
|
50
|
+
[CaseListColumnIds.summary]: SFDCKeys.caseSummary,
|
|
51
|
+
[CaseListColumnIds.severity]: SFDCKeys.severity,
|
|
52
|
+
[CaseListColumnIds.owner]: SFDCKeys.contactName,
|
|
53
|
+
[CaseListColumnIds.created]: SFDCKeys.createdDate,
|
|
54
|
+
[CaseListColumnIds.status]: SFDCKeys.status,
|
|
55
|
+
[CaseListColumnIds.modified]: SFDCKeys.modifiedDate,
|
|
56
|
+
[CaseListColumnIds.accountNumber]: SFDCKeys.accountNumber,
|
|
57
|
+
[CaseListColumnIds.group]: SFDCKeys.groupName,
|
|
58
|
+
[CaseListColumnIds.alternateCaseId]: SFDCKeys.alternateId,
|
|
59
|
+
[CaseListColumnIds.type]: SFDCKeys.caseType,
|
|
60
|
+
[CaseListColumnIds.caseClosedDate]: SFDCKeys.caseClosedDate,
|
|
61
|
+
};
|
|
@@ -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;
|
|
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;AAOvD,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,UA6CnC;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;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,CAgE1B;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"}
|
|
@@ -17,7 +17,7 @@ import merge from 'lodash/merge';
|
|
|
17
17
|
import SolrQueryBuilder from 'solr-query-builder';
|
|
18
18
|
import { getLabel } from '../components/case-list/case-list-filters/AccountsBookmarkedGroupFilter';
|
|
19
19
|
import { initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
|
|
20
|
-
import { CaseListColumnIds, caseListSortColumnIdsToSolrMap, CaseStatus } from '../enums/case';
|
|
20
|
+
import { CaseListColumnIds, caseListSortColumnIdsToSFDCMap, caseListSortColumnIdsToSolrMap, CaseStatus, } from '../enums/case';
|
|
21
21
|
import { advanceSearchFieldNameToSolrFieldMapping, CaseSearchQueryType, fieldNameToSolrFieldMapping, } from '../enums/caseSearch';
|
|
22
22
|
import { AdditionalFilterLabels, advancedSearchMap, ProductVersionKey, sfdcFieldToSolrMap, SolrKeys, SolrPivotKeys, SolrTags, } from '../enums/filters';
|
|
23
23
|
export const FILTER_URL_QUERY_SEARCH_PARAM = 'query';
|
|
@@ -115,18 +115,13 @@ function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filter
|
|
|
115
115
|
const productVersionQuery = createProductVersionQueryStringFromFilterState(filterInfo);
|
|
116
116
|
// add text: to string search and create and with the rest
|
|
117
117
|
const q = parseSolrQuery(filterQuery);
|
|
118
|
-
const newFilterInfo = {};
|
|
119
118
|
let advanceToBasicQuery = [];
|
|
119
|
+
let freeTextQuery = [];
|
|
120
120
|
Object.keys(q || {}).forEach((_key) => {
|
|
121
|
-
if (_key ===
|
|
122
|
-
|
|
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]);
|
|
121
|
+
if (_key === '<implicit>' || _key === 'undefined') {
|
|
122
|
+
freeTextQuery.push(q[_key]);
|
|
127
123
|
}
|
|
128
124
|
else {
|
|
129
|
-
// it means field is not supported as a filter
|
|
130
125
|
if (!fieldNameToSolrFieldMapping[_key]) {
|
|
131
126
|
// if it's supported in basic search mode then add it as a query string in the search input
|
|
132
127
|
if (advanceSearchFieldNameToSolrFieldMapping[_key] || SolrKeys[_key]) {
|
|
@@ -135,15 +130,17 @@ function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filter
|
|
|
135
130
|
}
|
|
136
131
|
}
|
|
137
132
|
});
|
|
138
|
-
|
|
133
|
+
freeTextQuery = freeTextQuery.length !== 0 ? [`text:"${flatMap(freeTextQuery).join(' ')}"`] : [];
|
|
139
134
|
const parsedQueryString = []
|
|
140
|
-
.concat(
|
|
135
|
+
.concat(freeTextQuery)
|
|
136
|
+
.concat(advanceToBasicQuery)
|
|
141
137
|
.concat(productVersionQuery ? productVersionQuery : [])
|
|
142
138
|
.concat(filtersQuery !== '*:*' ? filtersQuery : []);
|
|
143
139
|
return parsedQueryString.join(' and ').replace(/ AND /g, ' and ').replace(/ OR /g, ' or ');
|
|
144
140
|
}
|
|
145
141
|
function createProductVersionQueryStringFromFilterState(filterInfo) {
|
|
146
|
-
|
|
142
|
+
var _a;
|
|
143
|
+
const queryStringForProductFilter = buildSolrQuery({ [ProductVersionKey]: filterInfo[ProductVersionKey] }, ((_a = filterInfo[ProductVersionKey]) === null || _a === void 0 ? void 0 : _a.length) > 1);
|
|
147
144
|
let productVersionQuery = '';
|
|
148
145
|
if (queryStringForProductFilter !== '*:*') {
|
|
149
146
|
const regexForProductReplace = new RegExp(SolrKeys.product, 'g');
|
|
@@ -152,7 +149,7 @@ function createProductVersionQueryStringFromFilterState(filterInfo) {
|
|
|
152
149
|
.replace(regexForProductReplace, fieldNameToSolrFieldMapping[SolrKeys.product])
|
|
153
150
|
.replace(regexForVersionReplace, fieldNameToSolrFieldMapping[SolrKeys.version]);
|
|
154
151
|
}
|
|
155
|
-
return productVersionQuery
|
|
152
|
+
return productVersionQuery;
|
|
156
153
|
}
|
|
157
154
|
function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyForKVPair = []) {
|
|
158
155
|
const finalQueryArr = [];
|
|
@@ -177,12 +174,7 @@ function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyFor
|
|
|
177
174
|
}
|
|
178
175
|
const filtersQuery = advanceQuery.build().replace(/ AND /g, ' and ');
|
|
179
176
|
const productVersionQuery = createProductVersionQueryStringFromFilterState(filterInfo);
|
|
180
|
-
productVersionQuery &&
|
|
181
|
-
finalQueryArr.push(productVersionQuery
|
|
182
|
-
.replace(/\s?\(\s/g, '(')
|
|
183
|
-
.replace(/\s?\)\s?/g, ')')
|
|
184
|
-
.replace(/ OR /g, ' or ')
|
|
185
|
-
.replace(/ AND /g, ' and '));
|
|
177
|
+
productVersionQuery && finalQueryArr.push(productVersionQuery.replace(/ OR /g, ' or ').replace(/ AND /g, ' and '));
|
|
186
178
|
filtersQuery !== '*:*' && finalQueryArr.push(filtersQuery);
|
|
187
179
|
return finalQueryArr.join(' and ');
|
|
188
180
|
}
|
|
@@ -224,7 +216,6 @@ function objectFlip(obj, camelCaseKey = false) {
|
|
|
224
216
|
}, {});
|
|
225
217
|
}
|
|
226
218
|
function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount) {
|
|
227
|
-
const solrFieldToSfdcMap = objectFlip(sfdcFieldToSolrMap, true);
|
|
228
219
|
const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
|
|
229
220
|
const maxResults = pageSize;
|
|
230
221
|
const offset = (currentPage - 1) * pageSize;
|
|
@@ -242,12 +233,11 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
|
|
|
242
233
|
if ((filteredStatus || []).length > 1 && filteredStatus.includes(CaseStatus.Closed)) {
|
|
243
234
|
filteredStatus = filteredStatus.filter((status) => status !== CaseStatus.Closed);
|
|
244
235
|
}
|
|
245
|
-
const sortFieldSolr = caseListSortColumnIdsToSolrMap[column];
|
|
246
236
|
const sfdcFilter = {
|
|
247
237
|
maxResults,
|
|
248
238
|
offset,
|
|
249
239
|
includeClosed,
|
|
250
|
-
sortField:
|
|
240
|
+
sortField: caseListSortColumnIdsToSFDCMap[column],
|
|
251
241
|
sortOrder: direction.toUpperCase(),
|
|
252
242
|
};
|
|
253
243
|
const queryString = (filterQueryInfo.queryString || '').trim();
|
|
@@ -443,7 +433,7 @@ function generateProductVersionPivotValue(values) {
|
|
|
443
433
|
: {
|
|
444
434
|
field: SolrKeys.product,
|
|
445
435
|
value: item.value,
|
|
446
|
-
[SolrKeys.version]: item[fieldNameToSolrFieldMapping[SolrKeys.version]].map((item) => ({
|
|
436
|
+
[SolrKeys.version]: (item[fieldNameToSolrFieldMapping[SolrKeys.version]] || []).map((item) => ({
|
|
447
437
|
field: SolrKeys.version,
|
|
448
438
|
value: item,
|
|
449
439
|
})),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
"@patternfly/pfe-collapse": "1.12.3",
|
|
52
52
|
"@patternfly/react-core": "4.202.16",
|
|
53
53
|
"@patternfly/react-table": "4.71.16",
|
|
54
|
-
"@rh-support/components": "1.2.
|
|
55
|
-
"@rh-support/react-context": "1.0.
|
|
54
|
+
"@rh-support/components": "1.2.1",
|
|
55
|
+
"@rh-support/react-context": "1.0.2",
|
|
56
56
|
"@rh-support/types": "0.2.0",
|
|
57
|
-
"@rh-support/user-permissions": "1.0.
|
|
58
|
-
"@rh-support/utils": "1.0.
|
|
57
|
+
"@rh-support/user-permissions": "1.0.1",
|
|
58
|
+
"@rh-support/utils": "1.0.1",
|
|
59
59
|
"i18next": "^19.0.1",
|
|
60
60
|
"localforage": "^1.7.3",
|
|
61
61
|
"lodash": "^4.17.21",
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"not ie <= 11",
|
|
100
100
|
"not op_mini all"
|
|
101
101
|
],
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "4c44ec177438ff8e09a761a4f38ce3fbd83c7aaa"
|
|
103
103
|
}
|