赞
踩
最近想学习下TB的部件开发,做一个简单的跑马灯组件,于是看了下官方文档,结合第三方组件实现一个简单的demo,在此记录下过程。
话不多说,先上效果图。
ThingsBoard小部件是其他UI模块,可以轻松集成到任何IoT Dashboard中。它们提供了最终用户功能,例如数据可视化,远程设备控制,警报管理以及静态自定义html内容的显示。根据提供的功能,每个窗口小部件定义代表一个特定的窗口小部件类型。
部件编辑器分为四部分:
介绍完部件编辑器后,我们开始第一个部件:marquee组件的开发。
资源
由于marquee组件使用了第三方组件,因此需要cdn引入。点击添加,添加marquee组件的cdn地址即可。
HTML
<div class="card"> <div class="card-header card-header-info"> <div class="demo"> <h4 class="card-title"> 1、allowCss3Support: 是否使用CSS3动画。 2、direction: 跑马灯动画的方向。 3、duplicated: 是否复制文本。 4、speed: 加载速度。 5、gap: tickers之间的间隙。 6、pauseOnHover: 在hover时暂停跑马灯。 7、在循环结束,暂停跑马灯delayBeforeStart毫秒。 </h4> </div> </div> <div class="card-body"> <p class="card-category"> <span class="text-success"> <i class="fa fa-spinner fa-spin fa-lg fa-fw" style="color:red"> </i> 7 </span> Marquee Options. </p> <div class="marquee-container"> <table> <tr> <td><img src="your image path"> </td> <td><img src="your image path"> </td> <td><img src="your image path"> </td> </tr> </table> </div> </div> <div class="card-footer"> <div class="stats"> <i class="material-icons">access_time</i> updated 4 minutes ago </div> </div> </div>
.marquee-container {
overflow: hidden;
}
.marquee-container img {
max-height: 120px;
height: 120px;
width: 92%;
}
.demo {
max-height: 10px;
height: 10px;
width: 92%;
}
self.onInit = function() { var allowCss3Support = self.ctx.settings .allowCss3Support || true; var delayBeforeStart = self.ctx.settings .delayBeforeStart || 0; var direction = self.ctx.settings.direction || "left"; var duplicated = self.ctx.settings.duplicated || true; var speed = self.ctx.settings.speed || 200; var gap = self.ctx.settings.gap || 50; var pauseOnHover = self.ctx.settings.pauseOnHover || true; var pauseOnCycle = self.ctx.settings.pauseOnCycle || 0; $('.marquee-container').marquee({ allowCss3Support: allowCss3Support, delayBeforeStart: delayBeforeStart, direction: direction, duplicated: duplicated, speed: speed, gap: gap, pauseOnHover: pauseOnHover, pauseOnCycle: pauseOnCycle }); $('.demo').marquee({ direction: 'left', speed: 100 }); }
部件代码完成后,可以预览查看效果,但是marquee组件的属性还不能自定义配置,因此我们需要通过Settings窗口设置组件的属性,用来绑定到marquee组件。
Settings schema配置如下:
{ "schema": { "type": "object", "title": "Settings", "properties": { "allowCss3Support": { "title": "是否开启浏览器支持CSS3动画,默认true", "type": "boolean", "default": true }, "delayBeforeStart": { "title": "开始动画的延迟时候,单位毫秒,默认为1000", "type": "integer", "default": 0 }, "direction": { "title": "跑马灯动画的方向。 'left' / 'right' / 'up' / 'down'", "type": "string", "default": "left" }, "duplicated": { "title": "是否复制文本。默认为false", "type": "boolean", "default": true }, "speed": { "title": "动画的加载速度,单位毫秒,默认为1000。", "type": "integer", "default": 300 }, "gap": { "title": "tickers之间的间隙。单位像素,默认为20", "type": "integer", "default": 50 }, "pauseOnHover": { "title": "在hover时暂停跑马灯。", "type": "boolean", "default": true }, "pauseOnCycle": { "title": "在循环结束,暂停跑马灯delayBeforeStart毫秒。", "type": "integer", "default": 0 } } }, "form": [ "allowCss3Support", "delayBeforeStart", "direction", "duplicated", "speed", "gap", "pauseOnHover", "pauseOnCycle" ] }
Setting Schema是基于react-schema-form构建的,在线构建地址:react-schema-form
运行部件后,可以在预览窗口看到部件的运行效果,并且可以进入编辑模式,点击高级,查看自定义的配置项,从而进行设置部件的运行效果。
部件开发的方式分在线开发和本地开发。本次学习选择了在线开发,这种方式的优点是开发速度快,比较直观,缺点是如果组件的逻辑过多,就不适用了,毕竟每次开发组件都要写这些繁琐的HTML、CSS和Javascript。相反,本地开发的速度较慢,需要在前端工程里面使用angular封装好组件,组件的参数项可以使用TS的Class类包装好,然后在在线编辑器引用ng组件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。