Skip to content

Commit 5a108c3

Browse files
change: [UIE-9919] - Address post-demo feedback(points 4,5) (#13251)
* change: [UIE-9919] - Address post-demo feedback(points 4,5) * Added changeset: NLB post-demo feedback-Resolve special character filtering issue in Nodes table IPv6 column and add NLB to GoTo quick navigation
1 parent d423815 commit 5a108c3

File tree

3 files changed

+37
-13
lines changed

3 files changed

+37
-13
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/manager": Changed
3+
---
4+
5+
NLB post-demo feedback-Resolve special character filtering issue in Nodes table IPv6 column and add NLB to GoTo quick navigation ([#13251](https://github.com/linode/manager/pull/13251))

packages/manager/src/GoTo.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import * as React from 'react';
66
import { useIsDatabasesEnabled } from './features/Databases/utilities';
77
import { usePermissions } from './features/IAM/hooks/usePermissions';
88
import { useIsMarketplaceV2Enabled } from './features/Marketplace/utils';
9+
import { useIsNetworkLoadBalancerEnabled } from './features/NetworkLoadBalancers/utils';
910
import { useIsPlacementGroupsEnabled } from './features/PlacementGroups/utils';
1011
import { useFlags } from './hooks/useFlags';
1112
import { useGlobalKeyboardListener } from './hooks/useGlobalKeyboardListener';
@@ -26,6 +27,7 @@ export const GoTo = React.memo(() => {
2627
const { isPlacementGroupsEnabled } = useIsPlacementGroupsEnabled();
2728
const { isDatabasesEnabled } = useIsDatabasesEnabled();
2829
const { isMarketplaceV2FeatureEnabled } = useIsMarketplaceV2Enabled();
30+
const { isNetworkLoadBalancerEnabled } = useIsNetworkLoadBalancerEnabled();
2931

3032
const { goToOpen, setGoToOpen } = useGlobalKeyboardListener();
3133

@@ -58,6 +60,11 @@ export const GoTo = React.memo(() => {
5860
display: 'VPC',
5961
href: '/vpcs',
6062
},
63+
{
64+
display: 'Network Load Balancer',
65+
hide: !isNetworkLoadBalancerEnabled,
66+
href: '/netloadbalancers',
67+
},
6168
{
6269
display: 'NodeBalancers',
6370
href: '/nodebalancers',
@@ -138,6 +145,7 @@ export const GoTo = React.memo(() => {
138145
isDatabasesEnabled,
139146
isManagedAccount,
140147
isMarketplaceV2FeatureEnabled,
148+
isNetworkLoadBalancerEnabled,
141149
isPlacementGroupsEnabled,
142150
iamRbacPrimaryNavChanges,
143151
]

packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancersListenerDetail/NodesTable/NodesTable.tsx

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useNetworkLoadBalancerNodesQuery } from '@linode/queries';
2-
import { getAPIFilterFromQuery } from '@linode/search';
32
import {
43
CircleProgress,
54
Hidden,
@@ -47,13 +46,14 @@ export const NodesTable = (props: NodesTableProps) => {
4746
from: NLB_NODES_ROUTE,
4847
shouldThrow: false,
4948
});
49+
const query = search?.query;
5050

5151
const pagination = usePaginationV2({
5252
currentRoute: NLB_NODES_ROUTE,
5353
preferenceKey,
5454
searchParams: (prev) => ({
5555
...prev,
56-
query: search?.query,
56+
query,
5757
}),
5858
});
5959

@@ -68,17 +68,29 @@ export const NodesTable = (props: NodesTableProps) => {
6868
preferenceKey,
6969
});
7070

71-
const { filter: searchFilter, error: searchError } = getAPIFilterFromQuery(
72-
search?.query,
73-
{
74-
searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'],
75-
}
76-
);
77-
7871
const filter = {
7972
['+order']: order,
8073
['+order_by']: orderBy,
81-
...searchFilter,
74+
};
75+
76+
const generateNodesXFilter = (searchText: string) => {
77+
if (searchText === '') {
78+
return filter;
79+
}
80+
return {
81+
'+or': [
82+
{
83+
id: { '+contains': searchText },
84+
},
85+
{
86+
linode_id: { '+contains': searchText },
87+
},
88+
{
89+
address_v6: { '+contains': searchText },
90+
},
91+
],
92+
...filter,
93+
};
8294
};
8395

8496
const {
@@ -93,15 +105,15 @@ export const NodesTable = (props: NodesTableProps) => {
93105
page: pagination.page,
94106
page_size: pagination.pageSize,
95107
},
96-
filter
108+
generateNodesXFilter(query ?? '')
97109
);
98110

99111
const onSearch = (query: string) => {
100112
navigate({
101113
search: (prev) => ({
102114
...prev,
103115
page: undefined,
104-
query: query ? query : undefined,
116+
query: query ?? undefined,
105117
}),
106118
to: `/netloadbalancers/${nlbId}/listeners/${listenerId}/nodes`,
107119
});
@@ -136,7 +148,6 @@ export const NodesTable = (props: NodesTableProps) => {
136148
<DebouncedSearchTextField
137149
clearable
138150
debounceTime={250}
139-
errorText={searchError?.message}
140151
hideLabel
141152
isSearching={isFetching}
142153
label="Search"

0 commit comments

Comments
 (0)