宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

第二章:杂项
  • 上传者: Administrator
  • 上传时间:2023年12月05日 03时03分41秒
摘要:
在上一个任务中,我们学习了如何创建字段和视图。Odoo Web框架还有很多功能值得探索,所以让我们深入了解并在本章中探索更多内容! 这是我们在  None [1] 第一章:字段和视图  结束时对 JavaScript web 框架的发现进展。 None [2] 目标 1. 与通知系统交互 None ......
正文 相关文章 请喝咖啡

    在上一个任务中,我们学习了如何创建字段和视图。Odoo Web框架还有很多功能值得探索,所以让我们深入了解并在本章中探索更多内容!

    ../../../_images/previously_learned1.svg

    这是我们在 第一章:字段和视图 结束时对 JavaScript web 框架的发现进展。

     目标

    ../../../_images/kitten_mode.png

    1. 与通知系统交互

     注解

    这个任务依赖于 之前的练习

    在完成一些 T 恤任务后,使用 Print Label 按钮后,显然应该有一些反馈,表明 print_label 操作已完成(或失败,例如,打印机未连接或缺纸)。

     Exercise

    1. 当操作成功完成时,显示 notification 消息,如果操作失败则显示警告。

    2. 如果失败了,通知应该是永久的。

    ../../../_images/notification.png

    2. 添加系统托盘项

    我们敬爱的领导希望密切关注新订单。他希望随时看到未处理的新订单数量。让我们使用系统托盘项来实现这一点。

    一个 systray 项是出现在系统托盘中的元素,系统托盘位于导航栏右侧的一个小区域。系统托盘用于显示通知并提供对某些功能的访问。

     Exercise

    1. 创建一个系统托盘组件,连接到我们之前创建的统计服务。

    2. 使用它来显示新订单的数量。

    3. 点击它应该打开一个包含所有订单的列表视图。

    4. 奖励点:通过将信息添加到会话信息中,避免进行初始RPC。服务器在初始响应中向Web客户端提供会话信息。

    ../../../_images/systray.png

    3. 实际更新

    到目前为止,上面的系统托盘项目不会更新,除非用户刷新浏览器。让我们通过定期调用服务器重新加载信息(例如,每分钟一次)来解决这个问题。

     Exercise

    1. The tshirt 服务应定期重新加载其数据。

    现在,问题来了:系统托盘项目如何被通知需要重新渲染自己?有多种方法可以实现,但是在本次培训中,我们选择使用最 声明式 的方法:

     Exercise

    1. 修改 tshirt 服务以返回一个 reactive 对象。重新加载数据应该直接更新这个 reactive 对象。

    2. 然后,系统托盘项可以对服务返回值执行 useState

    3. 这并不是真的必要,但是你也可以在一个自定义的钩子函数 useStatistics 中 封装 对 useService 和 useState 的调用。

    4. 将命令添加到命令面板

    现在,让我们看看如何与命令面板交互。命令面板是一个功能,允许用户快速访问应用程序中的各种命令和功能。它通过在Odoo界面中按下 CTRL+K 来访问。

     Exercise

    修改 图像预览字段 ,添加一个命令到命令面板,以在新的浏览器标签页(或窗口)中打开图像。

    确保只有在屏幕上显示字段预览时,命令才处于活动状态。

    ../../../_images/new_command.png

    5. 猴子补丁一个组件

    通常情况下,我们可以通过使用现有的扩展点来实现我们想要的功能,这些扩展点允许进行定制,比如在注册表中注册某些内容。然而,有时候我们想要修改一些没有这种机制的东西。在这种情况下,我们必须退回到一种不太安全的定制形式:猴子补丁。几乎所有的Odoo都可以进行猴子补丁。

    Bafien,我们敬爱的领导,听说员工在被不断监视的情况下表现更好。由于他无法亲自在每个员工身边,他委托您更新用户界面,在控制面板中添加一个闪烁的红眼睛。点击该眼睛应该打开一个对话框,显示以下信息:“Bafien正在监视您。此交互将被记录并在必要时用于法律诉讼。您同意这些条款吗?”

     Exercise

    1. 继承 ControlPanel 组件 的 web.Breadcrumbs 模板,以在面包屑旁边添加一个图标。您可能想要使用 fa-eye 或 fa-eyes 图标。

    2. Patch 组件以使用 对话框服务 在点击时显示消息。您可以使用 ConfirmationDialog

    3. 将CSS类 blink 添加到表示眼睛的元素,并将以下代码粘贴到位于您补丁目录中的新CSS文件中。

      .blink {
        animation: blink-animation 1s steps(5, start) infinite;
        -webkit-animation: blink-animation 1s steps(5, start) infinite;
      }
      @keyframes blink-animation {
        to {
          visibility: hidden;
        }
      }
      @-webkit-keyframes blink-animation {
        to {
            visibility: hidden;
        }
      }
      
    ../../../_images/bafien_eye.png../../../_images/confirmation_dialog.png

    6. 从客户获取订单

    让我们看看如何使用一些标准组件来构建一个强大的功能,结合自动完成、获取数据和模糊查找。我们将在我们的仪表板中添加一个输入框,以便轻松搜索给定客户的所有订单。

     Exercise

    1. 更新 tshirt_service.js,添加一个 loadCustomers 方法,该方法返回一个 promise,该 promise 返回所有客户的列表(并且只执行一次调用)。

    2. 在仪表板上,将 AutoComplete 组件 添加到控制面板中的按钮旁边。

    3. 获取具有tshirt服务的客户列表,并在AutoComplete组件中显示,通过 fuzzyLookup 方法进行过滤。

    ../../../_images/autocomplete.png

    7. 重新引入小猫模式

    让我们给Odoo添加一个特殊模式:每当URL包含 kitten=1 时,我们将在Odoo的背景中显示一只小猫,因为我们喜欢小猫。

     Exercise

    1. 创建一个 kitten 服务,该服务应该使用 router 服务 来检查活动 URL 哈希的内容。如果 URL 中设置了 kitten,则将 o-kitten-mode 类添加到文档主体。

    2. 在 kitten_mode.scss 中添加以下 SCSS 代码:

      .o-kitten-mode {
        background-image: url(https://upload.wikimedia.org/wikipedia/commons/5/58/Mellow_kitten_%28Unsplash%29.jpg);
        background-size: cover;
        background-attachment: fixed;
      }
      
      .o-kitten-mode > * {
        opacity: 0.9;
      }
      
    3. 在命令面板中添加一个命令,用于切换小猫模式。切换小猫模式应该切换类 o-kitten-mode 并相应地更新当前 URL。

    ../../../_images/kitten_mode.png

    8. 延迟加载我们的仪表盘

    这并不是真正必要的,但这个练习很有趣。想象一下,我们令人惊叹的仪表板是一个庞大的应用程序,可能包含多个外部库和大量的代码/样式/模板。此外,假设仪表板仅由某些用户在某些业务流程中使用。为了加快大多数情况下的Web客户端加载速度,将其延迟加载是很有意思的。

    那么,让我们来做吧!

     Exercise

    1. 修改清单以创建一个新的 bundle awesome_tshirt.dashboard.

    2. 将这个令牌添加到令牌包中。如有需要,创建文件夹并移动文件。

    3. 从 web.assets_backend 捆绑包中删除代码,以便不会加载两次。

    到目前为止,我们只是从主包中移除了仪表板;现在我们想要延迟加载它。目前,在操作注册表中没有注册任何客户端操作。

     Exercise

    1. 创建一个新文件 dashboard_loader.js.

    2. 将注册 AwesomeDashboard 到仪表板加载器的代码复制。

    3. 将 AwesomeDashboard 注册为 LazyComponent

    4. 修改仪表板加载器中的代码,使用延迟组件 AwesomeDashboard

    如果你打开浏览器的开发工具的 Network 标签,你应该看到 awesome_tshirt.dashboard.min.js 现在只在首次访问仪表盘时加载。

    本文章从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信扫一扫,一分也是爱:
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: