/**
* TableColumn,表单项,应用数据集配置,返回默认表现形式编辑器配置
* @author cls
* @date 2021-03-09
*/
import { StringUtil } from "@birt/funclib/StringUtil.js";
import { $CONST } from "@birt/funclib/ConstUtil";
import { $ViewStyle } from "@birt/funclib/ViewStyle"
export const FormTableEditor = {
/**
* 根据字段配置,返回默认编辑器表现形式
* @param {*} fieldConf {} 字段配置
* @param {*} childConf {} 表单项或网格列孩子节点配置
* @return {}
*/
getEditorByFieldConf: function (fieldConf, childConf, controlName) {
if (fieldConf) {
let editor = this._getBindFieldCompt(fieldConf, controlName);
// 临时方案,当创建列不相等时,出有特殊已封装列对象,如:HcTableColumnCheckbox,直接返回
if (editor.controlName != controlName) {
return editor;
}
let cmpt = this._getEditorCompt(fieldConf, childConf, controlName);
cmpt.controlId = "_" + StringUtil.randomString(6);
if (!childConf._isFilterEditor && (fieldConf.readonly || childConf.readonly)) {
cmpt.readonly = true;
}
editor.children.push(cmpt);
if (this._isTable(controlName)) {
editor.slot = "scope";
}
return editor;
}
return {};
},
/**
* 根据字段配置,返回过滤编辑器
* @param {*} fieldConf
* @param {*} childConf
* @param {*} controlName
* @returns
*/
getFilterByFieldConf: function (fieldConf, childConf, controlName) {
if (fieldConf) {
let filterEditor = this._getEditorCompt(fieldConf, Object.assign({ _isFilterEditor: true }, childConf), controlName);
filterEditor.controlId = "_" + StringUtil.randomString(6);
if (this._isTable(controlName)) {
filterEditor.slot = "header";
filterEditor.placeholder = fieldConf.label;
}
return filterEditor;
}
},
/**
* 根据字段配置,返回默认显示Dom Json表现形式
* @param {*} fieldConf
* @param {*} childConf
* @param {*} controlName
*/
getViewByFieldConf: function (fieldConf, childConf, controlName) {
if (fieldConf) {
let fieldCompt = this._getBindFieldCompt(fieldConf, controlName);
if (this._isTable(controlName) && fieldCompt.children.length > 0) {
fieldCompt.slot = "scope";
}
return fieldCompt;
}
return {}
},
// 判断是否表格列
_isTable(controlName) {
return controlName == "HcTableColumn";
},
// 获取绑定字段配置
_getBindFieldCompt(fieldConf, controlName) {
let fieldCompt = {
controlName: controlName,
controlId: "_" + StringUtil.randomString(6),
label: fieldConf.label,
children: []
}
if (this._isTable(controlName)) {
fieldCompt = this._getTableFieldCompt(fieldConf, fieldCompt);
}
return fieldCompt;
},
// 获取表格绑定字段配置
_getTableFieldCompt(fieldConf, fieldCompt) {
if (fieldConf.dbtype == "dbBoolean") {
fieldCompt.controlName = "HcTableColumnCheckbox";
fieldCompt.showCheckAll = false;
} else if (fieldConf.dbtype == "dbIntBoolean") {
fieldCompt.controlName = "HcTableColumnCheckbox";
fieldCompt.showCheckAll = false;
fieldCompt.trueLabel = 1;
fieldCompt.falseLabel = 0;
}
return fieldCompt;
},
// 获取编辑控件
_getEditorCompt(fieldConf, childConf, controlName) {
// 默认编辑器 包含 if (fieldConf.dbtype == "dbString")
let editorId = "INPUT";
let lookupType = fieldConf.lookup && fieldConf.lookup.type;
let viewStyle = childConf.viewStyle;
let vsId = viewStyle && viewStyle.viewStyleId;
// 存在表现形式配置,优先应用
if (vsId && $ViewStyle[vsId]) {
editorId = vsId;
} else {
if (lookupType == $CONST.LOOKUPSYSENUMS) {
editorId = "LKSYSENUMS";
} else if (lookupType == $CONST.LOOKUPDATA) {
let openstyle = fieldConf.lookup.openstyle || $CONST.DIALOG;
if (openstyle == $CONST.DROPDOWN) {
editorId = "LKDATADROPDOWN";
} else if (openstyle == $CONST.DIALOG) {
editorId = "LKDATADIALOG";
}
} else if (fieldConf.dbtype == "dbInt") {
editorId = "INPUTINT";
} else if (fieldConf.dbtype == "dbIntBoolean") {
editorId = "CHECKBOXINT";
} else if (fieldConf.dbtype == "dbBoolean") {
editorId = "CHECKBOXBOOLEAN";
} else if (fieldConf.dbtype == "dbFloat" || fieldConf.dbtype == "dbDouble") {
editorId = "INPUTNUMBER";
} else if (fieldConf.dbtype == "dbText") {
if (this._isTable(controlName)) {
editorId = "TEXTDIALOG";
} else {
editorId = "TEXTAREA";
}
} else if (fieldConf.dbtype == "dbDatetime") {
if (childConf._isFilterEditor) {
editorId = "DATERANGE";
} else {
editorId = "DATEPICKER";
}
}
}
return $ViewStyle[editorId].call(this, fieldConf, childConf, controlName);
}
};