From b1eaa6eaa1e75b5ef4afd459140a404bb5733dcb Mon Sep 17 00:00:00 2001 From: Bruno MATEU Date: Thu, 27 Aug 2020 11:38:56 +0200 Subject: [PATCH] feat. Make raw json data available in templates --- server/models/fields.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/models/fields.js b/server/models/fields.js index 7cd1be8b..3da7b6a4 100644 --- a/server/models/fields.js +++ b/server/models/fields.js @@ -97,6 +97,7 @@ fieldTypes.json = { cardinality: Cardinality.SINGLE, getHbsType: field => 'typeJson', forHbs: (field, value) => value, + jsonData: (field, value) => JSON.parse(value), parsePostValue: (field, value) => value, render: (field, value) => { try { @@ -137,6 +138,7 @@ fieldTypes['checkbox-grouped'] = { enumerated: false, cardinality: Cardinality.MULTIPLE, getHbsType: field => 'typeCheckboxGrouped', + jsonData: (field, value) => (value || []).map(col => field.groupedOptions[col].name), render: (field, value) => { const subItems = (value || []).map(col => field.groupedOptions[col].name); @@ -227,6 +229,7 @@ fieldTypes.option = { return !(['false', 'no', '0', ''].indexOf((value || '').toString().trim().toLowerCase()) >= 0) }, getHbsType: field => 'typeOption', + jsonData: (field, value) => value ? true : false, forHbs: (field, value) => value ? 1 : 0, render: (field, value) => value ? field.settings.checkedLabel : field.settings.uncheckedLabel @@ -737,6 +740,9 @@ function getMergeTags(fieldsGrouped, subscription, extraTags = {}) { // assumes const fldCol = getFieldColumn(fld); mergeTags[fld.key] = type.render(fld, subscription[fldCol]); + if (type.jsonData) { + mergeTags[fld.key + "_RAW"] = type.jsonData(fld, subscription[fldCol]); + } } return mergeTags;