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;