add status monitor to glance
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# flake for blakes nixos config
|
||||
# define new devices in outputs
|
||||
# generation: 364, timestamp: 2025-10-12 14:54:50
|
||||
# generation: 365, timestamp: 2025-10-12 15:04:31
|
||||
{
|
||||
description = "blakes nix config";
|
||||
inputs = {
|
||||
|
||||
@@ -151,15 +151,10 @@ in
|
||||
}
|
||||
{
|
||||
type = "custom-api";
|
||||
title = "minecraft recpro";
|
||||
title = "recpro";
|
||||
url = "https://api.mcstatus.io/v2/status/java/mc.recoil.pro";
|
||||
cache = "5s";
|
||||
allow-insecure = true;
|
||||
url = "\${CRAFTY_URL}/api/v2/servers/\${CRAFTY_SERVER_ID}/stats";
|
||||
headers = {
|
||||
Authorization = "Bearer \${CRAFTY_API_TOKEN}";
|
||||
Accept = "application/json";
|
||||
};
|
||||
template = "<!-- USER SETTINGS SECTION -->\n\n<!-- Change true to false if you wish to not display the MOTD -->\n{{ $displayMOTD := true }}\n\n<!-- END OF USER SETTINGS SECTION -->\n\n{{ $is_running := .JSON.Bool \"data.running\" }}\n{{ $online_players := .JSON.Int \"data.online\" | formatNumber }}\n{{ $max_players := .JSON.Int \"data.max\" | formatNumber }}\n{{ $name := .JSON.String \"data.world_name\" }}\n{{ $size := .JSON.String \"data.world_size\" }}\n{{ $version := .JSON.String \"data.version\" }}\n{{ $icon := .JSON.String \"data.icon\" }}\n{{ $server_ip := .JSON.String \"data.server_id.server_ip\" }}\n{{ $server_port := .JSON.String \"data.server_id.server_port\" }}\n{{ $motd := .JSON.String \"data.desc\" }}\n\n{{ $server_addr := \"\" }}\n{{ if and ($is_running) (eq $server_ip \"127.0.0.1\") }}\n {{ $server_addr = printf \"%s:%s\" (replaceMatches \"https?://\" \"\" \"\${CRAFTY_URL}\") $server_port }}\n{{ else if $is_running }}\n {{ $server_addr = printf \"%s:%s\" $server_ip $server_port }}\n{{ end }}\n\n{{ $starting := false }}\n{{ if and ($is_running) (eq $max_players \"0\") (eq $version \"False\") }}\n {{ $starting = true }}\n{{ end }}\n\n<!-- I couldn't find documentation describing the \"waiting_start\" state or the other booleans below. Implementation might not be correct. -->\n{{ $updating := .JSON.Bool \"data.updating\" }}\n{{ $importing := .JSON.Bool \"data.importing\" }}\n{{ $crashed := .JSON.Bool \"data.crashed\" }}\n\n<div style=\"display:flex; align-items:center; gap:12px;\">\n <!-- Server Icon -->\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if eq $icon \"\" }}\n <img src=\"https://cdn.jsdelivr.net/gh/selfhst/icons/png/minecraft.png\" style=\"width:100%; height:100%; object-fit:contain;\" alt=\"Server icon\">\n {{ else }}\n <img src=\"data:image/png;base64, {{ $icon }}\" style=\"width:100%; height:100%; object-fit:contain;\" alt=\"Server icon\">\n {{ end }}\n </div>\n\n <!-- Right side: Info -->\n <div style=\"display:flex; flex-direction:column;\">\n <!-- First row: Server Name + IP -->\n <div style=\"display:flex; align-items:center; gap:6px;\">\n <span class=\"size-h4 block text-truncate color-primary\">\n {{ $name }}\n </span>\n\n {{ if and ($is_running) (not $starting) (not (eq $server_addr \"\")) }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n <span class=\"size-h6 color-secondary\">\n {{ $server_addr }}\n </span>\n </div>\n {{ end }}\n </div>\n\n <!-- Second row: MOTD & Stats if server is running, otherwise show status msg ... -->\n {{ if and ($is_running) (not $starting) }}\n {{ if and (not (eq $motd \"\")) ($displayMOTD) }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n {{ replaceMatches \"§.\" \"\" $motd }}\n </div>\n {{ end }}\n\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n {{ $version }} - {{ $online_players }}/{{ $max_players }} players - {{ $size }}\n </div>\n\n <!-- lots of assumptions about the boolean states meanings from crafty api.. -->\n {{ else if $starting }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is starting up..</div>\n {{ else if $importing }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is being imported..</div>\n {{ else if $updating }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is being updated..</div>\n {{ else if $crashed }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server has crashed!</div>\n {{ else }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is offline</div>\n {{ end }}\n </div>\n</div>";
|
||||
template = "<div style=\"display:flex; align-items:center; gap:12px;\">\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if .JSON.Bool \"online\" }}\n <img src=\"{{ .JSON.String \"icon\" | safeURL }}\" width=\"64\" height=\"64\" style=\"object-fit:contain;\">\n {{ else }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width:32px; height:32px; opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ end }}\n </div>\n\n <div style=\"flex-grow:1; min-width:0;\">\n <a class=\"size-h4 block text-truncate color-highlight\">\n {{ .JSON.String \"host\" }}\n {{ if .JSON.Bool \"online\" }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Online\"\n ></span>\n {{ else }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Offline\"\n ></span>\n {{ end }}\n </a>\n\n <ul class=\"list-horizontal-text\">\n <li>\n {{ if .JSON.Bool \"online\" }}\n <span>{{ .JSON.String \"version.name_clean\" }}</span>\n {{ else }}\n <span>Offline</span>\n {{ end }}\n </li>\n {{ if .JSON.Bool \"online\" }}\n <li data-popover-type=\"html\">\n <div data-popover-html>\n {{ range .JSON.Array \"players.list\" }}{{ .String \"name_clean\" }}<br>{{ end }}\n </div>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ .JSON.Int \"players.online\" | formatNumber }}/{{ .JSON.Int \"players.max\" | formatNumber }} players\n </p>\n </li>\n {{ else }}\n <li>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n 0 players\n </p>\n </li>\n {{ end }}\n </ul>\n </div>\n</div>";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
[
|
||||
{
|
||||
type = "custom-api";
|
||||
title = "Crafty Controller — Minecraft Server";
|
||||
cache = "5s";
|
||||
allow-insecure = true;
|
||||
url = "\${CRAFTY_URL}/api/v2/servers/\${CRAFTY_SERVER_ID}/stats";
|
||||
headers = {
|
||||
Authorization = "Bearer \${CRAFTY_API_TOKEN}";
|
||||
Accept = "application/json";
|
||||
};
|
||||
template = "<!-- USER SETTINGS SECTION -->\n\n<!-- Change true to false if you wish to not display the MOTD -->\n{{ $displayMOTD := true }}\n\n<!-- END OF USER SETTINGS SECTION -->\n\n{{ $is_running := .JSON.Bool \"data.running\" }}\n{{ $online_players := .JSON.Int \"data.online\" | formatNumber }}\n{{ $max_players := .JSON.Int \"data.max\" | formatNumber }}\n{{ $name := .JSON.String \"data.world_name\" }}\n{{ $size := .JSON.String \"data.world_size\" }}\n{{ $version := .JSON.String \"data.version\" }}\n{{ $icon := .JSON.String \"data.icon\" }}\n{{ $server_ip := .JSON.String \"data.server_id.server_ip\" }}\n{{ $server_port := .JSON.String \"data.server_id.server_port\" }}\n{{ $motd := .JSON.String \"data.desc\" }}\n\n{{ $server_addr := \"\" }}\n{{ if and ($is_running) (eq $server_ip \"127.0.0.1\") }}\n {{ $server_addr = printf \"%s:%s\" (replaceMatches \"https?://\" \"\" \"\${CRAFTY_URL}\") $server_port }}\n{{ else if $is_running }}\n {{ $server_addr = printf \"%s:%s\" $server_ip $server_port }}\n{{ end }}\n\n{{ $starting := false }}\n{{ if and ($is_running) (eq $max_players \"0\") (eq $version \"False\") }}\n {{ $starting = true }}\n{{ end }}\n\n<!-- I couldn't find documentation describing the \"waiting_start\" state or the other booleans below. Implementation might not be correct. -->\n{{ $updating := .JSON.Bool \"data.updating\" }}\n{{ $importing := .JSON.Bool \"data.importing\" }}\n{{ $crashed := .JSON.Bool \"data.crashed\" }}\n\n<div style=\"display:flex; align-items:center; gap:12px;\">\n <!-- Server Icon -->\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if eq $icon \"\" }}\n <img src=\"https://cdn.jsdelivr.net/gh/selfhst/icons/png/minecraft.png\" style=\"width:100%; height:100%; object-fit:contain;\" alt=\"Server icon\">\n {{ else }}\n <img src=\"data:image/png;base64, {{ $icon }}\" style=\"width:100%; height:100%; object-fit:contain;\" alt=\"Server icon\">\n {{ end }}\n </div>\n\n <!-- Right side: Info -->\n <div style=\"display:flex; flex-direction:column;\">\n <!-- First row: Server Name + IP -->\n <div style=\"display:flex; align-items:center; gap:6px;\">\n <span class=\"size-h4 block text-truncate color-primary\">\n {{ $name }}\n </span>\n\n {{ if and ($is_running) (not $starting) (not (eq $server_addr \"\")) }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n <span class=\"size-h6 color-secondary\">\n {{ $server_addr }}\n </span>\n </div>\n {{ end }}\n </div>\n\n <!-- Second row: MOTD & Stats if server is running, otherwise show status msg ... -->\n {{ if and ($is_running) (not $starting) }}\n {{ if and (not (eq $motd \"\")) ($displayMOTD) }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n {{ replaceMatches \"§.\" \"\" $motd }}\n </div>\n {{ end }}\n\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">\n {{ $version }} - {{ $online_players }}/{{ $max_players }} players - {{ $size }}\n </div>\n\n <!-- lots of assumptions about the boolean states meanings from crafty api.. -->\n {{ else if $starting }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is starting up..</div>\n {{ else if $importing }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is being imported..</div>\n {{ else if $updating }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is being updated..</div>\n {{ else if $crashed }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server has crashed!</div>\n {{ else }}\n <div style=\"font-size:0.9em; color:var(--color-secondary);\">Server is offline</div>\n {{ end }}\n </div>\n</div>";
|
||||
title = "Minecraft";
|
||||
url = "https://api.mcstatus.io/v2/status/java/\${MC_SERVER_URL}";
|
||||
cache = "30s";
|
||||
template = "<div style=\"display:flex; align-items:center; gap:12px;\">\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if .JSON.Bool \"online\" }}\n <img src=\"{{ .JSON.String \"icon\" | safeURL }}\" width=\"64\" height=\"64\" style=\"object-fit:contain;\">\n {{ else }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width:32px; height:32px; opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ end }}\n </div>\n\n <div style=\"flex-grow:1; min-width:0;\">\n <a class=\"size-h4 block text-truncate color-highlight\">\n {{ .JSON.String \"host\" }}\n {{ if .JSON.Bool \"online\" }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Online\"\n ></span>\n {{ else }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Offline\"\n ></span>\n {{ end }}\n </a>\n\n <ul class=\"list-horizontal-text\">\n <li>\n {{ if .JSON.Bool \"online\" }}\n <span>{{ .JSON.String \"version.name_clean\" }}</span>\n {{ else }}\n <span>Offline</span>\n {{ end }}\n </li>\n {{ if .JSON.Bool \"online\" }}\n <li data-popover-type=\"html\">\n <div data-popover-html>\n {{ range .JSON.Array \"players.list\" }}{{ .String \"name_clean\" }}<br>{{ end }}\n </div>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ .JSON.Int \"players.online\" | formatNumber }}/{{ .JSON.Int \"players.max\" | formatNumber }} players\n </p>\n </li>\n {{ else }}\n <li>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n 0 players\n </p>\n </li>\n {{ end }}\n </ul>\n </div>\n</div>";
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,97 +1,67 @@
|
||||
- type: custom-api
|
||||
title: Crafty Controller — Minecraft Server
|
||||
cache: 5s
|
||||
allow-insecure: true
|
||||
url: ${CRAFTY_URL}/api/v2/servers/${CRAFTY_SERVER_ID}/stats
|
||||
headers:
|
||||
Authorization: Bearer ${CRAFTY_API_TOKEN}
|
||||
Accept: application/json
|
||||
title: Minecraft
|
||||
url: https://api.mcstatus.io/v2/status/java/${MC_SERVER_URL}
|
||||
cache: 30s
|
||||
template: |
|
||||
<!-- USER SETTINGS SECTION -->
|
||||
|
||||
<!-- Change true to false if you wish to not display the MOTD -->
|
||||
{{ $displayMOTD := true }}
|
||||
|
||||
<!-- END OF USER SETTINGS SECTION -->
|
||||
|
||||
{{ $is_running := .JSON.Bool "data.running" }}
|
||||
{{ $online_players := .JSON.Int "data.online" | formatNumber }}
|
||||
{{ $max_players := .JSON.Int "data.max" | formatNumber }}
|
||||
{{ $name := .JSON.String "data.world_name" }}
|
||||
{{ $size := .JSON.String "data.world_size" }}
|
||||
{{ $version := .JSON.String "data.version" }}
|
||||
{{ $icon := .JSON.String "data.icon" }}
|
||||
{{ $server_ip := .JSON.String "data.server_id.server_ip" }}
|
||||
{{ $server_port := .JSON.String "data.server_id.server_port" }}
|
||||
{{ $motd := .JSON.String "data.desc" }}
|
||||
|
||||
{{ $server_addr := "" }}
|
||||
{{ if and ($is_running) (eq $server_ip "127.0.0.1") }}
|
||||
{{ $server_addr = printf "%s:%s" (replaceMatches "https?://" "" "${CRAFTY_URL}") $server_port }}
|
||||
{{ else if $is_running }}
|
||||
{{ $server_addr = printf "%s:%s" $server_ip $server_port }}
|
||||
{{ end }}
|
||||
|
||||
{{ $starting := false }}
|
||||
{{ if and ($is_running) (eq $max_players "0") (eq $version "False") }}
|
||||
{{ $starting = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- I couldn't find documentation describing the "waiting_start" state or the other booleans below. Implementation might not be correct. -->
|
||||
{{ $updating := .JSON.Bool "data.updating" }}
|
||||
{{ $importing := .JSON.Bool "data.importing" }}
|
||||
{{ $crashed := .JSON.Bool "data.crashed" }}
|
||||
|
||||
<div style="display:flex; align-items:center; gap:12px;">
|
||||
<!-- Server Icon -->
|
||||
<div style="width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;">
|
||||
{{ if eq $icon "" }}
|
||||
<img src="https://cdn.jsdelivr.net/gh/selfhst/icons/png/minecraft.png" style="width:100%; height:100%; object-fit:contain;" alt="Server icon">
|
||||
{{ if .JSON.Bool "online" }}
|
||||
<img src="{{ .JSON.String "icon" | safeURL }}" width="64" height="64" style="object-fit:contain;">
|
||||
{{ else }}
|
||||
<img src="data:image/png;base64, {{ $icon }}" style="width:100%; height:100%; object-fit:contain;" alt="Server icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" style="width:32px; height:32px; opacity:0.5;">
|
||||
<path fill-rule="evenodd" d="M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<!-- Right side: Info -->
|
||||
<div style="display:flex; flex-direction:column;">
|
||||
<!-- First row: Server Name + IP -->
|
||||
<div style="display:flex; align-items:center; gap:6px;">
|
||||
<span class="size-h4 block text-truncate color-primary">
|
||||
{{ $name }}
|
||||
</span>
|
||||
|
||||
{{ if and ($is_running) (not $starting) (not (eq $server_addr "")) }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">
|
||||
<span class="size-h6 color-secondary">
|
||||
{{ $server_addr }}
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<!-- Second row: MOTD & Stats if server is running, otherwise show status msg ... -->
|
||||
{{ if and ($is_running) (not $starting) }}
|
||||
{{ if and (not (eq $motd "")) ($displayMOTD) }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">
|
||||
{{ replaceMatches "§." "" $motd }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">
|
||||
{{ $version }} - {{ $online_players }}/{{ $max_players }} players - {{ $size }}
|
||||
</div>
|
||||
|
||||
<!-- lots of assumptions about the boolean states meanings from crafty api.. -->
|
||||
{{ else if $starting }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">Server is starting up..</div>
|
||||
{{ else if $importing }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">Server is being imported..</div>
|
||||
{{ else if $updating }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">Server is being updated..</div>
|
||||
{{ else if $crashed }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">Server has crashed!</div>
|
||||
<div style="flex-grow:1; min-width:0;">
|
||||
<a class="size-h4 block text-truncate color-highlight">
|
||||
{{ .JSON.String "host" }}
|
||||
{{ if .JSON.Bool "online" }}
|
||||
<span
|
||||
style="width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;"
|
||||
data-popover-type="text"
|
||||
data-popover-text="Online"
|
||||
></span>
|
||||
{{ else }}
|
||||
<div style="font-size:0.9em; color:var(--color-secondary);">Server is offline</div>
|
||||
<span
|
||||
style="width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;"
|
||||
data-popover-type="text"
|
||||
data-popover-text="Offline"
|
||||
></span>
|
||||
{{ end }}
|
||||
</a>
|
||||
|
||||
<ul class="list-horizontal-text">
|
||||
<li>
|
||||
{{ if .JSON.Bool "online" }}
|
||||
<span>{{ .JSON.String "version.name_clean" }}</span>
|
||||
{{ else }}
|
||||
<span>Offline</span>
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ if .JSON.Bool "online" }}
|
||||
<li data-popover-type="html">
|
||||
<div data-popover-html>
|
||||
{{ range .JSON.Array "players.list" }}{{ .String "name_clean" }}<br>{{ end }}
|
||||
</div>
|
||||
<p style="display:inline-flex;align-items:center;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-6" style="height:1em;vertical-align:middle;margin-right:0.5em;">
|
||||
<path fill-rule="evenodd" d="M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
{{ .JSON.Int "players.online" | formatNumber }}/{{ .JSON.Int "players.max" | formatNumber }} players
|
||||
</p>
|
||||
</li>
|
||||
{{ else }}
|
||||
<li>
|
||||
<p style="display:inline-flex;align-items:center;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-6" style="height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;">
|
||||
<path fill-rule="evenodd" d="M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
0 players
|
||||
</p>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user