Skip to content

[Task] | System Drag & Drop (Grid System) #40

Description

@PEXEL2002

Opis zadania i szczegółowe wymagania

Należy stworzyć interaktywny obszar roboczy (Canvas), który pozwoli użytkownikowi na wygodne budowanie logiki sterowania poprzez swobodne układanie elementów na szczeblach drabinki. W tym zadaniu musi zawierać się:

  • Wdrożenie sprawdzonej biblioteki do obsługi przeciągania elementów (np. dnd-kit lub ewentualnie starszego react-beautiful-dnd).
  • Implementacja logiki przesuwania obiektów zarówno z przybornika (Toolbox) na szczeble, jak i reorganizacji elementów już umieszczonych na szczeblach.
  • Zaprojektowanie i wdrożenie systemu "siatki" (Grid System), który wymusza logiczne wyrównanie (snapowanie) styków i cewek do określonych pozycji wewnątrz rzędu.
  • Implementacja mechanizmu automatycznego generowania i renderowania połączeń (linii zasilających) pomiędzy dodanymi elementami, zachowując ciągłość szczebla od lewej do prawej szyny.

Dodatkowy kontekst i źrodła pomocnicze

System Drag & Drop jest fundamentem User Experience w tego typu edytorach. Rekomendowane jest użycie nowoczesnej biblioteki dnd-kit, ponieważ react-beautiful-dnd nie jest już aktywnie rozwijane przez Atlassian. Należy dobrze przemyśleć strefy upuszczania (Drop Zones) w globalnym stanie. Po upuszczeniu elementu na siatce, aplikacja musi zaktualizować globalny stan drabinki (np. w Zustand), co automatycznie wymusi wyrenderowanie nowych ścieżek prądowych łączących dodany blok z resztą szczebla.

Definicja wykonania zadania

  • Wdrożono bibliotekę obsługującą mechanikę Drag & Drop.
  • Użytkownik ma możliwość płynnego przeciągania elementów z przybornika wprost na wybrane szczeble.
  • Siatka obszaru roboczego poprawnie "przyciąga" i wyrównuje upuszczane komponenty.
  • Struktura szczebla automatycznie generuje poprawne wizualnie linie połączeń między elementami.
  • Obszar szczebla dynamicznie dostosowuje swój rozmiar (lub rozkład) do liczby i typu umieszczonych na nim elementów.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions