1 //- Copyright (c) 2019 AT&T Intellectual Property. #
\r
3 //- Licensed under the Apache License, Version 2.0 (the "License"); #
\r
4 //- you may not use this file except in compliance with the License. #
\r
5 //- You may obtain a copy of the License at #
\r
7 //- http://www.apache.org/licenses/LICENSE-2.0 #
\r
9 //- Unless required by applicable law or agreed to in writing, software #
\r
10 //- distributed under the License is distributed on an "AS IS" BASIS, #
\r
11 //- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
\r
12 //- See the License for the specific language governing permissions and #
\r
13 //- limitations under the License. #
\r
14 //- #############################################################################
\r
17 .row(style="margin-left: 0px")
\r
19 button.mr-2.mt-2(mat-raised-button, color="primary", (click)="getDefinition()") Select Definition
\r
20 label() Selected Test Defintion: {{ selectedDefinition.testName || "None Selected" }}
\r
21 div.mt-4(*ngIf="selectedDefinition.testName")
\r
25 input(matInput, [(ngModel)]="testInstance.testInstanceName", placeholder="Instance Name", required)
\r
28 input(matInput, [(ngModel)]="testInstance.testInstanceDescription", placeholder="Description")
\r
30 Label() Select BPMN Version
\r
33 mat-select.mr-2([(value)]="selectedBpmn", [disabled]="testInstance.useLatestTestDefinition || editMode", (selectionChange)="changeBpmn()")
\r
34 mat-option( *ngFor="let bpmn of selectedDefinition.bpmnInstances | filterNonDeployed: myFilter", [value]="bpmn") {{bpmn.version}}
\r
37 mat-slide-toggle(*ngIf='!editMode', [(ngModel)]="testInstance.useLatestTestDefinition", (change)="useLatest()") Use latest
\r
38 mat-slide-toggle.ml-2(color="primary", [(ngModel)]="testInstance.simulationMode", (change)="simulationMode()") Simulation Mode
\r
41 mat-expansion-panel([expanded]="false")
\r
42 mat-slide-toggle((change)="toggleYaml()", [checked]="displayYAML") Display Yaml Input
\r
43 mat-expansion-panel-header Test Input
\r
44 div(*ngIf='testInstance.testDataJSON || selectedBpmn.testDataTemplateJSON')
\r
45 app-form-generator(*ngIf="!displayYAML", [JSONData] = 'testInstance.testDataJSON || selectedBpmn.testDataTemplateJSON', [taskId]= '', (childEvent)="saveTestDataOptions($event)" )
\r
46 codemirror(*ngIf="displayYAML", [config]="codeConfig", [(ngModel)] = "testInstance['testData']")
\r
48 //- If Not in simulation mode, display vth input fields
\r
49 div(*ngIf="!testInstance.simulationMode")
\r
50 mat-slide-toggle.mt-4.mb-2((change) = "testHeadYaml()") Display Yaml (All VTHs)
\r
51 mat-accordion(*ngFor = 'let testHead of selectedBpmn.testHeads; let i = index')
\r
52 mat-expansion-panel(*ngIf="editMode || (testHead.testHeadId.testHeadName && testHead.testHeadId.testHeadName.toLowerCase() != 'robot')",[expanded]='false')
\r
53 mat-expansion-panel-header {{ testHead.testHeadId.testHeadName || testInstance.vthInput[testHead.bpmnVthTaskId + "testHeadName"] }} ({{testHead.bpmnVthTaskId}})
\r
54 app-form-generator(*ngIf= "!testHeadYAML", [JSONData] = 'testInstance.vthInput[testHead.bpmnVthTaskId] || testHead["testHeadId"]["vthInputTemplateJSON"]', [taskId]="testHead.bpmnVthTaskId", (childEvent)="saveFormOptions($event)")
\r
56 codemirror(*ngIf="testHeadYAML", [config]="codeConfig", [(ngModel)] = "testInstance['vthInputYaml'][testHead.bpmnVthTaskId]")
\r
58 mat-expansion-panel(*ngIf="(testHead.testHeadId.testHeadName && testHead.testHeadId.testHeadName.toLowerCase() == 'robot')", [expanded]='false')
\r
59 mat-expansion-panel-header {{ testHead.testHeadId.testHeadName || testInstance.vthInput[testHead.bpmnVthTaskId + "testHeadName"]}} ({{testHead.bpmnVthTaskId}}) Robot Files
\r
60 mat-panel-title Resources
\r
63 //- .mb-2 TESTING GIT TRACKING
\r
64 //- | Multiple Files
\r
65 //- mat-slide-toggle(color="primary", name="isZip", [(ngModel)]="isZip", (change)="uploader.clearQueue()")
\r
68 //- input(*ngIf="!isZip", type="file", name="scripts", ng2der")FileSelect, [uploader]="uploader", multiple)
\r
69 input(*ngIf="isZip", type="file", name="scripts", ng2FileSelect, [uploader]="uploaders[testHead.bpmnVthTaskId]", accept="application/zip")
\r
71 div(*ngIf="uploaders[testHead.bpmnVthTaskId].queue.length > 0")
\r
73 ul.list-group(style="position:relative")
\r
74 li.list-group-item(*ngFor="let item of uploaders[testHead.bpmnVthTaskId].queue")
\r
75 | {{ item?.file?.name }}
\r
76 div.upload-progress([ngStyle]="{'width': item.progress + '%'}")
\r
77 //button.pull-right(mat-button, (click)="upload()") Upload All
\r
78 button.pull-right(mat-button, color="primary", (click)="uploaders[testHead.bpmnVthTaskId].clearQueue()") Remove All
\r
80 //- If in simulation mode, show simulated outputs and delays
\r
81 div.mt-4(*ngIf="testInstance.simulationMode && testInstance.simulationVthInput")
\r
83 mat-expansion-panel(*ngFor="let testHead of selectedBpmn.testHeads; let i = index")
\r
84 mat-expansion-panel-header
\r
85 span(style="color: #2196f3") Simulated
\r
86 | {{ testHead.testHeadId.testHeadName || testInstance.vthInput[testHead.bpmnVthTaskId + "testHeadName"] }} ({{testHead.bpmnVthTaskId}})
\r
87 codemirror([config]="codeJsonConfig", *ngIf="testInstance.simulationVthInput[testHead.bpmnVthTaskId]", [(ngModel)]="testInstance.simulationVthInput[testHead.bpmnVthTaskId]")
\r
88 //- h5.text-muted testHeadData.yaml
\r
89 //- div(style="border: 1px solid lightgrey")
\r
90 //- codemirror([config]="codeConfig", value = "{{ testInstance['testData']}}", [(ngModel)]='testInstance["testData"]')
\r
91 div.mt-4(*ngIf="checkPfloInputLength()")
\r
94 mat-expansion-panel(*ngFor="let pflo of selectedBpmn.pflos; let i = index" color="primary")
\r
95 mat-expansion-panel-header {{testInstance.pfloInput[pflo.bpmnPfloTaskId + "pfloName"]}} ({{pflo.bpmnPfloTaskId}})
\r
100 mat-select(placeholder="Interrupt On Failure", [(value)]="testInstance.pfloInput[pflo.bpmnPfloTaskId]['interruptOnFailure']", required)
\r
101 mat-option([value]="false") False
\r
102 mat-option([value]="true") True
\r
103 h5 Max Number of Failures
\r
105 input(matInput, type="number", [(ngModel)] = "testInstance.pfloInput[pflo.bpmnPfloTaskId]['maxFailures']")
\r
107 h5 Number of Threads
\r
109 input(matInput, type="number", [(ngModel)] = "testInstance.pfloInput[pflo.bpmnPfloTaskId]['threadPoolSize']")
\r
111 .dropdown.mt-1(ngbDropdown, autoClose="outside", (openChange)="clearSelectedValues()", placement="left-top")
\r
112 button(mat-raised-button, [disabled]="editMode", color="primary", ngbDropdownToggle, (click)="null") Add Instance
\r
113 i.ml-1.fa.fa-caret-down
\r
114 .dropdown-menu(ngbDropdownMenu)
\r
115 h4.mb-2.ml-1(style="font-weight: bold;") Add Instances
\r
116 input.ml-1(matInput, type='search', placeholder='Search...', color='blue', [(ngModel)]='search.testInstanceName')
\r
117 div(style="max-height: 300px; overflow-y: scroll")
\r
119 .mr-2.ml-2(*ngFor="let instance of instances | filterBy:search")
\r
120 mat-checkbox([(ngModel)]='instance.isSelected') {{instance.testInstanceName}}
\r
121 div( style="text-align: center")
\r
122 button.primary.mr-1(mat-raised-button, aria-label='Add', color="primary", (click)='addInstancesToPflo(pflo.bpmnPfloTaskId)') Add
\r
124 h4.mt-2(*ngIf="testInstance.pfloInput[pflo.bpmnPfloTaskId].args.length && !editMode", style="width:100%") Workflows
\r
126 mat-expansion-panel(*ngFor="let workReq of testInstance.pfloInput[pflo.bpmnPfloTaskId].args; let i = index")
\r
127 mat-expansion-panel-header(style="align-text:center") {{tiNameLookup[workReq.testInstanceId]}}
\r
128 //button.primary.mr-1.ml-4(mat-mini-fab, aria-label='Remove', color="warn", (click)="deleteWorkReq(pflo.bpmnPfloTaskId, i)")
\r
129 i.fa.fa-remove.ml-2((click)="deleteWorkReq(pflo.bpmnPfloTaskId, i)")
\r
130 app-workflow-request([formData]='testInstance.pfloInput[pflo.bpmnPfloTaskId].args[i]', [taskId]="pflo.bpmnPfloTaskId", [index]="i", (childEvent)="saveWorkReqForm($event)")
\r
131 .row(style="height:40px")
\r
132 .row.form-buttons(*ngIf = "selectedDefinition.testName")
\r
135 h5.mr-2(style="color: Red", *ngIf='executionFailed') Tests failed to execute!
\r
136 button.mr-2(mat-raised-button, *ngIf='!editMode', color="primary", (click)="saveAll()") Save
\r
137 button(mat-raised-button, *ngIf='!editMode', color="warn", (click)="saveAndExecute()") Save and Execute
\r
138 button.mr-2(mat-raised-button, *ngIf='editMode', color="primary", (click)="updateInstance()") Update
\r
139 button.mr-2(mat-raised-button, *ngIf='editMode', color="primary", (click)="cancel()") Cancel