- 新增组件加载器实现动态加载HTML组件 - 重构导航功能,添加滚动到顶部功能 - 新增多个UI组件:header、sidebar、logs、usage等 - 实现移动端菜单响应式设计 - 优化DOM元素获取方式,使用延迟加载 - 新增系统监控模块和用量缓存功能 - 扩展静态文件服务支持/components路径 - 实现插件管理和系统API接口 - 添加配置上传和管理功能 - 完善认证和token管理机制
66 lines
No EOL
1.8 KiB
JavaScript
66 lines
No EOL
1.8 KiB
JavaScript
// 全局变量
|
|
let eventSource = null;
|
|
let autoScroll = true;
|
|
let logs = [];
|
|
|
|
// 提供商统计全局变量
|
|
let providerStats = {
|
|
totalRequests: 0,
|
|
totalErrors: 0,
|
|
activeProviders: 0,
|
|
healthyProviders: 0,
|
|
totalAccounts: 0,
|
|
lastUpdateTime: null,
|
|
providerTypeStats: {} // 详细按类型统计
|
|
};
|
|
|
|
// DOM元素 - 使用 getter 延迟获取,以支持动态加载的组件
|
|
const elements = {
|
|
get serverStatus() { return document.getElementById('serverStatus'); },
|
|
get restartBtn() { return document.getElementById('restartBtn'); },
|
|
get sections() { return document.querySelectorAll('.section'); },
|
|
get navItems() { return document.querySelectorAll('.nav-item'); },
|
|
get logsContainer() { return document.getElementById('logsContainer'); },
|
|
get clearLogsBtn() { return document.getElementById('clearLogs'); },
|
|
get toggleAutoScrollBtn() { return document.getElementById('toggleAutoScroll'); },
|
|
get saveConfigBtn() { return document.getElementById('saveConfig'); },
|
|
get resetConfigBtn() { return document.getElementById('resetConfig'); },
|
|
get toastContainer() { return document.getElementById('toastContainer'); },
|
|
get modelProvider() { return document.getElementById('modelProvider'); },
|
|
};
|
|
|
|
// 定期刷新间隔
|
|
const REFRESH_INTERVALS = {
|
|
SYSTEM_INFO: 10000
|
|
};
|
|
|
|
// 导出所有常量
|
|
export {
|
|
eventSource,
|
|
autoScroll,
|
|
logs,
|
|
providerStats,
|
|
elements,
|
|
REFRESH_INTERVALS
|
|
};
|
|
|
|
// 更新函数
|
|
export function setEventSource(source) {
|
|
eventSource = source;
|
|
}
|
|
|
|
export function setAutoScroll(value) {
|
|
autoScroll = value;
|
|
}
|
|
|
|
export function addLog(log) {
|
|
logs.push(log);
|
|
}
|
|
|
|
export function clearLogs() {
|
|
logs = [];
|
|
}
|
|
|
|
export function updateProviderStats(newStats) {
|
|
providerStats = { ...providerStats, ...newStats };
|
|
} |