Mỗi mặt hàng được cung cấp một pos
(một số JavaScript, nên float chính xác kép). Sau đó, chúng được hiển thị bằng cách sắp xếp theo pos
.
Khi một mục mới được thêm vào, đó là pos
dựa trên vị trí của nó trong danh sách:
- cuối danh sách -
pos
tối đa hiện có trong danh sách + bộ đệm (tôi nghĩ1024
được sử dụng) - đầu danh sách -
pos
tối thiểu hiện đang ở trong danh sách chia đôi - giữa danh sách - trung bình của
pos
của hai mục liền kề
Tùy chọn giữa sẽ được chỉ định bởi khách hàng; trên cùng / dưới cùng có thể được chỉ định bởi máy khách hoặc được chuyển cho máy chủ dưới dạng các chuỗi "top"
hoặc "bottom"
trong trường hợp đó máy chủ sẽ thực hiện logic.
Trên máy chủ, sau khi gán pos
đối với mặt hàng mới như được hiển thị ở trên, mặt hàng được kiểm tra so với các hàng xóm gần nhất của nó để biết độ liền kề - nếu chúng cách nhau ít hơn một khoảng cách tối thiểu (.01
được sử dụng, tôi tin rằng), chúng được trải rộng (có khả năng xếp tầng để tăng pos
của toàn bộ danh sách).
Tôi không nghĩ đây là cách lý tưởng, nhưng đó là cách Trello thực hiện.