- 上传者: Administrator
- 上传时间:2023年12月05日 02时57分55秒
本教程的第一部分向您介绍了大部分Owl的概念。现在是时候全面了解Odoo JavaScript框架了,因为它是Web客户端所使用的。 对于本章,我们将从 awesome_tshirt 插件提供的空仪表板开始。我们将逐步添加功能,使用Odoo JavaScript框架。 目标 1. 新布局 Non ......
route
是目标路由,以字符串形式表示。例如/myroute/
。params
is an object that contains all data that will be given to the controller. (optional)settings
are for advanced controls on the request. Make it silent, or using a specific xhr instance. (optional)修改
Dashboard
以使用rpc
服务。在
onWillStart
钩子中调用统计路由/awesome_tshirt/statistics
。在仪表板中显示几张包含以下内容的卡片:
本月新订单数量
本月新订单的总金额
本月每个订单的T恤平均数量
本月取消订单数量
从“新建”到“已发送”或“已取消”的订单平均处理时间
注册并导入一个新的
awesome_tshirt.statistics
服务。它应该提供一个名为
loadStatistics
的函数,一旦调用,就执行实际的rpc,并始终返回相同的信息。使用 memoize 实用函数来缓存统计数据。
在
Dashboard
组件中使用此服务。检查它是否按预期工作
加载 chartjs,你可以使用 loadJs 函数来加载
/web/static/lib/Chart/Chart.js
。在 Card`(来自之前的练习)中,在仪表盘中显示一个 `pie chart,显示每个尺码的已售出 T 恤的正确数量(这些信息在统计路由中可用)。
本教程的第一部分向您介绍了大部分Owl的概念。现在是时候全面了解Odoo JavaScript框架了,因为它是Web客户端所使用的。
对于本章,我们将从 awesome_tshirt
插件提供的空仪表板开始。我们将逐步添加功能,使用Odoo JavaScript框架。
目标

1. 新布局
Odoo 网页客户端中的大多数屏幕使用了一个常见的布局:顶部的控制面板,带有一些按钮,以及下方的主要内容区域。这是通过使用 Layout 组件,该组件位于 @web/search/layout
中来实现的。
Exercise
更新位于 awesome_tshirt/static/src/
的 AwesomeDashboard
组件,使用 Layout
组件。您可以使用 {controlPanel: { "top-right": false, "bottom-right": false } }
作为 Layout
组件的 display
属性。
打开 http://localhost:8069/web,然后打开 Awesome T-Shirts 应用程序,查看结果。

3. 调用服务器,添加一些统计信息
让我们通过添加一些卡片(参见 Card
组件 在上一章中创建的) 来改进仪表盘,其中包含一些统计信息。有一个路由 /awesome_tshirt/statistics
执行一些计算并返回一个包含一些有用信息的对象。
每当我们需要调用特定的控制器时,我们需要使用 rpc 服务。它只导出一个执行请求的函数: rpc(route, params, settings)
这里是有关各种参数的简短说明:
Example
一个基本的请求可能是这样的:
setup() {
this.rpc = useService("rpc");
onWillStart(async () => {
const result = await this.rpc("/my/controller", {a: 1, b: 2});
// ...
});
}
Exercise

4. 缓存网络调用,创建服务
如果您打开浏览器的开发工具的 Network 选项卡,您会发现每次显示客户端操作时都会调用 /awesome_tshirt/statistics
。这是因为每次挂载 Dashboard
组件时都会调用 onWillStart
钩子。但在这种情况下,我们更希望只在第一次调用时执行,因此我们实际上需要在 Dashboard
组件之外维护一些状态。这是一个很好的服务使用案例!
Example
下面的示例注册了一个简单的服务,每5秒显示一次通知。
import { registry } from "@web/core/registry";
const myService = {
dependencies: ["notification"],
start(env, { notification }) {
let counter = 1;
setInterval(() => {
notification.add(`Tick Tock ${counter++}`);
}, 5000);
},
};
registry.category("services").add("myService", myService);
Exercise
5. 显示饼图
每个人都喜欢图表(!),所以让我们在我们的仪表板中添加一个饼图。它将显示每个尺码(S/M/L/XL/XXL)销售的T恤比例。
对于这个练习,我们将使用 Chart.js。它是图表视图使用的图表库。然而,默认情况下它不会被加载,所以我们需要将它添加到我们的资源包中,或者进行懒加载。懒加载通常更好,因为我们的用户如果不需要它,就不必每次都加载 chartjs 代码。
Exercise

6. 更进一步
以下是一些小的改进建议,如果您有时间可以尝试一下:
- 微信扫一扫,一分也是爱:
-
服务原则及地区范围
宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。
我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!
通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。
宜兴地区提供上门服务:
- 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
- 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。