@memberjunction/ng-entity-communications 5.4.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"preview.component.d.ts","sourceRoot":"","sources":["../../src/lib/preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAS,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,UAAU,EAAW,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAA2B,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAKlG;;GAEG;AACH,qBAMa,oCAAqC,YAAW,MAAM;IACxD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,yCAAgD;IAE1E,SAAS,EAAE,wBAAwB,EAAE,CAAM;IAC3C,gBAAgB,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IACzD,IAAI,EAAE,MAAM,CAAK;IAEV,eAAe,EAAE,gBAAgB,EAAE,CAAM;IAChD,mBAAmB,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,OAAO,CAAS;;IAI1B,QAAQ;IAOR,aAAa;IAoBnB,cAAc,CAAC,QAAQ,EAAE,wBAAwB;cAOjC,mBAAmB;IAwCnC,yBAAyB,IAAI,MAAM;IASnC,sBAAsB,IAAI,MAAM;IAUhC,MAAM;IAKN,YAAY;IAIZ,WAAW;IAIX,WAAW;IAMX,eAAe;yCAhIJ,oCAAoC;2CAApC,oCAAoC;CAqIhD"}
1
+ {"version":3,"file":"preview.component.d.ts","sourceRoot":"","sources":["../../src/lib/preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAS,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,UAAU,EAAW,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAA2B,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAKlG;;GAEG;AACH,qBAMa,oCAAqC,YAAW,MAAM;IACxD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,yCAAgD;IAE1E,SAAS,EAAE,wBAAwB,EAAE,CAAM;IAC3C,gBAAgB,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IACzD,IAAI,EAAE,MAAM,CAAK;IAEV,eAAe,EAAE,gBAAgB,EAAE,CAAM;IAChD,mBAAmB,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,OAAO,CAAS;;IAI1B,QAAQ;IAOR,aAAa;IAoBnB,cAAc,CAAC,QAAQ,EAAE,wBAAwB;cAOjC,mBAAmB;IAwCnC,yBAAyB,IAAI,MAAM;IASnC,sBAAsB,IAAI,MAAM;IAUhC,MAAM;IAKN,YAAY;IAIZ,WAAW;IAIX,WAAW;IAMX,eAAe;yCAhIJ,oCAAoC;2CAApC,oCAAoC;CAqIhD"}
@@ -1,6 +1,7 @@
1
1
  import { Component, Output, EventEmitter, Input } from '@angular/core';
2
2
  import { CommunicationEngineBase, Message } from '@memberjunction/communication-types';
3
3
  import { RunView } from '@memberjunction/core';
4
+ import { UUIDsEqual } from '@memberjunction/global';
4
5
  import { EntityCommunicationsEngineClient } from '@memberjunction/entity-communications-client';
5
6
  import { TemplateEngineBase } from '@memberjunction/templates-base-types';
6
7
  import * as i0 from "@angular/core";
@@ -145,7 +146,7 @@ export class EntityCommunicationsPreviewComponent {
145
146
  });
146
147
  this.templates = result.Results;
147
148
  this.templates.forEach(template => {
148
- template.Content = content.Results.filter(c => c.TemplateID === template.ID);
149
+ template.Content = content.Results.filter(c => UUIDsEqual(c.TemplateID, template.ID));
149
150
  });
150
151
  }
151
152
  selectTemplate(template) {
@@ -245,5 +246,5 @@ export class EntityCommunicationsPreviewComponent {
245
246
  }], templateSelected: [{
246
247
  type: Output
247
248
  }] }); })();
248
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewComponent, { className: "EntityCommunicationsPreviewComponent", filePath: "src/lib/preview.component.ts", lineNumber: 18 }); })();
249
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewComponent, { className: "EntityCommunicationsPreviewComponent", filePath: "src/lib/preview.component.ts", lineNumber: 19 }); })();
249
250
  //# sourceMappingURL=preview.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.component.js","sourceRoot":"","sources":["../../src/lib/preview.component.ts","../../src/lib/preview.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { CommunicationEngineBase, Message, ProcessedMessage } from '@memberjunction/communication-types';\nimport { EntityInfo, RunView, RunViewParams } from '@memberjunction/core';\nimport { MJTemplateContentEntity, MJTemplateEntityExtended } from '@memberjunction/core-entities';\nimport { EntityCommunicationParams } from '@memberjunction/entity-communications-base';\nimport { EntityCommunicationsEngineClient } from '@memberjunction/entity-communications-client';\nimport { TemplateEngineBase } from '@memberjunction/templates-base-types';\n\n/**\n * Component for previewing in the UI what a communication will look like when sent using a specific entity and parameters for running a view that drive a dataset against a given template\n */\n@Component({\n standalone: false,\n selector: 'mj-entity-communications-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.css']\n})\nexport class EntityCommunicationsPreviewComponent implements OnInit {\n @Input() templateFilter: string | undefined;\n @Input() entityInfo: EntityInfo | undefined;\n @Input() runViewParams: RunViewParams | undefined;\n @Output() templateSelected = new EventEmitter<MJTemplateEntityExtended>();\n\n templates: MJTemplateEntityExtended[] = [];\n selectedTemplate: MJTemplateEntityExtended | null = null;\n step: number = 1;\n\n public previewMessages: ProcessedMessage[] = [];\n currentMessageIndex: number = 0;\n public loading: boolean = false;\n\n constructor() {}\n\n async ngOnInit() {\n if (!this.entityInfo || !this.runViewParams)\n throw new Error(\"EntityInfo and RunViewParams are required\");\n\n await this.loadTemplates();\n }\n\n async loadTemplates() {\n // load up all template metadata\n const rv = new RunView();\n const result = await rv.RunView<MJTemplateEntityExtended>(\n {\n EntityName: \"MJ: Templates\",\n ExtraFilter: `(IsActive = 1 AND (ActiveAt IS NULL OR ActiveAt <= GETDATE())) ${this.templateFilter ? `AND ${this.templateFilter}` : ''}`,\n ResultType: 'entity_object'\n }\n );\n const content = await rv.RunView<MJTemplateContentEntity>({\n EntityName: \"MJ: Template Contents\",\n ResultType: 'entity_object'\n })\n this.templates = result.Results;\n this.templates.forEach(template => {\n template.Content = content.Results.filter(c => c.TemplateID === template.ID);\n });\n }\n\n selectTemplate(template: MJTemplateEntityExtended) {\n this.selectedTemplate = template;\n this.templateSelected.emit(template);\n this.step = 2;\n this.loadMessagePreviews(); \n }\n\n protected async loadMessagePreviews() {\n this.loading = true;\n\n const msg: Message = new Message();\n msg.From = \"amith@bluecypress.io\"\n msg.Subject = \"Test Subject\";\n\n const sendGrid = CommunicationEngineBase.Instance.Providers.find(p => p.Name === \"SendGrid\")\n if (!sendGrid)\n throw new Error(\"SendGrid provider not found\");\n\n const email = sendGrid.MessageTypes.find(mt => mt.Name === \"Email\");\n if (!email) \n throw new Error(\"Email message type not found\");\n\n if (!this.selectedTemplate)\n throw new Error(\"No template selected\");\n\n msg.MessageType = email;\n\n msg.HTMLBodyTemplate = this.selectedTemplate;\n msg.SubjectTemplate = TemplateEngineBase.Instance.FindTemplate('Test Subject Template')\n \n const commParams: EntityCommunicationParams = {\n EntityID: this.entityInfo!.ID, \n RunViewParams: this.runViewParams!, \n ProviderName: \"SendGrid\", \n ProviderMessageTypeName: \"Email\", \n Message: msg,\n PreviewOnly: true,\n IncludeProcessedMessages: true\n }\n const result = await EntityCommunicationsEngineClient.Instance.RunEntityCommunication(commParams);\n if (result && result.Success && result.Results) {\n this.previewMessages = result.Results.map(r => r.Message)\n }\n\n this.loading = false;\n }\n\n currentPreviewItemSubject(): string {\n if (this.previewMessages && this.previewMessages.length > 0) {\n if (this.currentMessageIndex >=0 && this.currentMessageIndex < this.previewMessages.length) {\n return this.previewMessages[this.currentMessageIndex].ProcessedSubject!; \n }\n }\n\n return 'Error processing template content';\n }\n currentPreviewItemBody(): string {\n if (this.previewMessages && this.previewMessages.length > 0) {\n if (this.currentMessageIndex >=0 && this.currentMessageIndex < this.previewMessages.length) {\n return this.previewMessages[this.currentMessageIndex].ProcessedHTMLBody!; \n }\n }\n\n return 'Error processing template content';\n }\n\n goBack() {\n this.step = 1;\n }\n\n\n firstMessage() {\n this.currentMessageIndex = 0;\n }\n\n lastMessage() {\n this.currentMessageIndex = this.previewMessages.length - 1;\n }\n\n nextMessage() {\n if (this.currentMessageIndex < this.previewMessages.length - 1) {\n this.currentMessageIndex++;\n }\n }\n\n previousMessage() {\n if (this.currentMessageIndex > 0) {\n this.currentMessageIndex--;\n }\n }\n}\n\n ","<div>\n @if (step === 1) {\n <div class=\"step-1\">\n <h2>Select a Template</h2>\n <ul>\n @for (template of templates; track template) {\n <li (click)=\"selectTemplate(template)\">\n {{ template.Name }}\n </li>\n }\n </ul>\n </div>\n }\n\n @if (step === 2) {\n <div class=\"step-2\">\n @if(!loading) {\n @if (previewMessages.length === 0) {\n <h2>No Messages Available</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n }\n @else {\n <h2>Preview {{ selectedTemplate?.Name }}</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n <div class=\"vcr-controls\">\n <button (click)=\"firstMessage()\" aria-label=\"First\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-double-left\"></span>\n </button>\n <button (click)=\"previousMessage()\" aria-label=\"Previous\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-left\"></span>\n </button>\n <span class=\"index-indicator\">{{ currentMessageIndex + 1 }} of {{ previewMessages.length }}</span>\n <button (click)=\"nextMessage()\" aria-label=\"Next\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-right\"></span>\n </button>\n <button (click)=\"lastMessage()\" aria-label=\"Last\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-double-right\"></span>\n </button>\n </div>\n <div class=\"template-preview\">\n <div class=\"subject-line\">{{currentPreviewItemSubject()}}</div>\n <div class=\"preview-body\" [innerHTML]=\"currentPreviewItemBody()\"></div>\n </div>\n }\n }\n @else {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n</div>\n}\n</div>"]}
1
+ {"version":3,"file":"preview.component.js","sourceRoot":"","sources":["../../src/lib/preview.component.ts","../../src/lib/preview.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { CommunicationEngineBase, Message, ProcessedMessage } from '@memberjunction/communication-types';\nimport { EntityInfo, RunView, RunViewParams } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { MJTemplateContentEntity, MJTemplateEntityExtended } from '@memberjunction/core-entities';\nimport { EntityCommunicationParams } from '@memberjunction/entity-communications-base';\nimport { EntityCommunicationsEngineClient } from '@memberjunction/entity-communications-client';\nimport { TemplateEngineBase } from '@memberjunction/templates-base-types';\n\n/**\n * Component for previewing in the UI what a communication will look like when sent using a specific entity and parameters for running a view that drive a dataset against a given template\n */\n@Component({\n standalone: false,\n selector: 'mj-entity-communications-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.css']\n})\nexport class EntityCommunicationsPreviewComponent implements OnInit {\n @Input() templateFilter: string | undefined;\n @Input() entityInfo: EntityInfo | undefined;\n @Input() runViewParams: RunViewParams | undefined;\n @Output() templateSelected = new EventEmitter<MJTemplateEntityExtended>();\n\n templates: MJTemplateEntityExtended[] = [];\n selectedTemplate: MJTemplateEntityExtended | null = null;\n step: number = 1;\n\n public previewMessages: ProcessedMessage[] = [];\n currentMessageIndex: number = 0;\n public loading: boolean = false;\n\n constructor() {}\n\n async ngOnInit() {\n if (!this.entityInfo || !this.runViewParams)\n throw new Error(\"EntityInfo and RunViewParams are required\");\n\n await this.loadTemplates();\n }\n\n async loadTemplates() {\n // load up all template metadata\n const rv = new RunView();\n const result = await rv.RunView<MJTemplateEntityExtended>(\n {\n EntityName: \"MJ: Templates\",\n ExtraFilter: `(IsActive = 1 AND (ActiveAt IS NULL OR ActiveAt <= GETDATE())) ${this.templateFilter ? `AND ${this.templateFilter}` : ''}`,\n ResultType: 'entity_object'\n }\n );\n const content = await rv.RunView<MJTemplateContentEntity>({\n EntityName: \"MJ: Template Contents\",\n ResultType: 'entity_object'\n })\n this.templates = result.Results;\n this.templates.forEach(template => {\n template.Content = content.Results.filter(c => UUIDsEqual(c.TemplateID, template.ID));\n });\n }\n\n selectTemplate(template: MJTemplateEntityExtended) {\n this.selectedTemplate = template;\n this.templateSelected.emit(template);\n this.step = 2;\n this.loadMessagePreviews(); \n }\n\n protected async loadMessagePreviews() {\n this.loading = true;\n\n const msg: Message = new Message();\n msg.From = \"amith@bluecypress.io\"\n msg.Subject = \"Test Subject\";\n\n const sendGrid = CommunicationEngineBase.Instance.Providers.find(p => p.Name === \"SendGrid\")\n if (!sendGrid)\n throw new Error(\"SendGrid provider not found\");\n\n const email = sendGrid.MessageTypes.find(mt => mt.Name === \"Email\");\n if (!email) \n throw new Error(\"Email message type not found\");\n\n if (!this.selectedTemplate)\n throw new Error(\"No template selected\");\n\n msg.MessageType = email;\n\n msg.HTMLBodyTemplate = this.selectedTemplate;\n msg.SubjectTemplate = TemplateEngineBase.Instance.FindTemplate('Test Subject Template')\n \n const commParams: EntityCommunicationParams = {\n EntityID: this.entityInfo!.ID, \n RunViewParams: this.runViewParams!, \n ProviderName: \"SendGrid\", \n ProviderMessageTypeName: \"Email\", \n Message: msg,\n PreviewOnly: true,\n IncludeProcessedMessages: true\n }\n const result = await EntityCommunicationsEngineClient.Instance.RunEntityCommunication(commParams);\n if (result && result.Success && result.Results) {\n this.previewMessages = result.Results.map(r => r.Message)\n }\n\n this.loading = false;\n }\n\n currentPreviewItemSubject(): string {\n if (this.previewMessages && this.previewMessages.length > 0) {\n if (this.currentMessageIndex >=0 && this.currentMessageIndex < this.previewMessages.length) {\n return this.previewMessages[this.currentMessageIndex].ProcessedSubject!; \n }\n }\n\n return 'Error processing template content';\n }\n currentPreviewItemBody(): string {\n if (this.previewMessages && this.previewMessages.length > 0) {\n if (this.currentMessageIndex >=0 && this.currentMessageIndex < this.previewMessages.length) {\n return this.previewMessages[this.currentMessageIndex].ProcessedHTMLBody!; \n }\n }\n\n return 'Error processing template content';\n }\n\n goBack() {\n this.step = 1;\n }\n\n\n firstMessage() {\n this.currentMessageIndex = 0;\n }\n\n lastMessage() {\n this.currentMessageIndex = this.previewMessages.length - 1;\n }\n\n nextMessage() {\n if (this.currentMessageIndex < this.previewMessages.length - 1) {\n this.currentMessageIndex++;\n }\n }\n\n previousMessage() {\n if (this.currentMessageIndex > 0) {\n this.currentMessageIndex--;\n }\n }\n}\n\n ","<div>\n @if (step === 1) {\n <div class=\"step-1\">\n <h2>Select a Template</h2>\n <ul>\n @for (template of templates; track template) {\n <li (click)=\"selectTemplate(template)\">\n {{ template.Name }}\n </li>\n }\n </ul>\n </div>\n }\n\n @if (step === 2) {\n <div class=\"step-2\">\n @if(!loading) {\n @if (previewMessages.length === 0) {\n <h2>No Messages Available</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n }\n @else {\n <h2>Preview {{ selectedTemplate?.Name }}</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n <div class=\"vcr-controls\">\n <button (click)=\"firstMessage()\" aria-label=\"First\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-double-left\"></span>\n </button>\n <button (click)=\"previousMessage()\" aria-label=\"Previous\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-left\"></span>\n </button>\n <span class=\"index-indicator\">{{ currentMessageIndex + 1 }} of {{ previewMessages.length }}</span>\n <button (click)=\"nextMessage()\" aria-label=\"Next\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-right\"></span>\n </button>\n <button (click)=\"lastMessage()\" aria-label=\"Last\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-double-right\"></span>\n </button>\n </div>\n <div class=\"template-preview\">\n <div class=\"subject-line\">{{currentPreviewItemSubject()}}</div>\n <div class=\"preview-body\" [innerHTML]=\"currentPreviewItemBody()\"></div>\n </div>\n }\n }\n @else {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n</div>\n}\n</div>"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-entity-communications",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "description": "MemberJunction: Angular Components to allow a user to select templates, preview the messages with those tempaltes, and send them",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -31,16 +31,16 @@
31
31
  "@progress/kendo-angular-indicators": "22.0.1"
32
32
  },
33
33
  "dependencies": {
34
- "@memberjunction/communication-types": "5.4.0",
35
- "@memberjunction/core": "5.4.0",
36
- "@memberjunction/core-entities": "5.4.0",
37
- "@memberjunction/entity-communications-base": "5.4.0",
38
- "@memberjunction/entity-communications-client": "5.4.0",
39
- "@memberjunction/global": "5.4.0",
40
- "@memberjunction/ng-container-directives": "5.4.0",
41
- "@memberjunction/ng-shared": "5.4.0",
42
- "@memberjunction/ng-shared-generic": "5.4.0",
43
- "@memberjunction/templates-base-types": "5.4.0",
34
+ "@memberjunction/communication-types": "5.5.0",
35
+ "@memberjunction/core": "5.5.0",
36
+ "@memberjunction/core-entities": "5.5.0",
37
+ "@memberjunction/entity-communications-base": "5.5.0",
38
+ "@memberjunction/entity-communications-client": "5.5.0",
39
+ "@memberjunction/global": "5.5.0",
40
+ "@memberjunction/ng-container-directives": "5.5.0",
41
+ "@memberjunction/ng-shared": "5.5.0",
42
+ "@memberjunction/ng-shared-generic": "5.5.0",
43
+ "@memberjunction/templates-base-types": "5.5.0",
44
44
  "tslib": "^2.8.1"
45
45
  },
46
46
  "sideEffects": false,