frontend/classes/Pod.ts

124 lines
2.3 KiB
TypeScript

import dayjs from "dayjs";
import advancedFormat from "dayjs/plugin/advancedFormat";
import type { Metadata } from "./Metadata";
import type { HasMetadata } from "./ResourceRepo";
export class Pod implements HasMetadata
{
status?: Status
constructor (
public metadata: Metadata,
public spec: Spec
) { }
}
class Spec {
nodeName?: string;
constructor (
public containers: Container[]
) { }
}
class Status
{
phase?: PodStatus
}
class Container
{
}
enum PodStatus
{
RUNNING = "Running",
SUCCEEDED = "Succeeded",
FAILED = "Failed"
}
enum ChronoUnit
{
SECOND, MINUTE, HOUR, DAY
}
export function calcAge(datetime: string | undefined)
{
dayjs.extend(advancedFormat);
if(datetime != null)
{
const today = Number(dayjs(useSeconds().value).format('X'));
const createdAt = Number(dayjs(datetime).format('X'));
const dif = today - createdAt;
if(dif < 60)
{
return format(dif, ChronoUnit.SECOND);
}
if(dif < 60 * 60)
{
const minutes = Math.floor((dif / 60));
return format(minutes, ChronoUnit.MINUTE);
}
if(dif < 60 * 60 * 24)
{
const hours = Math.floor(dif / (60 * 60));
return format(hours, ChronoUnit.HOUR);
}
else
{
const days = Math.floor(dif / (60 * 60 * 24));
return format(days, ChronoUnit.DAY);
}
}
return "-";
}
function format(count: number, unit: ChronoUnit): string
{
if(unit === ChronoUnit.SECOND)
{
if(count != 1)
{
return count + " Sekunden";
}
else
{
return count + " Sekunde";
}
}
if(unit === ChronoUnit.MINUTE)
{
if(count != 1)
{
return count + " Minuten";
}
else
{
return count + " Minute";
}
}
if(unit === ChronoUnit.HOUR)
{
if(count != 1)
{
return count + " Stunden";
}
else
{
return count + " Stunde";
}
}
if(unit === ChronoUnit.DAY)
{
if(count != 1)
{
return count + " Tage";
}
else
{
return count + " Tag";
}
}
return "-";
}