Ma perche' perdere la testa a reinventare l'acqua calda, visto che ci sono gia' dozzine di algoritmi di ordinamento storici, testati, a complessita' nota, e gia' implementati?
Il giorno lun 9 lug 2018 alle ore 10:21 Gollum1 <gollum1.smeag...@gmail.com> ha scritto: > Il 9 luglio 2018 09:13:19 CEST, Federico Di Gregorio <f...@dndg.it> ha > scritto: > >On 07/08/2018 11:57 PM, Gollum1 wrote: > > >> va detto che richiedere i dati ordinati al server > >> sarebbe molto più veloce, per riordinare circa 1800 elementi, ci > >mette > >> un minuto secco. > > > >Non ha senso, 1800 righe in JS sono niente. Probabilmente stai > >chiedendo > >al browser di ridisegnare la pagina ogni volta che scambi di posto due > >righe. > > inverto direttamente tra di loro le due righe da scambiare, a livello di > DOM. > > immagina che il codice originale che avevo trovato, riavviava la scansione > dall'inizio ad ogni inversione, mentre io inverto tra di loro quelle che > vanno invertite, e poi procedo con quelle seguenti. Così facendo, ad ogni > ciclo diminuisci di una riga il set di righe da controllare, perché > sicuramente ho spostato in fondo la riga di valore più elevato. > > in pratica, se adesso ci mette un minuto, con il codice originale ce ne > metteva circa dieci. > > >La div di blocco non serve a niente, quello che devi fare è > >sganciare la tabella/le righe da riordinare dal DOM e riagganciarle > >alla > >fine. > > Questo non mi è chiaro, se le tolgo dal DOM, come posso poi invertire le > righe? > > >> o almeno così vorrei che fosse, invece mi trovo nella situazione che > >> fino al termine dell'ordinamento non appare la pagina sovrapposta di > >> inibizione al sito, e naturalmente al termine viene messa e poi > >> tolta... > > > >Certo, perché finché non ridai il controllo al browser non puoi vedere > >gli effetti di modifiche al DOM. > > è questo è il motivo per cui non vedo neppure lo scambio tra le varie > righe, ma in questo caso non è sicuramente un problema. > > > Puoi usare il trucco di far passare un > > > >tick, con una cosa del tipo: > > > >function wait_page() { /* codice */ } > >function sort_rows() { /* codice */ } > > > >wait_page(); > > > >window.setTimeout(sort_rows, 0); > > > > penso di aver capito concettualmente, in pratica mi dici che devo > provocare un evento che obblighi la pagina ad essere ridisegnata, devo > vedermi di preciso cosa fa il codice che mi hai scritto, perché nel mio > caso, il lancio della wait_page è fatto all'interno della sort_table, > quindi potrei fare quella istruzione all'interno della sort stessa? > > >Anche se è completamente off-topic, ci fai vedere l'ordinamento? Magari > > > >lo portiamo ad essere istantaneo... > > > > molto volentieri, appena rimetto mano sul computer e riesco a connetterlo > alla rete (sono in ferie l'estero, e il codice risiede su un mio computer > remoto, sto sfruttando la connettività altrui, ma per qualche giorno sarò > in altra località, e non so se troverò qualcuno che mi permette di > connettermi). > > grazie in anticipo per il supporto. > > > byez > -- > gollum1 > > Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e > gli errori, maledetto correttore automatico. > >