Skip to content

Commit

Permalink
Create Ob做任务管理 _我做了个筛选框_丝滑到飞起.md
Browse files Browse the repository at this point in the history
  • Loading branch information
cumany committed Jul 17, 2024
1 parent d7cb3b5 commit c30bd72
Showing 1 changed file with 125 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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)

## 视频教程

作为一个小白,也不是程序员,学习了个把月,才完善出这个查询框,至少是符合自己喜欢的,适合自己的,因为一直没有找着别人写的能令自己满意 的,只能自己写了,但是平台 ,还有各个社区,开源的氛围非常的好,很多人分享的有用的知识,非常感谢,我也想把自己的一点儿点儿小心得分享出来。

如果方便还有什么不清楚 的,我也制作了视频讲解

<iframe src="https://player.bilibili.com/player.html?isOutside=true&aid=1406200370&bvid=BV1Ur421T7fy&cid=1618522290&p=1&autoplay=false" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" width="80%" height="500"> </iframe>


如果哪儿有 bug,也欢迎在文章后留言反馈,我及时修改补充

## 代码下载

请移步文末的讨论区中下载代码,其中记得把`演示及查询语法代码`中的 `"987_Task任务面板/02_查询语法文件及cs"` 换成自己的路径。

0 comments on commit c30bd72

Please sign in to comment.