Commit 94835b32 by GD-A-150752

edit-message-template

parent d9c84de3
...@@ -23,7 +23,7 @@ export class AppService { ...@@ -23,7 +23,7 @@ export class AppService {
} }
getPlaceholderOptionsEnum(): Observable<Array<PlaceholderOptionsEnum>> { getPlaceholderOptionsEnum(): Observable<Array<PlaceholderOptionsEnum>> {
return this.enumService.getEnums('PlaceholderOptions', true); return this.enumService.getEnumsWithNULLOptionLabel('PlaceholderOptions', 'Select variable');
} }
getTypes(serviceName: string): Observable<Array<any>> { getTypes(serviceName: string): Observable<Array<any>> {
......
<form #form="ngForm"> <form #form="ngForm">
<div class="ui-g ui-fluid"> <div class="ui-g ui-fluid mt-80">
<div class="ui-g-12 nopad"> <div class="ui-g-10 listing-title pt-0 pb-0">{{editMode ? "Edit" : "Add"}} Message Template</div>
<p-toolbar>
<div class="ui-toolbar-group-left">
{{editMode ? "Edit" : "Add"}} Message Template
</div>
</p-toolbar>
</div>
</div> </div>
<div class="ui-g form-group"> <div class="ui-g form-group">
<div class="ui-g-12 ui-md-12"> <div class="ui-g-12 ui-md-12">
...@@ -24,13 +18,13 @@ ...@@ -24,13 +18,13 @@
<div class="ui-g-12 ui-md-4"> <div class="ui-g-12 ui-md-4">
<label>Message Template Type</label> <label>Message Template Type</label>
</div> </div>
<div class="ui-g-12 ui-md-4 ui-fluid"> <div class="ui-g-12 ui-md-4 ui-fluid" *ngIf="this.messageTemplateTypes.length">
<p-dropdown [(ngModel)]="messageTemplate.TemplateType" <div class="header-select custom-dropdown w-100">
name="MessageTemplateType{{messageTemplate.ObjectID}}" <select2 [data]="messageTemplateTypes" [value]="messageTemplateTypes[0].id"
fieldLabel="Message Template Type" (valueChanged)="storeMessageContent($event)"
[options]="messageTemplateTypes" optionLabel="Description" [disabled]="showLoader" [options]="options">
(onChange)="storeMessageContent()"> </select2>
</p-dropdown> </div>
</div> </div>
</div> </div>
<div class="ui-g form-group" *ngIf="emailTemplateType()"> <div class="ui-g form-group" *ngIf="emailTemplateType()">
...@@ -44,11 +38,13 @@ ...@@ -44,11 +38,13 @@
class="form-control ui-inputtext" class="form-control ui-inputtext"
[disabled]="showLoader"> [disabled]="showLoader">
</div> </div>
<div class="ui-g-12 ui-md-4"> <div class="ui-g-12 ui-md-4" *ngIf="subjectPlaceholderOptions.length">
<p-dropdown [(ngModel)]="subjectPlaceholder" name="SubjectOption{{messageTemplate.ObjectID}}" <div class="header-select custom-dropdown w-100">
[options]="subjectPlaceholderOptions" optionLabel="Description" <select2 [data]="subjectPlaceholderOptions" [value]="subjectPlaceholderOptions[0].id"
(onHide)="addPlaceholderInSubject()" [disabled]="showLoader"> (valueChanged)="addPlaceholderInSubject($event)"
</p-dropdown> [options]="options">
</select2>
</div>
</div> </div>
</div> </div>
<div class="ui-g form-group"> <div class="ui-g form-group">
...@@ -67,12 +63,12 @@ ...@@ -67,12 +63,12 @@
<label class="ui-g-12" style="padding-left: 0;">Please enter anchor text</label> <label class="ui-g-12" style="padding-left: 0;">Please enter anchor text</label>
<input pInputText name="contentLinkModal" type="text" class="ui-g-12" <input pInputText name="contentLinkModal" type="text" class="ui-g-12"
style="font-size:15px !important;height:25px !important;" [(ngModel)]="this.linkText" style="font-size:15px !important;height:25px !important;" [(ngModel)]="this.linkText"
id="overlay"> id="contentLinkModal">
<p-button class="ui-button-success" <p-button class="ui-button-success"
(click)="addAnchorText(true); contentLinkModal.hide()">Add (click)="addAnchorText(true)">Add
</p-button> </p-button>
<p-button class="ui-button-danger" <p-button class="ui-button-danger"
(click)="addAnchorText(false); contentLinkModal.hide()">Cancel (click)="addAnchorText(false)">Cancel
</p-button> </p-button>
</p-overlayPanel> </p-overlayPanel>
</div> </div>
......
...@@ -30,10 +30,10 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -30,10 +30,10 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
deletedObjs; deletedObjs;
messageTemplate = new MessageTemplateModel(); messageTemplate = new MessageTemplateModel();
messageTemplateTypes: Array<TemplateTypeEnum>; messageTemplateTypes: Array<TemplateTypeEnum> = [];
subjectPlaceholderOptions: Array<PlaceholderOptionsEnum>; subjectPlaceholderOptions: Array<PlaceholderOptionsEnum> = [];
contentPlaceholderOptions: Array<PlaceholderOptionsEnum>; contentPlaceholderOptions: Array<PlaceholderOptionsEnum> = [];
ContentPlaceholderOptionsEnum: Array<PlaceholderOptionsEnum>; ContentPlaceholderOptionsEnum: Array<PlaceholderOptionsEnum> = [];
subjectPlaceholder: PlaceholderOptionsEnum; subjectPlaceholder: PlaceholderOptionsEnum;
contentPlaceholder: PlaceholderOptionsEnum; contentPlaceholder: PlaceholderOptionsEnum;
contentCursorPoint; contentCursorPoint;
...@@ -41,6 +41,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -41,6 +41,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
linkText = ''; linkText = '';
showLoader = false; showLoader = false;
editMode = false; editMode = false;
options = {minimumResultsForSearch: Infinity};
constructor( constructor(
private router: Router, private router: Router,
...@@ -62,6 +63,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -62,6 +63,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
this.utilsService.resetCounter(); this.utilsService.resetCounter();
this.getPlaceholderOptions(); this.getPlaceholderOptions();
if (!this.adminPortalLayoutService.userData) { if (!this.adminPortalLayoutService.userData) {
this.subscriptions.push(this.adminPortalLayoutService.userDataUpdated this.subscriptions.push(this.adminPortalLayoutService.userDataUpdated
.subscribe( .subscribe(
...@@ -70,6 +72,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -70,6 +72,7 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
} }
)); ));
} }
this.startComponent(); this.startComponent();
} }
...@@ -78,7 +81,17 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -78,7 +81,17 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
this.subscriptions.push(this.appService.getMessageTemplateTypeEnum() this.subscriptions.push(this.appService.getMessageTemplateTypeEnum()
.subscribe( .subscribe(
data => { data => {
if (this.createdExists()) {
return;
}
this.messageTemplateTypes = data; this.messageTemplateTypes = data;
this.messageTemplateTypes.map((elem, index) => {
elem.id = index;
elem.text = elem.Description;
});
this.subscriptions.push(this.activatedRoute.params this.subscriptions.push(this.activatedRoute.params
.subscribe( .subscribe(
(params: Params) => { (params: Params) => {
...@@ -155,37 +168,56 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -155,37 +168,56 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
addAnchorText(show: boolean): void { addAnchorText(show: boolean): void {
if (show) { if (!show || this.linkText === '') {
const delta = { this.contentLinkModal.hide();
ops: [
{retain: this.contentCursorPoint}, return;
{insert: this.contentPlaceholder.Placeholder, attributes: {link: this.linkText}} }
]
}; const delta = {
ops: [
{retain: this.contentCursorPoint > 0 ? this.contentCursorPoint : this.contentCursorPoint + 1},
{insert: this.contentPlaceholder.Placeholder, attributes: {link: this.linkText}}
]
};
if (this.contentCursorPoint === 0) {
this.messageContentEditor.getQuill()
.insertText(this.contentCursorPoint, ' ');
this.contentCursorPoint++;
}
try {
this.messageContentEditor.getQuill() this.messageContentEditor.getQuill()
.updateContents(delta); .updateContents(delta);
} else { } catch (e) {
this.linkText = ''; this.utilsService.handleError(e);
} }
this.linkText = '';
this.contentLinkModal.hide();
} }
addPlaceholderInMessageContent($event): void { addPlaceholderInMessageContent($event): void {
if (typeof this.contentCursorPoint === 'number') { if (!this.contentPlaceholder || !this.contentPlaceholder.Value) {
return;
}
if (this.emailTemplateType()) { if (typeof this.contentCursorPoint !== 'number') {
if (this.contentPlaceholder.IsLink) { return;
this.contentLinkModal.toggle($event); }
} else {
this.messageContentEditor.getQuill() if (this.emailTemplateType()) {
.insertText(this.contentCursorPoint, this.contentPlaceholder.Placeholder); if (this.contentPlaceholder.IsLink) {
} this.contentLinkModal.toggle($event);
} else { } else {
const textarea: HTMLTextAreaElement = document.getElementById('messageContentTxtAreaId') as HTMLTextAreaElement; this.messageContentEditor.getQuill()
this.setValueAndFocus(textarea, 'messageContentTxtArea', this.contentPlaceholder.Placeholder); .insertText(this.contentCursorPoint, this.contentPlaceholder.Placeholder);
} }
} else {
const textarea: HTMLTextAreaElement = document.getElementById('messageContentTxtAreaId') as HTMLTextAreaElement;
this.setValueAndFocus(textarea, 'messageContentTxtArea', this.contentPlaceholder.Placeholder);
} }
} }
...@@ -199,10 +231,13 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -199,10 +231,13 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
return title; return title;
} }
storeMessageContent(): void { storeMessageContent($event): void {
if (!$event.data[0]) {
return;
}
this.messageTemplate.TemplateType = $event.data[0];
if (this.messageTemplate.MessageContent !== undefined) { if (this.messageTemplate.MessageContent !== undefined) {
if (this.messageTemplate.TemplateType.Description === 'SMS') { if (this.messageTemplate.TemplateType.Description === 'SMS') {
this.temporaryMessageContent = this.messageTemplate.MessageContent; this.temporaryMessageContent = this.messageTemplate.MessageContent;
this.messageTemplate.MessageContent = this.showPlainText(this.temporaryMessageContent); this.messageTemplate.MessageContent = this.showPlainText(this.temporaryMessageContent);
...@@ -210,24 +245,24 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -210,24 +245,24 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
this.messageTemplate.MessageContent = this.temporaryMessageContent !== '' ? this.temporaryMessageContent this.messageTemplate.MessageContent = this.temporaryMessageContent !== '' ? this.temporaryMessageContent
: this.messageTemplate.MessageContent; : this.messageTemplate.MessageContent;
} }
} }
if (this.ContentPlaceholderOptionsEnum) { if (this.ContentPlaceholderOptionsEnum) {
if (this.emailTemplateType()) { if (this.emailTemplateType()) {
this.contentPlaceholderOptions = this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForContent); this.contentPlaceholderOptions = this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForContent ||
option.Value === null);
} else { } else {
this.contentPlaceholderOptions = this.ContentPlaceholderOptionsEnum this.contentPlaceholderOptions = this.ContentPlaceholderOptionsEnum
.filter(option => option.ShowForContent && option.Value !== 'JOB_LINK'); .filter(option => option.ShowForContent && option.Value !== 'JOB_LINK' || option.Value === null);
} }
} }
this.setInputListener(); this.setInputListener();
} }
addPlaceholderInSubject(): void { addPlaceholderInSubject($event): void {
if (this.emailTemplateType()) { this.subjectPlaceholder = $event.data[0];
if (this.emailTemplateType() && this.subjectPlaceholder && this.subjectPlaceholder.Value) {
const input: HTMLInputElement = document.getElementById('subjectInputId') as HTMLInputElement; const input: HTMLInputElement = document.getElementById('subjectInputId') as HTMLInputElement;
this.setValueAndFocus(input, 'subjectInput', this.subjectPlaceholder.Placeholder); this.setValueAndFocus(input, 'subjectInput', this.subjectPlaceholder.Placeholder);
} }
...@@ -294,8 +329,22 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -294,8 +329,22 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
this.subscriptions.push(this.appService.getPlaceholderOptionsEnum() this.subscriptions.push(this.appService.getPlaceholderOptionsEnum()
.subscribe(options => { .subscribe(options => {
this.ContentPlaceholderOptionsEnum = options; this.ContentPlaceholderOptionsEnum = options;
this.contentPlaceholderOptions = this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForContent); this.contentPlaceholderOptions =
this.subjectPlaceholderOptions = this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForSubject); this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForContent || option.Value === null)
.map((elem, index) => {
elem.id = index;
elem.text = elem.Description;
return elem;
});
this.subjectPlaceholderOptions =
this.ContentPlaceholderOptionsEnum.filter(option => option.ShowForSubject || option.Value === null)
.map((elem, index) => {
elem.id = index;
elem.text = elem.Description;
return elem;
});
}) })
); );
} }
...@@ -333,4 +382,8 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni ...@@ -333,4 +382,8 @@ export class EditMessageTemplateComponent extends BaseComponent implements OnIni
} }
}, 0); }, 0);
} }
createdExists(): boolean {
return Object.keys(this.createdObjs).length > 0;
}
} }
...@@ -19,14 +19,20 @@ export class SelectTwoComponent { ...@@ -19,14 +19,20 @@ export class SelectTwoComponent {
} }
ngOnInit(): void { ngOnInit(): void {
this.data.map(elem => { this.options = {minimumResultsForSearch: Infinity};
elem.id = elem.ObjectID;
if (!this.data) {
return;
}
this.data.map((elem, index) => {
elem.id = elem.ObjectID ? elem.ObjectID : index;
elem.text = elem[this.fieldLabel]; elem.text = elem[this.fieldLabel];
return elem; return elem;
}); });
this.selectedData = this.data[0] ? this.data[0].ObjectID : '';
this.options = {minimumResultsForSearch: Infinity}; this.selectedData = this.data[0] ? this.data[0].id : '';
} }
} }
...@@ -7,4 +7,6 @@ export class PlaceholderOptionsEnum { ...@@ -7,4 +7,6 @@ export class PlaceholderOptionsEnum {
ShowForSubject: boolean; ShowForSubject: boolean;
ShowForContent: boolean; ShowForContent: boolean;
IsLink: boolean; IsLink: boolean;
id: number;
text: string;
} }
...@@ -3,4 +3,6 @@ export class TemplateTypeEnum { ...@@ -3,4 +3,6 @@ export class TemplateTypeEnum {
Value: string; Value: string;
Description: string; Description: string;
Disabled: boolean; Disabled: boolean;
id: number;
text: string;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment