项目任务

filters:
  and:
    - file.hasTag("PARA/Task")
    - file.hasLink(this.file)
formulas:
  名称: file.asLink(title)
  未命名: file.asLink(title)
properties:
  formula.未命名:
    displayName: 名称
views:
  - type: table
    name: 所有任务
    order:
      - formula.未命名
      - task-status
      - due
      - 下一步行动
    sort:
      - property: due
        direction: ASC
 

项目待办列表

关联待办

// 链接到当前文件的链接正则表达式
const regex = new RegExp(`\\[\\[${dv.current().file.name}(\\|.*)?\\]\\]`);
dv.taskList(
    // 当前文件待办
    dv.current().file.tasks.concat(
    // 其它文件引用到当前文件的待办
    dv.pages()
        .where(p => p.file.outlinks.some(link => link.path === dv.current().file.path))
        .file.tasks
        .where(t => regex.test(t.text))))

任务待办

const name = dv.current().file.name;
const taskFiles = dv.pages()
        .where(p => {
        const taksProjMatch = p.file.frontmatter['para-project']?.includes(name)
        return taksProjMatch;
        }).file.name;
const tasksJson = JSON.stringify(taskFiles.values);
console.log('name', name, taskFiles,tasksJson);
 
dv.span('**任务待办**');
dv.span(`\`\`\`tasks
filter by function \
const projs = task.file.frontmatter['para-project']; \
return Array.isArray(projs) ? projs.some(item => item.includes("${name}"))  : projs?.includes("${name}") ?? false
\`\`\``);
 
dv.span('**任务关联待办**');
dv.span(`\`\`\`tasks
filter by function \
const outlinks = task.outlinks; \
outlinks.length && console.log('debug1', outlinks, task); \
outlinks.some(link => link.pathContainingLink.includes("20251104023556")) && console.log('debug2', outlinks); \
return  outlinks.some(link => ${tasksJson}.includes(link.rawLink.link))
\`\`\``);