Tengo una vista con algunos filtros expuestos en un bloque; utiliza AJAX y la función de envío automático para que la vista se vuelva a cargar tan pronto como se cambie una opción de filtro.
En el breve retraso entre la selección de una opción y la recarga de la vista, el conocido acelerador azul AJAX se muestra en algún lugar en la parte inferior del formulario (creo que actualmente se encuentra el botón de envío oculto).
Sé que puedo personalizar esta imagen anulando el CSS para el elemento throbber, pero preferiría no usarlo en absoluto.
Lo que preferiría hacer es desvanecer temporalmente el formulario de filtro expuesto (e idealmente también la vista principal), utilizando una animación jQuery. Luego se desvanecerían cuando la llamada AJAX se complete.
De lo contrario, me gustaría utilizar el mismo método que utiliza el módulo de la interfaz de usuario de Vistas cuando se actualiza, es decir, colocar este icono en el medio de la página:
Como eso ya está incorporado, supuse que habría una configuración en algún lugar para cambiar el estilo / ubicación de este comportamiento de carga; sin embargo, no tuve tanta suerte.
¿Cómo implemento cualquiera de estos métodos?
Estoy usando Drupal 7 con Vistas 7.x-3.3.
fuente
Respuestas:
Si no te importa usar un poco de jquery, siempre puedes hacer algo como:
fuente
ajaxSend
yajaxComplete
puede usarse con condiciónif (settings.url == '/views/ajax') {//... }
para un mayor control.ajaxSuccess
solo se dispara una vez; supongo que porque el evento no se vuelve a vincular automáticamente al reemplazado<div>
), pero aparte de eso, esto es perfecto, sin mencionar que es maravillosamente simple . Muchas graciasEn aras de la integridad, aquí está el código que terminé usando; se desvanece tanto la forma del filtro expuesto como la vista cuando comienza la carga AJAX, y vuelve a entrar cuando termina:
fuente
Hola, he creado un módulo muy simple que dosifica exactamente lo que quieres hacer. El módulo tiene una página de configuración donde puede controlar el estilo del throbber e incluso cargar sus propias imágenes sin ningún tipo de piratería.
Este es el enlace de sandbox: http://drupal.org/sandbox/ANDiTKO/1556808
Si lo encuentra útil, revísela aquí para que pueda ser aprobado como proyecto oficial: http://drupal.org/node/1556114
fuente
Acabo de hacer una investigación.
El
throbber
está codificado aquí en el constructor deDrupal.views.ajaxView
.Una instancia de
Drupal.views.ajaxView
no se almacenaDrupal.ajax
y hay al@todo
respecto.Significa que no podemos entrar en el objeto y establecer nuestros propios parámetros.
¿Cómo funciona Vistas?
La respuesta corta es CSS.
La página de administración de Views solo se esconde
throbber
y agrega estilo a su padre.ajax-progress-throbber
.¿Puedo hacer algo con Drupal.ajax?
Sí, encontré algunos métodos que puede sobrescribir para elementos AJAX (botones, enlaces, etc.). He mostrado un ejemplo aquí: ¿Cómo extender o "enganchar" el Drupal Form AJAX? . Pero en este caso no será tan bueno.
El elemento de progreso se muestra en el
beforeSend
escenario, por lo que puede hacer algo antes de que suceda.fuente
.throbber
y agrega algunos estilos a.ajax-progress-throbber
.ajax-progress-throbber
cuando se invoca cualquier AJAX? Debo admitir que no he notado que eso sucedió, pero lo comprobaré. ¿Y cree que podré invocar la animación jQuery en unabeforeSend
función (basada en la respuesta a su otra pregunta)? ¡Gracias, realmente no uso Vistas y no puedo molestarme en profundizar en cada fragmento de código para descubrir qué está sucediendo! Te contaré cómo sigo intentándolo.ajax-progress-throbber
aplican la clase a ellos en ningún momento para que su método no funcione. Sin embargo, gracias por intentarlo