将taskwarrior导出转换为graphviz格式并分析项目

task2dot的Python项目详细描述


任务2Dot

此程序有助于创建todo的可视化效果 列表。它是taskwarrior和{a2}之间的一个简单过滤器。在

代码现在位于https://pypi.org上,可以通过

python3 -m pip install task2dot

如果您更喜欢使用已安装的软件,而不是解释源代码。 否则,将通过python3 task2dot/task2执行点.py. 在

使用

在命令行写入

^{pr2}$

这样,您所创建的所有待办事项都将被输入 task2dot。没有任何参数,它只是转换导出 转换为适合于输出被保存的graphviz的格式 {cd3>文件中。我们可以预期这会导致一场疯狂的 混乱的网络图形。在

为了清楚起见,我将不显示dot命令和输出 重定向到以下任何代码段中的文件。注意 为了获得有用的可视化效果,必须添加这些元素。在

taskwarrior导出数据时,必须明确声明 它只想导出挂起的任务:

task status:pending export | task2dot

请参见工作示例: example graph from taskwarrior list

什么是节点和边

任务、标记和项目是节点,也是用户定义的属性! 如果任务属性是用户定义的,则支持该文件 ~/.taskrc或可以在环境变量$TASKRC中找到。在

边是任务依赖关系以及从任务到其项目的所有连接, 它们的所有标记以及用户定义属性的值。在

请注意,如果所有节点及其所有连接都显示在具有 一个足够多的任务,结果图将变得非常混乱。 因此,可以使用以下排除机制。在

节点和边缘排除

节点排除

排除特定节点写入

task status:pending export | task2dot -node

那么输出中就不会有内容为“node”的节点 图表。在

为什么这个有用呢?如果您试图实现Kanban或其他什么 类似的你很可能有一个特定的标签或用户 定义的属性,比如todo太频繁了,无法在 图形可视化。几乎所有的任务都将通过 边缘,这是没用的。另外,如果导出taskwarrior数据, 使用特定的tag进行过滤将导致 图形与该标记有很多连接。所以下面 可视化将很有用:

task status:pending +work | task2dot -work

节点类型和边缘排除

使用两个连字符可以排除特定类型的节点。为 例如,不显示任何项目节点如下所示:

task status:pending export | task2dot --project

或不显示任何标签:

task status:pending export | task2dot --tags

在我的工作流程中,路径和电子邮件ID都附加到任务中,所以我 需要写吗

task export | task2dot --path --email

也可以使用 双连字符。让我们去掉从任务到 标签:

task export | task2dot --task-tags

更多的联系:超越下一个邻居

可以添加比taskwarrior更多的边 直接出口。例如,可以在项目之间添加边 和标记,因为它们由同时具有这两个属性的任务连接。如果有一个 然后删除任务,我们可以查看一个图表,显示哪些任务 如果标记代表 “行动”。与边缘排除类似,我们使用++node1-node2添加 附加边缘。在

task export | task2dot ++tags-project --task

配色方案配置

要根据需要调整颜色,您需要提供一个文件 ~/.task2dotrc.json在您的主目录中。它包含一个json字符串 格式如下:

{"nodes":{"tags":{"shape":"egg","fillcolor":"#000000","penwidth":"2pt","style":"filled","fontcolor":"white","color":"white"},"outcome":{"shape":"egg","fillcolor":"#000000","penwidth":"2pt","style":"filled","fontcolor":"white","color":"white"},"people":{"shape":"octagon","style":"filled","fillcolor":"#dd9900","color":"white"},"project":{"shape":"diamond","penwidth":"2pt","color":"#22ff22","fontcolor":"#ffffff","style":"filled","fillcolor":"#115500"},"task":{"shape":"box","color":"white","fontcolor":"white","style":"rounded,filled","fillcolor":"#222299","fontsize":"16"},"default":{"shape":"box","color":"white","fontcolor":"white","style":"rounded,filled","fillcolor":"#222299","fontsize":"16"},"annotation":{"shape":"note","color":"white","fontcolor":"white","style":"filled","fillcolor":"#111155"},"state":{"shape":"circle","color":"white","fontcolor":"white"}},"edges":{"default":{"color":"white"},"task-tags":{"color":"white","style":"dotted","penwidth":"5pt","arrowsize":"0.1"},"project-project":{"color":"#22ff22","penwidth":"2pt","arrowhead":"odot","arrowtail":"odot"},"task-project":{"color":"#aa2211"}},"graph":{"layout":"fdp","splines":"ortho","size":"30,30","bgcolor":"#111519"}}

配置中设置的参数直接对应于 graphviz(请参见graphviz)可用于节点、边和整个图形的设置。这个 此处显示的示例配置对应于用于 本自述文件中引用的示例图形。在

如果要为自己的用户定义属性提供颜色设置,只是 将属性名添加到nodes属性中,并提供与default配置不同的参数。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaEclipseMars没有保存首选项   java梯度同步失败:原因:启动失败:   java如何从嵌套的JSON获取数据?   java如何判断可观察对象中的任何对象满足一个条件?   java将字符串转换为保持相同值的byte[]数组   java有没有办法绕过AuditingEntityListener为测试设置数据?   从/usr/share/java中解析linux JAR依赖关系   安卓 My java函数抛出nullpointerexception?   java Gradle使用正确版本的依赖项   JBoss和Java6中带注释的WebService中的web服务ClassCastException   java如何修复codename one中的简单逻辑错误?   java如何迭代矩阵的索引?   java如何在JPanel不可见时将其保存为图像?   java HashMap如何在Kotlin中实现MutableMap接口?   javascript如何在单击后加载特定片段?   EclipseJava为纳什均衡获取所有玩家/策略组合   JavaSpring:Web服务REST在JSON上产生双反斜杠   java为什么ServletContext#getRealPath(“/”)返回相对路径?   java当我的游戏应该重新启动时,我应该如何处理重置SurfaceView和线程?