coolify/resources/views/livewire/project/service/resource-card.blade.php
Andras Bacsai 322bf7c1b2 refactor(database): split import form into Livewire child
Extract the database import form into its own component and add realtime
status refresh components for application server badges and service resource
cards.
2026-05-28 19:30:12 +02:00

77 lines
4.5 KiB
PHP

<div @class([
'border-l border-dashed border-red-500' => str($resource->status)->contains(['exited']),
'border-l border-dashed border-success' => str($resource->status)->contains(['running']),
'border-l border-dashed border-warning' => str($resource->status)->contains(['starting', 'restarting']),
'flex gap-2 box-without-bg-without-border dark:bg-coolgray-100 bg-white dark:hover:text-neutral-300 group',
])>
<div class="flex flex-row w-full">
<div class="flex flex-col flex-1">
<div class="pb-2">
@if ($resource->human_name)
{{ Str::headline($resource->human_name) }}
@else
{{ Str::headline($resource->name) }}
@endif
<span class="text-xs">({{ $resource->image }})</span>
</div>
@if ($resource->configuration_required)
<span class="text-xs text-error">(configuration required)</span>
@endif
@if ($resource->description)
<span class="text-xs">{{ Str::limit($resource->description, 60) }}</span>
@endif
@if ($isApplication && $resource->fqdn)
<span class="flex gap-1 text-xs">{{ Str::limit($resource->fqdn, 60) }}
@can('update', $service)
<x-modal-input title="Edit Domains" :closeOutside="false">
<x-slot:content>
<span class="cursor-pointer">
<svg xmlns="http://www.w3.org/2000/svg"
class="w-4 h-4 dark:text-warning text-coollabs"
viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="2">
<path d="m12 15l8.385-8.415a2.1 2.1 0 0 0-2.97-2.97L9 12v3h3zm4-10l3 3" />
<path d="M9 7.07A7 7 0 0 0 10 21a7 7 0 0 0 6.929-6" />
</g>
</svg>
</span>
</x-slot:content>
<livewire:project.service.edit-domain applicationId="{{ $resource->id }}"
wire:key="edit-domain-{{ $resource->id }}" />
</x-modal-input>
@endcan
</span>
@endif
<div @class(['pt-2' => $isApplication, 'text-xs'])>{{ formatContainerStatus($resource->status) }}</div>
</div>
<div class="flex items-center px-4">
@if ($isDatabase && ($resource->isBackupSolutionAvailable() || $resource->is_migrated))
<a class="mx-4 text-xs font-bold hover:underline" {{ wireNavigate() }}
href="{{ route('project.service.database.backups', [...$parameters, 'stack_service_uuid' => $resource->uuid]) }}">
Backups
</a>
@endif
<a class="mx-4 text-xs font-bold hover:underline" {{ wireNavigate() }}
href="{{ route('project.service.index', [...$parameters, 'stack_service_uuid' => $resource->uuid]) }}">
Settings
</a>
@if (str($resource->status)->contains('running'))
@can('update', $service)
<x-modal-confirmation :title="$isApplication ? 'Confirm Service Application Restart?' : 'Confirm Service Database Restart?'"
buttonTitle="Restart" submitAction="restart" :actions="$isApplication
? [
'The selected service application will be unavailable during the restart.',
'If the service application is currently in use data could be lost.',
]
: [
'This service database will be unavailable during the restart.',
'If the service database is currently in use data could be lost.',
]"
:confirmWithText="false" :confirmWithPassword="false"
:step2ButtonText="$isApplication ? 'Restart Service Container' : 'Restart Database'" />
@endcan
@endif
</div>
</div>
</div>