【发布时间】:2019-05-02 14:52:39
【问题描述】:
我正在为 Thingsboard IoT-Platform 创建一个小部件,但遇到了一个我无法解决的问题:
在小部件的数据源配置中为单个实体传感器定义颜色时,只有第一个实体获得正确的颜色。
目前,我的设置如下:
- 有多个
MY_DEVICE_TYPE类型的设备 - 仪表板有一个名为
MY_ALIAS的实体别名,实体过滤器设置为Devices of type 'MY_DEVICE_TYPE',Resolve as multiple entities的开关已激活 - 我的测试小部件的数据源类型为
Entity,设置为MY_ALIAS,并选择了一个传感器DEVICE_SENSOR作为数据键 -
DEVICE_SENSOR的数据键配置具有分配的颜色rgb(255, 0, 0),单位设置为TheUnit
我的小部件是一个Latest values-Widget,只有以下代码:
self.onInit = function() {
self.ctx.datasources.forEach(function(ds) {
console.log(ds.name, ds.dataKeys[0].color, ds.dataKeys[0].units);
});
};
对于与我的别名过滤器匹配的八个设备,我得到以下输出:
DEVICE_001 rgb(255, 0, 0) TheUnit
DEVICE_002 #4caf50 TheUnit
DEVICE_003 #f44336 TheUnit
DEVICE_004 #ffc107 TheUnit
DEVICE_005 #607d8b TheUnit
DEVICE_006 #9c27b0 TheUnit
DEVICE_007 #8bc34a TheUnit
DEVICE_008 #3f51b5 TheUnit
单位分配正确,但颜色似乎是动态分配的。它仅适用于第一个数据源。我很想得到我分配给数据键的颜色。
这是一个错误吗?这是预期的行为吗?是不是配置错误?
编辑
作为一种解决方法,我将第一个数据源的颜色保存在字典中,如下所示:
// A workaround to keep the sensor colors consistent.
self.colorMapping = subscription.datasources[0].dataKeys.reduce(function(acc, dataKey) {
acc[dataKey.name] = dataKey.color;
return acc;
}, {});
【问题讨论】:
标签: thingsboard