我今晚终于有机会试用Obsidian Bases了,但我需要一个相对较小的数据集来进行测试。所以我从钢笔伴侣(FPC) 中导出了我的墨迹数据,并将 CSV 文件转换成了 Markdown 文件。这与使用 Bases 无关,但这里还是把简化版的代码放在这里:
// inks.js
const fs = require ( 'fs' )
fs . readFileSync ( 'collected_inks.csv' , 'utf-8' ) . split ( '\n' ) . slice ( 1 ) . forEach ( line => {
const data = line . split ( ';' )
const title = ` ${ data [ 0 ] } ${ data [ 2 ] } `
const content = [
'---' ,
` brand: ' ${ data [ 0 ] } ' ` ,
` name: ' ${ data [ 2 ] } ' ` ,
` hex: ' ${ data [ 4 ] } ' ` ,
` type: ${ data [ 3 ] } ` ,
` purchased: ${ data [ 13 ] } ` ,
'---'
]
fs . writeFileSync ( ` ./inks/ ${ title } .md ` , content . join ( '\n' ) )
} )
// Diamine Meadow.md
-- -
// ...
hex : #59ac2b
// ...
-- -
添加新文件后,我创建了一个新的基础文件夹,并添加了一个过滤器,仅显示Inks夹中的文件。FPC 为每种墨水都包含一个十六进制代码,理想情况下,我希望在表格视图中显示该颜色。如果我可以在每次更改时运行 Javascrupt,我会执行类似这样的操作来更改文本颜色,其中metadata-input-longtext是表格单元格元素的类名:
Array . from ( document . getElementsByClassName ( 'metadata-input-longtext' ) ) . forEach ( el => {
if ( el . innerText . startsWith ( '#' ) ) {
el . style . color = el . innerText
}
} )
遗憾的是(或者说并非如此),在 Obsidian 中无法做到这一点。我尝试使用attr() ,但它只适用于 data 属性位于要设置样式的元素上的情况。后来我在文档中看到,Base 类也支持公式和html函数。所以我向我的 Ink Base 类添加了一个公式(属性 > 添加公式),并添加了一个使用html函数的公式。
html ( "<span style='height: 100%; aspect-ratio: 1/1; background:" + hex + "'></span>" )

接下来,我会对我的钢笔进行同样的操作,并将它们与笔中现有的墨水关联起来。现在我已经试用过了,我发现 Bases 在处理更复杂的数据时非常强大。也许我会把一些收藏品导入 Obsidian,并同步到我的网站。
以下几篇文章帮助我更好地理解了基地: