我想创建进度条,以查看我在一年中在黑曜石中在不同主题上的进步.

我已经判断了几个选项,如本教程,但似乎不清楚我: Progress Bar on Tasks

在以下示例中,它们提供:

(await dv.tryQuery('TASK FROM "Test" ')).values.length
const Tasks = dv.page("Test").file.tasks

let CompletedTasks = Tasks
    .where(t => t.completed)

dv.span(
    "![progress](https://progress-bar.dev/"
    + parseInt((CompletedTasks.length / Tasks.length) * 100)
    + "/)"
)

- [ ] Quest 1
- [ ] Quest 2
- [ ] Quest 3
- [ ] Quest 4
- [ ] Quest 5

我需要修改什么才能获得进度条?

推荐答案

您链接的示例对我来说是开箱即用的.让我们看看它们是如何操作的.

Web progress bar

这个进度条是从一个名为https://progress-bar.dev/的网站嵌入的,它会生成进度条的点播图片.DataviewJS看起来像这样:

const Tasks = dv.page("Test").file.tasks
    
let CompletedTasks = Tasks
    .where(t => t.completed)
    
dv.span(
    "![progress](https://progress-bar.dev/"
    + parseInt((CompletedTasks.length / Tasks.length) * 100)
    + "/)"
)
  1. 从名为"Test"的页面中提取tasks(复选框),并将结果存储为Tasks.
  2. completed个任务复制到另一个变量CompletedTasks中.
  3. 构造一个形状为https://progress-bar.dev/80/的URL,计算百分比为(Tasks / CompletedTasks) * 100,小数点数为parseInt().
  4. Embeds the picture in normal Markdown:

HTML progress bar

这是一个原生HTML进度条,所以它的工作原理是offline,如果你想的话,可以用CSS定制.这个例子使用了一个inline DataviewJS query,我将在这里将其分成几行:

const value = Math.round((
  (dv.current().file.tasks.where(t => t.completed).length) / (dv.current().file.tasks).length || 0
) * 100);

"<progress value='" + value + "' max='100'></progress>" + " " + value + "%"
  1. 将百分比计算为tasks.where(t => t.completed).length除以file.tasks.length,并将数字取为Math.round()(如果任务不加载,则使用0作为后备).
  2. 将百分比存储为value.
  3. 通过将字符串连接在一起来创建HTML进度条,该进度条输出:<progress value='80' max='100'></progress> 80%

Using this code yourself

您可以通过调用dv.current()dv.page("My note") Select 不同的注释来 Select 进度条使用的注释.对于您需要做的任何其他事情,请通读Dataview documentation并了解其JavaScript API.

https://progress-bar.dev/实际上也有一些额外的命令来定制栏,比如titlescale,你可以在他们的GitHub上看到一些示例.

祝你好运设计一个有趣的黑曜石仪表板!

Javascript相关问答推荐

使用CDO时如何将Vue组件存储在html之外?

React对话框模式在用户单击预期按钮之前出现

React:未调用useState变量在调试器的事件处理程序中不可用

materialized - activeIndex返回-1

通过在页面上滚动来移动滚动条

配置WebAssembly/Emscripten本地生成问题

PDF工具包阿拉伯字体的反转数字

将核心模块导入另一个组件模块时存在多个主题

不能将空字符串传递给cy.containes()

JS:XML insertBefore插入元素

使用getBorbingClientRect()更改绝对元素位置

为什么客户端没有收到来自服务器的响应消息?

使用带有HostBinding的Angular 信号来更新样式?

try 将Redux工具包与MUI ToggleButtonGroup组件一起使用时出错

每隔3个项目交替显示,然后每1个项目交替显示

是否设置以JavaScript为背景的画布元素?

ComponentWillReceiveProps仍在React 18.2.0中工作

如何在Web项目中同步语音合成和文本 colored颜色 更改

输入数据覆盖JSON文件

相对于具有选定类的不同SVG组放置自定义工具提示