Frappe中JavaScript的API

  • 表单脚本
    • 标准格式脚本
      • 创建DocType时,会自动创建可以编写脚本的文件。
        • 格式frappe.ui.form.on(doctype, {})
      • 子脚本与父脚本再同一文件中。
    • 自定义表单脚本
      • 通过在系统中创建客户端脚本来编写表单脚本。
    • 表单事件
      • 表单脚本依靠事件来触发,这些事件将frm作为其处理程序函数中的第一个参数。
      • setup(frm){}
        • 表单首次创建时触发。
      • before_load(frm){}
        • 表单即将加载之前触发。
      • onload(frm){}
        • 表单加载完毕即将渲染时触发。
      • refresh(frm){}
        • 表单加载渲染时触发。
      • onload_post_render(frm){}
        • 表单加载渲染后触发。
      • validate(frm){}
        • 在before_save之前触发。
      • before_save(frm){}
        • 调用保存之前触发。
      • after_save(frm){}
        • 表单保存之后触发。
      • before_submit(frm){}
        • 提交之前触发。
      • on_submit(frm){}
        • 提交之后触发。
      • before_cancel(frm){}
        • 取消操作之前触发。
      • after_cancel(frm){}
        • 表单取消之后触发。
      • before_discard(frm){}
        • 调用discard之前触发。
      • after_discard(frm){}
        • 表单丢弃后触发。
      • timeline_refresh(frm){}
        • 表单时间轴渲染后触发。
      • {filedname}_on_form_rendered(frm){}
        • 表格字段中的行为作为表单被打开时触发。
      • {fieldname}(frm){}
        • fieldname的值改变时触发。
      • get_email_recipient_filters(frm,field){}
        • 由电子邮件对话框调用,获取电子邮件收件人的默认过滤器。
      • get_email_recipients(frm,field){}
        • 由电子邮件对话框调用,获取默认收件人。
    • 子表事件
      • 这些事件在子表上下文中触发。因此,除了 之外frm,它们还将在其处理程序函数中获得cdt(Child DocType) 和cdn(Child Docname) 参数。
      • before_{fieldname}_remove(frm,cdt,cdn){}
        • 表字段中删除一行时触发。
      • {fieldname}_add(frm,cdt,cdn){}
        • 表字段中添加一行时触发。
      • {fieldname}_remove(frm,cdt,cdn){}
        • 表字段中删除一行时触发。
      • {feildname}_move(frm,cdt,cdn){}
        • 重新排序到表字段中的另一个位置时触发。
      • form_ender(frm,cdt,cdn){}
        • 表格字段中的行作为表格打开时触发。
    • 表单API
      • frm.set_value()
        • 设置字段的值。
      • frm.refresh()
        • 刷新表单。
      • frm.save()
        • 保存表单,传入其他操作参数,可以触发其他操作,例如提交、取消、更新。
      • frm.enable_save()、frm.disable_save()
        • 启用、禁用表单中保存按钮方法。
      • frm.email_doc()
        • 打开此表单的电子邮件对话框。
      • frm.reload_doc()
        • 重新加载文档。
      • frm.refresh_field()
        • 刷新字段及其依赖项。
      • frm.is_dirty()
        • 返回布尔类型,检查表单是否更改和保存。
      • frm.dirty()
        • 将表单设置为为保存状态,调用保存方法时需要先将表单设置为为保存状态,不然会提示文档没有修改的提示。
      • frm.is_new()
        • 判断表单是否是新创建并且未保存的。
      • frm.set_into(message,color)
        • 设置表单顶部的文本介绍。
      • frm.add_custom_button()
        • 在页面顶部的内部工具栏中添加自定义按钮。
      • frm.change_custom_button_type()
        • 通过标签和组更改特定的自定义按钮类型。
      • frm.remove_custom_button()
        • 删除自定义按钮。
      • frm.clear_custom_buttons()
        • 删除内部工具栏所有自定义按钮。
      • frm.set_df_property()
        • 修改字段的docfield属性并且刷新字段。
      • frm.toggle_enable()
        • 根据条件切换字段或字段列表。
      • frm.toggle_reqd()
        • 根据条件将某个字段或字段列表切换未必填项。
      • frm.toggle_display()
        • 根据条件显示或隐藏字段属性列表。
      • frm.set_qurey()
        • 在链接字段上应用过滤以显示有限记录。
      • frm.add_child()
        • 表字段添加一行内容。
      • frm.call()
        • 使用参数调用服务器端控制器方法,必须是使用@frappe.whitelist装饰器的白名单方法。
      • frm.ui.form.on()
        • 触发器,可以触发所有表单事件。
      • frm.get_selected()
        • 获取对象中子表选定的行,key是表字段名称,value是行名称。
      • frm.ignore_doctypes_on_cancel_all()
        • 设置文档链接取消时,不需要取消的文档。
    • 控制
      • frappe.ui.form.make_control({parent,df})
        • 根据df属性制作frappe控件,附加到parent容器中。
      • frappe.meta.docfield_map
        • 可以通过将文本类型对象(数据、选择、文本等)的自定义格式化程序添加到docfield以下对象。
    • 列表
      • 为所有文档类型生成列表视图,除子表和单一文档类型之外。
      • 标准自定义列表视图必须要在doctype目录下创建{doctype}_list.js文件,文件下包含以下内容。
        • frappe.listview_settings[doctype] = {}
          • 所有列表操作在该触发器下。
        • add_fields: []
          • 添加要获取的字段。
        • filters: []
          • 设置默认筛选器。
        • hide_name_column: true
          • 隐藏显示“name”的最后一列`。
        • hide_name_filter: true
          • 隐藏名称列的默认筛选字段。
        • onload(listview){}
          • 在加载列表之前触发一次。
        • before_render() {}
          • 在每次渲染列表记录之前触发。
        • has_indicator_for_draft: false
          • 草稿文档上是否应用指标功能。
        • get_indicator(doc) {}
          • 自定义指示器颜色。
        • primary_action() {}
          • 单击主要操作时触发。
        • get_form_link(doc) {}
          • 覆盖此文档的表单路径。
        • button: {}
          • 为每一行添加一个自定义按钮。
          • show: function(doc) {}
          • get_label: function() {}
          • get_description: function(doc) {}
          • action: function(doc) {}
        • formatters: {}
          • 格式化字段值的显示方式
      • 自定义列表JS
        • 可以通过系统中创建客户端脚本来自定义列表视图。
        • frappe.listview_settings[doctype].formatters = {}
          • 通过脚本的方式格式化字段值显示的方式。
      • 列表JS中的多个按钮
        • dropdown_button:{}
          • get_label: __()
          • buttons: []
    • 页面API
      • 桌面内的每个屏幕都渲染在一个frappe.ui.Page对象内。
      • frappe.ui.Page({title,parent,single_column})
        • 创建一个新页面,并将附加到父页面。
      • 页面方法
        • 页面实例对象上常用的方法。
        • page.set_title()
          • 与文档标题一起设置页面标题,文档标题显示在浏览器选项卡中。
        • page.set_title_sub()
          • 设置页面的二级标题,显示在页眉右侧。
        • page.set_indicator()
          • 设置页面指示器的标签和颜色。
        • page.clear_indicator()
          • 清楚指示器的标签和颜色。
        • page.set_primary_action()
          • 设置主要操作按钮的标签、方法和图标。
        • page.clear_primary_action()
          • 清除主要操作按钮和方法。
        • page.set_secondary_action()
          • 设置辅助操作按钮标签、方法和图标。
        • page.clear_secondary_action()
          • 清除辅助操作按钮和方法。
        • page.add_menu_item()
          • 在下拉菜单中添加菜单选项的标签和方法。
        • page.clear_menu()
          • 清除下拉菜单选项。
        • page.add_action_item()
          • 在操作下拉菜单中添加才当项。
        • page.clear_action_menu()
          • 清除带有项目的操作下拉菜单。
        • page.add_inner_button()
          • 在内部工具栏中添加按钮的标签和方法。
        • page.change_inner_button_type()
          • 通过标签更改自定义按钮类型。
        • page.remove_inner_button()
          • 根据标签删除内部按钮。
        • page.clear_inner_toolbar()
          • 删除内部工具栏。
        • page.add_filed({})
          • 在页面标签工具栏添加表单控件。
        • page.get_form_valeus()
          • 从对象页面表单工具获取所有表单值。
        • page.clear_fields()
          • 清除页面表单工具栏中的所有字段。
  • Tree
    • 为所有启用了'树'的DocType生成树视图。
  • 标准树的JS
    • 要自定义树视图,必须先子啊doctype目录中创建{doctype}_tree.js文件。
    • {doctype}_tree.js文件包含的属性方法
      • breadcrumb
      • title
      • filters:[{fieldname,fieldtype,options,label,on_change: handle_company_change()}]
      • get_tree_nodes
      • add_tree_node
      • fields:[{fieldtype,fieldname,label,reqd}]
        • 新节点的字段。
      • ignore_fields:[]
        • 忽略字段,即使是必填字段。
      • menu_items:[{label,action,condition}]
        • 添加自定义按钮。
      • onload
        • 当树视图被实例化时触发。
      • post_render
        • 当树被通知时触发。
      • onrender
        • 当节点被通知时触发。
      • on_get_node
        • 当`get_tree_nodes`返回节点时触发。
      • extend_toolbar
        • 每个节点旁边显示的自定义按钮。
      • toolbar:[{label,condition,click,btnClass}]
  • 通用实用程序API
    • frappe.get_route()
      • 获取当前路线数组。
    • frappe.set_route()
      • 修改当前路线。
    • frappe.format(value,df,options,doc)
      • 将原始数据格式化。
    • frappe.provide(namespace)
      • 创建一个附加到窗口对象的命名空间。
    • frappe.require(asset_path,callback)
      • 异步加载JS或CSS资源。
  • 对话框API

  •  

Frappe中JavaScript的API
罗贤龙 2024年11月28日
分析这篇文章

存档
登录 留下评论
Frappe中Python的API