[js] 文档树文档置顶和设置颜色 [0.0.8 完美版]

功能

  1. 文档树中,选择文档或文件夹,右键置顶,即在父级文件夹中置顶选中的文档或文件夹。
  2. 文档树中,选择文档或文件夹,右键选择颜色,即为选中的文档或文件夹添加指定的颜色。
  3. 文档树中,右键菜单出现时,按住 shift(手机版长按置顶按钮),可以置顶到顶层(支持文档和文件夹)。
  4. 兼容 pc 版和手机版

注意:暂不支持笔记本的置顶和设置颜色。

最新版 0.0.8

  1. 增加记住顶层置顶文件夹展开状态;
  2. 修复文件夹置顶到顶层后定位不到问题;
  3. 增加置顶/取消置顶时自动定位到目标文档;
  4. 修复文档全部折叠后顶层置顶恢复后需要刷新才能显示的问题;
  5. 修复已取消的顶层置顶无法实时同步问题;
  6. 优化交互体验细节

代码

https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E7%BB%99%E6%96%87%E6%A1%A3%E6%A0%91%E6%96%87%E6%A1%A3%E6%B7%BB%E5%8A%A0%E9%A2%9C%E8%89%B2%E5%92%8C%E7%BD%AE%E9%A1%B6.js

效果

动画演示
r119.gif

pc 版
image.png

手机版
image.png

使用说明

参数说明

// 是否开启置顶功能,true 开启,false 不开启
const isEnableTopmost = true;

// 是否开启颜色功能,true 开启,false 不开启
const isEnableColor = true;

// 是否开启顶层置顶功能,true 开启,false 不开启
const isEnableTopmostLevel1 = true;

// 预设颜色列表,格式 {"主题":{"明暗风格":{"编码":{style:"颜色值", "description":"颜色描述"}}}},编码值必须唯一,编码修改则原来设置的颜色将失效
// "---1": {}, 代表分割线,后面的序号必须递增
// (切换主题或亮色暗色风格时自动会切换配色方案)
// 为了让目录树的颜色更突出,默认加了加粗显示(font-weight:bold 样式),如果你不需要去掉这个样式即可

let colors = { "default": { "light": { "now": { "style": "color:#1D4ED8;font-weight:bold;", "description": "NOW" }, ... }, "dark": { "now": { "style": "color:#42A5F5;font-weight:bold;", "description": "NOW" }, ... } } };

第一次运行后,会把该默认配置保存到 /data/storage/tree_colors_user_config.json 中,以后配置颜色只需要修改该文件即可,这样不受代码片段升级的影响。

也可以把 tree_colors_user_config.json 发出来与大家分享您的创意。

该配色灵感来自 @Floria233 大佬提供的配色方案,感谢 @Floria233 大佬!

see [js] 文档树文档置顶和设置颜色 [0.0.8 完美版] - Floria233 的回帖

存储文件及使用说明
  1. 修改/data/storage/tree_colors_user_config.json 文件即可修改默认配色方案(第一次运行后生成)
  2. 取消全部置顶只需删除/data/storage/tree_topmost.json 文件即可(第一次置顶时生成)
  3. 取消全部颜色只需删除/data/storage/tree_colors.json 文件即可(第一次设置颜色时生成)
  4. 取消全部顶层置顶只需删除/data/storage/tree_topmost_level1.json 文件即可(第一次设置顶层置顶时生成)
更新说明

0.0.4 版本及以前的用户升级,需要先备份好代码里的 colors 参数配置再升级。

0.0.5 及以后的用户升级,只需要备份好/data/storage/tree_colors_user_config.json 文件即可。

缘起

看到论坛小伙伴们和我都有置顶的需求,就实现了这个功能,顺便也把我想要的颜色配置也实现了。

起初本想用插件来着,后来鉴于能用就不折腾的思想,一切从简了。

分享您的配色方案

也可以把您的 tree_colors_user_config.json 配色方案贴出来与大家分享。

默认配色方案如下(切换主题或亮色暗色风格时自动会切换颜色方案)

亮色主题
image.png

image.png

image.png

暗色主题
image.png

image.png

image.png

多个风格主题,可在不同文件夹中使用不同风格样式。

旧版本(0.0.4 版)

与 0.0.5+ 的区别是不支持根据主题及明暗风格配置颜色方案。

代码

https://gitee.com/wish163/mysoft/blob/db03ef3d4206b5235ee7b85d2dd273f717b315d1/%E6%80%9D%E6%BA%90/%E7%BB%99%E6%96%87%E6%A1%A3%E6%A0%91%E6%96%87%E6%A1%A3%E6%B7%BB%E5%8A%A0%E9%A2%9C%E8%89%B2%E5%92%8C%E7%BD%AE%E9%A1%B6.js

效果

pc 版

image.png

手机版

image.png

参数说明
// 是否开启置顶功能,true开启,false不开启 const isEnableTopmost = true; // 是否开启颜色功能,true开启,false不开启 const isEnableColor = true; // 预设颜色列表,格式 {"编码":{style:"颜色值", "description":"颜色描述"}},编码值必须唯一 // 也可以把该配置贴出来与大家分享您的创意 //默认颜色组采用20种人类最易识别的颜色 see https://zhuanlan.zhihu.com/p/508870810 const colors = { "orangeRed": { style: "color:#e6194B", description: "橙红色" }, "green": { style: "color:#3cb44b", description: "绿色" }, "yellow": { style: "color:#ffe119", description: "黄色" }, ... }

鸣谢

再次感谢 @Floria233 大佬的配色灵感及提供这么多好的配色方案!

打赏作者

image.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25896 引用 • 107314 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    177 引用 • 1257 回帖

相关帖子

优质回帖

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 置顶到顶层,这功能真牛!👍

  • 其他回帖
  • wilsons

    感觉这个主题仅适用于特定主题的暗色风格,不适用于其他主题或明色风格

    所以,我打算按照这种格式设计,即主题 > 明/暗 > 列表,自定义主题会和 default 主题合并,相同的自定义的覆盖默认的。

    let colors = { "default": { "light": { }, "dark", { "orangeRed": { style: "color:#e6194B", description: "NOW" }, "yellow": { style: "color:#ffe119", description: "重要" }, "teal": { style: "color:#469990", description: "完成" }, "blueDark": { style: "color:#87CEEB", description: "TODO" }, "gray": { style: "color:#778899", description: "PASS" }, "pink": { style: "color:#fabed4", description: "喜欢" }, "orange": { style: "color:#f58231", description: "特别" } } } };

    不知道哪位大神能帮忙设计一个好看的思源官方默认主题的明暗色系?如果没有,我只能按照自己的喜好,随便设计一个了。

    并且,这个默认配置在第一次运行时会保存到 /data/storage/tree_colors_user_config.json 文件中,以后只需要修改和分享这个文件即可,这样好处时,用户自定义配置,不受代码片段升级的影响。

  • Floria233 1 评论

    image.png

    image.png

    大大,感觉实在很难找到合适的十四种颜色,一要明暗色值更替符合逻辑,二要七种各自适合黑白主题的易读,三要保证黑白主题下各自的七种颜色还尽量避免混淆

    我给的建议是,如图选取这种中间带色值,共七种,使其在黑白主题下都比较易读。

    当然,这个的问题是,这些颜色就比较中庸保守,不能说好看了(俺的审美),而且对红绿色盲可能不太友好,因为“now”和“喜欢”颜色非常接近(其实“喜欢”可以改成紫色,可是更丑,而且对应的通用意义就不太正确——喜欢怎么会是紫色呢???)不过论及实用性应该是更强的

    另一种,就是白天选用这个方案,而夜间还是我之前给的夜间方案(我个人觉得这两个方案在黑白颜色下的过渡相对来说有点逻辑,可也感觉不是最完美的方案,头秃)

    白天主题下(如上图)的色值方案

    "orangeRed": { style: "color:#cc0000", description: "NOW" },
    "yellow": { style: "color:#B8860B", description: "重要" },
    "teal": { style: "color:#00796b", description: "完成" },
    "blueDark": { style: "color:#1a73e8", description:"TODO" },
    "gray": { style: "color:#4a5568", description: "PASS" },
    "pink": { style: "color:#FF2D55", description: "喜欢" },
    "orange": { style: "color:#c25700", description: "特别" }

    感谢提供这么多好的方案!我也在 ai 帮助下,测试了几个小时才找到感觉还凑合的方案,见正文截图,先这样吧,不改了,修改这个最花时间,远大于我修改代码的时间,有用户感兴趣的话,让用户自己折腾去吧。
    wilsons
  • wilsons

    没有问题,就这样设计的。

    优先级别是 用户配置 > 代码默认配置

    在用户配置和代码默认配置内 主题配置 > default 配置

    这里之所以叫优先级别,是不会消失,是同名会覆盖,不同名被合并。

    这种设计,主要为了以默认为蓝本,去扩展想要修改的配置,而不需要完全去重新设计。

    如果你的配置中的编码完全不同,又不希望默认配置被生效,就要删除默认配置了。


    我想了下,你说的有道理,既然第一次运行时已经把默认文件存储到配置文件了,而用户又去掉了默认配置,大概是不希望再用了。

    下个版本改进下,已有用户配置文件的情况下,代码里的默认配置就不再效了。
    (最新版已支持!)

    2 操作
    wilsons 在 2025-04-08 21:41:55 更新了该回帖
    wilsons 在 2025-03-12 09:01:00 更新了该回帖
  • 查看全部回帖
wilsons
正在努力开发 wilsons 工具箱中 🛠️ 目前已正式入驻爱发电啦!💖 想催更、提需求?欢迎访问 👉 https://afdian.com/a/wilsons