Files
nextjs-python-web-template/pkgs/ui/src/data/nodeData.tsx
2023-09-01 18:12:35 +02:00

179 lines
3.1 KiB
TypeScript

export interface TableData {
name: string;
status: NodeStatusKeys;
last_seen: number;
}
export const NodeStatus = {
Online: "Online",
Offline: "Offline",
Pending: "Pending",
};
export type NodeStatusKeys = (typeof NodeStatus)[keyof typeof NodeStatus];
function createData(
name: string,
status: NodeStatusKeys,
last_seen: number,
): TableData {
if (status == NodeStatus.Online) {
last_seen = 0;
}
return {
name,
status,
last_seen: last_seen,
};
}
var nameNumber = 0;
// A function to generate random names
function getRandomName(): string {
let names = [
"Alice",
"Bob",
"Charlie",
"David",
"Eve",
"Frank",
"Grace",
"Heidi",
"Ivan",
"Judy",
"Mallory",
"Oscar",
"Peggy",
"Sybil",
"Trent",
"Victor",
"Walter",
"Wendy",
"Zoe",
];
let index = Math.floor(Math.random() * names.length);
return names[index] + nameNumber++;
}
// A function to generate random IPv6 addresses
function getRandomId(): string {
let hex = "0123456789abcdef";
let id = "";
for (let i = 0; i < 8; i++) {
for (let j = 0; j < 4; j++) {
let index = Math.floor(Math.random() * hex.length);
id += hex[index];
}
if (i < 7) {
id += ":";
}
}
return id;
}
// A function to generate random status keys
function getRandomStatus(): NodeStatusKeys {
let statusKeys = [NodeStatus.Online, NodeStatus.Offline, NodeStatus.Pending];
let index = Math.floor(Math.random() * statusKeys.length);
return statusKeys[index];
}
// A function to generate random last seen values
function getRandomLastSeen(status: NodeStatusKeys): number {
if (status === "online") {
return 0;
} else {
let min = 1; // One day ago
let max = 360; // One year ago
return Math.floor(Math.random() * (max - min + 1) + min);
}
}
export const tableData = [
createData(
"Matchbox",
NodeStatus.Pending,
0,
),
createData(
"Ahorn",
NodeStatus.Online,
0,
),
createData(
"Yellow",
NodeStatus.Offline,
16.0,
),
createData(
"Rauter",
NodeStatus.Offline,
6.0,
),
createData(
"Porree",
NodeStatus.Offline,
13,
),
createData(
"Helsinki",
NodeStatus.Online,
0,
),
createData(
"Kelle",
NodeStatus.Online,
0,
),
createData(
"Shodan",
NodeStatus.Online,
0.0,
),
createData(
"Qubasa",
NodeStatus.Offline,
7.0,
),
createData(
"Green",
NodeStatus.Offline,
2,
),
createData("Gum", NodeStatus.Offline, 0),
createData("Xu", NodeStatus.Online, 0),
createData(
"Zaatar",
NodeStatus.Online,
0,
),
];
// A function to execute the createData function with dummy data in a loop 100 times and return an array
export function executeCreateData(): TableData[] {
let result: TableData[] = [];
for (let i = 0; i < 100; i++) {
// Generate dummy data
let name = getRandomName();
let status = getRandomStatus();
let last_seen = getRandomLastSeen(status);
// Call the createData function and push the result to the array
result.push(createData(name, status, last_seen));
}
return result;
}