fix: service env orders, application env orders

This commit is contained in:
Andras Bacsai
2024-10-04 12:08:57 +02:00
parent 611f70d79f
commit c2c0afa0ba
3 changed files with 15 additions and 27 deletions

View File

@@ -53,30 +53,16 @@ class All extends Component
public function sortEnvironmentVariables() public function sortEnvironmentVariables()
{ {
if ($this->resource->type() === 'application') { if (! data_get($this->resource, 'settings.is_env_sorting_enabled')) {
$this->resource->load(['environment_variables', 'environment_variables_preview']); if ($this->resource->environment_variables) {
} else { $this->resource->environment_variables = $this->resource->environment_variables->sortBy('order')->values();
$this->resource->load(['environment_variables']); }
if ($this->resource->environment_variables_preview) {
$this->resource->environment_variables_preview = $this->resource->environment_variables_preview->sortBy('order')->values();
}
} }
$sortBy = data_get($this->resource, 'settings.is_env_sorting_enabled') ? 'key' : 'order';
$sortFunction = function ($variables) use ($sortBy) {
if (! $variables) {
return $variables;
}
if ($sortBy === 'key') {
return $variables->sortBy(function ($item) {
return strtolower($item->key);
}, SORT_NATURAL | SORT_FLAG_CASE)->values();
} else {
return $variables->sortBy('order')->values();
}
};
$this->resource->environment_variables = $sortFunction($this->resource->environment_variables);
$this->resource->environment_variables_preview = $sortFunction($this->resource->environment_variables_preview);
$this->getDevView(); $this->getDevView();
} }
@@ -121,6 +107,8 @@ class All extends Component
$this->sortEnvironmentVariables(); $this->sortEnvironmentVariables();
} catch (\Throwable $e) { } catch (\Throwable $e) {
return handleError($e, $this); return handleError($e, $this);
} finally {
$this->refreshEnvs();
} }
} }

View File

@@ -1076,12 +1076,12 @@ class Service extends BaseModel
public function environment_variables(): HasMany public function environment_variables(): HasMany
{ {
return $this->hasMany(EnvironmentVariable::class)->orderByRaw("key LIKE 'SERVICE%' DESC, value ASC"); return $this->hasMany(EnvironmentVariable::class)->orderByRaw("LOWER(key) LIKE LOWER('SERVICE%') DESC, LOWER(key) ASC");
} }
public function environment_variables_preview(): HasMany public function environment_variables_preview(): HasMany
{ {
return $this->hasMany(EnvironmentVariable::class)->where('is_preview', true)->orderBy('key', 'asc'); return $this->hasMany(EnvironmentVariable::class)->where('is_preview', true)->orderByRaw("LOWER(key) LIKE LOWER('SERVICE%') DESC, LOWER(key) ASC");
} }
public function workdir() public function workdir()

View File

@@ -56,13 +56,13 @@
@else @else
<form wire:submit.prevent='submit' class="flex flex-col gap-2"> <form wire:submit.prevent='submit' class="flex flex-col gap-2">
<x-forms.textarea rows="10" class="whitespace-pre-wrap" id="variables" wire:model="variables" label="Production Environment Variables"></x-forms.textarea> <x-forms.textarea rows="10" class="whitespace-pre-wrap" id="variables" wire:model="variables" label="Production Environment Variables"></x-forms.textarea>
@if ($showPreview) @if ($showPreview)
<x-forms.textarea rows="10" class="whitespace-pre-wrap" label="Preview Deployments Environment Variables" <x-forms.textarea rows="10" class="whitespace-pre-wrap" label="Preview Deployments Environment Variables"
id="variablesPreview" wire:model="variablesPreview"></x-forms.textarea> id="variablesPreview" wire:model="variablesPreview"></x-forms.textarea>
@endif @endif
<x-forms.button type="submit" class="btn btn-primary">Save All Environment Variables</x-forms.button> <x-forms.button type="submit" class="btn btn-primary">Save All Environment Variables</x-forms.button>
</form> </form>
@endif @endif
</div> </div>