mirror of
https://github.com/Buriburizaem0n/nezha-dash-v1.git
synced 2026-09-19 17:50:13 +00:00
- Changed websocket context to use `lastData` instead of `lastMessage` for better type safety and clarity. - Updated components to handle the new websocket data structure, including `DashCommand`, `Header`, `ServerDetail`, and various chart components. - Introduced lazy loading for `NotFound`, `ServerDetail`, and `NetworkChart` components to improve performance. - Added skeleton loading states for `ServerDetail` to enhance user experience during data fetching. - Updated tests to reflect changes in websocket data handling and component structure.
202 lines
3.4 KiB
TypeScript
202 lines
3.4 KiB
TypeScript
export interface NezhaWebsocketResponse {
|
|
now: number;
|
|
online?: number;
|
|
servers: NezhaServer[];
|
|
}
|
|
|
|
export interface NezhaServer {
|
|
id: number;
|
|
name: string;
|
|
public_note: string;
|
|
last_active: string;
|
|
country_code: string;
|
|
host: NezhaServerHost;
|
|
state: NezhaServerStatus;
|
|
}
|
|
|
|
export interface NezhaServerHost {
|
|
platform: string;
|
|
platform_version: string;
|
|
cpu: string[];
|
|
gpu: string[];
|
|
mem_total: number;
|
|
disk_total: number;
|
|
swap_total: number;
|
|
arch: string;
|
|
boot_time: number;
|
|
version: string;
|
|
}
|
|
|
|
export interface NezhaServerStatus {
|
|
cpu: number;
|
|
mem_used: number;
|
|
swap_used: number;
|
|
disk_used: number;
|
|
net_in_transfer: number;
|
|
net_out_transfer: number;
|
|
net_in_speed: number;
|
|
net_out_speed: number;
|
|
uptime: number;
|
|
load_1: number;
|
|
load_5: number;
|
|
load_15: number;
|
|
tcp_conn_count: number;
|
|
udp_conn_count: number;
|
|
process_count: number;
|
|
temperatures: temperature[];
|
|
gpu: number[];
|
|
}
|
|
|
|
interface temperature {
|
|
Name: string;
|
|
Temperature: number;
|
|
}
|
|
|
|
export interface ServerGroupResponse {
|
|
success: boolean;
|
|
data: ServerGroup[];
|
|
}
|
|
|
|
export interface ServerGroup {
|
|
group: {
|
|
id: number;
|
|
created_at: string;
|
|
updated_at: string;
|
|
name: string;
|
|
};
|
|
servers: number[];
|
|
}
|
|
|
|
export interface LoginUserResponse {
|
|
success: boolean;
|
|
data: {
|
|
id: number;
|
|
username: string;
|
|
password: string;
|
|
created_at: string;
|
|
updated_at: string;
|
|
};
|
|
}
|
|
|
|
export interface MonitorResponse {
|
|
success: boolean;
|
|
data: NezhaMonitor[];
|
|
}
|
|
|
|
export type ServerMonitorChart = {
|
|
[key: string]: {
|
|
created_at: number;
|
|
avg_delay: number;
|
|
packet_loss?: number;
|
|
}[];
|
|
};
|
|
|
|
export interface NezhaMonitor {
|
|
monitor_id: number;
|
|
monitor_name: string;
|
|
display_index?: number;
|
|
server_id: number;
|
|
server_name: string;
|
|
created_at: number[];
|
|
avg_delay: number[];
|
|
packet_loss?: number[];
|
|
}
|
|
|
|
export interface ServiceResponse {
|
|
success: boolean;
|
|
data: {
|
|
services: {
|
|
[key: string]: ServiceData;
|
|
};
|
|
cycle_transfer_stats: CycleTransferStats;
|
|
};
|
|
}
|
|
|
|
export interface ServiceData {
|
|
service_name: string;
|
|
current_up: number;
|
|
current_down: number;
|
|
total_up: number;
|
|
total_down: number;
|
|
delay: number[];
|
|
up: number[];
|
|
down: number[];
|
|
}
|
|
|
|
export interface CycleTransferStats {
|
|
[key: string]: CycleTransferData;
|
|
}
|
|
|
|
export interface CycleTransferData {
|
|
name: string;
|
|
from: string | { [key: string]: string };
|
|
to: string | { [key: string]: string };
|
|
max: number | { [key: string]: number };
|
|
min: number | { [key: string]: number };
|
|
server_name: {
|
|
[key: string]: string;
|
|
};
|
|
transfer: {
|
|
[key: string]: number;
|
|
};
|
|
next_update: {
|
|
[key: string]: string;
|
|
};
|
|
}
|
|
|
|
type SettingConfig = {
|
|
debug: boolean;
|
|
language: string;
|
|
site_name: string;
|
|
user_template: string;
|
|
admin_template: string;
|
|
custom_code: string;
|
|
};
|
|
|
|
export interface SettingResponse {
|
|
success: boolean;
|
|
data: {
|
|
config: SettingConfig;
|
|
version: string;
|
|
tsdb_enabled?: boolean;
|
|
};
|
|
}
|
|
|
|
export type MetricType =
|
|
| "cpu"
|
|
| "memory"
|
|
| "swap"
|
|
| "disk"
|
|
| "net_in_speed"
|
|
| "net_out_speed"
|
|
| "net_in_transfer"
|
|
| "net_out_transfer"
|
|
| "load1"
|
|
| "load5"
|
|
| "load15"
|
|
| "tcp_conn"
|
|
| "udp_conn"
|
|
| "process_count"
|
|
| "temperature"
|
|
| "uptime"
|
|
| "gpu";
|
|
|
|
export type MetricPeriod = "1d" | "7d" | "30d";
|
|
|
|
export interface MetricDataPoint {
|
|
ts: number;
|
|
value: number;
|
|
}
|
|
|
|
export interface ServerMetricsData {
|
|
server_id: number;
|
|
server_name: string;
|
|
metric: string;
|
|
data_points: MetricDataPoint[];
|
|
}
|
|
|
|
export interface ServerMetricsResponse {
|
|
success: boolean;
|
|
data: ServerMetricsData;
|
|
}
|