icon
Update time
Jul 27, 2022 11:34 PM
Internal status
READY TO PUBLISH
password
起因
在学习notion的过程中,经常发现一些好看的模板中,有好看的进度条,让人赏心悦目,于是,立即想学会如何实现.
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%2F71992af2-abef-4250-be3b-5bf795c0ca49%2FUntitled.png%3Fid%3Da287177a-4daa-4a3c-9e9d-1b2cbeefa705%26table%3Dblock%26spaceId%3D94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%26expirationTimestamp%3D1722002400000%26signature%3DAb3RaYvJgBYaNr8IiygCF4uucfFoL_JDQMkgrhdEbX8?table=block&id=a287177a-4daa-4a3c-9e9d-1b2cbeefa705&cache=v2)
原理
在阅读了官方的文档,和一些他人分享.的经验,知道了原来是使用notion的公式功能,notion官方提供了一些关键字,如下
- properties: 对应某个database的列属性,这是被用来计算的变量
- constants: 常量,如圆周率
- functions:比如数学计算,字符串处理,日期计算,格式转换
有了这些关键字后,我想懂得程序的人应该知道能实现什么了,剩下的就是学习notion的语法糖了
实践
我准备实现一个书籍阅读进度条,想要计算进度条,最重要的几个变量是什么,书的总页数,这里新建一个叫Sum的property,还有已经读了的页数,用Readed这个property.
进度(Process),数学上形容就是 Process=Readed/Sum, 对应到notion的方程语法就是,其中round是取整数,prop就是取某个名字的属性的值.
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%2Fdcdd60a5-e291-4867-9425-c948555383f4%2FUntitled.png%3Fid%3D71ce675a-be85-417f-a9ae-08b5061bdffc%26table%3Dblock%26spaceId%3D94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%26expirationTimestamp%3D1722002400000%26signature%3DohKR7c4AwN71PRbL09vAhLgK_NVBPCZqSmQ_PQOB_48?table=block&id=71ce675a-be85-417f-a9ae-08b5061bdffc&cache=v2)
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 image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%2Ffb50a0ce-852a-4b4f-9a89-b89e9872bccb%2FUntitled.png%3Fid%3Df4c2b5f4-101a-4081-aeb8-eff58f834e01%26table%3Dblock%26spaceId%3D94c79f86-3a7f-4d2d-ac0e-eaccf7961f02%26expirationTimestamp%3D1722002400000%26signature%3Dg6BCw9C7Dy__qlWIt8_bGH064ZGV8enzxN-wcOeaJuA?table=block&id=f4c2b5f4-101a-4081-aeb8-eff58f834e01&cache=v2)
小结
- notion的formula功能可以实现进度条,指定日期提醒等功能,还是比较灵活的,虽然现在关键字不多,但是够用吧
- 这个玩玩可以,但是不要太钻研这些花里胡哨的东西,与使用notion的目的本末倒置了,形式是表面的,实质目的是为了进行知识管理与创造
参考
如果有任何问题,欢迎评论交流!