import React, { useEffect, useState } from "react"; import RegularDropDown from "../../inputs/regularDropDown"; import { useWidgetStore } from "../../../../store/store"; import ChartComponent from "./chartComponent"; // Define Props Interface interface Widget { id: string; type: string; // Chart type (e.g., "bar", "line") panel: "top" | "bottom" | "left" | "right"; // Panel location title: string; fontFamily?: string; fontSize?: string; fontWeight?: string; data: { labels: string[]; datasets: { data: number[]; backgroundColor: string; borderColor: string; borderWidth: number; }[]; }; // Data for the chart } const Design = () => { const [selectedName, setSelectedName] = useState("drop down"); const [selectedElement, setSelectedElement] = useState("drop down"); const [selectedFont, setSelectedFont] = useState("drop down"); const [selectedSize, setSelectedSize] = useState("drop down"); const [selectedWeight, setSelectedWeight] = useState("drop down"); // Zustand Store Hooks const { selectedChartId, setSelectedChartId, widgets, setWidgets } = useWidgetStore(); // Log Selected Chart ID for Debugging // Handle Widget Updates const handleUpdateWidget = (updatedProperties: Partial) => { if (!selectedChartId) return; // Update the selectedChartId const updatedChartId = { ...selectedChartId, ...updatedProperties, }; setSelectedChartId(updatedChartId); // Update the widgets array const updatedWidgets = widgets.map((widget) => widget.id === selectedChartId.id ? { ...widget, ...updatedProperties } : widget ); setWidgets(updatedWidgets); }; // Default Chart Data const defaultChartData = { labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul"], datasets: [ { data: [65, 59, 80, 81, 56, 55, 40], backgroundColor: "#5c87df", borderColor: "#ffffff", borderWidth: 1, }, ], }; return (
{/* Title of the Selected Widget */}
{selectedChartId?.title || "Widget 1"}
{/* Chart Component */}
{selectedChartId && ( )}
{/* Options Container */}
{/* Name Dropdown */}
Name { setSelectedName(value); handleUpdateWidget({ title: value }); }} />
{/* Element Dropdown */}
Element { setSelectedElement(value); handleUpdateWidget({ type: value }); }} />
{/* Font Family Dropdown */}
Font Family { setSelectedFont(value); handleUpdateWidget({ fontFamily: value }); }} />
{/* Size Dropdown */}
Size { setSelectedSize(value); handleUpdateWidget({ fontSize: value }); }} />
{/* Weight Dropdown */}
Weight { setSelectedWeight(value); handleUpdateWidget({ fontWeight: value }); }} />
); }; export default Design;