米萨卡

MisakaImouto 两刺螈
关注
89362 号成员,2022-09-01 01:19:09 加入
449
个人主页 浏览
109
帖子 + 回帖 + 评论
110h31m
在线时长
索性去不顾一切,肆意赴未知明天
  • 基于数据库的全局属性可行性探讨

    2024-11-23 00:27

    非常支持,我在数据库的使用中,最大的困扰就是:需要频繁关联后才能使用已经设定好的数据,这个效率太低了。

    我偏向于方案 2,灵活一点,不过楼里也提到了 JSON 读写的性能问题;我也非常认可使用 sqlite,这样后续自定义 SQL 进行汇总应该非常方便。

  • 文档移动功能优化建议

    2024-11-21 09:46

    可以考虑使用 二级文档列表 插件,它可以多显示一个文档列表,并且支持多选列表中的文档拖拽到官方文档树目录,实现移动。

  • 建议代码框增加【调整高度】的功能

    2024-11-17 10:33

    有个 Misuzu 插件对代码块做了增强

  • 思源笔记怎么批量调整图片大小

    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 14:10

    集市上架了二级文档列表插件,可以试试。

  • 文档数统计

    2024-09-19 08:43

    集市上架了个二级文档列表插件,可以查看全部文档和指定路径的文档数量。不过查看全部文档数量,需要在插件的设置中,

    image.png

    把这个数字调到很大,才能准确知道所有笔记数量。

  • 数据库排序问题

    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 }
    

    注意:把代码中的 .公历 换成你的 公历... 列名,截图中看不列的全名,所以需要自己补充完整。

  • 列表嵌套后 列表项块的父级 ID 没有更新数据库索引

    2024-07-06 03:58

    @88250 D 大有空麻烦看看这个问题~

  • 在文档顶部“常驻”数据库属性或内置属性

    2024-05-10 22:51

    如果只是为了展示数据库属性的话,可以试试这个挂件:image.png

  • 保存到 assets 文件夹中的附件,如果有编辑,会更新到云端吗?

    2024-04-18 20:05

    会的,data 目录下的文件都会。不过因为是在软件外修改,需要手动点击一下同步。

  • 文档同步时触发回滚并冲突

    2024-04-15 09:33

    辛苦 D 大,这是安卓端日志:systemlog2.zip

  • 搜索结果太乱、重复、不相关的搜索结果

    2024-04-12 22:33

    可以尝试一下集市中的 基于文档搜索插件,默认只搜索叶子块,代码块中也可以高亮定位。

  • 数据库关联列,希望支持直接关联视图

    2024-04-01 17:51

    啊,D 大,不是想通过汇总列显示其他列,而是想要关联列可以关联数据库的视图。
    这样避免关联列一个一个列来添加,如果需要添加的列比较多,很繁琐;如果添加列需要根据其他信息来判断,不太好操作;如果直接关联已存在的视图,就方便多了。

    列如这里image.png

    我想在一个汇总数据库(右边)中统计 1 月份的打卡数据,如果关联列支持关联视图,只需要添加左边数据库已经存在的 23 年 01 月 视图即可;添加列的话则需要找到 所有 23 年 1 月 的行一个一个添加,不太方便。

    不知道我讲清楚没有,我个人觉得是一个非常省事的功能,不过可能对 UI 和交互改动稍大。

    实在不行的话,希望添加列的菜单以后能像 Flowus 一样,在添加时候展示出更多的列,方便人工筛选:image.png

  • 数据库关联列,希望支持直接关联视图

    2024-04-01 15:27

    同时反馈汇总列的一个问题,被汇总的数字列如果为 空,会被算作 0,此时求最小值会出现与视图下方计算值不一样的情况。

    image.png

  • 请教笔记的搜索高亮和跳转问题

    2024-03-29 14:55

    点击搜索结果块,可以跳转到指定位置。

  • 请教笔记的搜索高亮和跳转问题

    2024-03-29 14:52

    想要基于文档的全局搜索,可以使用这个插件:image.png,搜索结果支持高亮和跳转。

  • 必应搜索好难用啊,什么时候能恢复站内搜索?

    2024-03-21 09:25

    能否考虑给部分用户开放搜索功能,比如 订阅者\付费者 + 会员\资深会员。如果有人订阅了或已经是会员的用户来刷接口,也可以单独把该账号的搜索权限给加入黑名单。

  • 分享数据库模板列的一些有趣实现

    2024-03-08 14:44

    这个功能估计需要插件才可以完成了 😳,模板列适合查内部已经存在的数据。

  • 分享数据库模板列的一些有趣实现

    2024-03-08 14:35

    帖子已更新演示视频 😄

  • 分享数据库模板列的一些有趣实现

    2024-03-08 11:14

    发现用代码块包裹住,转义符号的内容还是被转义了,这里加上截图代码,方框标记了代码块中被转义的内容,需要手动替换。

    image.png

  • 应能按需增加表格的行数或例数

    2024-03-04 18:35

    使用快捷键的话还是很快的:image.png

  • 搜索关键词在文本中正常显示,在代码块中不显示

    2024-03-01 21:07

    可以使用插件实现代码块内容高亮

    文档内可以使用:image.png

    想要搜索预览可以使用:image.png

  • 功能模块都显示不出来怎么办

    2024-02-22 09:11

    大概率是主题版本落后了,去集市更新主题或切换默认主题试试。

    默认主题是这两个:

    image.png

  • v2.12.8 安卓端 小米应用市场 上没有更新吗?

    2024-02-17 08:20

    确实没有更新。Screenshot20240217081954169com.xiaomi.marketedit.jpg

  • 嘿嘿,貌似发现一个问题

    2024-02-15 22:29

    这两个image.png

  • 嘿嘿,貌似发现一个问题

    2024-02-15 21:46

    不是 bug,是主题的兼容问题,电脑端使用了主题,手机端是原生主题,所以出现颜色不一致的情况。

    可以电脑端切换为原生主题进行验证。

  • 思源笔记 SQL 命令求助

    2024-02-08 18:18

    sql 中的 p.id 是子查询。可以在 where 后面添加条件来指定查询的路径,比如我这里的 hpath like '/姓名/%' 是指定 姓名 路径下的文档。想要指定单个文档,可以使用:root_id = '文档ID'

    image.png

  • 思源笔记 SQL 命令求助

    2024-02-08 17:46

    可能是 sql 代码块中不小心添加了其他字符。具体报错原因可以通过开发者工具,在控制台查看 sql 的响应再分析

    image.png

  • 思源笔记 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'