62 lines
3.6 KiB
JavaScript
62 lines
3.6 KiB
JavaScript
function formatThingsModel(data) {
|
||
data.monitorList = [];
|
||
// 物模型格式化
|
||
for (let i = 0; i < data.thingsModels.length; i++) {
|
||
if (data.thingsModels[i].dataType.type == "array") {
|
||
if (data.thingsModels[i].dataType.arrayType == "object") {
|
||
for (let k = 0; k < data.thingsModels[i].dataType.arrayParams.length; k++) {
|
||
for (let j = 0; j < data.thingsModels[i].dataType.arrayParams[k].length; j++) {
|
||
// 数组元素中参数ID添加前缀,例如:array_00_
|
||
let index = k > 9 ? String(k) : '0' + k;
|
||
let prefix = 'array_' + index + '_';
|
||
data.thingsModels[i].dataType.arrayParams[k][j].id = prefix + data.thingsModels[i].dataType.arrayParams[k][j].id;
|
||
// 图表分类放置
|
||
if (data.thingsModels[i].dataType.arrayParams[k][j].isMonitor == 1) {
|
||
data.thingsModels[i].dataType.arrayParams[k][j].name = "[" + data.thingsModels[i].name + (k + 1) + "] " + data.thingsModels[i].dataType.arrayParams[k][j].name;
|
||
data.thingsModels[i].dataType.arrayParams[k][j].dataType.arrayType = "object";
|
||
data.monitorList.push(data.thingsModels[i].dataType.arrayParams[k][j]);
|
||
data.thingsModels[i].dataType.arrayParams[k].splice(j--, 1);
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
// 字符串拆分为物模型数组 model=id/name/type/isReadonly/value/shadow
|
||
let values = data.thingsModels[i].value != "" ? data.thingsModels[i].value.split(',') : [];
|
||
let shadows = data.thingsModels[i].shadow != "" ? data.thingsModels[i].shadow.split(',') : [];
|
||
for (let j = 0; j < data.thingsModels[i].dataType.arrayCount; j++) {
|
||
if (!data.thingsModels[i].dataType.arrayModel) {
|
||
data.thingsModels[i].dataType.arrayModel = [];
|
||
}
|
||
// 数组里面的ID需要添加前缀和索引,例如:array_00_temperature
|
||
let index = j > 9 ? String(j) : '0' + j;
|
||
let prefix = 'array_' + index + '_';
|
||
data.thingsModels[i].dataType.arrayModel[j] = {
|
||
id: prefix + data.thingsModels[i].id,
|
||
name: data.thingsModels[i].name,
|
||
type: data.thingsModels[i].type,
|
||
isReadonly: data.thingsModels[i].isReadonly,
|
||
value: values[j] ? values[j] : "",
|
||
shadow: shadows[j] ? shadows[j] : ""
|
||
}
|
||
}
|
||
|
||
}
|
||
} else if (data.thingsModels[i].dataType.type == "object") {
|
||
for (let j = 0; j < data.thingsModels[i].dataType.params.length; j++) {
|
||
// 图表分类放置
|
||
if (data.thingsModels[i].dataType.params[j].isMonitor == 1) {
|
||
data.thingsModels[i].dataType.params[j].name = "[" + data.thingsModels[i].name + "] " + data.thingsModels[i].dataType.params[j].name;
|
||
data.monitorList.push(data.thingsModels[i].dataType.params[j]);
|
||
data.thingsModels[i].dataType.params.splice(j--, 1);
|
||
}
|
||
}
|
||
} else if (data.thingsModels[i].isMonitor == 1) {
|
||
data.monitorList.push(data.thingsModels[i]);
|
||
// 使用i--解决索引变更问题
|
||
data.thingsModels.splice(i--, 1);
|
||
}
|
||
|
||
}
|
||
}
|
||
export { formatThingsModel }
|