Skip to content

Commit c19dacd

Browse files
authored
Make Navbar and side-menu fixed on page, add websocket disconnected icon (#1697)
* Make Navbar and side-menu fixed on page, add websocket disconnected icon in navbar * Resolved comments, cleanup * Renamed some variables for better clarity
1 parent 41076a4 commit c19dacd

File tree

7 files changed

+31
-11
lines changed

7 files changed

+31
-11
lines changed

.changeset/wild-otters-laugh.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@orchestrator-ui/orchestrator-ui-components': minor
3+
---
4+
5+
1662 Make the navbar fixed when scrolling and notify user for failing websocket there.

packages/orchestrator-ui-components/src/components/WfoBadges/WfoWebsocketStatusBadge/WfoWebsocketStatusBadge.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
1-
import React, { useCallback, useEffect } from 'react';
1+
import React, { FC, useCallback, useEffect } from 'react';
22
import { useDispatch } from 'react-redux';
33

44
import { useTranslations } from 'next-intl';
55

66
import { EuiToolTip } from '@elastic/eui';
77

8+
import { WfoHeaderBadge } from '@/components';
89
import { useWithOrchestratorTheme } from '@/hooks';
910
import { useOrchestratorTheme } from '@/hooks/useOrchestratorTheme';
1011
import { WfoBoltFill, WfoBoltSlashFill } from '@/icons';
1112
import { orchestratorApi } from '@/rtk';
1213
import { useStreamMessagesQuery } from '@/rtk/endpoints/streamMessages';
1314

14-
import { WfoHeaderBadge } from '../WfoHeaderBadge';
1515
import { getStyles } from './styles';
1616

17-
export const WfoWebsocketStatusBadge = () => {
17+
interface WfoWebsocketStatusBadgeProps {
18+
hideWhenConnected?: boolean;
19+
}
20+
21+
export const WfoWebsocketStatusBadge: FC<WfoWebsocketStatusBadgeProps> = ({
22+
hideWhenConnected = false,
23+
}) => {
1824
const dispatch = useDispatch();
1925
const { connectedStyle, disconnectedStyle } =
2026
useWithOrchestratorTheme(getStyles);
@@ -23,6 +29,8 @@ export const WfoWebsocketStatusBadge = () => {
2329
const { theme } = useOrchestratorTheme();
2430
const { data: websocketConnected } = useStreamMessagesQuery();
2531

32+
const showBadge = !(websocketConnected && hideWhenConnected);
33+
2634
const reconnect = useCallback(() => {
2735
dispatch(orchestratorApi.util.resetApiState());
2836
}, [dispatch]);
@@ -56,7 +64,7 @@ export const WfoWebsocketStatusBadge = () => {
5664
};
5765
}, [reconnect, websocketConnected]);
5866

59-
return (
67+
return showBadge ? (
6068
<EuiToolTip
6169
position="bottom"
6270
content={
@@ -85,5 +93,7 @@ export const WfoWebsocketStatusBadge = () => {
8593
iconOnClickAriaLabel={undefined}
8694
/>
8795
</EuiToolTip>
96+
) : (
97+
<></>
8898
);
8999
};

packages/orchestrator-ui-components/src/components/WfoPageTemplate/WfoPageHeader/WfoPageHeader.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
WfoEngineStatusBadge,
1818
WfoEnvironmentBadge,
1919
WfoFailedTasksBadge,
20+
WfoWebsocketStatusBadge,
2021
} from '@/components';
2122
import { WfoAppLogo } from '@/components/WfoPageTemplate/WfoPageHeader/WfoAppLogo';
2223
import { getWfoPageHeaderStyles } from '@/components/WfoPageTemplate/WfoPageHeader/styles';
@@ -70,6 +71,7 @@ export const WfoPageHeader: FC<WfoPageHeaderProps> = ({
7071
<EuiHeaderSection>
7172
<EuiHeaderSectionItem>
7273
<EuiBadgeGroup css={{ marginRight: multiplyByBaseUnit(1) }}>
74+
<WfoWebsocketStatusBadge hideWhenConnected={true} />
7375
<WfoEngineStatusBadge />
7476
<WfoFailedTasksBadge />
7577
</EuiBadgeGroup>

packages/orchestrator-ui-components/src/components/WfoPageTemplate/WfoPageTemplate/WfoPageTemplate.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import React, { FC, ReactElement, ReactNode, useState } from 'react';
22

3-
import { EuiPageTemplate } from '@elastic/eui';
43
import type { EuiThemeColorMode } from '@elastic/eui';
4+
import { EuiPageTemplate } from '@elastic/eui';
55
import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types';
66

7-
import { useOrchestratorTheme } from '../../../hooks/useOrchestratorTheme';
8-
import { WfoBreadcrumbs } from '../WfoBreadcrumbs';
9-
import { WfoPageHeader } from '../WfoPageHeader';
10-
import { WfoSidebar } from '../WfoSidebar';
7+
import { WfoBreadcrumbs, WfoPageHeader, WfoSidebar } from '@/components';
8+
import { useOrchestratorTheme } from '@/hooks';
119

1210
export interface WfoPageTemplateProps {
1311
getAppLogo: (navigationHeight: number) => ReactElement;
@@ -35,7 +33,6 @@ export const WfoPageTemplate: FC<WfoPageTemplateProps> = ({
3533
navigationHeight={navigationHeight}
3634
onThemeSwitch={onThemeSwitch}
3735
/>
38-
3936
{/* Sidebar and content area */}
4037
<EuiPageTemplate
4138
panelled={false}
@@ -48,6 +45,8 @@ export const WfoPageTemplate: FC<WfoPageTemplateProps> = ({
4845
<EuiPageTemplate.Sidebar
4946
css={{
5047
backgroundColor: theme.colors.body,
48+
overflowY: 'auto',
49+
maxHeight: `calc(100vh - ${navigationHeight}px)`,
5150
}}
5251
>
5352
<WfoSidebar overrideMenuItems={overrideMenuItems} />
@@ -56,6 +55,8 @@ export const WfoPageTemplate: FC<WfoPageTemplateProps> = ({
5655
<EuiPageTemplate.Section
5756
css={{
5857
backgroundColor: theme.colors.emptyShade,
58+
overflowY: 'auto',
59+
maxHeight: `calc(100vh - ${navigationHeight}px)`,
5960
}}
6061
>
6162
<WfoBreadcrumbs

packages/orchestrator-ui-components/src/messages/en-GB.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"lightMode": "Light mode",
2121
"websocketConnected": "This page receives live updates from the server",
2222
"websocketDisconnected": "The connection to the server is lost, click the icon or refresh the page",
23+
"websocketDisconnectedShort": "WebSocket disconnected, click the icon to reconnect",
2324
"resetToDefault": "Reset to default",
2425
"savePreferences": "Save preferences",
2526
"numberOfRows": "Number of rows",

packages/orchestrator-ui-components/src/messages/nl-NL.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"lightMode": "Light mode",
2121
"websocketConnected": "De pagina ontvangt live updates van de server",
2222
"websocketDisconnected": "De websocket verbinding is verbroken, klik op het icoon of ververs de pagina.",
23+
"websocketDisconnectedShort": "WebSocket verbroken, klik op het icoon om opnieuw te verbinden.",
2324
"resetToDefault": "Reset naar standaard",
2425
"savePreferences": "Voorkeuren opslaan",
2526
"numberOfRows": "Aantal rijen",

packages/orchestrator-ui-components/src/rtk/endpoints/streamMessages.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const streamMessagesApi = orchestratorApi.injectEndpoints({
5050
endpoints: (build) => ({
5151
streamMessages: build.query<boolean, void>({
5252
queryFn: () => {
53-
return { data: false };
53+
return { data: true };
5454
},
5555
async onCacheEntryAdded(
5656
_,

0 commit comments

Comments
 (0)