mirror of
https://github.com/coollabsio/coolify.git
synced 2026-10-28 09:34:36 +08:00
Add a /dashboard/canvas page that renders every team server with its resources and their running or queued deployments, backed by a new ServerCanvasController::dashboard endpoint and a per-server usage endpoint for zone headers. The dashboard remembers the list/canvas choice and each section (projects, servers) its own table/grid view. - Show Deploying/Queued pills on canvas cards and a foldable recent deployments panel; add shared CanvasControls component - Allow backup downloads from the server host via the S3 download storage (PrepareFileDownloadJob accepts a null container) - Extract backup toggle/run actions into ManagesDatabaseBackup and surface them in backup execution headers; merge S3 and retention sections into the general backup settings - Move deployments indicator to the top bar and add a main nav resource menu with submenus; simplify breadcrumbs and settings layouts - Add shared variables overview canvas and scheduled task modals - Add feature tests for dashboard canvas, view modes, navbar submenus, backup S3 downloads and scheduled task modals
42 lines
2.0 KiB
PHP
42 lines
2.0 KiB
PHP
@php
|
|
$destinationRouteParameters = ['destination_uuid' => $destination->uuid];
|
|
$destinationMenuItems = collect([
|
|
[
|
|
'label' => 'General',
|
|
'route' => 'destination.show',
|
|
'active' => request()->routeIs('destination.show'),
|
|
'icon' => 'settings',
|
|
],
|
|
$destination->getMorphClass() === 'App\\Models\\StandaloneDocker' ? [
|
|
'label' => 'Resources',
|
|
'route' => 'destination.resources',
|
|
'active' => request()->routeIs('destination.resources'),
|
|
'icon' => 'grid',
|
|
] : null,
|
|
[
|
|
'label' => 'Danger Zone',
|
|
'route' => 'destination.danger',
|
|
'active' => request()->routeIs('destination.danger'),
|
|
'icon' => 'danger',
|
|
],
|
|
])->filter();
|
|
@endphp
|
|
|
|
<x-main-nav-menu :back-href="route('destination.index')" back-label="Destinations" back-title="Back to the destinations"
|
|
data-settings-search-items="{{ json_encode(settingsSearchItems(['Destination' => $destinationMenuItems], $destinationRouteParameters)) }}">
|
|
<nav aria-label="Destination settings"
|
|
class="grid grid-cols-2 gap-0.5 border-y border-neutral-200 py-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-1 xl:border-y-0 xl:py-0 dark:border-white/[0.06]">
|
|
@foreach ($destinationMenuItems as $menuItem)
|
|
@if ($menuItem['label'] === 'Danger Zone')
|
|
<div class="col-span-full my-2 hidden border-t border-neutral-200 xl:block dark:border-white/[0.06]" aria-hidden="true"></div>
|
|
@endif
|
|
<a wire:key="destination-settings-{{ str($menuItem['label'])->slug() }}"
|
|
@class(['menu-item', 'menu-item-active' => $menuItem['active']])
|
|
{{ wireNavigate() }} href="{{ route($menuItem['route'], $destinationRouteParameters) }}">
|
|
<x-reicon :name="$menuItem['icon']" class="menu-item-icon" />
|
|
<span class="menu-item-label">{{ $menuItem['label'] }}</span>
|
|
</a>
|
|
@endforeach
|
|
</nav>
|
|
</x-main-nav-menu>
|