Dziś jest sobota, 11 października 2008 roku (z kalendarza...)

Duże formularze

Icon

15.10.2007, 19:16

Projekty

Komentarze (7)

Powrót

Siedzę i piszę sobie skrypt dziennika internetowego dla byłego liceum, gdyż jedyna kopia starego została omyłkowo skasowana podczas przenosin na nowy serwer :). Aby ułatwić wprowadzanie informacji o klasach, zaprojektowałem rozbudowany formularz, do którego podaje się, oprócz informacji o samej klasie, również dane o nauczanych przedmiotach i wszystkich uczniach; całość podzielona na trzy kroki. Biorąc pod uwagę wszystkie parametry, do przesłania jest około 300-500 pól.

Formularz wprowadzania uczniów miał formę tabelki: 4 kolumny i 36 wierszy, każdy dla pojedynczego ucznia. W pierwszej kolumnie imiona, potem nazwiska itd. Aby było łatwiej przepuścić to przez opfValidator, wszystkie imiona zgrupowałem w tablicę, skorzystałem ze zbiornika opfArrayContainer i zrobiłem to samo z następnymi kolumnami. Pojawił się jednak problem. OPF zamiast przekazać sterowanie do DAO, odświeżył formularz i zgłosił problem Pole nie jest tablicą. Co więcej, od 27 ucznia lista była pusta, choć wpisałem 35 nazwisk, a system powinien odświeżyć wszystkie dane. Dalszy rzut oka wykluczył udział kosmitów oraz samego OPF w tym niecnym procederze; wszystkie poszlaki wskazywały na PHP jako głównego winowajcę. W $_POST na samym początku skryptu dane były ucięte, tymczasem $HTTP_RAW_POST_DATA zgłaszał obecność wszystkich pól. Ostatecznie zawinił twórca paczki dla Arch Linuksa, bowiem aktualizacja usunęła ten tajemniczy limit, jednak to nie wszystko.

Okazało się, że OPF wciąż wymaga dopracowania, jeśli chodzi o bardziej skomplikowane ustawienia:

  1. Normalnie w OPF przyjęta jest zasada, że definicja jednego pola w opfValidator odpowiada jednemu komponentowi, zaś zbiornik opfArrayContainer służy do jeżdżenia po np. liście checkboksów, gdzie naraz możemy wybrać kilka wartości. Tutaj Do jednej reguły przypisałem aż 36 komponentów, co spowodowało, że domyślnie biblioteka wymagała podania danych dokładnie 36 uczniów, zaś mechanizm zgłaszania błędów przestał działać. Na razie ominąłem to prowizorycznie, dokładając flagę ignorowania błędów w Array Containerze.
  2. Brak możliwości stworzenia połączenia w rodzaju: jeśli podane zostało 30 imion, dokładnie tyle samo pól musi być wypełnionych w kolumnie nazwisk.

Niedociągnięcia mogą wynikać z próby wykorzystania elementów OPF niezgodnie z założeniami, organizując dane w formie kolumn, a nie wierszy. Jednak drugie wyjście również nie ma na razie zbyt dobrego wsparcia; po pierwsze, trzeba nadefiniować okropnie dużo reguł, a po drugie tak głębokie zagnieżdżanie nie jest wspierane.

Wniosek jest jeden: przy bardziej ekstrawaganckich wymaganiach OPF może napsuć nieco krwi i trzeba to wyeliminować. Ponadto uporządkowania wymaga kod komponentów, który wyszedł dość śmietnikowo, przynajmniej w porównaniu z całą resztą. Na odwieczne pytanie: "kiedy", odpowiedź jest jedna; jeśli Destroyer się nie zgłosi szybko do poprawiania eksperymentalnego kodu JS, to usunę tę część z biblioteki i będzie spokój, bo w zasadzie tylko ona hamuje cały cykl wydawniczy. Bez niej zapewne byłyby już release candidate'y lub nawet jakaś finalna.

Powrót

Komentarze

Napisał scanner w wtorek, 16 października 2007 o 15:02

300 - 500 pól do wypełnienia naraz? Oszalałeś?

Napisał Zyx w wtorek, 16 października 2007 o 17:45

Nie - te dane i tak trzeba jakoś wprowadzić i miałem do wyboru: albo formularz hurtowy do wprowadzenia za jednym zamachem danych wszystkich uczniów, albo klikanina: "Dodaj ucznia, [klep klep klep], Zapisz, Dziękujemy, OK, Dodaj ucznia, [klep klep klep], Zapisz, Dziękujemy..."

Napisał eRIZ w środę, 17 października 2007 o 09:32

Zyx, ale to tak, czy tak przesada - jeśli by się przeglądarka zwiesiła, czy komp, to wtedy byś leżał. :P

Ryzykant z Ciebie. :P

"Dodaj ucznia, klep klep klep, Zapisz, Dziękujemy, OK, Dodaj ucznia, klep klep klep, Zapisz, Dziękujemy..."
A nie można było po prostu jednej strony, "dodaj" i po dodaniu komunikat + formularz...?

Napisał scanner w środę, 17 października 2007 o 11:27

Osobiście wolę klik-klik-dziękujemy.
Bo jeśli będziesz miał pojedynczego ucznia do dodania, to też pokażesz hektarową tabelkę pól?
No chyba, że przygotujesz dwa formularze... ale to też raczej bez sensu...

Napisał Zyx w środę, 17 października 2007 o 21:06

Tak duży formularz jest robiony przy dodawaniu klasy - to jest 1000 pozycji do wklepania. Nawet jeśli komp się zwiesi przy 1 klasie, to pozostałe 29 pójdzie szybciej.

PS. Istnienie dodatkowego formularza do dodawania uczniów pojedynczo już po dodaniu klasy wydaje mi się taką oczywistością, że o niej po prostu nie wspominałem, zwłaszcza że głównym tematem wpisu był OPF, a nie ten konkretny projekt robiony za jego pomocą.

Napisał Komentator newsa w środę, 17 października 2007 o 21:13

Zaimplementuj import danych z formatu Excela (.xls) lub OpenDocument (.ods). Znacznie ułatwisz pracę sekretarce. :)

Napisał Zyx w środę, 17 października 2007 o 21:54

Ha - jakby był czas, to bym zaimplementował. Dziennik musiał być "na wczoraj" gotowy. A teraz to nie będzie ani czasu, ani sensu, ponieważ do czasu, gdy to będzie potrzebne ponownie, powinien już działać zunifikowany system informacyjny i problem sam zniknie.

BTW. Jeszcze raz przypominam - temat dotyczy biblioteki OPF, a nie Bogu ducha winnego dziennika.

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia