English | 简体中文
Chartero 这个名字是连接了 Chart 与 Zotero,作为一个Zotero插件,它可以帮助你更直观地了解你的文献库。
⚠️ 从 Zotero6旧版更新后请先前往首选项页面导入旧版历史数据后再使用!!!
新版本记录格式采用 note 与附件一、一对应的形式。若当前电脑使用过旧版 chartero,则可在_首选项->存储_中点击“自动搜索并导入旧版数据”按钮,否则需要手动复制旧版 json 数据到文本框中再点击“导入粘贴的历史记录”按钮。导入时会覆盖已有的新版记录。
此外,旧版扫描周期以毫秒为单位,新版以秒为单位,自动导入时会自动将周期除以 1000,否则需手动修改!。
👉 主要功能 👈
-
图片提取功能在ChromeWorker中调用内置PDF.js实现。
-
欲参考纯 JavaScript 版本(适用于 Zotero
6
)请切换分支
- addon:存放插件所需的资源文件,详见模板
- tools:存放开发环境所需的脚本文件等
- src
-
src/bootstrap:主窗口环境中运行的代码
- src/bootstrap/modules:各个功能模块的实现细节
-
- src/vue/summary:分类统计(在文件夹的侧边栏)
- src/vue/dashboard:仪表盘(在普通条目的侧边栏)
- src/vue/overview:文库概览(单独标签页)
- src/vue/utility:一些辅助代码
- src/vue/test:测试模块
-
src/modules:Git子仓库,用于在VS Code中调试TS源码
-
初始化:
git submodule init git submodule update
-
-
src/worker:数据处理的后台线程
-
这些链接在bootstrap.js中注册,可以在Zotero中通过fetch
函数访问:
chrome://chartero/
:访问addon文件夹resource://chartero/
:访问addon/content文件夹
与其他插件不同,Chartero 没有在全局 Zotero 变量下定义任何对象,仅可通过侧边栏 iframe 窗口访问window.addon
。
在_src/bootstrap_与_src/vue_中各有一个 global.d.ts 文件,定义了该目录下可访问的全局变量。
由zotero-types定义的Zotero
等变量在 Vue 中未定义。
addon
是整个插件内部的“全局”变量,定义在 SandBox 中,插件外不可访问。新建 iframe 时通过contentWindow
将其传入 Vue。
package.json的config.defaultSettings
字段定义了插件使用的所有首选项及其默认值,编译时将自动替换addon中相应内容,同时在 TS 中提供类型检查。
locale文件夹下定义了不同语言在 UI 上显示的字符串,插件启动时动态加载,同时在 TS 中提供类型检查。
package.json中定义了构建项目所需的 npm 脚本,修改tools/zotero-cmd.json后,在 vscode 的主菜单Run Task…
中选择指令npm: build
即可以开发模式全部编译并重载 Zotero。使用带有NODE_ENV=development
的指令时,全局变量__dev__
为true
,插件进入调试模式,此时debug.ts会注册一些调试用的选项。
- 以下列出了一些常用的指令:
reload-all
:以生产环境全部编译并重载 Zoteroreload-dev
:以开发环境跳过vue部分的编译并重载 Zoterobuild
:以开发环境全部编译并重载 Zoterowatch
:实时监听Vue更改并编译后重载 Zoterodev
:开启vue测试模块热重载
开启Zotero的状态下,在VS Code的侧边栏调试面板中运行Vue
配置可以开启Vue测试模块的热重载并呼出Firefox,此时可以在Firefox中使用Vue调试插件,也可以在VS Code中设置断点进行单步调试。
插件在开发环境下会在本地服务器注册一个/test/chartero
的路由,该节点会eval
任何POST请求来的指令并以JSON格式返回结果。Vue测试模块提供了一系列“dummy”类,通过访问/test/chartero
路由来仿真Zotero环境,此方法对其他 Zotero 客户端应用具有借鉴价值。
history/data.ts定义了阅读记录的数据结构。转换成 JSON 字符串后的形式如下:
{
"pages": {
"0": {
"p": {
"1693200000": 6
}
}
},
"numPages": 27
}
其中pages
为页码与记录的映射,numPages
为总页数。p
意为 “period”,其键为时间戳,值为记录周期(单位:秒)。
一些不太优雅的实现,可能导致潜在的兼容性问题,供其他插件开发者查错时参考。
-
篡改了
Zotero.Search
对象的search
方法,使其无法搜索到存储历史记录的笔记条目。 -
显示“所有图片”的侧边栏添加时给其他选项卡按钮添加了点击事件,可能导致冲突。
-
打开“文库总览”时
contextPane.js
会抛出异常extraData[ids[0]] is undefined
,忽略即可。