用插件 Query View 弄的 SQL 标题总会是不是跳动下,换成别的主题后就不会跳动,不知道是不是 Query View 和 QYL 不兼容,求解决方法。
跳动的录屏如下:
这是用在 Query View 的代码:
//!js
function getWeekNumber(date) {
// 复制日期对象避免修改原日期
const d = new Date(date);
// 将星期一设为每周第一天(0=星期日,1=星期一,...,6=星期六)
d.setDate(d.getDate() + (d.getDay() === 0 ? -6 : 1 - d.getDay()));
const startOfYear = new Date(d.getFullYear(), 0, 1);
const pastDaysOfYear = (d - startOfYear) / 86400000; // 计算天数差
return Math.ceil((pastDaysOfYear + 1) / 7); // 计算周数,+1是因为第1天属于第1周
}
const query = async () => {
let dv = Query.DataView(protyle, item, top);
const blocks = []
let childs = await Query.childdoc(dv.root_id);
for (let child of childs) {
//获取子文档的子文档
const subchilds = await Query.childdoc(child.root_id);
blocks.push(...subchilds)
}
// 按月、周分组
const groupedByMonthAndWeek = blocks.reduce((acc, block) => {
// 将 created 字符串转换为日期对象
const m = block.ial.match(/dailynote-(\d{4})(\d{2})(\d{2})/);
const year = m[1];
const month = m[2];
const day = m[3];
const date = new Date(year, month - 1, day); // 月份从 0 开始
// 获取该日期所在的周数(星期一为每周第一天)
const weekNumber = getWeekNumber(date);
// 按月分组的键
const monthKey = `${year}-${month.padStart(2, '0')}`;
// 按周分组的键
const weekKey = `W${weekNumber.toString().padStart(2, '0')}`;
// 如果该月份还没有在累加器中,创建一个空对象
if (!acc[monthKey]) {
acc[monthKey] = {};
}
// 如果该周还没有在月份分组中,创建一个空数组
if (!acc[monthKey][weekKey]) {
acc[monthKey][weekKey] = [];
}
// 计算星期几(调整为星期一为第一天)
const adjustedDay = (date.getDay() + 6) % 7; // 转换为:0=星期一,1=星期二,...,6=星期日
const newBlock = {
id: block.id,
content: block.content,
date,
month,
day,
weekNumber: adjustedDay,
weekCN: ['一', '二', '三', '四', '五', '六', '日'][adjustedDay],
}
// 将当前 block 添加到对应的周数组中
acc[monthKey][weekKey].push(newBlock);
return acc;
}, {});
// 输出 Markdown
let md = '';
for (let month in groupedByMonthAndWeek) {
md += `## ${month}\n\n`;
for (let week in groupedByMonthAndWeek[month]) {
md += `- `;
const blocks = groupedByMonthAndWeek[month][week];
// 按日期排序
blocks.sort((a, b) => a.date - b.date);
for (let block of blocks) {
const title = `${block.month}-${block.day} (${block.weekCN})`
const url = `siyuan://blocks/${block.id}`
md += ` [${title}](${url})`;
}
md += '\n';
}
md += '\n';
}
dv.addmd(md);
dv.render();
}
return query();
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于