added svcapi ui and camunda code
[it/otf.git] / otf-frontend / client / src / app / shared / modules / create-test-instance-form / create-test-instance-form.component.pug
1 //-  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 //-                                                                             #\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
6 //-                                                                             #\r
7 //-      http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 //-                                                                             #\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
15 \r
16 \r
17 .row(style="margin-left: 0px")\r
18   .col\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
22       .col-md-12.mb-4\r
23         .row\r
24           mat-form-field.mr-3\r
25             input(matInput, [(ngModel)]="testInstance.testInstanceName", placeholder="Instance Name", required)\r
26             mat-error Required\r
27           mat-form-field\r
28             input(matInput, [(ngModel)]="testInstance.testInstanceDescription", placeholder="Description") \r
29         .row\r
30           Label() Select BPMN Version\r
31         .row \r
32           .col-md-4\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
35 \r
36           .col-md-4\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
39           \r
40       mat-accordion\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
47       \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
55 \r
56             codemirror(*ngIf="testHeadYAML", [config]="codeConfig", [(ngModel)] = "testInstance['vthInputYaml'][testHead.bpmnVthTaskId]")\r
57       \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
61             .row\r
62               .col-md-3\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
66                 //-   |  .zip\r
67                 //- div \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
70               .col-md-8.ml-2\r
71                 div(*ngIf="uploaders[testHead.bpmnVthTaskId].queue.length > 0")\r
72                   label Files:\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
79       \r
80       //- If in simulation mode, show simulated outputs and delays\r
81       div.mt-4(*ngIf="testInstance.simulationMode && testInstance.simulationVthInput")\r
82         mat-accordion\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
92         h4 PFLO Inputs\r
93         mat-accordion\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
96             .row\r
97               .col-md-6()\r
98                 h5 Stop on Failure\r
99                 mat-form-field\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
104                 mat-form-field\r
105                   input(matInput, type="number", [(ngModel)] = "testInstance.pfloInput[pflo.bpmnPfloTaskId]['maxFailures']")\r
106               .col-md-6\r
107                 h5 Number of Threads\r
108                 mat-form-field\r
109                   input(matInput, type="number", [(ngModel)] = "testInstance.pfloInput[pflo.bpmnPfloTaskId]['threadPoolSize']")\r
110                 \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
118                       .px-4.py-3\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
123                   \r
124               h4.mt-2(*ngIf="testInstance.pfloInput[pflo.bpmnPfloTaskId].args.length && !editMode", style="width:100%") Workflows\r
125                 mat-accordion\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
133   .col-12.mt-3\r
134     .pull-right\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