Я пытаюсь создать перестановку карт, списков, подобных Trello.
Я читал о том, как это происходит здесь Как Trello обрабатывает перестановку карт, списков, контрольных списков и т. Д. c и здесь Что на самом деле означает POS в API Trello
Каждая позиция начинается со значения 65 535 и создает новую карту или список с последней позицией + 65 535, например:
Список карт
{ "_id" : ObjectId("5e7ea117e13673ec0db43104"), "name" : "A", "position" : 65.535 }
{ "_id" : ObjectId("5e7ea117e13673ec0db43105"), "name" : "B", "position" : 131.071 }
{ "_id" : ObjectId("5e7ea117e13673ec0db43106"), "name" : "C", "position" : 196.607 }
{ "_id" : ObjectId("5e7ea117e13673ec0db43107"), "name" : "D", "position" : 262.143 }
{ "_id" : ObjectId("5e7ea117e13673ec0db43108"), "name" : "E", "position" : 327.679 }
Если карта E вставлена вверху карты A, она будет разделена на 2 (65 535/2 = 32 767)
Если карта A вставлена в нижней части карты E, она в сумме составит 65 535 (327 679 + 65 535 = 393 214)
Посередине среднее положение двух соседних позиций.
Проблема в том, как я могу изменить любую позицию на предпоследнюю позицию? между D и E? Или между А и В?
Если карта A вставлена между картами D и E, или Вставить карту E между A и B, что такое логика c для этого?
Есть ли лучший способ сделать это?