@rh-support/cases 2.6.170 → 2.6.173
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/CaseList.d.ts +7 -0
- package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseList.js +107 -106
- package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListContext.js +2 -0
- package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +1 -5
- package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListFilterReducer.js +1 -2
- package/lib/esm/components/case-list/CaseListReducer.d.ts +8 -2
- package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListReducer.js +13 -1
- package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +11 -18
- package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +2 -4
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +7 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +15 -7
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +5 -2
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +14 -14
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +3 -1
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +4 -5
- 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 +54 -15
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +3 -0
- 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 +44 -18
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +3 -0
- 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 +44 -14
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +3 -1
- 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 +32 -61
- package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +1 -0
- 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 +6 -5
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +5 -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 +68 -38
- 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 +15 -5
- package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
- package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +3 -2
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +0 -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 +6 -6
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -2
- package/lib/esm/enums/case.d.ts +1 -2
- package/lib/esm/enums/case.d.ts.map +1 -1
- package/lib/esm/enums/case.js +1 -14
- package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
- package/lib/esm/hooks/useExportCaseListCSV.js +9 -1
- package/lib/esm/test-utils/mockData.js +1 -1
- package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseSearchUtils.js +1 -26
- package/lib/esm/utils/constants.d.ts +1 -2
- package/lib/esm/utils/constants.d.ts.map +1 -1
- package/lib/esm/utils/constants.js +3 -14
- package/lib/esm/utils/mockSolrResponse.js +1 -1
- package/package.json +6 -6
- package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -16
- package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
- package/lib/esm/utils/caseListGraphQLUtils.js +0 -193
- package/lib/esm/utils/caseListMapper.d.ts +0 -6
- package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
- package/lib/esm/utils/caseListMapper.js +0 -36
- package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -13
- package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
- package/lib/esm/utils/caseListVariablesBuilder.js +0 -160
- package/lib/esm/utils/statusUtils.d.ts +0 -3
- package/lib/esm/utils/statusUtils.d.ts.map +0 -1
- package/lib/esm/utils/statusUtils.js +0 -22
|
@@ -6,7 +6,7 @@ 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
10
|
import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialPaginationInfo, } from '../CaseListFilterContext';
|
|
11
11
|
import { initialFilterInfo, updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
|
|
12
12
|
import { AdvanceSearch } from './AdvanceSearch';
|
|
@@ -21,7 +21,7 @@ export function CaseSearch(props) {
|
|
|
21
21
|
const [searchVal, setSearchVal] = useState(filterQueryInfo.queryString);
|
|
22
22
|
const [isAdvancedSearchValid, setIsAdvancedSearchValid] = useState(true);
|
|
23
23
|
const dispatch = useContext(CaseListFilterDispatchContext);
|
|
24
|
-
|
|
24
|
+
const { isFetching } = useCaseListStateContext();
|
|
25
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(() => {
|
|
@@ -98,16 +98,16 @@ export function CaseSearch(props) {
|
|
|
98
98
|
React.createElement("div", { className: "case-search-input-container" },
|
|
99
99
|
React.createElement(SearchInput, { className: "pf-v6-u-w-100 case-search-input", placeholder: t('Search by keyword or case ID'), value: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), "data-tracking-id": "search-cases-text-input", id: "case-search-basic", "aria-label": t('Search by keyword or case ID'), onChange: (_event, val) => onSearchValChange(val), onClear: clearSearchVal }),
|
|
100
100
|
React.createElement(Button, { variant: "primary", type: "submit", className: "search-btn", "data-tracking-id": "case-list-search-button", isDisabled: isSearchButtonDisabled },
|
|
101
|
-
React.createElement(Trans, null, "Search"))
|
|
101
|
+
React.createElement(Trans, null, "Search")),
|
|
102
|
+
canUseAdvancedSearch && (React.createElement(Button, { variant: "link", onClick: () => onSearchTypeChange(CaseSearchQueryType.ADVANCED), isDisabled: isFetching, "data-tracking-id": "case-list-adv-toggle-button", className: "case-search-toggle secondary-button-pill" },
|
|
103
|
+
React.createElement(Trans, null, "Advanced"))))));
|
|
102
104
|
};
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
104
105
|
const renderAdvanceSearch = () => {
|
|
105
106
|
return canUseAdvancedSearch ? (React.createElement(React.Fragment, null,
|
|
106
107
|
React.createElement(AdvanceSearch, { isSearchDisabled: isSearchButtonDisabled, onSearchValChange: onSearchValChange, onSearchClear: clearAdvancedSearchVal, onSearchSubmit: onCaseSearchAdvanced, onSearchTypeChange: onSearchTypeChange, onAdvancedSearchValidation: (isValid) => setIsAdvancedSearchValid(isValid) }))) : (renderBasicSearch());
|
|
107
108
|
};
|
|
108
|
-
void renderAdvanceSearch;
|
|
109
109
|
return (React.createElement(React.Fragment, null,
|
|
110
110
|
React.createElement("form", { onSubmit: handleSubmit, onKeyDown: handleSearchInputKeyDown },
|
|
111
|
-
React.createElement("div", { className: "form-group case-search-form-group" }, renderBasicSearch())),
|
|
111
|
+
React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === getType() ? renderBasicSearch() : renderAdvanceSearch())),
|
|
112
112
|
React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: getType(), isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
|
|
113
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;
|
|
1
|
+
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BAIF,MAAM;;EA+LzC"}
|
|
@@ -5,8 +5,7 @@ import { useEffect, useRef } from 'react';
|
|
|
5
5
|
import { SolrKeys } from '../../../enums/filters';
|
|
6
6
|
import { useCaseListStateContext } from '../CaseListContext';
|
|
7
7
|
export default function useAdvanceSearchParser({ onInit }) {
|
|
8
|
-
const
|
|
9
|
-
const filterValuesFromFacetResponse = caseListState.filterValuesFromFacetResponse || {};
|
|
8
|
+
const { filterValuesFromFacetResponse } = useCaseListStateContext();
|
|
10
9
|
const { globalMetadataState: { caseGroups, loggedInUsersAccount, bookmarkedGroupAccounts, allCaseTypes }, } = useGlobalStateContext();
|
|
11
10
|
const parserRef = useRef(null);
|
|
12
11
|
const parse = (stringQuery) => {
|
package/lib/esm/enums/case.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare enum CaseStatus {
|
|
|
9
9
|
export declare enum CaseSeverity {
|
|
10
10
|
Urgent = "1 - Urgent",
|
|
11
11
|
Important = "2 - Important",
|
|
12
|
-
|
|
12
|
+
Normal = "3 - Normal",
|
|
13
13
|
Low = "4 - Low"
|
|
14
14
|
}
|
|
15
15
|
export declare const caseListFields = "case_createdByName,case_createdDate,case_lastModifiedDate,case_lastModifiedByName,id,uri,case_summary,case_status,case_product,case_version,case_accountNumber,case_number,case_contactName,case_owner,case_severity,case_last_public_update_date,case_last_public_update_by,case_customer_escalation,case_folderName,case_closedDate";
|
|
@@ -56,7 +56,6 @@ export declare const caseListSortColumnIdsToSFDCMap: {
|
|
|
56
56
|
type: SFDCKeys;
|
|
57
57
|
closedDate: SFDCKeys;
|
|
58
58
|
};
|
|
59
|
-
export declare const caseListSortColumnIdsToGraphQLMap: Record<string, string>;
|
|
60
59
|
export declare const caseTableColumSortNamesMap: {
|
|
61
60
|
number: string;
|
|
62
61
|
summary: string;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAatC,CAAC"}
|
package/lib/esm/enums/case.js
CHANGED
|
@@ -11,7 +11,7 @@ export var CaseSeverity;
|
|
|
11
11
|
(function (CaseSeverity) {
|
|
12
12
|
CaseSeverity["Urgent"] = "1 - Urgent";
|
|
13
13
|
CaseSeverity["Important"] = "2 - Important";
|
|
14
|
-
CaseSeverity["
|
|
14
|
+
CaseSeverity["Normal"] = "3 - Normal";
|
|
15
15
|
CaseSeverity["Low"] = "4 - Low";
|
|
16
16
|
})(CaseSeverity || (CaseSeverity = {}));
|
|
17
17
|
export const caseListFields = 'case_createdByName,case_createdDate,case_lastModifiedDate,case_lastModifiedByName,id,uri,case_summary,case_status,case_product,case_version,case_accountNumber,case_number,case_contactName,case_owner,case_severity,case_last_public_update_date,case_last_public_update_by,case_customer_escalation,case_folderName,case_closedDate';
|
|
@@ -59,19 +59,6 @@ export const caseListSortColumnIdsToSFDCMap = {
|
|
|
59
59
|
[CaseListColumnIds.type]: SFDCKeys.caseType,
|
|
60
60
|
[CaseListColumnIds.caseClosedDate]: SFDCKeys.caseClosedDate,
|
|
61
61
|
};
|
|
62
|
-
// Maps CaseListColumnIds to GraphQL SalesforceSupportCase_OrderBy field paths
|
|
63
|
-
export const caseListSortColumnIdsToGraphQLMap = {
|
|
64
|
-
[CaseListColumnIds.caseId]: 'CaseNumber',
|
|
65
|
-
[CaseListColumnIds.summary]: 'Subject',
|
|
66
|
-
[CaseListColumnIds.severity]: 'Priority',
|
|
67
|
-
[CaseListColumnIds.owner]: 'OwnerId',
|
|
68
|
-
[CaseListColumnIds.created]: 'CreatedDate',
|
|
69
|
-
[CaseListColumnIds.status]: 'Status',
|
|
70
|
-
[CaseListColumnIds.modified]: 'LastModifiedDate',
|
|
71
|
-
[CaseListColumnIds.accountNumber]: 'Account_Number__c',
|
|
72
|
-
[CaseListColumnIds.type]: 'Type',
|
|
73
|
-
[CaseListColumnIds.caseClosedDate]: 'ClosedDate',
|
|
74
|
-
};
|
|
75
62
|
export const caseTableColumSortNamesMap = {
|
|
76
63
|
[CaseListColumnIds.caseId]: 'Case ID',
|
|
77
64
|
[CaseListColumnIds.summary]: 'Title',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExportCaseListCSV.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExportCaseListCSV.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,MAAM,WAAW,qBAAqB;IAClC,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB;;;;;;EAqChE"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
import { useFetch } from '@rh-support/components';
|
|
1
2
|
import { useState } from 'react';
|
|
2
3
|
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { getCaseListFromSolr } from '../utils/caseListUtils';
|
|
3
5
|
export const MAX_LIMIT = 1000;
|
|
4
6
|
export function useExportCaseListCSV(props) {
|
|
5
7
|
const { isExportCsvDisabled, selectedCases } = props;
|
|
6
8
|
const { t } = useTranslation();
|
|
9
|
+
// const currentFilteredCaseCount = currentFilteredCaseList?.numFound ?? 0;
|
|
10
|
+
const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
|
|
7
11
|
const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
|
|
12
|
+
const isFetchingCSVData = isFetching;
|
|
8
13
|
let showError = selectedCases.length > MAX_LIMIT;
|
|
9
|
-
const isBtnDisabled = showError;
|
|
14
|
+
const isBtnDisabled = isFetchingCSVData || showError;
|
|
15
|
+
// To show tooltip if export csv is disabled when SOLR is down
|
|
10
16
|
const getTooltipContent = () => {
|
|
11
17
|
let tooltipText = t('Your download will include the first 1000 cases in your list.');
|
|
12
18
|
if (showError) {
|
|
@@ -17,7 +23,9 @@ export function useExportCaseListCSV(props) {
|
|
|
17
23
|
}
|
|
18
24
|
return tooltipText;
|
|
19
25
|
};
|
|
26
|
+
// To check if export csv button is disabled
|
|
20
27
|
const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
|
|
28
|
+
// To toggle download csv modal
|
|
21
29
|
const toggleDownloadCSVModal = () => {
|
|
22
30
|
setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
|
|
23
31
|
};
|
|
@@ -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;AAW7B,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,OAgE/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,UA+DlH;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;AAoBD,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,
|
|
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;AAW7B,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,OAgE/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,UA+DlH;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;AAoBD,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"}
|
|
@@ -328,7 +328,6 @@ function createURLQueryFromFilterState(filterState) {
|
|
|
328
328
|
return finalQuery;
|
|
329
329
|
}
|
|
330
330
|
function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize, currentPage, searchType = CaseSearchQueryType.BASIC) {
|
|
331
|
-
var _a;
|
|
332
331
|
const { paginationInfo: defaultPaginationInfo, sortInfo: defaultSortInfo, filterInfo: defaultFilterInfo, filterQueryInfo: defaultFilterQueryInfo, } = initialCaseFilterState;
|
|
333
332
|
const [filters = '', sortQuery] = (urlQuery || '').split(/orderBy/i);
|
|
334
333
|
const paginationInfoFromUrl = {
|
|
@@ -342,7 +341,7 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
|
|
|
342
341
|
sortInfo = { column, direction: direction };
|
|
343
342
|
}
|
|
344
343
|
const filterInfo = {};
|
|
345
|
-
const
|
|
344
|
+
const _a = parseSolrQuery(filters), { keyword: queryString = [''] } = _a, restFilters = __rest(_a, ["keyword"]);
|
|
346
345
|
const filterQueryInfo = merge({}, defaultFilterQueryInfo, {
|
|
347
346
|
queryString: queryString[0].replace(/\\"/g, '"'),
|
|
348
347
|
type: searchType,
|
|
@@ -359,9 +358,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
|
|
|
359
358
|
}
|
|
360
359
|
}
|
|
361
360
|
});
|
|
362
|
-
if ((_a = filterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
363
|
-
enrichProductFilterWithIds(filterInfo[SolrPivotKeys.product_version], globalMetadataState);
|
|
364
|
-
}
|
|
365
361
|
const parsedQuery = filterQueryInfo.type === CaseSearchQueryType.ADVANCED
|
|
366
362
|
? createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQueryInfo.queryString)
|
|
367
363
|
: '';
|
|
@@ -375,7 +371,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
|
|
|
375
371
|
}
|
|
376
372
|
// advanced query
|
|
377
373
|
function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, currentFilterState, parsedQuery = '', type = CaseSearchQueryType.BASIC) {
|
|
378
|
-
var _a;
|
|
379
374
|
const filterObj = parseSolrQuery(queryString);
|
|
380
375
|
const newFilterInfo = {};
|
|
381
376
|
let advanceToBasicQuery = [];
|
|
@@ -425,9 +420,6 @@ function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, cu
|
|
|
425
420
|
}
|
|
426
421
|
delete newFilterInfo[SolrKeys.version];
|
|
427
422
|
}
|
|
428
|
-
if ((_a = newFilterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
429
|
-
enrichProductFilterWithIds(newFilterInfo[SolrPivotKeys.product_version], globalMetadataState);
|
|
430
|
-
}
|
|
431
423
|
const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '), parsedQuery,
|
|
432
424
|
type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), newFilterInfo) });
|
|
433
425
|
return filterState;
|
|
@@ -561,21 +553,4 @@ function generateProductVersionPivotValue(values) {
|
|
|
561
553
|
};
|
|
562
554
|
});
|
|
563
555
|
}
|
|
564
|
-
/**
|
|
565
|
-
* Enriches product filter objects (from URL) with their parent Product2 IDs
|
|
566
|
-
* by matching product names against the allProducts metadata loaded at startup.
|
|
567
|
-
* This allows buildProductFilter to use ParentProduct__c when version IDs aren't yet resolved.
|
|
568
|
-
*/
|
|
569
|
-
function enrichProductFilterWithIds(products, globalMetadataState) {
|
|
570
|
-
var _a, _b;
|
|
571
|
-
const allProductsList = ((_b = (_a = globalMetadataState === null || globalMetadataState === void 0 ? void 0 : globalMetadataState.allProducts) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.productsResult) || [];
|
|
572
|
-
products.forEach((prod) => {
|
|
573
|
-
if (prod.productId)
|
|
574
|
-
return;
|
|
575
|
-
const matched = allProductsList.find((p) => p.name === prod.value || p.product === prod.value);
|
|
576
|
-
if (matched === null || matched === void 0 ? void 0 : matched.productId) {
|
|
577
|
-
prod.productId = matched.productId;
|
|
578
|
-
}
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
556
|
export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export declare const PORTAL_STATUS_GROUPS: Record<string, string[]>;
|
|
2
|
-
export declare const PORTAL_DISPLAY_STATUSES: string[];
|
|
3
1
|
export declare const filterNamesMap: {
|
|
4
2
|
readonly case_status: any;
|
|
5
3
|
readonly case_severity: any;
|
|
@@ -18,6 +16,7 @@ export declare const filterNamesMap: {
|
|
|
18
16
|
readonly case_createdby_sso_username: any;
|
|
19
17
|
readonly case_contact_sso_username: any;
|
|
20
18
|
readonly case_type: any;
|
|
19
|
+
readonly case_private: any;
|
|
21
20
|
readonly usernameFilterTitle: any;
|
|
22
21
|
};
|
|
23
22
|
export declare const UpdatedCaseDataEvent = "PCM-Next > case-list-data-background-refresh";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA0D1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iDAAiD,CAAC"}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import i18n from 'i18next';
|
|
2
2
|
import { SolrKeys } from '../enums/filters';
|
|
3
|
-
export const PORTAL_STATUS_GROUPS = {
|
|
4
|
-
'In Progress': [
|
|
5
|
-
'New',
|
|
6
|
-
'In Progress',
|
|
7
|
-
'Needs New Owner',
|
|
8
|
-
'Waiting on Collab',
|
|
9
|
-
'Waiting on Engineering',
|
|
10
|
-
'Waiting on Sales',
|
|
11
|
-
'Waiting on 3rd Party Vendor',
|
|
12
|
-
],
|
|
13
|
-
'Waiting on Customer': ['Waiting on Customer Action Required', 'Waiting on Customer Solution Delivered'],
|
|
14
|
-
Closed: ['Closed'],
|
|
15
|
-
};
|
|
16
|
-
export const PORTAL_DISPLAY_STATUSES = Object.keys(PORTAL_STATUS_GROUPS);
|
|
17
3
|
// used for adding title text for different solr fields
|
|
18
4
|
// test
|
|
19
5
|
export const filterNamesMap = {
|
|
@@ -68,6 +54,9 @@ export const filterNamesMap = {
|
|
|
68
54
|
get [SolrKeys.type]() {
|
|
69
55
|
return i18n.t('Support type');
|
|
70
56
|
},
|
|
57
|
+
get [SolrKeys.isPrivate]() {
|
|
58
|
+
return i18n.t('Private');
|
|
59
|
+
},
|
|
71
60
|
get usernameFilterTitle() {
|
|
72
61
|
return i18n.t('Username');
|
|
73
62
|
},
|
|
@@ -319,7 +319,7 @@ export const mockSolrResponse = {
|
|
|
319
319
|
'dfisher dummy test',
|
|
320
320
|
0,
|
|
321
321
|
],
|
|
322
|
-
case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (
|
|
322
|
+
case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Normal)', 5984, '4 (Low)', 9338],
|
|
323
323
|
case_status: ['Closed', 6348, 'Waiting on Customer', 8, 'Waiting on Red Hat', 11459],
|
|
324
324
|
},
|
|
325
325
|
facet_ranges: {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.173",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@patternfly/patternfly": "6.2.1",
|
|
40
40
|
"@patternfly/react-core": "6.2.1",
|
|
41
41
|
"@patternfly/react-table": "6.2.1",
|
|
42
|
-
"@rh-support/components": "2.5.
|
|
43
|
-
"@rh-support/react-context": "2.5.
|
|
42
|
+
"@rh-support/components": "2.5.165",
|
|
43
|
+
"@rh-support/react-context": "2.5.263",
|
|
44
44
|
"@rh-support/types": "2.0.26",
|
|
45
|
-
"@rh-support/user-permissions": "2.5.
|
|
46
|
-
"@rh-support/utils": "2.5.
|
|
45
|
+
"@rh-support/user-permissions": "2.5.111",
|
|
46
|
+
"@rh-support/utils": "2.5.92",
|
|
47
47
|
"localforage": "^1.10.0",
|
|
48
48
|
"lodash": "^4.17.21",
|
|
49
49
|
"pegjs": "^0.10.0",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"defaults and supports es6-module",
|
|
93
93
|
"maintained node versions"
|
|
94
94
|
],
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "807e479fdf2ee11467e286baeceb5856f0f32c00"
|
|
96
96
|
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ApolloClient } from '@apollo/client';
|
|
2
|
-
import { ICaseListItem } from '@rh-support/utils';
|
|
3
|
-
import { ICaseListFilterState } from '../components/case-list/CaseListFilterReducer';
|
|
4
|
-
export interface IGraphQLCaseListResponse {
|
|
5
|
-
caseListResponse: {
|
|
6
|
-
response: {
|
|
7
|
-
docs: ICaseListItem[];
|
|
8
|
-
numFound: number;
|
|
9
|
-
start: number;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
showErrorMessage: boolean;
|
|
13
|
-
}
|
|
14
|
-
export declare function clearPageCursors(): void;
|
|
15
|
-
export declare function getCaseListFromGraphQL(filterState: ICaseListFilterState, apolloClient: ApolloClient, limitOverride?: number, signal?: AbortSignal, selectedCaseNumbers?: string[]): Promise<IGraphQLCaseListResponse>;
|
|
16
|
-
//# sourceMappingURL=caseListGraphQLUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caseListGraphQLUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListGraphQLUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAIH,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAkB,MAAM,+CAA+C,CAAC;AASrG,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,EAAE;QACd,QAAQ,EAAE;YACN,IAAI,EAAE,aAAa,EAAE,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAsBD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAkFD,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CA+EnC"}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { GET_CASES_BY_FILTERS, GET_PRODUCTS, GET_USER_IDS_BY_FEDERATION, } from '@rh-support/utils';
|
|
11
|
-
import { SolrKeys, SolrPivotKeys } from '../enums/filters';
|
|
12
|
-
import { mapGraphQLResponseToCaseList } from './caseListMapper';
|
|
13
|
-
import { createGraphQLVariablesFromFilterState, getOwnerFederationIdsToResolve, } from './caseListVariablesBuilder';
|
|
14
|
-
function resolveOwnerUserIds(federationIds, apolloClient) {
|
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
var _a, _b, _c;
|
|
17
|
-
if (!federationIds.length)
|
|
18
|
-
return [];
|
|
19
|
-
try {
|
|
20
|
-
const { data } = yield apolloClient.query({
|
|
21
|
-
query: GET_USER_IDS_BY_FEDERATION,
|
|
22
|
-
variables: { federationIds },
|
|
23
|
-
fetchPolicy: 'network-only',
|
|
24
|
-
});
|
|
25
|
-
const edges = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.SalesforceSupportUser) === null || _c === void 0 ? void 0 : _c.edges) || [];
|
|
26
|
-
return edges.map((edge) => edge.node.Id);
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
console.error('[GraphQL] Failed to resolve owner user IDs:', error);
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
const pageCursors = new Map();
|
|
35
|
-
export function clearPageCursors() {
|
|
36
|
-
pageCursors.clear();
|
|
37
|
-
}
|
|
38
|
-
function getCursorForPage(page) {
|
|
39
|
-
var _a;
|
|
40
|
-
if (page <= 1)
|
|
41
|
-
return undefined;
|
|
42
|
-
return (_a = pageCursors.get(page)) !== null && _a !== void 0 ? _a : undefined;
|
|
43
|
-
}
|
|
44
|
-
function storeEndCursor(currentPage, endCursor) {
|
|
45
|
-
pageCursors.set(currentPage + 1, endCursor);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Resolves missing Product2 IDs for product/version filters loaded from URL.
|
|
49
|
-
* When filters come from the UI, IDs are already set by ProductsFilter/VersionsFilter.
|
|
50
|
-
* When filters come from a URL (which only contains product/version names), this function
|
|
51
|
-
* queries GraphQL to resolve names → IDs so buildProductFilter can construct the where clause.
|
|
52
|
-
* Uses cache-first policy to avoid redundant network calls.
|
|
53
|
-
*/
|
|
54
|
-
function resolveVersionProductIds(filterState, apolloClient) {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
57
|
-
const products = (_a = filterState.filterInfo) === null || _a === void 0 ? void 0 : _a[SolrPivotKeys.product_version];
|
|
58
|
-
if (!(products === null || products === void 0 ? void 0 : products.length))
|
|
59
|
-
return;
|
|
60
|
-
for (const product of products) {
|
|
61
|
-
// Resolve parent product ID by name (only needed for URL-based filters)
|
|
62
|
-
if (!product.productId) {
|
|
63
|
-
try {
|
|
64
|
-
const { data: prodData } = yield apolloClient.query({
|
|
65
|
-
query: GET_PRODUCTS,
|
|
66
|
-
variables: {
|
|
67
|
-
where: { Name: { eq: product.value }, IsActive: { eq: true } },
|
|
68
|
-
first: 1,
|
|
69
|
-
},
|
|
70
|
-
fetchPolicy: 'cache-first',
|
|
71
|
-
});
|
|
72
|
-
const parentEdges = (_e = (_d = (_c = (_b = prodData === null || prodData === void 0 ? void 0 : prodData.salesforce_support_uiapi) === null || _b === void 0 ? void 0 : _b.query) === null || _c === void 0 ? void 0 : _c.SalesforceSupportProduct2) === null || _d === void 0 ? void 0 : _d.edges) !== null && _e !== void 0 ? _e : [];
|
|
73
|
-
if (parentEdges.length > 0) {
|
|
74
|
-
product.productId = parentEdges[0].node.Id;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch (_k) {
|
|
78
|
-
// continue without parent ID
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const versions = product[SolrKeys.version];
|
|
82
|
-
if (!(versions === null || versions === void 0 ? void 0 : versions.length) || !product.productId)
|
|
83
|
-
continue;
|
|
84
|
-
const hasUnresolvedVersions = versions.some((v) => v.productId === undefined || v.productId === null);
|
|
85
|
-
if (!hasUnresolvedVersions)
|
|
86
|
-
continue;
|
|
87
|
-
// Fetch child products for this parent and match version names to their Product2 IDs
|
|
88
|
-
try {
|
|
89
|
-
const { data } = yield apolloClient.query({
|
|
90
|
-
query: GET_PRODUCTS,
|
|
91
|
-
variables: {
|
|
92
|
-
where: { ParentProduct__c: { eq: product.productId }, IsActive: { eq: true } },
|
|
93
|
-
first: 200,
|
|
94
|
-
orderBy: { Name: { order: 'ASC' } },
|
|
95
|
-
},
|
|
96
|
-
fetchPolicy: 'cache-first',
|
|
97
|
-
});
|
|
98
|
-
const edges = (_j = (_h = (_g = (_f = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _f === void 0 ? void 0 : _f.query) === null || _g === void 0 ? void 0 : _g.SalesforceSupportProduct2) === null || _h === void 0 ? void 0 : _h.edges) !== null && _j !== void 0 ? _j : [];
|
|
99
|
-
const childProducts = edges.map((edge) => ({
|
|
100
|
-
id: edge.node.Id,
|
|
101
|
-
name: edge.node.Name.value,
|
|
102
|
-
}));
|
|
103
|
-
versions.forEach((ver) => {
|
|
104
|
-
if (ver.productId)
|
|
105
|
-
return;
|
|
106
|
-
const match = childProducts.find((cp) => cp.name === ver.value || cp.name.endsWith(ver.value));
|
|
107
|
-
if (match) {
|
|
108
|
-
ver.productId = match.id;
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.error('[GraphQL] Failed to resolve version product IDs:', error);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
export function getCaseListFromGraphQL(filterState, apolloClient, limitOverride, signal, selectedCaseNumbers) {
|
|
119
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
var _a, _b, _c, _d, _e, _f;
|
|
121
|
-
try {
|
|
122
|
-
yield resolveVersionProductIds(filterState, apolloClient);
|
|
123
|
-
const federationIdsToResolve = getOwnerFederationIdsToResolve(filterState);
|
|
124
|
-
let resolvedUserIds;
|
|
125
|
-
if (federationIdsToResolve.length) {
|
|
126
|
-
const ownerUserIds = yield resolveOwnerUserIds(federationIdsToResolve, apolloClient);
|
|
127
|
-
resolvedUserIds = { ownerUserIds };
|
|
128
|
-
}
|
|
129
|
-
const variables = createGraphQLVariablesFromFilterState(filterState, resolvedUserIds);
|
|
130
|
-
if (limitOverride) {
|
|
131
|
-
variables.first = limitOverride;
|
|
132
|
-
}
|
|
133
|
-
const currentPage = ((_a = filterState.paginationInfo) === null || _a === void 0 ? void 0 : _a.currentPage) || 1;
|
|
134
|
-
if (selectedCaseNumbers === null || selectedCaseNumbers === void 0 ? void 0 : selectedCaseNumbers.length) {
|
|
135
|
-
const caseNumberFilter = { CaseNumber__c: { in: selectedCaseNumbers } };
|
|
136
|
-
variables.first = selectedCaseNumbers.length;
|
|
137
|
-
if ((_b = variables.where) === null || _b === void 0 ? void 0 : _b.and) {
|
|
138
|
-
variables.where.and.push(caseNumberFilter);
|
|
139
|
-
}
|
|
140
|
-
else if (variables.where) {
|
|
141
|
-
variables.where = { and: [variables.where, caseNumberFilter] };
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
variables.where = caseNumberFilter;
|
|
145
|
-
}
|
|
146
|
-
variables.after = undefined;
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
variables.after = getCursorForPage(currentPage);
|
|
150
|
-
}
|
|
151
|
-
const { data, error } = yield apolloClient.query({
|
|
152
|
-
query: GET_CASES_BY_FILTERS,
|
|
153
|
-
variables,
|
|
154
|
-
fetchPolicy: 'network-only',
|
|
155
|
-
context: signal ? { fetchOptions: { signal } } : undefined,
|
|
156
|
-
});
|
|
157
|
-
const connection = (_d = (_c = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.SalesforceSupportCase;
|
|
158
|
-
if (!connection) {
|
|
159
|
-
return {
|
|
160
|
-
caseListResponse: { response: { docs: [], numFound: 0, start: 0 } },
|
|
161
|
-
showErrorMessage: !!error,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
if ((_e = connection.pageInfo) === null || _e === void 0 ? void 0 : _e.endCursor) {
|
|
165
|
-
storeEndCursor(currentPage, connection.pageInfo.endCursor);
|
|
166
|
-
}
|
|
167
|
-
const docs = mapGraphQLResponseToCaseList(connection.edges || []);
|
|
168
|
-
return {
|
|
169
|
-
caseListResponse: {
|
|
170
|
-
response: {
|
|
171
|
-
docs,
|
|
172
|
-
numFound: connection.totalCount || 0,
|
|
173
|
-
start: 0,
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
showErrorMessage: false,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError' || ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.includes('aborted')) || (signal === null || signal === void 0 ? void 0 : signal.aborted)) {
|
|
181
|
-
return {
|
|
182
|
-
caseListResponse: { response: { docs: [], numFound: 0, start: 0 } },
|
|
183
|
-
showErrorMessage: false,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
console.error('[GraphQL] getCaseListFromGraphQL error:', error);
|
|
187
|
-
return {
|
|
188
|
-
caseListResponse: { response: { docs: [], numFound: 0, start: 0 } },
|
|
189
|
-
showErrorMessage: true,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ICaseListItem, IGqlCaseNode } from '@rh-support/utils';
|
|
2
|
-
export declare function mapGraphQLCaseToCaseListItem(node: IGqlCaseNode): ICaseListItem;
|
|
3
|
-
export declare function mapGraphQLResponseToCaseList(edges: Array<{
|
|
4
|
-
node: IGqlCaseNode;
|
|
5
|
-
}>): ICaseListItem[];
|
|
6
|
-
//# sourceMappingURL=caseListMapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caseListMapper.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAgC9E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GAAG,aAAa,EAAE,CAElG"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export function mapGraphQLCaseToCaseListItem(node) {
|
|
2
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
|
|
3
|
-
const isEscalated = ((_a = node.IsEscalated) === null || _a === void 0 ? void 0 : _a.value) === true;
|
|
4
|
-
return {
|
|
5
|
-
id: node.Id || '',
|
|
6
|
-
case_number: ((_b = node.CaseNumber__c) === null || _b === void 0 ? void 0 : _b.value) || '',
|
|
7
|
-
case_summary: ((_c = node.Subject) === null || _c === void 0 ? void 0 : _c.value) || '',
|
|
8
|
-
case_status: ((_d = node.Status) === null || _d === void 0 ? void 0 : _d.value) || '',
|
|
9
|
-
case_severity: ((_e = node.Priority) === null || _e === void 0 ? void 0 : _e.value) || '',
|
|
10
|
-
case_product: ((_h = (_g = (_f = node.Product) === null || _f === void 0 ? void 0 : _f.ParentProduct__r) === null || _g === void 0 ? void 0 : _g.Name) === null || _h === void 0 ? void 0 : _h.value)
|
|
11
|
-
? [node.Product.ParentProduct__r.Name.value]
|
|
12
|
-
: ((_k = (_j = node.Product) === null || _j === void 0 ? void 0 : _j.Name) === null || _k === void 0 ? void 0 : _k.value)
|
|
13
|
-
? [node.Product.Name.value]
|
|
14
|
-
: [],
|
|
15
|
-
case_version: ((_m = (_l = node.Product) === null || _l === void 0 ? void 0 : _l.VersionName__c) === null || _m === void 0 ? void 0 : _m.value) || '',
|
|
16
|
-
case_type: ((_o = node.Type) === null || _o === void 0 ? void 0 : _o.value) || '',
|
|
17
|
-
case_accountNumber: ((_p = node.Account_Number__c) === null || _p === void 0 ? void 0 : _p.value) || '',
|
|
18
|
-
case_contactName: ((_r = (_q = node.Owner) === null || _q === void 0 ? void 0 : _q.Name) === null || _r === void 0 ? void 0 : _r.value) || '',
|
|
19
|
-
case_owner: ((_t = (_s = node.Owner) === null || _s === void 0 ? void 0 : _s.Name) === null || _t === void 0 ? void 0 : _t.value) || '',
|
|
20
|
-
case_createdByName: ((_v = (_u = node.CreatedBy) === null || _u === void 0 ? void 0 : _u.Name) === null || _v === void 0 ? void 0 : _v.value) || '',
|
|
21
|
-
case_createdDate: ((_w = node.CreatedDate) === null || _w === void 0 ? void 0 : _w.value) || '',
|
|
22
|
-
case_lastModifiedByName: ((_y = (_x = node.LastModifiedBy) === null || _x === void 0 ? void 0 : _x.Name) === null || _y === void 0 ? void 0 : _y.value) || '',
|
|
23
|
-
case_lastModifiedDate: ((_z = node.LastModifiedDate) === null || _z === void 0 ? void 0 : _z.value) || '',
|
|
24
|
-
case_last_public_update_by: ((_1 = (_0 = node.LastModifiedBy) === null || _0 === void 0 ? void 0 : _0.Name) === null || _1 === void 0 ? void 0 : _1.value) || '',
|
|
25
|
-
case_last_public_update_date: ((_2 = node.LastModifiedDate) === null || _2 === void 0 ? void 0 : _2.value) || '',
|
|
26
|
-
case_customer_escalation: isEscalated,
|
|
27
|
-
case_closedDate: ((_3 = node.ClosedDate) === null || _3 === void 0 ? void 0 : _3.value) || '',
|
|
28
|
-
case_folderName: '',
|
|
29
|
-
case_folderNumber: '',
|
|
30
|
-
case_alternate_id: '',
|
|
31
|
-
uri: '',
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export function mapGraphQLResponseToCaseList(edges) {
|
|
35
|
-
return edges.map((edge) => mapGraphQLCaseToCaseListItem(edge.node));
|
|
36
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ICaseListFilterState } from '../components/case-list/CaseListFilterReducer';
|
|
2
|
-
export declare function getOwnerFederationIdsToResolve(filterState: ICaseListFilterState): string[];
|
|
3
|
-
export interface IGraphQLCaseListVariables {
|
|
4
|
-
after?: string;
|
|
5
|
-
first: number;
|
|
6
|
-
where?: Record<string, unknown>;
|
|
7
|
-
orderBy?: Record<string, unknown>;
|
|
8
|
-
}
|
|
9
|
-
export interface IResolvedUserIds {
|
|
10
|
-
ownerUserIds?: string[];
|
|
11
|
-
}
|
|
12
|
-
export declare function createGraphQLVariablesFromFilterState(filterState: ICaseListFilterState, resolvedUserIds?: IResolvedUserIds): IGraphQLCaseListVariables;
|
|
13
|
-
//# sourceMappingURL=caseListVariablesBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caseListVariablesBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListVariablesBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAkB,MAAM,+CAA+C,CAAC;AAKrG,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAQ1F;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAkFD,wBAAgB,qCAAqC,CACjD,WAAW,EAAE,oBAAoB,EACjC,eAAe,CAAC,EAAE,gBAAgB,GACnC,yBAAyB,CAkF3B"}
|