Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Changed
---

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))
8 changes: 8 additions & 0 deletions packages/manager/src/GoTo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as React from 'react';
import { useIsDatabasesEnabled } from './features/Databases/utilities';
import { usePermissions } from './features/IAM/hooks/usePermissions';
import { useIsMarketplaceV2Enabled } from './features/Marketplace/utils';
import { useIsNetworkLoadBalancerEnabled } from './features/NetworkLoadBalancers/utils';
import { useIsPlacementGroupsEnabled } from './features/PlacementGroups/utils';
import { useFlags } from './hooks/useFlags';
import { useGlobalKeyboardListener } from './hooks/useGlobalKeyboardListener';
Expand All @@ -26,6 +27,7 @@ export const GoTo = React.memo(() => {
const { isPlacementGroupsEnabled } = useIsPlacementGroupsEnabled();
const { isDatabasesEnabled } = useIsDatabasesEnabled();
const { isMarketplaceV2FeatureEnabled } = useIsMarketplaceV2Enabled();
const { isNetworkLoadBalancerEnabled } = useIsNetworkLoadBalancerEnabled();

const { goToOpen, setGoToOpen } = useGlobalKeyboardListener();

Expand Down Expand Up @@ -58,6 +60,11 @@ export const GoTo = React.memo(() => {
display: 'VPC',
href: '/vpcs',
},
{
display: 'Network Load Balancer',
hide: !isNetworkLoadBalancerEnabled,
href: '/netloadbalancers',
},
{
display: 'NodeBalancers',
href: '/nodebalancers',
Expand Down Expand Up @@ -138,6 +145,7 @@ export const GoTo = React.memo(() => {
isDatabasesEnabled,
isManagedAccount,
isMarketplaceV2FeatureEnabled,
isNetworkLoadBalancerEnabled,
isPlacementGroupsEnabled,
iamRbacPrimaryNavChanges,
]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { useNetworkLoadBalancerNodesQuery } from '@linode/queries';
import { getAPIFilterFromQuery } from '@linode/search';
import {
CircleProgress,
Hidden,
Expand Down Expand Up @@ -47,13 +46,14 @@ export const NodesTable = (props: NodesTableProps) => {
from: NLB_NODES_ROUTE,
shouldThrow: false,
});
const query = search?.query;

const pagination = usePaginationV2({
currentRoute: NLB_NODES_ROUTE,
preferenceKey,
searchParams: (prev) => ({
...prev,
query: search?.query,
query,
}),
});

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

const { filter: searchFilter, error: searchError } = getAPIFilterFromQuery(
search?.query,
{
searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'],
}
);

const filter = {
['+order']: order,
['+order_by']: orderBy,
...searchFilter,
};

const generateNodesXFilter = (searchText: string) => {
if (searchText === '') {
return filter;
}
return {
'+or': [
{
id: { '+contains': searchText },
},
{
linode_id: { '+contains': searchText },
},
{
address_v6: { '+contains': searchText },
},
],
...filter,
};
};

const {
Expand All @@ -93,15 +105,15 @@ export const NodesTable = (props: NodesTableProps) => {
page: pagination.page,
page_size: pagination.pageSize,
},
filter
generateNodesXFilter(query ?? '')
);

const onSearch = (query: string) => {
navigate({
search: (prev) => ({
...prev,
page: undefined,
query: query ? query : undefined,
query: query ?? undefined,
}),
to: `/netloadbalancers/${nlbId}/listeners/${listenerId}/nodes`,
});
Expand Down Expand Up @@ -136,7 +148,6 @@ export const NodesTable = (props: NodesTableProps) => {
<DebouncedSearchTextField
clearable
debounceTime={250}
errorText={searchError?.message}
hideLabel
isSearching={isFetching}
label="Search"
Expand Down