Mam widok z niektórymi odsłoniętymi filtrami w bloku; używa AJAX i funkcji automatycznego przesyłania, więc widok jest ładowany ponownie, gdy tylko zmieni się opcja filtru.
W krótkim opóźnieniu między wybraniem opcji a ponownym załadowaniem widoku, znajomy niebieski pulsujący AJAX jest wyświetlany gdzieś u dołu formularza (myślę, gdzie obecnie znajduje się ukryty przycisk wysyłania).
Wiem, że mogę dostosować ten obraz, zastępując CSS dla elementu throbber, ale wolałbym go wcale nie używać.
Wolałbym tymczasowo wyciemnić odsłoniętą formę filtra (a najlepiej także widok główny), używając animacji jQuery. Potem znikną po zakończeniu połączenia AJAX.
W przeciwnym razie chciałbym użyć tej samej metody, której używa moduł interfejsu użytkownika widoków podczas aktualizacji, mianowicie umieszczając tę ikonę na środku strony:
Ponieważ jest to już wbudowane, po prostu założyłem, że będzie miejsce, w którym można zmienić styl / lokalizację tego ładowania; nie ma jednak szczęścia.
Jak wdrożyć jedną z tych metod?
Używam Drupal 7 z widokami 7.x-3.3.
źródło
Odpowiedzi:
Jeśli nie masz nic przeciwko użyciu małej jquery, zawsze możesz zrobić coś takiego:
źródło
ajaxSend
iajaxComplete
może być używany z warunkiemif (settings.url == '/views/ajax') {//... }
dla większej kontroli.ajaxSuccess
uruchamia się tylko raz; Myślę, że to wydarzenie nie jest automatycznie ponownie przypisywane do zastąpionego<div>
), ale poza tym jest to idealne, nie wspominając o pięknie proste . Wielkie dziękiDla kompletności oto kod, którego ostatecznie użyłem; wycisza zarówno odsłoniętą formę filtra, jak i widok, gdy rozpoczyna się ładowanie AJAX, i wraca ponownie po zakończeniu:
źródło
Witaj, stworzyłem bardzo prosty moduł, który dozuje dokładnie to, co chcesz zrobić. Moduł ma stronę konfiguracji, na której można kontrolować styl pulsowania, a nawet przesyłać własne obrazy bez żadnego włamania.
To jest link do piaskownicy: http://drupal.org/sandbox/ANDiTKO/1556808
Jeśli okaże się przydatny, proszę ujawnij go tutaj, aby mógł zostać zatwierdzony jako oficjalny projekt: http://drupal.org/node/1556114
źródło
Właśnie przeprowadziłem badanie.
Jest
throbber
on zakodowany tutaj w konstruktorzeDrupal.views.ajaxView
.Wystąpienie
Drupal.views.ajaxView
nie jest przechowywaneDrupal.ajax
i jest@todo
o nim.Oznacza to, że nie możemy wejść do obiektu i ustawić własnych parametrów.
Jak działa widok?
Krótka odpowiedź to CSS.
Strona administratora wyświetleń ukrywa się
throbber
i dodaje stylu jej rodzicowi.ajax-progress-throbber
.Czy mogę coś zrobić z Drupal.ajax?
Tak, znalazłem metody, które można zastąpić dla elementów AJAX (przyciski, łącza itp.). Pokazałem tutaj przykład: jak przedłużyć lub „zaczepić” Drupal Form AJAX? . Ale w tym przypadku nie będzie tak dobrze.
Element postępu pokazuje się na
beforeSend
etapie, więc możesz coś zrobić, zanim to się stanie.źródło
.throbber
i dodaj kilka stylów do.ajax-progress-throbber
.ajax-progress-throbber
kiedy wywoływana jest dowolna AJAX? Muszę przyznać, że tego nie zauważyłem, ale sprawdzę. I uważasz, że będę w stanie wywołać animację jQuery wbeforeSend
funkcji (na podstawie odpowiedzi na twoje inne pytanie)? Dzięki, tak naprawdę nie używam widoków i nie mogę sobie pozwolić na to, aby zagłębić się w każdy fragment kodu, aby dowiedzieć się, co się dzieje! Dam ci znać, jak sobie z tym radzę.ajax-progress-throbber
przypisują do nich klasy w żadnym momencie, więc twoja metoda nie będzie działać. Dzięki za próbę