From cd46562eaade2ec5213d5948ccd972f692a42238 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Mon, 9 Aug 2021 14:05:34 -0700 Subject: [PATCH] msgtplui - Preview.js - Prefer loading fresh examples --- ext/msgtplui/ang/msgtplui/Preview.js | 46 +++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/ext/msgtplui/ang/msgtplui/Preview.js b/ext/msgtplui/ang/msgtplui/Preview.js index 91684634cd..5e89adc0fa 100644 --- a/ext/msgtplui/ang/msgtplui/Preview.js +++ b/ext/msgtplui/ang/msgtplui/Preview.js @@ -20,6 +20,40 @@ $ctrl.adhocExampleJson = angular.toJson(model.examples[$ctrl.exampleId], 2); }; + function requestAdhocExample() { + var adhocExample; + try { + adhocExample = JSON.parse($ctrl.adhocExampleJson); + } + catch (err) { + return $q.reject(ts('Malformed JSON example')); + } + return crmApi4('WorkflowMessage', 'render', { + workflow: adhocExample.workflow, + values: adhocExample.data.modelProps, + messageTemplate: model.revisions[$ctrl.revisionId].rec + }).then(function(response) { + return response[0]; + }); + } + + function requestStoredExample() { + // For a dev working on example, it's easier if the example is always loaded fresh. + return crmApi4('WorkflowMessageExample', 'get', { + where: [["name", "=", model.examples[$ctrl.exampleId].name]], + select: ['workflow', 'data'], + chain: { + "render": ["WorkflowMessage", "render", { + "workflow": "$workflow", + "values": "$data.modelProps", + "messageTemplate": model.revisions[$ctrl.revisionId].rec + }] + } + }).then(function(response) { + return response[0].render[0]; + }); + } + var lastId = null; var update = function update() { var id = $ctrl.revisionId + ':' + $ctrl.exampleId; @@ -28,18 +62,14 @@ // $ctrl.preview = model.revisions[$ctrl.revisionId].rec; $ctrl.preview = {loading: true}; - var liveExample = model.examples[$ctrl.exampleId]; - var getting = crmApi4('WorkflowMessage', 'render', { - workflow: liveExample.workflow, - values: liveExample.data.modelProps, - messageTemplate: model.revisions[$ctrl.revisionId].rec - }).then(function(response) { - $ctrl.preview = response[0]; + var rendering = $ctrl.isAdhocExample ? requestAdhocExample() : requestStoredExample(); + rendering.then(function(response) { + $ctrl.preview = response; }, function(failure) { $ctrl.preview = {}; crmUiAlert({title: ts('Render failed'), text: failure.error_message, type: 'error'}); }); - return crmStatus({start: ts('Rendering...'), success: ''}, getting); + return crmStatus({start: ts('Rendering...'), success: ''}, rendering); }; $scope.$watch('$ctrl.revisionId', update); -- 2.25.1