From fd897355215f9d9f656c50a8fb600d443ebcba4a Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 26 Jul 2023 13:23:47 +0200 Subject: [PATCH] Added +add flows everywhere ui: changed vibrant button to not so vibrant --- app/Http/Controllers/ProjectController.php | 12 +- app/Http/Livewire/PrivateKey/Create.php | 2 +- app/Http/Livewire/Project/AddEmpty.php | 36 ++++ app/Http/Livewire/Project/AddEnvironment.php | 39 ++++ .../Project/New/GithubPrivateRepository.php | 2 + .../New/GithubPrivateRepositoryDeployKey.php | 2 + .../Project/New/PublicGitRepository.php | 2 + app/Http/Livewire/Project/New/Select.php | 47 +++++ app/Models/Project.php | 4 + app/View/Components/Forms/Button.php | 4 +- resources/css/app.css | 28 +-- .../{actions.blade.php => advanced.blade.php} | 37 +--- .../components/applications/navbar.blade.php | 37 +++- .../views/components/forms/select.blade.php | 2 +- resources/views/components/navbar.blade.php | 31 ++-- .../views/components/server/navbar.blade.php | 2 +- .../components/settings/navbar.blade.php | 2 +- .../views/components/team/navbar.blade.php | 2 +- .../views/components/use-magic-bar.blade.php | 12 +- .../livewire/private-key/change.blade.php | 2 +- .../livewire/project/add-empty.blade.php | 12 ++ .../project/add-environment.blade.php | 11 ++ .../project/application/source.blade.php | 13 +- .../project/delete-environment.blade.php | 2 +- .../livewire/project/delete-project.blade.php | 2 +- .../views/livewire/project/edit.blade.php | 3 + ...ub-private-repository-deploy-key.blade.php | 95 ++++++---- .../new/github-private-repository.blade.php | 168 ++++++++++-------- .../new/public-git-repository.blade.php | 15 +- .../livewire/project/new/select.blade.php | 87 +++++++++ .../views/livewire/server/form.blade.php | 40 +++-- .../livewire/source/github/change.blade.php | 9 +- resources/views/private-key/all.blade.php | 2 +- resources/views/project/new.blade.php | 2 + resources/views/project/resources.blade.php | 3 + resources/views/project/show.blade.php | 5 +- resources/views/projects.blade.php | 66 ++++--- resources/views/server/all.blade.php | 5 +- resources/views/server/create.blade.php | 4 +- tailwind.config.js | 3 +- 40 files changed, 578 insertions(+), 274 deletions(-) create mode 100644 app/Http/Livewire/Project/AddEmpty.php create mode 100644 app/Http/Livewire/Project/AddEnvironment.php create mode 100644 app/Http/Livewire/Project/New/Select.php rename resources/views/components/applications/{actions.blade.php => advanced.blade.php} (54%) create mode 100644 resources/views/livewire/project/add-empty.blade.php create mode 100644 resources/views/livewire/project/add-environment.blade.php create mode 100644 resources/views/livewire/project/new/select.blade.php diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 432e72f39..e56edf17b 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -3,15 +3,16 @@ namespace App\Http\Controllers; use App\Models\Project; +use App\Models\Server; class ProjectController extends Controller { public function all() { - $teamId = session('currentTeam')->id; - - $projects = Project::where('team_id', $teamId)->get(); - return view('projects', ['projects' => $projects]); + return view('projects', [ + 'projects' => Project::ownedByCurrentTeam()->get(), + 'servers' => Server::ownedByCurrentTeam()->count(), + ]); } public function edit() @@ -34,9 +35,6 @@ class ProjectController extends Controller return redirect()->route('dashboard'); } $project->load(['environments']); - if (count($project->environments) == 1) { - return redirect()->route('project.resources', ['project_uuid' => $project->uuid, 'environment_name' => $project->environments->first()->name]); - } return view('project.show', ['project' => $project]); } diff --git a/app/Http/Livewire/PrivateKey/Create.php b/app/Http/Livewire/PrivateKey/Create.php index af147a9e3..bfbf72e18 100644 --- a/app/Http/Livewire/PrivateKey/Create.php +++ b/app/Http/Livewire/PrivateKey/Create.php @@ -7,7 +7,7 @@ use Livewire\Component; class Create extends Component { - protected string|null $from = null; + public string|null $from = null; public string $name; public string|null $description = null; public string $value; diff --git a/app/Http/Livewire/Project/AddEmpty.php b/app/Http/Livewire/Project/AddEmpty.php new file mode 100644 index 000000000..98136fb86 --- /dev/null +++ b/app/Http/Livewire/Project/AddEmpty.php @@ -0,0 +1,36 @@ + 'required|string|min:3', + 'description' => 'nullable|string', + ]; + protected $validationAttributes = [ + 'name' => 'Project Name', + 'description' => 'Project Description', + ]; + public function submit() + { + try { + $this->validate(); + $project = Project::create([ + 'name' => $this->name, + 'description' => $this->description, + 'team_id' => auth()->user()->currentTeam()->id, + ]); + return redirect()->route('project.show', $project->uuid); + } catch (\Exception $e) { + general_error_handler($e, $this); + } finally { + $this->name = ''; + } + } +} diff --git a/app/Http/Livewire/Project/AddEnvironment.php b/app/Http/Livewire/Project/AddEnvironment.php new file mode 100644 index 000000000..3ca6d8de3 --- /dev/null +++ b/app/Http/Livewire/Project/AddEnvironment.php @@ -0,0 +1,39 @@ + 'required|string|min:3', + ]; + protected $validationAttributes = [ + 'name' => 'Environment Name', + ]; + public function submit() + { + try { + $this->validate(); + $environment = Environment::create([ + 'name' => $this->name, + 'project_id' => $this->project->id, + ]); + + return redirect()->route('project.resources', [ + 'project_uuid' => $this->project->uuid, + 'environment_name' => $environment->name, + ]); + } catch (\Exception $e) { + general_error_handler($e, $this); + } finally { + $this->name = ''; + } + } +} diff --git a/app/Http/Livewire/Project/New/GithubPrivateRepository.php b/app/Http/Livewire/Project/New/GithubPrivateRepository.php index 89dab6b72..d092670a3 100644 --- a/app/Http/Livewire/Project/New/GithubPrivateRepository.php +++ b/app/Http/Livewire/Project/New/GithubPrivateRepository.php @@ -15,6 +15,7 @@ use Livewire\Component; class GithubPrivateRepository extends Component { + public $current_step = 'github_apps'; public $github_apps; public GithubApp $github_app; public $parameters; @@ -90,6 +91,7 @@ class GithubPrivateRepository extends Component } } $this->selected_repository_id = $this->repositories[0]['id']; + $this->current_step = 'repository'; } public function loadBranches() { diff --git a/app/Http/Livewire/Project/New/GithubPrivateRepositoryDeployKey.php b/app/Http/Livewire/Project/New/GithubPrivateRepositoryDeployKey.php index 8f8611c4d..cfb528f1e 100644 --- a/app/Http/Livewire/Project/New/GithubPrivateRepositoryDeployKey.php +++ b/app/Http/Livewire/Project/New/GithubPrivateRepositoryDeployKey.php @@ -14,6 +14,7 @@ use Spatie\Url\Url; class GithubPrivateRepositoryDeployKey extends Component { + public $current_step = 'private_keys'; public $parameters; public $query; public $private_keys; @@ -70,6 +71,7 @@ class GithubPrivateRepositoryDeployKey extends Component public function setPrivateKey($private_key_id) { $this->private_key_id = $private_key_id; + $this->current_step = 'repository'; } private function get_git_source() { diff --git a/app/Http/Livewire/Project/New/PublicGitRepository.php b/app/Http/Livewire/Project/New/PublicGitRepository.php index 8fbaf62fb..181a308bd 100644 --- a/app/Http/Livewire/Project/New/PublicGitRepository.php +++ b/app/Http/Livewire/Project/New/PublicGitRepository.php @@ -82,7 +82,9 @@ class PublicGitRepository extends Component $this->get_git_source(); try { $this->get_branch(); + $this->selected_branch = $this->git_branch; } catch (\Exception $e) { + return general_error_handler(err: $e, that: $this); } if (!$this->branch_found && $this->git_branch == 'main') { diff --git a/app/Http/Livewire/Project/New/Select.php b/app/Http/Livewire/Project/New/Select.php new file mode 100644 index 000000000..3e6137891 --- /dev/null +++ b/app/Http/Livewire/Project/New/Select.php @@ -0,0 +1,47 @@ +parameters = getRouteParameters(); + } + public function set_type(string $type) + { + $this->type = $type; + $this->current_step = 'servers'; + } + public function set_server(Server $server) + { + $this->server_id = $server->id; + $this->destinations = $server->destinations(); + $this->current_step = 'destinations'; + } + public function set_destination(string $destination_uuid) + { + $this->destination_uuid = $destination_uuid; + redirect()->route('project.resources.new', [ + 'project_uuid' => $this->parameters['project_uuid'], + 'environment_name' => $this->parameters['environment_name'], + 'type' => $this->type, + 'destination' => $this->destination_uuid, + ]); + } + public function load_servers() + { + $this->servers = Server::ownedByCurrentTeam()->get(); + } +} diff --git a/app/Models/Project.php b/app/Models/Project.php index 073c654b6..a0a342755 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -15,6 +15,10 @@ class Project extends BaseModel 'project_id' => $project->id, ]); }); + static::deleted(function ($project) { + $project->environments()->delete(); + $project->settings()->delete(); + }); } protected $fillable = [ 'name', diff --git a/app/View/Components/Forms/Button.php b/app/View/Components/Forms/Button.php index 0f33192f7..b347fefd1 100644 --- a/app/View/Components/Forms/Button.php +++ b/app/View/Components/Forms/Button.php @@ -15,7 +15,7 @@ class Button extends Component public bool $disabled = false, public bool $isModal = false, public string|null $modalId = null, - public string $defaultClass = "btn btn-primary btn-xs text-white normal-case no-animation rounded border-none" + public string $defaultClass = "btn btn-primary btn-sm font-normal text-white normal-case no-animation rounded border-none" ) { // } @@ -27,4 +27,4 @@ class Button extends Component { return view('components.forms.button'); } -} \ No newline at end of file +} diff --git a/resources/css/app.css b/resources/css/app.css index 5bca7271f..979bc99aa 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -9,7 +9,7 @@ body { @apply text-sm antialiased scrollbar; } button[isError] { - @apply bg-red-600 hover:bg-red-500; + @apply bg-red-600 hover:bg-red-700; } .scrollbar { @apply scrollbar-thumb-coollabs-100 scrollbar-track-coolgray-200 scrollbar-w-2; @@ -17,37 +17,17 @@ button[isError] { .main { @apply max-w-screen-xl pt-4 pl-24 pr-10 mx-auto; } -/* input { - @apply w-full text-white rounded outline-none input input-sm h-7 placeholder:text-neutral-700 bg-coolgray-200 read-only:bg-coolgray-200/50 read-only:text-opacity-25; -} -input:not(input[type="checkbox"]) { - @apply border-none disabled:border-none; -} -input[type="checkbox"] { - @apply rounded toggle toggle-warning toggle-xs disabled:toggle-warning; -} */ - -/* textarea { - @apply text-xs leading-5 text-white rounded textarea read-only:bg-coolgray-200/50 disabled:border-none read-only:text-opacity-25 placeholder:text-neutral-700 scrollbar bg-coolgray-200; -} -select { - @apply font-normal text-white border-none rounded h-7 select select-xs disabled:bg-coolgray-200 disabled:opacity-50 placeholder:text-neutral-700 bg-coolgray-200; -} */ .label-text, label { @apply text-neutral-400; } +.navbar-main { + @apply flex items-end gap-6 py-2 border-b-2 border-solid border-coolgray-200; +} .loading { @apply w-4 text-warning; } - -/* button[isWarning] { - @apply bg-red-600 hover:bg-red-500; -} -button[isHighlighted] { - @apply text-white btn-primary; -} */ h1 { @apply text-3xl font-bold text-white; } diff --git a/resources/views/components/applications/actions.blade.php b/resources/views/components/applications/advanced.blade.php similarity index 54% rename from resources/views/components/applications/actions.blade.php rename to resources/views/components/applications/advanced.blade.php index fe5b235fc..38410a026 100644 --- a/resources/views/components/applications/actions.blade.php +++ b/resources/views/components/applications/advanced.blade.php @@ -1,23 +1,12 @@
-