.

.

wtorek, 4 kwietnia 2017

Kręci się, kręci, bardzo ładnie

Dodawanie spinnera zrodziło (co najmniej) dwa pytania. (Konia z rzędem temu, kto podsunie jakieś rozwiązanie!) Ale o tym za chwilę.

Udał mi się ten kręcioł (albo, jak kto woli, loader). Rada bym go pokazać każdemu. Taki jest ładny! ;) Ale ponieważ moja aplikacja póki co działa jedynie lokalnie na moim komputerze, pokażę nie jego samego, a kod css. Posiłkowałam się rozwiązaniami stąd: https://stephanwagner.me/only-css-loading-spinner, przerabiając je nieco na swoją modłę:

Gdyby ktoś był zdeterminowany, może postawić BUKĘ lokalnie u siebie - tutaj info, jak to zrobić.


A teraz wspomniane pytania/wyzwania:
  1. jak wymusić na przeglądarce zdjęcie spinnera przed wyświetleniem alertu (który jest – jak się wczoraj dowiedziałam – funkcją blokującą)
  2. jak ominąć pokazanie spinnera przy 'skeszowanej' promisie?

Ad 1.
Spinner przy akcji usuwania książki - co do zasady - miał działać tak:
  • kliknięcie w button "Delete"
  • wyświetlenie powiadomienia typu confirm: BUKA SAYS: This book will be deleted. Are you sure?
  • w przypadku potwierdzenia:
    • dodanie klasy spinner
    • wykonanie ajaxa
    • zdjęcie klasy spinner
    • wyświetlenie alertu: BUKA SAYS: The book number {number} was deleted.

W kodzie wygląda to tak:


Funkcje addSpinner i removeSpinner to nic innego jak jQuery'owe dodanie i usunięcie klasy:


W rzeczywistości dwie ostatnie akcje (zdjęcie klasy spinner i wyświetlenie alertu) odbywają się w odwrotnej kolejności. Próba obejścia problemu poprzez rozbicie jednej promisy na dwie zakończyła się niepowodzeniem:


Ad 2.
'Keszowania' (ang. cache) używam przy pobieraniu i wyświetlaniu listy rodzajów i gatunków literackich (ang. forms i genres).

Przy pierwszym wyświetleniu takiej listy spinner działa "normalnie", bo zasób pobierany jest z api. Przy drugim i każdym kolejnym spinner pojawia się dosłownie na mgnienie oka, bo 'skeszowany' zasób jest już w pamięci podręcznej przeglądarki.

Niby nie jest to wielkim problemem, ale trochę przeszkadza z perspektywy użytkownika. Nietrudno wyobrazić mi sobie sytuację, w której "biznes" upiera się, aby to zlikwidować. Tylko... jak?


Jak na razie pomysłów na rozwiązanie tych dwóch kwestii brak. Ktoś, coś?
Sugestie (więcej niż) mile widziane. :)

Brak komentarzy:

Prześlij komentarz