[思源笔记经验分享] 使用 Query 挂件实现属性视图

背景

思源的 属性视图 还遥遥无期, 那不如先搞个伪·属性视图先用着

介绍

挂件 Queryv0.3.1 可以将块的 IAL (内联属性表, 也就是块属性们) 渲染为多行或多列

默认会将块属性在一个单元格中渲染为如下样式(渲染为多行)

key1: value1
key2: value2
key3: value3
...

如果想将其渲染为多列

  • 方案 1 (全局自定义配置): 新建 <工作空间>/data/widgets/custom.js 文件, 在文件中设置如下选项, 该选项会覆盖 <工作空间>/data/widgets/Query/src/script/module/config.js 文件中变量 config.query.render.ial.shape 的默认字段 'rows'

    export var config = {
        query: {
            render: {
                ial: {
                    shape: 'columns',
                },
            },
        },
    };
    
  • 方案 2 (局部自定义配置): 为挂件块设置自定义块属性 query-render-ial-shape: 'columns'"columns"

如果想自己控制渲染字段

  • 方案 1 (全局自定义配置): 在 custom.js 文件中设置如下选项

    export var config = {
        query: {
            render: {
                ial: {
    		fields: {
    		    forced: [],
    		    ignore: [],
    		    valid: [],
    		},
                },
            },
        },
    };
    
  • 方案 2 (局部自定义配置): 为挂件块设置自定义块属性
    • query-render-ial-fields-forced: (Array) 强制渲染的 IAL 字段(优先级最高)
    • query-render-ial-fields-ignore: (Array) IAL 字段渲染黑名单(优先级次高)
    • query-render-ial-fields-valid: (Array) IAL 字段渲染白名单(优先级最低)

示例

IAL 渲染为多行

image.png

IAL 渲染为多列

image.png

自定义查询

image.png

SELECT
    '[' || b.content || '](siyuan://blocks/' || a.block_id || ')' AS __1____pre__文档标题,
    MAX(
        CASE
            WHEN a.name = 'name' THEN a.value
            ELSE NULL
        END
    ) AS __2____kbd__命名,
    MAX(
        CASE
            WHEN a.name = 'alias' THEN REPLACE(
                '<kbd>' || a.value || '</kbd>',
                ',',
                '</kbd><br/><kbd>'
            )
            ELSE NULL
        END
    ) AS __3____pre__别名,
    MAX(
        CASE
            WHEN a.name = 'memo' THEN REPLACE(
                '<kbd>' || a.value || '</kbd>',
                ',',
                '</kbd><br/><kbd>'
            )
            ELSE NULL
        END
    ) AS __3____pre__备注
FROM
    attributes AS a
    INNER JOIN blocks AS b ON a.block_id = b.id
WHERE
    (
        a.name = 'name'
        OR a.name = 'alias'
        OR a.name = 'memo'
    )
    AND b.type = 'd'
GROUP BY
    a.block_id
ORDER BY
    RANDOM()
LIMIT
    10;

如果需要订阅服务, 欢迎使用我的推荐码呀: h0sc9rc (*^▽^*)

2 操作
shuoying 在 2022-04-11 02:17:01 更新了该帖
shuoying 在 2022-04-11 02:15:04 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 1995hanjian
    订阅者

    赞呀!

  • abbj
    支持者 订阅者

    这个挂件的使用门槛有点太高了。。

  • jipeng
    捐赠者 支持者 订阅者

    普通人用不来