diff --git a/app/Filament/Resources/NodeResource/RelationManagers/AllocationsRelationManager.php b/app/Filament/Resources/NodeResource/RelationManagers/AllocationsRelationManager.php
deleted file mode 100644
index 01cc5e50e..000000000
--- a/app/Filament/Resources/NodeResource/RelationManagers/AllocationsRelationManager.php
+++ /dev/null
@@ -1,160 +0,0 @@
-schema([
- TextInput::make('ip')
- ->required()
- ->maxLength(255),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->recordTitleAttribute('ip')
-
- // Non Primary Allocations
- // ->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->id !== $allocation->server?->allocation_id)
-
- // All assigned allocations
- ->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->server_id === null)
- ->searchable()
- ->columns([
- TextColumn::make('id'),
- TextColumn::make('port')
- ->searchable()
- ->label('Port'),
- TextColumn::make('server.name')
- ->label('Server')
- ->icon('tabler-brand-docker')
- ->searchable()
- ->url(fn (Allocation $allocation): string => $allocation->server ? route('filament.admin.resources.servers.edit', ['record' => $allocation->server]) : ''),
- TextInputColumn::make('ip_alias')
- ->searchable()
- ->label('Alias'),
- TextInputColumn::make('ip')
- ->searchable()
- ->label('IP'),
- ])
- ->filters([
- //
- ])
- ->actions([
- //
- ])
- ->headerActions([
- Tables\Actions\Action::make('create new allocation')->label('Create Allocations')
- ->form(fn () => [
- TextInput::make('allocation_ip')
- ->datalist($this->getOwnerRecord()->ipAddresses())
- ->label('IP Address')
- ->inlineLabel()
- ->ipv4()
- ->helperText("Usually your machine's public IP unless you are port forwarding.")
- ->required(),
- TextInput::make('allocation_alias')
- ->label('Alias')
- ->inlineLabel()
- ->default(null)
- ->helperText('Optional display name to help you remember what these are.')
- ->required(false),
- TagsInput::make('allocation_ports')
- ->placeholder('Examples: 27015, 27017-27019')
- ->helperText(new HtmlString('
- These are the ports that users can connect to this Server through.
-
- You would have to port forward these on your home network.
- '))
- ->label('Ports')
- ->inlineLabel()
- ->live()
- ->afterStateUpdated(function ($state, Set $set) {
- $ports = collect();
- $update = false;
- foreach ($state as $portEntry) {
- if (!str_contains($portEntry, '-')) {
- if (is_numeric($portEntry)) {
- $ports->push((int) $portEntry);
-
- continue;
- }
-
- // Do not add non numerical ports
- $update = true;
-
- continue;
- }
-
- $update = true;
- [$start, $end] = explode('-', $portEntry);
- if (!is_numeric($start) || !is_numeric($end)) {
- continue;
- }
-
- $start = max((int) $start, 0);
- $end = min((int) $end, 2 ** 16 - 1);
- foreach (range($start, $end) as $i) {
- $ports->push($i);
- }
- }
-
- $uniquePorts = $ports->unique()->values();
- if ($ports->count() > $uniquePorts->count()) {
- $update = true;
- $ports = $uniquePorts;
- }
-
- $sortedPorts = $ports->sort()->values();
- if ($sortedPorts->all() !== $ports->all()) {
- $update = true;
- $ports = $sortedPorts;
- }
-
- $ports = $ports->filter(fn ($port) => $port > 1024 && $port < 65535)->values();
-
- if ($update) {
- $set('allocation_ports', $ports->all());
- }
- })
- ->splitKeys(['Tab', ' ', ','])
- ->required(),
- ])
- ->action(fn (array $data) => resolve(AssignmentService::class)->handle($this->getOwnerRecord(), $data)),
- ])
- ->bulkActions([
- BulkActionGroup::make([
- DeleteBulkAction::make()
- ->authorize(fn () => auth()->user()->can('delete allocation')),
- ]),
- ]);
- }
-}
diff --git a/app/Filament/Resources/ServerResource/RelationManagers/AllocationsRelationManager.php b/app/Filament/Resources/ServerResource/RelationManagers/AllocationsRelationManager.php
deleted file mode 100644
index 2060c127f..000000000
--- a/app/Filament/Resources/ServerResource/RelationManagers/AllocationsRelationManager.php
+++ /dev/null
@@ -1,161 +0,0 @@
-schema([
- TextInput::make('ip')
- ->required()
- ->maxLength(255),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->recordTitleAttribute('ip')
- ->recordTitle(fn (Allocation $allocation) => "$allocation->ip:$allocation->port")
- ->checkIfRecordIsSelectableUsing(fn (Allocation $record) => $record->id !== $this->getOwnerRecord()->allocation_id)
- ->inverseRelationship('server')
- ->columns([
- TextColumn::make('ip')->label('IP'),
- TextColumn::make('port')->label('Port'),
- TextInputColumn::make('ip_alias')->label('Alias'),
- IconColumn::make('primary')
- ->icon(fn ($state) => match ($state) {
- true => 'tabler-star-filled',
- default => 'tabler-star',
- })
- ->color(fn ($state) => match ($state) {
- true => 'warning',
- default => 'gray',
- })
- ->action(fn (Allocation $allocation) => $this->getOwnerRecord()->update(['allocation_id' => $allocation->id]))
- ->default(fn (Allocation $allocation) => $allocation->id === $this->getOwnerRecord()->allocation_id)
- ->label('Primary'),
- ])
- ->actions([
- Action::make('make-primary')
- ->action(fn (Allocation $allocation) => $this->getOwnerRecord()->update(['allocation_id' => $allocation->id]))
- ->label(fn (Allocation $allocation) => $allocation->id === $this->getOwnerRecord()->allocation_id ? '' : 'Make Primary'),
- ])
- ->headerActions([
- CreateAction::make()->label('Create Allocation')
- ->createAnother(false)
- ->form(fn () => [
- TextInput::make('allocation_ip')
- ->datalist($this->getOwnerRecord()->node->ipAddresses())
- ->label('IP Address')
- ->inlineLabel()
- ->ipv4()
- ->helperText("Usually your machine's public IP unless you are port forwarding.")
- ->required(),
- TextInput::make('allocation_alias')
- ->label('Alias')
- ->inlineLabel()
- ->default(null)
- ->helperText('Optional display name to help you remember what these are.')
- ->required(false),
- TagsInput::make('allocation_ports')
- ->placeholder('Examples: 27015, 27017-27019')
- ->helperText(new HtmlString('
- These are the ports that users can connect to this Server through.
-
- You would have to port forward these on your home network.
- '))
- ->label('Ports')
- ->inlineLabel()
- ->live()
- ->afterStateUpdated(function ($state, Set $set) {
- $ports = collect();
- $update = false;
- foreach ($state as $portEntry) {
- if (!str_contains($portEntry, '-')) {
- if (is_numeric($portEntry)) {
- $ports->push((int) $portEntry);
-
- continue;
- }
-
- // Do not add non numerical ports
- $update = true;
-
- continue;
- }
-
- $update = true;
- [$start, $end] = explode('-', $portEntry);
- if (!is_numeric($start) || !is_numeric($end)) {
- continue;
- }
-
- $start = max((int) $start, 0);
- $end = min((int) $end, 2 ** 16 - 1);
- foreach (range($start, $end) as $i) {
- $ports->push($i);
- }
- }
-
- $uniquePorts = $ports->unique()->values();
- if ($ports->count() > $uniquePorts->count()) {
- $update = true;
- $ports = $uniquePorts;
- }
-
- $sortedPorts = $ports->sort()->values();
- if ($sortedPorts->all() !== $ports->all()) {
- $update = true;
- $ports = $sortedPorts;
- }
-
- $ports = $ports->filter(fn ($port) => $port > 1024 && $port < 65535)->values();
-
- if ($update) {
- $set('allocation_ports', $ports->all());
- }
- })
- ->splitKeys(['Tab', ' ', ','])
- ->required(),
- ])
- ->action(fn (array $data) => resolve(AssignmentService::class)->handle($this->getOwnerRecord()->node, $data, $this->getOwnerRecord())),
- AssociateAction::make()
- ->multiple()
- ->associateAnother(false)
- ->preloadRecordSelect()
- ->recordSelectOptionsQuery(fn ($query) => $query->whereBelongsTo($this->getOwnerRecord()->node))
- ->label('Add Allocation'),
- ])
- ->bulkActions([
- Tables\Actions\BulkActionGroup::make([
- Tables\Actions\DissociateBulkAction::make(),
- ]),
- ]);
- }
-}