@samitouri / QOSami-HFS / commits / c110df34

admin/logs: load logs only at first tab opening instead of all together

Massimo Melina committed May 18, 2024 at 19:03 UTC c110df34aa19891d81ea9317e1008d0071f16170
1 file changed +6 -4
admin/src/LogsPage.ts
+6 -4
@@ -1,6 +1,6 @@
1 // This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
2
3 -import { createElement as h, Fragment, ReactNode, useMemo, useState } from 'react';
3 +import { createElement as h, Fragment, ReactNode, useEffect, useMemo, useState } from 'react';
4 import { Box, Tab, Tabs } from '@mui/material'
5 import { API_URL, useApi, useApiList } from './api'
6 import { DataTable } from './DataTable'
@@ -89,7 +89,7 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
89 const { pause, pauseButton } = usePauseButton()
90 const [showApi, showApiButton] = useToggleButton("Show APIs", "Hide APIs", v => ({
91 icon: SmartToy,
92 - sx: { rotate: v ? '0deg' : '180deg' },
92 + sx: { rotate: v ? 0 : '180deg' },
93 disabled: file === 'console',
94 }), true)
95 const [totalSize, setTotalSize] = useState(NaN)
@@ -97,7 +97,9 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
97 const [skipped, setSkipped] = useState(0)
98 const MAX = 2**20
99 const invert = true
100 - useApi('get_log_file', { file, range: limited || !skipped ? -MAX : `0-${skipped}` }, {
100 + const [firstSight, setFirstSight] = useState(!hidden)
101 + useEffect(() => setFirstSight(x => x || !hidden), [hidden])
102 + useApi(firstSight && 'get_log_file', { file, range: limited || !skipped ? -MAX : `0-${skipped}` }, {
103 skipParse: true, skipLog: true,
104 onResponse(res, body) {
105 const lines = body.split('\n')
@@ -118,7 +120,7 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
120 setList(x => [...x, ...treated])
121 }
122 })
121 - const { list, setList, error, connecting } = useApiList('get_log', { file }, { invert, pause, map: enhanceLogLine })
123 + const { list, setList, error, connecting } = useApiList(firstSight && 'get_log', { file }, { invert, pause, map: enhanceLogLine })
124 const tsColumn: GridColDef = {
125 field: 'ts',
126 headerName: "Timestamp",