javascript - 如何像 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 之间,这样做的逻辑是什么?
有一个更好的方法吗?
解决方案
您也可以使用 Lexorank 算法。这就是 Jira 处理卡片订购的方式https://www.youtube.com/watch?v=OjQv9xMoFbg&feature=youtu.be
您可以在 GitHub 中找到 Lexorank 的多个实现。例如,这里是 Lexorank 的一个简单 JavaScript 实现https://github.com/acadea/lexorank
推荐阅读
- java - 单击相应复选框时,在动态网络表中查找金额的总和
- ios - 如何对 if-else 条件进行更优化的编码?
- transition - 苗条的过渡仅在第一次起作用
- adsense - Adsense 的最佳广告平衡是什么?
- angular - Angular Object.getPrototypeOf: 'this' 不是 IE11 中的对象
- sql - 恢复时间序列表中的值
- firebase - Crashlytics 仪表板显示无崩溃统计信息,但 ISSUES 表中没有崩溃
- wordpress - 在 WordPress 中为 API 身份验证创建自定义登录功能
- powershell - 如何从 Azure 数据工厂自定义活动中执行 PowerShell 命令?
- apache-kafka - 如何隐藏 Kafka connect api 未处理异常的堆栈跟踪