From eced006d557bdbef41836b1244c6a46c6530a52e Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Fri, 14 Nov 2025 09:23:48 +0100 Subject: [PATCH] Backup --- examples/kanban_app.php | 378 +++++++++++++++++++++++++++++++++ examples/kanban_data.json | 40 ++++ kanban.png | Bin 0 -> 222886 bytes src/Tailwind/Parser/Height.php | 5 + src/Tailwind/Parser/Width.php | 5 + src/Ui/Component.php | 14 ++ src/Ui/Widget/Button.php | 2 +- src/Ui/Widget/Container.php | 2 + 8 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 examples/kanban_app.php create mode 100644 examples/kanban_data.json create mode 100644 kanban.png diff --git a/examples/kanban_app.php b/examples/kanban_app.php new file mode 100644 index 0000000..acf0db1 --- /dev/null +++ b/examples/kanban_app.php @@ -0,0 +1,378 @@ +addComponent($title); + if (!empty($task['note'] ?? '')) { + $this->addComponent(new Label($task['note'], 'text-xs text-gray-500')); + } + } + + #[\Override] + public function handleMouseClick(float $mouseX, float $mouseY, int $button): bool + { + if ($button !== 1) { + return false; + } + + $this->boardView->beginDrag($this->boardId, $this->task); + return true; + } +} + +final class KanbanBoardView extends Container +{ + private array $boards; + private Container $columnsContainer; + private array $boardViews = []; + private ?array $dragState = null; + private ?string $hoverBoardId = null; + + public function __construct( + private readonly string $storagePath, + array $initialBoards, + private readonly Label $statusLabel, + ) { + parent::__construct('flex flex-col flex-1 overflow-hidden'); + $this->boards = $initialBoards; + + $this->columnsContainer = new Container('flex flex-row gap-4 overflow-auto flex-1 pb-3'); + $this->addComponent($this->columnsContainer); + + $this->renderBoards(); + } + + public function addBoard(string $title): void + { + $title = trim($title); + if ($title === '') { + $this->statusLabel->setText('Board-Namen eingeben, um es hinzuzufügen.'); + return; + } + + $this->boards[] = [ + 'id' => uniqid('board_', true), + 'title' => $title, + 'tasks' => [], + ]; + + $this->saveBoards(); + $this->renderBoards(); + $this->statusLabel->setText('Board hinzugefügt: ' . $title); + } + + public function addTask(string $boardId, string $title): void + { + $title = trim($title); + if ($title === '') { + $this->statusLabel->setText('Bitte einen Aufgabentitel eingeben.'); + return; + } + + foreach ($this->boards as &$board) { + if ($board['id'] === $boardId) { + $board['tasks'][] = [ + 'id' => uniqid('task_', true), + 'title' => $title, + 'note' => '', + ]; + $this->saveBoards(); + $this->renderBoards(); + $this->statusLabel->setText(sprintf('Aufgabe "%s" zu "%s" hinzugefügt.', $title, $board['title'])); + return; + } + } + + $this->statusLabel->setText('Board nicht gefunden.'); + } + + public function beginDrag(string $boardId, array $task): void + { + $this->dragState = [ + 'fromBoardId' => $boardId, + 'taskId' => $task['id'], + 'taskData' => $task, + ]; + $this->statusLabel->setText('Verschiebe: ' . $task['title']); + } + + #[\Override] + public function handleMouseMove(float $mouseX, float $mouseY): void + { + parent::handleMouseMove($mouseX, $mouseY); + + if ($this->dragState === null) { + return; + } + + $target = $this->findBoardAt($mouseX, $mouseY); + if ($target !== $this->hoverBoardId) { + if ($this->hoverBoardId !== null) { + $this->setBoardHighlight($this->hoverBoardId, false); + } + if ($target !== null) { + $this->setBoardHighlight($target, true); + } + $this->hoverBoardId = $target; + } + } + + #[\Override] + public function handleMouseRelease(float $mouseX, float $mouseY, int $button): void + { + parent::handleMouseRelease($mouseX, $mouseY, $button); + + if ($this->dragState === null || $button !== 1) { + return; + } + + $dropTarget = $this->findBoardAt($mouseX, $mouseY); + $this->completeDrag($dropTarget); + } + + private function renderBoards(): void + { + $this->columnsContainer->clearChildren(); + $this->boardViews = []; + + foreach ($this->boards as $board) { + $colorHex = substr(md5($board['id']), 0, 6); + $defaultStyle = 'flex flex-col w-[260] flex-none border border-gray-400 rounded-lg p-3 gap-3 shadow-sm bg-[#' . $colorHex . ']'; + $highlightStyle = 'flex flex-col w-[260] flex-none bg-blue-50 border-2 border-blue-500 rounded-lg p-3 gap-3 shadow'; + + $debugInfo = new Label(sprintf( + "Board %s\nID: %s\nTasks: %d", + $board['title'], + $board['id'], + count($board['tasks']), + ), 'text-xs text-black whitespace-pre-wrap'); + + $column = new Container($defaultStyle); + $header = new Container('flex flex-col gap-1 bg-white/80 rounded p-2 shadow-inner'); + $header->addComponent(new Label($board['title'], 'text-lg font-semibold text-black')); + $header->addComponent(new Label(count($board['tasks']) . ' Aufgaben', 'text-xs text-gray-500')); + $header->addComponent($debugInfo); + $column->addComponent($header); + + $taskList = new Container('flex flex-col gap-2'); + foreach ($board['tasks'] as $task) { + $taskList->addComponent(new KanbanTaskCard($board['id'], $task, $this)); + } + $column->addComponent($taskList); + + $addInput = new TextInput('Neue Aufgabe', 'flex-1 border border-gray-300 rounded px-2 py-1 bg-white text-black text-sm'); + $addButton = new Button('Hinzufügen', 'px-2 py-1 bg-emerald-500 text-white rounded hover:bg-emerald-600 text-sm'); + $addButton->setOnClick(function () use ($board, $addInput): void { + $this->addTask($board['id'], $addInput->getValue()); + $addInput->setValue(''); + }); + $addRow = new Container('flex flex-row gap-2'); + $addRow->addComponent($addInput); + $addRow->addComponent($addButton); + $column->addComponent($addRow); + + $this->columnsContainer->addComponent($column); + $this->boardViews[$board['id']] = [ + 'column' => $column, + 'defaultStyle' => $defaultStyle, + 'highlightStyle' => $highlightStyle, + ]; + } + } + + private function findBoardAt(float $mouseX, float $mouseY): ?string + { + foreach ($this->boardViews as $boardId => $info) { + $viewport = $info['column']->getViewport(); + if ( + $mouseX >= $viewport->x && + $mouseX <= ($viewport->x + $viewport->width) && + $mouseY >= $viewport->y && + $mouseY <= ($viewport->y + $viewport->height) + ) { + return $boardId; + } + } + + return null; + } + + private function setBoardHighlight(string $boardId, bool $active): void + { + if (!isset($this->boardViews[$boardId])) { + return; + } + + $column = $this->boardViews[$boardId]['column']; + $style = $active ? $this->boardViews[$boardId]['highlightStyle'] : $this->boardViews[$boardId]['defaultStyle']; + $column->setStyle($style); + } + + private function completeDrag(?string $targetBoardId): void + { + $state = $this->dragState; + $this->dragState = null; + + if ($this->hoverBoardId !== null) { + $this->setBoardHighlight($this->hoverBoardId, false); + $this->hoverBoardId = null; + } + + if (!$state) { + return; + } + + if ($targetBoardId === null) { + $this->statusLabel->setText('Ziehen abgebrochen.'); + return; + } + + if ($targetBoardId === $state['fromBoardId']) { + $this->statusLabel->setText('Aufgabe blieb im gleichen Board.'); + return; + } + + $movedTask = null; + foreach ($this->boards as &$board) { + if ($board['id'] === $state['fromBoardId']) { + foreach ($board['tasks'] as $index => $task) { + if ($task['id'] === $state['taskId']) { + $movedTask = $task; + array_splice($board['tasks'], $index, 1); + break 2; + } + } + } + } + + if ($movedTask === null) { + $this->statusLabel->setText('Aufgabe konnte nicht verschoben werden.'); + return; + } + + foreach ($this->boards as &$board) { + if ($board['id'] === $targetBoardId) { + $board['tasks'][] = $movedTask; + break; + } + } + + $this->saveBoards(); + $this->renderBoards(); + + $this->statusLabel->setText(sprintf('"%s" nach "%s" verschoben.', $movedTask['title'], $this->getBoardTitle($targetBoardId))); + } + + private function getBoardTitle(string $boardId): string + { + foreach ($this->boards as $board) { + if ($board['id'] === $boardId) { + return $board['title']; + } + } + + return $boardId; + } + + private function saveBoards(): void + { + file_put_contents( + $this->storagePath, + json_encode($this->boards, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), + LOCK_EX, + ); + } +} + +$storagePath = __DIR__ . '/kanban_data.json'; + +$boards = []; +if (is_file($storagePath)) { + $raw = file_get_contents($storagePath); + $decoded = json_decode($raw ?: '[]', true); + if (is_array($decoded)) { + $boards = $decoded; + } +} + +if (empty($boards)) { + $boards = [ + [ + 'id' => uniqid('board_', true), + 'title' => 'Backlog', + 'tasks' => [ + ['id' => uniqid('task_', true), 'title' => 'Idee sammeln', 'note' => ''], + ['id' => uniqid('task_', true), 'title' => 'Mockups skizzieren', 'note' => ''], + ], + ], + [ + 'id' => uniqid('board_', true), + 'title' => 'In Arbeit', + 'tasks' => [ + ['id' => uniqid('task_', true), 'title' => 'API anbinden', 'note' => ''], + ], + ], + [ + 'id' => uniqid('board_', true), + 'title' => 'Erledigt', + 'tasks' => [ + ['id' => uniqid('task_', true), 'title' => 'UI Grundlayout', 'note' => ''], + ], + ], + ]; + file_put_contents( + $storagePath, + json_encode($boards, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), + LOCK_EX, + ); +} + +$app = new Application(); +$window = new Window('Kanban Beispiel', 1200, 800); + +$root = new Container('flex flex-col h-full w-full bg-gray-100 gap-4 p-4'); + +$title = new Label('Kanban Board', 'text-3xl font-bold text-black'); +$subTitle = new Label('Boards hinzufügen, Aufgaben erstellen und per Drag & Drop verschieben.', 'text-base text-gray-700'); +$root->addComponent($title); +$root->addComponent($subTitle); + +$statusLabel = new Label('Bereit.', 'text-sm text-gray-600'); +$kanbanView = new KanbanBoardView($storagePath, $boards, $statusLabel); + +$boardInput = new TextInput('Neues Board', 'flex-1 border border-gray-300 rounded px-3 py-2 bg-white text-black'); +$boardAddButton = new Button('Board hinzufügen', 'px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700'); +$boardAddButton->setOnClick(function () use ($kanbanView, $boardInput, $statusLabel): void { + $kanbanView->addBoard($boardInput->getValue()); + $boardInput->setValue(''); +}); +$boardRow = new Container('flex flex-row gap-3 items-center'); +$boardRow->addComponent($boardInput); +$boardRow->addComponent($boardAddButton); +$root->addComponent($boardRow); + +$root->addComponent($kanbanView); +$root->addComponent($statusLabel); + +$window->setRoot($root); +$app->addWindow($window); +$app->run(); diff --git a/examples/kanban_data.json b/examples/kanban_data.json new file mode 100644 index 0000000..44623e4 --- /dev/null +++ b/examples/kanban_data.json @@ -0,0 +1,40 @@ +[ + { + "id": "board_691661d89de624.46726087", + "title": "Backlog", + "tasks": [ + { + "id": "task_691661d89de735.41071535", + "title": "Idee sammeln", + "note": "" + }, + { + "id": "task_691661d89de7a0.19655479", + "title": "Mockups skizzieren", + "note": "" + } + ] + }, + { + "id": "board_691661d89de806.79123800", + "title": "In Arbeit", + "tasks": [ + { + "id": "task_691661d89de858.46479539", + "title": "API anbinden", + "note": "" + } + ] + }, + { + "id": "board_691661d89de894.20053237", + "title": "Erledigt", + "tasks": [ + { + "id": "task_691661d89de8e0.86926319", + "title": "UI Grundlayout", + "note": "" + } + ] + } +] \ No newline at end of file diff --git a/kanban.png b/kanban.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd0180eeb70214df6ae3898f5a139853c0477d1 GIT binary patch literal 222886 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%0AqoA5QYq|?wE#du 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 zek R?s!{+32?l6wLjkfDN39`#0>v9CLX(7{Lj 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 u2w54NoMPT9#XdpbbsrdEJ 0) { $value1 = (int)$output_array[1][0]; diff --git a/src/Tailwind/Parser/Width.php b/src/Tailwind/Parser/Width.php index 9f3dce7..b4e54e9 100644 --- a/src/Tailwind/Parser/Width.php +++ b/src/Tailwind/Parser/Width.php @@ -13,6 +13,11 @@ class Width implements Parser $value = -1; $unit = Unit::Pixel; $found = false; + + if (preg_match('/(min-)?w-\[(\d+)\]/', $style, $output_array)) { + $value = (int)$output_array[2]; + $found = true; + } preg_match_all('/w-(\d*)\/(\d*)/', $style, $output_array); if (count($output_array[0]) > 0) { $value1 = (int)$output_array[1][0]; diff --git a/src/Ui/Component.php b/src/Ui/Component.php index 20d482c..5a2a87d 100644 --- a/src/Ui/Component.php +++ b/src/Ui/Component.php @@ -70,6 +70,16 @@ abstract class Component $this->contentViewport = clone $this->viewport; } + public function setStyle(string $style): void + { + if ($this->style === $style) { + return; + } + + $this->style = $style; + $this->markDirty(true); + } + /** * Destructor - clean up resources */ @@ -908,6 +918,10 @@ abstract class Component */ private function createShadowTexture(&$renderer, int $width, int $height, int $blurRadius, int $alpha, int $r = 0, int $g = 0, int $b = 0): mixed { + if ($width <= 0 || $height <= 0) { + return null; + } + // Create alpha map (single channel) - start with transparent $alphaMap = array_fill(0, $width * $height, 0); diff --git a/src/Ui/Widget/Button.php b/src/Ui/Widget/Button.php index 2b70bf5..4ccbffb 100644 --- a/src/Ui/Widget/Button.php +++ b/src/Ui/Widget/Button.php @@ -82,7 +82,7 @@ class Button extends Container public function setStyle(string $style): void { - $this->style = $style; + parent::setStyle($style); } /** diff --git a/src/Ui/Widget/Container.php b/src/Ui/Widget/Container.php index 5c0b378..329010f 100644 --- a/src/Ui/Widget/Container.php +++ b/src/Ui/Widget/Container.php @@ -519,6 +519,8 @@ class Container extends Component private function renderScrollbars(&$renderer, array $overflow): void { + $scrollbarColor = [120, 120, 120, 230]; + // Vertical scrollbar if ($overflow['y']) { $scrollbarHeight = $this->contentViewport->height;