Commit 6db877d0 by GD-A-150752

bug-fixes

parent 86c3a28a
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="ui-g ui-fluid"> <div class="ui-g ui-fluid">
<div class="page-title mb-0"> <div class="page-title mb-0">
<a [routerLink]="['/admin/list-message-templates']" class="arrow-btn-blue ml-0"> <a [routerLink]="['/admin/list-message-templates']" class="arrow-btn-blue ml-0">
<img src="/assets/images/arrow-left-prev_blue.svg"> <img src="assets/images/arrow-left-prev_blue.svg">
</a> </a>
{{editMode ? "Edit" : "Add"}} Message Template {{editMode ? "Edit" : "Add"}} Message Template
</div> </div>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="ui-g-12"> <div class="ui-g-12">
<div class="page-title mb-0"> <div class="page-title mb-0">
<a [routerLink]="['/admin/list-workflow-templates']" class="arrow-btn-blue ml-0"> <a [routerLink]="['/admin/list-workflow-templates']" class="arrow-btn-blue ml-0">
<img src="/assets/images/arrow-left-prev_blue.svg"> <img src="assets/images/arrow-left-prev_blue.svg">
</a> </a>
{{editMode ? "Edit" : "Add"}} Workflow Template {{editMode ? "Edit" : "Add"}} Workflow Template
</div> </div>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<div class="ui-g ui-fluid"> <div class="ui-g ui-fluid">
<div class="ui-g-12 ui-md-12"> <div class="ui-g-12 ui-md-12">
<p-panel *ngFor="let stage of preStages" [toggleable]="true" <p-panel *ngFor="let stage of preStages" [toggleable]="true"
toggler="header"> toggler="header" [collapsed]="true">
<p-header> <p-header>
<span class="ui-panel-title"> <span class="ui-panel-title">
{{getStageHeader(stage)}} {{getStageHeader(stage)}}
...@@ -44,7 +44,8 @@ ...@@ -44,7 +44,8 @@
</div> </div>
<div class="form-group ui-g-12"> <div class="form-group ui-g-12">
<label for="LandingButtonText">Button Text</label> <label for="LandingButtonText">Button Text</label>
<input [(ngModel)]="workflow.LandingButtonText" [disabled]="showLoader" class="form-control" <input [(ngModel)]="workflow.LandingButtonText" [disabled]="showLoader"
class="form-control"
fieldLabel="Landing Button Text" fieldLabel="Landing Button Text"
id="LandingButtonText" name="LandingButtonText" id="LandingButtonText" name="LandingButtonText"
required required
...@@ -55,7 +56,8 @@ ...@@ -55,7 +56,8 @@
</div> </div>
<div class="form-group ui-g-12"> <div class="form-group ui-g-12">
<label for="VerificationHeaderText">Header Text</label> <label for="VerificationHeaderText">Header Text</label>
<input [(ngModel)]="workflow.VerificationHeaderText" [disabled]="showLoader" class="form-control" <input [(ngModel)]="workflow.VerificationHeaderText" [disabled]="showLoader"
class="form-control"
fieldLabel="Verification Header Text" id="VerificationHeaderText" fieldLabel="Verification Header Text" id="VerificationHeaderText"
name="VerificationHeaderText" name="VerificationHeaderText"
required required
...@@ -64,51 +66,44 @@ ...@@ -64,51 +66,44 @@
<div class="work-belonging ui-g-12 mb-0"> <div class="work-belonging ui-g-12 mb-0">
<span class="calcField">Application</span> <span class="calcField">Application</span>
</div> </div>
<div class="criteria_section ui-g-12"> <div class="form-group ui-g-12">
<fieldset> <div class="ui-g">
<legend> <div class="ui-g-6">
<span class="calcField">Capture CV</span> <label for="CaptureCV">Capture CV</label>
<p-inputSwitch [(ngModel)]="workflow.CaptureCV" [disabled]="showLoader" <p-inputSwitch [(ngModel)]="workflow.CaptureCV" [disabled]="showLoader"
name="CaptureCV"> name="CaptureCV" id="CaptureCV">
</p-inputSwitch> </p-inputSwitch>
</legend>
<div *ngIf="workflow.CaptureCV" class="ui-g-12 ui-md-6">
<div class="ui-g-12 ui-md-4">
<label> Mandatory</label>
</div>
<div class="ui-g-12 ui-md-2">
<p-inputSwitch [(ngModel)]="workflow.IsCVMandatory"
[disabled]="showLoader"
name="IsCVMandatory">
</p-inputSwitch>
</div>
</div> </div>
</fieldset> <div class="ui-g-6" *ngIf="workflow.CaptureCV">
<label for="ThankYouSecondaryText">Mandatory</label>
<p-inputSwitch [(ngModel)]="workflow.IsCVMandatory"
[disabled]="showLoader"
name="IsCVMandatory" id="IsCVMandatory">
</p-inputSwitch>
</div>
</div>
</div> </div>
<div class="criteria_section ui-g-12"> <div class="form-group ui-g-12">
<fieldset> <div class="ui-g">
<legend> <div class="ui-g-6">
<span class="calcField">Capture Cover Letter</span> <label for="CaptureCL">Capture Cover Letter</label>
<p-inputSwitch [(ngModel)]="workflow.CaptureCL" [disabled]="showLoader" <p-inputSwitch [(ngModel)]="workflow.CaptureCL" [disabled]="showLoader"
name="CaptureCL"> name="CaptureCL" id="CaptureCL">
</p-inputSwitch> </p-inputSwitch>
</legend>
<div *ngIf="workflow.CaptureCL" class="ui-g-12 ui-md-6">
<div class="ui-g-12 ui-md-4">
<label> Mandatory</label>
</div>
<div class="ui-g-12 ui-md-2">
<p-inputSwitch [(ngModel)]="workflow.IsCLMandatory"
[disabled]="showLoader"
name="IsCLMandatory">
</p-inputSwitch>
</div>
</div> </div>
</fieldset> <div class="ui-g-6" *ngIf="workflow.CaptureCL">
<label for="IsCLMandatory">Mandatory</label>
<p-inputSwitch [(ngModel)]="workflow.IsCLMandatory"
[disabled]="showLoader"
name="IsCLMandatory" id="IsCLMandatory">
</p-inputSwitch>
</div>
</div>
</div> </div>
<div class="form-group ui-g-12"> <div class="form-group ui-g-12">
<label for="VerificationHeaderText">Button Text</label> <label for="VerificationHeaderText">Button Text</label>
<input [(ngModel)]="workflow.ApplicationButtonText" [disabled]="showLoader" class="form-control" <input [(ngModel)]="workflow.ApplicationButtonText" [disabled]="showLoader"
class="form-control"
fieldLabel="Application Button Text" fieldLabel="Application Button Text"
name="ApplicationButtonText" name="ApplicationButtonText"
required required
...@@ -154,7 +149,8 @@ ...@@ -154,7 +149,8 @@
<label for="JobOutlineButtonText">Button Text</label> <label for="JobOutlineButtonText">Button Text</label>
<input [(ngModel)]="workflow.JobOutlineButtonText" [disabled]="showLoader" <input [(ngModel)]="workflow.JobOutlineButtonText" [disabled]="showLoader"
class="form-control" class="form-control"
fieldLabel="Job Outline Button Text" id="JobOutlineButtonText" name="JobOutlineButtonText" fieldLabel="Job Outline Button Text" id="JobOutlineButtonText"
name="JobOutlineButtonText"
required required
tabindex="10" type="text"> tabindex="10" type="text">
</div> </div>
...@@ -178,8 +174,10 @@ ...@@ -178,8 +174,10 @@
</div> </div>
<div (dndDrop)="onDrop($event, stage.Steps, stage.ObjectID)" <div (dndDrop)="onDrop($event, stage.Steps, stage.ObjectID)"
[class.disable-drop]="draggingId!=null && draggingId !== stage.ObjectID" dndDropzone> [class.disable-drop]="draggingId!=null && draggingId !== stage.ObjectID"
<div [hidden]="draggingId !== stage.ObjectID" dndPlaceholderRef style="background: #CCCCCC; border: 1px dashed #000; width: 50%; height: 53px"></div> dndDropzone>
<div [hidden]="draggingId !== stage.ObjectID" dndPlaceholderRef
style="background: #CCCCCC; border: 1px dashed #000; width: 50%; height: 53px"></div>
<div *ngFor="let step of stage.Steps" class="ui-g"> <div *ngFor="let step of stage.Steps" class="ui-g">
<div (dndEnd)="onDragEnd($event)" <div (dndEnd)="onDragEnd($event)"
(dndStart)="onDragStart(step, stage.Steps, stage.ObjectID)" (dndStart)="onDragStart(step, stage.Steps, stage.ObjectID)"
...@@ -187,11 +185,12 @@ ...@@ -187,11 +185,12 @@
class="ui-g-6" class="ui-g-6"
dndEffectAllowed="copy"> dndEffectAllowed="copy">
<div class="ui-g"> <div class="ui-g">
<div class="col-md-8"> <div class="col-md-8 interactive">
<h4>{{step.StepType.Description}}</h4> <h4>{{step.StepType.Description}}</h4>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<button (click)="removeStep(step, stage)" [disabled]="showLoader" icon="ui-icon-close" <button (click)="removeStep(step, stage)"
[disabled]="showLoader" icon="ui-icon-close"
pButton pButton
type="button"></button> type="button"></button>
</div> </div>
...@@ -225,7 +224,7 @@ ...@@ -225,7 +224,7 @@
</div> </div>
</div> </div>
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging" <p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging"
header="{{stageMessagesCount(stage)}}"> header="{{stageMessagesCount(stage)}}" class="messaging">
<div class="form-group row"> <div class="form-group row">
<div class="col-md-offset-9 col-md-3"> <div class="col-md-offset-9 col-md-3">
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging" <button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
...@@ -241,7 +240,7 @@ ...@@ -241,7 +240,7 @@
<h3>Withdrawal Process</h3> <h3>Withdrawal Process</h3>
</div> </div>
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12 mb-10"> <div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12 mb-10">
<div class="col-md-4"> <div class="col-md-3">
<label>&nbsp;</label> <label>&nbsp;</label>
<p-multiSelect [(ngModel)]="message.ApplicantSources" <p-multiSelect [(ngModel)]="message.ApplicantSources"
[disabled]="showLoader" [disabled]="showLoader"
...@@ -253,10 +252,11 @@ ...@@ -253,10 +252,11 @@
optionLabel="Description"> optionLabel="Description">
</p-multiSelect> </p-multiSelect>
</div> </div>
<div class="col-md-4"> <div class="col-md-2">
<label>After</label> <label>After</label>
<p-inputMask (change)="generateDelayString(message)" <p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)" (onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)"
(onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay" *ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay" [(ngModel)]="message.Delay"
[disabled]="showLoader" [disabled]="showLoader"
...@@ -270,25 +270,25 @@ ...@@ -270,25 +270,25 @@
<label>{{message.DelayString}}</label> <label>{{message.DelayString}}</label>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-1">
<label for="Variance{{message.ObjectID}}">+/-</label> <label for="Variance{{message.ObjectID}}">+/-</label>
<input [(ngModel)]="message.Variance" <input [(ngModel)]="message.Variance"
[disabled]="showLoader" [disabled]="showLoader"
class="form-control" id="Variance{{message.ObjectID}}" class="form-control" id="Variance{{message.ObjectID}}"
name="Variance{{message.ObjectID}}" type="text"> name="Variance{{message.ObjectID}}" type="text">
</div> </div>
</div> <div class="col-md-1">
<div class="col-lg-12 col-md-12 flex-center"> <label title="Business Hours only" class="mb-0">Business Hours
<div class="col-md-4"> only</label>
<label class="mb-0">Business Hours only</label>
<p-checkbox [(ngModel)]="message.BusinessHoursOnly" <p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true" binary="true"
name="BusinessHoursOnly{{message.ObjectID}}"> name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox> </p-checkbox>
</div> </div>
<div class="col-md-6"> <div class="col-md-4">
<label>Send</label> <label>Send</label>
<p-dropdown [(ngModel)]="message.MessageTemplate" [options]="messageTemplates" <p-dropdown [(ngModel)]="message.MessageTemplate"
[options]="messageTemplates"
filter="true" filter="true"
name="messageTemplate{{message.ObjectID}}" name="messageTemplate{{message.ObjectID}}"
optionLabel="TemplateName"> optionLabel="TemplateName">
...@@ -301,17 +301,20 @@ ...@@ -301,17 +301,20 @@
style="position: relative;height: 25px;"> style="position: relative;height: 25px;">
<i class="{{getMessageClass(selectedMsg.value)}}"></i> <i class="{{getMessageClass(selectedMsg.value)}}"></i>
<div <div
class="dropdown-text">{{selectedMsg.label}}</div> class="dropdown-text">{{selectedMsg.label}}</div>
</div> </div>
</ng-template> </ng-template>
</p-dropdown> </p-dropdown>
</div> </div>
<div class="col-md-2 text-center"> <div class="col-md-1 text-center">
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings" <button (click)="configureMessageTemplate(message)"
[disabled]="showLoader" icon="ui-icon-settings"
pButton pButton
type="button"> type="button">
</button> </button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader" icon="ui-icon-close" <button (click)="removeMessage(message, stage)"
*ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader"
icon="ui-icon-close"
pButton type="button"> pButton type="button">
</button> </button>
</div> </div>
...@@ -340,20 +343,20 @@ ...@@ -340,20 +343,20 @@
</div> </div>
<div (dndDrop)="onDrop($event, genericStages, 000)" <div (dndDrop)="onDrop($event, genericStages, 000)"
class="ui-g ui-fluid" dndDropzone> class="ui-g ui-fluid" dndDropzone>
<div [hidden]="draggingId !== 000" dndPlaceholderRef style="background: #CCCCCC; border: 1px dashed #000; width: 100%; height: 53px"></div> <div [hidden]="draggingId !== 000" dndPlaceholderRef
style="background: #CCCCCC; border: 1px dashed #000; width: 100%; height: 53px"></div>
<div (dndEnd)="onDragEnd($event)" <div (dndEnd)="onDragEnd($event)"
(dndStart)="onDragStart(stage, genericStages, 000)" (dndStart)="onDragStart(stage, genericStages, 000)"
*ngFor="let stage of genericStages" *ngFor="let stage of genericStages"
[dndDraggable]="stage" [dndDraggable]="stage"
class="ui-g-12 ui-md-12" class="ui-g-12 ui-md-12"
dndEffectAllowed="copy" dndEffectAllowed="copy"
toggler="header" toggler="header">
>
<p-panel [toggleable]="true" #panel> <p-panel [toggleable]="true" #panel [collapsed]="true">
<p-header> <p-header>
<span (click)="toggleInput($event, 'StageName'+stage.SortOrder, true)" *ngIf="showLabel('StageName'+stage.SortOrder)" <span (click)="toggleInput($event, 'StageName'+stage.SortOrder, true)"
*ngIf="showLabel('StageName'+stage.SortOrder)"
class="ui-panel-title"> class="ui-panel-title">
{{getStageHeader(stage)}} {{getStageHeader(stage)}}
</span> </span>
...@@ -383,8 +386,10 @@ ...@@ -383,8 +386,10 @@
No steps added... No steps added...
</div> </div>
<div (dndDrop)="onDrop($event, stage.Steps, stage.ObjectID)" <div (dndDrop)="onDrop($event, stage.Steps, stage.ObjectID)"
[class.disable-drop]="draggingId!=null && draggingId !== stage.ObjectID" dndDropzone> [class.disable-drop]="draggingId!=null && draggingId !== stage.ObjectID"
<div [hidden]="draggingId !== stage.ObjectID" dndPlaceholderRef style="background: #CCCCCC; border: 1px dashed #000; width: 50%; height: 53px"></div> dndDropzone>
<div [hidden]="draggingId !== stage.ObjectID" dndPlaceholderRef
style="background: #CCCCCC; border: 1px dashed #000; width: 50%; height: 53px"></div>
<div *ngFor="let step of stage.Steps" class="ui-g"> <div *ngFor="let step of stage.Steps" class="ui-g">
<div (dndEnd)="onDragEnd($event)" <div (dndEnd)="onDragEnd($event)"
(dndStart)="onDragStart(step, stage.Steps, stage.ObjectID)" (dndStart)="onDragStart(step, stage.Steps, stage.ObjectID)"
...@@ -392,11 +397,12 @@ ...@@ -392,11 +397,12 @@
class="ui-g-6" class="ui-g-6"
dndEffectAllowed="copy"> dndEffectAllowed="copy">
<div class="ui-g"> <div class="ui-g">
<div class="col-md-8"> <div class="col-md-8 interactive">
<h4>{{step.StepType.Description}}</h4> <h4>{{step.StepType.Description}}</h4>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<button (click)="removeStep(step, stage)" [disabled]="showLoader" icon="ui-icon-close" <button (click)="removeStep(step, stage)"
[disabled]="showLoader" icon="ui-icon-close"
pButton pButton
type="button"></button> type="button"></button>
</div> </div>
...@@ -430,7 +436,7 @@ ...@@ -430,7 +436,7 @@
</div> </div>
</div> </div>
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging" <p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging"
header="{{stageMessagesCount(stage)}}"> header="{{stageMessagesCount(stage)}}" class="messaging">
<div class="form-group row"> <div class="form-group row">
<div class="col-md-offset-9 col-md-3"> <div class="col-md-offset-9 col-md-3">
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging" <button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
...@@ -448,10 +454,11 @@ ...@@ -448,10 +454,11 @@
<h3>Withdrawal Process</h3> <h3>Withdrawal Process</h3>
</div> </div>
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12"> <div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-4"> <div class="col-md-2">
<label>After</label> <label>After</label>
<p-inputMask (change)="generateDelayString(message)" <p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)" (onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)"
(onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay" *ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay" [(ngModel)]="message.Delay"
[disabled]="showLoader" [disabled]="showLoader"
...@@ -465,25 +472,24 @@ ...@@ -465,25 +472,24 @@
<label>{{message.DelayString}}</label> <label>{{message.DelayString}}</label>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-2">
<label for="Variance{{message.ObjectID}}">+/-</label> <label for="Variance{{message.ObjectID}}">+/-</label>
<input [(ngModel)]="message.Variance" <input [(ngModel)]="message.Variance"
[disabled]="showLoader" [disabled]="showLoader"
[id]="'Variance'+message.ObjectID" class="form-control" [id]="'Variance'+message.ObjectID" class="form-control"
name="Variance{{message.ObjectID}}" type="text"> name="Variance{{message.ObjectID}}" type="text">
</div> </div>
<div class="col-md-4"> <div class="col-md-2">
<label>Business Hours only</label> <label>Business Hours only</label>
<p-checkbox [(ngModel)]="message.BusinessHoursOnly" <p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true" binary="true"
name="BusinessHoursOnly{{message.ObjectID}}"> name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox> </p-checkbox>
</div> </div>
</div> <div class="col-md-5">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-8">
<label>Send</label> <label>Send</label>
<p-dropdown (onChange)="showMessageTemplateDialog($event, message)" [(ngModel)]="message.MessageTemplate" <p-dropdown (onChange)="showMessageTemplateDialog($event, message)"
[(ngModel)]="message.MessageTemplate"
[autoDisplayFirst]="false" [autoDisplayFirst]="false"
[options]="messageTemplates" [options]="messageTemplates"
filter="true" filter="true"
...@@ -492,30 +498,31 @@ ...@@ -492,30 +498,31 @@
<ng-template let-message pTemplate="selectedItem"> <ng-template let-message pTemplate="selectedItem">
<i class="{{getMessageClass(message.value)}}"></i> <i class="{{getMessageClass(message.value)}}"></i>
<span <span
class="dropdown-text">{{message.label}}</span> class="dropdown-text">{{message.label}}</span>
</ng-template> </ng-template>
<ng-template let-selectedMsg pTemplate="item"> <ng-template let-selectedMsg pTemplate="item">
<div class="ui-helper-clearfix" <div class="ui-helper-clearfix"
style="position: relative;height: 25px;"> style="position: relative;height: 25px;">
<i class="{{getMessageClass(selectedMsg.value)}}"></i> <i class="{{getMessageClass(selectedMsg.value)}}"></i>
<div <div
class="dropdown-text">{{selectedMsg.label}}</div> class="dropdown-text">{{selectedMsg.label}}</div>
</div> </div>
</ng-template> </ng-template>
</p-dropdown> </p-dropdown>
</div> </div>
<div class="col-md-4 text-center"> <div class="col-md-1 text-center">
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings" <button (click)="configureMessageTemplate(message)"
[disabled]="showLoader" icon="ui-icon-settings"
pButton pButton
type="button"></button> type="button"></button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader" <button (click)="removeMessage(message, stage)"
*ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader"
icon="ui-icon-close" icon="ui-icon-close"
pButton pButton
type="button"></button> type="button"></button>
</div> </div>
</div> </div>
</div> </div>
</p-panel> </p-panel>
<!-- End displaying messages --> <!-- End displaying messages -->
<hr/> <hr/>
...@@ -536,7 +543,8 @@ ...@@ -536,7 +543,8 @@
<div class="ui-g ui-fluid"> <div class="ui-g ui-fluid">
<div class="ui-g-12"> <div class="ui-g-12">
<!-- Start Post Stages --> <!-- Start Post Stages -->
<p-panel *ngFor="let stage of postStages" [toggleable]="true" toggler="header"> <p-panel *ngFor="let stage of postStages" [toggleable]="true" toggler="header"
[collapsed]="true">
<p-header> <p-header>
<span class="ui-panel-title"> <span class="ui-panel-title">
{{getStageHeader(stage)}} {{getStageHeader(stage)}}
...@@ -566,7 +574,7 @@ ...@@ -566,7 +574,7 @@
</div> </div>
</div> </div>
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging" <p-panel [collapsed]="!stage.UseMessaging" [toggleable]="stage.UseMessaging"
header="{{stageMessagesCount(stage)}}"> header="{{stageMessagesCount(stage)}}" class="messaging">
<div class="form-group row"> <div class="form-group row">
<div class="col-md-offset-9 col-md-3"> <div class="col-md-offset-9 col-md-3">
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging" <button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
...@@ -582,10 +590,11 @@ ...@@ -582,10 +590,11 @@
<h3>Withdrawal Process</h3> <h3>Withdrawal Process</h3>
</div> </div>
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12"> <div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-4"> <div class="col-md-2">
<label>After</label> <label>After</label>
<p-inputMask (change)="generateDelayString(message)" <p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)" (onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)"
(onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay" *ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay" [(ngModel)]="message.Delay"
[disabled]="showLoader" [disabled]="showLoader"
...@@ -599,25 +608,24 @@ ...@@ -599,25 +608,24 @@
<label>{{message.DelayString}}</label> <label>{{message.DelayString}}</label>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-2">
<label for="Variance{{message.ObjectID}}">+/-</label> <label for="Variance{{message.ObjectID}}">+/-</label>
<input [(ngModel)]="message.Variance" <input [(ngModel)]="message.Variance"
[disabled]="showLoader" [disabled]="showLoader"
[id]="'Variance'+message.ObjectID" class="form-control" [id]="'Variance'+message.ObjectID" class="form-control"
name="Variance{{message.ObjectID}}" type="text"> name="Variance{{message.ObjectID}}" type="text">
</div> </div>
<div class="col-md-4"> <div class="col-md-5">
<label>Business Hours only</label> <label>Business Hours only</label>
<p-checkbox [(ngModel)]="message.BusinessHoursOnly" <p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true" binary="true"
name="BusinessHoursOnly{{message.ObjectID}}"> name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox> </p-checkbox>
</div> </div>
</div> <div class="col-md-5">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-8">
<label>Send</label> <label>Send</label>
<p-dropdown [(ngModel)]="message.MessageTemplate" [options]="messageTemplates" <p-dropdown [(ngModel)]="message.MessageTemplate"
[options]="messageTemplates"
filter="true" filter="true"
name="messageTemplate{{message.ObjectID}}" name="messageTemplate{{message.ObjectID}}"
optionLabel="TemplateName"> optionLabel="TemplateName">
...@@ -630,16 +638,19 @@ ...@@ -630,16 +638,19 @@
style="position: relative;height: 25px;"> style="position: relative;height: 25px;">
<i class="{{getMessageClass(selectedMsg.value)}}"></i> <i class="{{getMessageClass(selectedMsg.value)}}"></i>
<div <div
class="dropdown-text">{{selectedMsg.label}}</div> class="dropdown-text">{{selectedMsg.label}}</div>
</div> </div>
</ng-template> </ng-template>
</p-dropdown> </p-dropdown>
</div> </div>
<div class="col-md-4 text-center"> <div class="col-md-1 text-center">
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings" <button (click)="configureMessageTemplate(message)"
[disabled]="showLoader" icon="ui-icon-settings"
pButton pButton
type="button"></button> type="button"></button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader" icon="ui-icon-close" <button (click)="removeMessage(message, stage)"
*ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader"
icon="ui-icon-close"
pButton pButton
type="button"></button> type="button"></button>
</div> </div>
...@@ -658,15 +669,18 @@ ...@@ -658,15 +669,18 @@
<div class="ui-g ui-fluid"> <div class="ui-g ui-fluid">
<div class="ui-g-12 ui-md-12"> <div class="ui-g-12 ui-md-12">
<div class="text-center form-group"> <div class="text-center form-group">
<button [disabled]="showLoader" class="btn btn-primary largeBtn greyBtn" routerLink="/admin/list-message-templates" <button [disabled]="showLoader" class="btn btn-primary largeBtn greyBtn"
routerLink="/admin/list-workflow-templates"
type="button" type="button"
value="Cancel">Cancel value="Cancel">Cancel
</button> </button>
<button (click)="saveWorkflowTemplate()" *ngIf="showSaveBtn()" [disabled]="showLoader" class="btn btn-primary largeBtn" <button (click)="saveWorkflowTemplate()" *ngIf="showSaveBtn()" [disabled]="showLoader"
class="btn btn-primary largeBtn"
type="button" value="Save"> type="button" value="Save">
Save Save
</button> </button>
<button (click)="saveWorkflowTemplate(true)" *ngIf="showSaveCopyBtn()" [disabled]="showLoader" <button (click)="saveWorkflowTemplate(true)" *ngIf="showSaveCopyBtn()"
[disabled]="showLoader"
class="btn btn-primary largeBtn" class="btn btn-primary largeBtn"
type="button" value="Save As a Copy"> type="button" value="Save As a Copy">
Save As a Copy Save As a Copy
......
...@@ -69,16 +69,23 @@ p-inputMask { ...@@ -69,16 +69,23 @@ p-inputMask {
} }
.ml-0 { .ml-0 {
margin-left: 0px; margin-left: 0;
} }
.templateName { .templateName {
font-size: 24px; font-size: 24px;
} }
.interactive {
cursor: pointer;
}
label { label {
font-family: "Usual-Regular"; font-family: "Usual-Regular";
font-weight: 300; font-weight: 300;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
} }
.calcField { .calcField {
......
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms'; import { NgForm } from '@angular/forms';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { DndDropEvent } from 'ngx-drag-drop';
import { ConfirmationService } from 'primeng/api'; import { ConfirmationService } from 'primeng/api';
import { Dialog } from 'primeng/dialog'; import { Dialog } from 'primeng/dialog';
import { combineLatest } from 'rxjs/observable/combineLatest'; import { combineLatest } from 'rxjs/observable/combineLatest';
...@@ -21,7 +22,6 @@ import { UtilsService } from '../../oneit/services/utils.service'; ...@@ -21,7 +22,6 @@ import { UtilsService } from '../../oneit/services/utils.service';
import { AdminPortalLayoutService } from '../admin-portal/admin-portal-layout/admin-portal-layout.service'; import { AdminPortalLayoutService } from '../admin-portal/admin-portal-layout/admin-portal-layout.service';
import { BaseComponent } from '../base/base.component'; import { BaseComponent } from '../base/base.component';
import { EditWorkflowTemplateService } from './edit-workflow-template.service'; import { EditWorkflowTemplateService } from './edit-workflow-template.service';
import { DndDropEvent } from "ngx-drag-drop";
@Component({ @Component({
selector: 'app-edit-workflow-template', selector: 'app-edit-workflow-template',
...@@ -51,18 +51,20 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -51,18 +51,20 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
showLoader = false; showLoader = false;
editMode = false; editMode = false;
displayNewMessageTemplate = false; displayNewMessageTemplate = false;
draggingItem: any = null;
draggingId = null;
selectedTemplateID = null; selectedTemplateID = null;
selectedMessageTemplate = null; // object id of type WorkflowMessageModel selectedMessageTemplate = null; // object id of type WorkflowMessageModel
constructor( constructor(
private router: Router, private router: Router,
private activatedRoute: ActivatedRoute, private activatedRoute: ActivatedRoute,
private utilsService: UtilsService, private utilsService: UtilsService,
private saveService: SaveService, private saveService: SaveService,
private appService: AppService, private appService: AppService,
private editWorkflowTemplateService: EditWorkflowTemplateService, private editWorkflowTemplateService: EditWorkflowTemplateService,
private adminPortalLayoutService: AdminPortalLayoutService, private adminPortalLayoutService: AdminPortalLayoutService,
private confirmationService: ConfirmationService private confirmationService: ConfirmationService
) { ) {
super(utilsService); super(utilsService);
} }
...@@ -73,53 +75,53 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -73,53 +75,53 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.initComponent(); this.initComponent();
} else { } else {
this.subscriptions.push(this.adminPortalLayoutService.userDataUpdated this.subscriptions.push(this.adminPortalLayoutService.userDataUpdated
.first() .first()
.subscribe(() => { .subscribe(() => {
this.initComponent(); this.initComponent();
})); }));
} }
} }
initComponent(): void { initComponent(): void {
this.subscriptions.push(this.activatedRoute.params this.subscriptions.push(this.activatedRoute.params
.subscribe((params: Params) => { .subscribe((params: Params) => {
if (params.id && params.id !== '0') { if (params.id && params.id !== '0') {
this.editMode = true; this.editMode = true;
} }
this.subscriptions.push( this.subscriptions.push(
combineLatest( combineLatest(
this.appService.getTypes('StageTypes'), this.appService.getTypes('StageTypes'),
this.appService.getTypes('StepTypes', true, 'Please Select'), this.appService.getTypes('StepTypes', true, 'Please Select'),
this.appService.getTypes('ResponseActions'), this.appService.getTypes('ResponseActions'),
this.appService.getTypes('ApplicantSources') this.appService.getTypes('ApplicantSources')
) )
.subscribe(response => { .subscribe(response => {
this.stageTypes = response[0]; this.stageTypes = response[0];
this.stepTypeOptions = response[1]; this.stepTypeOptions = response[1];
if (!this.adminPortalLayoutService.getHiringTeamID().HasDiversity) { if (!this.adminPortalLayoutService.getHiringTeamID().HasDiversity) {
this.stepTypeOptions = this.stepTypeOptions.filter(type => type.Value !== 'DIVERSITY'); this.stepTypeOptions = this.stepTypeOptions.filter(type => type.Value !== 'DIVERSITY');
} }
this.responseActions = response[2]; this.responseActions = response[2];
this.applicantSources = response[3]; this.applicantSources = response[3];
if (params.id && params.id !== '0') { if (params.id && params.id !== '0') {
this.getWorkflowTemplateByID(params.id); this.getWorkflowTemplateByID(params.id);
this.stepTypes = [...this.stepTypeOptions]; this.stepTypes = [...this.stepTypeOptions];
} else { } else {
this.utilsService.createObject(this.workflow, this.createdObjs); this.utilsService.createObject(this.workflow, this.createdObjs);
this.setDefaults(); this.setDefaults();
this.addDefaultStages(); this.addDefaultStages();
this.stepTypes = [...this.stepTypeOptions]; this.stepTypes = [...this.stepTypeOptions];
this.showLoader = false; this.showLoader = false;
} }
}) })
); );
})); }));
this.getMessageTemplates(); this.getMessageTemplates();
} }
...@@ -142,7 +144,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -142,7 +144,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.stageTypes.forEach(stage => { this.stageTypes.forEach(stage => {
const index = (!stage.IsPostStage && !stage.IsPreStage) ? topIndex++ : -1; const index = (!stage.IsPostStage && !stage.IsPreStage) ? topIndex++ : -1;
const stageObject = new WorkflowStageModel(`${stage.Description} Stage`, false, stage, index, const stageObject = new WorkflowStageModel(`${stage.Description} Stage`, false, stage, index,
false, this.workflow.ObjectID); false, this.workflow.ObjectID);
this.utilsService.addMultiRefObject(stageObject, this.workflow, 'WorkFlowStages', this.createdObjs); this.utilsService.addMultiRefObject(stageObject, this.workflow, 'WorkFlowStages', this.createdObjs);
}); });
this.reOrderStages(); this.reOrderStages();
...@@ -150,10 +152,16 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -150,10 +152,16 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
reOrderStages(): void { reOrderStages(): void {
this.workflow.WorkFlowStages this.workflow.WorkFlowStages
.sort((a, b) => a.SortOrder < b.SortOrder ? -1 : a.SortOrder > b.SortOrder ? 1 : 0); .sort((a, b) => a.SortOrder < b.SortOrder ? -1 : a.SortOrder > b.SortOrder ? 1 : 0);
this.filterStages(); this.filterStages();
} }
reOrderSteps(): void {
this.workflow.WorkFlowStages.forEach(stage => {
stage.Steps.sort((a, b) => a.SortOrder < b.SortOrder ? -1 : a.SortOrder > b.SortOrder ? 1 : 0);
});
}
isGeneric(stage: WorkflowStageModel): boolean { isGeneric(stage: WorkflowStageModel): boolean {
return !stage.StageType.IsPostStage && !stage.StageType.IsPreStage; return !stage.StageType.IsPostStage && !stage.StageType.IsPreStage;
} }
...@@ -162,20 +170,23 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -162,20 +170,23 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.preStages = this.filteredStages(true, false); this.preStages = this.filteredStages(true, false);
this.genericStages = this.filteredStages(false, false) this.genericStages = this.filteredStages(false, false)
.sort((a, b) => a.SortOrder > b.SortOrder ? -1 : a.SortOrder < b.SortOrder ? 1 : 0); .sort((a, b) => a.SortOrder > b.SortOrder ? -1 : a.SortOrder < b.SortOrder ? 1 : 0);
this.postStages = this.filteredStages(false, true); this.postStages = this.filteredStages(false, true);
} }
showSaveBtn(): boolean { showSaveBtn(): boolean {
return this.workflow && this.workflow.ObjectID ? return this.workflow && this.workflow.ObjectID ?
(this.workflow.HiringTeam === this.adminPortalLayoutService.getHiringTeamID().ObjectID || (this.workflow.HiringTeam === this.adminPortalLayoutService.getHiringTeamID().ObjectID ||
!this.editMode) : false; !this.editMode) : false;
} }
showSaveCopyBtn(): boolean { showSaveCopyBtn(): boolean {
return this.workflow && this.workflow.ObjectID ? if (this.workflow && this.workflow.ObjectID) {
(!!this.workflow.HiringTeam) : false; return this.workflow.HiringTeam === null;
}
return false;
} }
getStageHeader(stage: WorkflowStageModel): string { getStageHeader(stage: WorkflowStageModel): string {
...@@ -188,17 +199,17 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -188,17 +199,17 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
filteredStages(isPreStage: boolean, isPostStage: boolean): Array<WorkflowStageModel> { filteredStages(isPreStage: boolean, isPostStage: boolean): Array<WorkflowStageModel> {
if (isPreStage) { if (isPreStage) {
return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPreStage) return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPreStage);
} else if (isPostStage) { } else if (isPostStage) {
return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPostStage) return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPostStage);
} else { } else {
return this.workflow.WorkFlowStages.filter(stage => !stage.StageType.IsPreStage && !stage.StageType.IsPostStage) return this.workflow.WorkFlowStages.filter(stage => !stage.StageType.IsPreStage && !stage.StageType.IsPostStage);
} }
} }
emailResponseSelected(): boolean { emailResponseSelected(): boolean {
return this.workflow.ApplicationResponseAction && return this.workflow.ApplicationResponseAction &&
this.workflow.ApplicationResponseAction.Value === 'EMAIL_RESPONSE'; this.workflow.ApplicationResponseAction.Value === 'EMAIL_RESPONSE';
} }
sortWorkFlowMessage(): void { sortWorkFlowMessage(): void {
...@@ -224,10 +235,10 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -224,10 +235,10 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
setTimeout(() => { setTimeout(() => {
try { try {
document.getElementById(`${fieldName}Id`) document.getElementById(`${fieldName}Id`)
.focus(); .focus();
document.getElementById(`${fieldName}Id`) document.getElementById(`${fieldName}Id`)
.getElementsByTagName('input')[0] .getElementsByTagName('input')[0]
.focus(); .focus();
} catch (e) { } catch (e) {
// ignore this. // ignore this.
} }
...@@ -236,8 +247,13 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -236,8 +247,13 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
} }
generateDelayString(message: WorkflowMessageModel): void { generateDelayString(message: WorkflowMessageModel): void {
if (!message.Delay) {
return;
}
const delay = message.Delay.replace(/_/g, '') const delay = message.Delay.replace(/_/g, '')
.split(':'); .split(':');
delay[0] = delay[0] || ''; delay[0] = delay[0] || '';
delay[1] = delay[1] || ''; delay[1] = delay[1] || '';
...@@ -268,25 +284,25 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -268,25 +284,25 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}; };
this.subscriptions.push( this.subscriptions.push(
combineLatest( combineLatest(
this.editWorkflowTemplateService.getMessageTemplates([], myMsgParams), this.editWorkflowTemplateService.getMessageTemplates([], myMsgParams),
this.editWorkflowTemplateService.getMessageTemplates([], sharedMsgParams) this.editWorkflowTemplateService.getMessageTemplates([], sharedMsgParams)
)
.subscribe(
(response: [Array<MessageTemplateModel>, Array<MessageTemplateModel>]) => {
const myTemplates = response[0].filter(message => message.HiringTeam ===
this.adminPortalLayoutService.getHiringTeamID().ObjectID);
this.messageTemplates = [...myTemplates, ...response[1]];
this.addNewOptionToMessageTemplate();
if (callback) {
// called when a new message template is created
callback();
}
},
error => {
this.utilsService.handleError(error);
}
) )
.subscribe(
(response: [Array<MessageTemplateModel>, Array<MessageTemplateModel>]) => {
const myTemplates = response[0].filter(message => message.HiringTeam ===
this.adminPortalLayoutService.getHiringTeamID().ObjectID);
this.messageTemplates = [...myTemplates, ...response[1]];
this.addNewOptionToMessageTemplate();
if (callback) {
// called when a new message template is created
callback();
}
},
error => {
this.utilsService.handleError(error);
}
)
); );
} }
...@@ -328,7 +344,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -328,7 +344,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
if (found) { if (found) {
this.workflow.WorkFlowStages.forEach(wfStage => { this.workflow.WorkFlowStages.forEach(wfStage => {
const messageTemplate = wfStage.WorkFlowMessages.find(wfMessage => wfMessage.ObjectID === const messageTemplate = wfStage.WorkFlowMessages.find(wfMessage => wfMessage.ObjectID ===
this.selectedMessageTemplate); this.selectedMessageTemplate);
if (messageTemplate) { if (messageTemplate) {
messageTemplate.MessageTemplate = found; messageTemplate.MessageTemplate = found;
} }
...@@ -355,10 +371,19 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -355,10 +371,19 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
} }
removeStep(step: WorkflowStepModel, stage: WorkflowStageModel): void { removeStep(step: WorkflowStepModel, stage: WorkflowStageModel): void {
const stepType = step.StepType; this.confirmationService.confirm({
this.utilsService.removeMultiRefObject(step, stage, 'Steps', this.createdObjs, this.updatedObjs, this.deletedObjs); message: 'Are you sure you want to delete this record?',
this.reAssignStepOrders(stage); header: 'Delete Confirmation',
this.addStepType(stepType); icon: 'fa fa-trash',
key: 'RemoveRow',
accept: () => {
const stepType = step.StepType;
this.utilsService.removeMultiRefObject(step, stage, 'Steps', this.createdObjs, this.updatedObjs, this.deletedObjs);
this.reAssignStepOrders(stage);
this.addStepType(stepType);
}
});
} }
removeStepType(step: StepTypeEnum): void { removeStepType(step: StepTypeEnum): void {
...@@ -389,7 +414,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -389,7 +414,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
key: 'RemoveRow', key: 'RemoveRow',
accept: () => { accept: () => {
this.utilsService.removeMultiRefObject(message, stage, 'WorkFlowMessages', this.createdObjs, this.utilsService.removeMultiRefObject(message, stage, 'WorkFlowMessages', this.createdObjs,
this.updatedObjs, this.deletedObjs); this.updatedObjs, this.deletedObjs);
} }
}); });
} }
...@@ -397,7 +422,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -397,7 +422,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
addStage(): void { addStage(): void {
const stageType = this.stageTypes.find(type => !type.IsPreStage && !type.IsPostStage); const stageType = this.stageTypes.find(type => !type.IsPreStage && !type.IsPostStage);
const stage = new WorkflowStageModel(`${stageType.Description} Stage`, false, stageType, this.getStageOrder(), const stage = new WorkflowStageModel(`${stageType.Description} Stage`, false, stageType, this.getStageOrder(),
false, this.workflow.ObjectID); false, this.workflow.ObjectID);
this.utilsService.addMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs); this.utilsService.addMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs);
this.reOrderStages(); this.reOrderStages();
} }
...@@ -411,7 +436,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -411,7 +436,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
accept: () => { accept: () => {
if (this.isGeneric(stage)) { if (this.isGeneric(stage)) {
const decrement = this.workflow.WorkFlowStages.filter(stg => this.isGeneric(stg)) const decrement = this.workflow.WorkFlowStages.filter(stg => this.isGeneric(stg))
.length - stage.SortOrder; .length - stage.SortOrder;
if (decrement > 0) { if (decrement > 0) {
this.workflow.WorkFlowStages.map(stg => { this.workflow.WorkFlowStages.map(stg => {
if (this.isGeneric(stg) && stg.SortOrder > decrement) { if (this.isGeneric(stg) && stg.SortOrder > decrement) {
...@@ -422,15 +447,15 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -422,15 +447,15 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.reOrderStages(); this.reOrderStages();
} }
this.utilsService.removeMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs, this.utilsService.removeMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs,
this.updatedObjs, this.deletedObjs); this.updatedObjs, this.deletedObjs);
} }
}); });
} }
getStageOrder(): number { getStageOrder(): number {
return this.workflow && this.workflow.WorkFlowStages ? ( return this.workflow && this.workflow.WorkFlowStages ? (
this.workflow.WorkFlowStages.filter(stage => this.isGeneric(stage)) this.workflow.WorkFlowStages.filter(stage => this.isGeneric(stage))
.length + 1 .length + 1
) : 0; ) : 0;
} }
...@@ -451,46 +476,46 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -451,46 +476,46 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
[ASSOCS.WORKFLOW_STAGE, ASSOCS.WORKFLOW_STEP].join('.')]; [ASSOCS.WORKFLOW_STAGE, ASSOCS.WORKFLOW_STEP].join('.')];
this.subscriptions.push(this.editWorkflowTemplateService.getWorkflowTemplateByID(id, assoc) this.subscriptions.push(this.editWorkflowTemplateService.getWorkflowTemplateByID(id, assoc)
.subscribe( .subscribe(
data => { data => {
this.workflow = data; this.workflow = data;
this.updatedObjs[this.workflow.ObjectID] = this.workflow; this.updatedObjs[this.workflow.ObjectID] = this.workflow;
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, this.workflow.WorkFlowStages); this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, this.workflow.WorkFlowStages);
this.workflow.WorkFlowStages = this.workflow.WorkFlowStages || []; this.workflow.WorkFlowStages = this.workflow.WorkFlowStages || [];
this.workflow.WorkFlowStages.forEach(stage => { this.workflow.WorkFlowStages.forEach(stage => {
this.updatedObjs[stage.ObjectID] = stage this.updatedObjs[stage.ObjectID] = stage;
stage.Steps = stage.Steps || [];
stage.Steps = stage.Steps || []; stage.WorkFlowMessages = stage.WorkFlowMessages || [];
stage.WorkFlowMessages = stage.WorkFlowMessages || [];
stage.WorkFlowMessages.forEach(msg => {
stage.WorkFlowMessages.forEach(msg => { this.generateDelayString(msg);
this.generateDelayString(msg) });
});
stage.Steps.forEach(step => { stage.Steps.forEach(step => {
this.removeStepType(step.StepType); this.removeStepType(step.StepType);
}) });
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.WorkFlowMessages); this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.WorkFlowMessages);
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.Steps); this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.Steps);
}); });
this.reOrderStages(); this.reOrderStages();
this.showLoader = false; this.reOrderSteps();
}, this.showLoader = false;
error => { },
this.showLoader = false; error => {
this.utilsService.handleError(error); this.showLoader = false;
} this.utilsService.handleError(error);
) }
)
); );
} }
getMessageClass(message: MessageTemplateModel): string { getMessageClass(message: MessageTemplateModel): string {
return message.TemplateType ? `ui-icon-${message.TemplateType.Value.toLowerCase()}` : return message.TemplateType ? `ui-icon-${message.TemplateType.Value.toLowerCase()}` :
'ui-icon-sms'; 'ui-icon-sms';
} }
saveWorkflowTemplate(saveCopy = false, testing = true): void { saveWorkflowTemplate(saveCopy = false, testing = true): void {
...@@ -502,29 +527,25 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -502,29 +527,25 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
} else { } else {
this.showLoader = true; this.showLoader = true;
this.subscriptions.push(this.saveService.saveObjects(service, this.createdObjs, this.updatedObjs, this.deletedObjs) this.subscriptions.push(this.saveService.saveObjects(service, this.createdObjs, this.updatedObjs, this.deletedObjs)
.subscribe( .subscribe(
() => { () => {
this.utilsService.handleSuccess(); this.utilsService.handleSuccess();
this.router.navigate(['/admin/list-workflow-templates']); this.router.navigate(['/admin/list-workflow-templates']);
}, },
error => { error => {
this.showLoader = false; this.showLoader = false;
this.utilsService.handleError(error); this.utilsService.handleError(error);
} }
) )
); );
} }
} }
onDragStart(item, list, listId): void { onDragStart(item, list, listId): void {
this.draggingItem = list.find(listItem => listItem.ObjectID === item.ObjectID); this.draggingItem = list.find(listItem => listItem.ObjectID === item.ObjectID);
this.draggingId = listId; this.draggingId = listId;
} }
draggingItem: any = null;
draggingId = null;
onDragEnd(event): void { onDragEnd(event): void {
setTimeout(() => { setTimeout(() => {
this.draggingItem = null; this.draggingItem = null;
...@@ -532,13 +553,13 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -532,13 +553,13 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}); });
} }
onDrop(event: DndDropEvent, list?: any[], draggingId?: any): void { onDrop(event: DndDropEvent, list?: Array<any>, draggingId?: any): void {
if (draggingId !== this.draggingId) { if (draggingId !== this.draggingId) {
return; return;
} }
let index = event.index; let index = event.index;
if (typeof index === "undefined") { if (typeof index === 'undefined') {
index = list.length; index = list.length;
} }
...@@ -553,10 +574,9 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn ...@@ -553,10 +574,9 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
list.splice(index, 0, this.draggingItem); list.splice(index, 0, this.draggingItem);
} }
list.forEach((item, i) => {
list.forEach((item, index) => { item.SortOrder = i;
item.SortOrder = index; });
})
} }
// tslint:disable-next-line:max-file-line-count // tslint:disable-next-line:max-file-line-count
......
...@@ -108,6 +108,16 @@ ...@@ -108,6 +108,16 @@
/* End listing of message and workflow template styling */ /* End listing of message and workflow template styling */
/* Panel Styling */ /* Panel Styling */
.messaging {
.ui-panel {
.ui-panel-content {
padding-left: 0 !important;
padding-right: 0 !important;
}
}
}
.ui-panel { .ui-panel {
margin-right: auto; margin-right: auto;
margin-left: auto; margin-left: auto;
...@@ -202,6 +212,16 @@ ...@@ -202,6 +212,16 @@
} }
} }
/* End styling select button*/
.ui-multiselect {
border-bottom: 0 !important;
}
.dropdown-text {
width: 75% !important;
}
.h-80 { .h-80 {
height: 80px; height: 80px;
} }
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