UNPKG

@visactor/vue-vtable

Version:
64 lines (60 loc) 2.04 kB
'use strict'; var VTable = require('@visactor/vtable'); var vutils = require('@visactor/vutils'); var editor = require('./editor.js'); var constants = require('../constants.js'); /** * @description: 校验动态渲染式编辑器 * @param {any} column * @param {any} getEditCustomNode * @return {*} */ function checkRenderEditor(column, getEditCustomNode) { const { editor } = column || {}; const key = getRenderEditorColumnKeyField(column); if (!vutils.isValid(key) || editor !== constants.DYNAMIC_RENDER_EDITOR) { return false; } if (typeof getEditCustomNode === 'function') { column.getEditCustomNode = getEditCustomNode; // 处理子列 if (Array.isArray(column.columns) && column.columns.length) { for (const childColumn of column.columns) { checkRenderEditor(childColumn, getEditCustomNode); } } return true; } return typeof column.getEditCustomNode === 'function'; } /** * @description: 获取渲染式编辑器的列配置主键 * @param {any} column * @return {*} */ function getRenderEditorColumnKeyField(column) { const { field, key } = column || {}; // 兼容取 field return vutils.isValid(key) ? key : field; } /** * @description: 获取动态渲染式编辑器 * @param {boolean} create * @param {any} currentContext * @return {*} */ function getRenderEditor(create, currentContext) { const registeredEditor = VTable.register.editor(constants.DYNAMIC_RENDER_EDITOR); let renderEditor = registeredEditor ? registeredEditor : undefined; if (!renderEditor && !!create) { // 注册自定义编辑器 renderEditor = new editor.DynamicRenderEditor(currentContext); VTable.register.editor(constants.DYNAMIC_RENDER_EDITOR, renderEditor); } return renderEditor; } exports.checkRenderEditor = checkRenderEditor; exports.getRenderEditor = getRenderEditor; exports.getRenderEditorColumnKeyField = getRenderEditorColumnKeyField;