当前位置: 首页 > news >正文

Onecode 可视化动作揭秘系列二:组件类型个性化配置技术协议

Onecode 可视化动作揭秘系列二:组件类型个性化配置技术协议

本文将深入剖析 OneCode 平台如何为不同类型的目标组件提供个性化配置的核心技术实现,揭秘其灵活且强大的动作配置机制。

一、组件类型识别与动作映射架构

OneCode 通过一套完整的类型识别和动作映射架构,实现了针对不同组件类型的个性化配置能力。核心实现在 ActionsEditor.js 文件中的 _buildsubtree 方法,该方法根据组件类型动态构建可用动作列表。

_buildsubtree: function (item) {if (!item["0"]) {if (item.key && item.key != 'ood.Module') {var component = ood.create(item.key).setAlias(item.alias).setProperties(item.properties)item["0"] = component["n0"];item._type = "control";} else if (item.className && item.className != SPA.currentClassName) {item._type = "otherModuleCall";} else if (item.id && item.id == SPA.currentClassName) {item._type = "page";}}// ... 根据组件类型构建具体动作列表
}

在这里插入图片描述

类型识别机制

OneCode 将组件分为三大基本类型:

  1. control 类型:页面内的具体控件组件
  2. page 类型:整个页面模块
  3. otherModuleCall 类型:其他模块调用

在此基础上,系统还会进一步识别组件的具体实现类型(如 ood.MQTT、ood.APICaller、ood.DataBinder 等),为每种类型提供量身定制的操作选项。

二、组件类型与个性化动作的映射关系

OneCode 为每种组件类型定义了特定的可用动作集合,这些集合包括通用操作和特定于组件在这里插入图片描述
类型的操作。

1. MQTT 组件的个性化配置

对于 MQTT 组件,系统提供了与其通信特性完全匹配的操作选项:

if (item["0"].key == "ood.MQTT") {items = [{id: "none",caption: "$RAD.action." + map2["none"],imageClass: 'ri-forbid-2-line',cat: "none"}, {id: "setProperties",cat: 'prop',caption: "$(RAD.action." + map2["setProperties"] + ")"}, {id: "connect",cat: 'callcb',redirection: 'other:callback:call',_tpl: "{page.*.connect()}",caption: "$(RAD.action." + map2["connect"] + ")","0": item["0"]},// ... 其他MQTT特有操作:disconnect、subscribe、unsubscribe、publish等
}];

2. API调用器组件的个性化配置

API调用器组件则专注于数据请求和调用操作:

else if (item["0"].key == "ood.APICaller") {items = [{id: "none",caption: "$RAD.action." + map2["none"],imageClass: 'ri-forbid-2-line',cat: "none"}, {id: "setProperties",cat: 'prop',caption: "$(RAD.action." + map2["setProperties"] + ")"}, {id: "setQueryData",cat: 'callcb',redirection: 'other:callback:call',_tpl: "{page.*.setQueryData()}",caption: "$(RAD.action." + map2["setQueryData"] + ")"}, {id: "invoke",cat: 'callcb',redirection: 'other:callback:call',_tpl: "{page.*.invoke()}",caption: "$(RAD.action." + map2["invoke"] + ")"}// ... 其他API调用器特有操作
}];

3. 数据绑定组件的个性化配置

数据绑定组件则提供了丰富的数据操作能力:

else if (item["0"].key == "ood.DataBinder") {items = [{id: "none",caption: "$RAD.action." + map2["none"],imageClass: 'ri-forbid-2-line',cat: "none"}, {id: "setProperties",cat: 'prop',caption: "$(RAD.action." + map2["setProperties"] + ")"}, {id: "updateValue",cat: 'none',caption: "$(RAD.action." + map2["updateValue"] + ")"},// ... 其他数据绑定特有操作:resetValue、clearValue、updateDataFromUI、updateDataToUI等
}];

三、动作分类与参数配置系统

在这里插入图片描述

OneCode 通过 cat 属性将动作分为不同类别,每种类别对应不同的参数配置界面:

动作类别描述适用场景
prop属性设置配置组件的基本属性
callcb回调调用调用组件提供的方法并处理返回值
con条件操作需要额外条件参数的操作
mix混合配置需要复杂参数组合的操作
none简单操作无需额外参数的操作
url链接操作页面跳转相关操作
animate动画操作组件动画效果配置
log日志操作日志记录相关配置

参数配置示例

在 ModuleConfig.js 中,我们可以看到具体的动作配置示例:

{"args": ["{page.getValue()}"],"desc": "动作 1","method": "setFormValues","target": "ood_ui_div31","type": "control"
},
{"args": ["{page.tableName.setUIValue()}",null,null,"{page.properties.tableName}"],"conditions": [{"symbol": "defined","right": "","left": "{page.properties.tableName}"},{"symbol": "non-empty","right": "","left": "{page.properties.tableName}"}],"desc": "动作 2","method": "setUIValue","redirection": "other:callback:call","target": "tableName","type": "control"
}

四、复杂组件的高级配置能力

对于 TreeGrid 这类复杂组件,OneCode 提供了极其丰富的操作选项,涵盖了单元格操作、行操作、列操作等多个维度:

else if (prf.box["ood.UI.TreeGrid"]) {items.push({type: 'split'});items.push({id: "isDirtied",cat: 'none',caption: "$(RAD.action." + map2["isDirtied"] + ")","0": item["0"]});items.push({id: "updateGridValue",cat: 'none',caption: "$(RAD.action." + map2["updateGridValue"] + ")","0": item["0"]});// ... 大量表格相关操作:单元格操作、行操作、列操作等
}

五、多语言支持与国际化设计

OneCode 的动作配置系统采用了国际化设计,通过多语言映射实现界面文本的本地化:

var map2 = this.CAPMAP.action;
// ...
caption: "$RAD.action." + map2["setProperties"]

CAPMAP 对象定义了动作组和具体动作的多语言映射关系,使得整个配置系统可以轻松支持多种语言环境。

六、技术价值与应用场景

OneCode 的组件类型个性化配置技术具有以下核心价值:

  1. 提升开发效率:通过可视化配置界面,开发者无需编写大量重复代码
  2. 降低学习成本:针对不同组件类型提供符合其特性的操作选项,减少开发者学习负担
  3. 保证配置准确性:根据组件类型动态过滤可用操作,避免配置错误
  4. 增强系统扩展性:模块化的设计使得系统可以轻松支持新的组件类型

典型应用场景

  • 页面交互逻辑配置:为按钮、链接等控件配置点击事件
  • 数据流转控制:配置数据在不同组件间的传递和转换
  • 复杂业务流程实现:通过组合不同组件的操作构建业务流程
  • 动态界面控制:根据条件动态改变界面元素的状态和行为

七、总结

OneCode 通过精心设计的组件类型识别机制、动作映射架构和参数配置系统,实现了对不同类型目标组件的个性化配置支持。这一技术不仅提升了开发效率,降低了开发难度,还保证了配置的准确性和系统的扩展性,为可视化开发提供了坚实的技术基础。

该技术协议的核心在于将组件类型与其特性操作进行精确映射,并通过分类明确的参数配置界面,使得复杂的组件交互配置变得简单直观,真正实现了"所见即所得"的可视化开发体验。


文章转载自:

http://Umy5j629.txrkq.cn
http://4AGPmBuA.txrkq.cn
http://zIiucpkA.txrkq.cn
http://aFzn5fET.txrkq.cn
http://4bkO7PmO.txrkq.cn
http://OuOivr2U.txrkq.cn
http://qlX813wK.txrkq.cn
http://Ou9s9xmM.txrkq.cn
http://iY2aEleU.txrkq.cn
http://8dZyWyU3.txrkq.cn
http://4IQYn0Un.txrkq.cn
http://tnt3k0ru.txrkq.cn
http://QmQWvH4H.txrkq.cn
http://d31FU43D.txrkq.cn
http://C1pELVul.txrkq.cn
http://w2aRBhiV.txrkq.cn
http://ULpMsHXI.txrkq.cn
http://0o1hBJVe.txrkq.cn
http://4DdHTe7o.txrkq.cn
http://beYJYKpK.txrkq.cn
http://b3xGlnHW.txrkq.cn
http://Iqh4HpEu.txrkq.cn
http://igURCFDx.txrkq.cn
http://1cPG1yfw.txrkq.cn
http://U4KeOCZD.txrkq.cn
http://KBRHTvPu.txrkq.cn
http://QU0OupBy.txrkq.cn
http://cPHVqoyj.txrkq.cn
http://SIy2CWre.txrkq.cn
http://9fhGoGsm.txrkq.cn
http://www.dtcms.com/a/371898.html

相关文章:

  • 前端:JavaScript基础
  • 知识扩展——探究当代分布式数据库
  • 性能剖析工具火焰图介绍与实战demo
  • Linux:malloc背后的实现细节
  • Windows HDR 和 Nvidia HDR 关系
  • HarmonyOS应用开发:三层工程架构
  • Python学习——安装配置python环境+入门
  • IP校验和算法:从网络协议到SIMD深度优化
  • CentOS7 Hive2.3.8 安装图文教程
  • 如何利用 ChatGPT 辅助写作
  • 《从iptables到ipvs:云原生网络转发的性能拐点突破》
  • centos系统apache支持php配置
  • PyQt数字转大写金额GUI工具开发及财务规范实现
  • 家长沉迷游戏刷剧对儿童学习体验的影响:儿童教育心理学视角分析
  • 环状肽药物发现新路径:DNA 编码文库技术(DELT)的突破与挑战
  • 基于蚁群算法的量子电路调度研究(Matlab平台)
  • Photoshop图层间的关系
  • Axure RP 9 最新版安装包+安装步骤Win系统适用(附安装包)
  • 【PS2025全网最新版】稳定版PS2025保姆级下载安装详细图文教程(附安装包)(Adobe Photoshop)
  • FLINK:水位线的介绍
  • MySQL高级功能:窗口函数
  • 换手率及使用Python获取换手率数据
  • 炉米Lumi:字节跳动推出的AI图像模型分享社区
  • 计算机网络学习(六、应用层)
  • JavaSE 数组从入门到面试全解析
  • 游戏中的设计模式——第二篇 单例模式
  • 【论文阅读】自我进化的AI智能体综述
  • 系统分析师考试备考全面解析
  • 现代C++:C++和现代C++
  • 开始 ComfyUI 的 AI 绘图之旅-图生图之局部重绘(三)