CluPilotCloud/resources/views/livewire/admin/edit-datacenter.blade.php

71 lines
4.6 KiB
PHP

<div class="rounded-lg bg-surface p-6">
<div class="flex items-center justify-between">
<h3 class="text-base font-semibold text-ink">{{ __('datacenters.edit_title') }}</h3>
<span class="rounded bg-surface-2 px-2 py-0.5 font-mono text-xs text-muted">{{ $code }}</span>
</div>
<div class="mt-4 space-y-4">
{{-- Editable only while nothing references it. The code is not merely a
foreign key: each host's DNS name was minted from it and exists at
the provider, and the machine's own hostname was set from it while
it was built. Renaming a code with hosts in it produces a datacenter
called hel full of machines called fsn-01 so once anything depends
on it the field is a fact, and the reason is named rather than left
for the operator to guess at. --}}
<div>
<label class="text-sm font-medium text-body" for="dc-code">{{ __('datacenters.code') }}</label>
@if ($codeFree)
<input id="dc-code" type="text" wire:model="code" class="mt-1.5 w-full rounded-md border border-line-strong bg-surface px-3 py-2 font-mono text-sm text-ink" />
<p class="mt-1 text-xs text-muted">{{ __('datacenters.code_hint') }}</p>
@else
<input id="dc-code" type="text" value="{{ $code }}" disabled
class="mt-1.5 w-full cursor-not-allowed rounded-md border border-line bg-surface-2 px-3 py-2 font-mono text-sm text-muted" />
<p class="mt-1 text-xs text-muted">{{ __('datacenters.code_locked', ['hosts' => $hostCount, 'orders' => $orderCount]) }}</p>
@endif
@error('code')<p class="mt-1 text-xs text-danger">{{ $message }}</p>@enderror
</div>
<div>
<label class="text-sm font-medium text-body" for="dc-name">{{ __('datacenters.name') }}</label>
<input id="dc-name" type="text" wire:model="name" class="mt-1.5 w-full rounded-md border border-line-strong bg-surface px-3 py-2 text-sm text-ink" />
@error('name')<p class="mt-1 text-xs text-danger">{{ $message }}</p>@enderror
</div>
<div>
<label class="text-sm font-medium text-body" for="dc-facility">{{ __('datacenters.facility') }}</label>
<input id="dc-facility" type="text" wire:model="facility" placeholder="fsn-dc-15"
class="mt-1.5 w-full rounded-md border border-line-strong bg-surface px-3 py-2 text-sm text-ink" />
<p class="mt-1 text-xs text-muted">{{ __('datacenters.facility_hint') }}</p>
@error('facility')<p class="mt-1 text-xs text-danger">{{ $message }}</p>@enderror
</div>
<div>
<label class="text-sm font-medium text-body" for="dc-location">{{ __('datacenters.location') }}</label>
<select id="dc-location" wire:model="location" class="mt-1.5 w-full rounded-md border border-line-strong bg-surface px-3 py-2 text-sm text-body">
<option value="">{{ __('datacenters.no_country') }}</option>
@if ($originalLocation !== '' && ! array_key_exists($originalLocation, $countries))
<option value="{{ $originalLocation }}">{{ $originalLocation }}</option>
@endif
{{-- $cc/$cname, not $code/$name: those are the component's own
properties, and a loop variable of the same name silently
replaces them for the rest of the file. Harmless while
nothing below the loop read them — which stopped being true
the moment the code became an editable field above. --}}
@foreach ($countries as $cc => $cname)
<option value="{{ $cc }}">{{ $cname }} ({{ $cc }})</option>
@endforeach
</select>
@error('location')<p class="mt-1 text-xs text-danger">{{ $message }}</p>@enderror
</div>
</div>
{{-- The one lifecycle action a location needs, and the form did not offer
it: a datacenter could be created and never switched off again. --}}
<div class="mt-5 rounded-lg border border-line bg-surface-2 p-4">
<x-ui.checkbox name="active" wire:model="active" :label="__('datacenters.active_label')" />
<p class="mt-1.5 pl-7 text-xs text-muted">{{ __('datacenters.active_hint') }}</p>
</div>
<div class="mt-6 flex justify-end gap-3">
<x-ui.button variant="secondary" x-on:click="Livewire.dispatch('closeModal')">{{ __('datacenters.cancel') }}</x-ui.button>
<x-ui.button variant="primary" wire:click="save" wire:loading.attr="disabled">{{ __('datacenters.save') }}</x-ui.button>
</div>
</div>