先决定脚本入口 | HQ VISU Designer

同一段逻辑放在不同入口,运行时机和可用上下文不同。先明确入口职责,再编写具体方法。

脚本方法入口
入口

先决定脚本入口

同一段逻辑放在不同入口,运行时机和可用上下文不同。先明确入口职责,再编写具体方法。

项目级脚本不再作为配置入口

当前 PPT 导出按页面独立维护脚本文档。页面内初始化、表格数据、标题和局部联动优先放在当前页 Page Script;确实需要复用的能力,优先由宿主 runtime 或模板本身提供,不再依赖一个全局脚本文档承载所有页面逻辑。

  • 页面逻辑放当前页 Page Script
  • 跨页复用优先交给宿主 runtime 或模板
  • 单页流程不应作为全局公共逻辑维护
function openAlarmPage() {
  qtedit.openPage("Alarm");
}
Page Script:当前页逻辑

页面脚本只属于当前页。适合页面初始化、页面内局部变量、当前页专用数据整理,以及当前页的表格、模板和展示逻辑。确定逻辑只服务当前页时,优先放在 Page Script。

  • 适合页面打开后的初始化
  • 适合当前页数据整理
  • 适合当前页表格和局部交互逻辑
window.qteditPageReady = function(ctx) {
  var rows = window.tableRows || [];
  qtedit.setComponentText("RowCountText", String(rows.length));
};
Definition:行为执行前的准备区

Definition 负责提前准备后续字段需要使用的值。它适合进行标签读取、条件拆分和中间变量整理。通常不在这里直接完成最终动作,而是将最终结果留给 Condition、Value、Text 或后续动作字段。

  • 先在这里读 Tag 和计算中间量
  • 让后面的 Condition / Value 更短更清楚
  • 最终逻辑不宜全部集中在 Definition
var running = ReadTagInteger("PLC1.PUMP.RUN", 0);
var alarm = ReadTagBoolean("PLC1.PUMP.ALARM", false);
var ready = running === 1 && !alarm;
Click Script 与 Hover Script:对象级动作

Click Script 适合按钮点击、确认动作、打开页面、写值、弹窗;Hover Script 适合鼠标移入提示、预览和样式变化。它们都是对象级逻辑,不适合承载整页初始化代码。

  • 点击动作优先放 Click Script
  • 悬停反馈优先放 Hover Script
  • 对象脚本不承担页面初始化职责
// Click Script
qtedit.openPage("Alarm");

// Hover Script -> Mouse Over
object.style.opacity = "0.75";
表达式字段:必须同步返回结果

Condition、Active、Value、Text、Fill、Stroke、Move、Rotate、Scale 这类字段属于表达式位置,需要立即返回布尔值、数字、颜色或文本。`fetch`、`Promise`、定时器和批量页面修改应放在 Page Script、Click Script、Hover Script 或 `qteditPageReady` 中处理,再把结果写入变量或 Tag。

  • 布尔字段:返回 true / false
  • 数值字段:返回 number
  • 文本和颜色字段:返回 string
  • 异步逻辑不直接作为表达式返回值
// Page Script
var pressure = ReadTagDouble("Device.PRESSURE", 0);
function pressureColor() {
  return pressure > 8 ? "#dc2626" : "#16a34a";
}

// Script Color / Fill
pressureColor()
页面脚本入口
页面脚本入口

页面级逻辑优先放入 Page Script,避免分散在大量对象脚本中。

点击脚本入口
点击脚本入口

按钮或对象动作优先放点击脚本,职责会更清晰。

悬停脚本入口
悬停脚本入口

悬停类交互和提示行为更适合放在这里。