digital-agriculture-app/utils/FormatThingsModel.js
2025-04-16 02:11:26 +01:00

62 lines
3.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 }