Thingsboard 仪表板实体 table 与实体视图
Thingsboard Dashboard Entities table with Entity Views
这个问题与
非常相似
我使用来自实体别名的数据源设置实体 table 小部件,例如“'power_sensor' 类型的实体视图”。
想法很简单:
- 如果实体视图的名称是“Powermeter1” - 然后转到仪表板状态 1
- 否则,如果它被称为“Powermeter2” - 转到仪表板状态 2
现在我要为“在行上单击”创建自定义操作,但失败了。我会根据entity.service API修改@lee-sangjun的代码,像这样:
var $injector = widgetContext.$scope.$injector;
$injector.get(widgetContext.entityService.get('entityViewService')).getEntity(entityId.id).subscribe(function(entity) {
if (entity.name == 'Powermeter1') {
openDashboardState('energy_state_1')
}
else if(entity.name == 'Powermeter2') {
openDashboardState('water_state_2')
}
});
function openDashboardState(stateId) {
var params = {
entityId: entityId,
entityName: entityName
}
widgetContext.stateController.openState(stateId, params,
false);
}
但是没有任何反应。我必须做些什么才能让它发挥作用?
我找到的可行解决方案:
var $injector = widgetContext.$scope.$injector;
$injector.get(widgetContext.servicesMap.get('entityViewService')).getEntityView(entityId.id).subscribe(function(entity) {
console.log(entity)
if (entity.name == 'Powermeter1') {
openDashboardState('energy_state_1')
}
else if(entity.name == 'Powermeter2') {
openDashboardState('water_state_2')
}
});
function openDashboardState(stateId) {
var params = {
entityId: entityId,
entityName: entityName
}
widgetContext.stateController.openState(stateId, params,
false);
}
其中 'Powermeter1' 和 'Powermeter2' 是实体视图的名称。希望对你有帮助。
这个问题与
我使用来自实体别名的数据源设置实体 table 小部件,例如“'power_sensor' 类型的实体视图”。
想法很简单:
- 如果实体视图的名称是“Powermeter1” - 然后转到仪表板状态 1
- 否则,如果它被称为“Powermeter2” - 转到仪表板状态 2
现在我要为“在行上单击”创建自定义操作,但失败了。我会根据entity.service API修改@lee-sangjun的代码,像这样:
var $injector = widgetContext.$scope.$injector;
$injector.get(widgetContext.entityService.get('entityViewService')).getEntity(entityId.id).subscribe(function(entity) {
if (entity.name == 'Powermeter1') {
openDashboardState('energy_state_1')
}
else if(entity.name == 'Powermeter2') {
openDashboardState('water_state_2')
}
});
function openDashboardState(stateId) {
var params = {
entityId: entityId,
entityName: entityName
}
widgetContext.stateController.openState(stateId, params,
false);
}
但是没有任何反应。我必须做些什么才能让它发挥作用?
我找到的可行解决方案:
var $injector = widgetContext.$scope.$injector;
$injector.get(widgetContext.servicesMap.get('entityViewService')).getEntityView(entityId.id).subscribe(function(entity) {
console.log(entity)
if (entity.name == 'Powermeter1') {
openDashboardState('energy_state_1')
}
else if(entity.name == 'Powermeter2') {
openDashboardState('water_state_2')
}
});
function openDashboardState(stateId) {
var params = {
entityId: entityId,
entityName: entityName
}
widgetContext.stateController.openState(stateId, params,
false);
}
其中 'Powermeter1' 和 'Powermeter2' 是实体视图的名称。希望对你有帮助。