From ead469d6c69864b0adacfd9069f17ea1ea272f72 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Mon, 28 Oct 2024 09:54:49 +0100 Subject: [PATCH] Fixes --- app/Assets/icon.png | Bin 0 -> 9988 bytes app/Components/CreateNewTask.php | 8 ++-- app/Components/NoProjectSelectedTaskList.php | 4 +- app/Components/ProjectList.php | 8 ++-- app/Components/ProjectListData.php | 2 +- app/Components/TaskList.php | 40 +++++++++++++++++-- app/Components/TaskListData.php | 4 +- app/Model/DB.php | 9 +++++ app/Model/Task.php | 3 +- app/View/AddProject.php | 2 +- composer.json | 3 +- 11 files changed, 63 insertions(+), 20 deletions(-) create mode 100644 app/Assets/icon.png diff --git a/app/Assets/icon.png b/app/Assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..08bf4415719380d26ff4c84be7f6a5ee08fab565 GIT binary patch literal 9988 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 = 'flex flex-row m-10 rounded'; $this->saveButton = new Button(views: new Views([ - new \PHPNative\UI\Widget\Icon(icon: Icon::save, style: 'text-white'), - new Text(text: 'save Task', style: 'text-2xl text-white ml-5') - ]), style: 'flex-none w-190 bg-green-500 rounded-xl p-4 ml-10 hover:bg-green-700'); + new \PHPNative\UI\Widget\Icon(icon: Icon::save, style: 'text-white ml-10'), + new Text(text: 'save Task', style: 'text-2xl text-white ml-20') + ]), style: 'flex-none w-190 bg-green-500 rounded p-5 ml-10 hover:bg-green-700'); - $this->textEdit = new TextEdit(style: 'flex-1 text-2xl bg-slate-100 px-10 rounded-xl text-black p-6', placeholder: 'Placeholder'); + $this->textEdit = new TextEdit(style: 'flex-1 text-2xl bg-slate-100 px-10 rounded-xl text-black p-6 border border-black', placeholder: 'Placeholder'); $this->views = new Views([ $this->textEdit, $this->saveButton, diff --git a/app/Components/NoProjectSelectedTaskList.php b/app/Components/NoProjectSelectedTaskList.php index 2bcd539..0bce6fe 100644 --- a/app/Components/NoProjectSelectedTaskList.php +++ b/app/Components/NoProjectSelectedTaskList.php @@ -14,8 +14,8 @@ class NoProjectSelectedTaskList extends Container public function __construct() { - $this->style = "flex-1 bg-red-200 flex flex-col"; - $this->headline = new Text(text: 'Please select Project', style: 'w-full text-4xl bg-lime-400 m-10 p-10 text-black'); + $this->style = "flex-1 flex flex-col"; + $this->headline = new Text(text: 'Please select Project', style: 'w-full bg-lime-200 text-2xl md:text-4xl m-10 p-10 text-black'); } public function getViews(): ?Views diff --git a/app/Components/ProjectList.php b/app/Components/ProjectList.php index 4411d13..0e7911e 100644 --- a/app/Components/ProjectList.php +++ b/app/Components/ProjectList.php @@ -28,7 +28,7 @@ class ProjectList extends Container public function __construct(private Lifecycle $lifecycle, private \PHPNative\Container\Container $container) { parent::__construct(id: 'projectlist'); - $this->style = 'flex-none w-300 flex flex-col bg-green-500'; + $this->style = 'flex-none w-300 flex flex-col bg-green-500 md:bg-white'; $this->createButton = new CreateButton("create Project"); $this->createButton->setOnClick(fn(Worker $worker) => $this->addProject($worker)); $this->listData = new ProjectListData(); @@ -42,9 +42,9 @@ class ProjectList extends Container /** @var DB $db */ $db = $this->container->get(Storage::class)->loadModel(DB::class); foreach($db->getProjects() as $project) { - $button = new \PHPNative\UI\Widget\Button(views: new Views([ - new Text(text: $project->title, style: 'w-full p-2 text-2xl pl-10 hover:bg-slate-300')] - )); + $button = new \PHPNative\UI\Widget\Button(id: $project->uuid ,views: new Views([ + new Text(id: 'text_' . $project->uuid, text: $project->title, style: 'w-full text-2xl hover:bg-slate-300')] + ), style: 'bg-slate-200 m-1 p-10'); $button->setOnClick(function() use ($project) { $this->selectedProject = $project; }); diff --git a/app/Components/ProjectListData.php b/app/Components/ProjectListData.php index 0a8c05f..1a5f856 100644 --- a/app/Components/ProjectListData.php +++ b/app/Components/ProjectListData.php @@ -12,7 +12,7 @@ class ProjectListData extends Container public function __construct() { - parent::__construct(); + parent::__construct('projectlistdata'); $this->views = new Views(); $this->style = 'flex flex-col overflow-auto'; } diff --git a/app/Components/TaskList.php b/app/Components/TaskList.php index c12eef1..cb06519 100644 --- a/app/Components/TaskList.php +++ b/app/Components/TaskList.php @@ -4,10 +4,15 @@ namespace App\Components; use App\Model\DB; use App\Model\Project; +use App\Model\Task; +use Joli\JoliNotif\DefaultNotifier; +use Joli\JoliNotif\Notification; use PHPNative\Framework\Lifecycle\Lifecycle; +use PHPNative\Framework\Parallel\Worker; use PHPNative\Storage\Storage; use PHPNative\UI\Collection\Views; use PHPNative\UI\View; +use PHPNative\UI\Widget\Checkbox; use PHPNative\UI\Widget\Container; use PHPNative\UI\Widget\Text; @@ -21,10 +26,11 @@ class TaskList extends Container public function __construct(private Lifecycle $lifecycle, private \PHPNative\Container\Container $container) { + parent::__construct(id: 'tasklist'); $this->style = "flex-1 flex flex-col"; $this->createNewTask = new CreateNewTask(); $this->listData = new TaskListData(); - $this->headline = new Text(text:'', style: 'w-full bg-lime-200 text-4xl m-10 p-10 text-black'); + $this->headline = new Text(text:'', style: 'w-full bg-lime-200 text-2xl md:text-4xl m-10 p-10 text-black'); } public function getViews(): ?Views @@ -51,11 +57,37 @@ class TaskList extends Container /** @var DB $db */ $db = $this->container->get(Storage::class)->loadModel(DB::class); foreach($db->getTasksForProject($this->project) as $task) { - $button = new \PHPNative\UI\Widget\Button(views: new Views([ - new Text(text: $task->title, style: 'w-full text-2xl')] - ), style: 'bg-slate-200 rounded-xl p-5 m-5'); + $button = new \PHPNative\UI\Widget\Button(id: $task->uuid, views: new Views([ + (new Checkbox( + checked: $task->finished, + style: 'flex-none w-30 h-30 border border-black' . ($task->finished? ' bg-green-500': ' bg-red-500'), + ))->setOnClick(function(Worker $worker) use ($task) { + $this->saveTask($task); + }), + new Text(text: $task->title, style: 'flex-1 ml-10 text-2xl') + ] + ), style: 'bg-slate-200 rounded border border-black p-5 m-5 flex flex-row'); $this->listData->views->add($button); } } + + public function saveTask(Task $task) + { + $db = $this->container->get(Storage::class)->loadModel(DB::class); + $db->changeTask($task); + $this->container->get(Storage::class)->saveModel($db); + + $notifier = new DefaultNotifier(); + + $notification = + (new Notification()) + ->setTitle('Task saved') + ->setBody(sprintf("%s", $task->title)) + ; + + $notifier->send($notification); + + $this->loadTasks(); + } } \ No newline at end of file diff --git a/app/Components/TaskListData.php b/app/Components/TaskListData.php index 93696fc..6cda810 100644 --- a/app/Components/TaskListData.php +++ b/app/Components/TaskListData.php @@ -11,8 +11,8 @@ class TaskListData extends Container { public function __construct() { - parent::__construct(); - $this->style = 'flex flex-col overflow-auto p-5 m-10 bg-white'; + parent::__construct(id: 'tasklistdata'); + $this->style = 'flex flex-col overflow-auto p-5 m-10'; $this->views = new Views(); } diff --git a/app/Model/DB.php b/app/Model/DB.php index 72bbedf..5c6dace 100644 --- a/app/Model/DB.php +++ b/app/Model/DB.php @@ -23,6 +23,15 @@ class DB $this->tasks[] = $task; } + public function changeTask(Task $task): void + { + array_walk($this->tasks, function (&$value, $key) use ($task) { + if ($value->uuid === $task->uuid) { + $value = $task; + } + }); + } + public function getTasksForProject(Project $project): array { return array_filter($this->tasks, function (Task $task) use ($project) { diff --git a/app/Model/Task.php b/app/Model/Task.php index 6be91ac..bf7b3c6 100644 --- a/app/Model/Task.php +++ b/app/Model/Task.php @@ -4,7 +4,8 @@ namespace App\Model; class Task { - public function __construct(public string $uuid = "", public string $title = "", public string $project = "") + public function __construct(public string $uuid = "", public string $title = "", public string $project = "", public bool $finished = false) { } + } \ No newline at end of file diff --git a/app/View/AddProject.php b/app/View/AddProject.php index 46ab095..faa76fd 100644 --- a/app/View/AddProject.php +++ b/app/View/AddProject.php @@ -21,7 +21,7 @@ class AddProject extends BaseView implements View public function __construct(private Storage $storage) { $this->saveButton = new Button(views: new Views([new Text(text: 'save project', style: 'p-10 text-white text-2xl w-full text-center')]), style: 'w-full bg-lime-700 m-10'); - $this->editText = new TextEdit(style: 'text-2xl text-black border border-black w-full m-10 p-10', placeholder: 'Please provide any name'); + $this->editText = new TextEdit(style: 'text-2xl text-black border border-black m-10 p-10', placeholder: 'Please provide any name'); } public function getViews(): ?Views diff --git a/composer.json b/composer.json index 98a9927..b375283 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,8 @@ "type": "project", "license": "MIT", "require": { - "phpnative/framework": "@dev" + "phpnative/framework": "@dev", + "jolicode/jolinotif": "^3" }, "autoload": { "psr-4": {