class LayoutUtil {
static flattenObject(obj, prefix = '') {
return _.reduce(obj, (acc, value, key) => {
const fullKey = prefix ? `${prefix}.${key}` : key;
if (_.isObject(value) && !_.isArray(value)) {
_.assign(acc, this.flattenObject(value, fullKey));
} else if (_.isArray(value)) {
// Process each item in the array
value.forEach((item, index) => {
// If the item is an object, recurse, otherwise assign directly
if (_.isObject(item)) {
_.assign(acc, this.flattenObject(item, `${fullKey}[${index}]`));
} else {
acc[`${fullKey}[${index}]`] = item;
}
});
} else {
acc[fullKey] = value;
}
return acc;
}, {});
}
static createGroup(groupModel) {
let groupHtml = `
${groupModel.groupTitle}
`;
groupModel.fields.forEach(item => {
groupHtml += this.createFormElement(item);
});
groupHtml += '';
return groupHtml;
}
static createTextInput(elementModel) {
return `
`;
}
static createBooleanInput(elementModel) {
return `
`;
}
static createSelectInput(elementModel) {
const optionsHtml = elementModel.options.map(optionValue => ``).join('');
return `
`;
}
static createTextAreaInput(elementModel) {
return `
`;
}
static createFormElement(elementModel) {
switch (elementModel.type) {
case "boolean":
return this.createBooleanInput(elementModel);
case "text":
return this.createTextInput(elementModel);
case "select":
return this.createSelectInput(elementModel);
case "textarea":
return this.createTextAreaInput(elementModel);
default:
console.error("Unsupported element type: " + elementModel.type);
return '';
}
}
static createForm(model) {
let formHtml = '';
model.forEach(group => {
formHtml += this.createGroup(group);
});
return formHtml;
}
static getFieldValue(element) {
if ($(element).is('select') || $(element).is('input[type="text"]') || $(element).is('textarea')) {
return $(element).val();
}
if ($(element).is('input[type="checkbox"]')) {
return $(element).is(':checked');
}
}
static echartReplacer(key, value) {
if (key === 'echart' || key === 'series') {
return undefined;
}
return value;
}
}
export default LayoutUtil;