From 2b9be5ac6b12f8745e572a02061c36ca9ace0ab4 Mon Sep 17 00:00:00 2001 From: lofcz Date: Tue, 15 Feb 2022 12:57:01 +0100 Subject: [PATCH] Up JsGenerator --- src/code_manager/model/JsGenerator.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/code_manager/model/JsGenerator.js b/src/code_manager/model/JsGenerator.js index f27292c1d..a604c1155 100644 --- a/src/code_manager/model/JsGenerator.js +++ b/src/code_manager/model/JsGenerator.js @@ -54,9 +54,21 @@ export default Backbone.Model.extend({ for (let type in this.mapJs) { const mapType = this.mapJs[type]; + if (!mapType.code) { + continue; + } + if (mapType.props) { - if (mapType.code && mapType.code.trim()) { - code += ` + function isFunctionEmpty(fn) { + const content = fn.toString().match(/\{([\s\S]*)\}/m)[1]; // content between first and last { } + return content.replace(/^\s*\/\/.*$/gm, '').trim().length === 0; // remove comments + } + + if (isFunctionEmpty(mapType.code)) { + continue; + } + + code += ` var props = ${JSON.stringify(mapType.props)}; var ids = Object.keys(props).map(function(id) { return '#'+id }).join(','); var els = document.querySelectorAll(ids); @@ -64,17 +76,14 @@ export default Backbone.Model.extend({ var el = els[i]; (${mapType.code}.bind(el))(props[el.id]); }`; - } } else { // Deprecated - if (mapType.code && mapType.code.trim()) { - const ids = '#' + mapType.ids.join(', #'); - code += ` + const ids = '#' + mapType.ids.join(', #'); + code += ` var items = document.querySelectorAll('${ids}'); for (var i = 0, len = items.length; i < len; i++) { (function(){\n${mapType.code}\n}.bind(items[i]))(); }`; - } } }