-
基于数据库的全局属性可行性探讨
2024-11-23 00:27非常支持,我在数据库的使用中,最大的困扰就是:需要频繁关联后才能使用已经设定好的数据,这个效率太低了。
我偏向于方案 2,灵活一点,不过楼里也提到了 JSON 读写的性能问题;我也非常认可使用 sqlite,这样后续自定义 SQL 进行汇总应该非常方便。
-
思源笔记怎么批量调整图片大小
2024-11-12 21:31我之前也有这个需求,写了个中键单击图片自动缩放的代码片段。不过不能调整像素,只能调整宽度百分比,把开头的 "10%" 调成自己需要的。只能说提升缩放的效率,但是还是一个一个图片中键点击才行。
document.body.addEventListener('mousedown', function (event) { if (event.button != 1) return; // 图片宽度,百分比。 let targetImageWidthValue = "10%"; let clickElement = event.target; // 检查点击的元素是否是图片 if (!clickElement.matches('.protyle-wysiwyg div[data-node-id] span.img[data-type="img"] img')) { return; } let imageSpanElement = clickElement.parentElement.parentElement; // 判断是否设置过宽度,设置过就不能覆盖 if (imageSpanElement.style.width) { //return; } // 如果图片在表格中,也不进行设置 if (imageSpanElement.parentElement.tagName.toLowerCase() === "td") { return; } let layoutTabContainerElement = clickElement.parentElement; // 循环查找当前点击的文档元素 while (layoutTabContainerElement) { if (layoutTabContainerElement.tagName.toLowerCase() === 'div' && layoutTabContainerElement.classList.contains('protyle') && layoutTabContainerElement.classList.contains('fn__flex-1')) { break; } layoutTabContainerElement = layoutTabContainerElement.parentNode; } // 默认只读模式 let isReadonly = true; if (layoutTabContainerElement) { let readonlyButton = layoutTabContainerElement.querySelector('[data-type="readonly"]'); if (readonlyButton) { isReadonly = readonlyButton.querySelector("use").getAttribute("xlink:href") !== "#iconUnlock"; } } if (isReadonly) { console.log("点击自动设置图片宽度失败!当前是只读模式。图片地址:" + clickElement.src); return; } // 创建一个鼠标右键点击事件 let contextMenuEvent = new MouseEvent('contextmenu', { bubbles: true, cancelable: true, view: window }); // 模拟触发右键点击事件 clickElement.dispatchEvent(contextMenuEvent); let menuLabelNodes = document.getElementById("commonMenu").querySelectorAll(".b3-menu__label"); let widthMenuButtonElement = null; for (let i = 0; i < menuLabelNodes.length; i++) { let currentNode = menuLabelNodes[i]; // 检查文本内容是否包含 "宽度" if (currentNode.nodeType === 1 && currentNode.textContent === "宽度") { widthMenuButtonElement = currentNode.parentElement; break; } } if (!widthMenuButtonElement) { return; } // 选中“宽度”菜单项 widthMenuButtonElement.classList.add("b3-menu__item--show", "b3-menu__item--current"); const defaultWidths = ["25%", "33%", "50%", "67%", "75%"]; if (defaultWidths.includes(targetImageWidthValue)) { let subMenuLabelNodes = widthMenuButtonElement.querySelectorAll(".b3-menu__label"); let subMenuButtonElement = null; for (let i = 0; i < subMenuLabelNodes.length; i++) { let currentNode = subMenuLabelNodes[i]; if (currentNode.nodeType === 1 && currentNode.textContent === targetImageWidthValue) { subMenuButtonElement = currentNode.parentElement; break; } } if (!subMenuButtonElement) { return; } subMenuButtonElement.click(); } else { const widthCustomButtonElement = widthMenuButtonElement.querySelectorAll('button .b3-menu__item.b3-menu__item--readonly.b3-menu__item--custom')[1]; if (!widthCustomButtonElement) { return; } const rangeElement = widthCustomButtonElement.querySelector("input"); rangeElement.value = targetImageWidthValue.replace("%", ""); // 触发 input 事件,会修改图片样式 let inputEvent = new Event('input', { bubbles: true }); rangeElement.dispatchEvent(inputEvent); // 触发 change 事件,会调用接口刷新 let changeEvent = new Event('change', { bubbles: true }); rangeElement.dispatchEvent(changeEvent); } console.log("点击自动设置图片宽度成功!图片地址:" + clickElement.src); });
-
文档数统计
2024-09-19 08:43集市上架了个二级文档列表插件,可以查看全部文档和指定路径的文档数量。不过查看全部文档数量,需要在插件的设置中,
把这个数字调到很大,才能准确知道所有笔记数量。
-
数据库排序问题
2024-07-18 17:49可以创建一个模板列,粘贴下面代码,然后模板列降序或升序。之后可以隐藏模板列,既不影响查看,也不影响后续插入新数据的排序。
.action{ $formatYear := .年份 }.action{ if eq .公历 "公元前" }.action{ $formatYear = (cat "0" .年份) }.action{ end }.action{ if eq .公历 "公元" }.action{ $formatYear = (cat "1" .年份) }.action{ end }.action{ $formatYear }
注意:把代码中的
.公历
换成你的 公历... 列名,截图中看不列的全名,所以需要自己补充完整。 -
数据库关联列,希望支持直接关联视图
2024-04-01 17:51啊,D 大,不是想通过汇总列显示其他列,而是想要关联列可以关联数据库的视图。
这样避免关联列一个一个列来添加,如果需要添加的列比较多,很繁琐;如果添加列需要根据其他信息来判断,不太好操作;如果直接关联已存在的视图,就方便多了。列如这里
我想在一个汇总数据库(右边)中统计 1 月份的打卡数据,如果关联列支持关联视图,只需要添加左边数据库已经存在的 23 年 01 月 视图即可;添加列的话则需要找到 所有 23 年 1 月 的行一个一个添加,不太方便。
不知道我讲清楚没有,我个人觉得是一个非常省事的功能,不过可能对 UI 和交互改动稍大。
实在不行的话,希望添加列的菜单以后能像 Flowus 一样,在添加时候展示出更多的列,方便人工筛选:
-
必应搜索好难用啊,什么时候能恢复站内搜索?
2024-03-21 09:25能否考虑给部分用户开放搜索功能,比如 订阅者\付费者 + 会员\资深会员。如果有人订阅了或已经是会员的用户来刷接口,也可以单独把该账号的搜索权限给加入黑名单。
-
思源笔记 SQL 命令求助
2024-02-08 18:18sql 中的 p.id 是子查询。可以在 where 后面添加条件来指定查询的路径,比如我这里的
hpath like '/姓名/%'
是指定姓名
路径下的文档。想要指定单个文档,可以使用:root_id = '文档ID'
-
思源笔记 SQL 命令求助
2024-02-08 15:22使用 Query 挂件,SQL 如下
SELECT content __1__姓名, ( SELECT replace(content, "单位:", "") FROM blocks where root_id = p.id and content like '单位:%' limit 1 ) __2__单位, ( SELECT replace(content, "职务:", "") FROM blocks where root_id = p.id and content like '职务:%' limit 1 ) __3__职位 FROM blocks p WHERE hpath like '/姓名/%' and type = 'd'