From 8039bbc0f0c600d21499c779ae3d2956163f8249 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Sat, 13 Apr 2024 15:47:22 -0700 Subject: [PATCH] fix - edit callbacks on admin ui --- .../src/components/settings.tsx | 100 +++++++++++++----- 1 file changed, 72 insertions(+), 28 deletions(-) diff --git a/ui/litellm-dashboard/src/components/settings.tsx b/ui/litellm-dashboard/src/components/settings.tsx index 9c0aa163c3..4a7aca5a88 100644 --- a/ui/litellm-dashboard/src/components/settings.tsx +++ b/ui/litellm-dashboard/src/components/settings.tsx @@ -14,10 +14,11 @@ import { Text, Grid, Button, + TextInput, Col, } from "@tremor/react"; import { getCallbacksCall, setCallbacksCall } from "./networking"; -import { Modal, Form, Input, Select, Button as Button2 } from "antd"; +import { Modal, Form, Input, Select, Button as Button2, message } from "antd"; import StaticGenerationSearchParamsBailoutProvider from "next/dist/client/components/static-generation-searchparams-bailout-provider"; interface SettingsPageProps { @@ -31,7 +32,7 @@ const Settings: React.FC = ({ userRole, userID, }) => { - const [callbacks, setCallbacks] = useState([]); + const [callbacks, setCallbacks] = useState([]); const [isModalVisible, setIsModalVisible] = useState(false); const [form] = Form.useForm(); const [selectedCallback, setSelectedCallback] = useState(null); @@ -43,8 +44,7 @@ const Settings: React.FC = ({ getCallbacksCall(accessToken, userID, userRole).then((data) => { console.log("callbacks", data); let callbacks_data = data.data; - let callback_names = callbacks_data.success_callback; // ["callback1", "callback2"] - setCallbacks(callback_names); + setCallbacks(callbacks_data); }); }, [accessToken, userRole, userID]); @@ -59,6 +59,23 @@ const Settings: React.FC = ({ setSelectedCallback(null); }; + const handleSaveChanges = (callback: any) => { + if (!accessToken) { + return; + } + + const updatedVariables = Object.fromEntries( + Object.entries(callback.variables).map(([key, value]) => [key, (document.querySelector(`input[name="${key}"]`) as HTMLInputElement)?.value || value]) + ); + + const payload = { + environment_variables: updatedVariables, + }; + + setCallbacksCall(accessToken, payload); + message.success("Callback updated successfully"); + }; + const handleOk = () => { if (!accessToken) { return; @@ -113,34 +130,61 @@ const Settings: React.FC = ({ return (
- - - - - Logging Callbacks - - -
- {!callbacks ? ( - None - ) : callbacks.length === 0 ? ( - None - ) : ( - callbacks.map((callback, index) => ( - - {callback} - - )) - )} -
- -
- + + Logging Callbacks + + + + + Callback + Callback Env Vars + + {/* Test Callback */} + + + + {callbacks.map((callback, index) => ( + + + {callback.name} + + +
    + {Object.entries(callback.variables).map(([key, value]) => ( +
  • + {key} + +
  • + ))} +
+ +
+ + + + + + + + + +
+ ))} +
+
-
+