From c5083ea897932d2785491350dd77196c05422f2b Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 21 Jun 2024 13:54:13 +0200 Subject: [PATCH] feat: preselect prod or first env when selecting a project feat: quickly switch between environments --- .../Project/Resource/EnvironmentSelect.php | 35 +++++++++++++++++++ app/Models/Project.php | 10 ++++++ .../views/livewire/project/index.blade.php | 2 +- .../resource/environment-select.blade.php | 8 +++++ .../livewire/project/resource/index.blade.php | 6 +++- 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 app/Livewire/Project/Resource/EnvironmentSelect.php create mode 100644 resources/views/livewire/project/resource/environment-select.blade.php diff --git a/app/Livewire/Project/Resource/EnvironmentSelect.php b/app/Livewire/Project/Resource/EnvironmentSelect.php new file mode 100644 index 000000000..efb1b6ca2 --- /dev/null +++ b/app/Livewire/Project/Resource/EnvironmentSelect.php @@ -0,0 +1,35 @@ +selectedEnvironment = request()->route('environment_name'); + $this->project_uuid = request()->route('project_uuid'); + } + + public function updatedSelectedEnvironment($value) + { + if ($value === 'edit') { + return redirect()->route('project.show', [ + 'project_uuid' => $this->project_uuid, + ]); + } else { + return redirect()->route('project.resource.index', [ + 'project_uuid' => $this->project_uuid, + 'environment_name' => $value, + ]); + } + } +} diff --git a/app/Models/Project.php b/app/Models/Project.php index acc98e341..1cbce6cac 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -112,4 +112,14 @@ public function databases() { return $this->postgresqls()->get()->merge($this->redis()->get())->merge($this->mongodbs()->get())->merge($this->mysqls()->get())->merge($this->mariadbs()->get())->merge($this->keydbs()->get())->merge($this->dragonflies()->get())->merge($this->clickhouses()->get()); } + + public function default_environment() + { + $default = $this->environments()->where('name', 'production')->first(); + if (! $default) { + $default = $this->environments()->sortBy('created_at')->first(); + } + + return $default; + } } diff --git a/resources/views/livewire/project/index.blade.php b/resources/views/livewire/project/index.blade.php index b720885ff..0a5cb26bb 100644 --- a/resources/views/livewire/project/index.blade.php +++ b/resources/views/livewire/project/index.blade.php @@ -13,7 +13,7 @@ @forelse ($projects as $project)
+ href="{{ route('project.resource.index', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => $project->default_environment()->name]) }}">
{{ $project->name }}
{{ $project->description }}
diff --git a/resources/views/livewire/project/resource/environment-select.blade.php b/resources/views/livewire/project/resource/environment-select.blade.php new file mode 100644 index 000000000..cd9219efc --- /dev/null +++ b/resources/views/livewire/project/resource/environment-select.blade.php @@ -0,0 +1,8 @@ + + + + @foreach ($environments as $environment) + + @endforeach + diff --git a/resources/views/livewire/project/resource/index.blade.php b/resources/views/livewire/project/resource/index.blade.php index 1f9008e25..f623b41b5 100644 --- a/resources/views/livewire/project/resource/index.blade.php +++ b/resources/views/livewire/project/resource/index.blade.php @@ -36,6 +36,7 @@ class="button">+ d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"> +
{{ request()->route('environment_name') }}
@@ -43,8 +44,11 @@ class="button">+ +
+ +
@if ($environment->isEmpty()) - + Add New Resource @else