添加工具调用解析和聊天工具操作处理
This commit is contained in:
@@ -68,6 +68,10 @@ export interface SCADADataPanelProps {
|
||||
showCleaning?: boolean;
|
||||
/** 清洗数据的回调 */
|
||||
onCleanData?: () => void;
|
||||
/** 外部传入开始时间(ISO8601 字符串),用于初始化并触发查询 */
|
||||
start_time?: string;
|
||||
/** 外部传入结束时间(ISO8601 字符串),用于初始化并触发查询 */
|
||||
end_time?: string;
|
||||
}
|
||||
|
||||
type PanelTab = "chart" | "table";
|
||||
@@ -314,6 +318,8 @@ const SCADADataPanel: React.FC<SCADADataPanelProps> = ({
|
||||
fractionDigits = 2,
|
||||
showCleaning = false,
|
||||
onCleanData,
|
||||
start_time,
|
||||
end_time,
|
||||
}) => {
|
||||
const { open } = useNotification();
|
||||
const { data: user } = useGetIdentity<IUser>();
|
||||
@@ -396,8 +402,24 @@ const SCADADataPanel: React.FC<SCADADataPanelProps> = ({
|
||||
};
|
||||
}, [showCleaning]);
|
||||
|
||||
const [from, setFrom] = useState<Dayjs>(() => dayjs().subtract(1, "day"));
|
||||
const [to, setTo] = useState<Dayjs>(() => dayjs());
|
||||
const [from, setFrom] = useState<Dayjs>(() => {
|
||||
if (start_time) {
|
||||
const parsedStart = dayjs(start_time);
|
||||
if (parsedStart.isValid()) {
|
||||
return parsedStart;
|
||||
}
|
||||
}
|
||||
return dayjs().subtract(1, "day");
|
||||
});
|
||||
const [to, setTo] = useState<Dayjs>(() => {
|
||||
if (end_time) {
|
||||
const parsedEnd = dayjs(end_time);
|
||||
if (parsedEnd.isValid()) {
|
||||
return parsedEnd;
|
||||
}
|
||||
}
|
||||
return dayjs();
|
||||
});
|
||||
const [activeTab, setActiveTab] = useState<PanelTab>(defaultTab);
|
||||
const [timeSeries, setTimeSeries] = useState<TimeSeriesPoint[]>([]);
|
||||
const [loadingState, setLoadingState] = useState<LoadingState>("idle");
|
||||
@@ -412,6 +434,22 @@ const SCADADataPanel: React.FC<SCADADataPanelProps> = ({
|
||||
setActiveTab(defaultTab);
|
||||
}, [defaultTab]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!start_time && !end_time) return;
|
||||
if (start_time) {
|
||||
const parsedStart = dayjs(start_time);
|
||||
if (parsedStart.isValid()) {
|
||||
setFrom((prev) => (parsedStart.isSame(prev) ? prev : parsedStart));
|
||||
}
|
||||
}
|
||||
if (end_time) {
|
||||
const parsedEnd = dayjs(end_time);
|
||||
if (parsedEnd.isValid()) {
|
||||
setTo((prev) => (parsedEnd.isSame(prev) ? prev : parsedEnd));
|
||||
}
|
||||
}
|
||||
}, [start_time, end_time]);
|
||||
|
||||
const normalizedRange = useMemo(() => ensureValidRange(from, to), [from, to]);
|
||||
|
||||
const hasDevices = deviceIds.length > 0;
|
||||
|
||||
Reference in New Issue
Block a user