<div class="flex flex-col gap-2 pb-10" @if ($skip == 0) wire:poll.5000ms='reload_deployments' @endif>
    <div class="flex items-end gap-2 pt-4">
        <h2>Deployments <span class="text-xs">({{ $deployments_count }})</span></h2>
        @if ($show_next)
            <x-forms.button wire:click="load_deployments({{ $default_take }})">Next Page
            </x-forms.button>
        @endif
    </div>
    <form class="flex items-end gap-2">
        <x-forms.input id="pull_request_id" label="Pull Request"></x-forms.input>
        <x-forms.button type="submit">Filter</x-forms.button>
    </form>
    @forelse ($deployments as $deployment)
        <a @class([
            'bg-coolgray-100 p-2 border-l border-dashed transition-colors hover:no-underline',
            'hover:bg-coolgray-200' =>
                data_get($deployment, 'status') === 'queued',
            'border-warning hover:bg-warning hover:text-black' =>
                data_get($deployment, 'status') === 'in_progress'  ||
                data_get($deployment, 'status') === 'cancelled-by-user',
            'border-error hover:bg-error' =>
                data_get($deployment, 'status') === 'failed',
            'border-success hover:bg-success' =>
                data_get($deployment, 'status') === 'finished',
        ]) href="{{ $current_url . '/' . data_get($deployment, 'deployment_uuid') }}"
            class="hover:no-underline">
            <div class="flex flex-col justify-start">
                <div class="flex gap-1">
                    {{ $deployment->created_at }} UTC
                    <span class=" text-warning">></span>
                    {{ $deployment->status }}
                </div>
                @if (data_get($deployment, 'pull_request_id'))
                    <div>
                        <span class=" text-warning">></span>
                        Pull Request #{{ data_get($deployment, 'pull_request_id') }}
                        @if (data_get($deployment, 'is_webhook'))
                            (Webhook)
                        @endif
                        Webhook (SHA
                        @if (data_get($deployment, 'commit'))
                            {{ data_get($deployment, 'commit') }})
                        @else
                            HEAD)
                        @endif
                    </div>
                @endif
            </div>

            <div class="flex flex-col" x-data="elapsedTime('{{ $deployment->deployment_uuid }}', '{{ $deployment->status }}', '{{ $deployment->created_at }}', '{{ $deployment->updated_at }}')">
                <div>
                    @if ($deployment->status !== 'in_progress')
                        Finished <span x-text="measure_since_started()">0s</span> in
                    @else
                        Running for
                    @endif
                    <span class="font-bold" x-text="measure_finished_time()">0s</span>
                </div>
            </div>
        </a>
    @empty
        <div class="">No deployments found</div>
    @endforelse
    <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/relativeTime.js"></script>
    <script>
        document.addEventListener('alpine:init', () => {
            let timers = {};

            dayjs.extend(window.dayjs_plugin_utc);
            dayjs.extend(window.dayjs_plugin_relativeTime);

            Alpine.data('elapsedTime', (uuid, status, created_at, updated_at) => ({
                finished_time: 'calculating...',
                started_time: 'calculating...',
                init() {
                    if (timers[uuid]) {
                        clearInterval(timers[uuid]);
                    }
                    if (status === 'in_progress') {
                        timers[uuid] = setInterval(() => {
                            this.finished_time = dayjs().diff(dayjs.utc(created_at),
                                'second') + 's'
                        }, 1000);
                    } else {
                        let seconds = dayjs.utc(updated_at).diff(dayjs.utc(created_at), 'second')
                        this.finished_time = seconds + 's';
                    }
                },
                measure_finished_time() {
                    return this.finished_time;
                },
                measure_since_started() {
                    return dayjs.utc(created_at).fromNow();
                }
            }))
        })
    </script>
</div>