Skip to content

Commit 5838bf5

Browse files
149 - Moves and renames Subscriptions page to the lib (#243)
* 91 - Moves and renames Subscriptions page to the lib with the new name WFOSubscriptionsList page * 91 - Renames Subscriptions component into WFOSubscriptionsList
1 parent 0b6d725 commit 5838bf5

File tree

10 files changed

+156
-145
lines changed

10 files changed

+156
-145
lines changed

apps/wfo-ui/constants.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,3 @@ export const ENGINE_STATUS_ENDPOINT = `${ORCHESTRATOR_API_BASE_URL}/settings/sta
1212
export const PROCESS_STATUS_COUNTS_ENDPOINT = `${ORCHESTRATOR_API_BASE_URL}/processes/status-counts`;
1313
export const SUBSCRIPTION_ACTIONS_ENDPOINT = `${ORCHESTRATOR_API_BASE_URL}/subscriptions/workflows`;
1414
export const SUBSCRIPTION_PROCESSES_ENDPOINT = `${ORCHESTRATOR_API_BASE_URL}/processes/process-subscriptions-by-subscription-id`;
15-
16-
export const SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY = 'subscriptionsTable';
17-
export const METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY = 'metadataProductTable';
Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,6 @@
11
import React from 'react';
2-
import { useRouter } from 'next/router';
3-
import { StringParam, useQueryParam, withDefault } from 'use-query-params';
4-
import {
5-
DEFAULT_PAGE_SIZE,
6-
getSortDirectionFromString,
7-
getSubscriptionsTabTypeFromString,
8-
getTableConfigFromLocalStorage,
9-
SortOrder,
10-
WFOFilterTabs,
11-
useDataDisplayParams,
12-
defaultSubscriptionsTabs,
13-
SubscriptionListItem,
14-
WFOSubscriptionsTabType,
15-
} from '@orchestrator-ui/orchestrator-ui-components';
16-
import { EuiPageHeader, EuiSpacer } from '@elastic/eui';
17-
import { Subscriptions } from '../../components/Subscriptions/Subscriptions';
18-
import NoSSR from 'react-no-ssr';
19-
import { SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY } from '../../constants';
2+
import { WFOSubscriptionsListPage } from '@orchestrator-ui/orchestrator-ui-components';
203

214
export default function SubscriptionsPage() {
22-
const router = useRouter();
23-
24-
const initialPageSize =
25-
getTableConfigFromLocalStorage(SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY)
26-
?.selectedPageSize ?? DEFAULT_PAGE_SIZE;
27-
const { dataDisplayParams, setDataDisplayParam } =
28-
useDataDisplayParams<SubscriptionListItem>({
29-
pageSize: initialPageSize,
30-
sortBy: {
31-
field: 'startDate',
32-
order: SortOrder.DESC,
33-
},
34-
});
35-
36-
const [activeTab, setActiveTab] = useQueryParam(
37-
'activeTab',
38-
withDefault(StringParam, WFOSubscriptionsTabType.ACTIVE),
39-
);
40-
41-
const sortOrder = getSortDirectionFromString(
42-
dataDisplayParams.sortBy?.order,
43-
);
44-
const selectedSubscriptionsTab =
45-
getSubscriptionsTabTypeFromString(activeTab);
46-
if (!sortOrder || !selectedSubscriptionsTab) {
47-
router.replace('/subscriptions');
48-
return null;
49-
}
50-
51-
const handleChangeSubscriptionsTab = (
52-
updatedSubscriptionsTab: WFOSubscriptionsTabType,
53-
) => {
54-
setActiveTab(updatedSubscriptionsTab);
55-
setDataDisplayParam('pageIndex', 0);
56-
};
57-
58-
const alwaysOnFilters = defaultSubscriptionsTabs.find(
59-
({ id }) => id === selectedSubscriptionsTab,
60-
)?.alwaysOnFilters;
61-
62-
return (
63-
<NoSSR>
64-
<EuiSpacer />
65-
66-
<EuiPageHeader pageTitle="Subscriptions" />
67-
<EuiSpacer size="m" />
68-
69-
<WFOFilterTabs
70-
tabs={defaultSubscriptionsTabs}
71-
selectedTab={selectedSubscriptionsTab}
72-
translationNamespace="subscriptions.tabs"
73-
onChangeTab={handleChangeSubscriptionsTab}
74-
/>
75-
<EuiSpacer size="xxl" />
76-
77-
<Subscriptions
78-
dataDisplayParams={dataDisplayParams}
79-
setDataDisplayParam={setDataDisplayParam}
80-
alwaysOnFilters={alwaysOnFilters}
81-
/>
82-
</NoSSR>
83-
);
5+
return <WFOSubscriptionsListPage />;
846
}

apps/wfo-ui/components/Subscriptions/Subscriptions.tsx renamed to packages/orchestrator-ui-components/src/components/WFOSubscriptionsList/WFOSubscriptionsList.tsx

Lines changed: 28 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,47 @@
11
import React from 'react';
2+
import { FC } from 'react';
3+
import { useRouter } from 'next/router';
4+
import Link from 'next/link';
5+
import { EuiFlexItem, Pagination } from '@elastic/eui';
6+
import { useTranslations } from 'next-intl';
27
import {
3-
WFOCheckmarkCircleFill,
4-
DataDisplayParams,
5-
WFODataSorting,
68
DEFAULT_PAGE_SIZES,
7-
FilterQuery,
89
getDataSortHandler,
910
getEsQueryStringHandler,
10-
getFirstUuidPart,
1111
getPageChangeHandler,
12-
getTypedFieldFromObject,
13-
WFOLoading,
14-
WFOMinusCircleOutline,
15-
parseDate,
16-
parseDateToLocaleString,
17-
WFOPlusCircleFill,
18-
SortOrder,
19-
SubscriptionListItem,
12+
SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY,
2013
TableColumnKeys,
14+
WFODataSorting,
2115
WFOTableColumns,
2216
WFOTableControlColumnConfig,
2317
WFOTableWithFilter,
24-
useOrchestratorTheme,
25-
useQueryWithGraphql,
26-
WFOSubscriptionStatusBadge,
27-
SubscriptionsResult,
28-
} from '@orchestrator-ui/orchestrator-ui-components';
29-
import { FC } from 'react';
30-
import { useRouter } from 'next/router';
31-
import Link from 'next/link';
32-
import { EuiFlexItem, Pagination } from '@elastic/eui';
33-
import { useTranslations } from 'next-intl';
34-
import { SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY } from '../../constants';
35-
import { getSubscriptionsListGraphQlQuery } from '@orchestrator-ui/orchestrator-ui-components/src';
18+
} from '../WFOTable';
19+
import { SubscriptionListItem } from './types';
20+
import { FilterQuery } from '../WFOFilterTabs';
21+
import { DataDisplayParams } from '../../hooks/useDataDisplayParams';
22+
import { useOrchestratorTheme } from '../../hooks/useOrchestratorTheme';
23+
import { getFirstUuidPart } from '../../utils/uuid';
24+
import { WFOSubscriptionStatusBadge } from '../WFOBadges/WFOSubscriptionStatusBadge';
25+
import {
26+
WFOCheckmarkCircleFill,
27+
WFOMinusCircleOutline,
28+
WFOPlusCircleFill,
29+
} from '../../icons';
30+
import { parseDateToLocaleString } from '../../utils/date';
31+
import { useQueryWithGraphql } from '../../hooks/useQueryWithGraphql';
32+
import { getSubscriptionsListGraphQlQuery } from '../../graphqlQueries/subscriptionsListQuery';
33+
import { getTypedFieldFromObject } from '../../utils/getTypedFieldFromObject';
34+
import { WFOLoading } from '../WFOLoading';
35+
import { SortOrder } from '../../types';
36+
import { mapGrapghQlSubscriptionsResultToSubscriptionListItems } from './mapGrapghQlSubscriptionsResultToSubscriptionListItems';
3637

3738
const FIELD_NAME_INLINE_SUBSCRIPTION_DETAILS = 'inlineSubscriptionDetails';
3839

3940
const defaultHiddenColumns: TableColumnKeys<SubscriptionListItem> = [
4041
'productName',
4142
];
4243

43-
export type SubscriptionsProps = {
44+
export type WFOSubscriptionsListProps = {
4445
alwaysOnFilters?: FilterQuery<SubscriptionListItem>[];
4546
dataDisplayParams: DataDisplayParams<SubscriptionListItem>;
4647
setDataDisplayParam: <
@@ -51,7 +52,7 @@ export type SubscriptionsProps = {
5152
) => void;
5253
};
5354

54-
export const Subscriptions: FC<SubscriptionsProps> = ({
55+
export const WFOSubscriptionsList: FC<WFOSubscriptionsListProps> = ({
5556
alwaysOnFilters,
5657
dataDisplayParams,
5758
setDataDisplayParam,
@@ -196,34 +197,3 @@ export const Subscriptions: FC<SubscriptionsProps> = ({
196197
/>
197198
);
198199
};
199-
200-
function mapGrapghQlSubscriptionsResultToSubscriptionListItems(
201-
graphqlResponse: SubscriptionsResult,
202-
): SubscriptionListItem[] {
203-
return graphqlResponse.subscriptions.page.map((subscription) => {
204-
const {
205-
description,
206-
insync,
207-
product,
208-
startDate,
209-
endDate,
210-
status,
211-
subscriptionId,
212-
note,
213-
} = subscription;
214-
215-
const { name: productName, tag } = product;
216-
217-
return {
218-
description,
219-
insync,
220-
productName,
221-
tag,
222-
startDate: parseDate(startDate),
223-
endDate: parseDate(endDate),
224-
status,
225-
subscriptionId,
226-
note: note ?? null,
227-
};
228-
});
229-
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export * from './mapGrapghQlSubscriptionsResultToSubscriptionListItems';
2+
export * from './subscriptionListTabs';
3+
export * from './WFOSubscriptionsList';
4+
export * from './types';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { SubscriptionsResult } from '../../types';
2+
import { SubscriptionListItem } from './types';
3+
import { parseDate } from '../../utils';
4+
5+
export function mapGrapghQlSubscriptionsResultToSubscriptionListItems(
6+
graphqlResponse: SubscriptionsResult,
7+
): SubscriptionListItem[] {
8+
return graphqlResponse.subscriptions.page.map((subscription) => {
9+
const {
10+
description,
11+
insync,
12+
product,
13+
startDate,
14+
endDate,
15+
status,
16+
subscriptionId,
17+
note,
18+
} = subscription;
19+
20+
const { name: productName, tag } = product;
21+
22+
return {
23+
description,
24+
insync,
25+
productName,
26+
tag,
27+
startDate: parseDate(startDate),
28+
endDate: parseDate(endDate),
29+
status,
30+
subscriptionId,
31+
note: note ?? null,
32+
};
33+
});
34+
}

packages/orchestrator-ui-components/src/pages/subscriptions/types.ts renamed to packages/orchestrator-ui-components/src/components/WFOSubscriptionsList/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// Todo: preparation for moving the Subscriptions component (table) to the lib
2-
// https://github.com/workfloworchestrator/orchestrator-ui/issues/149
31
export type SubscriptionListItem = {
42
subscriptionId: string;
53
description: string;

packages/orchestrator-ui-components/src/components/WFOTable/utils/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ export const METADATA_PRODUCTBLOCKS_TABLE_LOCAL_STORAGE_KEY =
1313
export const METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY = 'metadataProductTable';
1414
export const METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY =
1515
'metadataWorkflowsTable';
16+
17+
export const SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY = 'subscriptionsTable';
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import React from 'react';
2+
import { useRouter } from 'next/router';
3+
import { StringParam, useQueryParam, withDefault } from 'use-query-params';
4+
import { EuiPageHeader, EuiSpacer } from '@elastic/eui';
5+
import { useDataDisplayParams } from '../../hooks';
6+
import {
7+
defaultSubscriptionsTabs,
8+
getSubscriptionsTabTypeFromString,
9+
SubscriptionListItem,
10+
WFOSubscriptionsList,
11+
WFOSubscriptionsTabType,
12+
} from '../../components/WFOSubscriptionsList';
13+
import { SortOrder } from '../../types';
14+
import {
15+
DEFAULT_PAGE_SIZE,
16+
getSortDirectionFromString,
17+
getTableConfigFromLocalStorage,
18+
SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY,
19+
} from '../../components/WFOTable';
20+
import { WFOFilterTabs } from '../../components';
21+
22+
export const WFOSubscriptionsListPage = () => {
23+
const router = useRouter();
24+
25+
const initialPageSize =
26+
getTableConfigFromLocalStorage(SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY)
27+
?.selectedPageSize ?? DEFAULT_PAGE_SIZE;
28+
const { dataDisplayParams, setDataDisplayParam } =
29+
useDataDisplayParams<SubscriptionListItem>({
30+
pageSize: initialPageSize,
31+
sortBy: {
32+
field: 'startDate',
33+
order: SortOrder.DESC,
34+
},
35+
});
36+
37+
const [activeTab, setActiveTab] = useQueryParam(
38+
'activeTab',
39+
withDefault(StringParam, WFOSubscriptionsTabType.ACTIVE),
40+
);
41+
42+
const sortOrder = getSortDirectionFromString(
43+
dataDisplayParams.sortBy?.order,
44+
);
45+
const selectedSubscriptionsTab =
46+
getSubscriptionsTabTypeFromString(activeTab);
47+
if (!sortOrder || !selectedSubscriptionsTab) {
48+
router.replace('/subscriptions');
49+
return null;
50+
}
51+
52+
const handleChangeSubscriptionsTab = (
53+
updatedSubscriptionsTab: WFOSubscriptionsTabType,
54+
) => {
55+
setActiveTab(updatedSubscriptionsTab);
56+
setDataDisplayParam('pageIndex', 0);
57+
};
58+
59+
const alwaysOnFilters = defaultSubscriptionsTabs.find(
60+
({ id }) => id === selectedSubscriptionsTab,
61+
)?.alwaysOnFilters;
62+
63+
return (
64+
<>
65+
<EuiSpacer />
66+
67+
<EuiPageHeader pageTitle="Subscriptions" />
68+
<EuiSpacer size="m" />
69+
70+
<WFOFilterTabs
71+
tabs={defaultSubscriptionsTabs}
72+
selectedTab={selectedSubscriptionsTab}
73+
translationNamespace="subscriptions.tabs"
74+
onChangeTab={handleChangeSubscriptionsTab}
75+
/>
76+
<EuiSpacer size="xxl" />
77+
78+
<WFOSubscriptionsList
79+
dataDisplayParams={dataDisplayParams}
80+
setDataDisplayParam={setDataDisplayParam}
81+
alwaysOnFilters={alwaysOnFilters}
82+
/>
83+
</>
84+
);
85+
};
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
export * from './subscriptionListTabs';
2-
export * from './types';
1+
export * from './WFOSubscriptionsListPage';

0 commit comments

Comments
 (0)