Obsidian 插件:【Readme】Enhanced tables
插件名片
概述
Add programmable controls to selected tables.
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 enhanced-tables 插件的自述翻译
【机翻】
增强表格
一个用于 Obsidian 的插件,可以为标准标记表格添加高级控件(如排序、过滤和分页)。
它受到 DataLoom 的启发,这是一个令人难以置信的插件,但我希望我的数据存储在简单、易于访问和编辑的表格中,而不是存储在 JSON 文件中,这种方式与 Obsidian 工作流程的整合不够无缝。
例子
特点
- 为表格添加可配置的分页功能
- 编写自定义过滤器并动态切换
- 按数值对表格行进行排序
- 为日期和数字应用自动格式化
- 定义具有固定值的“枚举”列
- 实现每列的自定义格式化
如何安装
社区插件
- 打开设置 > 第三方插件
- 确保安全模式已关闭
- 点击浏览社区插件
- 搜索 “Enhanced tables”
- 点击安装
- 安装完成后,关闭社区插件窗口并激活新安装的插件
- 前往最新的发布版本
- 下载 main.js、manifest.json
- 保存到您的 vault VaultFolder/.obsidian/plugins/enhanced-tables/
它是如何工作的
如果您想要为任何标准的 Obsidian 表格添加一些高级控制或格式化,可以在表格之前定义一个包含您想要应用于表格的增强表格配置的 yaml 代码块。切换到查看模式时,如果配置正确,表格将根据提供的配置进行格式化,并具有所有所需的高级控件。
配置
提供的示例表格的示例配置
```yaml enhanced-tables # date-format: DD-MM-YYYY yes-format: "yes" no-format: "no" columns: Number column: alias: numberColumn type: number number-format: "style: 'currency', currency: 'EUR'" Date: type: date date-format: YYYY/MM/DD Formatted: formatter: "`#${$row.Id}) ${$cell}`" nowrap: true Hidden: hidden: true Rating: type: enum enum: '1': '⭐️' '2': '⭐️⭐️' '3': '⭐️⭐️⭐️' '4': '⭐️⭐️⭐️⭐️' '5': '⭐️⭐️⭐️⭐️⭐️' Boolean: type: bool yes-format: '👍' no-format: '👎' filter: $row.numberColumn > 1200 filters: Small numbers: $row.numberColumn < 1200 High rating: Number($row.Rating) > 3 sort: Rating # sort: -Rating pagination: page-size: 5 page-sizes: - 5 - 10 style: | th { background-color: var(--color-base-50) !important; color: var(--color-base-70) !important; } # 隐藏控件: true 隐藏配置: true ``` ### 配置语法 ```yaml 增强表``` #### 配置属性 所有配置属性都是可选的。 | 属性 | 类型 | 描述 | |----------------------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `date-format` | `string` | 必须是有效的[moment.js字符串](https://momentjs.com/docs/#/parsing/string-format/)。
此属性定义了所有类型为`date`的列的_input_格式,例如**ET**希望您如何编写它们。
默认值为`DD-MM-YYYY`。 | | `datetime-format` | `string` | 必须是有效的[moment.js字符串](https://momentjs.com/docs/#/parsing/string-format/)。
此属性定义了所有类型为`datetime`的列的_input_格式,例如**ET**希望您如何编写它们。
默认值为`DD-MM-YYYY HH:mm`。 | | `yes-format` | `string` | 指定了一个字符串,用于指定在类型为`bool`的列中表示布尔值`true`的方式。默认值为`"1"`。 | | `no-format` | `string` | 指定了一个字符串,用于指定在类型为`bool`的列中表示布尔值`false`的方式。默认值为`"0"`。 | | `columns` | `object` | 一个包含表列配置的对象。每列都是可选的:如果不需要任何高级功能,则不必配置列。列的名称必须与表的第一行(标题)上的名称匹配。
每列配置都是一个对象:详细信息请参阅[列配置属性](#column-configuration-properties)。 | | `filter` | `string` | 表的默认过滤器。编写类似于JavaScript表达式,可以访问`$row`变量。
示例:
- `$row.rating > 3`
- `$row.status === 'active'`
列配置属性
可以通过属性`number-format`指定`number`类型列的显示格式。可以通过属性`date-format`指定`date`或`datetime`类型列的显示格式,而`time`列始终以`HH:mm`格式读取。
可以通过属性`enum`指定`enum`类型列的显示格式。
可以通过属性`bool`指定`bool`类型列的显示格式。**ET**会根据根级别`yes-format`中指定的值来确定值是否为布尔值 | | `hidden` | `boolean` | 如果为`true`,则该列不会显示。 | | `nowrap` | `boolean` | 如果为`true`,则将[`white-space: nowrap`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space)应用于列单元格。 | | `number-format` | `string` | 如何格式化列的数值。必须是一个定义JavaScript的[Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat)选项的字符串。
示例:
- `"style: 'currency', currency: 'JPY'"`
- `"maximumSignificantDigits: 3"`
如果提供,将覆盖根级别的`date-format`和`datetime-format`。示例:
- `"YYYY-MM"`
- `"DD/MM/YY HH:mm"`
示例:
- `"\`#${$row.someOtherColumn}) ${$cell}\`"`
示例:
enum:|
- won: "\WON\"
- lost: "\LOST\"
| editable
| boolean
| 覆盖特定列的根级别 editable
值,以便只能在查看模式下使某些列可编辑。 |
| searchable
| boolean
| 如果至少有一列将此值设置为 true
,则显示一个搜索输入框,可用于通过查看 searchable
列的值来过滤结果。 |
分页配置属性
属性 | 类型 | 描述 |
---|---|---|
page-size | number | 必填项。每页显示多少项。 |
page-sizes | array | 定义可选择的页面大小的数字数组。默认值为:25, 50, 100。 |
高级用法
TableManager Api
增强表格插件公开了一个实用的 Api,用于在文件中处理 markdown 表格。您可以使用它来编写与自定义表格相关的高级集成,比如可以更改文件中的表格的按钮。
插件公开了一个 Tablemanager
实例,可以通过 app.plugins.plugin['enhanced-tables'].tableManager
进行程序化访问;
// Tablemanager
每一行的表格都由一个`string`数组表示,每个元素都是一个单元格的内容。
type LineValues = string[];
该类公开以下方法:
// 在以下所有方法中:
// `lineNo` = 0 = 第一行数据
// `lineNo` = n = 第n行
// `lineNo` = -1 = 最后一行
// 在以下所有方法中,`fileContent: string`通常是当前文件的内容
// 可以通过`this.app.workspace.getActiveViewOfType(MarkdownView)?.data`访问,或者通过`this.app.vault.read()`获取文件的内容
// 在以下所有方法中,`tableIndex: number = 0`是文件中表格的可选索引
// 如果一个文件中有多个表格。`0`是第一列,`1`是第二列,依此类推。
// 将由`values`表示的新表格行插入到提供的fileContent中的位置`lineNo`。
// 返回修改后的文件内容
function insertLine(fileContent: string, lineNo: number, values: LineValues, tableIndex = 0): string {}
// 用由`values`表示的新表格行替换在提供的fileContent中位置`lineNo`的表格行
// 返回修改后的文件内容
function modifyLine(fileContent: string, lineNo: number, values: LineValues, tableIndex = 0): string {}
// 用由`values`表示的新表格头替换在提供的fileContent中的表格头
// 返回修改后的文件内容
function modifyHeader(fileContent: string, values: LineValues, tableIndex = 0): string {}
// 删除在提供的fileContent中位置`lineNo`的表格行
// 返回修改后的文件内容
function removeLine(fileContent: string, lineNo: number, tableIndex = 0): string {}
// 返回在提供的fileContent中位置`lineNo`的表格行的值
function readLine(fileContent: string, lineNo: number, tableIndex = 0): LineValues| null {}
// 返回在提供的fileContent中的所有表格值
function readTableLines(fileContent: string, tableIndex = 0): LineValues | null {}
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。