Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1586: Szybsze i wygodniejsze wybieranie #1763

Open
wants to merge 9 commits into
base: master-dev
Choose a base branch
from

Conversation

Acors24
Copy link
Collaborator

@Acors24 Acors24 commented Nov 6, 2024

Dotyczy #1586

Chcielibyśmy:

  1. <select> z parametrem multiple zastąpić przez komponent MultiSelectFilter (chyba z MultiselectFilter używający select z parametrem multiple #1325) w celu wygodniejszego wybierania studentów zamiast przewijać przez całą listę i dodatkowo trzymać klawisz Ctrl przy wyborze wielu studentów ✔️
  2. ładować tylko konkretnych studentów (poprzez wpisywanie części danych studenta) zamiast wszystkich w celu znaczącego skrócenia czasu ładowania widoku ✔️

Formularz tworzenia/edycji pracy dyplomowej jest obecnie tworzony w całości po stronie serwera, w tym jego układ i klasy CSS (dziwne, ale niech będzie).

Moje rozwiązanie polega na dodaniu komponentu MultiSelectFilter do już utworzonego widoku, tuż przed djangową kontrolką odpowiadającą przypisanym studentom.
Wpisanie jakiejś frazy w tym komponencie po krótkim czasie spowoduje wysłanie żądania do serwera, na które odpowiedzią będzie lista obiektów reprezentujących studentów, którzy podaną frazę mają w imieniu, nazwisku lub numerze indeksu. Ta lista stanie się nową listą opcji komponentu, wraz z zaznaczonymi już studentami. Zmiany dotyczące zaznaczenia w tym komponencie wpływają na zawartość djangowego selecta, który jest ukryty i użytkownik nie powinien z nim wchodzić w interakcję.
Przy edycji istniejącej pracy, do której już są przypisani jacyś studenci, zawartość selecta kopiowana jest do danych komponentu MultiSelectFilter.

Po stronie serwera pole odpowiedzialne poprzednio za trzymanie zbioru wszystkich studentów już nie trzyma początkowo żadnych. Przy tworzeniu formularza sprawdzana jest obecność przypisanych studentów i początkowa zawartość selecta jest odpowiednio zmieniana.
Po walidacji danych na serwerze dzieją się jakieś herezje związane z umieszczaniem danych w miejscu, w którym poprzednio automatycznie znajdowali się przypisani studenci.

Zainspirowałem się kodem innej osoby (#1704) przypisanej do tego issue, której bardzo dziękuję m.in. dlatego, że dokumentacja Django czasami sprawia wrażenie średnio czytelnej, a na dokumentację Vue szkoda słów.

Dodano komponent StudentFilter (bazujący na MultiSelectFilter) w odpowiednim miejscu w formularzu dot. pracy dyplomowej
Powodem był sposób w jaki porównywane są obiekty w Array.prototype.includes
@Acors24 Acors24 marked this pull request as ready for review November 13, 2024 16:04
@Acors24 Acors24 changed the title 1586: wersja robocza 1586: Tylko wygodniejsze wybieranie Nov 13, 2024
@Acors24 Acors24 changed the title 1586: Tylko wygodniejsze wybieranie 1586: Szybsze i wygodniejsze wybieranie Nov 23, 2024
@Acors24 Acors24 force-pushed the 1586-szybsze-wybieranie-studenta-do-tematu-pracy-dyplomowej branch from e95768d to 69ec9fb Compare November 26, 2024 14:03
@Acors24 Acors24 force-pushed the 1586-szybsze-wybieranie-studenta-do-tematu-pracy-dyplomowej branch from 3198cf4 to 984c7c2 Compare December 23, 2024 07:41
@Acors24
Copy link
Collaborator Author

Acors24 commented Dec 23, 2024

Na branchu 1586-numero-dos pojawiło się rozwiązanie zasugerowane na spotkaniu. W tym momencie wygląda ono tak:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Szybsze i wygodniejsze wybieranie studenta/-ów przypisywanych do tematu pracy dyplomowej
1 participant