@rh-support/cases 2.1.41 → 2.1.44
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/README.md +0 -2
- package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +1 -1
- package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.js +2 -1
- package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/CaseListTable.js +4 -3
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +2 -0
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +56 -34
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts +2 -1
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +7 -7
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +1 -1
- package/lib/esm/utils/caseSearchUtils.d.ts +3 -3
- package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseSearchUtils.js +18 -5
- package/package.json +10 -13
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ export function AccountsFilter(props) {
|
|
|
97
97
|
if (!canReadBookmarkAccounts) {
|
|
98
98
|
return null;
|
|
99
99
|
}
|
|
100
|
-
return (React.createElement("div",
|
|
100
|
+
return (React.createElement("div", { "data-tracking-id": "case-list-accounts-filter" },
|
|
101
101
|
React.createElement("label", { htmlFor: "case-list-accounts-filter" },
|
|
102
102
|
React.createElement(Trans, null, "Accounts")),
|
|
103
103
|
React.createElement(AccountSelectorInternal, { label: t('i18nAccounts', 'Accounts'), selectedAccounts: selectedAccounts, multiple: true, suggestBookmarkAccounts: false, placeholder: getDropdownBtnPlaceholder(t('Search for an account'), (selectedAccounts || []).map((i) => i.name), ''), onSelect: onAccountsFilterChange })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatorSsoNameFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/CreatorSsoNameFilter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreatorSsoNameFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/CreatorSsoNameFilter.tsx"],"names":[],"mappings":"AAkCA,eAAO,MAAM,WAAW,0BAIvB,CAAC;AAYF,eAAO,MAAM,eAAe;;;;;;;GAA6E,CAAC;AAE1G,eAAO,MAAM,kBAAkB,iEAyC9B,CAAC;AAEF,wBAAgB,oBAAoB,gBA0OnC"}
|
|
@@ -13,7 +13,8 @@ import TimesCircleIcon from '@patternfly/react-icons/dist/js/icons/times-circle-
|
|
|
13
13
|
import { LoadingIndicator, useFetch, useSelectKeyboardNavigator } from '@rh-support/components';
|
|
14
14
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
15
15
|
import { getDropdownBtnPlaceholder } from '@rh-support/utils';
|
|
16
|
-
import
|
|
16
|
+
import isEmpty from 'lodash/isEmpty';
|
|
17
|
+
import isNull from 'lodash/isNull';
|
|
17
18
|
import isUndefined from 'lodash/isUndefined';
|
|
18
19
|
import uniqBy from 'lodash/uniqBy';
|
|
19
20
|
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseListTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAwB3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"CaseListTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAwB3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAYxD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAEH,eAAe,EACf,SAAS,EAIZ,MAAM,0BAA0B,CAAC;AA2BlC,UAAU,MAAM;IACZ,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,kBAAkB,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAsBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,eA0jB1C"}
|
|
@@ -4,10 +4,11 @@ import { Table, TableVariant, Tbody, Td, Th, Thead, Tr, Visibility } from '@patt
|
|
|
4
4
|
import { TableColumnSelector, TableComponent, TablePagination } from '@rh-support/components';
|
|
5
5
|
import { GlobalMetadataDispatchContext, GlobalMetadataStateContext, updateUserPreferences, useGlobalStateContext, UserPreferencesKeys, } from '@rh-support/react-context';
|
|
6
6
|
import { formatDate, scrollIntoView, toNewCaseTypeSwitcher } from '@rh-support/utils';
|
|
7
|
-
import { isEqual, isUndefined } from 'lodash';
|
|
8
7
|
import find from 'lodash/find';
|
|
9
8
|
import flatMap from 'lodash/flatMap';
|
|
10
9
|
import includes from 'lodash/includes';
|
|
10
|
+
import isEqual from 'lodash/isEqual';
|
|
11
|
+
import isUndefined from 'lodash/isUndefined';
|
|
11
12
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
12
13
|
import { Trans, useTranslation } from 'react-i18next';
|
|
13
14
|
import { Link } from 'react-router-dom';
|
|
@@ -342,7 +343,7 @@ export function CaseListTable(props) {
|
|
|
342
343
|
React.createElement("div", { className: "case-list-table-toolbar pf-v5-l-flex", ref: tableToolbarRef },
|
|
343
344
|
React.createElement("div", { className: "toolbar-actions pf-v5-l-flex pf-m-space-items-sm" },
|
|
344
345
|
React.createElement(TableColumnSelector, { onColumnSelectorChange: onColumnSelectorChange }),
|
|
345
|
-
React.createElement(ExportCaseListCSV, { currentFilteredCaseList: props.caseList, isExportCsvDisabled: props.isSolrDown }),
|
|
346
|
+
React.createElement(ExportCaseListCSV, { currentFilteredCaseList: props.caseList, isExportCsvDisabled: props.isSolrDown, selectedCases: selectedCases }),
|
|
346
347
|
React.createElement(CloseCaseBtn, { selectedCases: selectedCases, caseList: caseListData, onCasesCloseSuccess: onCasesCloseSuccess })),
|
|
347
348
|
React.createElement("span", { className: "toolbar-pagination" },
|
|
348
349
|
React.createElement(TablePagination, { perPage: (_c = props.paginationInfo) === null || _c === void 0 ? void 0 : _c.pageSize, currentPage: (_d = props.paginationInfo) === null || _d === void 0 ? void 0 : _d.currentPage, onPerPageSelect: onPerPageSelect, onSetPage: onSetPage, variant: PaginationVariant.top, itemCount: getItemCount() }))),
|
|
@@ -392,6 +393,6 @@ export function CaseListTable(props) {
|
|
|
392
393
|
React.createElement(Td, { className: !isColumnVisible('type') ? Visibility.hidden : '', "data-label": "Support type" }, row.case_type),
|
|
393
394
|
React.createElement(Td, { className: !isColumnVisible('closedDate') ? Visibility.hidden : '', "data-label": "Closed date" }, row.case_closedDate ? formatDate(row.case_closedDate) : ''),
|
|
394
395
|
React.createElement(Td, { className: !isColumnVisible('folderName') ? Visibility.hidden : '', "data-label": "Group" }, row.case_folderName ? row.case_folderName : ''))))))),
|
|
395
|
-
caseListData.length > 9 && (React.createElement("footer", { className: "toolbar-pagination" },
|
|
396
|
+
caseListData.length > 9 && (React.createElement("footer", { className: "toolbar-pagination", "data-tracking-id": "case-list-table-pagination" },
|
|
396
397
|
React.createElement(TablePagination, { perPage: (_e = props === null || props === void 0 ? void 0 : props.paginationInfo) === null || _e === void 0 ? void 0 : _e.pageSize, currentPage: (_f = props === null || props === void 0 ? void 0 : props.paginationInfo) === null || _f === void 0 ? void 0 : _f.currentPage, onPerPageSelect: onPerPageSelect, onSetPage: onBottomPaginationSetPage, variant: PaginationVariant.bottom, itemCount: getItemCount() }))))));
|
|
397
398
|
}
|
|
@@ -10,6 +10,8 @@ interface IProps {
|
|
|
10
10
|
loggedInUserRights: IApiResponseDetails<UserAuth>;
|
|
11
11
|
loggedInUsersAccount: IApiResponseDetails<Partial<IAccount>>;
|
|
12
12
|
filterState: ICaseListFilterState;
|
|
13
|
+
selectedCases: string[];
|
|
14
|
+
filteredCaseCount: number;
|
|
13
15
|
}
|
|
14
16
|
export default function DownloadCSVFileModal(props: IProps): JSX.Element;
|
|
15
17
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAkBlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AASxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,oBAAoB,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAoBD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,eAuazD"}
|
|
@@ -9,11 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import './DownloadCSVFileModal.scss';
|
|
11
11
|
import { publicApi } from '@cee-eng/hydrajs';
|
|
12
|
-
import { Button, Checkbox, Form, FormGroup, Grid, GridItem, InputGroup, Modal, ModalVariant, Spinner, TextInput, } from '@patternfly/react-core';
|
|
12
|
+
import { Button, Checkbox, Form, FormGroup, Grid, GridItem, InputGroup, Modal, ModalVariant, Spinner, TextInput, ValidatedOptions, } from '@patternfly/react-core';
|
|
13
13
|
import DownloadIcon from '@patternfly/react-icons/dist/js/icons/download-icon';
|
|
14
14
|
import TimesCircleIcon from '@patternfly/react-icons/dist/js/icons/times-circle-icon';
|
|
15
15
|
import { ToastNotification, useFetch } from '@rh-support/components';
|
|
16
16
|
import { downloadCSV, formatDateTime, toNewCaseTypeSwitcher } from '@rh-support/utils';
|
|
17
|
+
import { isEmpty } from 'lodash';
|
|
17
18
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
18
19
|
import { useTranslation } from 'react-i18next';
|
|
19
20
|
import { SFDCKeys, SolrKeys } from '../../../enums/filters';
|
|
@@ -21,17 +22,25 @@ import { getCaseListFromSolr } from '../../../utils/caseListUtils';
|
|
|
21
22
|
import { createQueryForCSVDownload } from '../../../utils/caseSearchUtils';
|
|
22
23
|
const csvHeadersSolr = [
|
|
23
24
|
{ label: 'Case number', key: SolrKeys.caseNumber },
|
|
25
|
+
{
|
|
26
|
+
label: 'Case link',
|
|
27
|
+
key: 'case_link',
|
|
28
|
+
},
|
|
24
29
|
{ label: 'Summary', key: SolrKeys.caseSummary },
|
|
25
30
|
];
|
|
26
31
|
const csvHeadersSFDC = [
|
|
27
32
|
{ label: 'Case number', key: SFDCKeys.caseNumber },
|
|
33
|
+
{
|
|
34
|
+
label: 'Case link',
|
|
35
|
+
key: 'case_link',
|
|
36
|
+
},
|
|
28
37
|
{ label: 'Summary', key: SFDCKeys.caseSummary },
|
|
29
38
|
];
|
|
30
39
|
export default function DownloadCSVFileModal(props) {
|
|
31
|
-
const { onClose, onModalshow, isDisabled, loggedInUserRights, loggedInUsersAccount, filterState } = props;
|
|
40
|
+
const { onClose, onModalshow, isDisabled, loggedInUserRights, loggedInUsersAccount, filterState, selectedCases, filteredCaseCount, } = props;
|
|
32
41
|
const { t } = useTranslation();
|
|
33
42
|
const { isFetching, request } = useFetch(getCaseListFromSolr, { propgateErrors: true });
|
|
34
|
-
const [downloadCSVFileName, setDownloadCSVFileName] = useState('');
|
|
43
|
+
const [downloadCSVFileName, setDownloadCSVFileName] = useState('CaseList.csv');
|
|
35
44
|
const [isFetchingSFDC, setIsFetchingSFDC] = useState(false);
|
|
36
45
|
const [generatedCsvHeaders, setGeneratedCsvHeaders] = useState([]);
|
|
37
46
|
const [checkboxes, setCheckboxes] = useState({
|
|
@@ -48,6 +57,7 @@ export default function DownloadCSVFileModal(props) {
|
|
|
48
57
|
caseClosedDate: false,
|
|
49
58
|
group: false,
|
|
50
59
|
});
|
|
60
|
+
const [isSaveClicked, setIsSavedClicked] = useState(false);
|
|
51
61
|
function getKey(key, isSecureSupport) {
|
|
52
62
|
return isSecureSupport ? SFDCKeys[key] : SolrKeys[key];
|
|
53
63
|
}
|
|
@@ -146,11 +156,14 @@ export default function DownloadCSVFileModal(props) {
|
|
|
146
156
|
});
|
|
147
157
|
setGeneratedCsvHeaders(updatedCsvHeaders);
|
|
148
158
|
}, [loggedInUsersAccount.data.secureSupport, checkboxes, headerDefinitions]);
|
|
159
|
+
const isOrgAdmin = loggedInUserRights.data.isOrgAdmin();
|
|
149
160
|
const isFetchingCSVData = isFetching || isFetchingSFDC;
|
|
150
161
|
const partnerSearch = loggedInUserRights.data.hasManagedAccounts();
|
|
151
162
|
const splitExtensionName = downloadCSVFileName.split('.')[0].replace(/ +/g, ''); // To split and trim value before saving PDF
|
|
152
163
|
const onCancel = () => {
|
|
153
164
|
onClose && onClose();
|
|
165
|
+
setIsSavedClicked(false);
|
|
166
|
+
setDownloadCSVFileName('CaseList.csv');
|
|
154
167
|
};
|
|
155
168
|
const handleCSVFileNameChange = (value) => {
|
|
156
169
|
setDownloadCSVFileName(value);
|
|
@@ -161,35 +174,50 @@ export default function DownloadCSVFileModal(props) {
|
|
|
161
174
|
const handleCheckboxChange = (key) => {
|
|
162
175
|
setCheckboxes((prevCheckboxes) => (Object.assign(Object.assign({}, prevCheckboxes), { [key]: !prevCheckboxes[key] })));
|
|
163
176
|
};
|
|
177
|
+
// Group header for SOLR
|
|
178
|
+
const groupHeaderSOLR = { label: 'Group', key: SolrKeys.groupName };
|
|
164
179
|
const checkboxValues = Object.values(checkboxes).slice(1); // as we don't want selectAll value
|
|
165
180
|
const allCheckBoxNotSelected = checkboxValues.includes(false);
|
|
166
181
|
// For SOLR
|
|
167
182
|
const onExportCSVClick = () => __awaiter(this, void 0, void 0, function* () {
|
|
168
183
|
try {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
184
|
+
setIsSavedClicked(true);
|
|
185
|
+
if (!isEmpty(splitExtensionName)) {
|
|
186
|
+
const query = createQueryForCSVDownload(filterState, loggedInUserRights.data, loggedInUsersAccount.data, selectedCases);
|
|
187
|
+
const res = yield request(query, partnerSearch, null, loggedInUsersAccount.data.secureSupport);
|
|
188
|
+
const headers = isOrgAdmin ? [...csvHeadersSolr, groupHeaderSOLR] : generatedCsvHeaders;
|
|
189
|
+
// To map the values in csv to new support type
|
|
190
|
+
const updatedCsvData = res.response.docs.map((row) => (Object.assign(Object.assign({}, row), { case_type: toNewCaseTypeSwitcher(row.case_type), case_link: `https://${window.location.host}${window.location.pathname}/#/case/${row.case_number}` })));
|
|
191
|
+
downloadCSV(updatedCsvData, headers, splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
|
|
192
|
+
onCancel();
|
|
193
|
+
ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
|
|
194
|
+
setIsSavedClicked(false);
|
|
195
|
+
}
|
|
175
196
|
}
|
|
176
197
|
catch (e) {
|
|
177
198
|
onCancel();
|
|
178
199
|
ToastNotification.addDangerMessage(t('File could not be downloaded. Please try again! '));
|
|
179
200
|
}
|
|
180
201
|
});
|
|
202
|
+
// Group header for SFDC
|
|
203
|
+
const groupHeaderSFDC = { label: 'Group', key: SFDCKeys.groupName };
|
|
181
204
|
// For SFDC
|
|
182
205
|
const onExportCSVClickSecureSupport = () => __awaiter(this, void 0, void 0, function* () {
|
|
183
206
|
try {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
207
|
+
setIsSavedClicked(true);
|
|
208
|
+
if (!isEmpty(splitExtensionName)) {
|
|
209
|
+
const sfdcFilter = createQueryForCSVDownload(filterState, loggedInUserRights.data, loggedInUsersAccount.data, selectedCases);
|
|
210
|
+
setIsFetchingSFDC(true);
|
|
211
|
+
const sfdcResponse = yield publicApi.caseList.getCaseListFromSFDC(sfdcFilter, false, true);
|
|
212
|
+
setIsFetchingSFDC(false);
|
|
213
|
+
const headers = isOrgAdmin ? [...csvHeadersSFDC, groupHeaderSFDC] : csvHeadersSFDC;
|
|
214
|
+
// To map the values in csv to new support type
|
|
215
|
+
const updatedCsvData = sfdcResponse.cases.map((row) => (Object.assign(Object.assign({}, row), { caseType: toNewCaseTypeSwitcher(row.caseType) })));
|
|
216
|
+
downloadCSV(updatedCsvData, headers, splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
|
|
217
|
+
onCancel();
|
|
218
|
+
ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
|
|
219
|
+
setIsSavedClicked(false);
|
|
220
|
+
}
|
|
193
221
|
}
|
|
194
222
|
catch (e) {
|
|
195
223
|
setIsFetchingSFDC(false);
|
|
@@ -237,9 +265,11 @@ export default function DownloadCSVFileModal(props) {
|
|
|
237
265
|
// CSV Modal Body
|
|
238
266
|
const downloadCSVModalBody = () => {
|
|
239
267
|
return (React.createElement(Form, { className: "download-csv-modal-body" },
|
|
240
|
-
React.createElement(FormGroup, { label: t('File name'), fieldId: "download-csv-file-name" },
|
|
268
|
+
React.createElement(FormGroup, { label: t('File name'), fieldId: "download-csv-file-name", isRequired: true },
|
|
241
269
|
React.createElement(InputGroup, null,
|
|
242
|
-
React.createElement(TextInput, { type: "text", id: "csv-file-name", name: "download-csv-file-name", value: downloadCSVFileName, onChange: (_event, value) => handleCSVFileNameChange(value)
|
|
270
|
+
React.createElement(TextInput, { type: "text", id: "csv-file-name", name: "download-csv-file-name", value: downloadCSVFileName, onChange: (_event, value) => handleCSVFileNameChange(value), placeholder: t('Enter a file name'), validated: isSaveClicked && isEmpty(splitExtensionName)
|
|
271
|
+
? ValidatedOptions.error
|
|
272
|
+
: ValidatedOptions.default, isRequired: true }),
|
|
243
273
|
React.createElement(Button, { variant: "plain", onClick: clearDownloadCSVFileName, icon: React.createElement(TimesCircleIcon, null) }))),
|
|
244
274
|
React.createElement(FormGroup, { label: t('Please select the fields you want included in your download.'), fieldId: "download-csv-file-fields-select" },
|
|
245
275
|
React.createElement(Grid, null,
|
|
@@ -251,22 +281,14 @@ export default function DownloadCSVFileModal(props) {
|
|
|
251
281
|
React.createElement(Checkbox, { className: "nested", label: t('Issue summary'), defaultChecked: true, isDisabled: true, id: "controlled-check-3", name: "check3" }),
|
|
252
282
|
generateCheckboxes(csvHeadersTwo))))));
|
|
253
283
|
};
|
|
254
|
-
const downloadCSVModalDescription = () => {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
return t('Your download will include 100 cases. ');
|
|
259
|
-
case 2:
|
|
260
|
-
return t('Your download will include 512 cases.');
|
|
261
|
-
case 3:
|
|
262
|
-
return t('Only the first 1000 cases will be included in your download. Please note this may take a while. ');
|
|
263
|
-
default:
|
|
264
|
-
return '';
|
|
265
|
-
}
|
|
284
|
+
const downloadCSVModalDescription = (numberOfCases) => {
|
|
285
|
+
if (numberOfCases <= 1000)
|
|
286
|
+
return t('Your download will include {{count}} cases.', { count: numberOfCases });
|
|
287
|
+
return t('Only the first 1000 cases will be included in your download. Please note this may take a while.');
|
|
266
288
|
};
|
|
267
289
|
// Download CSV modal buttons
|
|
268
290
|
const modalActions = [
|
|
269
|
-
React.createElement(Button, { key: "submit", icon: isFetchingCSVData ? React.createElement(Spinner, { size: "md" }) : React.createElement(DownloadIcon, null), variant: "primary", "data-tracking-id": "download-csv-modal-submit", onClick: loggedInUsersAccount.data.secureSupport ? onExportCSVClickSecureSupport : onExportCSVClick, isDisabled: isDisabled || isFetchingCSVData }, t('Download')),
|
|
291
|
+
React.createElement(Button, { key: "submit", icon: isFetchingCSVData ? React.createElement(Spinner, { size: "md" }) : React.createElement(DownloadIcon, null), variant: "primary", "data-tracking-id": "download-csv-modal-submit", onClick: loggedInUsersAccount.data.secureSupport ? onExportCSVClickSecureSupport : onExportCSVClick, isDisabled: (isSaveClicked && isEmpty(splitExtensionName)) || isDisabled || isFetchingCSVData }, t('Download')),
|
|
270
292
|
React.createElement(Button, { key: "back", variant: "secondary", onClick: onCancel, isDisabled: isDisabled || isFetchingCSVData, "data-tracking-id": "download-csv-modal-cancel" }, t('Cancel')),
|
|
271
293
|
];
|
|
272
294
|
// To handle select all checkbox when any of the column checkbox is checked or unchecked
|
|
@@ -279,5 +301,5 @@ export default function DownloadCSVFileModal(props) {
|
|
|
279
301
|
}
|
|
280
302
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
281
303
|
}, [allCheckBoxNotSelected, checkboxes.selectAll]);
|
|
282
|
-
return (React.createElement(Modal, { title: t('Download CSV file'), description: downloadCSVModalDescription(), className: "download-csv-modal", variant: ModalVariant.large, isOpen: onModalshow, onClose: onCancel, actions: modalActions }, downloadCSVModalBody()));
|
|
304
|
+
return (React.createElement(Modal, { title: t('Download CSV file'), description: downloadCSVModalDescription(selectedCases.length || filteredCaseCount), className: "download-csv-modal", variant: ModalVariant.large, isOpen: onModalshow, onClose: onCancel, actions: modalActions }, downloadCSVModalBody()));
|
|
283
305
|
}
|
|
@@ -3,7 +3,8 @@ import { ICaseListResponse } from '../../../models/caseList';
|
|
|
3
3
|
interface IProps {
|
|
4
4
|
currentFilteredCaseList: ISolrResponse<ICaseListResponse>;
|
|
5
5
|
isExportCsvDisabled?: boolean;
|
|
6
|
+
selectedCases: string[];
|
|
6
7
|
}
|
|
7
|
-
export declare function ExportCaseListCSV(
|
|
8
|
+
export declare function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isExportCsvDisabled }: IProps): JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=ExportCaseListCSV.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/ExportCaseListCSV.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,UAAU,MAAM;IACZ,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/ExportCaseListCSV.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,UAAU,MAAM;IACZ,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,MAAM,eAqExG"}
|
|
@@ -7,12 +7,12 @@ import { getCaseListFromSolr } from '../../../utils/caseListUtils';
|
|
|
7
7
|
import { CaseListFilterStateContext } from '../CaseListFilterContext';
|
|
8
8
|
import DownloadCSVFileModal from './DownloadCSVFileModal';
|
|
9
9
|
const MAX_LIMIT = 1000;
|
|
10
|
-
export function ExportCaseListCSV(
|
|
11
|
-
var _a
|
|
10
|
+
export function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isExportCsvDisabled }) {
|
|
11
|
+
var _a;
|
|
12
12
|
const { t } = useTranslation();
|
|
13
13
|
const btnToolTip = t('Export the current list of cases to CSV. Please note that exporting a large number of cases may take a while.');
|
|
14
14
|
const maxLengthTooltip = t('Export the current list of cases to CSV. Please note that only the top {{limit}} cases will be exported and that it may take awhile.', { limit: MAX_LIMIT });
|
|
15
|
-
const currentFilteredCaseCount = (
|
|
15
|
+
const currentFilteredCaseCount = (_a = currentFilteredCaseList === null || currentFilteredCaseList === void 0 ? void 0 : currentFilteredCaseList.numFound) !== null && _a !== void 0 ? _a : 0;
|
|
16
16
|
const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
|
|
17
17
|
const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
|
|
18
18
|
const isFetchingCSVData = isFetching;
|
|
@@ -23,20 +23,20 @@ export function ExportCaseListCSV(props) {
|
|
|
23
23
|
// To show tooltip if export csv is disabled when SOLR is down
|
|
24
24
|
const getTooltipContent = () => {
|
|
25
25
|
let tooltipText = t('Export Cases');
|
|
26
|
-
if (
|
|
26
|
+
if (isExportCsvDisabled) {
|
|
27
27
|
tooltipText = t('Unable to export while access to search is limited');
|
|
28
28
|
}
|
|
29
29
|
return tooltipText;
|
|
30
30
|
};
|
|
31
31
|
// To check if export csv button is disabled
|
|
32
|
-
const isExportButtonDisabled = isBtnDisabled ||
|
|
32
|
+
const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
|
|
33
33
|
// To toggle download csv modal
|
|
34
34
|
const toggleDownloadCSVModal = () => {
|
|
35
35
|
setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
|
|
36
36
|
};
|
|
37
|
-
return (React.createElement("span", { title: (
|
|
37
|
+
return (React.createElement("span", { title: (isExportCsvDisabled && getTooltipContent()) || '' },
|
|
38
38
|
React.createElement(Button, { variant: "tertiary", onClick: toggleDownloadCSVModal, title: btnTitle, "data-tracking-id": "case-list-toolbar-export-csv", isDisabled: isExportButtonDisabled }, isFetchingCSVData ? (React.createElement(React.Fragment, null,
|
|
39
39
|
React.createElement(Trans, null, "Exporting CSV"),
|
|
40
40
|
React.createElement(Spinner, { size: "md", "aria-label": "loading", className: "export-csv-loader pf-v5-u-ml-xs" }))) : (React.createElement(Trans, null, "Export CSV"))),
|
|
41
|
-
React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal })));
|
|
41
|
+
React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount })));
|
|
42
42
|
}
|
|
@@ -194,7 +194,7 @@ export function BookmarkedSearchesSelector(props) {
|
|
|
194
194
|
const advancedSearchPhraseIsNotValid = filterState.filterQueryInfo.type === CaseSearchQueryType.ADVANCED && !props.isAdvancedSearchValid;
|
|
195
195
|
const noFilterOrSearchQueryApplied = !props.currentCaseSearchString && (isOnlyDefaultFilterApplied(filterState) || isNoFilterApplied(filterState));
|
|
196
196
|
return (React.createElement(React.Fragment, null,
|
|
197
|
-
React.createElement("div", { className: "bookmark-search-dropdown-wrapper" },
|
|
197
|
+
React.createElement("div", { className: "bookmark-search-dropdown-wrapper", "data-tracking-id": "bookmark-search-id" },
|
|
198
198
|
React.createElement(Dropdown, { className: "bookmark-search-dropdown", isOpen: isMenuOpen, dropdownItems: renderListItems, toggle: React.createElement(DropdownToggle, { splitButtonItems: [
|
|
199
199
|
React.createElement(DropdownToggleAction, { onClick: onSaveForLaterClick, key: "action", isDisabled: !!selectedSearch ||
|
|
200
200
|
noFilterOrSearchQueryApplied ||
|
|
@@ -9,12 +9,12 @@ export declare const FILTER_URL_QUERY_SEARCH_PARAM = "query";
|
|
|
9
9
|
export declare const FILTER_URL_CURRENT_PAGE_SEARCH_PARAM = "p";
|
|
10
10
|
export declare const FILTER_URL_PAGE_SIZE_SEARCH_PARAM = "size";
|
|
11
11
|
export declare const FILTER_URL_QUERY_TYPE = "searchType";
|
|
12
|
-
declare function createSolrQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth): any;
|
|
12
|
+
declare function createSolrQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth, selectedCases?: string[]): any;
|
|
13
13
|
declare function createUserFriendlyQueryFromFilterState(filterInfo: Partial<IFilterInfo>, filterQuery: string, useKeyForKVPair?: boolean): string;
|
|
14
14
|
declare function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo: Partial<IFilterInfo>, filterQuery: string): string;
|
|
15
15
|
declare function createAdvancedSearchQueryFromFilterState(filterInfo: Partial<IFilterInfo>, keyword: string, useKeyForKVPair?: any[]): string;
|
|
16
|
-
declare function createQueryForCSVDownload(filterState: ICaseListFilterState, loggedInUserRights: UserAuth, loggedInUsersAccount: any, startValue?: number, limitValue?: number): any;
|
|
17
|
-
declare function createSFDCQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth, loggedInUserAccount: Partial<IAccount
|
|
16
|
+
declare function createQueryForCSVDownload(filterState: ICaseListFilterState, loggedInUserRights: UserAuth, loggedInUsersAccount: any, selectedCases?: string[], startValue?: number, limitValue?: number): any;
|
|
17
|
+
declare function createSFDCQueryFromFilterState(filterState: ICaseListFilterState, loggedInUser: UserAuth, loggedInUserAccount: Partial<IAccount>, selectedCases?: string[]): Partial<ISFDCCaseFilter>;
|
|
18
18
|
declare function mapSFDCCaseListToSolrCaseList(response?: ISFDCCaseListResponse[]): ISolrCaseListResponse[];
|
|
19
19
|
declare function createURLQueryFromFilterState(filterState: ICaseListFilterState): string;
|
|
20
20
|
declare function createFilterStateFromUrlQuery(urlQuery: string, globalMetadataState: IGlobalMetadataState, pageSize?: number, currentPage?: number, searchType?: CaseSearchQueryType): ICaseListFilterState;
|
|
@@ -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;AAkBxD,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,
|
|
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;AAkBxD,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,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,aAAa,GAAE,MAAM,EAAO,OA8D/B;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA2BnC;AAED,iBAAS,oDAAoD,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,UAsDlH;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,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,SAAI,EACd,UAAU,SAAO,OAoBpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,EACtC,aAAa,GAAE,MAAM,EAAO,GAC7B,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,wBA+DxD;AA0KD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
|
|
@@ -24,7 +24,7 @@ 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';
|
|
26
26
|
export const FILTER_URL_QUERY_TYPE = 'searchType';
|
|
27
|
-
function createSolrQueryFromFilterState(filterState, loggedInUser) {
|
|
27
|
+
function createSolrQueryFromFilterState(filterState, loggedInUser, selectedCases = []) {
|
|
28
28
|
const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
|
|
29
29
|
const rows = pageSize;
|
|
30
30
|
const queryString = (filterQueryInfo.queryString || '*:*').trim();
|
|
@@ -66,6 +66,7 @@ function createSolrQueryFromFilterState(filterState, loggedInUser) {
|
|
|
66
66
|
.fq(SolrKeys.accountNumber, filteredAccounts)
|
|
67
67
|
.fq(SolrKeys.escalation, escalationValue)
|
|
68
68
|
.fq(SolrKeys.type, filterInfo[SolrKeys.type], [SolrTags.c_type])
|
|
69
|
+
.fq(SolrKeys.caseNumber, selectedCases)
|
|
69
70
|
.beginOr()
|
|
70
71
|
.fq(SolrKeys.createdBySsoUsername, filterInfo[SolrKeys.createdBySsoUsername])
|
|
71
72
|
.fq(SolrKeys.caseContactSSO, filterInfo[SolrKeys.caseContactSSO])
|
|
@@ -197,15 +198,16 @@ function getStringOrBooleanValue(val) {
|
|
|
197
198
|
return val;
|
|
198
199
|
return val === 'true' ? true : val === 'false' ? false : `"${val}"`;
|
|
199
200
|
}
|
|
200
|
-
function createQueryForCSVDownload(filterState, loggedInUserRights, loggedInUsersAccount, startValue = 0, limitValue = 1000) {
|
|
201
|
+
function createQueryForCSVDownload(filterState, loggedInUserRights, loggedInUsersAccount, selectedCases = [], startValue = 0, limitValue = 1000) {
|
|
202
|
+
const newSelectedCases = selectedCases.slice(0, limitValue);
|
|
201
203
|
if (loggedInUsersAccount.secureSupport) {
|
|
202
|
-
const sfdcFilter = createSFDCQueryFromFilterState(filterState, loggedInUserRights, loggedInUsersAccount);
|
|
204
|
+
const sfdcFilter = createSFDCQueryFromFilterState(filterState, loggedInUserRights, loggedInUsersAccount, newSelectedCases);
|
|
203
205
|
sfdcFilter.offset = startValue;
|
|
204
206
|
sfdcFilter.maxResults = limitValue;
|
|
205
207
|
return sfdcFilter;
|
|
206
208
|
}
|
|
207
209
|
else {
|
|
208
|
-
const query = createSolrQueryFromFilterState(filterState, loggedInUserRights);
|
|
210
|
+
const query = createSolrQueryFromFilterState(filterState, loggedInUserRights, newSelectedCases);
|
|
209
211
|
const { start, rows } = query, solrQuery = __rest(query, ["start", "rows"]);
|
|
210
212
|
solrQuery.start = startValue;
|
|
211
213
|
solrQuery.rows = limitValue;
|
|
@@ -226,7 +228,7 @@ function objectFlip(obj, camelCaseKey = false) {
|
|
|
226
228
|
return ret;
|
|
227
229
|
}, {});
|
|
228
230
|
}
|
|
229
|
-
function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount) {
|
|
231
|
+
function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount, selectedCases = []) {
|
|
230
232
|
const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
|
|
231
233
|
const maxResults = pageSize;
|
|
232
234
|
const offset = (currentPage - 1) * pageSize;
|
|
@@ -236,6 +238,8 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
|
|
|
236
238
|
const filteredSeverity = filterInfo[SolrKeys.severity];
|
|
237
239
|
const filteredProduct = filterInfo[ProductVersionKey];
|
|
238
240
|
const includeClosed = filteredStatus.length === 0 ? true : filteredStatus.includes(CaseStatus.Closed);
|
|
241
|
+
const filteredCaseOwner = filterInfo[SolrKeys.caseOwner];
|
|
242
|
+
const filteredCaseCreatedBySSO = filterInfo[SolrKeys.createdBySsoUsername];
|
|
239
243
|
// https://projects.engineering.redhat.com/browse/CPCCM-8069?focusedCommentId=2426553&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-2426553
|
|
240
244
|
// Truth table in Comment here decsribes how combination of statuses work in sfdc.
|
|
241
245
|
// below we remove the closed status from the selected status array because we have already set the include_closed flag on the line before this comment
|
|
@@ -259,6 +263,9 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
|
|
|
259
263
|
else if (!isEmpty(queryString)) {
|
|
260
264
|
sfdcFilter['keyword'] = queryString;
|
|
261
265
|
}
|
|
266
|
+
if (selectedCases.length > 0) {
|
|
267
|
+
sfdcFilter['caseNumbers'] = [...(sfdcFilter['caseNumbers'] || []), ...selectedCases];
|
|
268
|
+
}
|
|
262
269
|
if ((filteredStatus || []).length === 1) {
|
|
263
270
|
sfdcFilter['status'] = filteredStatus[0];
|
|
264
271
|
}
|
|
@@ -274,6 +281,12 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
|
|
|
274
281
|
if (filteredAccounts.length === 1 && filteredAccounts[0] !== loggedInUser.getAccountNumber()) {
|
|
275
282
|
sfdcFilter['accountNumber'] = filteredAccounts[0];
|
|
276
283
|
}
|
|
284
|
+
if ((filteredCaseOwner || []).length === 1) {
|
|
285
|
+
sfdcFilter['ownerSSOName'] = filteredCaseOwner[0];
|
|
286
|
+
}
|
|
287
|
+
if ((filteredCaseCreatedBySSO || []).length === 1) {
|
|
288
|
+
sfdcFilter['createdBySSOName'] = filteredCaseCreatedBySSO[0];
|
|
289
|
+
}
|
|
277
290
|
return sfdcFilter;
|
|
278
291
|
}
|
|
279
292
|
function mapSFDCCaseListToSolrCaseList(response = []) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.44",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -26,36 +26,34 @@
|
|
|
26
26
|
"lib/**/*"
|
|
27
27
|
],
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@cee-eng/hydrajs": "4.
|
|
29
|
+
"@cee-eng/hydrajs": "4.17.1",
|
|
30
30
|
"@patternfly/patternfly": "5.1.0",
|
|
31
31
|
"@patternfly/react-core": "5.1.1",
|
|
32
32
|
"@patternfly/react-table": "5.1.1",
|
|
33
|
-
"i18next": "^19.0.1",
|
|
34
33
|
"localforage": "^1.10.0",
|
|
35
34
|
"lodash": "^4.17.21",
|
|
36
35
|
"react": "17.0.2",
|
|
37
36
|
"react-dom": "17.0.2",
|
|
38
|
-
"react-i18next": "^
|
|
37
|
+
"react-i18next": "^12.3.1",
|
|
39
38
|
"react-router-dom": "^5.1.2",
|
|
40
39
|
"solr-query-builder": "1.0.1"
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@cee-eng/hydrajs": "4.
|
|
42
|
+
"@cee-eng/hydrajs": "4.17.1",
|
|
44
43
|
"@patternfly/patternfly": "5.1.0",
|
|
45
44
|
"@patternfly/react-core": "5.1.1",
|
|
46
45
|
"@patternfly/react-table": "5.1.1",
|
|
47
|
-
"@rh-support/components": "2.1.
|
|
48
|
-
"@rh-support/react-context": "2.1.
|
|
46
|
+
"@rh-support/components": "2.1.35",
|
|
47
|
+
"@rh-support/react-context": "2.1.38",
|
|
49
48
|
"@rh-support/types": "2.0.2",
|
|
50
|
-
"@rh-support/user-permissions": "2.1.
|
|
51
|
-
"@rh-support/utils": "2.1.
|
|
52
|
-
"i18next": "^19.0.1",
|
|
49
|
+
"@rh-support/user-permissions": "2.1.25",
|
|
50
|
+
"@rh-support/utils": "2.1.17",
|
|
53
51
|
"localforage": "^1.10.0",
|
|
54
52
|
"lodash": "^4.17.21",
|
|
55
53
|
"pegjs": "^0.10.0",
|
|
56
54
|
"react": "17.0.2",
|
|
57
55
|
"react-dom": "17.0.2",
|
|
58
|
-
"react-i18next": "^
|
|
56
|
+
"react-i18next": "^12.3.1",
|
|
59
57
|
"react-router-dom": "^5.1.2",
|
|
60
58
|
"solr-query-builder": "1.0.1"
|
|
61
59
|
},
|
|
@@ -63,7 +61,6 @@
|
|
|
63
61
|
"@testing-library/jest-dom": "^5.16.5",
|
|
64
62
|
"@testing-library/react": "^12.0.0",
|
|
65
63
|
"@testing-library/user-event": "^13.1.9",
|
|
66
|
-
"@types/i18next": "^12.1.0",
|
|
67
64
|
"@types/lodash": "^4.14.136",
|
|
68
65
|
"@types/react": "^17.0.14",
|
|
69
66
|
"@types/react-dom": "^17.0.9",
|
|
@@ -90,5 +87,5 @@
|
|
|
90
87
|
"defaults and supports es6-module",
|
|
91
88
|
"maintained node versions"
|
|
92
89
|
],
|
|
93
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "6ccb5b388d58ad076886f1da22615f3225d667f6"
|
|
94
91
|
}
|