暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Odoo | 提升用户体验,从添加引导悬浮框开始~

369





Odoo

神州数码云基地

在 Odoo 上的尝试、调研与分享




 本期内容 

 如何添加引导悬浮框 



一个应用正式上线后,用户第一次打开该应用时的用户体验是非常重要的,因此,我们添加相应的引导提示是非常有必要的。


本篇我们分享一下如何在Odoo中添加引导悬浮框,进而提升用户体验感~


同时,详细的测试步骤我们在上一期已经分享,点击链接可直达:【如何利用向导进行自动化测试??】





前期准备工作 


__manifest__.py文件中添加使用引导悬浮框所需的依赖模块(web_tour)如不添加,后续代码运行将报错



web_tour是odoo内置的引导管理器,在其中包含两种工具:


  • 气球(水滴状)提示符,可以提供有关菜单、按钮、标签、字段的提升信息(本文主要内容)

  • 进度条状的符号,用于显示网页浏览的整体进度





实现步骤 


 新建一个JS文件,编写引导步骤 

(如 weekly.tour)


    odoo.define('weekly.tour', function (require) {
    "use strict";
    var tour = require('web_tour.tour');
    tour.register('weekly_tour', {
    url: "/web"
    },[tour.STEPS.SHOW_APPS_MENU_ITEM, {
    trigger: '.o_app[data-menu-xmlid="weekly.root"]',
    content: '点击进入周报应用',
    position: 'right',
    edition: 'community'
    },
    {
    trigger: '.o_menu_header_lvl_1[data-menu-xmlid="weekly.my_weekly_menu"]',
    content: '选择我的周报',
    position: 'bottom'
    },
    {
    trigger: '.o_menu_entry_lvl_2[data-menu-xmlid="weekly.my_weekly_calendar_menu"]',
    content: '日历视图,查看我的周报每日计划',
    position: 'right'
    },
    {
    trigger: '.o_calendar_button_ics',
    content: '点击导入,导入日历计划',
    position: 'right'
    }
    ]
    );
    });



    # 'weekly_tour':

    注册的导览登录名称,唯一标识,在使用导览测试时可使用该名称定位具体的测试用例;


    # 'url':

     导览应该开始的页面路径;



    'SHOW_APPS_MENU_ITEM':

    从主页面开始的内置功能,用于在应用程序上闪烁图标;


    'TOGGLE_HOME_MENU ': 

    在应用程序和odoo主页面之间切换;


    'WEBSITE_NEW_PAGE ': 

    在前端用于在网站上创建新页面;



    'trigger': 

    触发游览的节点,这是一个JavaScript选择器,在本例中,使用了菜单的XML-id定位节点;


    'content': 提示信息;


    'position':

    提示信息放置位置,包含top,bottom,left和right四种;


    'timeout ':  导览的最大等待时间;


    'width' : 

    设置为内容中指定的文本的宽度,默认为 270px。


    'extra_trigger' : 

    是确保导览在正确页面中的选项,例如,'trigger':'.o_form_editable' 可以在此类的其他页面中看到。


    但是,如果在该步骤中编写了选项 'extra_trigger':'.o_mobile_service',那么它将显示在正确的页面中;


    'edition': 

    'community'  |  'enterprise' 版本信息-社区版或企业版。


    此外在导览中还有一个比较重要的属性–run,它是一个函数。


    在run函数中,我们需要编写逻辑来执行通常由用户所执行的操作。如:在使用导览进行自动化测试时,需要在输入框中输入值,我们便可以使用run属性。


      trigger: 'div[name="name"] input',
      run: '测试'


      // another
      trigger: 'div[name="name"] input',
      run: function (actions) {
         actions.text('测试')



      在没有向导览步骤传递run函数时,执行的是action.auto()。


      自动动作大多会点击导览步骤中的触发元素。这里唯一的例外是input元素。


      如果触发元素是input,导览会在其中设置默认值Test。这也是我们不需要为每个步骤添加run函数的原因。


      此外,你可以手动的执行所有的动作,以防默认动作不能满足要求,如:


        run: function () {
           var $input = $('div[name="product_template_id"] input');
           $input.click();
           $input.val('Matrix');
           var keyDownEvent = jQuery.Event("keydown");
           keyDownEvent.which = 42;
           $input.trigger(keyDownEvent);
        }



        上例中表示在输入框中输入“matrix”, 并触发键盘事件。



         在后台资源中加入新建文件的引用 

        (如果不引用将无法生效)



        默认会向终端用户显示已注册导览来提升引导体验。


        如果要将它们作为测试用例运行,进行这一实现需要使用HttpCase Python 测试用例。


        它会提供browser_js方法,该方法打开URL并执行第二个参数所传递的命令。可以手动运行导览如下:


          from odoo.tests.common import HttpCase, tagged
           
          class TestBookUI(HttpCase):
           
           @tagged('weekly')
           def test_weekly(self):
             self.browser_js("/web",
               "odoo.__DEBUG__.services['web_tour.tour'].run('weekly_tour')")



          详细测试步骤可参考上一期内容:【如何利用向导进行自动化测试??】





          最终效果 


          重启服务并升级相应模块,可看到引导悬浮已添加完成~



           注意:该引导提示只会在第一次进入该应用,且没有设置演示数据(demo)时显示,否则将不生效。





          本期内容就到这里啦

          有更好的办法或疑问请

          ⬇欢迎加入社群一起讨论哦⬇

          本期作者 

           后端开发工程师 喻炎 



          更多精彩内容 





          了解云基地,就现在!


          IT技术哪家

          神州数码最在行

          行业新星后起之秀

          历史虽不长,但实 力 强




          文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论