icon
Update time
Jul 27, 2022 11:34 PM
Internal status
READY TO PUBLISH
password
起因
在学习notion的过程中,经常发现一些好看的模板中,有好看的进度条,让人赏心悦目,于是,立即想学会如何实现.
原理
在阅读了官方的文档,和一些他人分享.的经验,知道了原来是使用notion的公式功能,notion官方提供了一些关键字,如下
- properties: 对应某个database的列属性,这是被用来计算的变量
- constants: 常量,如圆周率
- functions:比如数学计算,字符串处理,日期计算,格式转换
有了这些关键字后,我想懂得程序的人应该知道能实现什么了,剩下的就是学习notion的语法糖了
实践
我准备实现一个书籍阅读进度条,想要计算进度条,最重要的几个变量是什么,书的总页数,这里新建一个叫Sum的property,还有已经读了的页数,用Readed这个property.
进度(Process),数学上形容就是 Process=Readed/Sum, 对应到notion的方程语法就是,其中round是取整数,prop就是取某个名字的属性的值.
round(prop("Readed") / prop("Sum") * 100)
到这一步,其实进度就已经计算出来了,但是好看的进度条还没有,因此新建一个进度条列(Process Bar),公式为
slice("■■■■■■■■■■", 0, round(prop("Progress") * 0.1)) + slice("□□□□□□□□□□", 0, 10 - round(prop("Progress") * 0.1)) + " " + if(prop("Progress") < 10, "", if(prop("Progress") < 10, "0", "")) + if(prop("Progress") == 0, "0", format(prop("Progress"))) + "%"
其中slice关键字的意思是剪切,比如进度100%,则进度条全黑,10个方格都是黑的,完成的就是取(Process*0.1)个实心方格,未完成的进度用空心方格表示,+号把实心方格和空心方格连接在一起
,最后在连接一个%符号,就能呈现处效果
小结
- notion的formula功能可以实现进度条,指定日期提醒等功能,还是比较灵活的,虽然现在关键字不多,但是够用吧
- 这个玩玩可以,但是不要太钻研这些花里胡哨的东西,与使用notion的目的本末倒置了,形式是表面的,实质目的是为了进行知识管理与创造
参考
如果有任何问题,欢迎评论交流!