PB转纯BS工具

2023-09-18 11:15:55

pbtoweb

Convert Powerbuilder UI to web Automatically.

源码地址:GitHub - pcwe2002/pbtoweb: automatically convert Powerbuilder UI to web

支持转换控件

  •  Window
  •  DataWindow
  •  CommandButton
  •  CheckBox
  •  RadioButton
  •  Tab
  •  DropdownListbox
  •  StaticText
  •  EditMask
  •  SinglelineEdit
  •  GroupBox
  •  UserObject
  •  Progress
  •  Picture
  •  TreeView

使用说明:

  1. 如未安装nodejs, 需要安装nodejs, 可以 下载 | Node.js 下载安装
  2. 导出pb代码,包括窗口和继承的对象到一个目录(如示例中的pbocde目录中), 如果pb10以下的代码导出后需要用nodepad++ 打开文件转换编码为utf8编码
  3. 进入命令行窗口cmd, 进入当前目录输入
node pbtoweb convert pbcode w_test_amis d:/form.js --js

窗口将转化为web窗口form.js 其中pbcode为pb导出的源码目录, w_test_amis为要导出窗口的名称, d:/form.js为导出的代码目录 --js表示导出为js窗口

导出后的form.js类似这样

export default class PBPage extends PB.AmisPage {
  constructor(root, options, dialog) {
    super(root, options, dialog);
    const page = this;
    let amisJSON = {...}
    this._init(amisJSON);
  }

  onLoad() {
  }

  onResize(sizetype, newwidth, newheight) {
    console.log('onResize', newwidth, newheight);
  }

  onClose() {
    console.log('onClose');
  }
  
  cb_1_clicked(e, props) {
      // code
  } 

}

代码事件对应关系

JS事件PB事件说明
onLoadload窗口打开
onResizeresize窗口改变大小
onCloseclose窗口关闭
cb_1_clickedclick!名称为cb_1控件的click事件,根据按钮的click事件自动生成

可以在事件中添加自己的处理代码,控件操作和pb中基本一致

...
  onResize(sizetype, newwidth, newheight) {
    this.cb_1.x = 10;
    this.cb_1.y = 100;
    this.cb_1.resize(100, 30);
  }

  async cb_3_clicked(e, props) {
    let ll_rtn = await PB.messageBox("消息", "您好", "", "YesNo!");
    if (ll_rtn == 1)  {
      this.tab_1.tabpage_2.cbx_1.checked = true;
      this.tab_1.tabpage_2.cbx_2.checked = false;
    } else {
      this.tab_1.tabpage_2.cbx_2.checked = true;
      this.tab_1.tabpage_2.cbx_1.checked = false;
    }
    console.log(ll_rtn);
  }


  cb_2_clicked(e, props) {
    // code
    this.tab_1.tabpage_2.sle_1.text = "amis演示";
    this.tab_1.tabpage_2.cbx_2.checked = true;
  }


  cb_1_clicked(e, props) {
    // code
    this.tab_1.tabpage_1.dw_1.retrieve()
  }

在satweb中显示效果

  1. 将生成的form.js放到 server\plugins\web\dist\data\page 目录下面,并运行satserver.exe
  2. 浏览器输入 http://127.0.0.1:5555/webui ,如果未配置数据库,请参考http://www.satrda.com/doc/satweb/config.html 中的开始使用配置
  3. 在系统管理->菜单管理中随意找一个菜单,点击修改 修改-> 组件路径:amispage, 路由地址为 /data/page/vd.js 并保存。
  4. 刷新浏览器进入菜单可以看到效果。参考demo/vd.js 中的事件可以写实现自己的事件,代码基本和pb一样 了解更多satweb可以进入 SatWeb | SatRDA文档

在amis网站上查看效果

  1. 命令行运行以下命令,会导出amis的json文件
node pbtoweb convert pbcode w_test_amis d:/out.json --demo
  1. 打开d:/out.json并复制文本
  2. 进入 amis网站, 找一个示例点击编码代码
  3. 粘贴就可以

单独网页中查看

  1. 下载源码的文件夹demo
  2. 放到文件服务器中,如ngnix等,或者直接放到下载的satrda的 server/public 目录, 运行satserver.exe
  3. 浏览器输入 http://127.0.0.1:5555/demo

更多信息,QQ群:836173975

更多推荐

Naivcat 数据迁移工具 | 竟然那么香

近期,我们收到一位童鞋的留言(如下图),他建议我们多宣传Navicat的数据迁移工具,因为他身边许多小伙伴并非很了解这一功能。今天,我们为大家深度介绍Naivcat安全、可靠的数据迁移工具。请童鞋们准备好NavicatPremium工具,我们马上开始!数据库数据迁移是指选择、准备、提取和转换数据,并将数据从一个计算机存

孩子写作业买什么样台灯合适?适合孩子读写台灯推荐

现在孩子的普遍都存在视力问题,而导致孩子近视的原因可能跟光线太强或太弱、不用的用眼习惯、长时间的过度用眼等因素有关,根据数据表明目前中国近视患者人数达到6亿多,其中儿童青少年的视力不良率甚至高达八成,所以在孩子的学习道路上,护眼也是重中之重的事情。平时间养成良好的用眼习惯是必不可少的,不过照明光源的选择也重要,所以挑选

树莓派4b装系统到运行 Blazor Linux 本地程序全记录

在Linux下运行gui程序,咱也是第一次做,属于是瞎子过河乱摸一通,写得有什么不对和可以优化的地方,希望各位看官斧正斧正.##1.下载烧录器https://www.raspberrypi.com/software/####我选择的是Raspbian64位系统,并配置好ssh账号密码,wifi,以便启动后可以直接黑屏s

贪心算法(Greedy Algorithm)

贪心算法(GreedyAlgorithm)是一种解决优化问题的算法策略。在贪心算法中,每一步都会选择当前情况下最优的选择,而不考虑未来的后果。贪心算法的基本思想是通过局部最优选择达到全局最优。它并不保证一定能得到全局最优解,但在某些情况下可以得到近似最优解或者符合要求的解。贪心算法的适用条件是问题具有"最优子结构"和"

Web自动化测试进阶 —— Selenium模拟鼠标操作

鼠标操作事件在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。ActionChains类中鼠标操作常用方法:首先导入ActionChains类:fromselenium.webdriver.common.action_c

2023年9月21日,历史上的今天大事件早读

​公元前19年9月21日古罗马诗人维吉尔逝世1069年9月21日宋神宗采用王安石新法,开始实行青苗法1643年9月21日皇太极逝世1898年9月21日慈禧太后发动戊戌政变1909年9月21日我国飞机设计师冯如第一次试飞成功1920年9月21日民主革命家朱执信遇难1926年9月21日荷兰物理学家昂内斯首次发现物理超导性1

分布式/微服务---第五篇

系列文章目录文章目录系列文章目录一、简述ZAB协议二、zk的数据模型和节点类型一、简述ZAB协议ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议,实现分布式数据一致性所有客户端的请求都是写入到Leader进程中,然后,由Leader同步到其他节点,称为Follower。在集群数据同

Python中的POST请求参数

一、什么是POST请求参数在HTTP协议中,GET和POST是两种常用的请求方法。GET请求通过URL参数将请求数据传递给服务器,而POST请求则通过请求体中的参数传递数据。POST请求通常用于提交表单、上传文件等操作。POST请求参数就是请求体中的参数。在Python中,我们可以使用第三方库如requests来发送P

利用fiddler正向代理前端请求到本地后端

前景:在实际开发测试环境中,(前后端均已上线到测试服务器或前端以上线而后端还在开发中)。在测试过程中(前端页面点击,功能测试)发现了bug或异常点。正常排查问题可能是先利用浏览器检查工具查看接口的返回参数是否正常,如果异常那就得用(pycharm/vscode)启动服务再通过(postman/apifox)模拟前端请求

群晖管家+内网穿透实现公网远程访问本地黑群晖

白嫖怪狂喜!黑群晖也能使用群晖管家啦!文章目录白嫖怪狂喜!黑群晖也能使用群晖管家啦!1.使用环境要求:2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app自己组装nas的白嫖怪们虽然也可以通过在局域网使用黑群晖,但是群晖quickconnect需要绑定正版群晖账号,那么白嫖怪们要怎样在

Nmap安装和使用详解

Nmap安装和使用详解Nmap概述功能概述运行方式Nmap安装官方文档参考:Nmap参数详解目标说明主机发现端口扫描Nmap将目标主机端口分成6种状态:Nmap产生结果是基于机器的响应报文,而这些主机可能是不可信任的,会产生一些迷惑或者误导Nmap的报文端口说明和扫描顺序服务与版本探测参数含义:脚本扫描操作系统探测时间

热文推荐