Setiap item diberi pos
(nomor JavaScript, jadi float presisi ganda). Kemudian, mereka dirender dengan mengurutkan berdasarkan pos
.
Ketika item baru ditambahkan, itu adalah pos
didasarkan pada di mana dalam daftar itu:
- daftar terbawah - maksimum
pos
saat ini dalam daftar + buffer (saya pikir1024
digunakan) - daftar teratas - minimum
pos
saat ini dalam daftar dibagi dua - daftar tengah - rata-rata
pos
dari dua item yang berdekatan
Opsi tengah akan diberikan oleh klien; bagian atas/bawah dapat diberikan oleh klien atau diteruskan ke server sebagai string "top"
atau "bottom"
dalam hal ini server akan menjalankan logika.
Di server, setelah menetapkan pos
ke item baru seperti yang ditunjukkan di atas, item diperiksa terhadap tetangga terdekatnya untuk kedekatan - jika jaraknya kurang dari minimum (.01
digunakan, saya percaya), mereka tersebar (berpotensi mengalir ke peningkatan pos
dari seluruh daftar).
Menurut saya ini bukan cara yang ideal, tapi begitulah cara Trello melakukannya.