Closed emkael closed 6 years ago
dobrą godzinę kombinowałem, jak usunąć element, nie uciekając się do str_replace na elemencie nadrzędnym
Gdzieś wyczytałem, że autorzy liba, przynajmniej przy tej, przestarzałej wersji, zalecali:
$element->outertext = '';
Czyż nie intuicyjne? :)
Czyli coś takiego: https://github.com/michzimny/teamy-diff-deals/pull/5/commits/8f49020717fb7f33d3fd5d4264c1c419c1e65a5c
Czytałem, próbowałem.
Tobie zadziałało?
Wrzuciłem na PZBS, na razie grupa N: http://www.pzbs.pl/wyniki/liga/liga2017-18/1liga/n/npo21t1-1.htm
Pokrótce przetestowałem cache i wygląda, że ktoś się postarał, żeby nic nie było keszowane:
Nie wiem, czy kwestia serwera, czy co, ale w każdym razie wygląda, że na PZBS-ie na razie problemu z cache dla css/js nie będzie.
Później były jakieś komentarze o odświeżaniu DOM, w stylu $dom->load($dom->save()), które też niewiele zmieniały.
Czytałem, próbowałem.
Tobie zadziałało?
Ok, chyba rzeczywiście nie działa :/
Ale ogólnie tak tego używam: https://github.com/michzimny/teamy-diff-deals/blob/64b94f2831022d09f7a5025139c857e0d0517ce7/tdd-bootstrap.php#L62
Może problemem jest, że to head albo że niedomknięty tag. To przywracam Twoje...
Jak w tym samym katalogu na serwerze mamy turniej bez dif-deals, to niepotrzebnie ingerujemy, np. http://www.pzbs.pl/wyniki/liga/liga2017-18/1liga/n/nrr11t1-1.htm
To chyba jest zastosowanie mojej zmiennej modified. Jeśli nie dokleiliśmy jeszcze żadnego protokołu, to może nie ma sensu doklejać css/js? Czyli przesunąć to do wnętrza "if ($modified)"?
Uwaga, ciężkie user experience :p
I druga rzecz - jak jest realizowane przescrollowanie do danego stołu? Czy można by scrollować nie do danego h4, ale tak do wysokości ok. 10px przed rozpoczęciem tr-a będącego rodzicem tego h4?
Wyjaśniam. Teraz klikam na rozdanie w lewej ramce (kontrolce meczowej), a w prawej ramce przeładowuje się protokół i ten pożądany jest już pierwszym od góry (dzięki temu PR). Zastanawiam się, czy to nie będzie nieco nieintuicyjne dla użytkowników, którzy mieli już do czynienia z dotychczasowym interfejsem. Skoro przeglądają mecz nr 6, to od razu po przeładowaniu protokołu z przyzwyczajenia scrollują go w dół, bo na pierwszy rzut oka nie widać, że jest już prawidłowo przewinięty. Gdyby auto-scroll zatrzymał się jakieś 40px powyżej h4 (czyli o 30px padding-top'a tr'a i jeszcze kolejne 10px, o których pisałem), to już na pierwszy rzut oka byłoby widać, że coś się samo przescrollowało po prawej, więc pewnie nie trzeba ruszać.
O tak, jak niżej:
Całe przewijanie opiera się o nawigację do #table-N.
Pewnie należałoby wrzucić element, do którego się skacze (id="table-N") gdzieś indziej, niż jest teraz (teraz jest to ten sam nagłówek, który jest linkiem).
Pewnie należałoby wrzucić element, do którego się skacze (id="table-N") gdzieś indziej, niż jest teraz (teraz jest to ten sam nagłówek, który jest linkiem).
Ok, to zostawmy to na przyszłość (https://github.com/michzimny/teamy-diff-deals/issues/6).
A to gryzienie się z protokołami nieobsługiwanymi przez diff-deals poprawiłbyś?
Jeśli nie dokleiliśmy jeszcze żadnego protokołu, to może nie ma sensu doklejać css/js? Czyli przesunąć to do wnętrza "if ($modified)"?
Optymalnie byłoby chyba, gdyby w przypadku nieznalezienia pliku(ów) z rozkładami, skrypt jak najszybciej robił pass-thru oryginalnego HTMLa.
Optymalnie byłoby chyba, gdyby w przypadku nieznalezienia pliku(ów) z rozkładami, skrypt jak najszybciej robił pass-thru oryginalnego HTMLa.
Słusznie.
I wtedy też istnienie tej mojej zmiennej $modified nie jest potrzebne, bo to warunkuje tylko usuwanie nagłówka tabeli. Można go usuwać pod tym samym warunkiem, pod którym będziemy doklejać css/js - czyli że znalazł się jakikolwiek plik z rozkładami dla tego protokołu.
Ok, jutro się tym zajmę.
Scaliłem zmiany z drugiego PR (znaki specjalne w prefiksie), do tego w 4e91dd3 dopisałem przesyłanie niezmienionego pliku źródłowego w przypadku braku PBNów.
To się odbywa na poziomie skryptu wejściowego (tdd-protocol.php), a z tdd-bootstrap.php wyrzuciłem w ogóle zmienną $modified
.
Wrzuciłem do wszystkich lig na PZBS.
Zmiany sprawiają, że wśród rozkładów wyróżniany jest pojedynczy, bieżący stół, czyli rozwiązują #3.
Po kolei:
#table-X
, to podświetlany jest dany stół (to pozwala również łatwo linkować do rozkładu w kontekście pojedynczego stołu, a także załatwia przewinięcie strony do odpowiedniego stołu)Przykład: pierwsza runda tego turnieju: https://emkael.info/brydz/diff-deals/ivld_rr1_runda1.html Wczytałem do niej losowe rozkłady, które nie mają żadnego związku z tym turniejem, zignoruj również fakt, że protokół wyświetla butlera. W pierwszym rozdaniu usunąłem również ręcznie jeden zapis oraz dodałem refresh strony, żeby pokryć więcej scenariuszy. Można podlinkować pojedyncze rozdanie, np. tak: https://emkael.info/brydz/diff-deals/ivld_rr1_1b-7.html#table-3 Można również podlinkować cały protokół: https://emkael.info/brydz/diff-deals/ivld_rr1_1b-7.html (i bez referrera wyświetli wszystkie stoły).
Do tego przyjąłem następujący sposób przełączania kontekstu (poza nawigacją z kontrolki):
Ze zmian, które musiałem wprowadzić, poza wprowadzeniem linków do pojedynczego rozkładu (z nagłówka "Stół X - Rozdanie Y"):
<meta http-equiv="Refresh">
na JavaScriptowy odpowiednik - przeładowanie poprzez<meta>
gubiło hash strony (o referrerze nie wspominając)$modified
, więc na wszelki wypadek nie ruszałemTestowałem pod Chromem, a następnie pobieżnie pod Firefoksem, Operą, IE (11) i Chromem na Androidzie.
Z rzeczy, które jeszcze trochę mi się nie podobają, to że najazdy myszy oraz kliknięcia przewijające stronę są mało płynne. Jest 3 w nocy i nawet nie próbuję myśleć, co można z tym zrobić.
Do tego oryginalna struktura strony z protokołem jest taka, że zdarzenia myszy musiałem przypinać do wierszy tabeli, a czasem kursor z jakichś powodów trafia w martwą przestrzeń między wierszami tabeli i np. stół się nie podświetla. Można to ulepszyć, zamykając każdy stół w jakiś osobny element - czyli rozbijając tabelę protokołu na wiele odrębnych tabel, ale ta używana biblioteka PHP do modyfikacji DOM trochę mnie przestraszyła swoją prostotą (przykład: dobrą godzinę kombinowałem, jak usunąć element, nie uciekając się do
str_replace
na elemencie nadrzędnym).Jeśli będziemy testować i poprawiać to rozwiązanie, można by też było jakoś się zabezpieczyć przed cache'owaniem
tdd.js
w przeglądarce.No i nie wiem, czy 0.2 to właściwa wartość wyszarzenia.
Wygląda na to, że edytor automatycznie wyciął z pliku PHP spacje na końcach linii, sorry.