@orchestrator-ui/orchestrator-ui-components 0.5.0 → 0.5.2
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/.turbo/turbo-build.log +4 -4
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +8 -8
- package/CHANGELOG.md +15 -0
- package/dist/index.d.ts +39 -18
- package/dist/index.js +506 -471
- package/package.json +1 -1
- package/src/components/WfoDateTime/WfoDateTime.tsx +2 -9
- package/src/components/WfoErrorBoundary/WfoErrorBoundary.tsx +45 -0
- package/src/components/WfoErrorBoundary/index.ts +1 -0
- package/src/components/WfoForms/AutoFieldLoader.tsx +3 -3
- package/src/components/WfoForms/UserInputForm.tsx +5 -5
- package/src/components/WfoForms/formFields/ContactPersonNameField.tsx +21 -23
- package/src/components/WfoForms/formFields/{OrganisationField.tsx → CustomerField.tsx} +5 -5
- package/src/components/WfoForms/formFields/SubscriptionField.tsx +15 -15
- package/src/components/WfoForms/formFields/SummaryField.tsx +1 -2
- package/src/components/WfoForms/formFields/index.ts +1 -1
- package/src/components/WfoProcessList/WfoProcessesList.tsx +7 -3
- package/src/components/WfoSubscription/WfoSubscriptionGeneral.tsx +8 -6
- package/src/components/WfoSubscription/subscriptionDetailTabs.tsx +6 -6
- package/src/components/WfoSubscriptionsList/WfoSubscriptionsList.tsx +2 -2
- package/src/components/WfoTable/WfoBasicTable/WfoBasicTable.tsx +5 -0
- package/src/components/index.ts +1 -0
- package/src/graphqlQueries/subscriptionsListQuery.ts +4 -1
- package/src/messages/en-GB.json +5 -3
- package/src/messages/nl-NL.json +5 -3
- package/src/pages/metadata/WfoProductBlocksPage.tsx +2 -2
- package/src/pages/metadata/WfoProductsPage.tsx +2 -2
- package/src/pages/metadata/WfoResourceTypesPage.tsx +2 -2
- package/src/pages/metadata/WfoWorkflowsPage.tsx +2 -2
- package/src/pages/startPage/WfoStartPage.tsx +6 -6
- package/src/pages/tasks/WfoTasksListPage.tsx +28 -13
- package/src/rtk/endpoints/customers.ts +2 -2
- package/src/rtk/storeProvider.tsx +4 -8
- package/src/utils/date.ts +8 -0
- package/src/components/WfoPageHeader/WfoPageHeader.tsx +0 -25
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React, { FC } from 'react';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
getDate,
|
|
4
5
|
parseDateOrTimeRelativeToToday,
|
|
5
6
|
parseDateToLocaleDateTimeString,
|
|
6
|
-
} from '
|
|
7
|
+
} from '@/utils';
|
|
7
8
|
|
|
8
9
|
export type WfoDateTimeProps = {
|
|
9
10
|
dateOrIsoString: Date | string | null;
|
|
@@ -18,11 +19,3 @@ export const WfoDateTime: FC<WfoDateTimeProps> = ({ dateOrIsoString }) => {
|
|
|
18
19
|
</span>
|
|
19
20
|
);
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
-
function getDate(date: Date | string | null) {
|
|
23
|
-
if (typeof date === 'string') {
|
|
24
|
-
return new Date(date);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return date;
|
|
28
|
-
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
type ErrorBoundaryProps = {
|
|
4
|
+
fallback?: ReactNode;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
type ErrorBoundaryState = {
|
|
9
|
+
hasError: boolean;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export class WfoErrorBoundary extends React.Component<
|
|
13
|
+
ErrorBoundaryProps,
|
|
14
|
+
ErrorBoundaryState
|
|
15
|
+
> {
|
|
16
|
+
constructor(props: ErrorBoundaryProps) {
|
|
17
|
+
super(props);
|
|
18
|
+
this.state = { hasError: false };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static getDerivedStateFromError() {
|
|
22
|
+
return { hasError: true };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
componentDidCatch(error: Error, info: ErrorInfo) {
|
|
26
|
+
console.error(error, info.componentStack);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
render() {
|
|
30
|
+
if (this.state.hasError) {
|
|
31
|
+
if (this.props.fallback) {
|
|
32
|
+
return this.props.fallback;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<p>
|
|
37
|
+
An unexpected error occurred, try to go back to the{' '}
|
|
38
|
+
<a href="/">home page</a>
|
|
39
|
+
</p>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return this.props.children;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './WfoErrorBoundary';
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
AcceptField,
|
|
6
6
|
BoolField,
|
|
7
7
|
ContactPersonNameField,
|
|
8
|
+
CustomerField,
|
|
8
9
|
DateField,
|
|
9
10
|
DividerField,
|
|
10
11
|
ImsNodeIdField,
|
|
@@ -17,7 +18,6 @@ import {
|
|
|
17
18
|
NestField,
|
|
18
19
|
NumField,
|
|
19
20
|
OptGroupField,
|
|
20
|
-
OrganisationField,
|
|
21
21
|
ProductField,
|
|
22
22
|
RadioField,
|
|
23
23
|
SelectField,
|
|
@@ -74,8 +74,8 @@ export function autoFieldFunction(
|
|
|
74
74
|
return SummaryField;
|
|
75
75
|
case 'subscription':
|
|
76
76
|
return SubscriptionSummaryField;
|
|
77
|
-
case '
|
|
78
|
-
return
|
|
77
|
+
case 'customerId':
|
|
78
|
+
return CustomerField;
|
|
79
79
|
case 'locationCode':
|
|
80
80
|
return LocationCodeField;
|
|
81
81
|
case 'contactPersonName': // Surf specific
|
|
@@ -361,14 +361,14 @@ function fillPreselection(form: JSONSchema6, router: NextRouter) {
|
|
|
361
361
|
if (form && form.properties) {
|
|
362
362
|
Object.keys(queryParams).forEach((param) => {
|
|
363
363
|
if (form && form.properties && form.properties[param]) {
|
|
364
|
-
const
|
|
364
|
+
const customerInput = form.properties[
|
|
365
365
|
param
|
|
366
366
|
] as UniformJSONSchemaProperty;
|
|
367
|
-
if (!
|
|
368
|
-
|
|
367
|
+
if (!customerInput.uniforms) {
|
|
368
|
+
customerInput.uniforms = {};
|
|
369
369
|
}
|
|
370
|
-
|
|
371
|
-
|
|
370
|
+
customerInput.uniforms.disabled = true;
|
|
371
|
+
customerInput.default = queryParams[param];
|
|
372
372
|
}
|
|
373
373
|
});
|
|
374
374
|
|
|
@@ -40,16 +40,19 @@ export function stop(e: React.SyntheticEvent) {
|
|
|
40
40
|
|
|
41
41
|
export type ContactPersonNameFieldProps = FieldProps<
|
|
42
42
|
string,
|
|
43
|
-
{
|
|
43
|
+
{
|
|
44
|
+
customerId?: string;
|
|
45
|
+
customerKey?: string;
|
|
46
|
+
}
|
|
44
47
|
>;
|
|
45
48
|
|
|
46
49
|
declare module 'uniforms' {
|
|
47
50
|
interface FilterDOMProps {
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
customerId: never;
|
|
52
|
+
customerKey: never;
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
|
-
filterDOMProps.register('
|
|
55
|
+
filterDOMProps.register('customerId', 'customerKey');
|
|
53
56
|
|
|
54
57
|
function ContactPersonName({
|
|
55
58
|
disabled,
|
|
@@ -65,8 +68,8 @@ function ContactPersonName({
|
|
|
65
68
|
error,
|
|
66
69
|
showInlineError,
|
|
67
70
|
errorMessage,
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
customerId,
|
|
72
|
+
customerKey,
|
|
70
73
|
...props
|
|
71
74
|
}: ContactPersonNameFieldProps) {
|
|
72
75
|
const axiosApiClient = useAxiosApiClient();
|
|
@@ -86,26 +89,21 @@ function ContactPersonName({
|
|
|
86
89
|
: name;
|
|
87
90
|
const contactsField = useField(useFieldName, {}, { absoluteName: true })[0];
|
|
88
91
|
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
contactsField.field.organisationKey ||
|
|
92
|
-
'organisation';
|
|
92
|
+
const customerIdFieldName =
|
|
93
|
+
customerKey || contactsField.field.customerKey || 'customer_id';
|
|
93
94
|
|
|
94
95
|
// Get initial value for org field if it exists (we cant really test)
|
|
95
|
-
let
|
|
96
|
+
let customerInitialValue;
|
|
96
97
|
try {
|
|
97
|
-
|
|
98
|
-
organisationFieldName,
|
|
99
|
-
{},
|
|
100
|
-
);
|
|
98
|
+
customerInitialValue = schema.getInitialValue(customerIdFieldName, {});
|
|
101
99
|
} catch {
|
|
102
|
-
|
|
100
|
+
customerInitialValue = '';
|
|
103
101
|
}
|
|
104
102
|
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
contactsField.field.
|
|
108
|
-
get(model,
|
|
103
|
+
const customerIdValue =
|
|
104
|
+
customerId ||
|
|
105
|
+
contactsField.field.customerId ||
|
|
106
|
+
get(model, customerIdFieldName, customerInitialValue);
|
|
109
107
|
|
|
110
108
|
const [displayAutocomplete, setDisplayAutocomplete] = useState(false);
|
|
111
109
|
const [contactPersons, setContactPersons] = useState<ContactPerson[]>([]);
|
|
@@ -126,10 +124,10 @@ function ContactPersonName({
|
|
|
126
124
|
: [];
|
|
127
125
|
|
|
128
126
|
useEffect(() => {
|
|
129
|
-
if (
|
|
127
|
+
if (customerIdValue) {
|
|
130
128
|
axiosApiClient
|
|
131
129
|
.axiosFetch<ContactPerson[]>(
|
|
132
|
-
`/surf/crm/contacts/${
|
|
130
|
+
`/surf/crm/contacts/${customerIdValue}`,
|
|
133
131
|
{},
|
|
134
132
|
{},
|
|
135
133
|
false,
|
|
@@ -143,7 +141,7 @@ function ContactPersonName({
|
|
|
143
141
|
setContactPersons([]);
|
|
144
142
|
});
|
|
145
143
|
}
|
|
146
|
-
}, [
|
|
144
|
+
}, [customerIdValue, axiosApiClient]);
|
|
147
145
|
|
|
148
146
|
useEffect(() => {
|
|
149
147
|
// Set focus to the last name component to be created
|
|
@@ -21,12 +21,12 @@ import { useGetCustomersQuery } from '@/rtk/endpoints';
|
|
|
21
21
|
|
|
22
22
|
import { SelectField, SelectFieldProps } from './SelectField';
|
|
23
23
|
|
|
24
|
-
export type
|
|
24
|
+
export type CustomerFieldProps = Omit<
|
|
25
25
|
SelectFieldProps,
|
|
26
26
|
'placeholder' | 'transform' | 'allowedValues'
|
|
27
27
|
>;
|
|
28
28
|
|
|
29
|
-
function
|
|
29
|
+
function Customer({ ...props }: CustomerFieldProps) {
|
|
30
30
|
const t = useTranslations('pydanticForms');
|
|
31
31
|
|
|
32
32
|
const { data: customers, isLoading } = useGetCustomersQuery();
|
|
@@ -47,11 +47,11 @@ function Organisation({ ...props }: OrganisationFieldProps) {
|
|
|
47
47
|
disabled={isLoading}
|
|
48
48
|
placeholder={
|
|
49
49
|
!isLoading
|
|
50
|
-
? t('widgets.
|
|
51
|
-
: t('widgets.
|
|
50
|
+
? t('widgets.customer.placeholder')
|
|
51
|
+
: t('widgets.customer.loading')
|
|
52
52
|
}
|
|
53
53
|
/>
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export const
|
|
57
|
+
export const CustomerField = connectField(Customer, { kind: 'leaf' });
|
|
@@ -45,8 +45,8 @@ import { getPortMode } from './utils';
|
|
|
45
45
|
declare module 'uniforms' {
|
|
46
46
|
interface FilterDOMProps {
|
|
47
47
|
excludedSubscriptionIds: never;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
customerId: never;
|
|
49
|
+
customerKey: never;
|
|
50
50
|
visiblePortMode: never;
|
|
51
51
|
bandwidth: never;
|
|
52
52
|
bandwidthKey: never;
|
|
@@ -57,8 +57,8 @@ declare module 'uniforms' {
|
|
|
57
57
|
filterDOMProps.register(
|
|
58
58
|
'productIds',
|
|
59
59
|
'excludedSubscriptionIds',
|
|
60
|
-
'
|
|
61
|
-
'
|
|
60
|
+
'customerId',
|
|
61
|
+
'customerKey',
|
|
62
62
|
'visiblePortMode',
|
|
63
63
|
'bandwidth',
|
|
64
64
|
'bandwidthKey',
|
|
@@ -71,8 +71,8 @@ export type SubscriptionFieldProps = FieldProps<
|
|
|
71
71
|
{
|
|
72
72
|
productIds?: string[];
|
|
73
73
|
excludedSubscriptionIds?: string[];
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
customerId?: string;
|
|
75
|
+
customerKey?: string;
|
|
76
76
|
visiblePortMode?: string;
|
|
77
77
|
bandwidth?: number;
|
|
78
78
|
bandwidthKey?: string;
|
|
@@ -96,8 +96,8 @@ function SubscriptionFieldDefinition({
|
|
|
96
96
|
className = '',
|
|
97
97
|
productIds = [],
|
|
98
98
|
excludedSubscriptionIds = [],
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
customerId,
|
|
100
|
+
customerKey,
|
|
101
101
|
visiblePortMode = 'all',
|
|
102
102
|
bandwidth,
|
|
103
103
|
bandwidthKey,
|
|
@@ -132,10 +132,10 @@ function SubscriptionFieldDefinition({
|
|
|
132
132
|
|
|
133
133
|
const usedBandwidth = bandwidth || bandWithFromField;
|
|
134
134
|
|
|
135
|
-
// Get value from org field if
|
|
136
|
-
const
|
|
137
|
-
? get(model,
|
|
138
|
-
:
|
|
135
|
+
// Get value from org field if customerKey is set.
|
|
136
|
+
const usedCustomerId = customerKey
|
|
137
|
+
? get(model, customerKey, 'nonExistingOrgToFilterEverything')
|
|
138
|
+
: customerId;
|
|
139
139
|
|
|
140
140
|
const makeLabel = (subscription: SubscriptionDropdownOption) => {
|
|
141
141
|
const description =
|
|
@@ -243,10 +243,10 @@ function SubscriptionFieldDefinition({
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
// If a customer
|
|
246
|
+
// If a customer filter is applied we need to filter on that
|
|
247
247
|
if (
|
|
248
|
-
|
|
249
|
-
subscription.customer?.customerId !==
|
|
248
|
+
usedCustomerId &&
|
|
249
|
+
subscription.customer?.customerId !== usedCustomerId
|
|
250
250
|
) {
|
|
251
251
|
return false;
|
|
252
252
|
}
|
|
@@ -46,12 +46,11 @@ function Summary({
|
|
|
46
46
|
const { headers, labels, columns } = data;
|
|
47
47
|
|
|
48
48
|
const extraColumnsData = columns.filter((_, index) => index !== 0);
|
|
49
|
-
|
|
50
49
|
const rows = columns[0].map((row, index) => (
|
|
51
50
|
<tr key={index}>
|
|
52
51
|
{labels && <td className={`label`}>{labels[index]}</td>}
|
|
53
52
|
<td className={`value`}>
|
|
54
|
-
{row.includes('<!doctype html>') ? (
|
|
53
|
+
{typeof row === 'string' && row.includes('<!doctype html>') ? (
|
|
55
54
|
<div
|
|
56
55
|
className="emailMessage"
|
|
57
56
|
dangerouslySetInnerHTML={{ __html: row }}
|
|
@@ -18,7 +18,6 @@ export * from './SubscriptionSummaryField';
|
|
|
18
18
|
export * from './TextField';
|
|
19
19
|
export * from './DateField';
|
|
20
20
|
export * from './TimestampField';
|
|
21
|
-
export * from './OrganisationField';
|
|
22
21
|
export * from './ContactPersonNameField';
|
|
23
22
|
export * from './ImsNodeIdField';
|
|
24
23
|
export * from './ImsPortIdField';
|
|
@@ -29,3 +28,4 @@ export * from './OptGroupField';
|
|
|
29
28
|
export * from './SubscriptionField';
|
|
30
29
|
export * from './IpNetworkField';
|
|
31
30
|
export * from './SummaryField';
|
|
31
|
+
export * from './CustomerField';
|
|
@@ -236,9 +236,13 @@ export const WfoProcessesList = ({
|
|
|
236
236
|
return (
|
|
237
237
|
<WfoTableWithFilter<ProcessListItem>
|
|
238
238
|
queryString={queryString}
|
|
239
|
-
data={
|
|
240
|
-
|
|
241
|
-
|
|
239
|
+
data={
|
|
240
|
+
!isFetching
|
|
241
|
+
? mapGraphQlProcessListResultToProcessListItems(
|
|
242
|
+
processes || [],
|
|
243
|
+
)
|
|
244
|
+
: []
|
|
245
|
+
}
|
|
242
246
|
tableColumns={mapSortableAndFilterableValuesToTableColumnConfig(
|
|
243
247
|
tableColumns,
|
|
244
248
|
pageInfo?.sortFields,
|
|
@@ -4,7 +4,9 @@ import { useTranslations } from 'next-intl';
|
|
|
4
4
|
|
|
5
5
|
import { EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
|
|
6
6
|
|
|
7
|
-
import { SubscriptionDetail } from '
|
|
7
|
+
import { SubscriptionDetail } from '@/types';
|
|
8
|
+
import { formatDate } from '@/utils';
|
|
9
|
+
|
|
8
10
|
import {
|
|
9
11
|
WfoProductStatusBadge,
|
|
10
12
|
WfoSubscriptionStatusBadge,
|
|
@@ -33,18 +35,17 @@ export const WfoSubscriptionGeneral = ({
|
|
|
33
35
|
key: t('productName'),
|
|
34
36
|
value: subscriptionDetail.product.name,
|
|
35
37
|
},
|
|
36
|
-
|
|
37
38
|
{
|
|
38
39
|
key: t('description'),
|
|
39
40
|
value: subscriptionDetail.description,
|
|
40
41
|
},
|
|
41
42
|
{
|
|
42
43
|
key: t('startDate'),
|
|
43
|
-
value: subscriptionDetail.startDate,
|
|
44
|
+
value: formatDate(subscriptionDetail.startDate),
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
47
|
key: t('endDate'),
|
|
47
|
-
value: subscriptionDetail.endDate,
|
|
48
|
+
value: formatDate(subscriptionDetail.endDate),
|
|
48
49
|
},
|
|
49
50
|
{
|
|
50
51
|
key: t('status'),
|
|
@@ -71,6 +72,7 @@ export const WfoSubscriptionGeneral = ({
|
|
|
71
72
|
subscriptionDetail && subscriptionDetail.customer
|
|
72
73
|
? `${subscriptionDetail.customer?.customerId}`
|
|
73
74
|
: '-',
|
|
75
|
+
textToCopy: subscriptionDetail.customer?.customerId,
|
|
74
76
|
},
|
|
75
77
|
{
|
|
76
78
|
key: t('note'),
|
|
@@ -111,11 +113,11 @@ export const WfoSubscriptionGeneral = ({
|
|
|
111
113
|
},
|
|
112
114
|
{
|
|
113
115
|
key: t('created'),
|
|
114
|
-
value: product.createdAt,
|
|
116
|
+
value: formatDate(product.createdAt),
|
|
115
117
|
},
|
|
116
118
|
{
|
|
117
119
|
key: t('endDate'),
|
|
118
|
-
value: product.endDate,
|
|
120
|
+
value: formatDate(product.endDate),
|
|
119
121
|
},
|
|
120
122
|
];
|
|
121
123
|
};
|
|
@@ -9,23 +9,23 @@ import { SubscriptionDetailTab } from './utils';
|
|
|
9
9
|
|
|
10
10
|
export const subscriptionDetailTabs: WfoFilterTab<SubscriptionDetailTab>[] = [
|
|
11
11
|
{
|
|
12
|
-
id: SubscriptionDetailTab.
|
|
13
|
-
translationKey: '
|
|
12
|
+
id: SubscriptionDetailTab.SERVICE_CONFIGURATION_TAB,
|
|
13
|
+
translationKey: 'serviceConfiguration',
|
|
14
14
|
prepend: (
|
|
15
15
|
<EuiFlexGroup justifyContent={'center'}>
|
|
16
16
|
<EuiFlexItem>
|
|
17
|
-
<
|
|
17
|
+
<WfoCogFill width="16" height="16" color="currentColor" />
|
|
18
18
|
</EuiFlexItem>
|
|
19
19
|
</EuiFlexGroup>
|
|
20
20
|
),
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
id: SubscriptionDetailTab.
|
|
24
|
-
translationKey: '
|
|
23
|
+
id: SubscriptionDetailTab.GENERAL_TAB,
|
|
24
|
+
translationKey: 'general',
|
|
25
25
|
prepend: (
|
|
26
26
|
<EuiFlexGroup justifyContent={'center'}>
|
|
27
27
|
<EuiFlexItem>
|
|
28
|
-
<
|
|
28
|
+
<WfoCubeSolid width="18" height="18" color="currentColor" />
|
|
29
29
|
</EuiFlexItem>
|
|
30
30
|
</EuiFlexGroup>
|
|
31
31
|
),
|
|
@@ -155,7 +155,7 @@ export const WfoSubscriptionsList: FC<WfoSubscriptionsListProps> = ({
|
|
|
155
155
|
filterBy: alwaysOnFilters,
|
|
156
156
|
query: queryString || undefined,
|
|
157
157
|
};
|
|
158
|
-
const { data, isError,
|
|
158
|
+
const { data, isError, isFetching } = useQueryWithGraphql(
|
|
159
159
|
getSubscriptionsListGraphQlQuery<SubscriptionListItem>(),
|
|
160
160
|
graphqlQueryVariables,
|
|
161
161
|
['subscriptions', 'listPage'],
|
|
@@ -205,7 +205,7 @@ export const WfoSubscriptionsList: FC<WfoSubscriptionsListProps> = ({
|
|
|
205
205
|
defaultHiddenColumns={hiddenColumns}
|
|
206
206
|
dataSorting={dataSorting}
|
|
207
207
|
pagination={pagination}
|
|
208
|
-
isLoading={
|
|
208
|
+
isLoading={isFetching}
|
|
209
209
|
localStorageKey={SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY}
|
|
210
210
|
detailModalTitle={'Details - Subscription'}
|
|
211
211
|
onUpdatePage={getPageChangeHandler<SubscriptionListItem>(
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
+
import { useTranslations } from 'next-intl';
|
|
4
|
+
|
|
3
5
|
import { EuiBasicTable, EuiBasicTableColumn, Pagination } from '@elastic/eui';
|
|
4
6
|
import { Criteria } from '@elastic/eui/src/components/basic_table/basic_table';
|
|
5
7
|
import { SerializedStyles } from '@emotion/react';
|
|
@@ -68,6 +70,8 @@ export const WfoBasicTable = <T extends object>({
|
|
|
68
70
|
const { theme } = useOrchestratorTheme();
|
|
69
71
|
const { basicTableStyle } = getWfoBasicTableStyles(theme);
|
|
70
72
|
|
|
73
|
+
const t = useTranslations('common');
|
|
74
|
+
|
|
71
75
|
const statusColorColumn: WfoTableControlColumnConfig<T> = {
|
|
72
76
|
statusColorField: {
|
|
73
77
|
field: WFO_STATUS_COLOR_FIELD,
|
|
@@ -94,6 +98,7 @@ export const WfoBasicTable = <T extends object>({
|
|
|
94
98
|
<EuiBasicTable
|
|
95
99
|
css={tableStyling}
|
|
96
100
|
items={data}
|
|
101
|
+
noItemsMessage={isLoading ? t('loading') : t('noItemsFound')}
|
|
97
102
|
columns={mapWfoTableColumnsToEuiColumns(
|
|
98
103
|
allTableColumns,
|
|
99
104
|
hiddenColumns,
|
package/src/components/index.ts
CHANGED
|
@@ -71,6 +71,7 @@ export const GET_SUBSCRIPTIONS_LIST_SUMMARY_GRAPHQL_QUERY = parse(gql`
|
|
|
71
71
|
query: $query
|
|
72
72
|
) {
|
|
73
73
|
page {
|
|
74
|
+
startDate
|
|
74
75
|
description
|
|
75
76
|
subscriptionId
|
|
76
77
|
}
|
|
@@ -93,6 +94,8 @@ export const getSubscriptionsListGraphQlQuery = <
|
|
|
93
94
|
export const getSubscriptionsListSummaryGraphQlQuery = <
|
|
94
95
|
QueryVariablesType = Subscription,
|
|
95
96
|
>(): TypedDocumentNode<
|
|
96
|
-
SubscriptionsResult<
|
|
97
|
+
SubscriptionsResult<
|
|
98
|
+
Pick<Subscription, 'subscriptionId' | 'description' | 'startDate'>
|
|
99
|
+
>,
|
|
97
100
|
GraphqlQueryVariables<QueryVariablesType>
|
|
98
101
|
> => GET_SUBSCRIPTIONS_LIST_SUMMARY_GRAPHQL_QUERY;
|
package/src/messages/en-GB.json
CHANGED
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
"deselect": "Deselect",
|
|
20
20
|
"close": "Close",
|
|
21
21
|
"editColumns": "Edit columns",
|
|
22
|
+
"loading": "Loading",
|
|
22
23
|
"newSubscription": "New subscription",
|
|
23
24
|
"newTask": "New task",
|
|
24
25
|
"noFailedTasks": "No failed tasks!",
|
|
26
|
+
"noItemsFound": "No items found",
|
|
25
27
|
"search": "Search",
|
|
26
28
|
"errorMessage": "An error occurred",
|
|
27
29
|
"export": "Export"
|
|
@@ -60,9 +62,9 @@
|
|
|
60
62
|
"inputFieldsHaveValidationErrors": "{nrOfValidationErrors} input field(s) have validation errors"
|
|
61
63
|
},
|
|
62
64
|
"widgets": {
|
|
63
|
-
"
|
|
64
|
-
"placeholder": "
|
|
65
|
-
"loading": "Loading
|
|
65
|
+
"customer": {
|
|
66
|
+
"placeholder": "Customer placeholder",
|
|
67
|
+
"loading": "Loading customers..."
|
|
66
68
|
},
|
|
67
69
|
"contactPersonName": {
|
|
68
70
|
"placeholder": "Name placeholder"
|
package/src/messages/nl-NL.json
CHANGED
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
"deselect": "Deselecteer",
|
|
20
20
|
"close": "Sluiten",
|
|
21
21
|
"editColumns": "Wijzig kolommen",
|
|
22
|
+
"loading": "Laden",
|
|
22
23
|
"newSubscription": "Nieuwe subscription",
|
|
23
24
|
"newTask": "Nieuwe task",
|
|
24
25
|
"noFailedTasks": "Geen gefaalde taken!",
|
|
26
|
+
"noItemsFound": "Geen items gevonden",
|
|
25
27
|
"search": "Zoeken",
|
|
26
28
|
"errorMessage": "Er is een fout opgetreden",
|
|
27
29
|
"export": "Exporteren"
|
|
@@ -60,9 +62,9 @@
|
|
|
60
62
|
"inputFieldsHaveValidationErrors": "{nrOfValidationErrors} input veldn(en) hebben validatie errors"
|
|
61
63
|
},
|
|
62
64
|
"widgets": {
|
|
63
|
-
"
|
|
64
|
-
"placeholder": "
|
|
65
|
-
"loading": "
|
|
65
|
+
"customer": {
|
|
66
|
+
"placeholder": "Klant placeholder",
|
|
67
|
+
"loading": "Klanten laden..."
|
|
66
68
|
},
|
|
67
69
|
"contactPersonName": {
|
|
68
70
|
"placeholder": "Naam placeholder"
|
|
@@ -201,7 +201,7 @@ export const WfoProductBlocksPage = () => {
|
|
|
201
201
|
sortBy: sortBy,
|
|
202
202
|
query: queryString || undefined,
|
|
203
203
|
};
|
|
204
|
-
const { data,
|
|
204
|
+
const { data, isFetching, isError } = useQueryWithGraphql(
|
|
205
205
|
GET_PRODUCTS_BLOCKS_GRAPHQL_QUERY,
|
|
206
206
|
graphqlQueryVariables,
|
|
207
207
|
['productBlocks', 'listPage'],
|
|
@@ -249,7 +249,7 @@ export const WfoProductBlocksPage = () => {
|
|
|
249
249
|
setDataDisplayParam,
|
|
250
250
|
)}
|
|
251
251
|
pagination={pagination}
|
|
252
|
-
isLoading={
|
|
252
|
+
isLoading={isFetching}
|
|
253
253
|
hasError={isError}
|
|
254
254
|
queryString={queryString}
|
|
255
255
|
localStorageKey={
|
|
@@ -170,7 +170,7 @@ export const WfoProductsPage = () => {
|
|
|
170
170
|
sortBy: sortBy,
|
|
171
171
|
query: queryString || undefined,
|
|
172
172
|
};
|
|
173
|
-
const { data,
|
|
173
|
+
const { data, isFetching, isError } = useQueryWithGraphql(
|
|
174
174
|
getProductsQuery(),
|
|
175
175
|
graphqlQueryVariables,
|
|
176
176
|
['products', 'listPage'],
|
|
@@ -218,7 +218,7 @@ export const WfoProductsPage = () => {
|
|
|
218
218
|
setDataDisplayParam,
|
|
219
219
|
)}
|
|
220
220
|
pagination={pagination}
|
|
221
|
-
isLoading={
|
|
221
|
+
isLoading={isFetching}
|
|
222
222
|
hasError={isError}
|
|
223
223
|
queryString={queryString}
|
|
224
224
|
localStorageKey={METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY}
|
|
@@ -144,7 +144,7 @@ export const WfoResourceTypesPage = () => {
|
|
|
144
144
|
sortBy: sortBy,
|
|
145
145
|
query: queryString || undefined,
|
|
146
146
|
};
|
|
147
|
-
const { data,
|
|
147
|
+
const { data, isFetching, isError } = useQueryWithGraphql(
|
|
148
148
|
GET_RESOURCE_TYPES_GRAPHQL_QUERY,
|
|
149
149
|
graphqlQueryVariables,
|
|
150
150
|
['resourceTypes', 'listPage'],
|
|
@@ -192,7 +192,7 @@ export const WfoResourceTypesPage = () => {
|
|
|
192
192
|
setDataDisplayParam,
|
|
193
193
|
)}
|
|
194
194
|
pagination={pagination}
|
|
195
|
-
isLoading={
|
|
195
|
+
isLoading={isFetching}
|
|
196
196
|
hasError={isError}
|
|
197
197
|
queryString={queryString}
|
|
198
198
|
localStorageKey={
|
|
@@ -156,7 +156,7 @@ export const WfoWorkflowsPage = () => {
|
|
|
156
156
|
sortBy: graphQlWorkflowListMapper(sortBy),
|
|
157
157
|
query: queryString || undefined,
|
|
158
158
|
};
|
|
159
|
-
const { data,
|
|
159
|
+
const { data, isFetching, isError } = useQueryWithGraphql(
|
|
160
160
|
GET_WORKFLOWS_GRAPHQL_QUERY,
|
|
161
161
|
graphqlQueryVariables,
|
|
162
162
|
['workflows', 'listPage'],
|
|
@@ -204,7 +204,7 @@ export const WfoWorkflowsPage = () => {
|
|
|
204
204
|
setDataDisplayParam,
|
|
205
205
|
)}
|
|
206
206
|
pagination={pagination}
|
|
207
|
-
isLoading={
|
|
207
|
+
isLoading={isFetching}
|
|
208
208
|
hasError={isError}
|
|
209
209
|
queryString={queryString}
|
|
210
210
|
localStorageKey={METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY}
|