diff --git a/Common/Types/Icon/IconProp.ts b/Common/Types/Icon/IconProp.ts index f47aff3b37..04a1d478fb 100644 --- a/Common/Types/Icon/IconProp.ts +++ b/Common/Types/Icon/IconProp.ts @@ -19,6 +19,7 @@ enum IconProp { Help = 'Help', JSON = 'JSON', Signal = 'Signal', + Stop = 'Stop', Database = 'Database', ChevronDown = 'ChevronDown', Pencil = 'Pencil', diff --git a/CommonUI/src/Components/Icon/Icon.tsx b/CommonUI/src/Components/Icon/Icon.tsx index 1035be22b5..798ca8258c 100644 --- a/CommonUI/src/Components/Icon/Icon.tsx +++ b/CommonUI/src/Components/Icon/Icon.tsx @@ -141,6 +141,10 @@ const Icon: FunctionComponent = ({ d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 010 3.75H5.625a1.875 1.875 0 010-3.75z" /> ); + }else if (icon === IconProp.Stop) { + return getSvgWrapper( + + ); } else if (icon === IconProp.Copy) { return getSvgWrapper( void; + onAutoScrollChanged: (turnOnAutoScroll: boolean) => void; } -const LogsFilter: FunctionComponent = ( +const LogsFilters: FunctionComponent = ( props: ComponentProps ): ReactElement => { const [filterOptions, setFilterOptions] = React.useState({}); + const [turnOnAutoScroll, setTurnOnAutoScroll] = React.useState(true); + + + useEffect(() => { props.onFilterChanged(filterOptions); }, [filterOptions]); return (
- { - setFilterOptions({ - searchText: value, - }); - }} - /> +
+ { + setFilterOptions({ + searchText: value, + }); + }} + /> +
+
+ { + setFilterOptions({ + searchText: value, + }); + }} + type={'datetime-local'} + /> + { + setFilterOptions({ + searchText: value, + }); + }} + type={'datetime-local'} + /> +
+
+ { + setFilterOptions({ + searchText: value, + }); + }} + /> +
+ +
+ {!turnOnAutoScroll &&
); }; -export default LogsFilter; +export default LogsFilters; diff --git a/CommonUI/src/Components/LogsViewer/LogsViewer.tsx b/CommonUI/src/Components/LogsViewer/LogsViewer.tsx index a8138cf99c..7bba079a50 100644 --- a/CommonUI/src/Components/LogsViewer/LogsViewer.tsx +++ b/CommonUI/src/Components/LogsViewer/LogsViewer.tsx @@ -1,9 +1,12 @@ import Log from 'Model/AnalyticsModels/Log'; import React, { FunctionComponent, ReactElement, Ref } from 'react'; import LogItem from './LogItem'; +import LogsFilters, { FiterOptions } from './LogsFilters'; export interface ComponentProps { logs: Array; + onFilterChanged: (filterOptions: FiterOptions) => void; + } const LogsViewer: FunctionComponent = ( @@ -30,71 +33,49 @@ const LogsViewer: FunctionComponent = ( }; }, []); - // if scrolled up set autoscrol to false, if scrolled to the bottom set it to true - - React.useEffect(() => { - const logsViewer: HTMLDivElement | null = logsViewerRef.current; - - if (!logsViewer) { - return; - } - - const scrollPosition: number = - logsViewer.scrollTop + logsViewer.offsetHeight; - const scrollHeight: number = logsViewer.scrollHeight; - - if (scrollPosition < scrollHeight) { - setAutoScroll(false); - } else { - setAutoScroll(true); - } - }, [props.logs]); // Keep scroll to the bottom of the log + const scrollToBottom = (): void => { + const logsViewer: HTMLDivElement | null = logsViewerRef.current; + + if (logsViewer) { + logsViewer.scrollTop = logsViewer.scrollHeight; + } + } + + React.useEffect(() => { if (!autoScroll) { return; } - const logsViewer: HTMLDivElement | null = logsViewerRef.current; - - if (logsViewer) { - logsViewer.scrollTop = logsViewer.scrollHeight; - } + scrollToBottom(); }, [props.logs]); - /** - * - * ::-webkit-scrollbar { - height: 12px; - width: 12px; - background: #000; -} - -::-webkit-scrollbar-thumb { - background: #393812; - -webkit-border-radius: 1ex; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.75); -} - -::-webkit-scrollbar-corner { - background: #000; -} - * - */ - return ( -
- {props.logs.map((log: Log, i: number) => { - return ; - })} +
+
+ { + setAutoScroll(autoscroll); + + if(autoScroll){ + scrollToBottom(); + } + }} onFilterChanged={props.onFilterChanged} /> +
+
+ + {props.logs.map((log: Log, i: number) => { + return ; + })} +
); }; diff --git a/Dashboard/src/Components/LogsViewer/LogsViewer.tsx b/Dashboard/src/Components/LogsViewer/LogsViewer.tsx index 19c6928bb6..46725077c9 100644 --- a/Dashboard/src/Components/LogsViewer/LogsViewer.tsx +++ b/Dashboard/src/Components/LogsViewer/LogsViewer.tsx @@ -94,10 +94,6 @@ const DashboardLogsViewer: FunctionComponent = ( } ); - setInterval(() => { - Realtime.emit('HERE', { message: "I'm HERE" }); - }, 1000); - return () => { disconnectFunction(); }; @@ -113,7 +109,7 @@ const DashboardLogsViewer: FunctionComponent = ( return (
- + {}} logs={logs} />
); }; diff --git a/Examples/otel-dotnet/obj/staticwebassets.pack.sentinel b/Examples/otel-dotnet/obj/staticwebassets.pack.sentinel index 0481e91c02..957747aefb 100644 --- a/Examples/otel-dotnet/obj/staticwebassets.pack.sentinel +++ b/Examples/otel-dotnet/obj/staticwebassets.pack.sentinel @@ -31,3 +31,5 @@ 2.0 2.0 2.0 +2.0 +2.0