GodDown1V4 / obsidian-yaml-database

像notion database一样浏览编辑文档的YAML属性
MIT License
51 stars 3 forks source link

学业繁重,目前已经转Flowus了,此插件停止更新维护,感谢大家的支持!

升级注意事项!!

此插件涉及到批量修改文档内容,所以使用前请进行数据备份!!使用此插件导致的任何数据丢失本人概不负责。

请在使用前备份数据!!

请在使用前备份数据!!

请在使用前备份数据!!

当您误操作数据后,请使用命令YAML Database: 还原上一步操作来还原操作。

目录

obsidian-yaml-database 数据库

此插件适用的人群:

  • 使用obsidian并懂得yaml的用户
  • 想体验类似于 notion 的 database 的用户(当然差很远的了😄)

插件的Github链接:1657744680/obsidian-yaml-database: 像notion database一样浏览编辑文档的YAML属性 (github.com)

(老版本)0.7.0版本的演示视频:obsidian-yaml-database:帮助您管理一个文件夹中的子文档YAML属性

注意:新版本为了提升体验,改变了创建代码块的方式,详见表格的创建与简介

图片预览:

image

安装

  1. 手动从Releases页面下载安装

    1. 下载main.jsstyle.cssmanifest.json这3个文件;
    2. 将这3个文件放在你的库路径/.obsidian/plugins/obsidian-yaml-database路径下;
    3. 然后关闭第三方插件的安全模式,启用本插件。
  2. 在obsidian中使用插件obsidian42-brat: BRAT输入1657744680/obsidian-yaml-database进行安装。

使用

注意:这个表格编辑YAML它是只能编辑一个文件夹下的”子“文档,意思就是这个文件夹的子文件夹下的文档并不会被索引。

代码块:表格编辑YAML

表格的创建与简介

您只需要按照以下语法创建一个表格,然后就可以进行可视化操作了😄

创建表格的语法:

```yamledit
输入一个id值

**一个独一无二的`id`对应一个数据表格的配置信息!!**

- 您创建的这个数据表格被渲染后,此表格会被保存到插件的`data.json`中(详见[数据表格配置信息存储(高级)](#数据表格配置信息存储高级)),您在设置面板里可以看到您曾经渲染过哪些数据表格。
- 您可以在obsidian中创建 2 个或多个具有相同`id`值的数据表格,但是请注意它们是**共用**一套配置信息。
  - 这样的话若您已经创建了一个数据表格,您可以在另一处也创建一个和其共享一套配置的表格,只需要输入同样的`id`即可。
- 您如果希望创建 2 个使用不同配置信息的表格,那您就需要为它们创建 2 个独一无二的`id`

---

表格包含以下区域:

<img src="https://user-images.githubusercontent.com/39726621/162576595-059b1d36-6e36-49ed-a954-af2594a89a57.png" alt="image" width="500px" />

- 上方的操作区域:`新建`、`搜索`、`编辑列`、`表格设置`、`刷新`(后面3个按钮只在鼠标移动到操作区域才会显示)
- 下方的表格区域:表头可设置过滤器和排序、浏览编辑表格

上面我们已经创建了表格,接着我们继续进行表格的后续设置:

1. 创建表格后,表格初始会设置文件夹为根目录,点击`表格设置`→`选择文件夹`→输入选择文件夹以管理其中的文档。
1. 接下来您就可以开始管理选定文件夹下的子文档的YAML属性了🥳

---

### 操作区域

下面来详细介绍下操作区域:

1. `新建`:会在选定文件夹下新建未命名文档,您也可以为当前 database 选择模板文档(`表格设置`→`模板文件配置`)
   1. 新建的未命名文档会被置顶直到其命名被更改

2. `搜索`:会对文件路径及文件的所有yaml属性值进行搜索
3. `编辑列`:点击该按钮后,将鼠标移至表头的某一列并点击右键弹出菜单,操作完成后您可能需要点击`应用变更`来保存更改,现支持以下操作:<img src="https://user-images.githubusercontent.com/39726621/162576693-3a918216-ddbf-48ab-ae02-11be538c70d2.png" alt="image" width="500px" />
   1. `重命名显示名称`:为当前属性命设置显示名称,只是改变其在表格中的显示名称,这不会对属性本身造成影响
   2. `选择属性`:选择当前列要显示的属性
   3. `编辑属性`:您可以在这里看到表格支持的属性类型
      1. 编辑属性的类型、配置、显隐。(操作之后记得点击`应用变更`)
      2. **此外您可以且只能在这里删除该属性**。
   4. `重命名属性`:对当前属性重命名,这个就是对属性本身进行操作了
   5. `隐藏属性`:隐藏当前属性
   6. `添加属性`:现已改到最右侧,点击后会在右边一列添加新属性
4. `表格设置`:点击之后会打开面板,操作即可,记得操作完后点击`应用变更`<img src="https://user-images.githubusercontent.com/39726621/162576796-37ec7c06-cf1e-4657-9756-db2ca349558b.png" alt="image" width="500px" />
   1. `属性显隐控制`:控制属性的显示和隐藏
   2. `分页条目数量`:请输入数字,限制在`(0, 1000]`的区间内
   3. `选择文件夹`:设定当前表格管理的对应文件夹
   4. `模板文件配置`:新建的文档会以此为模板
5. `刷新`:重新读取缓存刷新表格

其它的注意事项:

2. 当您操作表格的某个单元格且输入改变值时,若该单元格所对应的文档没有该单元格所对应的属性,那么插件会自动为该文档**新建该属性**。
2. 对于多行的yaml属性,当您对它编辑并赋值时,插件会将文档中的它从多行变成单行,但这并不会有什么其它的影响。

---

### 行操作与编辑

支持以下操作:

- `双击单元格编辑`:为属性赋值(复选框类型的属性不可编辑)
- `右键 删除该文档`:这会删除文档至系统回收站或者本地
- `多选批量编辑某个属性值`:按住`Ctrl`或`Shift`的同时使用鼠标点击行进行多选,选好想要编辑的行之后,按住`Ctrl`不要松,用鼠标**双击**选中行里的某个单元格,接着输入修改即可。(这个单元格所在列应该是您想要编辑的属性)
- `文档命名`:也是支持的

---

### 过滤和排序

在`编辑列`未被触发的情况下,点击表头进行排序和过滤操作。

过滤:

<img src="https://user-images.githubusercontent.com/39726621/162576976-02786e3c-bcee-4753-b0bb-d3f77e2b3c09.png" alt="image" width="500px" />

排序:(**多条件排序**:按住`Ctrl`点击表头即可)

<img src="https://user-images.githubusercontent.com/39726621/162577060-bf371025-0c00-4fdf-b7a1-1db35ef772bf.png" alt="image" width="500px" />

### 列宽与拖动

支持直接拖动列排序,也支持拖拽设置列的宽度。

### 支持的属性类型

| 属性                     | 属性配置     | 其它                                                         |
| ------------------------ | ------------ | ------------------------------------------------------------ |
| 文本(text)             |              |                                                              |
| 数字(number)           |              |                                                              |
| 日期(date)             |              |                                                              |
| 时间(time)             |              |                                                              |
| 复选框(checkbox)       |              |                                                              |
| 图片(img)              |              | 支持在线、本地图片<br />本地图片支持输入:图片名、图片相对链接、图片基于库的链接 |
| 链接(url)              |              |                                                              |
| 标签(tags)             | 可配置候选项 | 可直接在输入框创建候选项<br />仅可在属性配置页面删除、排序候选项 |
| 文本框(textarea)       |              |                                                              |
| 内部链接(inLink)       |              |                                                              |
| 单选(select)           | 可配置候选项 | 可直接在输入框创建候选项<br />仅可在属性配置页面删除、排序候选项 |
| 多选(multiSelect)      | 可配置候选项 | 可直接在输入框创建候选项<br />仅可在属性配置页面删除、排序候选项 |
| 公式(formula)          | 可配置公式   | 仅可在属性配置面板操作<br />仅在表格中显示值,不会更新到文档中 |
| 创建时间(createdTime)  |              | 仅在表格中显示值,不会更新到文档中                           |
| 修改时间(modifiedTime) |              | 仅在表格中显示值,不会更新到文档中                           |

### Formula属性(高级)

> 此功能处于测试期间,若发生错误,请在本插件的`data.json`找到当前表格当前属性对应的`cellEditorParams`,并删除其中的`values`

在`属性配置面板`编辑公式:

1. 使用`prop(属性名)`获取该属性的值。
   **注意这里的`属性名`是属性本身的名称,而不是属性列的显示名称!!**
2. 获取的属性值均为**字符串**
3. 编写js对属性值进行操作
4. 最后使用`return`返回您想显示的值

---

**示例1:**

若属性包含`tag`且值为`test`,则显示true,否则会显示false

```javascript
return prop(tag)=="test"? true:false

数据表格配置信息存储(高级)

可以看到,用户能够编辑的其实一般只有前4个。


命令:还原上一步操作

  1. 当您误操作修改属性数据时可使用该命令回到上一步
  2. 该命令仅对表格修改属性的操作生效,包括属性的增、删、改操作
  3. 该命令仅存储50次过去的操作
  4. 还原命令操作后,表格不会自动刷新,需要手动刷新!

设置面板:管理渲染过的数据表格

您创建的这个数据表格被渲染后,此表格会被保存到插件的data.json或者库中的某个文件夹的YAML Database Config.json中,您在设置面板里可以看到您曾经渲染过哪些数据表格。

配置信息存储位置

可以选择将数据表格的配置信息存储在插件文件夹或者库的某个文件夹中。

选择存储在库的某个文件夹中需要注意的事项!! 若您选择存储配置信息的目标文件夹中已存在YAML Database Config.json文件,那么插件的数据表格信息将会以该文件为准进行更新,包括插件文件夹的data.json数据表格的配置信息也会被该文件覆盖。

删除某个id数据表格的配置信息

点击删除将会删除该id对应的数据表格的配置信息,此操作无法撤销!!


已知冲突

已知少部分情况下和另一个插件banner会有冲突,当在obsidian外部操作,并在文档yaml中新建banner属性时,会导致banner插件新建一个yaml,这属于banner的问题,和本插件无关😑


感谢

我不太会CSS,早期版本表格样式的代码是QQ群的Cuman老哥按我的要求帮忙提供的,感谢!!

之前的插件中的表格是纯手写的,在显示多条数据时有很大的性能问题,而且难以实现很多想要实现的复杂功能,于是开始重构代码,参考qq群里峰华老哥开发的windily-cloud/obsidian-AGtable插件使用的AG Grid,目前的表格使用体验比原本要好很多。


版本更新日志

0.8.5

修复

0.8.4

修复

0.8.3

修复

0.8.2

增强

0.8.1

修复

0.8.0

增强

0.7.10

增强

0.7.9

修复

0.7.8

修复

0.7.7

修复

增强

0.7.6

增强

0.7.5

修复

增强

0.7.4

修复

增强

0.7.3

修复

0.7.2

增强

0.7.1

修复

0.7.0

同时需要注意的是,此插件现在仅支持对一个文件夹的子文档的 yaml 属性进行管理。 (0.7.0版本以前是可以通过多种条件筛选,但是考虑到 yaml 的实际使用场景以及多条件筛选易造成的表格交叉管理同一文档属性的问题,故本插件以后的版本不在支持多种条件筛选)

增强

0.6.1

增强

0.6.0

增强

0.5.3

修复

增强

0.5.2

增强

0.5.1

修复

0.5.0

插件视频演示:https://www.bilibili.com/video/BV1wr4y1p7qz/

修复

增强

0.2.0

修复

增强

0.1.1

修复

增强

0.1.0

增强

0.0.3

增强

0.0.2

修复

0.0.1

视频演示:obsidian批量修改文档yaml属性插件演示