feat: improve deployment UI

- show full commit message with an expand button
- show only the first 7 characters of the commit hash, like on GitHub
This commit is contained in:
peaklabs-dev
2025-01-16 14:53:49 +01:00
parent 1169a49373
commit 48b10de4f3

View File

@@ -9,7 +9,7 @@
@if ($skip == 0) wire:poll.5000ms='reload_deployments' @endif> @if ($skip == 0) wire:poll.5000ms='reload_deployments' @endif>
<div class="flex items-end gap-2 pt-4"> <div class="flex items-end gap-2 pt-4">
<h2>Deployments <span class="text-xs">({{ $deployments_count }})</span></h2> <h2>Deployments <span class="text-xs">({{ $deployments_count }})</span></h2>
@if ($deployments_count > 0 && $deployments_count > $default_take) @if ($deployments_count > 0)
<x-forms.button disabled="{{ !$show_prev }}" wire:click="previous_page('{{ $default_take }}')"><svg <x-forms.button disabled="{{ !$show_prev }}" wire:click="previous_page('{{ $default_take }}')"><svg
class="w-6 h-6" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> class="w-6 h-6" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
@@ -30,14 +30,16 @@
@endif @endif
@forelse ($deployments as $deployment) @forelse ($deployments as $deployment)
<div @class([ <div @class([
'dark:bg-coolgray-100 p-2 border-l-2 transition-colors hover:no-underline box-without-bg-without-border bg-white flex-col cursor-pointer dark:hover:text-neutral-400 dark:hover:bg-coolgray-200', 'dark:bg-coolgray-100 p-2 border-l-2 transition-colors box-without-bg-without-border bg-white flex-col',
'border-blue-500/50 border-dashed' => data_get($deployment, 'status') === 'in_progress', 'border-blue-500/50 border-dashed' => data_get($deployment, 'status') === 'in_progress',
'border-purple-500/50 border-dashed' => data_get($deployment, 'status') === 'queued', 'border-purple-500/50 border-dashed' => data_get($deployment, 'status') === 'queued',
'border-white border-dashed' => data_get($deployment, 'status') === 'cancelled-by-user', 'border-white border-dashed' => data_get($deployment, 'status') === 'cancelled-by-user',
'border-error' => data_get($deployment, 'status') === 'failed', 'border-error' => data_get($deployment, 'status') === 'failed',
'border-success' => data_get($deployment, 'status') === 'finished', 'border-success' => data_get($deployment, 'status') === 'finished',
]) wire:navigate ])>
href="{{ $current_url . '/' . data_get($deployment, 'deployment_uuid') }}"> <a href="{{ $current_url . '/' . data_get($deployment, 'deployment_uuid') }}"
wire:navigate
class="block">
<div class="flex flex-col justify-start"> <div class="flex flex-col justify-start">
<div class="flex items-center gap-2 mb-2"> <div class="flex items-center gap-2 mb-2">
<span @class([ <span @class([
@@ -73,19 +75,19 @@
@endif @endif
<div class="text-gray-600 dark:text-gray-400 text-sm mt-2"> <div class="text-gray-600 dark:text-gray-400 text-sm mt-2">
<div class="flex items-center gap-2"> <div class="flex flex-col gap-1">
@if (data_get($deployment, 'commit')) @if (data_get($deployment, 'commit'))
<span> <div class="flex flex-col" x-data="{ expanded: false }">
Commit: <span class="dark:hover:text-white cursor-pointer underline" <div class="flex items-center gap-2">
x-on:click.stop="goto('{{ $application->gitCommitLink(data_get($deployment, 'commit')) }}')"> <span class="font-medium">Commit:</span>
@if ($deployment->commitMessage()) <a wire:navigate.prevent
{{ data_get_str($deployment, 'commit')->limit(7) }} - {{ $deployment->commitMessage() }} href="{{ $application->gitCommitLink(data_get($deployment, 'commit')) }}"
@else target="_blank"
{{ data_get_str($deployment, 'commit')->limit(7) }} class="underline"
@endif >
</span> {{ substr(data_get($deployment, 'commit'), 0, 7) }}
</span> </a>
@endif @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 dark:border-gray-500/30 font-medium backdrop-blur-sm"> <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 dark:border-gray-500/30 font-medium backdrop-blur-sm">
@if (data_get($deployment, 'is_webhook')) @if (data_get($deployment, 'is_webhook'))
Webhook Webhook
@@ -102,6 +104,52 @@
Manual Manual
@endif @endif
</span> </span>
@endif
@if ($deployment->commitMessage())
<span class="text-sm text-gray-600 dark:text-gray-400">-</span>
<a wire:navigate.prevent
href="{{ $application->gitCommitLink(data_get($deployment, 'commit')) }}"
target="_blank"
class="text-sm text-gray-600 dark:text-gray-400 truncate max-w-md underline"
>
{{ Str::before($deployment->commitMessage(), "\n") }}
</a>
<button
@click="expanded = !expanded"
class="text-sm 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>
<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 dark:border-gray-500/30 font-medium backdrop-blur-sm">
@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-sm text-gray-600 dark:text-gray-400">
{{ Str::after($deployment->commitMessage(), "\n") }}
</div>
@endif
</div>
@endif
</div> </div>
</div> </div>
@@ -111,6 +159,7 @@
</div> </div>
@endif @endif
</div> </div>
</a>
</div> </div>
@empty @empty
<div class="">No deployments found</div> <div class="">No deployments found</div>