Zuoqiu-Yingyi / widget-query

一个将思源笔记数据库查询结果以表格样式渲染的挂件 | A widget that renders the query results of the Siyuan Notes database in tabular style.
GNU Affero General Public License v3.0
55 stars 7 forks source link

自动刷新在搜索中无法定位和高亮 #40

Open Vanly7710 opened 1 year ago

Vanly7710 commented 1 year ago

感谢大佬的挂件,这个query简直是神器,我在探索之后已经大量使用了。

现在遇到一个问题,就是query的自动刷新,如果勾选上,非常棒,每次打开页面都会获取新数据。

但是在搜索中这就成了问题,搜索到了数据之后,query会自动刷新,导致定位和高亮都失效了,不好找相应的数据。

我的提议是在勾选了自动刷新功能后,在搜索中能否不自动刷新?

如果上面那个功能不好实现,那是否能考虑做一个命令,运行之后全局刷新query插件,这样就不必每个query都设置成自动刷新了,而且在搜索前也可以运行一下命令之后在搜索,这样定位高亮不会失效,而查询的数据也是最新的。

以上是我的一点不成熟的想法,再次感谢大佬制作的挂件。

Zuoqiu-Yingyi commented 1 year ago

这里定位高亮是指什么?

Vanly7710 commented 1 year ago

演示高亮定位 我制作了一个gif,应该能更好地说明这个要素。gif上的是数据不多而且刚好在第一行,所以看起来问题不大,如果是在后面几行就比较麻烦点

Zuoqiu-Yingyi commented 1 year ago

这个确实没法解决, 因为搜索结果中匹配的关键字样式是由内核返回搜索结果时临时生成的, 挂件每次有效查询都会生成一张新的表, 这张新的表格无法保留匹配的关键字样式

自动刷新的目标是用户看到的查询结果都是最新的, 因此在搜索中禁用自动刷新违背了该设计的初衷

全局刷新也不是好的方案, 用户一般不会记忆是否存在不需要刷新的内容

目前看没有比较好的解决方案😂

Vanly7710 commented 1 year ago

仔细想了一下,自动刷新是要用户看到的查询结果都是最新的,因此在搜索结果中禁用确实不是一个太好的方案。

但是通过一个命令来进行全局刷新这个方案,我觉得应该是可行的吧?这样子在搜索前全局刷新一次,搜索定位也没问题,query数据也都是最新的,岂不是两全其美:smile:

用户一般不会记忆是否存在不需要刷新的内容

这个是什么意思呢?有点不太明白,意思是会有query查询数据但是不需要刷新的情况嘛?大佬能否解惑一下?

Zuoqiu-Yingyi commented 1 year ago

但是通过一个命令来进行全局刷新这个方案,我觉得应该是可行的吧?这样子在搜索前全局刷新一次,搜索定位也没问题,query数据也都是最新的,岂不是两全其美smile

那在搜索后如何判断是否应该刷新呢?

Vanly7710 commented 1 year ago

这确实是一个问题,我想了一下,似乎只有嵌套方案比较好实现,也就是说现有的自动刷新命令不去除,额外增加一个全局刷新命令,然后在搜索中禁用自动刷新这个命令

这样一来,如果用户需要在搜索中搜索query内容,就点击一下全局刷新。

退出搜索之后,如果用户有勾选自动刷新命令,那么就还是现行的刷新逻辑。

不知道这样是否可行呢?

Zuoqiu-Yingyi commented 1 year ago

不知道这样是否可行呢?

原理上可行, 但是技术实现上不可行, 只有加载出来的挂件块才能通过解析 DOM 获得其上面的 SQL 代码块与下面的表格块

Vanly7710 commented 1 year ago

好的,没关系大佬,我昨晚琢磨通了,其实query已经是一种查询了,去搜索不过是进行嵌套查询,用搜索查询query已经查询出来的内容🤣

所以其实这种查询方式,可以通过在query内加一点条件判断就行了,虽然比直接搜索麻烦一点,但是问题不大😎