Added support for JSON
This commit is contained in:
parent
35078defb6
commit
69ff628cda
7 changed files with 55 additions and 5 deletions
|
@ -24,6 +24,7 @@ module.exports.types = {
|
|||
'date-eur': 'Date (DD/MM/YYYY)',
|
||||
'birthday-us': 'Birthday (MM/DD)',
|
||||
'birthday-eur': 'Birthday (DD/MM)',
|
||||
json: 'JSON value for custom rendering',
|
||||
option: 'Option'
|
||||
};
|
||||
|
||||
|
@ -34,6 +35,7 @@ module.exports.genericTypes = {
|
|||
website: 'string',
|
||||
longtext: 'textarea',
|
||||
gpg: 'textarea',
|
||||
json: 'textarea',
|
||||
number: 'number',
|
||||
'date-us': 'date',
|
||||
'date-eur': 'date',
|
||||
|
@ -106,7 +108,7 @@ module.exports.get = (id, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
let field = rows && rows[0] && tools.convertKeys(rows[0]) || false;
|
||||
field.isGroup = module.exports.grouped.includes(field.type);
|
||||
field.isGroup = module.exports.grouped.includes(field.type) || field.type === 'json';
|
||||
return callback(null, field);
|
||||
});
|
||||
});
|
||||
|
@ -329,6 +331,7 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
|
|||
break;
|
||||
case 'gpg':
|
||||
case 'longtext':
|
||||
case 'json':
|
||||
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TEXT DEFAULT NULL';
|
||||
break;
|
||||
case 'number':
|
||||
|
@ -412,6 +415,35 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
|
|||
row.push(item);
|
||||
break;
|
||||
}
|
||||
case 'json':
|
||||
{
|
||||
let value;
|
||||
let json = (valueList[field.column] || '').toString().trim();
|
||||
try {
|
||||
let parsed = JSON.parse(json);
|
||||
if (Array.isArray(parsed)) {
|
||||
parsed = {
|
||||
values: parsed
|
||||
};
|
||||
}
|
||||
value = json ? render(field.groupTemplate, parsed) : '';
|
||||
} catch (E) {
|
||||
value = E.message;
|
||||
}
|
||||
|
||||
let item = {
|
||||
type: field.type,
|
||||
name: field.name,
|
||||
column: field.column,
|
||||
value: (valueList[field.column] || '').toString().trim(),
|
||||
visible: !!field.visible,
|
||||
mergeTag: field.key,
|
||||
mergeValue: value || field.defaultValue,
|
||||
['type' + (field.type || '').toString().trim().replace(/(?:^|\-)([a-z])/g, (m, c) => c.toUpperCase())]: true
|
||||
};
|
||||
row.push(item);
|
||||
break;
|
||||
}
|
||||
case 'number':
|
||||
{
|
||||
let item = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue