Come devo recuperare i dati in modo dinamico a seconda delle dimensioni della finestra del browser dell'utente?

0

Sto sviluppando un modulo di chat per il mio datore di lavoro, e uno dei requisiti è che "ottengo abbastanza backlog per riempire lo schermo" quando apro la stanza, invece di limitarlo sempre a un numero specifico per ogni query (ad esempio come sto facendo adesso

Non so se dovrei modificare in modo dinamico il numero da interrogare sul client, o dovrei passare le dimensioni della finestra del client al server, e fare in modo che il server faccia qualche matematica complicata basata su quella dimensione, e che cosa i messaggi sono attualmente disponibili per la query.

C'è un modo standard per gestirlo? Ho guardato Facebook Messenger come un modello, e in molti casi, sembra che stia tornando 19-20 alla volta, ma ho visto alcune finestre dove c'è 50+. Sembra dipendere dal fatto che esista o meno un'immagine da visualizzare, che riempirebbe una buona parte dello schermo.

    
posta agent154 28.03.2018 - 16:40
fonte

2 risposte

2

È una specie di problema di impaginazione / allineamento di riga in quanto non sai quanto è grande il contenuto finché non lo esegui.

Non penso ci sia alcuna soluzione magica, devi solo renderizzare e misurare il contenuto e le dimensioni della finestra prima di sapere se ne hai bisogno di più.

Ovviamente puoi indovinare e non preoccuparti se non riempie lo schermo, o chiedere troppo per riempire anche lo schermo più grande con il font più piccolo.

    
risposta data 28.03.2018 - 16:56
fonte
1

Lo farei in "pagine", in modo simile al paging tramite i risultati SQL. Rendi una pagina un numero decente di voci di backlog (diciamo 25 per il gusto di questo esempio). Recupera l'altezza dell'area di visualizzazione, crea un div al suo interno per le voci (presumo che tu stia utilizzando HTML per la visualizzazione come taggato questo con "javascript" - altrimenti usa qualsiasi contenitore visuale equivale a un div nella tua GUI), richiedi una pagina di backlog, inseriscile nel div, misuri l'altezza del div una volta che le voci sono in, e se il div non lo fa 't prendere l'area di visualizzazione, ma continuare a richiedere una pagina aggiuntiva di arretrato fino a quando non è pieno.

Rendi il numero di voci per pagina un numero che riempirà lo schermo medio. Ciò avrà anche il vantaggio che su connessioni più lente le persone non devono aspettare l'intero backlog, prenderanno prima le 25 file più recenti, e riempirà il resto nel peggiore secondo o due (a seconda della loro velocità di connessione) in seguito. Modificare i numeri per trovare un buon equilibrio tra la dimensione dei dati restituiti ed eliminare gli sprechi.

Se devi davvero farlo in una singola richiesta, supponi che una voce riempia esattamente una riga di testo (anche se nella chat potrebbe finire come paragrafi a più righe) e richiedi molte voci (e semplicemente ignori il overspill).

    
risposta data 29.03.2018 - 09:51
fonte

Leggi altre domande sui tag