DataviewJS待梳理
文件夹下日志标签文件
任务统计
倒计时
输出所有带有标签的文件名以及对应行且形成表格
输出所有带有标签 todo 以及未完成的任务
文件夹下标签按指定顺序排列显示
dataviewjs
const dvPages = dv.pages('"6.Spaces/MySQL"')
let segs = []
let letters = "*abcdefghjklmnopqrstwxyz".toLocaleUpperCase().split('')
let zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('')
var isNumber = function(temp){
let re = /[0-9]/
return re.test(temp)
}
var isChar = function(temp){
let re = /[a-zA-Z]/
return re.test(temp)
}
var isChinese = function(temp){
let re = /[^\u4E00-\u9FA5]/
return re.test(temp) ? false : true // 匹配的中文结果为false,非中文结果为true,故此处理
}
letters.forEach((e,i) => {
let key = (e == "*") ? "0~9" : e
let curr = {letter: key, data: new Array()}
dvPages.forEach(b => {
let tags = b.file.tags
tags.map(t => {
let initial = t.charAt(1)
if(i == 0 && isNumber(initial)){ // 统计数字部分
curr.data.push(t)
}else if(i != 0 && isChar(initial)
&& e == initial.toLocaleUpperCase()){// 统计字母A-Z部分
curr.data.push(t)
}else if(i != 0 && isChinese(initial)){
if(initial.localeCompare(zh[i]) == -1 && (!zh[i-1]
|| zh[i-1].localeCompare(initial) <= 0)){// 统计中文部分
curr.data.push(t)
}
}
})
})
if(curr.data.length > 0){
curr.data.sort() // 将每个字母对应的数据进行排序
segs.push(curr)
}
})
segs.forEach(e => {
dv.list([e.letter])// 输出,可采用心仪的方式
dv.list([e.data])
})