perf: 优化变量页面刷新性能
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
|
||||
// 此代码版权(除特别声明外的代码)归作者本人Diego所有
|
||||
// 源代码使用协议遵循本仓库的开源协议及附加协议
|
||||
// Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway
|
||||
// Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway
|
||||
// 使用文档:https://thingsgateway.cn/
|
||||
// QQ群:605534569
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ThingsGateway.Gateway.Razor;
|
||||
|
||||
public readonly struct CellValue
|
||||
{
|
||||
public readonly string Field { get; }
|
||||
public readonly string Value { get; }
|
||||
public CellValue(string f, string v) { Field = f; Value = v; }
|
||||
}
|
@@ -179,7 +179,7 @@ public partial class VariableRow
|
||||
}
|
||||
else
|
||||
{
|
||||
return FixedCellClassStringCache.GetOrAdd(col, col => CssBuilder.Default(col.GetFieldName())
|
||||
return FixedCellClassStringCache.GetOrAdd(col, col => CssBuilder.Default()
|
||||
.AddClass("fixed", col.Fixed)
|
||||
.AddClass("fixed-right", col.Fixed && IsTail(col))
|
||||
.AddClass("fr", IsLastColumn(col))
|
||||
|
@@ -87,22 +87,25 @@ public partial class VariableRuntimeInfo
|
||||
private ITableColumn[] _cachedFields = Array.Empty<ITableColumn>();
|
||||
|
||||
[JSInvokable]
|
||||
public List<CellValue> TriggerStateChanged(int rowIndex)
|
||||
public List<List<string>> TriggerStateChanged()
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (table == null) return null;
|
||||
var row = table.Rows[rowIndex];
|
||||
List<List<string>> ret = new();
|
||||
if (_cachedFields.Length == 0) _cachedFields = table.GetVisibleColumns.ToArray();
|
||||
var list = new List<CellValue>(_cachedFields.Length);
|
||||
foreach (var col in _cachedFields)
|
||||
foreach (var row in table.Rows)
|
||||
{
|
||||
var fieldName = col.GetFieldName();
|
||||
list.Add(new(fieldName, VariableModelUtils.GetValue(row,fieldName)));
|
||||
var list = new List<string>(_cachedFields.Length);
|
||||
foreach (var col in _cachedFields)
|
||||
{
|
||||
var fieldName = col.GetFieldName();
|
||||
list.Add(VariableModelUtils.GetValue(row, fieldName));
|
||||
}
|
||||
ret.Add(list);
|
||||
}
|
||||
|
||||
return list;
|
||||
return ret;
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
|
@@ -1,8 +1,8 @@
|
||||
export function init(id, invoke, options) {
|
||||
function getCellByClass(row, className) {
|
||||
// 直接用 querySelector 精确查找
|
||||
return row.querySelector(`td.${className}`);
|
||||
}
|
||||
//function getCellByClass(row, className) {
|
||||
// // 直接用 querySelector 精确查找
|
||||
// return row.querySelector(`td.${className}`);
|
||||
//}
|
||||
|
||||
var variableHandler = setInterval(async () => {
|
||||
var admintable = document.getElementById(id);
|
||||
@@ -19,24 +19,26 @@
|
||||
clearInterval(variableHandler)
|
||||
return;
|
||||
}
|
||||
var rowCount = table.rows.length;
|
||||
var { method } = options;
|
||||
var valss = await invoke.invokeMethodAsync(method);
|
||||
if (valss == null) return;
|
||||
for (let rowIndex = 0; rowIndex < valss.length; rowIndex++) {
|
||||
|
||||
for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {
|
||||
const vals = valss[rowIndex];
|
||||
if (vals == null) continue;
|
||||
|
||||
|
||||
var row = table.rows[rowIndex];
|
||||
if (!row) continue;
|
||||
|
||||
var vals = await invoke.invokeMethodAsync(method, rowIndex);
|
||||
if (vals == null) continue;
|
||||
|
||||
for (let i = 0; i < vals.length; i++) {
|
||||
const cellName = vals[i].field;
|
||||
const cellValue = vals[i].value;
|
||||
|
||||
const cellValue = vals[i];
|
||||
if (cellValue == null) continue;
|
||||
|
||||
var cell = getCellByClass(row, cellName)
|
||||
//var cell = getCellByClass(row, cellName)
|
||||
var cell = row.cells[i + 2]
|
||||
|
||||
if (!cell) continue;
|
||||
|
||||
@@ -81,12 +83,13 @@
|
||||
// continue;
|
||||
//}
|
||||
//// 默认情况(普通单元格)
|
||||
//getCellByClass(row, cellName).innerText = cellValue;
|
||||
//cell.innerText = cellValue;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
, 500) //1000ms刷新一次
|
||||
|
||||
|
Reference in New Issue
Block a user