gitment
gitment copied to clipboard
评论能否按照时间倒序排列?
首先必须点赞!
但是目前最新评论貌似显示在最后,能否将最新的放在前面呢 这样似乎更科学。(当然,因为 github API 的限制也能理解哈)
虽然 GitHub API 里的 issue comments 不能逆序传,但是还是可以实现。
for循环从后向前就可以了吧.
我建议, 初始化时可以指定评论框在上面还是下边显示.
下边太多时翻得比较麻烦
@ystyle 逆序还涉及到分页什么的。
评论框那个我也打算加个参数。
@imsun
sort string What to sort results by. Can be either created, updated, comments. Default: created direction string The direction of the sort. Can be either asc or desc. Default: desc
配合这两个参数就可以了
@ystyle 那个是 issues 的,不是 comments 的。
@imsun
哦看错了, 那还真有点麻烦. 看起来只能前端分页了. 博客的评论应该不会太多吧....
如果能将最新的放最前面确实更科学一点,期待能加一个配置选项。
我这边昨天折腾出来个算法,,,虽然丑了点但是可以用。
将 倒序
的page,per_page ,转换成正序
的,以及偏移。
这样可以实现未登录情况下,倒序获取 comments。
需要知道数据的总数量,也就是要额外请求一哈 issue
接口获取 comment
总数量。 大佬你代码里面的get请求是没有加时间戳的,这样就有缓存拉。虽然速度快,但是好多数据获取经常不是最新的 😂😂
/**
* 根据 第几页、每页数量、总数量 计算倒序时候应该进行查询的 page、per_page、offset
*
* @export
* @param {number} page 第几页
* @param {number} per_page 每页数量
* @param {number} count 总数量
* @returns {page:number,per_page:number,offset:number}
*/
export function reversePageMatch(page, per_page, count) {
let hash = []; // 存储所有可能
let to = count - (page - 1) * per_page; // 目标结束位置
let from = to - per_page + 1; // 目标起始位置
// i 是转换后每页数量
for (let i = 100; i >= per_page; i--) {
if (i > from) continue;
let ifBetween = false;
let k = 1;
// 无论第几页,最后一个元素不能在 from 和 to 之间
// k 是第几页
for (; k < count / per_page; k++) {
let temp = i * k; // 该分法在k页时,最后一个元素的位置
if (temp >= from && temp < to) {
ifBetween = true;
break;
}
if (temp >= to) {
break;
}
}
if (!ifBetween) { // 该方法符合期望
hash.push({
page: k,
per_page: i,
offset: from - ((k - 1) * i + 1)
});
}
}
hash.sort((a, b) => {
return a.per_page - b.per_page;
});
// 一般在倒序的最后一页
if (!hash.length) {
hash.push({
page: 1,
per_page: to,
offset: from - 1
});
}
hash[0].offset < 0 && (hash[0].offset = 0);
return hash[0];
}
用笨办法实现了倒序: https://yajunw.com/2019/09/11/Gitment%E5%AE%9A%E5%88%B6/
https://github.com/imsun/gitment/issues/1
https://advance-esthetic.us/rf-facial-machines