版本 7

版本 7 仍在开发中,并接受拉取请求。与 V5 的最大区别是路由支持、Bootstrap 5 和处理详细表,从而实现对移动设备的现代支持。此外,Monaco 编辑器将在应用程序构建器中引入。

以下是与 Jam.py V5 的主要差异,由 Andrew Yushev 于 2022 年 11 月撰写:

Jam.py V7

现在字段有权限。您可以为角色声明某些字段为隐藏或只读。

隐藏字段在客户端不可用,并且具有此角色的用户无法从浏览器更改它们。

只读字段在浏览器中被禁用,如果更改,将不会保存到服务器。

详细表不再作为特殊类型。 如果项目通过查找字段链接,任何项目都可以是另一个项目的详细表。

例如,发货单可以是客户的详细表,因为发货单有客户查找字段,其查找项是客户。

这样,您不需要编写代码来使 invoice_table 成为当前演示中 唱片 的详细表。

有基于查找字段的计算字段。

例如,您可以有一个字段显示 唱片 记录的已售唱片数量,而无需编写代码。

支持无限级别的嵌套详细表。

数据的读取和写入已更改。

on_openon_apply 事件已弃用。

取而代之的是,引入了 on_before_openon_after_openon_before_apply_recordon_after_apply_record 事件。

on_before_open 事件在执行 sql 请求之前触发,可用于验证请求并添加额外过滤器。on_after_open 在执行 sql 请求后触发,并有一个数据集作为参数,可以在发送到客户端之前修改。

on_before_apply_record 在执行将记录更改保存到数据库表的 sql 查询之前触发,可用于数据验证和计算,几乎与现在在客户端完成的方式相同。

on_after_apply_record 在执行保存记录更改的 sql 查询后触发,主键字段已设置,可用于在同一连接中对数据库进行其他额外更改。

数据保存后,增量发送到客户端,并在客户端更新服务器上对其所做的所有更改。

对具有详细表的记录的更改在服务器上按以下方式处理:

首先触发主记录的 on_before_apply_record 事件。 然后对于每个已更改的详细表,触发 on_before_apply_record 事件。 然后为子详细表更改触发该事件,依此类推。

之后,按相反顺序为子详细表、详细表和主记录触发 on_after_apply_record 事件。 即使仅对详细表进行了更改,也是如此。 也就是说,对文档(记录及其详细信息)的更改作为一个整体保存。 处理数据库数据的代码已重写。对于 MSSQL 和 MYSQL,支持替代驱动程序。 对于具有指定长度的文本字段的数据库,可以更改文本字段大小。 如果新大小更大,则字段长度会更改。否则,字段长度保持不变,但应用程序检查文本长度是否小于大小值。 更改记录时,可以省略编辑和 post 方法。它们在内部实现。 在构建器中,可以创建实体项的副本(克隆)。 可以将实体项移动到其他组。

Jam.py 的概念现在如下: 您可以使用 Jam.py 开发应用程序加载的界面。 这些应用程序可以像桌面应用程序一样开发, 无论客户端(浏览器调试器)中代码的可用性如何。 这是可能的,因为完全控制用户在客户端可以访问哪些数据以及 可以对服务器上更新的数据进行哪些更改。 这种控制是通过为项目的元素和字段设置角色来实现的, 这是使用服务器事件处理程序实现限制的非常简单的方式。