Replace #6b16ed (Coolify purple) with #d52b1e (MapleDeploy red) and #fcd452 (Coolify yellow) with #fde047 (Tailwind yellow-300) across all form focus states, dirty indicators, chart colors, and theme tokens. Also fix warning color scale to use standard Tailwind yellow values.
183 lines
13 KiB
PHP
183 lines
13 KiB
PHP
<div>
|
|
<x-slot:title>{{ data_get_str($application, 'name')->limit(10) }} > Deployments | MapleDeploy</x-slot>
|
|
<h1>Deployments</h1>
|
|
<livewire:project.shared.configuration-checker :resource="$application" />
|
|
<livewire:project.application.heading :application="$application" />
|
|
<div class="flex flex-col gap-2 pb-10" @if (!$skip) wire:poll.5000ms='reloadDeployments' @endif>
|
|
<div class="flex items-end gap-2">
|
|
<h2>Deployments <span class="text-xs">({{ $deployments_count }})</span></h2>
|
|
@if ($deployments_count > 0)
|
|
<div class="flex items-center gap-2">
|
|
<x-forms.button disabled="{{ !$showPrev }}" wire:click="previousPage('{{ $defaultTake }}')">
|
|
<svg class="w-4 h-4" viewBox="0 0 24 24">
|
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
|
stroke-width="2" d="m14 6l-6 6l6 6z" />
|
|
</svg>
|
|
</x-forms.button>
|
|
<span class="text-sm text-gray-600 dark:text-gray-400 px-2">
|
|
Page {{ $currentPage }} of {{ ceil($deployments_count / $defaultTake) }}
|
|
</span>
|
|
<x-forms.button disabled="{{ !$showNext }}" wire:click="nextPage('{{ $defaultTake }}')">
|
|
<svg class="w-4 h-4" viewBox="0 0 24 24">
|
|
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
|
stroke-width="2" d="m10 18l6-6l-6-6z" />
|
|
</svg>
|
|
</x-forms.button>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
<form class="flex items-end gap-2">
|
|
<x-forms.input id="pull_request_id" type="number" min="1" label="Pull Request Id"></x-forms.input>
|
|
<x-forms.button type="submit">Filter</x-forms.button>
|
|
@if ($pull_request_id)
|
|
<x-forms.button type="button" wire:click="clearFilter">Clear</x-forms.button>
|
|
@endif
|
|
</form>
|
|
@forelse ($deployments as $deployment)
|
|
<div @class([
|
|
'p-2 border-l-2 bg-white dark:bg-coolgray-100',
|
|
'border-blue-500/50 border-dashed' =>
|
|
data_get($deployment, 'status') === 'in_progress',
|
|
'border-amber-500/50 border-dashed' =>
|
|
data_get($deployment, 'status') === 'queued',
|
|
'border-white border-dashed' =>
|
|
data_get($deployment, 'status') === 'cancelled-by-user',
|
|
'border-error' => data_get($deployment, 'status') === 'failed',
|
|
'border-success' => data_get($deployment, 'status') === 'finished',
|
|
])>
|
|
<a href="{{ $current_url . '/' . data_get($deployment, 'deployment_uuid') }}" {{ wireNavigate() }} class="block">
|
|
<div class="flex flex-col">
|
|
<div class="flex items-center gap-2 mb-2">
|
|
<span @class([
|
|
'px-3 py-1 rounded-md text-xs font-medium shadow-xs',
|
|
'bg-blue-100/80 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300' =>
|
|
data_get($deployment, 'status') === 'in_progress',
|
|
'bg-amber-100/80 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300' =>
|
|
data_get($deployment, 'status') === 'queued',
|
|
'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-200' =>
|
|
data_get($deployment, 'status') === 'failed',
|
|
'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-200' =>
|
|
data_get($deployment, 'status') === 'finished',
|
|
'bg-gray-100 text-gray-700 dark:bg-gray-600/30 dark:text-gray-300' =>
|
|
data_get($deployment, 'status') === 'cancelled-by-user',
|
|
])>
|
|
@php
|
|
$statusText = match (data_get($deployment, 'status')) {
|
|
'finished' => 'Success',
|
|
'in_progress' => 'In Progress',
|
|
'cancelled-by-user' => 'Cancelled',
|
|
'queued' => 'Queued',
|
|
default => ucfirst(data_get($deployment, 'status')),
|
|
};
|
|
@endphp
|
|
{{ $statusText }}
|
|
</span>
|
|
</div>
|
|
@if (data_get($deployment, 'status') !== 'queued')
|
|
<div class="text-gray-600 dark:text-gray-400 text-sm">
|
|
Started:
|
|
{{ formatDateInServerTimezone(data_get($deployment, 'created_at'), data_get($application, 'destination.server')) }}
|
|
@if ($deployment->status !== 'in_progress' && $deployment->status !== 'cancelled-by-user')
|
|
<br>Ended:
|
|
{{ formatDateInServerTimezone(data_get($deployment, 'finished_at'), data_get($application, 'destination.server')) }}
|
|
<br>Duration:
|
|
{{ calculateDuration(data_get($deployment, 'created_at'), data_get($deployment, 'finished_at')) }}
|
|
<br>Finished
|
|
{{ \Carbon\Carbon::parse(data_get($deployment, 'finished_at'))->diffForHumans() }}
|
|
@elseif($deployment->status === 'in_progress')
|
|
<br>Running for:
|
|
{{ calculateDuration(data_get($deployment, 'created_at'), now()) }}
|
|
@endif
|
|
</div>
|
|
@endif
|
|
|
|
<div class="text-gray-600 dark:text-gray-400 text-sm mt-2">
|
|
@if (data_get($deployment, 'commit'))
|
|
<div x-data="{ expanded: false }">
|
|
<div class="flex items-center gap-2">
|
|
<span class="font-medium">Commit:</span>
|
|
<a href="{{ $application->gitCommitLink(data_get($deployment, 'commit')) }}"
|
|
target="_blank" class="underline">
|
|
{{ substr(data_get($deployment, 'commit'), 0, 7) }}
|
|
</a>
|
|
@if (!$deployment->commitMessage())
|
|
<span
|
|
class="bg-gray-200/70 dark:bg-gray-600/20 px-2 py-0.5 rounded-md text-xs text-gray-800 dark:text-gray-100 border border-gray-400/30">
|
|
@if (data_get($deployment, 'is_webhook'))
|
|
Webhook
|
|
@if (data_get($deployment, 'pull_request_id'))
|
|
| Pull Request #{{ data_get($deployment, 'pull_request_id') }}
|
|
@endif
|
|
@elseif (data_get($deployment, 'pull_request_id'))
|
|
Pull Request #{{ data_get($deployment, 'pull_request_id') }}
|
|
@elseif (data_get($deployment, 'rollback') === true)
|
|
Rollback
|
|
@elseif (data_get($deployment, 'is_api'))
|
|
API
|
|
@else
|
|
Manual
|
|
@endif
|
|
</span>
|
|
@endif
|
|
@if ($deployment->commitMessage())
|
|
<span class="text-gray-600 dark:text-gray-400">-</span>
|
|
<a href="{{ $application->gitCommitLink(data_get($deployment, 'commit')) }}"
|
|
target="_blank"
|
|
class="text-gray-600 dark:text-gray-400 truncate max-w-md underline">
|
|
{{ Str::before($deployment->commitMessage(), "\n") }}
|
|
</a>
|
|
@if ($deployment->commitMessage() !== Str::before($deployment->commitMessage(), "\n"))
|
|
<button @click="expanded = !expanded"
|
|
class="text-gray-600 dark:text-gray-400 flex items-center gap-1">
|
|
<svg x-bind:class="{ 'rotate-180': expanded }"
|
|
class="w-4 h-4 transition-transform" viewBox="0 0 24 24">
|
|
<path fill="none" stroke="currentColor"
|
|
stroke-linecap="round" stroke-linejoin="round"
|
|
stroke-width="2" d="m6 9l6 6l6-6" />
|
|
</svg>
|
|
</button>
|
|
@endif
|
|
<span
|
|
class="bg-gray-200/70 dark:bg-gray-600/20 px-2 py-0.5 rounded-md text-xs text-gray-800 dark:text-gray-100 border border-gray-400/30">
|
|
@if (data_get($deployment, 'is_webhook'))
|
|
Webhook
|
|
@if (data_get($deployment, 'pull_request_id'))
|
|
| Pull Request #{{ data_get($deployment, 'pull_request_id') }}
|
|
@endif
|
|
@elseif (data_get($deployment, 'pull_request_id'))
|
|
Pull Request #{{ data_get($deployment, 'pull_request_id') }}
|
|
@elseif (data_get($deployment, 'rollback') === true)
|
|
Rollback
|
|
@elseif (data_get($deployment, 'is_api'))
|
|
API
|
|
@else
|
|
Manual
|
|
@endif
|
|
</span>
|
|
@endif
|
|
</div>
|
|
@if ($deployment->commitMessage())
|
|
<div x-show="expanded" x-transition:enter="transition ease-out duration-200"
|
|
x-transition:enter-start="opacity-0 transform -translate-y-2"
|
|
x-transition:enter-end="opacity-100 transform translate-y-0"
|
|
class="mt-2 ml-4 text-gray-600 dark:text-gray-400">
|
|
{{ Str::after($deployment->commitMessage(), "\n") }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
@if (data_get($deployment, 'server_name') && $application->additional_servers->count() > 0)
|
|
<div class="text-gray-600 dark:text-gray-400 text-sm mt-2">
|
|
Server: {{ data_get($deployment, 'server_name') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</a>
|
|
</div>
|
|
@empty
|
|
<div>No deployments found</div>
|
|
@endforelse
|
|
</div>
|
|
</div>
|