add player count and track
This commit is contained in:
@@ -5,68 +5,72 @@
|
|||||||
|
|
||||||
function getStatusColor(status: string) {
|
function getStatusColor(status: string) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 'SERVICE_RUNNING\r\n': return 'bg-green-500';
|
case 'SERVICE_RUNNING\r\n':
|
||||||
case 'SERVICE_STOPPED\r\n': return 'bg-red-500';
|
return 'bg-green-500';
|
||||||
case 'SERVICE_RESTARTING\r\n': return 'bg-yellow-500';
|
case 'SERVICE_STOPPED\r\n':
|
||||||
default: return 'bg-gray-500';
|
return 'bg-red-500';
|
||||||
|
case 'SERVICE_RESTARTING\r\n':
|
||||||
|
return 'bg-yellow-500';
|
||||||
|
default:
|
||||||
|
return 'bg-gray-500';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="bg-gray-800 rounded-lg shadow-lg overflow-hidden border border-gray-700">
|
<div class="overflow-hidden rounded-lg border border-gray-700 bg-gray-800 shadow-lg">
|
||||||
<a
|
<a href={`dashboard/server/${server.id}`}>
|
||||||
href={`dashboard/server/${server.id}`}
|
|
||||||
>
|
|
||||||
<div class="p-4">
|
<div class="p-4">
|
||||||
<div class="flex justify-between items-start">
|
<div class="flex items-start justify-between">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium">{server.name}</h3>
|
<h3 class="text-lg font-medium">{server.name}</h3>
|
||||||
<div class="flex items-center mt-1">
|
<div class="mt-1 flex items-center">
|
||||||
<span class={`inline-block w-2 h-2 rounded-full ${getStatusColor(server.status)} mr-2`}></span>
|
<span class={`inline-block h-2 w-2 rounded-full ${getStatusColor(server.status)} mr-2`}
|
||||||
|
></span>
|
||||||
<span class="text-sm capitalize">{server.status}</span>
|
<span class="text-sm capitalize">{server.status}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button class="text-gray-400 hover:text-white">
|
||||||
class="text-gray-400 hover:text-white"
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="h-5 w-5"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
>
|
>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
<path
|
||||||
<path d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" />
|
d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"
|
||||||
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-4 grid grid-cols-2 gap-2 text-sm text-gray-300">
|
<div class="mt-4 grid grid-cols-2 gap-2 text-sm text-gray-300">
|
||||||
<div>
|
<div>
|
||||||
<span class="text-gray-500">Track:</span> {server.track}
|
<span class="text-gray-500">Track:</span>
|
||||||
|
{server.state.track}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="text-gray-500">Class:</span> {server.carClass}
|
<span class="text-gray-500">Players:</span>
|
||||||
</div>
|
{server.state.playerCount}
|
||||||
<div>
|
|
||||||
<span class="text-gray-500">Players:</span> {server.players}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<span class="text-gray-500">Uptime:</span> {server.uptime}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<form method="POST" action="?/start">
|
<form method="POST" action="?/start">
|
||||||
<div class="bg-gray-900 px-4 py-3 flex justify-between">
|
<div class="flex justify-between bg-gray-900 px-4 py-3">
|
||||||
<input type="hidden" name="id" value={server.id} />
|
<input type="hidden" name="id" value={server.id} />
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
disabled={server.status.startsWith('SERVICE_RUNNING')}
|
disabled={server.status.startsWith('SERVICE_RUNNING')}
|
||||||
onclick={(e) => e.stopPropagation()}
|
onclick={(e) => e.stopPropagation()}
|
||||||
class="px-3 py-1 bg-green-600 hover:bg-green-700 rounded-md text-xs font-medium disabled:opacity-50 disabled:cursor-not-allowed"
|
class="rounded-md bg-green-600 px-3 py-1 text-xs font-medium hover:bg-green-700 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
>
|
>
|
||||||
Start
|
Start
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
disabled={server.status.startsWith('SERVICE_STOPPED')}
|
disabled={server.status.startsWith('SERVICE_STOPPED')}
|
||||||
onclick={(e) => e.stopPropagation()}
|
onclick={(e) => e.stopPropagation()}
|
||||||
class="px-3 py-1 bg-yellow-600 hover:bg-yellow-700 rounded-md text-xs font-medium disabled:opacity-50 disabled:cursor-not-allowed"
|
class="rounded-md bg-yellow-600 px-3 py-1 text-xs font-medium hover:bg-yellow-700 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
formaction="?/restart"
|
formaction="?/restart"
|
||||||
>
|
>
|
||||||
Restart
|
Restart
|
||||||
@@ -74,7 +78,7 @@
|
|||||||
<button
|
<button
|
||||||
disabled={server.status.startsWith('SERVICE_STOPPED')}
|
disabled={server.status.startsWith('SERVICE_STOPPED')}
|
||||||
onclick={(e) => e.stopPropagation()}
|
onclick={(e) => e.stopPropagation()}
|
||||||
class="px-3 py-1 bg-red-600 hover:bg-red-700 rounded-md text-xs font-medium disabled:opacity-50 disabled:cursor-not-allowed"
|
class="rounded-md bg-red-600 px-3 py-1 text-xs font-medium hover:bg-red-700 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
formaction="?/stop"
|
formaction="?/stop"
|
||||||
>
|
>
|
||||||
Stop
|
Stop
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
|
interface State {
|
||||||
|
session: string;
|
||||||
|
playerCount: number;
|
||||||
|
track: string;
|
||||||
|
maxConnections: number;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Server {
|
export interface Server {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string;
|
||||||
status: string;
|
status: string;
|
||||||
|
state: State;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user