From e911a7b5b02ab45a2fcdd29916eb39baf62facc9 Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Thu, 15 Jan 2026 14:31:24 +0100 Subject: [PATCH 1/3] chore: update admin page visualization --- .../features/admin/UpdateResourceClassButton.tsx | 13 ++++++++++--- .../admin/UpdateResourcePoolQuotaButton.tsx | 7 ++++--- .../admin/UpdateResourcePoolRemoteButton.tsx | 7 ++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/client/src/features/admin/UpdateResourceClassButton.tsx b/client/src/features/admin/UpdateResourceClassButton.tsx index dce6d1306f..6a4ffe7caa 100644 --- a/client/src/features/admin/UpdateResourceClassButton.tsx +++ b/client/src/features/admin/UpdateResourceClassButton.tsx @@ -18,7 +18,13 @@ import cx from "classnames"; import { useCallback, useEffect, useState } from "react"; -import { CheckLg, PlusLg, TrashFill, XLg } from "react-bootstrap-icons"; +import { + CheckLg, + PencilSquare, + PlusLg, + TrashFill, + XLg, +} from "react-bootstrap-icons"; import { Controller, useFieldArray, useForm } from "react-hook-form"; import { Button, @@ -60,7 +66,8 @@ export default function UpdateResourceClassButton({ return ( <> ({ - defaultValues: { + const defaultValues = useMemo( + () => ({ idleThresholdMinutes: resourcePool.idle_threshold ? resourcePool.idle_threshold / 60 : undefined, + pauseWarningMinutes: resourcePool.hibernation_warning_period + ? resourcePool.hibernation_warning_period / 60 + : undefined, hibernationThresholdMinutes: resourcePool.hibernation_threshold ? resourcePool.hibernation_threshold / 60 : undefined, - }, + }), + [ + resourcePool.idle_threshold, + resourcePool.hibernation_warning_period, + resourcePool.hibernation_threshold, + ] + ); + + const { + control, + formState: { errors }, + handleSubmit, + reset, + } = useForm({ + defaultValues, }); // Handle invoking API to update resource pools @@ -117,6 +132,9 @@ function UpdateResourcePoolThresholdsModal({ idle_threshold: data.idleThresholdMinutes ? data.idleThresholdMinutes * 60 : undefined, + hibernation_warning_period: data.pauseWarningMinutes + ? data.pauseWarningMinutes * 60 + : undefined, hibernation_threshold: data.hibernationThresholdMinutes ? data.hibernationThresholdMinutes * 60 : undefined, @@ -126,17 +144,21 @@ function UpdateResourcePoolThresholdsModal({ [id, updateResourcePool] ); - // Reset form and close modal on successful submissions + // Reset form to show up-to-date values useEffect(() => { if (!result.isSuccess) { return; } + reset(defaultValues); toggle(); - }, [result.isSuccess, toggle]); + }, [result.isSuccess, defaultValues, reset, toggle]); + + useEffect(() => { + if (isOpen) reset(defaultValues); + }, [isOpen, reset, defaultValues]); useEffect(() => { if (!isOpen) { - reset(); result.reset(); } }, [isOpen, reset, result]); @@ -158,16 +180,12 @@ function UpdateResourcePoolThresholdsModal({ Please note that changes only affect new sessions, not already running ones.

-
+ {result.error && }
)}
+
+ + ( + + )} + rules={{ min: 0 }} + /> +
+ Please enter 0 (or leave it blank) for default or anything greater + than 0 to specify a custom value. +
+ +
+ +