From 20f0140875c1a50141d33a2c00b9231c29c0d632 Mon Sep 17 00:00:00 2001 From: BJR Matos Date: Fri, 22 Mar 2024 18:33:38 -0500 Subject: [PATCH] fix recursive component rendering --- packages/jsreport-components/test/test.js | 32 +++++++++++++++++++ .../lib/worker/render/executeEngine.js | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/jsreport-components/test/test.js b/packages/jsreport-components/test/test.js index 0294210fb..caa30868c 100644 --- a/packages/jsreport-components/test/test.js +++ b/packages/jsreport-components/test/test.js @@ -85,6 +85,38 @@ describe('components', function () { res.content.toString().should.be.eql('c1c2myHelper') }) + it('should evaluate recursive component using handlebars', async () => { + await reporter.documentStore.collection('components').insert({ + name: 'c1', + content: '{{#each children}}{{component "c1"}}{{/each}}{{name}}', + engine: 'handlebars' + }) + + const res = await reporter.render({ + template: { + content: '{{component "c1"}}', + recipe: 'html', + engine: 'handlebars' + }, + data: { + children: [ + { + children: [ + { + name: 'john' + }, + { + name: 'peter' + } + ] + } + ] + } + }) + + res.content.toString().should.be.eql('johnpeter') + }) + it('should propagate logs from nested components', async () => { await reporter.documentStore.collection('components').insert({ name: 'c1', diff --git a/packages/jsreport-core/lib/worker/render/executeEngine.js b/packages/jsreport-core/lib/worker/render/executeEngine.js index 4ab6ae44c..412972cf1 100644 --- a/packages/jsreport-core/lib/worker/render/executeEngine.js +++ b/packages/jsreport-core/lib/worker/render/executeEngine.js @@ -253,7 +253,7 @@ module.exports = (reporter) => { } contentResult = contentResult.replace(/asyncUnresolvedHelperResult/g, 'asyncHelperResult') - await executionFinishListenersMap.get(context.__executionId).fire() + await executionFinishListenersMap.get(executionId).fire() return { // handlebars escapes single brackets before execution to prevent errors on {#asset}