From f69e33751ebdf36efc5a05b18fa654a2d9e1575a Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Mon, 5 Jan 2026 20:17:03 +0530 Subject: [PATCH] fixes --- .../pricing_calculator/index.tsx | 75 +++++++----- .../pricing_calculator/multi_cost_results.tsx | 111 +++++++----------- 2 files changed, 89 insertions(+), 97 deletions(-) diff --git a/ui/litellm-dashboard/src/components/CostTrackingSettings/pricing_calculator/index.tsx b/ui/litellm-dashboard/src/components/CostTrackingSettings/pricing_calculator/index.tsx index 17eb48b2eec..426d832bfe6 100644 --- a/ui/litellm-dashboard/src/components/CostTrackingSettings/pricing_calculator/index.tsx +++ b/ui/litellm-dashboard/src/components/CostTrackingSettings/pricing_calculator/index.tsx @@ -1,10 +1,12 @@ import React, { useState, useCallback } from "react"; -import { Table, Select, InputNumber, Button } from "antd"; +import { Table, Select, InputNumber, Button, Radio } from "antd"; import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; import { PricingCalculatorProps, ModelEntry } from "./types"; import MultiCostResults from "./multi_cost_results"; import { useMultiCostEstimate } from "./use_multi_cost_estimate"; +type TimePeriod = "day" | "month"; + const generateId = () => `entry-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; const createDefaultEntry = (): ModelEntry => ({ @@ -21,6 +23,7 @@ const PricingCalculator: React.FC = ({ models, }) => { const [entries, setEntries] = useState([createDefaultEntry()]); + const [timePeriod, setTimePeriod] = useState("month"); const { debouncedFetchForEntry, removeEntry, getMultiModelResult } = useMultiCostEstimate(accessToken); @@ -40,6 +43,18 @@ const PricingCalculator: React.FC = ({ [debouncedFetchForEntry] ); + const handleTimePeriodChange = useCallback((period: TimePeriod) => { + setTimePeriod(period); + // Clear the opposite field for all entries when switching + setEntries((prev) => + prev.map((entry) => ({ + ...entry, + num_requests_per_day: period === "day" ? entry.num_requests_per_day : undefined, + num_requests_per_month: period === "month" ? entry.num_requests_per_month : undefined, + })) + ); + }, []); + const handleAddEntry = useCallback(() => { setEntries((prev) => [...prev, createDefaultEntry()]); }, []); @@ -59,7 +74,7 @@ const PricingCalculator: React.FC = ({ title: "Model", dataIndex: "model", key: "model", - width: "30%", + width: "35%", render: (_: string, record: ModelEntry) => (