Included preview for new campaign

This commit is contained in:
2019-05-11 16:17:19 +08:00
parent 8071c7d1c0
commit d606cc129b
8 changed files with 60 additions and 26 deletions

View File

@@ -158,7 +158,7 @@ func (tapit *Tapit) createCampaign(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Bad request", 400) http.Error(w, "Bad request", 400)
return return
} }
if newCampaignJson.Name != "" { if newCampaignJson.Name != "" && newCampaignJson.FromNumber != "" && newCampaignJson.PhonebookId != 0 && newCampaignJson.TextTemplateId != 0 {
var newCampaign Campaign var newCampaign Campaign
// populate details to be used later // populate details to be used later
@@ -226,7 +226,7 @@ func (tapit *Tapit) createCampaign(w http.ResponseWriter, r *http.Request) {
notifyPopup(w, r, "success", "Successfully added new campaign", newCampaignJson) notifyPopup(w, r, "success", "Successfully added new campaign", newCampaignJson)
return return
} else { } else {
notifyPopup(w, r, "failure", "Please enter the campaign name", nil) notifyPopup(w, r, "failure", "Please enter campaign details", nil)
return return
} }
} }

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -22,15 +22,15 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="phonebook-select">Phonebook</label> <label for="phonebook-select">Phonebook</label>
<select class="form-control" [(ngModel)]="newCampaign.phonebookId" id="phonebook-select"> <select class="form-control" (change)="updatePreviews()" [(ngModel)]="newCampaign.phonebookId" id="phonebook-select">
<option></option> <option [ngValue]="0"></option>
<option *ngFor="let phonebook of phonebookService.phonebooks" [ngValue]="phonebook.id">{{phonebook.name}}: Size {{phonebook.size}}</option> <option *ngFor="let phonebook of phonebookService.phonebooks" [ngValue]="phonebook.id">{{phonebook.name}}: Size {{phonebook.size}}</option>
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="text-template-select">Text Template</label> <label for="text-template-select">Text Template</label>
<select class="form-control" [(ngModel)]="newCampaign.textTemplateId" id="text-template-select"> <select class="form-control" (change)="updatePreviews()" [(ngModel)]="newCampaign.textTemplateId" id="text-template-select">
<option></option> <option [ngValue]="0"></option>
<option *ngFor="let textTemplate of textTemplateService.textTemplates" [ngValue]="textTemplate.id">{{textTemplate.name}}</option> <option *ngFor="let textTemplate of textTemplateService.textTemplates" [ngValue]="textTemplate.id">{{textTemplate.name}}</option>
</select> </select>
</div> </div>
@@ -39,7 +39,14 @@
<div class="col-12 d-flex"> <div class="col-12 d-flex">
<button type="button" (click)="submitNewCampaignRun()" class="btn btn-primary mr-2">Start</button> <button type="button" (click)="submitNewCampaignRun()" class="btn btn-primary mr-2">Start</button>
<button type="button" (click)="submitNewCampaign()" class="btn btn-secondary ml-2">Save</button> <button type="button" (click)="submitNewCampaign()" class="btn btn-secondary ml-2">Save</button>
<button type="button" *ngIf="router.url !== '/campaign/new'" (click)="askDelete()" class="btn btn-danger ml-auto" data-toggle="modal" data-target="#completeModal">Delete</button>
</div> </div>
</div> </div>
<div class="form-group mt-4">
<label for="template-preview" class="pr-2 mt-auto mb-auto">Template</label>
<textarea class="form-control flex" [(ngModel)]="templateStr" id="template-preview" rows="4" disabled></textarea>
</div>
<div class="form-group mt-2">
<label for="new-text-preview" class="pr-2 mt-auto mb-auto">Preview (First Entry)</label>
<textarea class="form-control flex" [(ngModel)]="previewStr" id="new-text-preview" rows="4" disabled></textarea>
</div>
</div> </div>

View File

@@ -21,6 +21,9 @@ export class CampaignNewComponent implements OnInit {
newCampaign: Campaign = new Campaign(); newCampaign: Campaign = new Campaign();
templateStr = '';
previewStr = '';
submitNewCampaign() { submitNewCampaign() {
this.campaignService.addCampaign(this.newCampaign); this.campaignService.addCampaign(this.newCampaign);
} }
@@ -29,7 +32,30 @@ export class CampaignNewComponent implements OnInit {
this.campaignService.addCampaignRun(this.newCampaign); this.campaignService.addCampaignRun(this.newCampaign);
} }
updatePreviews() {
if (this.newCampaign.textTemplateId !== 0 && this.newCampaign.phonebookId !== 0) {
this.phonebookService.getPhonebookObs(this.newCampaign.phonebookId).subscribe(phonebook => {
this.textTemplateService.getTextTemplateObs(this.newCampaign.textTemplateId).subscribe(textTemplate => {
this.templateStr = textTemplate.templateStr;
let tempStr = this.templateStr;
tempStr = tempStr.replace('{firstName}', phonebook.records[0].firstName);
tempStr = tempStr.replace('{lastName}', phonebook.records[0].lastName);
tempStr = tempStr.replace('{alias}', phonebook.records[0].alias);
tempStr = tempStr.replace('{phoneNumber}', phonebook.records[0].phoneNumber);
this.previewStr = tempStr;
});
});
} else {
this.templateStr = '';
this.previewStr = '';
}
}
ngOnInit() { ngOnInit() {
this.newCampaign.textTemplateId = 0;
this.newCampaign.phonebookId = 0;
} }
} }

View File

@@ -50,6 +50,7 @@ export class TextTemplateNewComponent implements OnInit {
this.id = parseInt(params[idParam], 10); this.id = parseInt(params[idParam], 10);
this.textTemplateService.getTextTemplateObs(this.id).subscribe(currTT => { this.textTemplateService.getTextTemplateObs(this.id).subscribe(currTT => {
this.newTextTemplate = currTT; this.newTextTemplate = currTT;
this.updatePreview();
}); });
}); });
} }