Всеки артикул получава pos
(номер на JavaScript, така че плаваща точка с двойна точност). След това се изобразяват чрез сортиране по pos
.
Когато се добави нов елемент, той е pos
се базира на това къде в списъка се намира:
- долната част на списъка - максимална
pos
в момента в списъка + буфер (мисля, че1024
се използва) - горе в списъка - минимална
pos
в момента в списъка, разделен на две - средата на списъка - средна стойност на
pos
от двата съседни елемента
Средният вариант ще бъде зададен от клиента; горната/долната част може да бъде присвоена от клиента или предадена на сървъра като низовете "top"
или "bottom"
в който случай сървърът ще изпълни логиката.
На сървъра, след присвояване на pos
към новия елемент, както е показано по-горе, елементът се проверява спрямо най-близките си съседи за съседство - ако са на по-малко от минимално разстояние един от друг (.01
се използва, вярвам), те са разпръснати (потенциално каскадно в увеличаване на pos
от целия списък).
Не мисля, че това е идеалният начин, но Trello го прави така.