• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

blacksmithgu/obsidian-dataview: A high-performance data index and query language ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

blacksmithgu/obsidian-dataview

开源软件地址(OpenSource Url):

https://github.com/blacksmithgu/obsidian-dataview

开源编程语言(OpenSource Language):

TypeScript 97.3%

开源软件介绍(OpenSource Introduction):

Obsidian Dataview

Treat your Obsidian Vault as a database which you can query from. Provides a JavaScript API and pipeline-based query language for filtering, sorting, and extracting data from Markdown pages. See the Examples section below for some quick examples, or the full reference for all the details.

Examples

Show all games in the game folder, sorted by rating, with some metadata:

```dataview
table time-played, length, rating
from "games"
sort rating desc
```

Game Example


List games which are MOBAs or CRPGs.

```dataview
list from #game/moba or #game/crpg
```

Game List


List all tasks in un-completed projects:

```dataview
task from #projects/active
```

Task List

Note: To create a task you just add - [ ] I am a task. to a note (in this case a note with the #projects/active somewhere in it)


Show all files in the books folder that you read in 2021, grouped by genre and sorted by rating:

```dataviewjs
for (let group of dv.pages("#book").where(p => p["time-read"].year == 2021).groupBy(p => p.genre)) {
	dv.header(3, group.key);
	dv.table(["Name", "Time Read", "Rating"],
		group.rows
			.sort(k => k.rating, 'desc')
			.map(k => [k.file.link, k["time-read"], k.rating]))
}
```

Books By Genre

Usage

For a full description of all features, instructions, and examples, see the reference. For a more brief outline, let us examine the two major aspects of Dataview: data and querying.

Data

Dataview generates data from your vault by pulling information from Markdown frontmatter and Inline fields.

  • Markdown frontmatter is arbitrary YAML enclosed by --- at the top of a markdown document which can store metadata about that document.
  • Inline fields are a Dataview feature which allow you to write metadata directly inline in your markdown document via Key:: Value syntax.

Examples of both are shown below:

---
alias: "document"
last-reviewed: 2021-08-17
thoughts:
  rating: 8
  reviewable: false
---
# Markdown Page

Basic Field:: Value
**Bold Field**:: Nice!
You can also write [field:: inline fields]; multiple [field2:: on the same line].
If you want to hide the (field3:: key), you can do that too.

Querying

Once you've annotated documents and the like with metadata, you can then query it using any of Dataview's four query modes:

  1. Dataview Query Language (DQL): A pipeline-based, vaguely SQL-looking expression language which can support basic use cases. See the documentation for details.

    ```dataview
    TABLE file.name AS "File", rating AS "Rating" FROM #book
    ```
  2. Inline Expressions: DQL expressions which you can embed directly inside markdown and which will be evaluated in preview mode. See the documentation for allowable queries.

    We are on page `= this.file.name`.
  3. DataviewJS: A high-powered JavaScript API which gives full access to the Dataview index and some convienent rendering utilities. Highly recommended if you know JavaScript, since this is far more powerful than the query language. Check the documentation for more details.

    ```dataviewjs
    dv.taskList(dv.pages().file.tasks.where(t => !t.completed));
    ```
  4. Inline JS Expressions: The JavaScript equivalent to inline expressions, which allow you to execute arbitary JS inline:

    This page was last modified at `$= dv.current().file.mtime`.

JavaScript Queries: Security Note

JavaScript queries are very powerful, but they run at the same level of access as any other Obsidian plugin. This means they can potentially rewrite, create, or delete files, as well as make network calls. You should generally write JavaScript queries yourself or use scripts that you understand or that come from reputable sources. Regular Dataview queries are sandboxed and cannot make negative changes to your vault (in exchange for being much more limited).

Contributing

Contributions via bug reports, bug fixes, documentation, and general improvements are always welcome. For more major feature work, make an issue about the feature idea / reach out to me so we can judge feasibility and how best to implement it.

Local Development

The codebase is written in TypeScript and uses rollup / node for compilation; for a first time set up, all you should need to do is pull, install, and build:

foo@bar:~$ git clone git@github.com:blacksmithgu/obsidian-dataview.git
foo@bar:~$ cd obsidian-dataview
foo@bar:~/obsidian-dataview$ npm install
foo@bar:~/obsidian-dataview$ npm run dev

This will install libraries, build dataview, and deploy it to test-vault, which you can then open in Obsidian. This will also put rollup in watch mode, so any changes to the code will be re-compiled and the test vault will automatically reload itself.

Installing to Other Vaults

If you want to dogfood dataview in your real vault, you can build and install manually. Dataview is predominantly a read-only store, so this should be safe, but watch out if you are adjusting functionality that performs file edits!

foo@bar:~/obsidian-dataview$ npm run build
foo@bar:~/obsidian-dataview$ ./scripts/install-built path/to/your/vault

Building Documentation

We use MkDocs for documentation (found in docs/). You'll need to have python and pip to run it locally:

foo@bar:~/obsidian-dataview$ pip3 install mkdocs mkdocs-material mkdocs-redirects
foo@bar:~/obsidian-dataview$ cd docs
foo@bar:~/obsidian-dataview/docs$ mkdocs serve

This will start a local web server rendering the documentation in docs/docs, which will live-reload on change. Documentation changes are automatically pushed to blacksmithgu.github.io/obsidian-dataview once they are merged to the main branch.

Using Dataview Types In Your Own Plugin

Dataview publishes TypeScript typings for all of its APIs onto NPM (as blacksmithgu/obsidian-dataview). For instructions on how to set up development using Dataview, see setup instructions.

Support

Have you found the Dataview plugin helpful, and want to support it? I accept donations which go towards future development efforts. I generally do not accept payment for bug bounties/feature requests, as financial incentives add stress/expectations which I want to avoid for a hobby project!

paypal




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Obsidian发布时间:2022-08-18
下一篇:
joyent/restdown: Pretty REST API docs authored in Markdown发布时间:2022-08-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap