Thingsboard 仪表板实体 table 与实体视图

Thingsboard Dashboard Entities table with Entity Views

这个问题与

非常相似

我使用来自实体别名的数据源设置实体 table 小部件,例如“'power_sensor' 类型的实体视图”。

想法很简单:

现在我要为“在行上单击”创建自定义操作,但失败了。我会根据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' 是实体视图的名称。希望对你有帮助。