|
|
|
@ -45,6 +45,7 @@ const copie = () => { |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<template> |
|
|
|
|
|
|
|
|
|
<Head title="Spawn" /> |
|
|
|
|
<Layout> |
|
|
|
|
<!-- En-tête --> |
|
|
|
@ -58,7 +59,7 @@ const copie = () => { |
|
|
|
|
</header> |
|
|
|
|
|
|
|
|
|
<!-- Cartes d'information --> |
|
|
|
|
<main class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-6 mb-6 slide-up"> |
|
|
|
|
<main class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3 xl:gap-6 mb-6 slide-up"> |
|
|
|
|
<!-- Carte : Informations Générales --> |
|
|
|
|
<div class="bg-gray-800 rounded-lg shadow-lg p-6"> |
|
|
|
|
<h2 class="text-2xl font-semibold border-b border-gray-700 pb-2 mb-4 flex items-center gap-2"> |
|
|
|
@ -81,13 +82,16 @@ const copie = () => { |
|
|
|
|
<div class="flex flex-col gap-2"> |
|
|
|
|
<div class="flex justify-between items-center mb-1"> |
|
|
|
|
<div class="flex items-center gap-2"> |
|
|
|
|
<span class="font-medium">Lien de connection</span> |
|
|
|
|
<span class="font-medium lg:hidden">Lien de connection</span> |
|
|
|
|
<span class="font-medium xl:hidden lg:block hidden">Lien du server</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex items-center gap-2"> |
|
|
|
|
<p class="text-green-400 hover:underline"> |
|
|
|
|
{{ props.server.ports.length && props.server.status.id < 3 ? "hosting.anulax.ch:" + props.server.ports[0] : "Indisponible" }} |
|
|
|
|
</p> |
|
|
|
|
<button v-show="props.server.ports.length && props.server.status.id < 3" @click="copie" class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-1 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
{{ props.server.ports.length && props.server.status.id < 3 ? "hosting.anulax.ch:" + |
|
|
|
|
props.server.ports[0] : "Indisponible" }} </p> |
|
|
|
|
<button v-show="props.server.ports.length && props.server.status.id < 3" |
|
|
|
|
@click="copie" |
|
|
|
|
class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-1 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<img src="/icons/copy-icon.svg" alt="Copier" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
</div> |
|
|
|
@ -109,7 +113,8 @@ const copie = () => { |
|
|
|
|
</div> |
|
|
|
|
<div class="flex justify-between"> |
|
|
|
|
<span class="font-medium">Dernier lancement</span> |
|
|
|
|
<span class="text-green-400 font-bold">{{ props.server.start ? props.server.start : "Aucun" }}</span> |
|
|
|
|
<span class="text-green-400 font-bold">{{ props.server.start ? props.server.start : "Aucun" |
|
|
|
|
}}</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex justify-between"> |
|
|
|
|
<span class="font-medium">Dernier arrêt </span> |
|
|
|
@ -117,17 +122,19 @@ const copie = () => { |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex gap-3"> |
|
|
|
|
<div @click="start(props.server.uuid)" v-if="props.server.status.id >= 3" class="bg-green-500 hover:bg-green-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<div @click="start(props.server.uuid)" v-if="props.server.status.id >= 3" |
|
|
|
|
class="bg-green-500 hover:bg-green-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<img src="/icons/start-icon.svg" alt="Start" class="w-5 h-5 invert"> |
|
|
|
|
</div> |
|
|
|
|
<div @click="stop(props.server.uuid)" v-else class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<div @click="stop(props.server.uuid)" v-else |
|
|
|
|
class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<img src="/icons/stop-icon.svg" alt="Stop" class="w-5 h-5 invert"> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<!-- Carte : Hardware --> |
|
|
|
|
<div class="bg-gray-800 rounded-lg shadow-lg p-6"> |
|
|
|
|
<div class="bg-gray-800 rounded-lg shadow-lg p-6 lg:col-span-1 md:col-span-2 col-span-1"> |
|
|
|
|
<h2 class="text-2xl font-semibold border-b border-gray-700 pb-2 mb-4 flex items-center gap-2"> |
|
|
|
|
<img src="/icons/hardware-icon.svg" alt="Hardware" class="w-6 h-6 rotate-on-hover invert"> |
|
|
|
|
Hardware(fake) |
|
|
|
@ -152,31 +159,33 @@ const copie = () => { |
|
|
|
|
<section class="max-w-6xl mx-auto mb-10 fade-in"> |
|
|
|
|
<div class="flex justify-between items-center bg-gray-800 p-4 rounded-lg shadow-lg"> |
|
|
|
|
<div class="flex gap-3"> |
|
|
|
|
<button class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<button |
|
|
|
|
class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<img src="/icons/share-icon.svg" alt="Partager" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
</div> |
|
|
|
|
<!-- Actions de gestion --> |
|
|
|
|
<div class="flex gap-3 items-center"> |
|
|
|
|
<form v-show="isFocus" @submit.prevent="edit"> |
|
|
|
|
<TextInput |
|
|
|
|
v-model="editForm.name" |
|
|
|
|
type="text" |
|
|
|
|
class="w-full px-3 py-1 rounded bg-gray-700 text-white" |
|
|
|
|
/> |
|
|
|
|
<TextInput v-model="editForm.name" type="text" |
|
|
|
|
class="w-full px-3 py-1 rounded bg-gray-700 text-white" /> |
|
|
|
|
<button type="submit"></button> |
|
|
|
|
<InputError :message="form.errors.name" class="text-left mt-1"></InputError> |
|
|
|
|
</form> |
|
|
|
|
<button @click="isFocus = !isFocus" class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<button @click="isFocus = !isFocus" |
|
|
|
|
class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<img src="/icons/edit-icon.svg" alt="Edit" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
<button v-if="props.server.public" @click="pub(props.server.uuid)" class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<button v-if="props.server.public" @click="pub(props.server.uuid)" |
|
|
|
|
class="bg-blue-500 hover:bg-blue-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<img src="/icons/lock.svg" alt="Rendre Privé" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
<button v-else @click="pub(props.server.uuid)" class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<button v-else @click="pub(props.server.uuid)" |
|
|
|
|
class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center"> |
|
|
|
|
<img src="/icons/public-icon.svg" alt="Rendre public" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
<button @click="del(props.server.uuid)" class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<button @click="del(props.server.uuid)" |
|
|
|
|
class="bg-red-500 hover:bg-red-600 text-white font-bold p-2 rounded-lg shadow-lg glow-on-hover flex items-center gap-2"> |
|
|
|
|
<img src="/icons/delete-icon.svg" alt="Delete" class="w-5 h-5 invert"> |
|
|
|
|
</button> |
|
|
|
|
</div> |
|
|
|
|