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 文章如果需要转载,请附上原文出处链接。
 
										 
					
									