mirror of
https://gitee.com/ThingsGateway/ThingsGateway.git
synced 2025-10-24 04:17:08 +08:00
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
|
else
|
||||||
{
|
{
|
||||||
return FixedCellClassStringCache.GetOrAdd(col, col => CssBuilder.Default(col.GetFieldName())
|
return FixedCellClassStringCache.GetOrAdd(col, col => CssBuilder.Default()
|
||||||
.AddClass("fixed", col.Fixed)
|
.AddClass("fixed", col.Fixed)
|
||||||
.AddClass("fixed-right", col.Fixed && IsTail(col))
|
.AddClass("fixed-right", col.Fixed && IsTail(col))
|
||||||
.AddClass("fr", IsLastColumn(col))
|
.AddClass("fr", IsLastColumn(col))
|
||||||
|
@@ -87,22 +87,25 @@ public partial class VariableRuntimeInfo
|
|||||||
private ITableColumn[] _cachedFields = Array.Empty<ITableColumn>();
|
private ITableColumn[] _cachedFields = Array.Empty<ITableColumn>();
|
||||||
|
|
||||||
[JSInvokable]
|
[JSInvokable]
|
||||||
public List<CellValue> TriggerStateChanged(int rowIndex)
|
public List<List<string>> TriggerStateChanged()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
if (table == null) return null;
|
if (table == null) return null;
|
||||||
var row = table.Rows[rowIndex];
|
List<List<string>> ret = new();
|
||||||
if (_cachedFields.Length == 0) _cachedFields = table.GetVisibleColumns.ToArray();
|
if (_cachedFields.Length == 0) _cachedFields = table.GetVisibleColumns.ToArray();
|
||||||
var list = new List<CellValue>(_cachedFields.Length);
|
foreach (var row in table.Rows)
|
||||||
foreach (var col in _cachedFields)
|
|
||||||
{
|
{
|
||||||
var fieldName = col.GetFieldName();
|
var list = new List<string>(_cachedFields.Length);
|
||||||
list.Add(new(fieldName, VariableModelUtils.GetValue(row,fieldName)));
|
foreach (var col in _cachedFields)
|
||||||
|
{
|
||||||
|
var fieldName = col.GetFieldName();
|
||||||
|
list.Add(VariableModelUtils.GetValue(row, fieldName));
|
||||||
|
}
|
||||||
|
ret.Add(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
export function init(id, invoke, options) {
|
export function init(id, invoke, options) {
|
||||||
function getCellByClass(row, className) {
|
//function getCellByClass(row, className) {
|
||||||
// 直接用 querySelector 精确查找
|
// // 直接用 querySelector 精确查找
|
||||||
return row.querySelector(`td.${className}`);
|
// return row.querySelector(`td.${className}`);
|
||||||
}
|
//}
|
||||||
|
|
||||||
var variableHandler = setInterval(async () => {
|
var variableHandler = setInterval(async () => {
|
||||||
var admintable = document.getElementById(id);
|
var admintable = document.getElementById(id);
|
||||||
@@ -19,24 +19,26 @@
|
|||||||
clearInterval(variableHandler)
|
clearInterval(variableHandler)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var rowCount = table.rows.length;
|
|
||||||
var { method } = options;
|
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];
|
var row = table.rows[rowIndex];
|
||||||
if (!row) continue;
|
if (!row) continue;
|
||||||
|
|
||||||
var vals = await invoke.invokeMethodAsync(method, rowIndex);
|
|
||||||
if (vals == null) continue;
|
|
||||||
|
|
||||||
for (let i = 0; i < vals.length; i++) {
|
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;
|
if (cellValue == null) continue;
|
||||||
|
|
||||||
var cell = getCellByClass(row, cellName)
|
//var cell = getCellByClass(row, cellName)
|
||||||
|
var cell = row.cells[i + 2]
|
||||||
|
|
||||||
if (!cell) continue;
|
if (!cell) continue;
|
||||||
|
|
||||||
@@ -81,12 +83,13 @@
|
|||||||
// continue;
|
// continue;
|
||||||
//}
|
//}
|
||||||
//// 默认情况(普通单元格)
|
//// 默认情况(普通单元格)
|
||||||
//getCellByClass(row, cellName).innerText = cellValue;
|
//cell.innerText = cellValue;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
, 500) //1000ms刷新一次
|
, 500) //1000ms刷新一次
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user