mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-04 23:42:34 +00:00
Feature/add remote server logs (#159)
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
<x-server-layout :server="$server">
|
||||
<x-slot name="pageTitle">{{ $server->name }} Logs</x-slot>
|
||||
@if (isset($pageTitle))
|
||||
<x-slot name="pageTitle">{{ $server->name }} - {{ $pageTitle }}</x-slot>
|
||||
@endif
|
||||
|
||||
@include("server-logs.partials.logs-list")
|
||||
@include("server-logs.partials.header")
|
||||
@include("server-logs.partials.logs-list-live")
|
||||
</x-server-layout>
|
||||
|
59
resources/views/server-logs/partials/add-log.blade.php
Normal file
59
resources/views/server-logs/partials/add-log.blade.php
Normal file
@ -0,0 +1,59 @@
|
||||
<div x-data="">
|
||||
<x-card-header>
|
||||
<x-slot name="title">{{ __("Manage your remote logs") }}</x-slot>
|
||||
<x-slot name="description">
|
||||
{{ __("Here you can add new logs") }}
|
||||
</x-slot>
|
||||
<x-slot name="aside">
|
||||
<div class="flex flex-col items-end lg:flex-row lg:items-center">
|
||||
<x-primary-button class="cursor-pointer" x-on:click="$dispatch('open-modal', 'add-log')">
|
||||
{{ __("Add Remote Log") }}
|
||||
</x-primary-button>
|
||||
|
||||
<x-modal name="add-log">
|
||||
<form
|
||||
id="add-log-form"
|
||||
hx-post="{{ route("servers.logs.remote.store", ["server" => $server]) }}"
|
||||
hx-select="#add-log-form"
|
||||
hx-swap="outerHTML"
|
||||
class="p-6"
|
||||
>
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __("Add Remote Log") }}
|
||||
</h2>
|
||||
|
||||
<div class="mt-6">
|
||||
<x-input-label for="path" :value="__('Please introduce the full path to the log file.')" />
|
||||
<x-text-input
|
||||
list="sites"
|
||||
value="{{ old('path') }}"
|
||||
id="path"
|
||||
name="path"
|
||||
type="text"
|
||||
class="mt-1 w-full"
|
||||
/>
|
||||
<datalist id="sites">
|
||||
@foreach ($server->sites as $site)
|
||||
<option>{{ str($site->path)->append("/") }}</option>
|
||||
@endforeach
|
||||
</datalist>
|
||||
@error("path")
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center justify-end">
|
||||
<x-secondary-button type="button" x-on:click="$dispatch('close')">
|
||||
{{ __("Cancel") }}
|
||||
</x-secondary-button>
|
||||
|
||||
<x-primary-button class="ml-3" hx-disable>
|
||||
{{ __("Save") }}
|
||||
</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</x-modal>
|
||||
</div>
|
||||
</x-slot>
|
||||
</x-card-header>
|
||||
</div>
|
54
resources/views/server-logs/partials/header.blade.php
Normal file
54
resources/views/server-logs/partials/header.blade.php
Normal file
@ -0,0 +1,54 @@
|
||||
@if (isset($pageTitle))
|
||||
<x-slot name="pageTitle">{{ $pageTitle }} - {{ $server->name }}</x-slot>
|
||||
@endif
|
||||
|
||||
<x-slot name="header">
|
||||
<div class="hidden md:flex md:items-center md:justify-start">
|
||||
<x-tab-item
|
||||
class="mr-1"
|
||||
:href="route('servers.logs', ['server' => $server])"
|
||||
:active="request()->routeIs('servers.logs')"
|
||||
>
|
||||
<x-heroicon name="o-square-3-stack-3d" class="h-5 w-5" />
|
||||
<span class="ml-2 hidden xl:block">{{ __("Vito Logs") }}</span>
|
||||
</x-tab-item>
|
||||
<x-tab-item
|
||||
class="mr-1"
|
||||
:href="route('servers.logs.remote', ['server' => $server])"
|
||||
:active="request()->routeIs('servers.logs.remote')"
|
||||
>
|
||||
<x-heroicon name="o-document-magnifying-glass" class="h-5 w-5" />
|
||||
<span class="ml-2 hidden xl:block">{{ __("Remote Logs") }}</span>
|
||||
</x-tab-item>
|
||||
</div>
|
||||
<div class="md:hidden">
|
||||
<x-dropdown align="left">
|
||||
<x-slot name="trigger">
|
||||
<div
|
||||
class="flex w-full cursor-pointer items-center rounded-md border border-gray-300 bg-gray-50 p-2.5 text-sm text-gray-900 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-primary-500 dark:focus:ring-primary-500"
|
||||
>
|
||||
Select
|
||||
<button type="button" class="ml-2">
|
||||
<x-heroicon name="o-chevron-down" class="h-4 w-4 text-gray-400" />
|
||||
</button>
|
||||
</div>
|
||||
</x-slot>
|
||||
<x-slot name="content">
|
||||
<x-dropdown-link
|
||||
:href="route('servers.logs', ['server' => $server])"
|
||||
:active="request()->routeIs('servers.logs')"
|
||||
>
|
||||
<x-heroicon name="o-cog-6-tooth" class="h-5 w-5" />
|
||||
<span class="ml-2">{{ __("Vito Logs") }}</span>
|
||||
</x-dropdown-link>
|
||||
<x-dropdown-link
|
||||
:href="route('servers.logs.remote', ['server' => $server])"
|
||||
:active="request()->routeIs('servers.logs.remote')"
|
||||
>
|
||||
<x-heroicon name="o-document-magnifying-glass" class="h-5 w-5" />
|
||||
<span class="ml-2">{{ __("Remote Logs") }}</span>
|
||||
</x-dropdown-link>
|
||||
</x-slot>
|
||||
</x-dropdown>
|
||||
</div>
|
||||
</x-slot>
|
@ -1,31 +1,54 @@
|
||||
@php
|
||||
if (isset($site)) {
|
||||
$logs = $site
|
||||
->logs()
|
||||
if (isset($site) && ! isset($remote)) {
|
||||
$logs = \App\Models\ServerLog::getRemote($site->logs(), false)
|
||||
->latest()
|
||||
->paginate(10);
|
||||
} elseif (isset($remote)) {
|
||||
$logs = \App\Models\ServerLog::getRemote($server->logs())
|
||||
->latest()
|
||||
->paginate(10);
|
||||
} else {
|
||||
$logs = $server
|
||||
->logs()
|
||||
$logs = \App\Models\ServerLog::getRemote($server->logs(), false)
|
||||
->latest()
|
||||
->paginate(10);
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div x-data="">
|
||||
<div x-data="{
|
||||
deleteAction: '',
|
||||
}">
|
||||
<x-card-header>
|
||||
<x-slot name="title">{{ __("Logs") }}</x-slot>
|
||||
<x-slot name="title">
|
||||
{{ $pageTitle ?? "Logs" }}
|
||||
</x-slot>
|
||||
</x-card-header>
|
||||
<x-live id="live-server-logs">
|
||||
<x-table>
|
||||
<x-tr>
|
||||
<x-th>{{ __("Event") }}</x-th>
|
||||
<x-th>
|
||||
@isset($remote)
|
||||
{{ __("Path") }}
|
||||
@else
|
||||
{{ __("Event") }}
|
||||
@endisset
|
||||
</x-th>
|
||||
<x-th>{{ __("Date") }}</x-th>
|
||||
<x-th></x-th>
|
||||
</x-tr>
|
||||
@foreach ($logs as $log)
|
||||
<x-tr>
|
||||
<x-td>{{ $log->type }}</x-td>
|
||||
<x-td class="flex flex-col">
|
||||
@isset($remote)
|
||||
{{ $log->name }}
|
||||
@else
|
||||
{{ $log->type }}
|
||||
@if (data_get($log, "type") === "remote")
|
||||
<span class="text-sm text-gray-400">
|
||||
{{ $log->name }}
|
||||
</span>
|
||||
@endif
|
||||
@endif
|
||||
</x-td>
|
||||
<x-td>
|
||||
<x-datetime :value="$log->created_at" />
|
||||
</x-td>
|
||||
@ -38,6 +61,14 @@
|
||||
>
|
||||
<x-heroicon name="o-eye" class="h-5 w-5" />
|
||||
</x-icon-button>
|
||||
|
||||
@if (isset($remote) && ! isset($site))
|
||||
<x-icon-button
|
||||
x-on:click="deleteAction = '{{ route('servers.logs.remote.destroy', ['server' => $server, 'serverLog' => $log->id]) }}'; $dispatch('open-modal', 'delete-remote-log')"
|
||||
>
|
||||
<x-heroicon name="o-trash" class="h-5 w-5" />
|
||||
</x-icon-button>
|
||||
@endif
|
||||
</x-td>
|
||||
</x-tr>
|
||||
@endforeach
|
||||
@ -48,6 +79,7 @@
|
||||
</div>
|
||||
@endif
|
||||
</x-live>
|
||||
<div id="delete"></div>
|
||||
<x-modal name="show-log" max-width="4xl">
|
||||
<div class="p-6">
|
||||
<h2 class="mb-5 text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
@ -67,4 +99,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</x-modal>
|
||||
<x-confirmation-modal
|
||||
name="delete-remote-log"
|
||||
title="Confirm"
|
||||
description="Are you sure that you want to delete this log?"
|
||||
method="delete"
|
||||
x-bind:action="deleteAction"
|
||||
/>
|
||||
</div>
|
6
resources/views/server-logs/remote-logs.blade.php
Normal file
6
resources/views/server-logs/remote-logs.blade.php
Normal file
@ -0,0 +1,6 @@
|
||||
<x-server-layout :server="$server">
|
||||
@include("server-logs.partials.header")
|
||||
|
||||
@include("server-logs.partials.add-log")
|
||||
@include("server-logs.partials.logs-list-live")
|
||||
</x-server-layout>
|
Reference in New Issue
Block a user