Plugin de Ubicaciones 🌍

Gracias @merefield, eso es exactamente lo que intentamos :slight_smile:

Por desgracia, sigue pausando para cargar primero la página de la lista de usuarios, luego redirige al mapa.

Esperaba que solo el mapa estuviera disponible en /map o algo así :slight_smile:

2 Me gusta

Entendido.

Pero es una pista falsa.

La lista de usuarios estándar está en caché, por lo que se carga en una fracción de segundo. El problema es el tiempo que tarda en cargarse el modelo del mapa, que en tu caso son aproximadamente 400 usuarios de una sola vez… así que sí, la renderización de la lista de usuarios desperdicia solo el 0,1 % del tiempo de procesamiento, pero el verdadero problema es la segunda parte. Puede que no haya una solución rápida para eso.

Lo sé en parte porque acabo de implementar esto en un sitio que no había utilizado esta función anteriormente. Los datos del mapa se cargan tan rápido que la lista de usuarios nunca es visible (a pesar de cargarse primero). ¿El problema? Solo dos usuarios han marcado su ubicación hasta ahora… el mapa de usuarios no escala bien con su arquitectura actual.

3 Me gusta

Interesante perspectiva, gracias.

Actualmente, solo tenemos alrededor del 12% de los miembros de nuestra comunidad en el mapa y recientemente estuvimos discutiendo una iniciativa para incluir a más miembros.

¿Tendría razón al pensar que, a medida que nuestra comunidad siga creciendo, la carga del mapa se volverá cada vez más lenta?

2 Me gusta

También supongo que tiene que cargar primero la lista de usuarios.

Sin saber nada del código, ¿sería posible tener el mapa por sí solo en algún lugar? :thinking: :man_shrugging:

2 Me gusta

Como dije, eso es irrelevante. La lista de usuarios está en caché y es muy corta.

2 Me gusta

¿Utiliza el plugin de Ubicaciones su propio modelo para esto o uno existente del núcleo? Me pregunto dónde está el cuello de botella al seleccionar solo 400 filas de información de usuario desde la base de datos.

Perdona por todas las preguntas, @merefield, solo estoy tratando de entender mejor cómo funciona por dentro :slight_smile:

2 Me gusta

No hay problema, Richie. Sobrescribimos el DirectoryItemsController para recuperar más personas de una sola vez de lo que ocurriría normalmente cuando los datos se paginan para la tabla habitual. El modelo no es diferente.

Esto realmente necesita un reemplazo completo con un sistema de transmisión de datos mucho más complejo que sea consciente del tamaño y la ubicación del viewport. Eso es bastante trabajo, sospecho. Sobre todo porque ya no podrá aprovechar tanta del código que viene con Discourse; es un caso de uso completamente diferente. ¡Aunque es un trabajo bastante interesante!

El hecho de que veas este retraso cada única vez sugiere que no se trata de caché, y eso podría ser algo que podríamos solucionar sin cambios masivos.

4 Me gusta

¿No habré olvidado o cambiado alguna configuración sencilla de Discourse, verdad? :man_facepalming:

2 Me gusta

No, no es un problema tuyo, excepto que quizás has superado las capacidades actuales del plugin :slight_smile:

Cuando tenga oportunidad, revisaré lo que podría ser necesario para almacenar en caché los resultados, de modo que solo experimentes ese problema una vez por sesión. Eso es lo más sencillo.

Sin embargo, la cirugía más grande del árbol…

2 Me gusta

:cry:

Gracias @merefield, pero espera un momento con eso. No tengo pruebas en ningún sentido, pero sospecho fuertemente que la gente solo mira el mapa una vez por sesión de todos modos :thinking:

2 Me gusta

Un informe de error.

Este error ha existido por un tiempo, pero finalmente descubrí que el culpable es el plugin de ubicaciones. Cuando tengo el plugin desactivado, mi sitio web aparece correctamente en la tarjeta de usuario, pero cuando lo activo, ¡aparece dos veces! Aquí hay una captura de pantalla de la tarjeta de usuario que aparece al pasar el cursor:

y otra de la página de perfil completamente expandida:

Screen Shot 2020-06-11 at 11.15.36 AM

He probado esto muchas veces probando combinaciones al cambiar los valores en el perfil. La única vez que lo veo aparecer correctamente, es decir, que el sitio web solo aparezca una vez, es si desactivo el plugin de Ubicaciones.

2 Me gusta

Gracias, Kartik, ¿estás en una actualización reciente?

2 Me gusta

Sí, debería haberlo mencionado.


EDIT: El HTML generado para el elemento duplicado:

<span id="ember858" class="ember-view">  <div id="ember860" class="user-location-and-website-outlet replace-location ember-view"><!----><div class="user-profile-website">
  <svg class="fa d-icon d-icon-globe svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#globe"></use></svg>
    <span title="http://ks.cs.uchicago.edu">ks.cs.uchicago.edu</span>
</div>
</div>
</span>
3 Me gusta

Estoy ocupado con trabajo para clientes en este momento, pero tendré esto en cuenta en el período previo al siguiente ciclo de actualización compatible (del 1 al 5 del próximo mes).

2 Me gusta

Es interesante que uno tenga estilo de enlace clicable y el otro no :thinking:

También es interesante que no estemos viendo este problema en nuestro foro.

2 Me gusta

Parece que tenemos otro problema, @merefield

Nuestro mapa de usuarios muestra actualmente 472 usuarios, pero algunos usuarios han reportado que su marcador no aparece en el mapa. Sin embargo, al ver su tarjeta de usuario, sí aparecen en su propio pequeño mapa.

Cuando ejecutamos una consulta en la base de datos para usuarios con ubicación agregada, obtenemos 492 resultados, por lo que parece que unos 20 no son visibles en el mapa.

¿Podemos hacer algo para ayudar a depurar este problema?

Al ver la tarjeta de usuario de Chris, él aparece correctamente en su propio perfil de mapa:

Mapa completo / principal, Chris no aparece :thinking:

1 me gusta

¿Cuál es el valor de esta configuración, Richie?

image

Para el ejemplo de usuario faltante, ¿podrías enviarme por mensaje privado el resultado de esto desde la consola de Rails:

myuser = User.find_by(username: "===USERNAME===")
myuser.custom_fields["geo_location"]
2 Me gusta

La trama se complica :smiley:

Estaba configurado en 500.

Lo cambié a 1000 y nuestra gente desaparecida apareció instantáneamente :thinking:

Te enviaré los resultados por mensaje privado como se solicitó :+1:t2:

2 Me gusta

Ah, en ese caso no es necesario enviar esa información por mensaje privado. Sospecho que la lista de personas con geo_locations podría haber incluido entradas con campos vacíos (por ejemplo, el campo personalizado existe pero el objeto está vacío) y, como resultado, podrías estar alcanzando el número máximo. Aumenta el número máximo y, aunque haya entradas vacías, estas no desplazarán a los usuarios válidos. Sin duda se podría mejorar el código en ese punto, pero no es crítico.

2 Me gusta

Gracias @merefield, hemos visto a varios usuarios con cosas como '{}' en su valor, así que supongo que quizás alguna vez tuvieron una ubicación y luego fue eliminada.

Tampoco recuerdo si esos valores se eliminan cuando se anonimiza un usuario; de nuevo, esto nos haría superar el valor mágico de 500 que habíamos establecido.

¡Saludos! :slight_smile:

2 Me gusta