@memberjunction/ng-core-entity-forms 2.117.0 → 2.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/Tests/test-form.component.d.ts +53 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-form.component.js +718 -0
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -0
- package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +16 -0
- package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-rubric-form.component.js +138 -0
- package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +17 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +134 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +58 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-run-form.component.js +921 -0
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +32 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-suite-form.component.js +355 -0
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +36 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +571 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +29 -23
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +39 -3
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +63 -45
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +79 -0
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +2 -12
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +2 -12
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +32 -30
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +6 -16
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +37 -19
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +17 -15
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +3 -11
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +9 -13
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +3 -11
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +3 -11
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +14 -20
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +13 -13
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +9 -15
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +10 -10
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +8 -14
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +13 -13
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +8 -14
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +14 -20
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +4 -16
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +17 -23
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +5 -17
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +40 -32
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +64 -56
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +3 -11
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +3 -11
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +8 -16
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +2 -12
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +3 -11
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +4 -12
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +3 -11
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +2 -12
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +3 -11
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +3 -11
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +3 -11
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +10 -15
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +2 -12
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +8 -16
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +3 -11
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +3 -11
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +3 -11
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Report/report.form.component.js +17 -25
- package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +4 -16
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +17 -17
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +32 -26
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.js +17 -25
- package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +3 -11
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Test/test.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Test/test.form.component.js +129 -0
- package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +63 -0
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +183 -0
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +63 -0
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +119 -0
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +109 -0
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +61 -0
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js +93 -0
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +162 -108
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +133 -119
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +163 -70
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +17 -17
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
8
|
+
import { Subject } from 'rxjs';
|
|
9
|
+
import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
|
|
10
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
11
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
13
|
+
import { TestSuiteRunFormComponent } from '../../generated/Entities/TestSuiteRun/testsuiterun.form.component';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@memberjunction/ng-shared";
|
|
16
|
+
import * as i2 from "@angular/router";
|
|
17
|
+
import * as i3 from "@angular/common";
|
|
18
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
19
|
+
function TestSuiteRunFormComponentExtended_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
21
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "a", 43);
|
|
22
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_2_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
|
|
23
|
+
i0.ɵɵelement(2, "i", 44);
|
|
24
|
+
i0.ɵɵtext(3);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
i0.ɵɵelement(4, "i", 45);
|
|
27
|
+
i0.ɵɵelementStart(5, "span");
|
|
28
|
+
i0.ɵɵtext(6);
|
|
29
|
+
i0.ɵɵelementEnd()();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
32
|
+
i0.ɵɵadvance(3);
|
|
33
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.testSuite.Name, " ");
|
|
34
|
+
i0.ɵɵadvance(3);
|
|
35
|
+
i0.ɵɵtextInterpolate1("Run #", ctx_r1.record.ID.substring(0, 8), "");
|
|
36
|
+
} }
|
|
37
|
+
function TestSuiteRunFormComponentExtended_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
39
|
+
i0.ɵɵtext(1);
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Environment);
|
|
45
|
+
} }
|
|
46
|
+
function TestSuiteRunFormComponentExtended_span_15_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "span", 47);
|
|
48
|
+
i0.ɵɵtext(1);
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
52
|
+
i0.ɵɵadvance();
|
|
53
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TriggerType);
|
|
54
|
+
} }
|
|
55
|
+
function TestSuiteRunFormComponentExtended_span_88_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementStart(0, "span", 48);
|
|
57
|
+
i0.ɵɵtext(1);
|
|
58
|
+
i0.ɵɵelementEnd();
|
|
59
|
+
} if (rf & 2) {
|
|
60
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
61
|
+
i0.ɵɵadvance();
|
|
62
|
+
i0.ɵɵtextInterpolate(ctx_r1.testRuns.length);
|
|
63
|
+
} }
|
|
64
|
+
function TestSuiteRunFormComponentExtended_div_94_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
i0.ɵɵelementStart(0, "div", 49)(1, "div", 50)(2, "div", 51);
|
|
66
|
+
i0.ɵɵelement(3, "i", 10);
|
|
67
|
+
i0.ɵɵelementEnd();
|
|
68
|
+
i0.ɵɵelementStart(4, "div", 52)(5, "h2");
|
|
69
|
+
i0.ɵɵtext(6);
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
|
+
i0.ɵɵelementStart(7, "div", 53);
|
|
72
|
+
i0.ɵɵtext(8);
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
75
|
+
i0.ɵɵtext(10);
|
|
76
|
+
i0.ɵɵelementEnd()()()();
|
|
77
|
+
} if (rf & 2) {
|
|
78
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
79
|
+
i0.ɵɵadvance();
|
|
80
|
+
i0.ɵɵclassProp("passed", ctx_r1.record.Status === "Completed" && ctx_r1.getPassRate() >= 90)("failed", ctx_r1.record.Status === "Failed");
|
|
81
|
+
i0.ɵɵadvance(2);
|
|
82
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getStatusIcon());
|
|
83
|
+
i0.ɵɵadvance(3);
|
|
84
|
+
i0.ɵɵtextInterpolate1("SUITE ", ctx_r1.record.Status.toUpperCase(), "");
|
|
85
|
+
i0.ɵɵadvance(2);
|
|
86
|
+
i0.ɵɵtextInterpolate1("Pass Rate: ", ctx_r1.getPassRate().toFixed(1), "%");
|
|
87
|
+
i0.ɵɵadvance(2);
|
|
88
|
+
i0.ɵɵtextInterpolate2("", ctx_r1.record.PassedTests, " of ", ctx_r1.record.TotalTests, " tests passed");
|
|
89
|
+
} }
|
|
90
|
+
function TestSuiteRunFormComponentExtended_div_95_div_1_div_1_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelementStart(0, "span");
|
|
92
|
+
i0.ɵɵtext(1);
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} if (rf & 2) {
|
|
95
|
+
const run_r4 = i0.ɵɵnextContext().$implicit;
|
|
96
|
+
i0.ɵɵadvance();
|
|
97
|
+
i0.ɵɵtextInterpolate1("Score: ", run_r4.Score.toFixed(4), "");
|
|
98
|
+
} }
|
|
99
|
+
function TestSuiteRunFormComponentExtended_div_95_div_1_div_1_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
i0.ɵɵelementStart(0, "span");
|
|
101
|
+
i0.ɵɵtext(1);
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
} if (rf & 2) {
|
|
104
|
+
const run_r4 = i0.ɵɵnextContext().$implicit;
|
|
105
|
+
i0.ɵɵadvance();
|
|
106
|
+
i0.ɵɵtextInterpolate1("", run_r4.DurationSeconds.toFixed(1), "s");
|
|
107
|
+
} }
|
|
108
|
+
function TestSuiteRunFormComponentExtended_div_95_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
110
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
111
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_95_div_1_div_1_Template_div_click_0_listener() { const run_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestRun(run_r4.ID)); });
|
|
112
|
+
i0.ɵɵelementStart(1, "div", 61);
|
|
113
|
+
i0.ɵɵtext(2);
|
|
114
|
+
i0.ɵɵelementEnd();
|
|
115
|
+
i0.ɵɵelementStart(3, "div", 62);
|
|
116
|
+
i0.ɵɵelement(4, "i", 63);
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
i0.ɵɵelementStart(5, "div", 64)(6, "div", 65);
|
|
119
|
+
i0.ɵɵtext(7);
|
|
120
|
+
i0.ɵɵelementEnd();
|
|
121
|
+
i0.ɵɵelementStart(8, "div", 66)(9, "span", 67);
|
|
122
|
+
i0.ɵɵtext(10);
|
|
123
|
+
i0.ɵɵelementEnd();
|
|
124
|
+
i0.ɵɵtemplate(11, TestSuiteRunFormComponentExtended_div_95_div_1_div_1_span_11_Template, 2, 1, "span", 68)(12, TestSuiteRunFormComponentExtended_div_95_div_1_div_1_span_12_Template, 2, 1, "span", 68);
|
|
125
|
+
i0.ɵɵelementEnd()();
|
|
126
|
+
i0.ɵɵelement(13, "i", 45);
|
|
127
|
+
i0.ɵɵelementEnd();
|
|
128
|
+
} if (rf & 2) {
|
|
129
|
+
const run_r4 = ctx.$implicit;
|
|
130
|
+
i0.ɵɵadvance(2);
|
|
131
|
+
i0.ɵɵtextInterpolate(run_r4.Sequence);
|
|
132
|
+
i0.ɵɵadvance();
|
|
133
|
+
i0.ɵɵstyleProp("background-color", run_r4.Status === "Passed" ? "#4caf50" : run_r4.Status === "Failed" ? "#f44336" : "#ff9800");
|
|
134
|
+
i0.ɵɵadvance();
|
|
135
|
+
i0.ɵɵclassProp("fa-check", run_r4.Status === "Passed")("fa-times", run_r4.Status === "Failed")("fa-exclamation", run_r4.Status === "Error");
|
|
136
|
+
i0.ɵɵadvance(3);
|
|
137
|
+
i0.ɵɵtextInterpolate(run_r4.Test);
|
|
138
|
+
i0.ɵɵadvance(2);
|
|
139
|
+
i0.ɵɵstyleProp("color", run_r4.Status === "Passed" ? "#4caf50" : run_r4.Status === "Failed" ? "#f44336" : "#ff9800");
|
|
140
|
+
i0.ɵɵadvance();
|
|
141
|
+
i0.ɵɵtextInterpolate(run_r4.Status);
|
|
142
|
+
i0.ɵɵadvance();
|
|
143
|
+
i0.ɵɵproperty("ngIf", run_r4.Score != null);
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵproperty("ngIf", run_r4.DurationSeconds);
|
|
146
|
+
} }
|
|
147
|
+
function TestSuiteRunFormComponentExtended_div_95_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 58);
|
|
149
|
+
i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_95_div_1_div_1_Template, 14, 15, "div", 59);
|
|
150
|
+
i0.ɵɵelementEnd();
|
|
151
|
+
} if (rf & 2) {
|
|
152
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
153
|
+
i0.ɵɵadvance();
|
|
154
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.testRuns);
|
|
155
|
+
} }
|
|
156
|
+
function TestSuiteRunFormComponentExtended_div_95_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
158
|
+
i0.ɵɵelement(1, "i", 70);
|
|
159
|
+
i0.ɵɵelementStart(2, "p");
|
|
160
|
+
i0.ɵɵtext(3, "No test runs found for this suite execution");
|
|
161
|
+
i0.ɵɵelementEnd()();
|
|
162
|
+
} }
|
|
163
|
+
function TestSuiteRunFormComponentExtended_div_95_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
165
|
+
i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_95_div_1_Template, 2, 1, "div", 56)(2, TestSuiteRunFormComponentExtended_div_95_div_2_Template, 4, 0, "div", 57);
|
|
166
|
+
i0.ɵɵelementEnd();
|
|
167
|
+
} if (rf & 2) {
|
|
168
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
169
|
+
i0.ɵɵadvance();
|
|
170
|
+
i0.ɵɵproperty("ngIf", ctx_r1.testRuns.length > 0);
|
|
171
|
+
i0.ɵɵadvance();
|
|
172
|
+
i0.ɵɵproperty("ngIf", ctx_r1.testRunsLoaded && ctx_r1.testRuns.length === 0);
|
|
173
|
+
} }
|
|
174
|
+
function TestSuiteRunFormComponentExtended_div_96_a_11_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
176
|
+
i0.ɵɵelementStart(0, "a", 43);
|
|
177
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_96_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
|
|
178
|
+
i0.ɵɵtext(1);
|
|
179
|
+
i0.ɵɵelementEnd();
|
|
180
|
+
} if (rf & 2) {
|
|
181
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
182
|
+
i0.ɵɵadvance();
|
|
183
|
+
i0.ɵɵtextInterpolate(ctx_r1.testSuite.Name);
|
|
184
|
+
} }
|
|
185
|
+
function TestSuiteRunFormComponentExtended_div_96_Template(rf, ctx) { if (rf & 1) {
|
|
186
|
+
i0.ɵɵelementStart(0, "div", 71)(1, "div", 72)(2, "div", 73)(3, "div", 74);
|
|
187
|
+
i0.ɵɵtext(4, "Run ID");
|
|
188
|
+
i0.ɵɵelementEnd();
|
|
189
|
+
i0.ɵɵelementStart(5, "div", 75);
|
|
190
|
+
i0.ɵɵtext(6);
|
|
191
|
+
i0.ɵɵelementEnd()();
|
|
192
|
+
i0.ɵɵelementStart(7, "div", 73)(8, "div", 74);
|
|
193
|
+
i0.ɵɵtext(9, "Test Suite");
|
|
194
|
+
i0.ɵɵelementEnd();
|
|
195
|
+
i0.ɵɵelementStart(10, "div", 75);
|
|
196
|
+
i0.ɵɵtemplate(11, TestSuiteRunFormComponentExtended_div_96_a_11_Template, 2, 1, "a", 76);
|
|
197
|
+
i0.ɵɵelementEnd()();
|
|
198
|
+
i0.ɵɵelementStart(12, "div", 73)(13, "div", 74);
|
|
199
|
+
i0.ɵɵtext(14, "Status");
|
|
200
|
+
i0.ɵɵelementEnd();
|
|
201
|
+
i0.ɵɵelementStart(15, "div", 75);
|
|
202
|
+
i0.ɵɵtext(16);
|
|
203
|
+
i0.ɵɵelementEnd()();
|
|
204
|
+
i0.ɵɵelementStart(17, "div", 73)(18, "div", 74);
|
|
205
|
+
i0.ɵɵtext(19, "Run By");
|
|
206
|
+
i0.ɵɵelementEnd();
|
|
207
|
+
i0.ɵɵelementStart(20, "div", 75);
|
|
208
|
+
i0.ɵɵtext(21);
|
|
209
|
+
i0.ɵɵelementEnd()();
|
|
210
|
+
i0.ɵɵelementStart(22, "div", 73)(23, "div", 74);
|
|
211
|
+
i0.ɵɵtext(24, "Environment");
|
|
212
|
+
i0.ɵɵelementEnd();
|
|
213
|
+
i0.ɵɵelementStart(25, "div", 75);
|
|
214
|
+
i0.ɵɵtext(26);
|
|
215
|
+
i0.ɵɵelementEnd()();
|
|
216
|
+
i0.ɵɵelementStart(27, "div", 73)(28, "div", 74);
|
|
217
|
+
i0.ɵɵtext(29, "Trigger Type");
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
i0.ɵɵelementStart(30, "div", 75);
|
|
220
|
+
i0.ɵɵtext(31);
|
|
221
|
+
i0.ɵɵelementEnd()();
|
|
222
|
+
i0.ɵɵelementStart(32, "div", 73)(33, "div", 74);
|
|
223
|
+
i0.ɵɵtext(34, "Git Commit");
|
|
224
|
+
i0.ɵɵelementEnd();
|
|
225
|
+
i0.ɵɵelementStart(35, "div", 75);
|
|
226
|
+
i0.ɵɵtext(36);
|
|
227
|
+
i0.ɵɵelementEnd()();
|
|
228
|
+
i0.ɵɵelementStart(37, "div", 73)(38, "div", 74);
|
|
229
|
+
i0.ɵɵtext(39, "Agent Version");
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
i0.ɵɵelementStart(40, "div", 75);
|
|
232
|
+
i0.ɵɵtext(41);
|
|
233
|
+
i0.ɵɵelementEnd()()()();
|
|
234
|
+
} if (rf & 2) {
|
|
235
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
236
|
+
i0.ɵɵadvance(6);
|
|
237
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.ID);
|
|
238
|
+
i0.ɵɵadvance(5);
|
|
239
|
+
i0.ɵɵproperty("ngIf", ctx_r1.testSuite);
|
|
240
|
+
i0.ɵɵadvance(5);
|
|
241
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Status);
|
|
242
|
+
i0.ɵɵadvance(5);
|
|
243
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.RunByUser);
|
|
244
|
+
i0.ɵɵadvance(5);
|
|
245
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Environment || "N/A");
|
|
246
|
+
i0.ɵɵadvance(5);
|
|
247
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TriggerType || "N/A");
|
|
248
|
+
i0.ɵɵadvance(5);
|
|
249
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.GitCommit || "N/A");
|
|
250
|
+
i0.ɵɵadvance(5);
|
|
251
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.AgentVersion || "N/A");
|
|
252
|
+
} }
|
|
253
|
+
let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended extends TestSuiteRunFormComponent {
|
|
254
|
+
constructor(elementRef, sharedService, router, route, cdr) {
|
|
255
|
+
super(elementRef, sharedService, router, route, cdr);
|
|
256
|
+
this.router = router;
|
|
257
|
+
this.cdr = cdr;
|
|
258
|
+
this.destroy$ = new Subject();
|
|
259
|
+
// UI state
|
|
260
|
+
this.activeTab = 'overview';
|
|
261
|
+
this.loading = false;
|
|
262
|
+
this.error = null;
|
|
263
|
+
this.testRunsLoaded = false;
|
|
264
|
+
// Related entities
|
|
265
|
+
this.testSuite = null;
|
|
266
|
+
this.testRuns = [];
|
|
267
|
+
}
|
|
268
|
+
async ngOnInit() {
|
|
269
|
+
await super.ngOnInit();
|
|
270
|
+
if (this.record && this.record.ID) {
|
|
271
|
+
await this.loadRelatedData();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
ngOnDestroy() {
|
|
275
|
+
this.destroy$.next();
|
|
276
|
+
this.destroy$.complete();
|
|
277
|
+
}
|
|
278
|
+
async loadRelatedData() {
|
|
279
|
+
this.loading = true;
|
|
280
|
+
try {
|
|
281
|
+
// Load test suite
|
|
282
|
+
if (this.record.SuiteID) {
|
|
283
|
+
const md = new Metadata();
|
|
284
|
+
const suite = await md.GetEntityObject('MJ: Test Suites');
|
|
285
|
+
if (suite && await suite.Load(this.record.SuiteID)) {
|
|
286
|
+
this.testSuite = suite;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
this.cdr.markForCheck();
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
console.error('Error loading related data:', error);
|
|
293
|
+
this.error = 'Failed to load related data';
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
this.loading = false;
|
|
297
|
+
this.cdr.markForCheck();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async loadTestRuns() {
|
|
301
|
+
if (this.testRunsLoaded)
|
|
302
|
+
return;
|
|
303
|
+
try {
|
|
304
|
+
const rv = new RunView();
|
|
305
|
+
const result = await rv.RunView({
|
|
306
|
+
EntityName: 'MJ: Test Runs',
|
|
307
|
+
ExtraFilter: `TestSuiteRunID='${this.record.ID}'`,
|
|
308
|
+
OrderBy: 'Sequence ASC, StartedAt ASC',
|
|
309
|
+
ResultType: 'entity_object'
|
|
310
|
+
});
|
|
311
|
+
if (result.Success) {
|
|
312
|
+
this.testRuns = result.Results || [];
|
|
313
|
+
}
|
|
314
|
+
this.testRunsLoaded = true;
|
|
315
|
+
this.cdr.markForCheck();
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
console.error('Error loading test runs:', error);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
changeTab(tab) {
|
|
322
|
+
this.activeTab = tab;
|
|
323
|
+
// Lazy load tabs
|
|
324
|
+
if (tab === 'runs' && !this.testRunsLoaded) {
|
|
325
|
+
this.loadTestRuns();
|
|
326
|
+
}
|
|
327
|
+
this.cdr.markForCheck();
|
|
328
|
+
}
|
|
329
|
+
getStatusColor() {
|
|
330
|
+
switch (this.record.Status) {
|
|
331
|
+
case 'Completed': return '#4caf50';
|
|
332
|
+
case 'Failed': return '#f44336';
|
|
333
|
+
case 'Running': return '#2196f3';
|
|
334
|
+
case 'Pending': return '#ffc107';
|
|
335
|
+
case 'Cancelled': return '#9e9e9e';
|
|
336
|
+
default: return '#999';
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
getStatusIcon() {
|
|
340
|
+
switch (this.record.Status) {
|
|
341
|
+
case 'Completed': return 'fa-check-circle';
|
|
342
|
+
case 'Failed': return 'fa-times-circle';
|
|
343
|
+
case 'Running': return 'fa-spinner fa-spin';
|
|
344
|
+
case 'Pending': return 'fa-clock';
|
|
345
|
+
case 'Cancelled': return 'fa-ban';
|
|
346
|
+
default: return 'fa-question-circle';
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
calculateDuration() {
|
|
350
|
+
if (!this.record.TotalDurationSeconds)
|
|
351
|
+
return 'N/A';
|
|
352
|
+
const seconds = this.record.TotalDurationSeconds;
|
|
353
|
+
if (seconds < 60)
|
|
354
|
+
return `${seconds.toFixed(1)}s`;
|
|
355
|
+
if (seconds < 3600) {
|
|
356
|
+
const mins = Math.floor(seconds / 60);
|
|
357
|
+
const secs = Math.floor(seconds % 60);
|
|
358
|
+
return `${mins}m ${secs}s`;
|
|
359
|
+
}
|
|
360
|
+
const hours = Math.floor(seconds / 3600);
|
|
361
|
+
const mins = Math.floor((seconds % 3600) / 60);
|
|
362
|
+
return `${hours}h ${mins}m`;
|
|
363
|
+
}
|
|
364
|
+
formatCost(cost) {
|
|
365
|
+
if (cost === null || cost === undefined)
|
|
366
|
+
return 'N/A';
|
|
367
|
+
return `$${cost.toFixed(6)}`;
|
|
368
|
+
}
|
|
369
|
+
getPassRate() {
|
|
370
|
+
const total = this.record.TotalTests || 0;
|
|
371
|
+
const passed = this.record.PassedTests || 0;
|
|
372
|
+
if (total === 0)
|
|
373
|
+
return 0;
|
|
374
|
+
return (passed / total) * 100;
|
|
375
|
+
}
|
|
376
|
+
openTestSuite() {
|
|
377
|
+
if (this.testSuite) {
|
|
378
|
+
SharedService.Instance.OpenEntityRecord('MJ: Test Suites', CompositeKey.FromID(this.testSuite.ID));
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
openTestRun(runId) {
|
|
382
|
+
SharedService.Instance.OpenEntityRecord('MJ: Test Runs', CompositeKey.FromID(runId));
|
|
383
|
+
}
|
|
384
|
+
async refresh() {
|
|
385
|
+
await this.loadRelatedData();
|
|
386
|
+
if (this.testRunsLoaded) {
|
|
387
|
+
this.testRunsLoaded = false;
|
|
388
|
+
await this.loadTestRuns();
|
|
389
|
+
}
|
|
390
|
+
this.cdr.markForCheck();
|
|
391
|
+
}
|
|
392
|
+
static { this.ɵfac = function TestSuiteRunFormComponentExtended_Factory(t) { return new (t || TestSuiteRunFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
393
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestSuiteRunFormComponentExtended, selectors: [["mj-test-suite-run-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 97, vars: 35, consts: [[1, "test-suite-run-form"], [1, "suite-run-header"], ["class", "breadcrumb", 4, "ngIf"], [1, "header-content"], [1, "header-left"], [1, "suite-run-icon"], [1, "fas", "fa-layer-group"], [1, "suite-run-info"], [1, "suite-run-meta"], [1, "status-badge"], [1, "fas", 3, "ngClass"], ["class", "environment", 4, "ngIf"], ["class", "trigger", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "icon", "sync", 3, "click"], [1, "metrics-bar"], [1, "metric-card"], [1, "metric-label"], [1, "metric-value"], [1, "results-summary"], [1, "result-item", "passed"], [1, "fas", "fa-check-circle"], [1, "count"], [1, "label"], [1, "result-item", "failed"], [1, "fas", "fa-times-circle"], [1, "result-item", "skipped"], [1, "fas", "fa-forward"], [1, "result-item", "error"], [1, "fas", "fa-exclamation-circle"], [1, "result-item", "total"], [1, "fas", "fa-list"], [1, "tabs-container"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-th-large"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-info-circle"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "runs-tab", 4, "ngIf"], ["class", "details-tab", 4, "ngIf"], [1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-folder"], [1, "fas", "fa-chevron-right"], [1, "environment"], [1, "trigger"], [1, "tab-badge"], [1, "overview-tab"], [1, "result-hero"], [1, "result-icon"], [1, "result-text"], [1, "result-stats"], [1, "result-counts"], [1, "runs-tab"], ["class", "test-runs-list", 4, "ngIf"], ["class", "no-data", 4, "ngIf"], [1, "test-runs-list"], ["class", "test-run-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "test-run-item", 3, "click"], [1, "run-sequence"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-name"], [1, "run-meta"], [1, "status"], [4, "ngIf"], [1, "no-data"], [1, "fas", "fa-inbox"], [1, "details-tab"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"]], template: function TestSuiteRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
394
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
395
|
+
i0.ɵɵtemplate(2, TestSuiteRunFormComponentExtended_div_2_Template, 7, 2, "div", 2);
|
|
396
|
+
i0.ɵɵelementStart(3, "div", 3)(4, "div", 4)(5, "div", 5);
|
|
397
|
+
i0.ɵɵelement(6, "i", 6);
|
|
398
|
+
i0.ɵɵelementEnd();
|
|
399
|
+
i0.ɵɵelementStart(7, "div", 7)(8, "h1");
|
|
400
|
+
i0.ɵɵtext(9, "Test Suite Run");
|
|
401
|
+
i0.ɵɵelementEnd();
|
|
402
|
+
i0.ɵɵelementStart(10, "div", 8)(11, "span", 9);
|
|
403
|
+
i0.ɵɵelement(12, "i", 10);
|
|
404
|
+
i0.ɵɵtext(13);
|
|
405
|
+
i0.ɵɵelementEnd();
|
|
406
|
+
i0.ɵɵtemplate(14, TestSuiteRunFormComponentExtended_span_14_Template, 2, 1, "span", 11)(15, TestSuiteRunFormComponentExtended_span_15_Template, 2, 1, "span", 12);
|
|
407
|
+
i0.ɵɵelementEnd()()();
|
|
408
|
+
i0.ɵɵelementStart(16, "div", 13)(17, "button", 14);
|
|
409
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_17_listener() { return ctx.refresh(); });
|
|
410
|
+
i0.ɵɵtext(18, " Refresh ");
|
|
411
|
+
i0.ɵɵelementEnd()()();
|
|
412
|
+
i0.ɵɵelementStart(19, "div", 15)(20, "div", 16)(21, "div", 17);
|
|
413
|
+
i0.ɵɵtext(22, "Started");
|
|
414
|
+
i0.ɵɵelementEnd();
|
|
415
|
+
i0.ɵɵelementStart(23, "div", 18);
|
|
416
|
+
i0.ɵɵtext(24);
|
|
417
|
+
i0.ɵɵpipe(25, "date");
|
|
418
|
+
i0.ɵɵelementEnd()();
|
|
419
|
+
i0.ɵɵelementStart(26, "div", 16)(27, "div", 17);
|
|
420
|
+
i0.ɵɵtext(28, "Completed");
|
|
421
|
+
i0.ɵɵelementEnd();
|
|
422
|
+
i0.ɵɵelementStart(29, "div", 18);
|
|
423
|
+
i0.ɵɵtext(30);
|
|
424
|
+
i0.ɵɵpipe(31, "date");
|
|
425
|
+
i0.ɵɵelementEnd()();
|
|
426
|
+
i0.ɵɵelementStart(32, "div", 16)(33, "div", 17);
|
|
427
|
+
i0.ɵɵtext(34, "Duration");
|
|
428
|
+
i0.ɵɵelementEnd();
|
|
429
|
+
i0.ɵɵelementStart(35, "div", 18);
|
|
430
|
+
i0.ɵɵtext(36);
|
|
431
|
+
i0.ɵɵelementEnd()();
|
|
432
|
+
i0.ɵɵelementStart(37, "div", 16)(38, "div", 17);
|
|
433
|
+
i0.ɵɵtext(39, "Pass Rate");
|
|
434
|
+
i0.ɵɵelementEnd();
|
|
435
|
+
i0.ɵɵelementStart(40, "div", 18);
|
|
436
|
+
i0.ɵɵtext(41);
|
|
437
|
+
i0.ɵɵelementEnd()();
|
|
438
|
+
i0.ɵɵelementStart(42, "div", 16)(43, "div", 17);
|
|
439
|
+
i0.ɵɵtext(44, "Cost");
|
|
440
|
+
i0.ɵɵelementEnd();
|
|
441
|
+
i0.ɵɵelementStart(45, "div", 18);
|
|
442
|
+
i0.ɵɵtext(46);
|
|
443
|
+
i0.ɵɵelementEnd()()();
|
|
444
|
+
i0.ɵɵelementStart(47, "div", 19)(48, "div", 20);
|
|
445
|
+
i0.ɵɵelement(49, "i", 21);
|
|
446
|
+
i0.ɵɵelementStart(50, "span", 22);
|
|
447
|
+
i0.ɵɵtext(51);
|
|
448
|
+
i0.ɵɵelementEnd();
|
|
449
|
+
i0.ɵɵelementStart(52, "span", 23);
|
|
450
|
+
i0.ɵɵtext(53, "Passed");
|
|
451
|
+
i0.ɵɵelementEnd()();
|
|
452
|
+
i0.ɵɵelementStart(54, "div", 24);
|
|
453
|
+
i0.ɵɵelement(55, "i", 25);
|
|
454
|
+
i0.ɵɵelementStart(56, "span", 22);
|
|
455
|
+
i0.ɵɵtext(57);
|
|
456
|
+
i0.ɵɵelementEnd();
|
|
457
|
+
i0.ɵɵelementStart(58, "span", 23);
|
|
458
|
+
i0.ɵɵtext(59, "Failed");
|
|
459
|
+
i0.ɵɵelementEnd()();
|
|
460
|
+
i0.ɵɵelementStart(60, "div", 26);
|
|
461
|
+
i0.ɵɵelement(61, "i", 27);
|
|
462
|
+
i0.ɵɵelementStart(62, "span", 22);
|
|
463
|
+
i0.ɵɵtext(63);
|
|
464
|
+
i0.ɵɵelementEnd();
|
|
465
|
+
i0.ɵɵelementStart(64, "span", 23);
|
|
466
|
+
i0.ɵɵtext(65, "Skipped");
|
|
467
|
+
i0.ɵɵelementEnd()();
|
|
468
|
+
i0.ɵɵelementStart(66, "div", 28);
|
|
469
|
+
i0.ɵɵelement(67, "i", 29);
|
|
470
|
+
i0.ɵɵelementStart(68, "span", 22);
|
|
471
|
+
i0.ɵɵtext(69);
|
|
472
|
+
i0.ɵɵelementEnd();
|
|
473
|
+
i0.ɵɵelementStart(70, "span", 23);
|
|
474
|
+
i0.ɵɵtext(71, "Errors");
|
|
475
|
+
i0.ɵɵelementEnd()();
|
|
476
|
+
i0.ɵɵelementStart(72, "div", 30);
|
|
477
|
+
i0.ɵɵelement(73, "i", 31);
|
|
478
|
+
i0.ɵɵelementStart(74, "span", 22);
|
|
479
|
+
i0.ɵɵtext(75);
|
|
480
|
+
i0.ɵɵelementEnd();
|
|
481
|
+
i0.ɵɵelementStart(76, "span", 23);
|
|
482
|
+
i0.ɵɵtext(77, "Total");
|
|
483
|
+
i0.ɵɵelementEnd()()()();
|
|
484
|
+
i0.ɵɵelementStart(78, "div", 32)(79, "div", 33)(80, "button", 34);
|
|
485
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_80_listener() { return ctx.changeTab("overview"); });
|
|
486
|
+
i0.ɵɵelement(81, "i", 35);
|
|
487
|
+
i0.ɵɵelementStart(82, "span");
|
|
488
|
+
i0.ɵɵtext(83, "Overview");
|
|
489
|
+
i0.ɵɵelementEnd()();
|
|
490
|
+
i0.ɵɵelementStart(84, "button", 34);
|
|
491
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_84_listener() { return ctx.changeTab("runs"); });
|
|
492
|
+
i0.ɵɵelement(85, "i", 31);
|
|
493
|
+
i0.ɵɵelementStart(86, "span");
|
|
494
|
+
i0.ɵɵtext(87, "Test Runs");
|
|
495
|
+
i0.ɵɵelementEnd();
|
|
496
|
+
i0.ɵɵtemplate(88, TestSuiteRunFormComponentExtended_span_88_Template, 2, 1, "span", 36);
|
|
497
|
+
i0.ɵɵelementEnd();
|
|
498
|
+
i0.ɵɵelementStart(89, "button", 34);
|
|
499
|
+
i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_89_listener() { return ctx.changeTab("details"); });
|
|
500
|
+
i0.ɵɵelement(90, "i", 37);
|
|
501
|
+
i0.ɵɵelementStart(91, "span");
|
|
502
|
+
i0.ɵɵtext(92, "Details");
|
|
503
|
+
i0.ɵɵelementEnd()()()();
|
|
504
|
+
i0.ɵɵelementStart(93, "div", 38);
|
|
505
|
+
i0.ɵɵtemplate(94, TestSuiteRunFormComponentExtended_div_94_Template, 11, 9, "div", 39)(95, TestSuiteRunFormComponentExtended_div_95_Template, 3, 2, "div", 40)(96, TestSuiteRunFormComponentExtended_div_96_Template, 42, 8, "div", 41);
|
|
506
|
+
i0.ɵɵelementEnd()();
|
|
507
|
+
} if (rf & 2) {
|
|
508
|
+
i0.ɵɵadvance(2);
|
|
509
|
+
i0.ɵɵproperty("ngIf", ctx.testSuite);
|
|
510
|
+
i0.ɵɵadvance(3);
|
|
511
|
+
i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
|
|
512
|
+
i0.ɵɵadvance(6);
|
|
513
|
+
i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
|
|
514
|
+
i0.ɵɵadvance();
|
|
515
|
+
i0.ɵɵproperty("ngClass", ctx.getStatusIcon());
|
|
516
|
+
i0.ɵɵadvance();
|
|
517
|
+
i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
|
|
518
|
+
i0.ɵɵadvance();
|
|
519
|
+
i0.ɵɵproperty("ngIf", ctx.record.Environment);
|
|
520
|
+
i0.ɵɵadvance();
|
|
521
|
+
i0.ɵɵproperty("ngIf", ctx.record.TriggerType);
|
|
522
|
+
i0.ɵɵadvance(9);
|
|
523
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(25, 29, ctx.record.StartedAt, "short"));
|
|
524
|
+
i0.ɵɵadvance(6);
|
|
525
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(31, 32, ctx.record.CompletedAt, "short"));
|
|
526
|
+
i0.ɵɵadvance(6);
|
|
527
|
+
i0.ɵɵtextInterpolate(ctx.calculateDuration());
|
|
528
|
+
i0.ɵɵadvance(5);
|
|
529
|
+
i0.ɵɵtextInterpolate1("", ctx.getPassRate().toFixed(1), "%");
|
|
530
|
+
i0.ɵɵadvance(5);
|
|
531
|
+
i0.ɵɵtextInterpolate(ctx.formatCost(ctx.record.TotalCostUSD));
|
|
532
|
+
i0.ɵɵadvance(5);
|
|
533
|
+
i0.ɵɵtextInterpolate(ctx.record.PassedTests || 0);
|
|
534
|
+
i0.ɵɵadvance(6);
|
|
535
|
+
i0.ɵɵtextInterpolate(ctx.record.FailedTests || 0);
|
|
536
|
+
i0.ɵɵadvance(6);
|
|
537
|
+
i0.ɵɵtextInterpolate(ctx.record.SkippedTests || 0);
|
|
538
|
+
i0.ɵɵadvance(6);
|
|
539
|
+
i0.ɵɵtextInterpolate(ctx.record.ErrorTests || 0);
|
|
540
|
+
i0.ɵɵadvance(6);
|
|
541
|
+
i0.ɵɵtextInterpolate(ctx.record.TotalTests || 0);
|
|
542
|
+
i0.ɵɵadvance(5);
|
|
543
|
+
i0.ɵɵclassProp("active", ctx.activeTab === "overview");
|
|
544
|
+
i0.ɵɵadvance(4);
|
|
545
|
+
i0.ɵɵclassProp("active", ctx.activeTab === "runs");
|
|
546
|
+
i0.ɵɵadvance(4);
|
|
547
|
+
i0.ɵɵproperty("ngIf", ctx.testRunsLoaded);
|
|
548
|
+
i0.ɵɵadvance();
|
|
549
|
+
i0.ɵɵclassProp("active", ctx.activeTab === "details");
|
|
550
|
+
i0.ɵɵadvance(5);
|
|
551
|
+
i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
|
|
552
|
+
i0.ɵɵadvance();
|
|
553
|
+
i0.ɵɵproperty("ngIf", ctx.activeTab === "runs");
|
|
554
|
+
i0.ɵɵadvance();
|
|
555
|
+
i0.ɵɵproperty("ngIf", ctx.activeTab === "details");
|
|
556
|
+
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.ButtonComponent, i3.DatePipe], styles: [".test-suite-run-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n\n\n.suite-run-header[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 20px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #666;\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: #2196f3;\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.suite-run-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n}\n\n.suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.suite-run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 12px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n}\n\n.environment[_ngcontent-%COMP%], \n.trigger[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n padding: 4px 8px;\n background: #f0f0f0;\n border-radius: 6px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: #f5f7fa;\n border-radius: 8px;\n padding: 12px;\n text-align: center;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #999;\n margin-bottom: 4px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #333;\n}\n\n.results-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding-top: 16px;\n border-top: 1px solid #e0e0e0;\n}\n\n.result-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n background: #f8f9fa;\n}\n\n.result-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.result-item[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n}\n\n.result-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #666;\n}\n\n.result-item.passed[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.result-item.passed[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #4caf50;\n}\n\n.result-item.failed[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.result-item.failed[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.result-item.skipped[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.result-item.skipped[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #9e9e9e;\n}\n\n.result-item.error[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.result-item.error[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #ff9800;\n}\n\n.result-item.total[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.result-item.total[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: #2196f3;\n background: rgba(33, 150, 243, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: #e0e0e0;\n color: #666;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: #e3f2fd;\n color: #2196f3;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.result-hero[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 32px;\n text-align: center;\n border: 3px solid #e0e0e0;\n}\n\n.result-hero.passed[_ngcontent-%COMP%] {\n background: #e8f5e9;\n border-color: #4caf50;\n}\n\n.result-hero.failed[_ngcontent-%COMP%] {\n background: #ffebee;\n border-color: #f44336;\n}\n\n.result-icon[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 16px;\n}\n\n.result-hero.passed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: #4caf50;\n}\n\n.result-hero.failed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.result-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 32px;\n font-weight: 700;\n color: #333;\n}\n\n.result-stats[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: #666;\n margin-bottom: 8px;\n}\n\n.result-counts[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #999;\n}\n\n\n\n.test-runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.test-run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f0f0f0;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: #666;\n flex-shrink: 0;\n}\n\n.run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.run-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.run-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: #666;\n}\n\n.run-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.test-run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #999;\n font-size: 14px;\n}\n\n\n\n.details-tab[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 20px;\n}\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n word-wrap: break-word;\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: #2196f3;\n text-decoration: none;\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n\n\n.no-data[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: #999;\n text-align: center;\n background: white;\n border-radius: 12px;\n}\n\n.no-data[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n@media (max-width: 1200px) {\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .results-summary[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .details-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n}"], changeDetection: 0 }); }
|
|
557
|
+
};
|
|
558
|
+
TestSuiteRunFormComponentExtended = __decorate([
|
|
559
|
+
RegisterClass(BaseFormComponent, 'MJ: Test Suite Runs')
|
|
560
|
+
], TestSuiteRunFormComponentExtended);
|
|
561
|
+
export { TestSuiteRunFormComponentExtended };
|
|
562
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestSuiteRunFormComponentExtended, [{
|
|
563
|
+
type: Component,
|
|
564
|
+
args: [{ selector: 'mj-test-suite-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-run-form\">\n <!-- Header Section -->\n <div class=\"suite-run-header\">\n <div class=\"breadcrumb\" *ngIf=\"testSuite\">\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\">\n <i class=\"fas fa-folder\"></i> {{ testSuite.Name }}\n </a>\n <i class=\"fas fa-chevron-right\"></i>\n <span>Run #{{ record.ID.substring(0, 8) }}</span>\n </div>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-run-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-run-info\">\n <h1>Test Suite Run</h1>\n <div class=\"suite-run-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n {{ record.Status }}\n </span>\n <span class=\"environment\" *ngIf=\"record.Environment\">{{ record.Environment }}</span>\n <span class=\"trigger\" *ngIf=\"record.TriggerType\">{{ record.TriggerType }}</span>\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <button kendoButton (click)=\"refresh()\" icon=\"sync\">\n Refresh\n </button>\n </div>\n </div>\n\n <!-- Metrics Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.StartedAt | date:'short' }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Completed</div>\n <div class=\"metric-value\">{{ record.CompletedAt | date:'short' }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ calculateDuration() }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Pass Rate</div>\n <div class=\"metric-value\">{{ getPassRate().toFixed(1) }}%</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCostUSD) }}</div>\n </div>\n </div>\n\n <!-- Test Results Summary -->\n <div class=\"results-summary\">\n <div class=\"result-item passed\">\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"count\">{{ record.PassedTests || 0 }}</span>\n <span class=\"label\">Passed</span>\n </div>\n <div class=\"result-item failed\">\n <i class=\"fas fa-times-circle\"></i>\n <span class=\"count\">{{ record.FailedTests || 0 }}</span>\n <span class=\"label\">Failed</span>\n </div>\n <div class=\"result-item skipped\">\n <i class=\"fas fa-forward\"></i>\n <span class=\"count\">{{ record.SkippedTests || 0 }}</span>\n <span class=\"label\">Skipped</span>\n </div>\n <div class=\"result-item error\">\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"count\">{{ record.ErrorTests || 0 }}</span>\n <span class=\"label\">Errors</span>\n </div>\n <div class=\"result-item total\">\n <i class=\"fas fa-list\"></i>\n <span class=\"count\">{{ record.TotalTests || 0 }}</span>\n <span class=\"label\">Total</span>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'overview'\" (click)=\"changeTab('overview')\">\n <i class=\"fas fa-th-large\"></i>\n <span>Overview</span>\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'runs'\" (click)=\"changeTab('runs')\">\n <i class=\"fas fa-list\"></i>\n <span>Test Runs</span>\n <span class=\"tab-badge\" *ngIf=\"testRunsLoaded\">{{ testRuns.length }}</span>\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i>\n <span>Details</span>\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n <div class=\"overview-tab\" *ngIf=\"activeTab === 'overview'\">\n <!-- Result Hero -->\n <div class=\"result-hero\" [class.passed]=\"record.Status === 'Completed' && getPassRate() >= 90\" [class.failed]=\"record.Status === 'Failed'\">\n <div class=\"result-icon\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n </div>\n <div class=\"result-text\">\n <h2>SUITE {{ record.Status.toUpperCase() }}</h2>\n <div class=\"result-stats\">Pass Rate: {{ getPassRate().toFixed(1) }}%</div>\n <div class=\"result-counts\">{{ record.PassedTests }} of {{ record.TotalTests }} tests passed</div>\n </div>\n </div>\n </div>\n\n <!-- Test Runs Tab -->\n <div class=\"runs-tab\" *ngIf=\"activeTab === 'runs'\">\n <div class=\"test-runs-list\" *ngIf=\"testRuns.length > 0\">\n <div class=\"test-run-item\" *ngFor=\"let run of testRuns\" (click)=\"openTestRun(run.ID)\">\n <div class=\"run-sequence\">{{ run.Sequence }}</div>\n <div class=\"run-icon\" [style.background-color]=\"run.Status === 'Passed' ? '#4caf50' : run.Status === 'Failed' ? '#f44336' : '#ff9800'\">\n <i class=\"fas\" [class.fa-check]=\"run.Status === 'Passed'\" [class.fa-times]=\"run.Status === 'Failed'\" [class.fa-exclamation]=\"run.Status === 'Error'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-name\">{{ run.Test }}</div>\n <div class=\"run-meta\">\n <span class=\"status\" [style.color]=\"run.Status === 'Passed' ? '#4caf50' : run.Status === 'Failed' ? '#f44336' : '#ff9800'\">{{ run.Status }}</span>\n <span *ngIf=\"run.Score != null\">Score: {{ run.Score.toFixed(4) }}</span>\n <span *ngIf=\"run.DurationSeconds\">{{ run.DurationSeconds.toFixed(1) }}s</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <div class=\"no-data\" *ngIf=\"testRunsLoaded && testRuns.length === 0\">\n <i class=\"fas fa-inbox\"></i>\n <p>No test runs found for this suite execution</p>\n </div>\n </div>\n\n <!-- Details Tab -->\n <div class=\"details-tab\" *ngIf=\"activeTab === 'details'\">\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run ID</div>\n <div class=\"detail-value\">{{ record.ID }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Test Suite</div>\n <div class=\"detail-value\">\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\" *ngIf=\"testSuite\">{{ testSuite.Name }}</a>\n </div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Status</div>\n <div class=\"detail-value\">{{ record.Status }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run By</div>\n <div class=\"detail-value\">{{ record.RunByUser }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Environment</div>\n <div class=\"detail-value\">{{ record.Environment || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Trigger Type</div>\n <div class=\"detail-value\">{{ record.TriggerType || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Git Commit</div>\n <div class=\"detail-value\">{{ record.GitCommit || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Agent Version</div>\n <div class=\"detail-value\">{{ record.AgentVersion || 'N/A' }}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".test-suite-run-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n/* Header */\n.suite-run-header {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 20px;\n}\n\n.breadcrumb {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #666;\n margin-bottom: 16px;\n}\n\n.breadcrumb a {\n color: #2196f3;\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.breadcrumb a:hover {\n text-decoration: underline;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n}\n\n.suite-run-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n}\n\n.suite-run-info h1 {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.suite-run-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 12px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n}\n\n.environment,\n.trigger {\n font-size: 13px;\n color: #666;\n padding: 4px 8px;\n background: #f0f0f0;\n border-radius: 6px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.metrics-bar {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.metric-card {\n background: #f5f7fa;\n border-radius: 8px;\n padding: 12px;\n text-align: center;\n}\n\n.metric-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #999;\n margin-bottom: 4px;\n}\n\n.metric-value {\n font-size: 16px;\n font-weight: 600;\n color: #333;\n}\n\n.results-summary {\n display: flex;\n gap: 16px;\n padding-top: 16px;\n border-top: 1px solid #e0e0e0;\n}\n\n.result-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n background: #f8f9fa;\n}\n\n.result-item i {\n font-size: 20px;\n}\n\n.result-item .count {\n font-size: 20px;\n font-weight: 700;\n}\n\n.result-item .label {\n font-size: 12px;\n font-weight: 500;\n color: #666;\n}\n\n.result-item.passed i,\n.result-item.passed .count {\n color: #4caf50;\n}\n\n.result-item.failed i,\n.result-item.failed .count {\n color: #f44336;\n}\n\n.result-item.skipped i,\n.result-item.skipped .count {\n color: #9e9e9e;\n}\n\n.result-item.error i,\n.result-item.error .count {\n color: #ff9800;\n}\n\n.result-item.total i,\n.result-item.total .count {\n color: #2196f3;\n}\n\n/* Tabs */\n.tabs-container {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.tab:hover {\n color: #2196f3;\n background: rgba(33, 150, 243, 0.05);\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.tab i {\n font-size: 16px;\n}\n\n.tab-badge {\n background: #e0e0e0;\n color: #666;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active .tab-badge {\n background: #e3f2fd;\n color: #2196f3;\n}\n\n/* Tab Content */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Overview Tab */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.result-hero {\n background: white;\n border-radius: 12px;\n padding: 32px;\n text-align: center;\n border: 3px solid #e0e0e0;\n}\n\n.result-hero.passed {\n background: #e8f5e9;\n border-color: #4caf50;\n}\n\n.result-hero.failed {\n background: #ffebee;\n border-color: #f44336;\n}\n\n.result-icon {\n font-size: 64px;\n margin-bottom: 16px;\n}\n\n.result-hero.passed .result-icon {\n color: #4caf50;\n}\n\n.result-hero.failed .result-icon {\n color: #f44336;\n}\n\n.result-text h2 {\n margin: 0 0 12px 0;\n font-size: 32px;\n font-weight: 700;\n color: #333;\n}\n\n.result-stats {\n font-size: 20px;\n font-weight: 600;\n color: #666;\n margin-bottom: 8px;\n}\n\n.result-counts {\n font-size: 16px;\n color: #999;\n}\n\n/* Test Runs Tab */\n.test-runs-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.test-run-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.test-run-item:hover {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f0f0f0;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: #666;\n flex-shrink: 0;\n}\n\n.run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.run-content {\n flex: 1;\n}\n\n.run-name {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n\n.run-meta {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: #666;\n}\n\n.run-meta .status {\n font-weight: 700;\n}\n\n.test-run-item > i {\n color: #999;\n font-size: 14px;\n}\n\n/* Details Tab */\n.details-tab {\n background: white;\n border-radius: 12px;\n padding: 20px;\n}\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #999;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n word-wrap: break-word;\n}\n\n.detail-value a {\n color: #2196f3;\n text-decoration: none;\n}\n\n.detail-value a:hover {\n text-decoration: underline;\n}\n\n/* No Data State */\n.no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: #999;\n text-align: center;\n background: white;\n border-radius: 12px;\n}\n\n.no-data i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data p {\n margin: 0;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n .metrics-bar {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .results-summary {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .details-grid {\n grid-template-columns: 1fr;\n }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .tabs {\n overflow-x: auto;\n }\n}\n"] }]
|
|
565
|
+
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }], null); })();
|
|
566
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteRunFormComponentExtended, { className: "TestSuiteRunFormComponentExtended", filePath: "src/lib/custom/Tests/test-suite-run-form.component.ts", lineNumber: 19 }); })();
|
|
567
|
+
export function LoadTestSuiteRunFormComponentExtended() {
|
|
568
|
+
// Prevents tree-shaking
|
|
569
|
+
}
|
|
570
|
+
LoadTestSuiteRunFormComponentExtended();
|
|
571
|
+
//# sourceMappingURL=test-suite-run-form.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-suite-run-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Tests/test-suite-run-form.component.ts","../../../../src/lib/custom/Tests/test-suite-run-form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAoD,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mEAAmE,CAAC;;;;;;;;ICLxG,AADF,+BAA0C,YACe;IAA1B,wLAAS,sBAAe,KAAC;IACpD,wBAA6B;IAAC,YAChC;IAAA,iBAAI;IACJ,wBAAoC;IACpC,4BAAM;IAAA,YAAoC;IAC5C,AAD4C,iBAAO,EAC7C;;;IAJ4B,eAChC;IADgC,sDAChC;IAEM,eAAoC;IAApC,oEAAoC;;;IAepC,gCAAqD;IAAA,YAAwB;IAAA,iBAAO;;;IAA/B,cAAwB;IAAxB,+CAAwB;;;IAC7E,gCAAiD;IAAA,YAAwB;IAAA,iBAAO;;;IAA/B,cAAwB;IAAxB,+CAAwB;;;IA2E7E,gCAA+C;IAAA,YAAqB;IAAA,iBAAO;;;IAA5B,cAAqB;IAArB,4CAAqB;;;IAepE,AADF,AAFF,+BAA2D,cAEkF,cAChH;IACvB,wBAA+C;IACjD,iBAAM;IAEJ,AADF,+BAAyB,SACnB;IAAA,YAAuC;IAAA,iBAAK;IAChD,+BAA0B;IAAA,YAA0C;IAAA,iBAAM;IAC1E,+BAA2B;IAAA,aAAgE;IAGjG,AADE,AADE,AAD6F,iBAAM,EAC7F,EACF,EACF;;;IAVqB,cAAqE;IAAC,AAAtE,4FAAqE,6CAA4C;IAEvH,eAA2B;IAA3B,gDAA2B;IAGtC,eAAuC;IAAvC,uEAAuC;IACjB,eAA0C;IAA1C,0EAA0C;IACzC,eAAgE;IAAhE,uGAAgE;;;IAiBvF,4BAAgC;IAAA,YAAiC;IAAA,iBAAO;;;IAAxC,cAAiC;IAAjC,6DAAiC;;;IACjE,4BAAkC;IAAA,YAAqC;IAAA,iBAAO;;;IAA5C,cAAqC;IAArC,iEAAqC;;;;IAV7E,+BAAsF;IAA9B,iOAAS,6BAAmB,KAAC;IACnF,+BAA0B;IAAA,YAAkB;IAAA,iBAAM;IAClD,+BAAuI;IACrI,wBAAyJ;IAC3J,iBAAM;IAEJ,AADF,+BAAyB,cACD;IAAA,YAAc;IAAA,iBAAM;IAExC,AADF,+BAAsB,eACuG;IAAA,aAAgB;IAAA,iBAAO;IAElJ,AADA,0GAAgC,6FACE;IAEtC,AADE,iBAAM,EACF;IACN,yBAAoC;IACtC,iBAAM;;;IAbsB,eAAkB;IAAlB,qCAAkB;IACtB,cAAgH;IAAhH,+HAAgH;IACrH,cAA0C;IAA4C,AAA3C,AAA3C,sDAA0C,wCAA2C,6CAAgD;IAG9H,eAAc;IAAd,iCAAc;IAEb,eAAqG;IAArG,oHAAqG;IAAC,cAAgB;IAAhB,mCAAgB;IACpI,cAAuB;IAAvB,2CAAuB;IACvB,cAAyB;IAAzB,6CAAyB;;;IAXxC,+BAAwD;IACtD,kGAAsF;IAexF,iBAAM;;;IAfuC,cAAW;IAAX,yCAAW;;;IAiBxD,+BAAqE;IACnE,wBAA4B;IAC5B,yBAAG;IAAA,2DAA2C;IAChD,AADgD,iBAAI,EAC9C;;;IAtBR,+BAAmD;IAmBjD,AAlBA,0FAAwD,6EAkBa;IAIvE,iBAAM;;;IAtByB,cAAyB;IAAzB,iDAAyB;IAkBhC,cAA6C;IAA7C,4EAA6C;;;;IAgB7D,6BAAyE;IAA5C,+LAAS,sBAAe,KAAC;IAAmB,YAAoB;IAAA,iBAAI;;;IAAxB,cAAoB;IAApB,2CAAoB;;;IAN/F,AADF,AADF,AADF,+BAAyD,cAC7B,cACC,cACG;IAAA,sBAAM;IAAA,iBAAM;IACtC,+BAA0B;IAAA,YAAe;IAC3C,AAD2C,iBAAM,EAC3C;IAEJ,AADF,+BAAyB,cACG;IAAA,0BAAU;IAAA,iBAAM;IAC1C,gCAA0B;IACxB,wFAAyE;IAE7E,AADE,iBAAM,EACF;IAEJ,AADF,gCAAyB,eACG;IAAA,uBAAM;IAAA,iBAAM;IACtC,gCAA0B;IAAA,aAAmB;IAC/C,AAD+C,iBAAM,EAC/C;IAEJ,AADF,gCAAyB,eACG;IAAA,uBAAM;IAAA,iBAAM;IACtC,gCAA0B;IAAA,aAAsB;IAClD,AADkD,iBAAM,EAClD;IAEJ,AADF,gCAAyB,eACG;IAAA,4BAAW;IAAA,iBAAM;IAC3C,gCAA0B;IAAA,aAAiC;IAC7D,AAD6D,iBAAM,EAC7D;IAEJ,AADF,gCAAyB,eACG;IAAA,6BAAY;IAAA,iBAAM;IAC5C,gCAA0B;IAAA,aAAiC;IAC7D,AAD6D,iBAAM,EAC7D;IAEJ,AADF,gCAAyB,eACG;IAAA,2BAAU;IAAA,iBAAM;IAC1C,gCAA0B;IAAA,aAA+B;IAC3D,AAD2D,iBAAM,EAC3D;IAEJ,AADF,gCAAyB,eACG;IAAA,8BAAa;IAAA,iBAAM;IAC7C,gCAA0B;IAAA,aAAkC;IAGlE,AADE,AADE,AAD8D,iBAAM,EAC9D,EACF,EACF;;;IAjC0B,eAAe;IAAf,sCAAe;IAKiB,eAAe;IAAf,uCAAe;IAK/C,eAAmB;IAAnB,0CAAmB;IAInB,eAAsB;IAAtB,6CAAsB;IAItB,eAAiC;IAAjC,wDAAiC;IAIjC,eAAiC;IAAjC,wDAAiC;IAIjC,eAA+B;IAA/B,sDAA+B;IAI/B,eAAkC;IAAlC,yDAAkC;;ADxK/D,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,yBAAyB;IAe9E,YACE,UAAsB,EACtB,aAA4B,EAClB,MAAc,EACxB,KAAqB,EACX,GAAsB;QAEhC,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAJ3C,WAAM,GAAN,MAAM,CAAQ;QAEd,QAAG,GAAH,GAAG,CAAmB;QAjB1B,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAEvC,WAAW;QACX,cAAS,GAAG,UAAU,CAAC;QACvB,YAAO,GAAG,KAAK,CAAC;QAChB,UAAK,GAAkB,IAAI,CAAC;QAC5B,mBAAc,GAAG,KAAK,CAAC;QAEvB,mBAAmB;QACnB,cAAS,GAA2B,IAAI,CAAC;QACzC,aAAQ,GAAoB,EAAE,CAAC;IAU/B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC;YACH,kBAAkB;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,eAAe,CAAkB,iBAAiB,CAAC,CAAC;gBAC3E,IAAI,KAAK,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,6BAA6B,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAEhC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAgB;gBAC7C,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,mBAAmB,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG;gBACjD,OAAO,EAAE,6BAA6B;gBACtC,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACvC,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAErB,iBAAiB;QACjB,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,WAAW,CAAC,CAAC,OAAO,SAAS,CAAC;YACnC,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;YAChC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,WAAW,CAAC,CAAC,OAAO,SAAS,CAAC;YACnC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAED,aAAa;QACX,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,WAAW,CAAC,CAAC,OAAO,iBAAiB,CAAC;YAC3C,KAAK,QAAQ,CAAC,CAAC,OAAO,iBAAiB,CAAC;YACxC,KAAK,SAAS,CAAC,CAAC,OAAO,oBAAoB,CAAC;YAC5C,KAAK,SAAS,CAAC,CAAC,OAAO,UAAU,CAAC;YAClC,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAC;YAClC,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC;QACvC,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACjD,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACtC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,IAAmB;QAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;kGAlKU,iCAAiC;oEAAjC,iCAAiC;YChB5C,AAFF,8BAAiC,aAED;YAC5B,kFAA0C;YAUtC,AADF,AADF,8BAA4B,aACD,aACiD;YACtE,uBAAkC;YACpC,iBAAM;YAEJ,AADF,8BAA4B,SACtB;YAAA,8BAAc;YAAA,iBAAK;YAErB,AADF,+BAA4B,eAC6C;YACrE,yBAA+C;YAC/C,aACF;YAAA,iBAAO;YAEP,AADA,uFAAqD,0EACJ;YAGvD,AADE,AADE,iBAAM,EACF,EACF;YAEJ,AADF,gCAA4B,kBAC0B;YAAhC,+GAAS,aAAS,IAAC;YACrC,0BACF;YAEJ,AADE,AADE,iBAAS,EACL,EACF;YAKF,AADF,AADF,gCAAyB,eACE,eACG;YAAA,wBAAO;YAAA,iBAAM;YACvC,gCAA0B;YAAA,aAAqC;;YACjE,AADiE,iBAAM,EACjE;YAEJ,AADF,gCAAyB,eACG;YAAA,0BAAS;YAAA,iBAAM;YACzC,gCAA0B;YAAA,aAAuC;;YACnE,AADmE,iBAAM,EACnE;YAEJ,AADF,gCAAyB,eACG;YAAA,yBAAQ;YAAA,iBAAM;YACxC,gCAA0B;YAAA,aAAyB;YACrD,AADqD,iBAAM,EACrD;YAEJ,AADF,gCAAyB,eACG;YAAA,0BAAS;YAAA,iBAAM;YACzC,gCAA0B;YAAA,aAA+B;YAC3D,AAD2D,iBAAM,EAC3D;YAEJ,AADF,gCAAyB,eACG;YAAA,qBAAI;YAAA,iBAAM;YACpC,gCAA0B;YAAA,aAAqC;YAEnE,AADE,AADiE,iBAAM,EACjE,EACF;YAIJ,AADF,gCAA6B,eACK;YAC9B,yBAAmC;YACnC,iCAAoB;YAAA,aAA6B;YAAA,iBAAO;YACxD,iCAAoB;YAAA,uBAAM;YAC5B,AAD4B,iBAAO,EAC7B;YACN,gCAAgC;YAC9B,yBAAmC;YACnC,iCAAoB;YAAA,aAA6B;YAAA,iBAAO;YACxD,iCAAoB;YAAA,uBAAM;YAC5B,AAD4B,iBAAO,EAC7B;YACN,gCAAiC;YAC/B,yBAA8B;YAC9B,iCAAoB;YAAA,aAA8B;YAAA,iBAAO;YACzD,iCAAoB;YAAA,wBAAO;YAC7B,AAD6B,iBAAO,EAC9B;YACN,gCAA+B;YAC7B,yBAAyC;YACzC,iCAAoB;YAAA,aAA4B;YAAA,iBAAO;YACvD,iCAAoB;YAAA,uBAAM;YAC5B,AAD4B,iBAAO,EAC7B;YACN,gCAA+B;YAC7B,yBAA2B;YAC3B,iCAAoB;YAAA,aAA4B;YAAA,iBAAO;YACvD,iCAAoB;YAAA,sBAAK;YAG/B,AADE,AADE,AAD2B,iBAAO,EAC5B,EACF,EACF;YAKF,AADF,AADF,gCAA4B,eACR,kBAC8E;YAAhC,+GAAS,cAAU,UAAU,CAAC,IAAC;YAC3F,yBAA+B;YAC/B,6BAAM;YAAA,yBAAQ;YAChB,AADgB,iBAAO,EACd;YACT,mCAAsF;YAA5B,+GAAS,cAAU,MAAM,CAAC,IAAC;YACnF,yBAA2B;YAC3B,6BAAM;YAAA,0BAAS;YAAA,iBAAO;YACtB,uFAA+C;YACjD,iBAAS;YACT,mCAA4F;YAA/B,+GAAS,cAAU,SAAS,CAAC,IAAC;YACzF,yBAAkC;YAClC,6BAAM;YAAA,wBAAO;YAGnB,AADE,AADE,AADe,iBAAO,EACb,EACL,EACF;YAGN,gCAAyB;YA2CvB,AA1BA,AAfA,sFAA2D,wEAeR,yEA0BM;YAuC7D,AADE,iBAAM,EACF;;YA5LuB,eAAe;YAAf,oCAAe;YAUR,eAA2C;YAA3C,wDAA2C;YAMxC,eAA2C;YAA3C,wDAA2C;YACrD,cAA2B;YAA3B,6CAA2B;YAC1C,cACF;YADE,kDACF;YAC2B,cAAwB;YAAxB,6CAAwB;YAC5B,cAAwB;YAAxB,6CAAwB;YAezB,eAAqC;YAArC,2EAAqC;YAIrC,eAAuC;YAAvC,6EAAuC;YAIvC,eAAyB;YAAzB,6CAAyB;YAIzB,eAA+B;YAA/B,4DAA+B;YAI/B,eAAqC;YAArC,6DAAqC;YAQ3C,eAA6B;YAA7B,iDAA6B;YAK7B,eAA6B;YAA7B,iDAA6B;YAK7B,eAA8B;YAA9B,kDAA8B;YAK9B,eAA4B;YAA5B,gDAA4B;YAK5B,eAA4B;YAA5B,gDAA4B;YAS9B,eAAyC;YAAzC,sDAAyC;YAIzC,eAAqC;YAArC,kDAAqC;YAG9B,eAAoB;YAApB,yCAAoB;YAE3B,cAAwC;YAAxC,qDAAwC;YAUnC,eAA8B;YAA9B,mDAA8B;YAelC,cAA0B;YAA1B,+CAA0B;YA0BvB,cAA6B;YAA7B,kDAA6B;;;ADtI9C,iCAAiC;IAP7C,aAAa,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;GAO3C,iCAAiC,CAmK7C;;iFAnKY,iCAAiC;cAN7C,SAAS;2BACE,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM;;kFAEpC,iCAAiC;AAqK9C,MAAM,UAAU,qCAAqC;IACnD,wBAAwB;AAC1B,CAAC;AAED,qCAAqC,EAAE,CAAC"}
|