create_menu

create_menu: function(menu, forms_container, options)

使用范围: client

编程语言: javascript

父类: Task

描述说明

create_menu 方法将基于项目的 task 树 创建一个菜单。

如果设置了 project parameters 的在选项卡中显示表单窗体的属性,将初始化创建后被用于显示表单窗体的选项卡。

该方法将迭代 task 树 的实体项,并将可见属性设置为 true 且用户有权限查看的实体项添加到菜单中。

该方法用于将点击事件分配给菜单项,当用户点击时, 对于报表将执行 print 方法, 而对其他项目将执行 view 方法。

可以把下列参数传递给该方法:

  • menu - 来自 index.html 文件中的菜单元素的 JQuery 对象

  • forms_container 一个 JQuery 对象,其元素包含由 view 常见的表单窗体。

  • options - 可以有下列属性的对象:

    • custom_menu - 使用这个选项来创建一个自定义菜单,请见下文

    • view_first - 如果为 `` true`` ,则创建菜单后将显示菜单中第一个实体项的视图表单窗体,默认值为 false

    • create_single_group - 如果为 true,并且任务树中只有一个组有实体项,则将创建该组的菜单项,该菜单项具有组实体项的下拉菜单,否则将创建每个实体项的菜单项。默认值为false`` 。

    • splash_screen - 一个 html ,当关闭全部选项卡是,它将显示在 forms_container 中。

自定义菜单选项

要创建你自己的自定义菜单,你必须设置 custom_menu 选项。

这个选项是一个含有多个菜单对象的列表,其中每个菜单对象可以是:

  • Jam.py 实体项或 or 实体项组

  • array: 数组的第一个元素是菜单项的名称,第二个是菜单对象的列表

  • 有一个属性的对象: 属性的 “键” 是菜单项的名称,而 “值” 是菜单对象的列表

  • 有一个属性的对象: 属性的 “键” 是菜单项的名称,而 “值” 是一个点击菜单项将要执行的函数。

要添加一个分隔线,可以将一个空字符串( '' )添加到菜单对象的列表中。

示例

修改后 “on_page_loloaded” 如下所示:

task.create_menu($("#menu"), $("#content"), {
    custom_menu: menu,
    splash_screen: '<h1 class="text-center">Jam.py Demo Application</h1>',
    view_first: true
});

在同一个 “on_page_looaded” 中使用自定义菜单的示例:

let menu = [
        ['First',  [task.invoices, task.customers]],
        {'Second': [task.catalogs, '', task.reports]},
        {Third: [task.tracks, {Params: function() {alert('params clicked')}}]},
        {Fourth: [task.task.analytics, {'Artists list': [task.artists]}]},
        task.reports,
        {Params: function() {alert('params clicked')}},
    ];
task.create_menu($("#menu"), $("#content"), {
    custom_menu: menu,
    splash_screen: '<h1 class="text-center">Jam.py Demo Application</h1>',
    view_first: true
});

对于演示应用程序,上面的代码会有如下结果:

Custom Menu