制作一个toolbar仪表盘

环境搭建

我们使用logseq-plugin-template-react为项目基础。

git clone https://github.com/pengx17/logseq-plugin-template-react

现在我们有了一个手脚架了。这个项目是用pnpm而不是传统的npm或者yarnpnpm的优点大家使用之后一定会感觉到。使用方法和npm一致,把npm换成pnpm就行。

pnpm install安装依赖

项目结构

➜  logseq-plugin-template-react git:(master) tree -L 2
.
├── CHANGELOG.md
├── index.html
├── logo.svg
├── package.json
├── pnpm-lock.yaml
├── readme.md
├── release.config.js
├── renovate.json
├── src
│   ├── App.tsx # 页面代码写这,但是组件一般新建tsx。
│   ├── main.tsx # toolbar代码写这
│   └── utils.ts
├── tsconfig.json
└── vite.config.ts

1 directory, 13 files

注册toolbar

main.tsx 删掉原本的logseq.provideUIlogseq.provideStyle

替换成:

logseq.App.registerUIItem让我们向toolbar注册组件。

代码部分来源于logseq-plugin-heatmap项目。

现在我们运行pnpm install && pnpm run build。在logseq中载入,就可以在toolbar上看到我们的UIItem了。

当我们点击该蓝色图标时,就是我们的页面了。

新建页面

我们的目标是制做一个仪表盘。上面显示着logseq里的相关信息。在界面上参考logseq-plugin-heatmap

页面组件

新建dashboard.tsxdashboard.css

dashborad.tsx

dashboard.css

修改App.tsx

效果:

现在点击UIItem时就有一个小窗口出现在logseq正中央(因为items-center justify-center)。当我们点击logseq任意位置,都可以关闭该窗口。

调整页面位置

如果我们想像logseq-plugin-heatmap一样,页面出现在toolbar正下面。我们就需要调整页面的位置。

修改dashboard.css

修改dashboard.tsx 当然,这里我们引入了一个新的依赖,记得pnpm install react-use

其中useWindowSize是用来获取logseq的窗口位置的。而useIconPosition是我从logseq-plugin-heatmap里扒来的。

main.tsx<main>className修改为className="absolute inset-0"

现在的效果:

页数内容

现在我们就要为我们的dashboard添加真正"有用"的功能了。

修改dashboard.tsx

现在当我们点成UIItem,我们就能看到我们一共拥有多少页了。

本文代码位置 https://github.com/CorrectRoadH/logseq-plugins-develop-tutorial/tree/main/code/logseq-dashboard

最后更新于