ThingsBoard如何设置仪表板初始默认实体
其思路是创建一个类似Entities Table的部件,在其初始化过程中,根据设置的别名,取出数据源第一条作为默认选定实体。
创建部件
创建一个部件,类型选择最新值,并在设置中定义如下:
基础表单选择器: tb-entities-table-basic-config
数据键设置表单选择器:tb-entities-table-key-settings
高级表单选择器:tb-entities-table-widget-settings
部件代码
self.onInit = function() {console.info("init", self.ctx.stateController.getStateParams(),self.ctx.stateController);window.initentity_ctx = self.ctx;if (self.ctx.stateController.getStateParams().entityId == null && self.ctx.data.length) {var o = self.ctx.data[0];var params = { entityId: {entityId: o.datasource.entity.id,entityName: o.datasource.entityName, entityLabel: o.datasource.entityLabel},targetEntityParamName: "entityId"};//for (var i=0; i < o.dataKeys.length; i++) 先写个死的if (o.data && o.data.length > 0) {var tvPair = o.data[o.data.length - 1];params.entityId.entityProfile = tvPair[1];}self.ctx.stateController.updateState(self.ctx.stateController.getStateId(), params, false);}
}self.onDataUpdated = function() {
}
使用限制
- 仪表板状态名为entityId
- 数据源中增加设置类型键,在状态变量中会将设备的类型存储在entityProfile中,以便根据实体的不同类型,进行不同的显示

使用方法
将这个部件拖动到仪表板,指定对应的别名,和附加的数据键。当仪表板打开时,会根据别名指定的资产或设备列表,自动选择第一个实体作为默认实体选中。
