公司业务要求写一个库位图,看了看 echarts 的实例,没有能够拿来直接使用的,只好使用 zrender 来自定义实现,下面记录一下过程。
首先,在项目中安装依赖
1 | npm install zrender@5.2.1 --save |
声明我们的容器 div
1 | <div id="canvas"></div> |
在项目中引用 zrender
1 | <script> |
开始绘制
我一开始绘制的是两条线来表示层和列:
1 | const line = new zrender.Rect({ |
紧接着我开始考虑如何画每一个库位,后端传过来的是一个数组,我一开始用很笨的数组循环遍历方法,后来猛然想起可以用数组的 forEach 方法啊,而且 zrender 也提供了 add 方法来添加图形,真的是好久不用脑子都生锈了:
1 | // 遍历数组,添加矩形 |
将矩形添加到画布中以后,还要实现鼠标滑过的时候显示他们的一些信息(code、排列信息和状态)所以我们还要再声明一个方法来做这件事:
1 | // 清除计时器 |
接下来我们要绘制的是右上角的 label 提示用户不同的色块代表不同的状态:
1 | // 代表空闲的白色矩形 |
接下来继续添加文字表示层和列:
1 | // 表示层的文字 |
然后呢,我们还要添加表示层和列的索引:
1 | // 根据list数组的最后一项,拿到我们这个库位一共有几层几列 |