From c30bd72d0761cdee8304850efdf8af6bc378545f Mon Sep 17 00:00:00 2001 From: cumany Date: Wed, 17 Jul 2024 23:11:20 +0800 Subject: [PATCH] =?UTF-8?q?Create=20Ob=E5=81=9A=E4=BB=BB=E5=8A=A1=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=5F=E6=88=91=E5=81=9A=E4=BA=86=E4=B8=AA=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=A1=86=5F=E4=B8=9D=E6=BB=91=E5=88=B0=E9=A3=9E?= =?UTF-8?q?=E8=B5=B7.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\345\210\260\351\243\236\350\265\267.md" | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 "10-Obsidian/Obsidian\347\244\276\345\214\272\346\217\222\344\273\266/Dataview/Dataview\347\244\276\345\214\272\345\256\236\350\267\265\347\273\217\351\252\214/Ob\345\201\232\344\273\273\345\212\241\347\256\241\347\220\206 _\346\210\221\345\201\232\344\272\206\344\270\252\347\255\233\351\200\211\346\241\206_\344\270\235\346\273\221\345\210\260\351\243\236\350\265\267.md" diff --git "a/10-Obsidian/Obsidian\347\244\276\345\214\272\346\217\222\344\273\266/Dataview/Dataview\347\244\276\345\214\272\345\256\236\350\267\265\347\273\217\351\252\214/Ob\345\201\232\344\273\273\345\212\241\347\256\241\347\220\206 _\346\210\221\345\201\232\344\272\206\344\270\252\347\255\233\351\200\211\346\241\206_\344\270\235\346\273\221\345\210\260\351\243\236\350\265\267.md" "b/10-Obsidian/Obsidian\347\244\276\345\214\272\346\217\222\344\273\266/Dataview/Dataview\347\244\276\345\214\272\345\256\236\350\267\265\347\273\217\351\252\214/Ob\345\201\232\344\273\273\345\212\241\347\256\241\347\220\206 _\346\210\221\345\201\232\344\272\206\344\270\252\347\255\233\351\200\211\346\241\206_\344\270\235\346\273\221\345\210\260\351\243\236\350\265\267.md" new file mode 100644 index 00000000..284d9e0d --- /dev/null +++ "b/10-Obsidian/Obsidian\347\244\276\345\214\272\346\217\222\344\273\266/Dataview/Dataview\347\244\276\345\214\272\345\256\236\350\267\265\347\273\217\351\252\214/Ob\345\201\232\344\273\273\345\212\241\347\256\241\347\220\206 _\346\210\221\345\201\232\344\272\206\344\270\252\347\255\233\351\200\211\346\241\206_\344\270\235\346\273\221\345\210\260\351\243\236\350\265\267.md" @@ -0,0 +1,125 @@ +--- +uid: 20240717221511 +title: Ob 做任务管理 _ 我做了个筛选框 _ 丝滑到飞起 +tags: [Obsidian, Dataview, 任务管理] +description: 一个基于dataview实现的可视化的任务筛选框 +author: Vincent +type: other +draft: false +editable: false +modified: 20240717225857 +--- + +# Ob 做任务管理 _ 我做了个筛选框 _ 丝滑到飞起 + +![image.png](https://cdn.pkmer.cn/images/20240717231052.png!pkmer) + +### 1. 简介与说明 + +任务管理对每个人来说都是必不可少的,然而,每个人的需求和习惯却各不相同。你可能会见到各种不同的插件、时间线和日历视图,但是否真的能满足你的实际需求? + +我曾经尝试过许多流行的任务管理工具,但总感觉不能完全符合我的要求。或许我的需求比较特别,我只想简单统计、快速筛选,以迅速得出结果。 + +本文的目的即使作为一个初学者,小白也不再需要费心去学习复杂的语法或插件使用方法,甚至不需要熟悉 tasks 插件的语法,只需简单点击即可完成任务管理。 + +> [!Info] +> 我不是程序员,甚至有些基础语法都不是很懂,但我依旧自己动手写了这段代码。如果你发现了 bug,请务必指出,我欢迎学习改进。我希望通过这篇分享,能为有类似需求的朋友们提供一种新的解决方案。 +> 特别感谢大佬 cuman 的文章 [[如何给 DataviewJS 中的 TaskList 的任务列表排序]],这篇文章给了我很大的启发和帮助。 +> 这并不是商业产品,而是我个人的免费分享,如果你觉得有用,请留言支持! + +### 2. 效果 + +![Pasted image 20240717201205](https://cdn.pkmer.cn/images/Pasted%20image%2020240717201205.png!pkmer) + +### 3. 安装使用 + +1. 文章末尾即可下载压缩包中`02_查询语法文件及css`一共 2 个文件 , `view.css` `view.js` ; 不能换成其他的名称; dataview 的语法规定如此,别改了 ,改了用不了 +2. 路径 -1:这 2 个文件,你随便放;建议放在不是根目录的文件夹; +3. 路径 -2:你下载之后,放的路径,肯定与我发的演示这个语法里面的路径不一样,自己改喔 +4. 使用:在任何一个 Page 页面,输入 dataviewjs 的查询 查询语法,例子如下 +5. 使用:改路径,改路径,改路径,说三扁哈;`"987_Task任务面板/02_查询语法文件及css"` , 就是改这个,最末尾不要加反斜杠切记 ; +6. 原理 :这个路径写它,是说语法在这个路径下面,去寻找 `view.css` `view.js` 这 2 个文件,所以要改,不改用什么查 ; + +```c +(async () => { + await dv.view("987_Task任务面板/02_查询语法文件及css",); +})(); + +``` +### 4.查询相关参数解释 +#### 关于日期(这个是统计的标准 ,每个人对任务的理解不一样,直接导致统计的结果不一样) + +1. `due` : 任务的截止日期 +2. `scheduled` : 我大概预计什么时候开始做这事儿的日期 +3. `completion` : 你在 tasks 这个插件上看不到;是吗? 因为我用的是 dataview 的语法 ; 在后台 ,隐藏信息里面有的 +4. 统计标准:我讲的 `已经安排` → 指的 Scheduled 的日期 ; `截止` 指的就是 due; 完成日期就是 `completion` +![Pasted image 20240717203608](https://cdn.pkmer.cn/images/Pasted%20image%2020240717203608.png!pkmer) +![Pasted image 20240717204103](https://cdn.pkmer.cn/images/Pasted%20image%2020240717204103.png!pkmer) + +#### 第 1 排的筛选解释 + +![Pasted image 20240717202645](https://cdn.pkmer.cn/images/Pasted%20image%2020240717202645.png!pkmer) + +1. `今天到期`:指的是有设定 `due` ,且日期为今天的任务 ;这个没办法进行日期筛选,因为本身就是限定为当天 +2. `已经超期`: 指的是 `未完成` + 有 `due` + 超期了; 可以日期筛选 + 排序 +3. `有截止日期`:指的 `未完成` + 有 `due` ; 可以日期筛选 + 排序 +4. `已安排`: 指的是 `未完成` + 有 `scheduled` 这个日期; 可以日期筛选 + 排序 +5. `已安排` :把的是有 `已完成` + `completion` 这个日期 ; 可以日期筛选 + 排序 +6. `项目已完成`:针对的有 父子项的任务 ;表示所有的子任务全部完成了 +7. `本月未完成` : `未完成` + 有 `due` + 且截止日期在月底之前 + +#### 第 2 排的筛选解释 + +![Pasted image 20240717202703](https://cdn.pkmer.cn/images/Pasted%20image%2020240717202703.png!pkmer) + + 1. `10天内待办` : 为什么是10天?7天行不行? 3天行不行? 8天行不行?当然行,自己去修改`view.js`里面的 ` WaitingDayNumber ` 这个变量的值哈 ;我搞这个筛选的原因:相当于它是一个安全盒,只要我排期(`due` 或者 `scheduled`) 了;比如在10天内,我会知道我的任务压力值;会去看看,时时调整 + + 2. `计划未完成`: 什么是`计划`? 标准是什么? ,我的标准就是:我设定了 `due - 截止日期` | `scheduled` -- 大概做的日期; 相当于在我准备做的时间线里面; 任务可以有100个,可能有前20个我最近 想做,有80个是以后的,我可以只排这20个的日期; + + 3. `全部未完成` : 就是字面意思 , 你所有的,只要没有√的任务,都展示 + + 4. `循环未完成`: 首先讲明 ,dataview的官网 里,我也找了,也输出打印了,目前没看着这个字段key,没办法进行筛选;那么,我是通过啥筛选的? 是通过你的文本里面,有那个循环的符号,`🔁` 通过它来实现的; 当然 后期如果我找着了,或者 官网 明确写了,只能再更新 函数了;毕竟循环任务也不多吧? 直接批量生成就行了。 + + 5. `意外情况` : 筛选标准指的是`[?]` , 任务的括号里面,有一些其他的字符,正常的话,一般是完成 就是`×` ; 没完成就是空的; 当然 有插件,搞了特别花式儿的各种符号; 那么你就可以用这个筛选; 下面有照片 + + 6. `未完成项目`: 字面意思,必须得是项目; "未完成" ,是说你没有全部完成 ,因为有父子级的存在;适合于多线程任务管理 ; + 7. `本周未完成`: 就是本周的嘞,没完成 的嘞 ,简单 + +![Pasted image 20240717205000](https://cdn.pkmer.cn/images/Pasted%20image%2020240717205000.png!pkmer) + +#### 日期筛选,我觉得要讲的部分 + +1. `日期搜索` : 这个是我做了优化,你可以搜索中文。`一月 | 1月 10~15号 2024年 2022年 ` ;可以跨年;跨月; ”明天,明年,后年,本月 ,上月,下个月,下月 “ ;都行,常用的我都优化了 +2. `时间块搜索`: 什么块儿? 比如 100 天内 10 天内 ; 你想快速 知道 你未来 ,过去 XX 天内有多少任务用的; 输入 100,就是未来 100 天; 输入 -10,就是查看回顾过去 10 天的; 输入 " -5 10 " ; 就是过去 5 天 + 未来 10 天的 +3. `Text` : 就是文本呀,任务里面写的有什么关键字,你去搜 +4. `tags` : 这不讲 +5. `Section` : 就是任务的上级,平时我们写的 list, task, 都是归属于某个 heading 下面,这一块儿,就叫 section ; 有啥用呀: 比如有人写任务,就是固定在某个 标题下面 ,那么以后回顾的时候,就可以直接搜索这个标题;可以筛选出所有相关的任务; + +![Pasted image 20240717205702](https://cdn.pkmer.cn/images/Pasted%20image%2020240717205702.png!pkmer) + +#### 排序,为什么有 2 个呀 ? + +1. 来源于大佬呀, 大佬 ` cuman` 的文章:[[如何给 DataviewJS 中的 TaskList 的任务列表排序]] +2. 举例一下:一个 Page 里面有 100 个任务,截止日期 , 安排日期,都不一样的,你平时写也很难保证 完全 是按顺序的 +3. 如果你按 Page 的名称排序了,如何保证 日期也是按顺序的呢? +4. So 我们有 2 个,一个是针对 string : 就是 text ,tag ,scetion,全部都是 string ; +5. 第二个就是日期类,按 `due` `scheduled` ,都可以自己排 + +#### 分组? 分什么组? + +![Pasted image 20240717211041](https://cdn.pkmer.cn/images/Pasted%20image%2020240717211041.png!pkmer) + +## 视频教程 + +作为一个小白,也不是程序员,学习了个把月,才完善出这个查询框,至少是符合自己喜欢的,适合自己的,因为一直没有找着别人写的能令自己满意 的,只能自己写了,但是平台 ,还有各个社区,开源的氛围非常的好,很多人分享的有用的知识,非常感谢,我也想把自己的一点儿点儿小心得分享出来。 + +如果方便还有什么不清楚 的,我也制作了视频讲解 + + + + +如果哪儿有 bug,也欢迎在文章后留言反馈,我及时修改补充 + +## 代码下载 + +请移步文末的讨论区中下载代码,其中记得把`演示及查询语法代码`中的 `"987_Task任务面板/02_查询语法文件及cs"` 换成自己的路径。 \ No newline at end of file