* Fix bad data in stats

* Add support for changes dialog when leaving without saving config editor

* Fix scrolling into view
This commit is contained in:
Nicolas Mowen 2024-08-21 08:19:07 -06:00 committed by GitHub
parent d96f76c27f
commit 1c7ee5f4e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 48 additions and 6 deletions

View File

@ -124,12 +124,49 @@ function ConfigEditor() {
};
});
// monitoring state
const [hasChanges, setHasChanges] = useState(false);
useEffect(() => {
if (!config || !modelRef.current) {
return;
}
modelRef.current.onDidChangeContent(() => {
if (modelRef.current?.getValue() != config) {
setHasChanges(true);
} else {
setHasChanges(false);
}
});
}, [config]);
useEffect(() => {
if (config && modelRef.current) {
modelRef.current.setValue(config);
setHasChanges(false);
}
}, [config]);
useEffect(() => {
let listener: ((e: BeforeUnloadEvent) => void) | undefined;
if (hasChanges) {
listener = (e) => {
e.preventDefault();
e.returnValue = true;
return "Exit without saving?";
};
window.addEventListener("beforeunload", listener);
}
return () => {
if (listener) {
window.removeEventListener("beforeunload", listener);
}
};
}, [hasChanges]);
if (!config) {
return <ActivityIndicator />;
}

View File

@ -286,6 +286,7 @@ function Logs() {
key={item}
className={`flex items-center justify-between gap-2 ${logService == item ? "" : "text-muted-foreground"}`}
value={item}
data-nav-item={item}
aria-label={`Select ${item}`}
>
<div className="capitalize">{item}</div>

View File

@ -163,7 +163,7 @@ export default function GeneralMetrics({
series[key] = { name: key, data: [] };
}
const data = stats.cpu_usages[detStats.pid.toString()].cpu;
const data = stats.cpu_usages[detStats.pid.toString()]?.cpu;
if (data != undefined) {
series[key].data.push({
@ -304,7 +304,7 @@ export default function GeneralMetrics({
series[key] = { name: key, data: [] };
}
const data = stats.cpu_usages[procStats.pid.toString()].cpu;
const data = stats.cpu_usages[procStats.pid.toString()]?.cpu;
if (data != undefined) {
series[key].data.push({
@ -338,11 +338,15 @@ export default function GeneralMetrics({
series[key] = { name: key, data: [] };
}
const data = stats.cpu_usages[procStats.pid.toString()]?.mem;
if (data) {
series[key].data.push({
x: statsIdx + 1,
y: stats.cpu_usages[procStats.pid.toString()].mem,
y: data,
});
}
}
});
});
return Object.values(series);