首页 > 解决方案 > 如何像 Trello 一样重新排列卡片和列表?

问题描述

我正在尝试重新排列卡片,例如 Trello 之类的列表。

我在这里了解了它是如何工作的,Trello 如何处理卡片、列表、清单等的重新排列,以及这里POS 在 Trello API 中的实际含义是什么

每个位置以值 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和B之间?

如果卡 A 插在卡 D 和 E 之间,或者卡 E 插在 A 和 B 之间,这样做的逻辑是什么?

有一个更好的方法吗?

标签: javascriptjavamongodbtrello

解决方案


您也可以使用 Lexorank 算法。这就是 Jira 处理卡片订购的方式https://www.youtube.com/watch?v=OjQv9xMoFbg&feature=youtu.be

您可以在 GitHub 中找到 Lexorank 的多个实现。例如,这里是 Lexorank 的一个简单 JavaScript 实现https://github.com/acadea/lexorank


推荐阅读