@memberjunction/ng-core-entity-forms 3.4.0 → 4.0.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/README.md +2 -2
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +13 -25
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +33 -379
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +15 -14
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +1 -0
- package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +14 -13
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +41 -4
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1335 -1159
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +15 -14
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +12 -12
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +9 -8
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +14 -14
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +12 -11
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +18 -16
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +91 -59
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +9 -9
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +0 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +542 -527
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +12 -11
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +0 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +12 -10
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +0 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +50 -42
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +32 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.js +321 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts +20 -0
- package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js +127 -0
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +15 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +96 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts +50 -0
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness.component.js +710 -0
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -0
- package/dist/lib/custom/Actions/actions-top-area-extended.d.ts +8 -0
- package/dist/lib/custom/Actions/actions-top-area-extended.d.ts.map +1 -0
- package/dist/lib/custom/Actions/actions-top-area-extended.js +64 -0
- package/dist/lib/custom/Actions/actions-top-area-extended.js.map +1 -0
- package/dist/lib/custom/Entities/entities-form.component.d.ts +10 -0
- package/dist/lib/custom/Entities/entities-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Entities/entities-form.component.js +198 -0
- package/dist/lib/custom/Entities/entities-form.component.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +0 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +722 -691
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +0 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +24 -27
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +0 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +425 -438
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.js +28 -29
- package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +0 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +185 -183
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +90 -89
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +76 -75
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +98 -93
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +0 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +15 -25
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +0 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +16 -18
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +419 -400
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-rubric-form.component.js +6 -8
- package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +17 -17
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +405 -390
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +646 -621
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +0 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +616 -585
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +240 -243
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -40
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +37 -36
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +68 -78
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +6 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +289 -271
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +51 -54
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +29 -59
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +85 -82
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +17 -18
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAction/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/AIAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +137 -138
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts +54 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js +492 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +576 -0
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js +194 -0
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.js +253 -0
- package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.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 +3 -3
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js +265 -0
- package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js +267 -0
- package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js +176 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js +176 -0
- package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js +185 -0
- package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +41 -42
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +496 -0
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.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 +21 -22
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +255 -0
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +16 -17
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +295 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +163 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +17 -18
- package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.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 +53 -54
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +3 -3
- package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +47 -48
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +125 -126
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModel/sections/details.component.js +217 -0
- package/dist/lib/generated/Entities/AIModel/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js +223 -0
- package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +17 -18
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/AIModelType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js +221 -0
- package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +77 -78
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +567 -0
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js +214 -0
- package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +23 -24
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +903 -0
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js +236 -0
- package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +53 -54
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIVendor/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/AIVendor/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +3 -3
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +17 -18
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js +23 -24
- package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js +3 -3
- package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIKey/apikey.form.component.js +23 -24
- package/dist/lib/generated/Entities/APIKey/apikey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js +3 -3
- package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js +3 -3
- package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js +3 -3
- package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +23 -24
- package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +3 -3
- package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js +192 -0
- package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +77 -78
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/code.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Action/sections/code.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Action/sections/code.component.js +62 -0
- package/dist/lib/generated/Entities/Action/sections/code.component.js.map +1 -0
- package/dist/lib/generated/Entities/Action/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Action/sections/details.component.js +277 -0
- package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Action/sections/top.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Action/sections/top.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Action/sections/top.component.js +71 -0
- package/dist/lib/generated/Entities/Action/sections/top.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +3 -3
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +23 -24
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +3 -3
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionContext/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ActionContext/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +11 -12
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +3 -3
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +11 -12
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +3 -3
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +17 -18
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionParam/sections/details.component.js +154 -0
- package/dist/lib/generated/Entities/ActionParam/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +3 -3
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Application/application.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Application/application.form.component.js +35 -36
- package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Application/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Application/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Application/sections/details.component.js +116 -0
- package/dist/lib/generated/Entities/Application/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +3 -3
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +3 -3
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +23 -24
- package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Artifact/sections/details.component.js +167 -0
- package/dist/lib/generated/Entities/Artifact/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js +167 -0
- package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +35 -36
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +154 -0
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +3 -3
- package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +29 -30
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js +174 -0
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +3 -3
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +3 -3
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AuditLog/sections/details.component.js +187 -0
- package/dist/lib/generated/Entities/AuditLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +17 -18
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +35 -36
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Authorization/sections/details.component.js +136 -0
- package/dist/lib/generated/Entities/Authorization/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +3 -3
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Collection/collection.form.component.js +23 -24
- package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Collection/sections/details.component.js +185 -0
- package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +3 -3
- package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js +167 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +17 -18
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js +116 -0
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js +167 -0
- package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +17 -18
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js +152 -0
- package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +11 -12
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js +145 -0
- package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Company/company.form.component.js +41 -42
- package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Company/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Company/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Company/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/Company/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +29 -30
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js +255 -0
- package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +3 -3
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +23 -24
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js +183 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +11 -12
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js +156 -0
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Component/component.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Component/component.form.component.js +22 -23
- package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Component/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Component/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Component/sections/details.component.js +316 -0
- package/dist/lib/generated/Entities/Component/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +3 -3
- package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +11 -12
- package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js +179 -0
- package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +3 -3
- package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +11 -12
- package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js +125 -0
- package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +17 -18
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +17 -18
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentItem/sections/details.component.js +196 -0
- package/dist/lib/generated/Entities/ContentItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js +100 -0
- package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +23 -24
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentSource/sections/details.component.js +149 -0
- package/dist/lib/generated/Entities/ContentSource/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +17 -18
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js +116 -0
- package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js.map +1 -0
- 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 -18
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentType/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ContentType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +3 -3
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +42 -43
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Conversation/sections/details.component.js +243 -0
- package/dist/lib/generated/Entities/Conversation/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +23 -24
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +11 -12
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +59 -60
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +299 -0
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +3 -3
- package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.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 +7 -13
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Credential/credential.form.component.js +40 -23
- package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +23 -24
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +29 -30
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Dashboard/sections/details.component.js +223 -0
- package/dist/lib/generated/Entities/Dashboard/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +29 -30
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js +149 -0
- package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +3 -3
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +23 -24
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DataContext/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/DataContext/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +3 -3
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js +214 -0
- package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +11 -12
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Dataset/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/Dataset/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +3 -3
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +11 -12
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js +205 -0
- package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +11 -12
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js +136 -0
- package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +3 -3
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Employee/employee.form.component.js +35 -36
- package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Employee/sections/details.component.js +202 -0
- package/dist/lib/generated/Entities/Employee/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +3 -3
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js +102 -0
- package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js +102 -0
- package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +11 -12
- package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +11 -12
- package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +11 -12
- package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.js +308 -273
- package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/api.component.js +116 -0
- package/dist/lib/generated/Entities/Entity/sections/api.component.js.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/audit.component.js +71 -0
- package/dist/lib/generated/Entities/Entity/sections/audit.component.js.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/db.component.js +107 -0
- package/dist/lib/generated/Entities/Entity/sections/db.component.js.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/details.component.js +415 -0
- package/dist/lib/generated/Entities/Entity/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/top.component.js +107 -0
- package/dist/lib/generated/Entities/Entity/sections/top.component.js.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Entity/sections/ui.component.js +62 -0
- package/dist/lib/generated/Entities/Entity/sections/ui.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js +223 -0
- package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +23 -24
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityAction/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/EntityAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +12 -6
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +11 -12
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +13 -7
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js.map +1 -0
- 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 -3
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js +100 -0
- package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +11 -12
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +23 -24
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js +207 -0
- package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +11 -12
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +31 -26
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityField/sections/details.component.js +561 -0
- package/dist/lib/generated/Entities/EntityField/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js +145 -0
- package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js +236 -0
- package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js +176 -0
- package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js +349 -0
- package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +11 -12
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +3 -3
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Environment/environment.form.component.js +47 -48
- package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Environment/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/Environment/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +18 -12
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +3 -3
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js +152 -0
- package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/File/file.form.component.js +29 -30
- package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/File/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/File/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/File/sections/details.component.js +156 -0
- package/dist/lib/generated/Entities/File/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +3 -3
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js +3 -3
- package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +29 -30
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js +134 -0
- package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +3 -3
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js +203 -0
- package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Integration/integration.form.component.js +23 -24
- package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Integration/sections/details.component.js +135 -0
- package/dist/lib/generated/Entities/Integration/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +3 -3
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js +139 -0
- package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Library/library.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Library/library.form.component.js +17 -18
- package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Library/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Library/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Library/sections/details.component.js +116 -0
- package/dist/lib/generated/Entities/Library/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +3 -3
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/List/list.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/List/list.form.component.js +29 -30
- package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/List/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/List/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/List/sections/details.component.js +178 -0
- package/dist/lib/generated/Entities/List/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +3 -3
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ListDetail/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ListDetail/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +3 -3
- package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +3 -3
- package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +56 -21
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +77 -24
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +3 -3
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +17 -18
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +10 -10
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js +75 -0
- package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js +81 -0
- package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js +81 -0
- package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js +67 -0
- package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +11 -12
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +11 -12
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +11 -12
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Project/project.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Project/project.form.component.js +23 -24
- package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Project/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Project/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Project/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/Project/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +3 -3
- package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/PublicLink/sections/details.component.js +163 -0
- package/dist/lib/generated/Entities/PublicLink/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Query/query.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Query/query.form.component.js +35 -36
- package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Query/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Query/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Query/sections/details.component.js +255 -0
- package/dist/lib/generated/Entities/Query/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +174 -0
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +3 -3
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +3 -3
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryField/sections/details.component.js +219 -0
- package/dist/lib/generated/Entities/QueryField/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +3 -3
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js +172 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Queue/queue.form.component.js +11 -12
- package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Queue/sections/details.component.js +226 -0
- package/dist/lib/generated/Entities/Queue/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +3 -3
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueueTask/sections/details.component.js +163 -0
- package/dist/lib/generated/Entities/QueueTask/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +11 -12
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueueType/sections/details.component.js +116 -0
- package/dist/lib/generated/Entities/QueueType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +16 -23
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Recommendation/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/Recommendation/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +7 -13
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +11 -12
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +31 -19
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecordChange/sections/details.component.js +232 -0
- package/dist/lib/generated/Entities/RecordChange/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js +118 -0
- package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +3 -3
- package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecordLink/sections/details.component.js +156 -0
- package/dist/lib/generated/Entities/RecordLink/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +7 -13
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +17 -18
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js +194 -0
- package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Report/report.form.component.js +28 -35
- package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Report/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Report/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Report/sections/details.component.js +325 -0
- package/dist/lib/generated/Entities/Report/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +3 -3
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +3 -3
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +3 -3
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js +136 -0
- package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +3 -3
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +3 -3
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js +185 -0
- package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +29 -30
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ResourceType/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/ResourceType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Role/role.form.component.js +53 -54
- package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Role/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Role/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Role/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/Role/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +11 -12
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +11 -12
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js +210 -0
- package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +3 -3
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +11 -12
- package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js +329 -0
- package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js +174 -0
- package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +11 -12
- package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js +125 -0
- package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +3 -3
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Skill/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/Skill/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Skill/skill.form.component.js +17 -18
- package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Tag/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/Tag/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Tag/tag.form.component.js +17 -18
- package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +3 -3
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Task/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Task/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Task/sections/details.component.js +274 -0
- package/dist/lib/generated/Entities/Task/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.js +22 -23
- package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +3 -3
- package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TaskType/sections/details.component.js +89 -0
- package/dist/lib/generated/Entities/TaskType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +11 -12
- package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Template/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Template/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Template/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/Template/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Template/template.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Template/template.form.component.js +41 -42
- package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js +138 -0
- package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +11 -12
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js +98 -0
- package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +11 -12
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js +212 -0
- package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +12 -18
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Test/test.form.component.js +17 -18
- package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +3 -3
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +35 -36
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +3 -3
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +23 -24
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +11 -12
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +3 -3
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js +17 -18
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/User/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/User/sections/details.component.js +247 -0
- package/dist/lib/generated/Entities/User/sections/details.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 +540 -487
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserApplication/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/UserApplication/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +11 -12
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserNotification/sections/details.component.js +165 -0
- package/dist/lib/generated/Entities/UserNotification/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js +17 -18
- package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js +183 -0
- package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserRole/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/UserRole/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserView/sections/details.component.js +293 -0
- package/dist/lib/generated/Entities/UserView/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserView/userview.form.component.js +23 -24
- package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +158 -0
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +17 -18
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +3 -3
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +17 -18
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js +129 -0
- package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +11 -12
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js +152 -0
- package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +3 -3
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js +167 -0
- package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js +73 -0
- package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js +85 -0
- package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Workflow/sections/details.component.js +154 -0
- package/dist/lib/generated/Entities/Workflow/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +17 -18
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js +107 -0
- package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +11 -12
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js +145 -0
- package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +3 -3
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/Workspace/sections/details.component.js +109 -0
- package/dist/lib/generated/Entities/Workspace/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +11 -12
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js +156 -0
- package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +3 -3
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js +67 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +92 -85
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +90 -62
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +167 -164
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +0 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +54 -52
|
@@ -34,8 +34,8 @@ const _c5 = (a0, a1, a2) => ({ "high": a0, "medium": a1, "low": a2 });
|
|
|
34
34
|
const _c6 = (a0, a1) => ({ "positive": a0, "negative": a1 });
|
|
35
35
|
const _c7 = (a0, a1, a2) => ({ "fa-arrow-down": a0, "fa-arrow-up": a1, "fa-minus": a2 });
|
|
36
36
|
const _c8 = (a0, a1) => ({ "improved": a0, "regressed": a1 });
|
|
37
|
-
function
|
|
38
|
-
i0.ɵɵelementStart(0, "span",
|
|
37
|
+
function TestSuiteFormComponentExtended_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "span", 17);
|
|
39
39
|
i0.ɵɵelement(1, "i", 29);
|
|
40
40
|
i0.ɵɵtext(2);
|
|
41
41
|
i0.ɵɵelementEnd();
|
|
@@ -44,8 +44,8 @@ function TestSuiteFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1)
|
|
|
44
44
|
i0.ɵɵadvance(2);
|
|
45
45
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.suiteTests.length, " tests ");
|
|
46
46
|
} }
|
|
47
|
-
function
|
|
48
|
-
i0.ɵɵelementStart(0, "div",
|
|
47
|
+
function TestSuiteFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "p");
|
|
49
49
|
i0.ɵɵtext(2);
|
|
50
50
|
i0.ɵɵelementEnd()();
|
|
51
51
|
} if (rf & 2) {
|
|
@@ -53,8 +53,8 @@ function TestSuiteFormComponentExtended_div_37_Template(rf, ctx) { if (rf & 1) {
|
|
|
53
53
|
i0.ɵɵadvance(2);
|
|
54
54
|
i0.ɵɵtextInterpolate(ctx_r0.record.Description);
|
|
55
55
|
} }
|
|
56
|
-
function
|
|
57
|
-
i0.ɵɵelementStart(0, "span",
|
|
56
|
+
function TestSuiteFormComponentExtended_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
i0.ɵɵelementStart(0, "span", 30);
|
|
58
58
|
i0.ɵɵtext(1);
|
|
59
59
|
i0.ɵɵelementEnd();
|
|
60
60
|
} if (rf & 2) {
|
|
@@ -62,8 +62,8 @@ function TestSuiteFormComponentExtended_span_46_Template(rf, ctx) { if (rf & 1)
|
|
|
62
62
|
i0.ɵɵadvance();
|
|
63
63
|
i0.ɵɵtextInterpolate(ctx_r0.suiteTests.length);
|
|
64
64
|
} }
|
|
65
|
-
function
|
|
66
|
-
i0.ɵɵelementStart(0, "span",
|
|
65
|
+
function TestSuiteFormComponentExtended_Conditional_50_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "span", 30);
|
|
67
67
|
i0.ɵɵtext(1);
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
69
|
} if (rf & 2) {
|
|
@@ -71,55 +71,55 @@ function TestSuiteFormComponentExtended_span_50_Template(rf, ctx) { if (rf & 1)
|
|
|
71
71
|
i0.ɵɵadvance();
|
|
72
72
|
i0.ɵɵtextInterpolate(ctx_r0.suiteRuns.length);
|
|
73
73
|
} }
|
|
74
|
-
function
|
|
74
|
+
function TestSuiteFormComponentExtended_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
75
75
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
76
|
-
i0.ɵɵelementStart(0, "div",
|
|
77
|
-
i0.ɵɵelement(3, "i",
|
|
76
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 43)(2, "h3");
|
|
77
|
+
i0.ɵɵelement(3, "i", 44);
|
|
78
78
|
i0.ɵɵtext(4, " Suite Information");
|
|
79
79
|
i0.ɵɵelementEnd();
|
|
80
|
-
i0.ɵɵelementStart(5, "div",
|
|
80
|
+
i0.ɵɵelementStart(5, "div", 45)(6, "div", 46)(7, "div", 47);
|
|
81
81
|
i0.ɵɵtext(8, "Name");
|
|
82
82
|
i0.ɵɵelementEnd();
|
|
83
|
-
i0.ɵɵelementStart(9, "div",
|
|
83
|
+
i0.ɵɵelementStart(9, "div", 48);
|
|
84
84
|
i0.ɵɵtext(10);
|
|
85
85
|
i0.ɵɵelementEnd()();
|
|
86
|
-
i0.ɵɵelementStart(11, "div",
|
|
86
|
+
i0.ɵɵelementStart(11, "div", 46)(12, "div", 47);
|
|
87
87
|
i0.ɵɵtext(13, "Status");
|
|
88
88
|
i0.ɵɵelementEnd();
|
|
89
|
-
i0.ɵɵelementStart(14, "div",
|
|
89
|
+
i0.ɵɵelementStart(14, "div", 48)(15, "span", 49);
|
|
90
90
|
i0.ɵɵtext(16);
|
|
91
91
|
i0.ɵɵelementEnd()()();
|
|
92
|
-
i0.ɵɵelementStart(17, "div",
|
|
92
|
+
i0.ɵɵelementStart(17, "div", 46)(18, "div", 47);
|
|
93
93
|
i0.ɵɵtext(19, "Created");
|
|
94
94
|
i0.ɵɵelementEnd();
|
|
95
|
-
i0.ɵɵelementStart(20, "div",
|
|
95
|
+
i0.ɵɵelementStart(20, "div", 48);
|
|
96
96
|
i0.ɵɵtext(21);
|
|
97
97
|
i0.ɵɵpipe(22, "date");
|
|
98
98
|
i0.ɵɵelementEnd()();
|
|
99
|
-
i0.ɵɵelementStart(23, "div",
|
|
99
|
+
i0.ɵɵelementStart(23, "div", 46)(24, "div", 47);
|
|
100
100
|
i0.ɵɵtext(25, "Updated");
|
|
101
101
|
i0.ɵɵelementEnd();
|
|
102
|
-
i0.ɵɵelementStart(26, "div",
|
|
102
|
+
i0.ɵɵelementStart(26, "div", 48);
|
|
103
103
|
i0.ɵɵtext(27);
|
|
104
104
|
i0.ɵɵpipe(28, "date");
|
|
105
105
|
i0.ɵɵelementEnd()();
|
|
106
|
-
i0.ɵɵelementStart(29, "div",
|
|
106
|
+
i0.ɵɵelementStart(29, "div", 46)(30, "div", 47);
|
|
107
107
|
i0.ɵɵtext(31, "Max Execution Time");
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵelementStart(32, "div",
|
|
109
|
+
i0.ɵɵelementStart(32, "div", 48);
|
|
110
110
|
i0.ɵɵtext(33);
|
|
111
111
|
i0.ɵɵelementEnd()()()();
|
|
112
|
-
i0.ɵɵelementStart(34, "div",
|
|
113
|
-
i0.ɵɵelement(36, "i",
|
|
112
|
+
i0.ɵɵelementStart(34, "div", 50)(35, "h3");
|
|
113
|
+
i0.ɵɵelement(36, "i", 51);
|
|
114
114
|
i0.ɵɵtext(37, " Execution Settings");
|
|
115
115
|
i0.ɵɵelementEnd();
|
|
116
|
-
i0.ɵɵelementStart(38, "div",
|
|
116
|
+
i0.ɵɵelementStart(38, "div", 52)(39, "div", 53)(40, "label");
|
|
117
117
|
i0.ɵɵtext(41, "Max Execution Time (ms)");
|
|
118
118
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(42, "input",
|
|
120
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
119
|
+
i0.ɵɵelementStart(42, "input", 54);
|
|
120
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteFormComponentExtended_Conditional_58_Template_input_ngModelChange_42_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.MaxExecutionTimeMS, $event) || (ctx_r0.record.MaxExecutionTimeMS = $event); return i0.ɵɵresetView($event); });
|
|
121
121
|
i0.ɵɵelementEnd();
|
|
122
|
-
i0.ɵɵelementStart(43, "span",
|
|
122
|
+
i0.ɵɵelementStart(43, "span", 55);
|
|
123
123
|
i0.ɵɵtext(44, "Default timeout for tests in this suite");
|
|
124
124
|
i0.ɵɵelementEnd()()()()();
|
|
125
125
|
} if (rf & 2) {
|
|
@@ -139,48 +139,48 @@ function TestSuiteFormComponentExtended_div_58_Template(rf, ctx) { if (rf & 1) {
|
|
|
139
139
|
i0.ɵɵadvance(9);
|
|
140
140
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.record.MaxExecutionTimeMS);
|
|
141
141
|
} }
|
|
142
|
-
function
|
|
143
|
-
i0.ɵɵelementStart(0, "div",
|
|
144
|
-
i0.ɵɵelement(1, "div",
|
|
145
|
-
i0.ɵɵelementStart(3, "div",
|
|
146
|
-
i0.ɵɵelement(4, "div",
|
|
142
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
144
|
+
i0.ɵɵelement(1, "div", 61)(2, "div", 62);
|
|
145
|
+
i0.ɵɵelementStart(3, "div", 63);
|
|
146
|
+
i0.ɵɵelement(4, "div", 64)(5, "div", 65);
|
|
147
147
|
i0.ɵɵelementEnd()();
|
|
148
148
|
} }
|
|
149
|
-
function
|
|
150
|
-
i0.ɵɵelementStart(0, "div",
|
|
151
|
-
i0.ɵɵ
|
|
149
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
150
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "div", 59);
|
|
151
|
+
i0.ɵɵrepeaterCreate(2, TestSuiteFormComponentExtended_Conditional_59_Conditional_1_For_3_Template, 6, 0, "div", 60, i0.ɵɵrepeaterTrackByIdentity);
|
|
152
152
|
i0.ɵɵelementEnd()();
|
|
153
153
|
} if (rf & 2) {
|
|
154
154
|
i0.ɵɵadvance(2);
|
|
155
|
-
i0.ɵɵ
|
|
155
|
+
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c1));
|
|
156
156
|
} }
|
|
157
|
-
function
|
|
157
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
158
158
|
i0.ɵɵelementStart(0, "span");
|
|
159
|
-
i0.ɵɵelement(1, "i",
|
|
159
|
+
i0.ɵɵelement(1, "i", 44);
|
|
160
160
|
i0.ɵɵtext(2);
|
|
161
161
|
i0.ɵɵelementEnd();
|
|
162
162
|
} if (rf & 2) {
|
|
163
163
|
const test_r4 = i0.ɵɵnextContext().$implicit;
|
|
164
164
|
i0.ɵɵadvance(2);
|
|
165
|
-
i0.ɵɵtextInterpolate1(" ", test_r4.Status
|
|
165
|
+
i0.ɵɵtextInterpolate1(" ", test_r4.Status);
|
|
166
166
|
} }
|
|
167
|
-
function
|
|
167
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
168
168
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
169
|
-
i0.ɵɵelementStart(0, "div",
|
|
170
|
-
i0.ɵɵlistener("click", function
|
|
171
|
-
i0.ɵɵelementStart(1, "div",
|
|
169
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
170
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template_div_click_0_listener() { const test_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTest(test_r4.TestID)); });
|
|
171
|
+
i0.ɵɵelementStart(1, "div", 68);
|
|
172
172
|
i0.ɵɵtext(2);
|
|
173
173
|
i0.ɵɵelementEnd();
|
|
174
|
-
i0.ɵɵelementStart(3, "div",
|
|
174
|
+
i0.ɵɵelementStart(3, "div", 69);
|
|
175
175
|
i0.ɵɵelement(4, "i", 29);
|
|
176
176
|
i0.ɵɵelementEnd();
|
|
177
|
-
i0.ɵɵelementStart(5, "div",
|
|
177
|
+
i0.ɵɵelementStart(5, "div", 70)(6, "div", 71);
|
|
178
178
|
i0.ɵɵtext(7);
|
|
179
179
|
i0.ɵɵelementEnd();
|
|
180
|
-
i0.ɵɵelementStart(8, "div",
|
|
181
|
-
i0.ɵɵ
|
|
180
|
+
i0.ɵɵelementStart(8, "div", 72);
|
|
181
|
+
i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Conditional_9_Template, 3, 1, "span");
|
|
182
182
|
i0.ɵɵelementEnd()();
|
|
183
|
-
i0.ɵɵelement(10, "i",
|
|
183
|
+
i0.ɵɵelement(10, "i", 73);
|
|
184
184
|
i0.ɵɵelementEnd();
|
|
185
185
|
} if (rf & 2) {
|
|
186
186
|
const test_r4 = ctx.$implicit;
|
|
@@ -189,19 +189,19 @@ function TestSuiteFormComponentExtended_div_59_div_2_div_1_Template(rf, ctx) { i
|
|
|
189
189
|
i0.ɵɵadvance(5);
|
|
190
190
|
i0.ɵɵtextInterpolate(test_r4.Test);
|
|
191
191
|
i0.ɵɵadvance(2);
|
|
192
|
-
i0.ɵɵ
|
|
192
|
+
i0.ɵɵconditional(test_r4.Status ? 9 : -1);
|
|
193
193
|
} }
|
|
194
|
-
function
|
|
195
|
-
i0.ɵɵelementStart(0, "div",
|
|
196
|
-
i0.ɵɵ
|
|
194
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
196
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template, 11, 3, "div", 66, i0.ɵɵrepeaterTrackByIdentity);
|
|
197
197
|
i0.ɵɵelementEnd();
|
|
198
198
|
} if (rf & 2) {
|
|
199
199
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
200
200
|
i0.ɵɵadvance();
|
|
201
|
-
i0.ɵɵ
|
|
201
|
+
i0.ɵɵrepeater(ctx_r0.suiteTests);
|
|
202
202
|
} }
|
|
203
|
-
function
|
|
204
|
-
i0.ɵɵelementStart(0, "div",
|
|
203
|
+
function TestSuiteFormComponentExtended_Conditional_59_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
205
205
|
i0.ɵɵelement(2, "i", 29);
|
|
206
206
|
i0.ɵɵelementEnd();
|
|
207
207
|
i0.ɵɵelementStart(3, "h4");
|
|
@@ -211,37 +211,39 @@ function TestSuiteFormComponentExtended_div_59_div_3_Template(rf, ctx) { if (rf
|
|
|
211
211
|
i0.ɵɵtext(6, "Add tests to this suite to start running them together.");
|
|
212
212
|
i0.ɵɵelementEnd()();
|
|
213
213
|
} }
|
|
214
|
-
function
|
|
215
|
-
i0.ɵɵelementStart(0, "div",
|
|
216
|
-
i0.ɵɵ
|
|
214
|
+
function TestSuiteFormComponentExtended_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
216
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_59_Conditional_1_Template, 4, 1, "div", 56);
|
|
217
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_Template, 3, 0, "div", 57);
|
|
218
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_59_Conditional_3_Template, 7, 0, "div", 58);
|
|
217
219
|
i0.ɵɵelementEnd();
|
|
218
220
|
} if (rf & 2) {
|
|
219
221
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
220
222
|
i0.ɵɵadvance();
|
|
221
|
-
i0.ɵɵ
|
|
223
|
+
i0.ɵɵconditional(ctx_r0.loadingTests ? 1 : -1);
|
|
222
224
|
i0.ɵɵadvance();
|
|
223
|
-
i0.ɵɵ
|
|
225
|
+
i0.ɵɵconditional(!ctx_r0.loadingTests && ctx_r0.suiteTests.length > 0 ? 2 : -1);
|
|
224
226
|
i0.ɵɵadvance();
|
|
225
|
-
i0.ɵɵ
|
|
227
|
+
i0.ɵɵconditional(ctx_r0.testsLoaded && !ctx_r0.loadingTests && ctx_r0.suiteTests.length === 0 ? 3 : -1);
|
|
226
228
|
} }
|
|
227
|
-
function
|
|
228
|
-
i0.ɵɵelementStart(0, "div",
|
|
229
|
-
i0.ɵɵelement(1, "div",
|
|
230
|
-
i0.ɵɵelementStart(2, "div",
|
|
231
|
-
i0.ɵɵelement(3, "div",
|
|
229
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
230
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
231
|
+
i0.ɵɵelement(1, "div", 62);
|
|
232
|
+
i0.ɵɵelementStart(2, "div", 63);
|
|
233
|
+
i0.ɵɵelement(3, "div", 64)(4, "div", 65);
|
|
232
234
|
i0.ɵɵelementEnd()();
|
|
233
235
|
} }
|
|
234
|
-
function
|
|
235
|
-
i0.ɵɵelementStart(0, "div",
|
|
236
|
-
i0.ɵɵ
|
|
236
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
237
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "div", 59);
|
|
238
|
+
i0.ɵɵrepeaterCreate(2, TestSuiteFormComponentExtended_Conditional_60_Conditional_1_For_3_Template, 5, 0, "div", 60, i0.ɵɵrepeaterTrackByIdentity);
|
|
237
239
|
i0.ɵɵelementEnd()();
|
|
238
240
|
} if (rf & 2) {
|
|
239
241
|
i0.ɵɵadvance(2);
|
|
240
|
-
i0.ɵɵ
|
|
242
|
+
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c2));
|
|
241
243
|
} }
|
|
242
|
-
function
|
|
244
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
243
245
|
i0.ɵɵelementStart(0, "span");
|
|
244
|
-
i0.ɵɵelement(1, "i",
|
|
246
|
+
i0.ɵɵelement(1, "i", 91);
|
|
245
247
|
i0.ɵɵtext(2);
|
|
246
248
|
i0.ɵɵelementEnd();
|
|
247
249
|
} if (rf & 2) {
|
|
@@ -250,9 +252,9 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_13_Template(rf,
|
|
|
250
252
|
i0.ɵɵadvance(2);
|
|
251
253
|
i0.ɵɵtextInterpolate3(" ", run_r6.PassedTests, "/", run_r6.TotalTests, " (", ctx_r0.getPassRate(run_r6).toFixed(0), "%) ");
|
|
252
254
|
} }
|
|
253
|
-
function
|
|
254
|
-
i0.ɵɵelementStart(0, "span",
|
|
255
|
-
i0.ɵɵelement(1, "i",
|
|
255
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
+
i0.ɵɵelementStart(0, "span", 92);
|
|
257
|
+
i0.ɵɵelement(1, "i", 79);
|
|
256
258
|
i0.ɵɵelementEnd();
|
|
257
259
|
} if (rf & 2) {
|
|
258
260
|
const run_r6 = i0.ɵɵnextContext().$implicit;
|
|
@@ -260,16 +262,16 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_15_Template(rf,
|
|
|
260
262
|
i0.ɵɵadvance();
|
|
261
263
|
i0.ɵɵclassProp("fa-circle-check", run_r6.Status === "Completed")("fa-circle-xmark", run_r6.Status === "Failed")("fa-spinner", run_r6.Status === "Running")("fa-clock", run_r6.Status === "Pending")("fa-ban", run_r6.Status === "Cancelled");
|
|
262
264
|
} }
|
|
263
|
-
function
|
|
264
|
-
i0.ɵɵelementStart(0, "span",
|
|
265
|
-
i0.ɵɵelement(1, "i",
|
|
266
|
-
i0.ɵɵelementStart(2, "span",
|
|
267
|
-
i0.ɵɵelement(3, "i",
|
|
265
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
i0.ɵɵelementStart(0, "span", 88);
|
|
267
|
+
i0.ɵɵelement(1, "i", 93);
|
|
268
|
+
i0.ɵɵelementStart(2, "span", 94);
|
|
269
|
+
i0.ɵɵelement(3, "i", 95);
|
|
268
270
|
i0.ɵɵelementEnd()();
|
|
269
271
|
} }
|
|
270
|
-
function
|
|
271
|
-
i0.ɵɵelementStart(0, "span",
|
|
272
|
-
i0.ɵɵelement(1, "i",
|
|
272
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
274
|
+
i0.ɵɵelement(1, "i", 97);
|
|
273
275
|
i0.ɵɵelementStart(2, "span");
|
|
274
276
|
i0.ɵɵtext(3);
|
|
275
277
|
i0.ɵɵelementEnd()();
|
|
@@ -280,8 +282,8 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_17_Template(rf,
|
|
|
280
282
|
i0.ɵɵadvance(3);
|
|
281
283
|
i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r6).toFixed(0), "%");
|
|
282
284
|
} }
|
|
283
|
-
function
|
|
284
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵelementStart(0, "span", 98);
|
|
285
287
|
i0.ɵɵtext(1);
|
|
286
288
|
i0.ɵɵelementEnd();
|
|
287
289
|
} if (rf & 2) {
|
|
@@ -289,41 +291,43 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_span_1_Templat
|
|
|
289
291
|
i0.ɵɵadvance();
|
|
290
292
|
i0.ɵɵtextInterpolate(tag_r7);
|
|
291
293
|
} }
|
|
292
|
-
function
|
|
293
|
-
i0.ɵɵelementStart(0, "div",
|
|
294
|
-
i0.ɵɵ
|
|
294
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
295
|
+
i0.ɵɵelementStart(0, "div", 90);
|
|
296
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_For_2_Template, 2, 1, "span", 98, i0.ɵɵrepeaterTrackByIdentity);
|
|
295
297
|
i0.ɵɵelementEnd();
|
|
296
298
|
} if (rf & 2) {
|
|
297
299
|
const run_r6 = i0.ɵɵnextContext().$implicit;
|
|
298
300
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
299
301
|
i0.ɵɵadvance();
|
|
300
|
-
i0.ɵɵ
|
|
302
|
+
i0.ɵɵrepeater(ctx_r0.getRunTags(run_r6));
|
|
301
303
|
} }
|
|
302
|
-
function
|
|
304
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
303
305
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
304
|
-
i0.ɵɵelementStart(0, "div",
|
|
305
|
-
i0.ɵɵlistener("click", function
|
|
306
|
-
i0.ɵɵelementStart(1, "div",
|
|
307
|
-
i0.ɵɵelement(2, "i",
|
|
306
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
307
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template_div_click_0_listener() { const run_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r6.ID)); });
|
|
308
|
+
i0.ɵɵelementStart(1, "div", 78);
|
|
309
|
+
i0.ɵɵelement(2, "i", 79);
|
|
308
310
|
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵelementStart(3, "div",
|
|
311
|
+
i0.ɵɵelementStart(3, "div", 80)(4, "div", 81)(5, "span", 82);
|
|
310
312
|
i0.ɵɵtext(6);
|
|
311
313
|
i0.ɵɵelementEnd();
|
|
312
|
-
i0.ɵɵelementStart(7, "span",
|
|
314
|
+
i0.ɵɵelementStart(7, "span", 83);
|
|
313
315
|
i0.ɵɵtext(8);
|
|
314
316
|
i0.ɵɵelementEnd()();
|
|
315
|
-
i0.ɵɵelementStart(9, "div",
|
|
316
|
-
i0.ɵɵelement(11, "i",
|
|
317
|
+
i0.ɵɵelementStart(9, "div", 84)(10, "span");
|
|
318
|
+
i0.ɵɵelement(11, "i", 85);
|
|
317
319
|
i0.ɵɵtext(12);
|
|
318
320
|
i0.ɵɵelementEnd();
|
|
319
|
-
i0.ɵɵ
|
|
321
|
+
i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_13_Template, 3, 3, "span");
|
|
320
322
|
i0.ɵɵelementEnd();
|
|
321
|
-
i0.ɵɵelementStart(14, "div",
|
|
322
|
-
i0.ɵɵ
|
|
323
|
+
i0.ɵɵelementStart(14, "div", 86);
|
|
324
|
+
i0.ɵɵconditionalCreate(15, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_15_Template, 2, 12, "span", 87);
|
|
325
|
+
i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_16_Template, 4, 0, "span", 88);
|
|
326
|
+
i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_17_Template, 4, 7, "span", 89);
|
|
323
327
|
i0.ɵɵelementEnd();
|
|
324
|
-
i0.ɵɵ
|
|
328
|
+
i0.ɵɵconditionalCreate(18, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_Template, 3, 0, "div", 90);
|
|
325
329
|
i0.ɵɵelementEnd();
|
|
326
|
-
i0.ɵɵelement(19, "i",
|
|
330
|
+
i0.ɵɵelement(19, "i", 73);
|
|
327
331
|
i0.ɵɵelementEnd();
|
|
328
332
|
} if (rf & 2) {
|
|
329
333
|
const run_r6 = ctx.$implicit;
|
|
@@ -333,37 +337,37 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_Template(rf, ctx) { i
|
|
|
333
337
|
i0.ɵɵadvance();
|
|
334
338
|
i0.ɵɵclassProp("fa-check", run_r6.Status === "Completed")("fa-times", run_r6.Status === "Failed")("fa-spinner", run_r6.Status === "Running")("fa-clock", run_r6.Status === "Pending")("fa-ban", run_r6.Status === "Cancelled");
|
|
335
339
|
i0.ɵɵadvance(4);
|
|
336
|
-
i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8)
|
|
340
|
+
i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8));
|
|
337
341
|
i0.ɵɵadvance();
|
|
338
342
|
i0.ɵɵstyleProp("color", ctx_r0.getRunStatusColor(run_r6.Status));
|
|
339
343
|
i0.ɵɵadvance();
|
|
340
344
|
i0.ɵɵtextInterpolate(run_r6.Status);
|
|
341
345
|
i0.ɵɵadvance(4);
|
|
342
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt)
|
|
346
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt));
|
|
343
347
|
i0.ɵɵadvance();
|
|
344
|
-
i0.ɵɵ
|
|
348
|
+
i0.ɵɵconditional(run_r6.TotalTests ? 13 : -1);
|
|
345
349
|
i0.ɵɵadvance(2);
|
|
346
|
-
i0.ɵɵ
|
|
350
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 15 : -1);
|
|
347
351
|
i0.ɵɵadvance();
|
|
348
|
-
i0.ɵɵ
|
|
352
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 16 : -1);
|
|
349
353
|
i0.ɵɵadvance();
|
|
350
|
-
i0.ɵɵ
|
|
354
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && run_r6.TotalTests ? 17 : -1);
|
|
351
355
|
i0.ɵɵadvance();
|
|
352
|
-
i0.ɵɵ
|
|
356
|
+
i0.ɵɵconditional(ctx_r0.getRunTags(run_r6).length > 0 ? 18 : -1);
|
|
353
357
|
} }
|
|
354
|
-
function
|
|
355
|
-
i0.ɵɵelementStart(0, "div",
|
|
356
|
-
i0.ɵɵ
|
|
358
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
359
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
360
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template, 20, 22, "div", 76, i0.ɵɵrepeaterTrackByIdentity);
|
|
357
361
|
i0.ɵɵelementEnd();
|
|
358
362
|
} if (rf & 2) {
|
|
359
363
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
360
364
|
i0.ɵɵadvance();
|
|
361
|
-
i0.ɵɵ
|
|
365
|
+
i0.ɵɵrepeater(ctx_r0.suiteRuns);
|
|
362
366
|
} }
|
|
363
|
-
function
|
|
367
|
+
function TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
364
368
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
365
|
-
i0.ɵɵelementStart(0, "div",
|
|
366
|
-
i0.ɵɵelement(2, "i",
|
|
369
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
370
|
+
i0.ɵɵelement(2, "i", 99);
|
|
367
371
|
i0.ɵɵelementEnd();
|
|
368
372
|
i0.ɵɵelementStart(3, "h4");
|
|
369
373
|
i0.ɵɵtext(4, "No Suite Runs Yet");
|
|
@@ -372,30 +376,32 @@ function TestSuiteFormComponentExtended_div_60_div_3_Template(rf, ctx) { if (rf
|
|
|
372
376
|
i0.ɵɵtext(6, "Run this suite to see execution history and results here.");
|
|
373
377
|
i0.ɵɵelementEnd();
|
|
374
378
|
i0.ɵɵelementStart(7, "button", 21);
|
|
375
|
-
i0.ɵɵlistener("click", function
|
|
379
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
|
|
376
380
|
i0.ɵɵelement(8, "i", 22);
|
|
377
381
|
i0.ɵɵtext(9, " Run Suite Now ");
|
|
378
382
|
i0.ɵɵelementEnd()();
|
|
379
383
|
} }
|
|
380
|
-
function
|
|
381
|
-
i0.ɵɵelementStart(0, "div",
|
|
382
|
-
i0.ɵɵ
|
|
384
|
+
function TestSuiteFormComponentExtended_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
385
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
386
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_1_Template, 4, 1, "div", 56);
|
|
387
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_Template, 3, 0, "div", 75);
|
|
388
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template, 10, 0, "div", 58);
|
|
383
389
|
i0.ɵɵelementEnd();
|
|
384
390
|
} if (rf & 2) {
|
|
385
391
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
386
392
|
i0.ɵɵadvance();
|
|
387
|
-
i0.ɵɵ
|
|
393
|
+
i0.ɵɵconditional(ctx_r0.loadingRuns ? 1 : -1);
|
|
388
394
|
i0.ɵɵadvance();
|
|
389
|
-
i0.ɵɵ
|
|
395
|
+
i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 2 : -1);
|
|
390
396
|
i0.ɵɵadvance();
|
|
391
|
-
i0.ɵɵ
|
|
397
|
+
i0.ɵɵconditional(ctx_r0.runsLoaded && !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length === 0 ? 3 : -1);
|
|
392
398
|
} }
|
|
393
|
-
function
|
|
394
|
-
i0.ɵɵelementStart(0, "div",
|
|
395
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
399
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
401
|
+
i0.ɵɵelement(1, "mj-loading", 100);
|
|
396
402
|
i0.ɵɵelementEnd();
|
|
397
403
|
} }
|
|
398
|
-
function
|
|
404
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
399
405
|
i0.ɵɵelementStart(0, "span");
|
|
400
406
|
i0.ɵɵtext(1);
|
|
401
407
|
i0.ɵɵelementEnd();
|
|
@@ -404,20 +410,20 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_span_20_span_2_Tem
|
|
|
404
410
|
i0.ɵɵadvance();
|
|
405
411
|
i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r0.selectedTags.length, " tags");
|
|
406
412
|
} }
|
|
407
|
-
function
|
|
408
|
-
i0.ɵɵelementStart(0, "span",
|
|
413
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
414
|
+
i0.ɵɵelementStart(0, "span", 111);
|
|
409
415
|
i0.ɵɵtext(1);
|
|
410
|
-
i0.ɵɵ
|
|
416
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Conditional_2_Template, 2, 1, "span");
|
|
411
417
|
i0.ɵɵelementEnd();
|
|
412
418
|
} if (rf & 2) {
|
|
413
419
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
414
420
|
i0.ɵɵadvance();
|
|
415
421
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.analyticsTimeRange === "all" ? "All Time" : ctx_r0.analyticsTimeRange, " ");
|
|
416
422
|
i0.ɵɵadvance();
|
|
417
|
-
i0.ɵɵ
|
|
423
|
+
i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 2 : -1);
|
|
418
424
|
} }
|
|
419
|
-
function
|
|
420
|
-
i0.ɵɵelementStart(0, "span",
|
|
425
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
426
|
+
i0.ɵɵelementStart(0, "span", 116);
|
|
421
427
|
i0.ɵɵtext(1);
|
|
422
428
|
i0.ɵɵelementEnd();
|
|
423
429
|
} if (rf & 2) {
|
|
@@ -425,14 +431,14 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_span
|
|
|
425
431
|
i0.ɵɵadvance();
|
|
426
432
|
i0.ɵɵtextInterpolate1("(", ctx_r0.selectedTags.length, " selected)");
|
|
427
433
|
} }
|
|
428
|
-
function
|
|
429
|
-
i0.ɵɵelement(0, "i",
|
|
434
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
435
|
+
i0.ɵɵelement(0, "i", 121);
|
|
430
436
|
} }
|
|
431
|
-
function
|
|
437
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
432
438
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
433
|
-
i0.ɵɵelementStart(0, "button",
|
|
434
|
-
i0.ɵɵlistener("click", function
|
|
435
|
-
i0.ɵɵ
|
|
439
|
+
i0.ɵɵelementStart(0, "button", 120);
|
|
440
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template_button_click_0_listener() { const tag_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(tag_r13)); });
|
|
441
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Conditional_1_Template, 1, 0, "i", 121);
|
|
436
442
|
i0.ɵɵtext(2);
|
|
437
443
|
i0.ɵɵelementEnd();
|
|
438
444
|
} if (rf & 2) {
|
|
@@ -440,54 +446,54 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_butt
|
|
|
440
446
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
441
447
|
i0.ɵɵclassProp("active", ctx_r0.isTagSelected(tag_r13));
|
|
442
448
|
i0.ɵɵadvance();
|
|
443
|
-
i0.ɵɵ
|
|
449
|
+
i0.ɵɵconditional(ctx_r0.isTagSelected(tag_r13) ? 1 : -1);
|
|
444
450
|
i0.ɵɵadvance();
|
|
445
451
|
i0.ɵɵtextInterpolate1(" ", tag_r13, " ");
|
|
446
452
|
} }
|
|
447
|
-
function
|
|
453
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
448
454
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
449
|
-
i0.ɵɵelementStart(0, "div",
|
|
455
|
+
i0.ɵɵelementStart(0, "div", 113)(1, "label");
|
|
450
456
|
i0.ɵɵtext(2, "Filter by Tag ");
|
|
451
|
-
i0.ɵɵ
|
|
457
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Conditional_3_Template, 2, 1, "span", 116);
|
|
452
458
|
i0.ɵɵelementEnd();
|
|
453
|
-
i0.ɵɵelementStart(4, "div",
|
|
454
|
-
i0.ɵɵlistener("click", function
|
|
459
|
+
i0.ɵɵelementStart(4, "div", 117)(5, "button", 118);
|
|
460
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(null)); });
|
|
455
461
|
i0.ɵɵelement(6, "i", 9);
|
|
456
462
|
i0.ɵɵtext(7, " All Tags ");
|
|
457
463
|
i0.ɵɵelementEnd();
|
|
458
|
-
i0.ɵɵ
|
|
464
|
+
i0.ɵɵrepeaterCreate(8, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template, 3, 4, "button", 119, i0.ɵɵrepeaterTrackByIdentity);
|
|
459
465
|
i0.ɵɵelementEnd()();
|
|
460
466
|
} if (rf & 2) {
|
|
461
467
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
462
468
|
i0.ɵɵadvance(3);
|
|
463
|
-
i0.ɵɵ
|
|
469
|
+
i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 3 : -1);
|
|
464
470
|
i0.ɵɵadvance(2);
|
|
465
471
|
i0.ɵɵclassProp("active", ctx_r0.selectedTags.length === 0);
|
|
466
472
|
i0.ɵɵadvance(3);
|
|
467
|
-
i0.ɵɵ
|
|
473
|
+
i0.ɵɵrepeater(ctx_r0.uniqueTags);
|
|
468
474
|
} }
|
|
469
|
-
function
|
|
475
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
470
476
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
471
|
-
i0.ɵɵelementStart(0, "div",
|
|
477
|
+
i0.ɵɵelementStart(0, "div", 112)(1, "div", 113)(2, "label");
|
|
472
478
|
i0.ɵɵtext(3, "Time Range");
|
|
473
479
|
i0.ɵɵelementEnd();
|
|
474
|
-
i0.ɵɵelementStart(4, "div",
|
|
475
|
-
i0.ɵɵlistener("click", function
|
|
480
|
+
i0.ɵɵelementStart(4, "div", 114)(5, "button", 115);
|
|
481
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("7d")); });
|
|
476
482
|
i0.ɵɵtext(6, "7 Days");
|
|
477
483
|
i0.ɵɵelementEnd();
|
|
478
|
-
i0.ɵɵelementStart(7, "button",
|
|
479
|
-
i0.ɵɵlistener("click", function
|
|
484
|
+
i0.ɵɵelementStart(7, "button", 115);
|
|
485
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("30d")); });
|
|
480
486
|
i0.ɵɵtext(8, "30 Days");
|
|
481
487
|
i0.ɵɵelementEnd();
|
|
482
|
-
i0.ɵɵelementStart(9, "button",
|
|
483
|
-
i0.ɵɵlistener("click", function
|
|
488
|
+
i0.ɵɵelementStart(9, "button", 115);
|
|
489
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("90d")); });
|
|
484
490
|
i0.ɵɵtext(10, "90 Days");
|
|
485
491
|
i0.ɵɵelementEnd();
|
|
486
|
-
i0.ɵɵelementStart(11, "button",
|
|
487
|
-
i0.ɵɵlistener("click", function
|
|
492
|
+
i0.ɵɵelementStart(11, "button", 115);
|
|
493
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("all")); });
|
|
488
494
|
i0.ɵɵtext(12, "All Time");
|
|
489
495
|
i0.ɵɵelementEnd()()();
|
|
490
|
-
i0.ɵɵ
|
|
496
|
+
i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template, 10, 3, "div", 113);
|
|
491
497
|
i0.ɵɵelementEnd();
|
|
492
498
|
} if (rf & 2) {
|
|
493
499
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -500,10 +506,10 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_Template(rf
|
|
|
500
506
|
i0.ɵɵadvance(2);
|
|
501
507
|
i0.ɵɵclassProp("active", ctx_r0.analyticsTimeRange === "all");
|
|
502
508
|
i0.ɵɵadvance(2);
|
|
503
|
-
i0.ɵɵ
|
|
509
|
+
i0.ɵɵconditional(ctx_r0.uniqueTags.length > 0 ? 13 : -1);
|
|
504
510
|
} }
|
|
505
|
-
function
|
|
506
|
-
i0.ɵɵelementStart(0, "span",
|
|
511
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_For_21_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
i0.ɵɵelementStart(0, "span", 144);
|
|
507
513
|
i0.ɵɵtext(1);
|
|
508
514
|
i0.ɵɵelementEnd();
|
|
509
515
|
} if (rf & 2) {
|
|
@@ -511,28 +517,28 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr
|
|
|
511
517
|
i0.ɵɵadvance();
|
|
512
518
|
i0.ɵɵtextInterpolate(tag_r16);
|
|
513
519
|
} }
|
|
514
|
-
function
|
|
515
|
-
i0.ɵɵelementStart(0, "span",
|
|
520
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
521
|
+
i0.ɵɵelementStart(0, "span", 145);
|
|
516
522
|
i0.ɵɵtext(1);
|
|
517
523
|
i0.ɵɵelementEnd();
|
|
518
524
|
} if (rf & 2) {
|
|
519
525
|
const dp_r15 = i0.ɵɵnextContext().$implicit;
|
|
520
526
|
i0.ɵɵadvance();
|
|
521
|
-
i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2
|
|
527
|
+
i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2);
|
|
522
528
|
} }
|
|
523
|
-
function
|
|
529
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template(rf, ctx) { if (rf & 1) {
|
|
524
530
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
525
|
-
i0.ɵɵelementStart(0, "tr",
|
|
526
|
-
i0.ɵɵlistener("click", function
|
|
531
|
+
i0.ɵɵelementStart(0, "tr", 139);
|
|
532
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template_tr_click_0_listener() { const dp_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openSuiteRun(dp_r15.runId)); });
|
|
527
533
|
i0.ɵɵelementStart(1, "td");
|
|
528
534
|
i0.ɵɵtext(2);
|
|
529
535
|
i0.ɵɵpipe(3, "date");
|
|
530
536
|
i0.ɵɵelementEnd();
|
|
531
|
-
i0.ɵɵelementStart(4, "td")(5, "span",
|
|
537
|
+
i0.ɵɵelementStart(4, "td")(5, "span", 140);
|
|
532
538
|
i0.ɵɵtext(6);
|
|
533
539
|
i0.ɵɵelementEnd()();
|
|
534
|
-
i0.ɵɵelementStart(7, "td")(8, "div",
|
|
535
|
-
i0.ɵɵelement(9, "div",
|
|
540
|
+
i0.ɵɵelementStart(7, "td")(8, "div", 141);
|
|
541
|
+
i0.ɵɵelement(9, "div", 142);
|
|
536
542
|
i0.ɵɵelementStart(10, "span");
|
|
537
543
|
i0.ɵɵtext(11);
|
|
538
544
|
i0.ɵɵelementEnd()()();
|
|
@@ -545,122 +551,121 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr
|
|
|
545
551
|
i0.ɵɵelementStart(16, "td");
|
|
546
552
|
i0.ɵɵtext(17);
|
|
547
553
|
i0.ɵɵelementEnd();
|
|
548
|
-
i0.ɵɵelementStart(18, "td")(19, "div",
|
|
549
|
-
i0.ɵɵ
|
|
554
|
+
i0.ɵɵelementStart(18, "td")(19, "div", 143);
|
|
555
|
+
i0.ɵɵrepeaterCreate(20, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_For_21_Template, 2, 1, "span", 144, i0.ɵɵrepeaterTrackByIdentity);
|
|
556
|
+
i0.ɵɵconditionalCreate(22, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Conditional_22_Template, 2, 1, "span", 145);
|
|
550
557
|
i0.ɵɵelementEnd()()();
|
|
551
558
|
} if (rf & 2) {
|
|
552
559
|
const dp_r15 = ctx.$implicit;
|
|
553
560
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
554
561
|
i0.ɵɵadvance(2);
|
|
555
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3,
|
|
562
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 12, dp_r15.date, "short"));
|
|
556
563
|
i0.ɵɵadvance(3);
|
|
557
564
|
i0.ɵɵproperty("ngClass", "status-" + dp_r15.status.toLowerCase());
|
|
558
565
|
i0.ɵɵadvance();
|
|
559
566
|
i0.ɵɵtextInterpolate(dp_r15.status);
|
|
560
567
|
i0.ɵɵadvance(3);
|
|
561
568
|
i0.ɵɵstyleProp("width", dp_r15.passRate, "%");
|
|
562
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(
|
|
569
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(15, _c5, dp_r15.passRate >= 80, dp_r15.passRate >= 50 && dp_r15.passRate < 80, dp_r15.passRate < 50));
|
|
563
570
|
i0.ɵɵadvance(2);
|
|
564
571
|
i0.ɵɵtextInterpolate1("", dp_r15.passRate.toFixed(0), "%");
|
|
565
572
|
i0.ɵɵadvance(2);
|
|
566
|
-
i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests
|
|
573
|
+
i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests);
|
|
567
574
|
i0.ɵɵadvance(2);
|
|
568
575
|
i0.ɵɵtextInterpolate(ctx_r0.formatDuration(dp_r15.duration));
|
|
569
576
|
i0.ɵɵadvance(2);
|
|
570
577
|
i0.ɵɵtextInterpolate(ctx_r0.formatCost(dp_r15.cost));
|
|
571
578
|
i0.ɵɵadvance(3);
|
|
572
|
-
i0.ɵɵ
|
|
573
|
-
i0.ɵɵadvance();
|
|
574
|
-
i0.ɵɵ
|
|
579
|
+
i0.ɵɵrepeater(dp_r15.tags.slice(0, 2));
|
|
580
|
+
i0.ɵɵadvance(2);
|
|
581
|
+
i0.ɵɵconditional(dp_r15.tags.length > 2 ? 22 : -1);
|
|
575
582
|
} }
|
|
576
|
-
function
|
|
577
|
-
i0.ɵɵelementStart(0, "div",
|
|
583
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Conditional_61_Template(rf, ctx) { if (rf & 1) {
|
|
584
|
+
i0.ɵɵelementStart(0, "div", 138)(1, "p");
|
|
578
585
|
i0.ɵɵtext(2, "No runs match the current filters.");
|
|
579
586
|
i0.ɵɵelementEnd()();
|
|
580
587
|
} }
|
|
581
|
-
function
|
|
582
|
-
i0.ɵɵ
|
|
583
|
-
i0.ɵɵ
|
|
584
|
-
i0.ɵɵelement(4, "i", 114);
|
|
588
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
+
i0.ɵɵelementStart(0, "div", 122)(1, "div", 123)(2, "div", 124);
|
|
590
|
+
i0.ɵɵelement(3, "i", 99);
|
|
585
591
|
i0.ɵɵelementEnd();
|
|
586
|
-
i0.ɵɵelementStart(
|
|
587
|
-
i0.ɵɵtext(
|
|
592
|
+
i0.ɵɵelementStart(4, "div", 125)(5, "div", 126);
|
|
593
|
+
i0.ɵɵtext(6);
|
|
588
594
|
i0.ɵɵelementEnd();
|
|
589
|
-
i0.ɵɵelementStart(
|
|
590
|
-
i0.ɵɵtext(
|
|
595
|
+
i0.ɵɵelementStart(7, "div", 127);
|
|
596
|
+
i0.ɵɵtext(8, "Total Runs");
|
|
591
597
|
i0.ɵɵelementEnd()()();
|
|
592
|
-
i0.ɵɵelementStart(
|
|
593
|
-
i0.ɵɵelement(
|
|
598
|
+
i0.ɵɵelementStart(9, "div", 123)(10, "div", 128);
|
|
599
|
+
i0.ɵɵelement(11, "i", 91);
|
|
594
600
|
i0.ɵɵelementEnd();
|
|
595
|
-
i0.ɵɵelementStart(
|
|
596
|
-
i0.ɵɵtext(
|
|
601
|
+
i0.ɵɵelementStart(12, "div", 125)(13, "div", 126);
|
|
602
|
+
i0.ɵɵtext(14);
|
|
597
603
|
i0.ɵɵelementEnd();
|
|
598
|
-
i0.ɵɵelementStart(
|
|
599
|
-
i0.ɵɵtext(
|
|
604
|
+
i0.ɵɵelementStart(15, "div", 127);
|
|
605
|
+
i0.ɵɵtext(16, "Avg Pass Rate");
|
|
600
606
|
i0.ɵɵelementEnd();
|
|
601
|
-
i0.ɵɵelementStart(
|
|
602
|
-
i0.ɵɵelement(
|
|
603
|
-
i0.ɵɵtext(
|
|
607
|
+
i0.ɵɵelementStart(17, "div", 129);
|
|
608
|
+
i0.ɵɵelement(18, "i", 16);
|
|
609
|
+
i0.ɵɵtext(19);
|
|
604
610
|
i0.ɵɵelementEnd()()();
|
|
605
|
-
i0.ɵɵelementStart(
|
|
606
|
-
i0.ɵɵelement(
|
|
611
|
+
i0.ɵɵelementStart(20, "div", 123)(21, "div", 130);
|
|
612
|
+
i0.ɵɵelement(22, "i", 95);
|
|
607
613
|
i0.ɵɵelementEnd();
|
|
608
|
-
i0.ɵɵelementStart(
|
|
609
|
-
i0.ɵɵtext(
|
|
614
|
+
i0.ɵɵelementStart(23, "div", 125)(24, "div", 126);
|
|
615
|
+
i0.ɵɵtext(25);
|
|
610
616
|
i0.ɵɵelementEnd();
|
|
611
|
-
i0.ɵɵelementStart(
|
|
612
|
-
i0.ɵɵtext(
|
|
617
|
+
i0.ɵɵelementStart(26, "div", 127);
|
|
618
|
+
i0.ɵɵtext(27, "Avg Duration");
|
|
613
619
|
i0.ɵɵelementEnd()()();
|
|
614
|
-
i0.ɵɵelementStart(
|
|
615
|
-
i0.ɵɵelement(
|
|
620
|
+
i0.ɵɵelementStart(28, "div", 123)(29, "div", 131);
|
|
621
|
+
i0.ɵɵelement(30, "i", 132);
|
|
616
622
|
i0.ɵɵelementEnd();
|
|
617
|
-
i0.ɵɵelementStart(
|
|
618
|
-
i0.ɵɵtext(
|
|
623
|
+
i0.ɵɵelementStart(31, "div", 125)(32, "div", 126);
|
|
624
|
+
i0.ɵɵtext(33);
|
|
619
625
|
i0.ɵɵelementEnd();
|
|
620
|
-
i0.ɵɵelementStart(
|
|
621
|
-
i0.ɵɵtext(
|
|
626
|
+
i0.ɵɵelementStart(34, "div", 127);
|
|
627
|
+
i0.ɵɵtext(35, "Total Cost");
|
|
622
628
|
i0.ɵɵelementEnd()()()();
|
|
623
|
-
i0.ɵɵelementStart(
|
|
624
|
-
i0.ɵɵelement(
|
|
625
|
-
i0.ɵɵtext(
|
|
629
|
+
i0.ɵɵelementStart(36, "div", 133)(37, "h3");
|
|
630
|
+
i0.ɵɵelement(38, "i", 134);
|
|
631
|
+
i0.ɵɵtext(39, " Run History");
|
|
626
632
|
i0.ɵɵelementEnd();
|
|
627
|
-
i0.ɵɵelementStart(
|
|
628
|
-
i0.ɵɵtext(
|
|
633
|
+
i0.ɵɵelementStart(40, "div", 135)(41, "table", 136)(42, "thead")(43, "tr")(44, "th");
|
|
634
|
+
i0.ɵɵtext(45, "Date");
|
|
629
635
|
i0.ɵɵelementEnd();
|
|
630
|
-
i0.ɵɵelementStart(
|
|
631
|
-
i0.ɵɵtext(
|
|
636
|
+
i0.ɵɵelementStart(46, "th");
|
|
637
|
+
i0.ɵɵtext(47, "Status");
|
|
632
638
|
i0.ɵɵelementEnd();
|
|
633
|
-
i0.ɵɵelementStart(
|
|
634
|
-
i0.ɵɵtext(
|
|
639
|
+
i0.ɵɵelementStart(48, "th");
|
|
640
|
+
i0.ɵɵtext(49, "Pass Rate");
|
|
635
641
|
i0.ɵɵelementEnd();
|
|
636
|
-
i0.ɵɵelementStart(
|
|
637
|
-
i0.ɵɵtext(
|
|
642
|
+
i0.ɵɵelementStart(50, "th");
|
|
643
|
+
i0.ɵɵtext(51, "Tests");
|
|
638
644
|
i0.ɵɵelementEnd();
|
|
639
|
-
i0.ɵɵelementStart(
|
|
640
|
-
i0.ɵɵtext(
|
|
645
|
+
i0.ɵɵelementStart(52, "th");
|
|
646
|
+
i0.ɵɵtext(53, "Duration");
|
|
641
647
|
i0.ɵɵelementEnd();
|
|
642
|
-
i0.ɵɵelementStart(
|
|
643
|
-
i0.ɵɵtext(
|
|
648
|
+
i0.ɵɵelementStart(54, "th");
|
|
649
|
+
i0.ɵɵtext(55, "Cost");
|
|
644
650
|
i0.ɵɵelementEnd();
|
|
645
|
-
i0.ɵɵelementStart(
|
|
646
|
-
i0.ɵɵtext(
|
|
651
|
+
i0.ɵɵelementStart(56, "th");
|
|
652
|
+
i0.ɵɵtext(57, "Tags");
|
|
647
653
|
i0.ɵɵelementEnd()()();
|
|
648
|
-
i0.ɵɵelementStart(
|
|
649
|
-
i0.ɵɵ
|
|
654
|
+
i0.ɵɵelementStart(58, "tbody");
|
|
655
|
+
i0.ɵɵrepeaterCreate(59, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template, 23, 19, "tr", 137, i0.ɵɵrepeaterTrackByIdentity);
|
|
650
656
|
i0.ɵɵelementEnd()()();
|
|
651
|
-
i0.ɵɵ
|
|
657
|
+
i0.ɵɵconditionalCreate(61, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Conditional_61_Template, 3, 0, "div", 138);
|
|
652
658
|
i0.ɵɵelementEnd();
|
|
653
|
-
i0.ɵɵelementContainerEnd();
|
|
654
659
|
} if (rf & 2) {
|
|
655
660
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
656
|
-
i0.ɵɵadvance(
|
|
661
|
+
i0.ɵɵadvance(6);
|
|
657
662
|
i0.ɵɵtextInterpolate(ctx_r0.getTotalRuns());
|
|
658
663
|
i0.ɵɵadvance(8);
|
|
659
664
|
i0.ɵɵtextInterpolate1("", ctx_r0.getAveragePassRate().toFixed(1), "%");
|
|
660
665
|
i0.ɵɵadvance(3);
|
|
661
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
666
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(8, _c3, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down"));
|
|
662
667
|
i0.ɵɵadvance();
|
|
663
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(
|
|
668
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(11, _c4, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down", ctx_r0.getPassRateTrend().direction === "stable"));
|
|
664
669
|
i0.ɵɵadvance();
|
|
665
670
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.getPassRateTrend().value.toFixed(1), "% ");
|
|
666
671
|
i0.ɵɵadvance(6);
|
|
@@ -668,24 +673,24 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_Te
|
|
|
668
673
|
i0.ɵɵadvance(8);
|
|
669
674
|
i0.ɵɵtextInterpolate(ctx_r0.formatCost(ctx_r0.getTotalCost()));
|
|
670
675
|
i0.ɵɵadvance(26);
|
|
671
|
-
i0.ɵɵ
|
|
672
|
-
i0.ɵɵadvance();
|
|
673
|
-
i0.ɵɵ
|
|
676
|
+
i0.ɵɵrepeater(ctx_r0.getFilteredAnalyticsData());
|
|
677
|
+
i0.ɵɵadvance(2);
|
|
678
|
+
i0.ɵɵconditional(ctx_r0.getFilteredAnalyticsData().length === 0 ? 61 : -1);
|
|
674
679
|
} }
|
|
675
|
-
function
|
|
676
|
-
i0.ɵɵelementStart(0, "div",
|
|
677
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
680
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
681
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
682
|
+
i0.ɵɵelement(1, "mj-loading", 147);
|
|
678
683
|
i0.ɵɵelementEnd();
|
|
679
684
|
} }
|
|
680
|
-
function
|
|
685
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
681
686
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
682
|
-
i0.ɵɵelementStart(0, "button",
|
|
683
|
-
i0.ɵɵlistener("click", function
|
|
684
|
-
i0.ɵɵelement(1, "i",
|
|
687
|
+
i0.ɵɵelementStart(0, "button", 169);
|
|
688
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.clearMatrixFilter()); });
|
|
689
|
+
i0.ɵɵelement(1, "i", 170);
|
|
685
690
|
i0.ɵɵelementEnd();
|
|
686
691
|
} }
|
|
687
|
-
function
|
|
688
|
-
i0.ɵɵelementStart(0, "span",
|
|
692
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
693
|
+
i0.ɵɵelementStart(0, "span", 176);
|
|
689
694
|
i0.ɵɵtext(1);
|
|
690
695
|
i0.ɵɵelementEnd();
|
|
691
696
|
} if (rf & 2) {
|
|
@@ -693,37 +698,38 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
693
698
|
i0.ɵɵadvance();
|
|
694
699
|
i0.ɵɵtextInterpolate(tag_r21);
|
|
695
700
|
} }
|
|
696
|
-
function
|
|
697
|
-
i0.ɵɵelementStart(0, "span",
|
|
701
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
702
|
+
i0.ɵɵelementStart(0, "span", 177);
|
|
698
703
|
i0.ɵɵtext(1);
|
|
699
704
|
i0.ɵɵelementEnd();
|
|
700
705
|
} if (rf & 2) {
|
|
701
706
|
const run_r20 = i0.ɵɵnextContext(2).$implicit;
|
|
702
707
|
i0.ɵɵadvance();
|
|
703
|
-
i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2
|
|
708
|
+
i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2);
|
|
704
709
|
} }
|
|
705
|
-
function
|
|
706
|
-
i0.ɵɵelementStart(0, "div",
|
|
707
|
-
i0.ɵɵ
|
|
710
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
711
|
+
i0.ɵɵelementStart(0, "div", 173);
|
|
712
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_For_2_Template, 2, 1, "span", 176, i0.ɵɵrepeaterTrackByIdentity);
|
|
713
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Conditional_3_Template, 2, 1, "span", 177);
|
|
708
714
|
i0.ɵɵelementEnd();
|
|
709
715
|
} if (rf & 2) {
|
|
710
716
|
const run_r20 = i0.ɵɵnextContext().$implicit;
|
|
711
717
|
i0.ɵɵadvance();
|
|
712
|
-
i0.ɵɵ
|
|
713
|
-
i0.ɵɵadvance();
|
|
714
|
-
i0.ɵɵ
|
|
718
|
+
i0.ɵɵrepeater(run_r20.tags.slice(0, 2));
|
|
719
|
+
i0.ɵɵadvance(2);
|
|
720
|
+
i0.ɵɵconditional(run_r20.tags.length > 2 ? 3 : -1);
|
|
715
721
|
} }
|
|
716
|
-
function
|
|
722
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template(rf, ctx) { if (rf & 1) {
|
|
717
723
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
718
|
-
i0.ɵɵelementStart(0, "th",
|
|
724
|
+
i0.ɵɵelementStart(0, "th", 171);
|
|
719
725
|
i0.ɵɵpipe(1, "date");
|
|
720
|
-
i0.ɵɵlistener("click", function
|
|
721
|
-
i0.ɵɵelementStart(2, "div",
|
|
722
|
-
i0.ɵɵ
|
|
723
|
-
i0.ɵɵelementStart(4, "div",
|
|
726
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template_th_click_0_listener() { const run_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r20.runId)); });
|
|
727
|
+
i0.ɵɵelementStart(2, "div", 172);
|
|
728
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Template, 4, 1, "div", 173);
|
|
729
|
+
i0.ɵɵelementStart(4, "div", 174);
|
|
724
730
|
i0.ɵɵtext(5);
|
|
725
731
|
i0.ɵɵelementEnd();
|
|
726
|
-
i0.ɵɵelementStart(6, "div",
|
|
732
|
+
i0.ɵɵelementStart(6, "div", 175);
|
|
727
733
|
i0.ɵɵtext(7);
|
|
728
734
|
i0.ɵɵelementEnd()()();
|
|
729
735
|
} if (rf & 2) {
|
|
@@ -731,7 +737,7 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
731
737
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
732
738
|
i0.ɵɵproperty("title", "Click to view suite run - " + i0.ɵɵpipeBind2(1, 5, run_r20.date, "medium"));
|
|
733
739
|
i0.ɵɵadvance(3);
|
|
734
|
-
i0.ɵɵ
|
|
740
|
+
i0.ɵɵconditional(run_r20.tags.length > 0 ? 3 : -1);
|
|
735
741
|
i0.ɵɵadvance(2);
|
|
736
742
|
i0.ɵɵtextInterpolate(ctx_r0.getRelativeTime(run_r20.date));
|
|
737
743
|
i0.ɵɵadvance();
|
|
@@ -739,110 +745,114 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
739
745
|
i0.ɵɵadvance();
|
|
740
746
|
i0.ɵɵtextInterpolate1(" ", run_r20.passRate.toFixed(0), "% ");
|
|
741
747
|
} }
|
|
742
|
-
function
|
|
743
|
-
i0.ɵɵelementStart(0, "span",
|
|
744
|
-
i0.ɵɵelement(1, "i",
|
|
748
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
749
|
+
i0.ɵɵelementStart(0, "span", 191);
|
|
750
|
+
i0.ɵɵelement(1, "i", 79);
|
|
745
751
|
i0.ɵɵelementEnd();
|
|
746
752
|
} if (rf & 2) {
|
|
747
|
-
const result_r26 = i0.ɵɵnextContext()
|
|
753
|
+
const result_r26 = i0.ɵɵnextContext();
|
|
748
754
|
const ctx_r0 = i0.ɵɵnextContext(7);
|
|
749
755
|
i0.ɵɵclassProp("cell-skipped-status", result_r26.status === "Skipped" || result_r26.status === "Pending");
|
|
750
756
|
i0.ɵɵproperty("ngClass", "status-" + result_r26.status.toLowerCase())("title", ctx_r0.getStatusTooltip(result_r26.status));
|
|
751
757
|
i0.ɵɵadvance();
|
|
752
758
|
i0.ɵɵclassProp("fa-check", result_r26.status === "Passed")("fa-times", result_r26.status === "Failed")("fa-exclamation", result_r26.status === "Error")("fa-hourglass-end", result_r26.status === "Timeout")("fa-forward", result_r26.status === "Skipped")("fa-spinner", result_r26.status === "Running")("fa-clock", result_r26.status === "Pending");
|
|
753
759
|
} }
|
|
754
|
-
function
|
|
755
|
-
i0.ɵɵelementStart(0, "span",
|
|
756
|
-
i0.ɵɵelement(1, "i",
|
|
760
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
761
|
+
i0.ɵɵelementStart(0, "span", 187);
|
|
762
|
+
i0.ɵɵelement(1, "i", 192);
|
|
757
763
|
i0.ɵɵelementEnd();
|
|
758
764
|
} }
|
|
759
|
-
function
|
|
760
|
-
i0.ɵɵelementStart(0, "span",
|
|
761
|
-
i0.ɵɵelement(1, "i",
|
|
762
|
-
i0.ɵɵelementStart(2, "span",
|
|
765
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
766
|
+
i0.ɵɵelementStart(0, "span", 193);
|
|
767
|
+
i0.ɵɵelement(1, "i", 93);
|
|
768
|
+
i0.ɵɵelementStart(2, "span", 194);
|
|
763
769
|
i0.ɵɵtext(3);
|
|
764
770
|
i0.ɵɵelementEnd()();
|
|
765
771
|
} if (rf & 2) {
|
|
766
|
-
const result_r26 = i0.ɵɵnextContext()
|
|
772
|
+
const result_r26 = i0.ɵɵnextContext();
|
|
767
773
|
const ctx_r0 = i0.ɵɵnextContext(7);
|
|
768
774
|
i0.ɵɵclassProp("rating-low", result_r26.humanRating <= 4)("rating-medium", result_r26.humanRating >= 5 && result_r26.humanRating <= 6)("rating-good", result_r26.humanRating >= 7 && result_r26.humanRating <= 8)("rating-excellent", result_r26.humanRating >= 9);
|
|
769
775
|
i0.ɵɵproperty("title", ctx_r0.getHumanTooltip(result_r26.humanRating, result_r26.humanComments));
|
|
770
776
|
i0.ɵɵadvance(3);
|
|
771
777
|
i0.ɵɵtextInterpolate(result_r26.humanRating);
|
|
772
778
|
} }
|
|
773
|
-
function
|
|
774
|
-
i0.ɵɵelementStart(0, "span",
|
|
775
|
-
i0.ɵɵelement(1, "i",
|
|
776
|
-
i0.ɵɵelementStart(2, "span",
|
|
779
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
780
|
+
i0.ɵɵelementStart(0, "span", 195);
|
|
781
|
+
i0.ɵɵelement(1, "i", 97);
|
|
782
|
+
i0.ɵɵelementStart(2, "span", 196);
|
|
777
783
|
i0.ɵɵtext(3);
|
|
778
784
|
i0.ɵɵelementEnd()();
|
|
779
785
|
} if (rf & 2) {
|
|
780
|
-
const result_r26 = i0.ɵɵnextContext()
|
|
786
|
+
const result_r26 = i0.ɵɵnextContext();
|
|
781
787
|
i0.ɵɵclassProp("score-low", result_r26.score < 0.5)("score-medium", result_r26.score >= 0.5 && result_r26.score < 0.7)("score-good", result_r26.score >= 0.7 && result_r26.score < 0.85)("score-excellent", result_r26.score >= 0.85);
|
|
782
788
|
i0.ɵɵproperty("title", "Auto Score: " + (result_r26.score * 100).toFixed(0) + "% automated evaluation");
|
|
783
789
|
i0.ɵɵadvance(3);
|
|
784
790
|
i0.ɵɵtextInterpolate((result_r26.score * 100).toFixed(0));
|
|
785
791
|
} }
|
|
786
|
-
function
|
|
787
|
-
i0.ɵɵelementStart(0, "span",
|
|
788
|
-
i0.ɵɵelement(1, "i",
|
|
792
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
793
|
+
i0.ɵɵelementStart(0, "span", 190);
|
|
794
|
+
i0.ɵɵelement(1, "i", 97);
|
|
789
795
|
i0.ɵɵelementEnd();
|
|
790
796
|
} }
|
|
791
|
-
function
|
|
792
|
-
i0.ɵɵ
|
|
793
|
-
i0.ɵɵ
|
|
794
|
-
i0.ɵɵ
|
|
797
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
798
|
+
i0.ɵɵelementStart(0, "div", 184);
|
|
799
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_1_Template, 2, 18, "span", 186);
|
|
800
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_2_Template, 2, 0, "span", 187);
|
|
801
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_3_Template, 4, 10, "span", 188);
|
|
802
|
+
i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_4_Template, 4, 10, "span", 189);
|
|
803
|
+
i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_5_Template, 2, 0, "span", 190);
|
|
795
804
|
i0.ɵɵelementEnd();
|
|
796
|
-
i0.ɵɵelementContainerEnd();
|
|
797
805
|
} if (rf & 2) {
|
|
798
|
-
const result_r26 = ctx
|
|
806
|
+
const result_r26 = ctx;
|
|
799
807
|
const ctx_r0 = i0.ɵɵnextContext(7);
|
|
800
|
-
i0.ɵɵadvance(2);
|
|
801
|
-
i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
|
|
802
808
|
i0.ɵɵadvance();
|
|
803
|
-
i0.ɵɵ
|
|
809
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 1 : -1);
|
|
810
|
+
i0.ɵɵadvance();
|
|
811
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && !result_r26.humanRating ? 2 : -1);
|
|
804
812
|
i0.ɵɵadvance();
|
|
805
|
-
i0.ɵɵ
|
|
813
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && result_r26.humanRating ? 3 : -1);
|
|
806
814
|
i0.ɵɵadvance();
|
|
807
|
-
i0.ɵɵ
|
|
815
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score != null ? 4 : -1);
|
|
808
816
|
i0.ɵɵadvance();
|
|
809
|
-
i0.ɵɵ
|
|
817
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score == null ? 5 : -1);
|
|
810
818
|
} }
|
|
811
|
-
function
|
|
812
|
-
i0.ɵɵelementStart(0, "span",
|
|
813
|
-
i0.ɵɵelement(1, "i",
|
|
819
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
820
|
+
i0.ɵɵelementStart(0, "span", 185);
|
|
821
|
+
i0.ɵɵelement(1, "i", 197);
|
|
814
822
|
i0.ɵɵelementEnd();
|
|
815
823
|
} }
|
|
816
|
-
function
|
|
824
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
817
825
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
818
|
-
i0.ɵɵelementStart(0, "td",
|
|
819
|
-
i0.ɵɵlistener("click", function
|
|
820
|
-
i0.ɵɵ
|
|
826
|
+
i0.ɵɵelementStart(0, "td", 183);
|
|
827
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template_td_click_0_listener($event) { const run_r25 = i0.ɵɵrestoreView(_r24).$implicit; const test_r23 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.onMatrixCellClick(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId), $event)); });
|
|
828
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Template, 6, 5, "div", 184);
|
|
829
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_2_Template, 2, 0, "span", 185);
|
|
821
830
|
i0.ɵɵelementEnd();
|
|
822
831
|
} if (rf & 2) {
|
|
823
|
-
let
|
|
832
|
+
let tmp_27_0;
|
|
833
|
+
let tmp_28_0;
|
|
824
834
|
const run_r25 = ctx.$implicit;
|
|
825
835
|
const test_r23 = i0.ɵɵnextContext().$implicit;
|
|
826
836
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
827
837
|
i0.ɵɵclassProp("clickable", ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId))("cell-not-run", !ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId));
|
|
828
|
-
i0.ɵɵproperty("ngClass", ctx_r0.getMatrixCellClass(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)))("title", ((
|
|
838
|
+
i0.ɵɵproperty("ngClass", ctx_r0.getMatrixCellClass(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)))("title", ((tmp_27_0 = ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)) == null ? null : tmp_27_0.status) + " - Click to view test run" || "Not Run");
|
|
829
839
|
i0.ɵɵadvance();
|
|
830
|
-
i0.ɵɵ
|
|
840
|
+
i0.ɵɵconditional((tmp_28_0 = ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)) ? 1 : -1, tmp_28_0);
|
|
831
841
|
i0.ɵɵadvance();
|
|
832
|
-
i0.ɵɵ
|
|
842
|
+
i0.ɵɵconditional(!ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId) ? 2 : -1);
|
|
833
843
|
} }
|
|
834
|
-
function
|
|
844
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template(rf, ctx) { if (rf & 1) {
|
|
835
845
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
836
|
-
i0.ɵɵelementStart(0, "tr",
|
|
837
|
-
i0.ɵɵlistener("click", function
|
|
838
|
-
i0.ɵɵelementStart(1, "td",
|
|
846
|
+
i0.ɵɵelementStart(0, "tr", 178);
|
|
847
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template_tr_click_0_listener() { const test_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.selectMatrixRow(test_r23.testId)); });
|
|
848
|
+
i0.ɵɵelementStart(1, "td", 179);
|
|
839
849
|
i0.ɵɵtext(2);
|
|
840
850
|
i0.ɵɵelementEnd();
|
|
841
|
-
i0.ɵɵelementStart(3, "td",
|
|
851
|
+
i0.ɵɵelementStart(3, "td", 180)(4, "span", 181);
|
|
842
852
|
i0.ɵɵtext(5);
|
|
843
853
|
i0.ɵɵelementEnd()();
|
|
844
|
-
i0.ɵɵ
|
|
845
|
-
i0.ɵɵelement(
|
|
854
|
+
i0.ɵɵrepeaterCreate(6, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template, 3, 8, "td", 182, i0.ɵɵrepeaterTrackByIdentity);
|
|
855
|
+
i0.ɵɵelement(8, "td", 168);
|
|
846
856
|
i0.ɵɵelementEnd();
|
|
847
857
|
} if (rf & 2) {
|
|
848
858
|
const test_r23 = ctx.$implicit;
|
|
@@ -855,45 +865,45 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
855
865
|
i0.ɵɵadvance();
|
|
856
866
|
i0.ɵɵtextInterpolate(test_r23.testName);
|
|
857
867
|
i0.ɵɵadvance();
|
|
858
|
-
i0.ɵɵ
|
|
868
|
+
i0.ɵɵrepeater(ctx_r0.matrixData);
|
|
859
869
|
} }
|
|
860
|
-
function
|
|
861
|
-
i0.ɵɵelementStart(0, "span",
|
|
870
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
871
|
+
i0.ɵɵelementStart(0, "span", 199)(1, "span", 202);
|
|
862
872
|
i0.ɵɵtext(2);
|
|
863
873
|
i0.ɵɵelementEnd()();
|
|
864
874
|
} if (rf & 2) {
|
|
865
875
|
const run_r27 = i0.ɵɵnextContext().$implicit;
|
|
866
876
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
867
877
|
i0.ɵɵadvance(2);
|
|
868
|
-
i0.ɵɵtextInterpolate2("", ctx_r0.getRunPassedCount(run_r27), "/", ctx_r0.getRunTotalCount(run_r27)
|
|
878
|
+
i0.ɵɵtextInterpolate2("", ctx_r0.getRunPassedCount(run_r27), "/", ctx_r0.getRunTotalCount(run_r27));
|
|
869
879
|
} }
|
|
870
|
-
function
|
|
871
|
-
i0.ɵɵelementStart(0, "span",
|
|
880
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
881
|
+
i0.ɵɵelementStart(0, "span", 203);
|
|
872
882
|
i0.ɵɵtext(1);
|
|
873
883
|
i0.ɵɵelementEnd();
|
|
874
884
|
} if (rf & 2) {
|
|
875
|
-
let
|
|
885
|
+
let tmp_16_0;
|
|
876
886
|
const run_r27 = i0.ɵɵnextContext(2).$implicit;
|
|
877
887
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
878
888
|
i0.ɵɵadvance();
|
|
879
|
-
i0.ɵɵtextInterpolate((
|
|
889
|
+
i0.ɵɵtextInterpolate((tmp_16_0 = ctx_r0.getRunHumanAvg(run_r27)) == null ? null : tmp_16_0.toFixed(1));
|
|
880
890
|
} }
|
|
881
|
-
function
|
|
882
|
-
i0.ɵɵelementStart(0, "span",
|
|
883
|
-
i0.ɵɵ
|
|
884
|
-
i0.ɵɵelementStart(2, "span",
|
|
891
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
892
|
+
i0.ɵɵelementStart(0, "span", 200);
|
|
893
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Conditional_1_Template, 2, 1, "span", 203);
|
|
894
|
+
i0.ɵɵelementStart(2, "span", 204);
|
|
885
895
|
i0.ɵɵtext(3);
|
|
886
896
|
i0.ɵɵelementEnd()();
|
|
887
897
|
} if (rf & 2) {
|
|
888
898
|
const run_r27 = i0.ɵɵnextContext().$implicit;
|
|
889
899
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
890
900
|
i0.ɵɵadvance();
|
|
891
|
-
i0.ɵɵ
|
|
901
|
+
i0.ɵɵconditional(ctx_r0.getRunHumanAvg(run_r27) != null ? 1 : -1);
|
|
892
902
|
i0.ɵɵadvance(2);
|
|
893
903
|
i0.ɵɵtextInterpolate1("(", ctx_r0.getRunHumanCount(run_r27), ")");
|
|
894
904
|
} }
|
|
895
|
-
function
|
|
896
|
-
i0.ɵɵelementStart(0, "span",
|
|
905
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
906
|
+
i0.ɵɵelementStart(0, "span", 203);
|
|
897
907
|
i0.ɵɵtext(1);
|
|
898
908
|
i0.ɵɵelementEnd();
|
|
899
909
|
} if (rf & 2) {
|
|
@@ -902,84 +912,86 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
902
912
|
i0.ɵɵadvance();
|
|
903
913
|
i0.ɵɵtextInterpolate1("", (ctx_r0.getRunAutoAvg(run_r27) * 100).toFixed(0), "%");
|
|
904
914
|
} }
|
|
905
|
-
function
|
|
906
|
-
i0.ɵɵelementStart(0, "span",
|
|
907
|
-
i0.ɵɵ
|
|
908
|
-
i0.ɵɵelementStart(2, "span",
|
|
915
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
916
|
+
i0.ɵɵelementStart(0, "span", 201);
|
|
917
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Conditional_1_Template, 2, 1, "span", 203);
|
|
918
|
+
i0.ɵɵelementStart(2, "span", 204);
|
|
909
919
|
i0.ɵɵtext(3);
|
|
910
920
|
i0.ɵɵelementEnd()();
|
|
911
921
|
} if (rf & 2) {
|
|
912
922
|
const run_r27 = i0.ɵɵnextContext().$implicit;
|
|
913
923
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
914
924
|
i0.ɵɵadvance();
|
|
915
|
-
i0.ɵɵ
|
|
925
|
+
i0.ɵɵconditional(ctx_r0.getRunAutoAvg(run_r27) != null ? 1 : -1);
|
|
916
926
|
i0.ɵɵadvance(2);
|
|
917
927
|
i0.ɵɵtextInterpolate1("(", ctx_r0.getRunAutoCount(run_r27), ")");
|
|
918
928
|
} }
|
|
919
|
-
function
|
|
920
|
-
i0.ɵɵelementStart(0, "td",
|
|
921
|
-
i0.ɵɵ
|
|
929
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Template(rf, ctx) { if (rf & 1) {
|
|
930
|
+
i0.ɵɵelementStart(0, "td", 167)(1, "div", 198);
|
|
931
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_2_Template, 3, 2, "span", 199);
|
|
932
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Template, 4, 2, "span", 200);
|
|
933
|
+
i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Template, 4, 2, "span", 201);
|
|
922
934
|
i0.ɵɵelementEnd()();
|
|
923
935
|
} if (rf & 2) {
|
|
924
936
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
925
937
|
i0.ɵɵadvance(2);
|
|
926
|
-
i0.ɵɵ
|
|
938
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 2 : -1);
|
|
927
939
|
i0.ɵɵadvance();
|
|
928
|
-
i0.ɵɵ
|
|
940
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 3 : -1);
|
|
929
941
|
i0.ɵɵadvance();
|
|
930
|
-
i0.ɵɵ
|
|
942
|
+
i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 4 : -1);
|
|
931
943
|
} }
|
|
932
|
-
function
|
|
944
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
933
945
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
934
|
-
i0.ɵɵelementStart(0, "div",
|
|
935
|
-
i0.ɵɵelement(3, "i",
|
|
946
|
+
i0.ɵɵelementStart(0, "div", 146)(1, "div", 148)(2, "h3");
|
|
947
|
+
i0.ɵɵelement(3, "i", 105);
|
|
936
948
|
i0.ɵɵtext(4, " Test Results Matrix");
|
|
937
949
|
i0.ɵɵelementEnd();
|
|
938
|
-
i0.ɵɵelementStart(5, "div",
|
|
939
|
-
i0.ɵɵelement(7, "i",
|
|
940
|
-
i0.ɵɵelementStart(8, "input",
|
|
941
|
-
i0.ɵɵlistener("input", function
|
|
950
|
+
i0.ɵɵelementStart(5, "div", 149)(6, "div", 150);
|
|
951
|
+
i0.ɵɵelement(7, "i", 151);
|
|
952
|
+
i0.ɵɵelementStart(8, "input", 152);
|
|
953
|
+
i0.ɵɵlistener("input", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onMatrixFilterInput($event)); });
|
|
942
954
|
i0.ɵɵelementEnd();
|
|
943
|
-
i0.ɵɵ
|
|
955
|
+
i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template, 2, 0, "button", 153);
|
|
944
956
|
i0.ɵɵelementEnd();
|
|
945
|
-
i0.ɵɵelementStart(10, "span",
|
|
957
|
+
i0.ɵɵelementStart(10, "span", 154);
|
|
946
958
|
i0.ɵɵtext(11);
|
|
947
959
|
i0.ɵɵelementEnd();
|
|
948
|
-
i0.ɵɵelementStart(12, "button",
|
|
949
|
-
i0.ɵɵlistener("click", function
|
|
950
|
-
i0.ɵɵelement(13, "i",
|
|
960
|
+
i0.ɵɵelementStart(12, "button", 155);
|
|
961
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.exportMatrixToCSV()); });
|
|
962
|
+
i0.ɵɵelement(13, "i", 156);
|
|
951
963
|
i0.ɵɵtext(14, " Export ");
|
|
952
964
|
i0.ɵɵelementEnd()()();
|
|
953
|
-
i0.ɵɵelementStart(15, "div",
|
|
954
|
-
i0.ɵɵlistener("click", function
|
|
965
|
+
i0.ɵɵelementStart(15, "div", 157)(16, "table", 158)(17, "thead")(18, "tr")(19, "th", 159);
|
|
966
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("sequence")); });
|
|
955
967
|
i0.ɵɵtext(20, " # ");
|
|
956
968
|
i0.ɵɵelement(21, "i", 16);
|
|
957
969
|
i0.ɵɵelementEnd();
|
|
958
|
-
i0.ɵɵelementStart(22, "th",
|
|
959
|
-
i0.ɵɵlistener("click", function
|
|
970
|
+
i0.ɵɵelementStart(22, "th", 160);
|
|
971
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("name")); });
|
|
960
972
|
i0.ɵɵtext(23, " Test ");
|
|
961
973
|
i0.ɵɵelement(24, "i", 16);
|
|
962
974
|
i0.ɵɵelementEnd();
|
|
963
|
-
i0.ɵɵ
|
|
964
|
-
i0.ɵɵelement(
|
|
975
|
+
i0.ɵɵrepeaterCreate(25, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template, 8, 12, "th", 161, i0.ɵɵrepeaterTrackByIdentity);
|
|
976
|
+
i0.ɵɵelement(27, "th", 162);
|
|
965
977
|
i0.ɵɵelementEnd()();
|
|
966
|
-
i0.ɵɵelementStart(
|
|
967
|
-
i0.ɵɵ
|
|
978
|
+
i0.ɵɵelementStart(28, "tbody");
|
|
979
|
+
i0.ɵɵrepeaterCreate(29, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template, 9, 5, "tr", 163, i0.ɵɵrepeaterTrackByIdentity);
|
|
968
980
|
i0.ɵɵelementEnd();
|
|
969
|
-
i0.ɵɵelementStart(
|
|
970
|
-
i0.ɵɵelement(
|
|
971
|
-
i0.ɵɵelementStart(
|
|
972
|
-
i0.ɵɵtext(
|
|
981
|
+
i0.ɵɵelementStart(31, "tfoot")(32, "tr", 164);
|
|
982
|
+
i0.ɵɵelement(33, "td", 165);
|
|
983
|
+
i0.ɵɵelementStart(34, "td", 166)(35, "strong");
|
|
984
|
+
i0.ɵɵtext(36, "Totals");
|
|
973
985
|
i0.ɵɵelementEnd()();
|
|
974
|
-
i0.ɵɵ
|
|
975
|
-
i0.ɵɵelement(
|
|
986
|
+
i0.ɵɵrepeaterCreate(37, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Template, 5, 3, "td", 167, i0.ɵɵrepeaterTrackByIdentity);
|
|
987
|
+
i0.ɵɵelement(39, "td", 168);
|
|
976
988
|
i0.ɵɵelementEnd()()()()();
|
|
977
989
|
} if (rf & 2) {
|
|
978
990
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
979
991
|
i0.ɵɵadvance(8);
|
|
980
992
|
i0.ɵɵproperty("value", ctx_r0.matrixTestFilter);
|
|
981
993
|
i0.ɵɵadvance();
|
|
982
|
-
i0.ɵɵ
|
|
994
|
+
i0.ɵɵconditional(ctx_r0.matrixTestFilter ? 9 : -1);
|
|
983
995
|
i0.ɵɵadvance(2);
|
|
984
996
|
i0.ɵɵtextInterpolate2("", ctx_r0.matrixData.length, " runs \u00B7 ", ctx_r0.getUniqueTestsFromMatrix().length, " tests");
|
|
985
997
|
i0.ɵɵadvance();
|
|
@@ -989,15 +1001,15 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
989
1001
|
i0.ɵɵadvance(3);
|
|
990
1002
|
i0.ɵɵproperty("ngClass", ctx_r0.matrixSortBy === "name" ? ctx_r0.matrixSortAsc ? "fa-sort-up" : "fa-sort-down" : "fa-sort");
|
|
991
1003
|
i0.ɵɵadvance();
|
|
992
|
-
i0.ɵɵ
|
|
993
|
-
i0.ɵɵadvance(
|
|
994
|
-
i0.ɵɵ
|
|
995
|
-
i0.ɵɵadvance(
|
|
996
|
-
i0.ɵɵ
|
|
1004
|
+
i0.ɵɵrepeater(ctx_r0.matrixData);
|
|
1005
|
+
i0.ɵɵadvance(4);
|
|
1006
|
+
i0.ɵɵrepeater(ctx_r0.getUniqueTestsFromMatrix());
|
|
1007
|
+
i0.ɵɵadvance(8);
|
|
1008
|
+
i0.ɵɵrepeater(ctx_r0.matrixData);
|
|
997
1009
|
} }
|
|
998
|
-
function
|
|
999
|
-
i0.ɵɵelementStart(0, "div",
|
|
1000
|
-
i0.ɵɵelement(2, "i",
|
|
1010
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1011
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
1012
|
+
i0.ɵɵelement(2, "i", 105);
|
|
1001
1013
|
i0.ɵɵelementEnd();
|
|
1002
1014
|
i0.ɵɵelementStart(3, "h4");
|
|
1003
1015
|
i0.ɵɵtext(4, "No Matrix Data");
|
|
@@ -1006,50 +1018,49 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
|
|
|
1006
1018
|
i0.ɵɵtext(6, "No suite runs match the current filters.");
|
|
1007
1019
|
i0.ɵɵelementEnd()();
|
|
1008
1020
|
} }
|
|
1009
|
-
function
|
|
1010
|
-
i0.ɵɵ
|
|
1011
|
-
i0.ɵɵ
|
|
1012
|
-
i0.ɵɵ
|
|
1021
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1022
|
+
i0.ɵɵconditionalCreate(0, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_0_Template, 2, 0, "div", 56);
|
|
1023
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template, 40, 7, "div", 146);
|
|
1024
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_2_Template, 7, 0, "div", 58);
|
|
1013
1025
|
} if (rf & 2) {
|
|
1014
1026
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1027
|
+
i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
|
|
1015
1028
|
i0.ɵɵadvance();
|
|
1016
|
-
i0.ɵɵ
|
|
1017
|
-
i0.ɵɵadvance();
|
|
1018
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0);
|
|
1029
|
+
i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
|
|
1019
1030
|
i0.ɵɵadvance();
|
|
1020
|
-
i0.ɵɵ
|
|
1031
|
+
i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0 ? 2 : -1);
|
|
1021
1032
|
} }
|
|
1022
|
-
function
|
|
1023
|
-
i0.ɵɵelementStart(0, "div",
|
|
1024
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
1033
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1034
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
1035
|
+
i0.ɵɵelement(1, "mj-loading", 206);
|
|
1025
1036
|
i0.ɵɵelementEnd();
|
|
1026
1037
|
} }
|
|
1027
|
-
function
|
|
1028
|
-
i0.ɵɵelementStart(0, "div",
|
|
1029
|
-
i0.ɵɵelement(3, "i",
|
|
1038
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1039
|
+
i0.ɵɵelementStart(0, "div", 205)(1, "div", 207)(2, "h3");
|
|
1040
|
+
i0.ɵɵelement(3, "i", 106);
|
|
1030
1041
|
i0.ɵɵtext(4, " Test Results Flow");
|
|
1031
1042
|
i0.ɵɵelementEnd();
|
|
1032
|
-
i0.ɵɵelementStart(5, "div",
|
|
1033
|
-
i0.ɵɵelement(7, "i",
|
|
1043
|
+
i0.ɵɵelementStart(5, "div", 208)(6, "span", 209);
|
|
1044
|
+
i0.ɵɵelement(7, "i", 121);
|
|
1034
1045
|
i0.ɵɵtext(8, " Passed");
|
|
1035
1046
|
i0.ɵɵelementEnd();
|
|
1036
|
-
i0.ɵɵelementStart(9, "span",
|
|
1037
|
-
i0.ɵɵelement(10, "i",
|
|
1047
|
+
i0.ɵɵelementStart(9, "span", 210);
|
|
1048
|
+
i0.ɵɵelement(10, "i", 170);
|
|
1038
1049
|
i0.ɵɵtext(11, " Failed");
|
|
1039
1050
|
i0.ɵɵelementEnd();
|
|
1040
|
-
i0.ɵɵelementStart(12, "span",
|
|
1041
|
-
i0.ɵɵelement(13, "i",
|
|
1051
|
+
i0.ɵɵelementStart(12, "span", 211);
|
|
1052
|
+
i0.ɵɵelement(13, "i", 212);
|
|
1042
1053
|
i0.ɵɵtext(14, " Error");
|
|
1043
1054
|
i0.ɵɵelementEnd();
|
|
1044
|
-
i0.ɵɵelementStart(15, "span",
|
|
1045
|
-
i0.ɵɵelement(16, "i",
|
|
1055
|
+
i0.ɵɵelementStart(15, "span", 213);
|
|
1056
|
+
i0.ɵɵelement(16, "i", 214);
|
|
1046
1057
|
i0.ɵɵtext(17, " Skipped");
|
|
1047
1058
|
i0.ɵɵelementEnd()()();
|
|
1048
|
-
i0.ɵɵelementStart(18, "div",
|
|
1049
|
-
i0.ɵɵelement(19, "div",
|
|
1059
|
+
i0.ɵɵelementStart(18, "div", 215);
|
|
1060
|
+
i0.ɵɵelement(19, "div", 216, 0);
|
|
1050
1061
|
i0.ɵɵelementEnd();
|
|
1051
|
-
i0.ɵɵelementStart(21, "div",
|
|
1052
|
-
i0.ɵɵelement(22, "i",
|
|
1062
|
+
i0.ɵɵelementStart(21, "div", 217);
|
|
1063
|
+
i0.ɵɵelement(22, "i", 44);
|
|
1053
1064
|
i0.ɵɵtext(23);
|
|
1054
1065
|
i0.ɵɵelementEnd()();
|
|
1055
1066
|
} if (rf & 2) {
|
|
@@ -1057,9 +1068,9 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_di
|
|
|
1057
1068
|
i0.ɵɵadvance(23);
|
|
1058
1069
|
i0.ɵɵtextInterpolate1(" Interactive visualization showing test results across ", ctx_r0.matrixData.length, " runs. Hover over elements for details, click nodes to navigate. ");
|
|
1059
1070
|
} }
|
|
1060
|
-
function
|
|
1061
|
-
i0.ɵɵelementStart(0, "div",
|
|
1062
|
-
i0.ɵɵelement(2, "i",
|
|
1071
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1072
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
1073
|
+
i0.ɵɵelement(2, "i", 106);
|
|
1063
1074
|
i0.ɵɵelementEnd();
|
|
1064
1075
|
i0.ɵɵelementStart(3, "h4");
|
|
1065
1076
|
i0.ɵɵtext(4, "No Chart Data");
|
|
@@ -1068,56 +1079,55 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_di
|
|
|
1068
1079
|
i0.ɵɵtext(6, "No suite runs match the current filters.");
|
|
1069
1080
|
i0.ɵɵelementEnd()();
|
|
1070
1081
|
} }
|
|
1071
|
-
function
|
|
1072
|
-
i0.ɵɵ
|
|
1073
|
-
i0.ɵɵ
|
|
1074
|
-
i0.ɵɵ
|
|
1082
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
1083
|
+
i0.ɵɵconditionalCreate(0, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_0_Template, 2, 0, "div", 56);
|
|
1084
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_1_Template, 24, 1, "div", 205);
|
|
1085
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_2_Template, 7, 0, "div", 58);
|
|
1075
1086
|
} if (rf & 2) {
|
|
1076
1087
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1088
|
+
i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
|
|
1077
1089
|
i0.ɵɵadvance();
|
|
1078
|
-
i0.ɵɵ
|
|
1090
|
+
i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
|
|
1079
1091
|
i0.ɵɵadvance();
|
|
1080
|
-
i0.ɵɵ
|
|
1081
|
-
i0.ɵɵadvance();
|
|
1082
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0);
|
|
1092
|
+
i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0 ? 2 : -1);
|
|
1083
1093
|
} }
|
|
1084
|
-
function
|
|
1094
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1085
1095
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
1086
|
-
i0.ɵɵ
|
|
1087
|
-
i0.ɵɵ
|
|
1088
|
-
i0.ɵɵ
|
|
1089
|
-
i0.ɵɵ
|
|
1090
|
-
i0.ɵɵ
|
|
1091
|
-
i0.ɵɵtext(6, "Summary");
|
|
1096
|
+
i0.ɵɵelementStart(0, "div", 101)(1, "div", 102)(2, "button", 103);
|
|
1097
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("summary")); });
|
|
1098
|
+
i0.ɵɵelement(3, "i", 104);
|
|
1099
|
+
i0.ɵɵelementStart(4, "span");
|
|
1100
|
+
i0.ɵɵtext(5, "Summary");
|
|
1092
1101
|
i0.ɵɵelementEnd()();
|
|
1093
|
-
i0.ɵɵelementStart(
|
|
1094
|
-
i0.ɵɵlistener("click", function
|
|
1095
|
-
i0.ɵɵelement(
|
|
1096
|
-
i0.ɵɵelementStart(
|
|
1097
|
-
i0.ɵɵtext(
|
|
1102
|
+
i0.ɵɵelementStart(6, "button", 103);
|
|
1103
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("matrix")); });
|
|
1104
|
+
i0.ɵɵelement(7, "i", 105);
|
|
1105
|
+
i0.ɵɵelementStart(8, "span");
|
|
1106
|
+
i0.ɵɵtext(9, "Matrix");
|
|
1098
1107
|
i0.ɵɵelementEnd()();
|
|
1099
|
-
i0.ɵɵelementStart(
|
|
1100
|
-
i0.ɵɵlistener("click", function
|
|
1101
|
-
i0.ɵɵelement(
|
|
1102
|
-
i0.ɵɵelementStart(
|
|
1103
|
-
i0.ɵɵtext(
|
|
1108
|
+
i0.ɵɵelementStart(10, "button", 103);
|
|
1109
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("chart")); });
|
|
1110
|
+
i0.ɵɵelement(11, "i", 106);
|
|
1111
|
+
i0.ɵɵelementStart(12, "span");
|
|
1112
|
+
i0.ɵɵtext(13, "Chart");
|
|
1104
1113
|
i0.ɵɵelementEnd()()()();
|
|
1105
|
-
i0.ɵɵelementStart(
|
|
1106
|
-
i0.ɵɵlistener("click", function
|
|
1107
|
-
i0.ɵɵelementStart(
|
|
1108
|
-
i0.ɵɵelement(
|
|
1109
|
-
i0.ɵɵtext(
|
|
1110
|
-
i0.ɵɵ
|
|
1114
|
+
i0.ɵɵelementStart(14, "div", 107)(15, "div", 108);
|
|
1115
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_div_click_15_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleFilters()); });
|
|
1116
|
+
i0.ɵɵelementStart(16, "span", 109);
|
|
1117
|
+
i0.ɵɵelement(17, "i", 110);
|
|
1118
|
+
i0.ɵɵtext(18, " Filters ");
|
|
1119
|
+
i0.ɵɵconditionalCreate(19, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Template, 3, 2, "span", 111);
|
|
1111
1120
|
i0.ɵɵelementEnd();
|
|
1112
|
-
i0.ɵɵelement(
|
|
1121
|
+
i0.ɵɵelement(20, "i", 16);
|
|
1113
1122
|
i0.ɵɵelementEnd();
|
|
1114
|
-
i0.ɵɵ
|
|
1123
|
+
i0.ɵɵconditionalCreate(21, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template, 14, 9, "div", 112);
|
|
1115
1124
|
i0.ɵɵelementEnd();
|
|
1116
|
-
i0.ɵɵ
|
|
1117
|
-
i0.ɵɵ
|
|
1125
|
+
i0.ɵɵconditionalCreate(22, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Template, 62, 15);
|
|
1126
|
+
i0.ɵɵconditionalCreate(23, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Template, 3, 3);
|
|
1127
|
+
i0.ɵɵconditionalCreate(24, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Template, 3, 3);
|
|
1118
1128
|
} if (rf & 2) {
|
|
1119
1129
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1120
|
-
i0.ɵɵadvance(
|
|
1130
|
+
i0.ɵɵadvance(2);
|
|
1121
1131
|
i0.ɵɵclassProp("active", ctx_r0.analyticsView === "summary");
|
|
1122
1132
|
i0.ɵɵadvance(4);
|
|
1123
1133
|
i0.ɵɵclassProp("active", ctx_r0.analyticsView === "matrix");
|
|
@@ -1126,21 +1136,21 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_Template(rf, ctx)
|
|
|
1126
1136
|
i0.ɵɵadvance(4);
|
|
1127
1137
|
i0.ɵɵclassProp("collapsed", ctx_r0.filtersCollapsed);
|
|
1128
1138
|
i0.ɵɵadvance(5);
|
|
1129
|
-
i0.ɵɵ
|
|
1139
|
+
i0.ɵɵconditional(ctx_r0.filtersCollapsed ? 19 : -1);
|
|
1130
1140
|
i0.ɵɵadvance();
|
|
1131
1141
|
i0.ɵɵproperty("ngClass", ctx_r0.filtersCollapsed ? "fa-chevron-down" : "fa-chevron-up");
|
|
1132
1142
|
i0.ɵɵadvance();
|
|
1133
|
-
i0.ɵɵ
|
|
1143
|
+
i0.ɵɵconditional(!ctx_r0.filtersCollapsed ? 21 : -1);
|
|
1134
1144
|
i0.ɵɵadvance();
|
|
1135
|
-
i0.ɵɵ
|
|
1145
|
+
i0.ɵɵconditional(ctx_r0.analyticsView === "summary" ? 22 : -1);
|
|
1136
1146
|
i0.ɵɵadvance();
|
|
1137
|
-
i0.ɵɵ
|
|
1147
|
+
i0.ɵɵconditional(ctx_r0.analyticsView === "matrix" ? 23 : -1);
|
|
1138
1148
|
i0.ɵɵadvance();
|
|
1139
|
-
i0.ɵɵ
|
|
1149
|
+
i0.ɵɵconditional(ctx_r0.analyticsView === "chart" ? 24 : -1);
|
|
1140
1150
|
} }
|
|
1141
|
-
function
|
|
1151
|
+
function TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1142
1152
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
1143
|
-
i0.ɵɵelementStart(0, "div",
|
|
1153
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
1144
1154
|
i0.ɵɵelement(2, "i", 32);
|
|
1145
1155
|
i0.ɵɵelementEnd();
|
|
1146
1156
|
i0.ɵɵelementStart(3, "h4");
|
|
@@ -1150,26 +1160,28 @@ function TestSuiteFormComponentExtended_div_61_div_3_Template(rf, ctx) { if (rf
|
|
|
1150
1160
|
i0.ɵɵtext(6, "Run this suite to start collecting analytics data.");
|
|
1151
1161
|
i0.ɵɵelementEnd();
|
|
1152
1162
|
i0.ɵɵelementStart(7, "button", 21);
|
|
1153
|
-
i0.ɵɵlistener("click", function
|
|
1163
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
|
|
1154
1164
|
i0.ɵɵelement(8, "i", 22);
|
|
1155
1165
|
i0.ɵɵtext(9, " Run Suite Now ");
|
|
1156
1166
|
i0.ɵɵelementEnd()();
|
|
1157
1167
|
} }
|
|
1158
|
-
function
|
|
1159
|
-
i0.ɵɵelementStart(0, "div",
|
|
1160
|
-
i0.ɵɵ
|
|
1168
|
+
function TestSuiteFormComponentExtended_Conditional_61_Template(rf, ctx) { if (rf & 1) {
|
|
1169
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
1170
|
+
i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_1_Template, 2, 0, "div", 56);
|
|
1171
|
+
i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template, 25, 14);
|
|
1172
|
+
i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template, 10, 0, "div", 58);
|
|
1161
1173
|
i0.ɵɵelementEnd();
|
|
1162
1174
|
} if (rf & 2) {
|
|
1163
1175
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
1164
1176
|
i0.ɵɵadvance();
|
|
1165
|
-
i0.ɵɵ
|
|
1177
|
+
i0.ɵɵconditional(ctx_r0.loadingAnalytics ? 1 : -1);
|
|
1166
1178
|
i0.ɵɵadvance();
|
|
1167
|
-
i0.ɵɵ
|
|
1179
|
+
i0.ɵɵconditional(!ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded ? 2 : -1);
|
|
1168
1180
|
i0.ɵɵadvance();
|
|
1169
|
-
i0.ɵɵ
|
|
1181
|
+
i0.ɵɵconditional(!ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded && ctx_r0.analyticsData.length === 0 ? 3 : -1);
|
|
1170
1182
|
} }
|
|
1171
|
-
function
|
|
1172
|
-
i0.ɵɵelementStart(0, "span",
|
|
1183
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1184
|
+
i0.ɵɵelementStart(0, "span", 233);
|
|
1173
1185
|
i0.ɵɵtext(1);
|
|
1174
1186
|
i0.ɵɵelementEnd();
|
|
1175
1187
|
} if (rf & 2) {
|
|
@@ -1177,29 +1189,29 @@ function TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_span_1_Template
|
|
|
1177
1189
|
i0.ɵɵadvance();
|
|
1178
1190
|
i0.ɵɵtextInterpolate(tag_r31);
|
|
1179
1191
|
} }
|
|
1180
|
-
function
|
|
1181
|
-
i0.ɵɵelementStart(0, "div",
|
|
1182
|
-
i0.ɵɵ
|
|
1192
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1193
|
+
i0.ɵɵelementStart(0, "div", 232);
|
|
1194
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_For_2_Template, 2, 1, "span", 233, i0.ɵɵrepeaterTrackByIdentity);
|
|
1183
1195
|
i0.ɵɵelementEnd();
|
|
1184
1196
|
} if (rf & 2) {
|
|
1185
1197
|
const run_r30 = i0.ɵɵnextContext().$implicit;
|
|
1186
1198
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1187
1199
|
i0.ɵɵadvance();
|
|
1188
|
-
i0.ɵɵ
|
|
1200
|
+
i0.ɵɵrepeater(ctx_r0.getRunTags(run_r30).slice(0, 2));
|
|
1189
1201
|
} }
|
|
1190
|
-
function
|
|
1202
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1191
1203
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1192
|
-
i0.ɵɵelementStart(0, "div",
|
|
1193
|
-
i0.ɵɵlistener("click", function
|
|
1194
|
-
i0.ɵɵelement(1, "div",
|
|
1195
|
-
i0.ɵɵelementStart(2, "div",
|
|
1204
|
+
i0.ɵɵelementStart(0, "div", 227);
|
|
1205
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template_div_click_0_listener() { const run_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectCompareRunA(run_r30)); });
|
|
1206
|
+
i0.ɵɵelement(1, "div", 228);
|
|
1207
|
+
i0.ɵɵelementStart(2, "div", 229)(3, "div", 230);
|
|
1196
1208
|
i0.ɵɵtext(4);
|
|
1197
1209
|
i0.ɵɵpipe(5, "date");
|
|
1198
1210
|
i0.ɵɵelementEnd();
|
|
1199
|
-
i0.ɵɵelementStart(6, "div",
|
|
1211
|
+
i0.ɵɵelementStart(6, "div", 231);
|
|
1200
1212
|
i0.ɵɵtext(7);
|
|
1201
1213
|
i0.ɵɵelementEnd()();
|
|
1202
|
-
i0.ɵɵ
|
|
1214
|
+
i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_Template, 3, 0, "div", 232);
|
|
1203
1215
|
i0.ɵɵelementEnd();
|
|
1204
1216
|
} if (rf & 2) {
|
|
1205
1217
|
const run_r30 = ctx.$implicit;
|
|
@@ -1212,31 +1224,31 @@ function TestSuiteFormComponentExtended_div_62_div_5_div_1_Template(rf, ctx) { i
|
|
|
1212
1224
|
i0.ɵɵadvance(3);
|
|
1213
1225
|
i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r30).toFixed(0), "% pass");
|
|
1214
1226
|
i0.ɵɵadvance();
|
|
1215
|
-
i0.ɵɵ
|
|
1227
|
+
i0.ɵɵconditional(ctx_r0.getRunTags(run_r30).length > 0 ? 8 : -1);
|
|
1216
1228
|
} }
|
|
1217
|
-
function
|
|
1218
|
-
i0.ɵɵelementStart(0, "div",
|
|
1219
|
-
i0.ɵɵ
|
|
1229
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1230
|
+
i0.ɵɵelementStart(0, "div", 220);
|
|
1231
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template, 9, 10, "div", 226, i0.ɵɵrepeaterTrackByIdentity);
|
|
1220
1232
|
i0.ɵɵelementEnd();
|
|
1221
1233
|
} if (rf & 2) {
|
|
1222
1234
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1223
1235
|
i0.ɵɵadvance();
|
|
1224
|
-
i0.ɵɵ
|
|
1236
|
+
i0.ɵɵrepeater(ctx_r0.suiteRuns);
|
|
1225
1237
|
} }
|
|
1226
|
-
function
|
|
1238
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1227
1239
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
1228
|
-
i0.ɵɵelementStart(0, "div",
|
|
1240
|
+
i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
|
|
1229
1241
|
i0.ɵɵtext(3, "Selected:");
|
|
1230
1242
|
i0.ɵɵelementEnd();
|
|
1231
|
-
i0.ɵɵelementStart(4, "button",
|
|
1232
|
-
i0.ɵɵlistener("click", function
|
|
1243
|
+
i0.ɵɵelementStart(4, "button", 236);
|
|
1244
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r32); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunA = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
|
|
1233
1245
|
i0.ɵɵtext(5, "Clear");
|
|
1234
1246
|
i0.ɵɵelementEnd()();
|
|
1235
|
-
i0.ɵɵelementStart(6, "div",
|
|
1247
|
+
i0.ɵɵelementStart(6, "div", 237)(7, "span");
|
|
1236
1248
|
i0.ɵɵtext(8);
|
|
1237
1249
|
i0.ɵɵpipe(9, "date");
|
|
1238
1250
|
i0.ɵɵelementEnd();
|
|
1239
|
-
i0.ɵɵelementStart(10, "span",
|
|
1251
|
+
i0.ɵɵelementStart(10, "span", 238);
|
|
1240
1252
|
i0.ɵɵtext(11);
|
|
1241
1253
|
i0.ɵɵelementEnd()()();
|
|
1242
1254
|
} if (rf & 2) {
|
|
@@ -1246,8 +1258,8 @@ function TestSuiteFormComponentExtended_div_62_div_6_Template(rf, ctx) { if (rf
|
|
|
1246
1258
|
i0.ɵɵadvance(3);
|
|
1247
1259
|
i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunA).toFixed(1), "%");
|
|
1248
1260
|
} }
|
|
1249
|
-
function
|
|
1250
|
-
i0.ɵɵelementStart(0, "span",
|
|
1261
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1262
|
+
i0.ɵɵelementStart(0, "span", 233);
|
|
1251
1263
|
i0.ɵɵtext(1);
|
|
1252
1264
|
i0.ɵɵelementEnd();
|
|
1253
1265
|
} if (rf & 2) {
|
|
@@ -1255,29 +1267,29 @@ function TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_span_1_Templat
|
|
|
1255
1267
|
i0.ɵɵadvance();
|
|
1256
1268
|
i0.ɵɵtextInterpolate(tag_r35);
|
|
1257
1269
|
} }
|
|
1258
|
-
function
|
|
1259
|
-
i0.ɵɵelementStart(0, "div",
|
|
1260
|
-
i0.ɵɵ
|
|
1270
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1271
|
+
i0.ɵɵelementStart(0, "div", 232);
|
|
1272
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_For_2_Template, 2, 1, "span", 233, i0.ɵɵrepeaterTrackByIdentity);
|
|
1261
1273
|
i0.ɵɵelementEnd();
|
|
1262
1274
|
} if (rf & 2) {
|
|
1263
1275
|
const run_r34 = i0.ɵɵnextContext().$implicit;
|
|
1264
1276
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1265
1277
|
i0.ɵɵadvance();
|
|
1266
|
-
i0.ɵɵ
|
|
1278
|
+
i0.ɵɵrepeater(ctx_r0.getRunTags(run_r34).slice(0, 2));
|
|
1267
1279
|
} }
|
|
1268
|
-
function
|
|
1280
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1269
1281
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
1270
|
-
i0.ɵɵelementStart(0, "div",
|
|
1271
|
-
i0.ɵɵlistener("click", function
|
|
1272
|
-
i0.ɵɵelement(1, "div",
|
|
1273
|
-
i0.ɵɵelementStart(2, "div",
|
|
1282
|
+
i0.ɵɵelementStart(0, "div", 227);
|
|
1283
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template_div_click_0_listener() { const run_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView((ctx_r0.compareRunA == null ? null : ctx_r0.compareRunA.ID) !== run_r34.ID && ctx_r0.selectCompareRunB(run_r34)); });
|
|
1284
|
+
i0.ɵɵelement(1, "div", 228);
|
|
1285
|
+
i0.ɵɵelementStart(2, "div", 229)(3, "div", 230);
|
|
1274
1286
|
i0.ɵɵtext(4);
|
|
1275
1287
|
i0.ɵɵpipe(5, "date");
|
|
1276
1288
|
i0.ɵɵelementEnd();
|
|
1277
|
-
i0.ɵɵelementStart(6, "div",
|
|
1289
|
+
i0.ɵɵelementStart(6, "div", 231);
|
|
1278
1290
|
i0.ɵɵtext(7);
|
|
1279
1291
|
i0.ɵɵelementEnd()();
|
|
1280
|
-
i0.ɵɵ
|
|
1292
|
+
i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_Template, 3, 0, "div", 232);
|
|
1281
1293
|
i0.ɵɵelementEnd();
|
|
1282
1294
|
} if (rf & 2) {
|
|
1283
1295
|
const run_r34 = ctx.$implicit;
|
|
@@ -1290,31 +1302,31 @@ function TestSuiteFormComponentExtended_div_62_div_12_div_1_Template(rf, ctx) {
|
|
|
1290
1302
|
i0.ɵɵadvance(3);
|
|
1291
1303
|
i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r34).toFixed(0), "% pass");
|
|
1292
1304
|
i0.ɵɵadvance();
|
|
1293
|
-
i0.ɵɵ
|
|
1305
|
+
i0.ɵɵconditional(ctx_r0.getRunTags(run_r34).length > 0 ? 8 : -1);
|
|
1294
1306
|
} }
|
|
1295
|
-
function
|
|
1296
|
-
i0.ɵɵelementStart(0, "div",
|
|
1297
|
-
i0.ɵɵ
|
|
1307
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1308
|
+
i0.ɵɵelementStart(0, "div", 220);
|
|
1309
|
+
i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template, 9, 12, "div", 239, i0.ɵɵrepeaterTrackByIdentity);
|
|
1298
1310
|
i0.ɵɵelementEnd();
|
|
1299
1311
|
} if (rf & 2) {
|
|
1300
1312
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1301
1313
|
i0.ɵɵadvance();
|
|
1302
|
-
i0.ɵɵ
|
|
1314
|
+
i0.ɵɵrepeater(ctx_r0.suiteRuns);
|
|
1303
1315
|
} }
|
|
1304
|
-
function
|
|
1316
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1305
1317
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1306
|
-
i0.ɵɵelementStart(0, "div",
|
|
1318
|
+
i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
|
|
1307
1319
|
i0.ɵɵtext(3, "Selected:");
|
|
1308
1320
|
i0.ɵɵelementEnd();
|
|
1309
|
-
i0.ɵɵelementStart(4, "button",
|
|
1310
|
-
i0.ɵɵlistener("click", function
|
|
1321
|
+
i0.ɵɵelementStart(4, "button", 236);
|
|
1322
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunB = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
|
|
1311
1323
|
i0.ɵɵtext(5, "Clear");
|
|
1312
1324
|
i0.ɵɵelementEnd()();
|
|
1313
|
-
i0.ɵɵelementStart(6, "div",
|
|
1325
|
+
i0.ɵɵelementStart(6, "div", 237)(7, "span");
|
|
1314
1326
|
i0.ɵɵtext(8);
|
|
1315
1327
|
i0.ɵɵpipe(9, "date");
|
|
1316
1328
|
i0.ɵɵelementEnd();
|
|
1317
|
-
i0.ɵɵelementStart(10, "span",
|
|
1329
|
+
i0.ɵɵelementStart(10, "span", 238);
|
|
1318
1330
|
i0.ɵɵtext(11);
|
|
1319
1331
|
i0.ɵɵelementEnd()()();
|
|
1320
1332
|
} if (rf & 2) {
|
|
@@ -1324,8 +1336,8 @@ function TestSuiteFormComponentExtended_div_62_div_13_Template(rf, ctx) { if (rf
|
|
|
1324
1336
|
i0.ɵɵadvance(3);
|
|
1325
1337
|
i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunB).toFixed(1), "%");
|
|
1326
1338
|
} }
|
|
1327
|
-
function
|
|
1328
|
-
i0.ɵɵelementStart(0, "span",
|
|
1339
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1340
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
1329
1341
|
i0.ɵɵtext(1);
|
|
1330
1342
|
i0.ɵɵelementEnd();
|
|
1331
1343
|
} if (rf & 2) {
|
|
@@ -1334,13 +1346,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_4_Template(rf,
|
|
|
1334
1346
|
i0.ɵɵadvance();
|
|
1335
1347
|
i0.ɵɵtextInterpolate(result_r37.runA.status);
|
|
1336
1348
|
} }
|
|
1337
|
-
function
|
|
1338
|
-
i0.ɵɵelementStart(0, "span",
|
|
1349
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1350
|
+
i0.ɵɵelementStart(0, "span", 252);
|
|
1339
1351
|
i0.ɵɵtext(1, "N/A");
|
|
1340
1352
|
i0.ɵɵelementEnd();
|
|
1341
1353
|
} }
|
|
1342
|
-
function
|
|
1343
|
-
i0.ɵɵelementStart(0, "span",
|
|
1354
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1355
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
1344
1356
|
i0.ɵɵtext(1);
|
|
1345
1357
|
i0.ɵɵelementEnd();
|
|
1346
1358
|
} if (rf & 2) {
|
|
@@ -1349,13 +1361,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_7_Template(rf,
|
|
|
1349
1361
|
i0.ɵɵadvance();
|
|
1350
1362
|
i0.ɵɵtextInterpolate(result_r37.runB.status);
|
|
1351
1363
|
} }
|
|
1352
|
-
function
|
|
1353
|
-
i0.ɵɵelementStart(0, "span",
|
|
1364
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1365
|
+
i0.ɵɵelementStart(0, "span", 252);
|
|
1354
1366
|
i0.ɵɵtext(1, "N/A");
|
|
1355
1367
|
i0.ɵɵelementEnd();
|
|
1356
1368
|
} }
|
|
1357
|
-
function
|
|
1358
|
-
i0.ɵɵelementStart(0, "span",
|
|
1369
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1370
|
+
i0.ɵɵelementStart(0, "span", 251);
|
|
1359
1371
|
i0.ɵɵtext(1);
|
|
1360
1372
|
i0.ɵɵelementEnd();
|
|
1361
1373
|
} if (rf & 2) {
|
|
@@ -1364,13 +1376,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_10_Template(rf,
|
|
|
1364
1376
|
i0.ɵɵadvance();
|
|
1365
1377
|
i0.ɵɵtextInterpolate2(" ", result_r37.scoreDiff > 0 ? "+" : "", "", (result_r37.scoreDiff * 100).toFixed(1), "% ");
|
|
1366
1378
|
} }
|
|
1367
|
-
function
|
|
1368
|
-
i0.ɵɵelementStart(0, "span",
|
|
1379
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1380
|
+
i0.ɵɵelementStart(0, "span", 253);
|
|
1369
1381
|
i0.ɵɵtext(1, "-");
|
|
1370
1382
|
i0.ɵɵelementEnd();
|
|
1371
1383
|
} }
|
|
1372
|
-
function
|
|
1373
|
-
i0.ɵɵelementStart(0, "span",
|
|
1384
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1385
|
+
i0.ɵɵelementStart(0, "span", 251);
|
|
1374
1386
|
i0.ɵɵtext(1);
|
|
1375
1387
|
i0.ɵɵelementEnd();
|
|
1376
1388
|
} if (rf & 2) {
|
|
@@ -1379,46 +1391,52 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_13_Template(rf,
|
|
|
1379
1391
|
i0.ɵɵadvance();
|
|
1380
1392
|
i0.ɵɵtextInterpolate2(" ", result_r37.durationDiff > 0 ? "+" : "", "", result_r37.durationDiff.toFixed(1), "s ");
|
|
1381
1393
|
} }
|
|
1382
|
-
function
|
|
1383
|
-
i0.ɵɵelementStart(0, "span",
|
|
1394
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1395
|
+
i0.ɵɵelementStart(0, "span", 253);
|
|
1384
1396
|
i0.ɵɵtext(1, "-");
|
|
1385
1397
|
i0.ɵɵelementEnd();
|
|
1386
1398
|
} }
|
|
1387
|
-
function
|
|
1388
|
-
i0.ɵɵelementStart(0, "span",
|
|
1389
|
-
i0.ɵɵelement(1, "i",
|
|
1399
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1400
|
+
i0.ɵɵelementStart(0, "span", 254);
|
|
1401
|
+
i0.ɵɵelement(1, "i", 257);
|
|
1390
1402
|
i0.ɵɵtext(2, " Fixed ");
|
|
1391
1403
|
i0.ɵɵelementEnd();
|
|
1392
1404
|
} }
|
|
1393
|
-
function
|
|
1394
|
-
i0.ɵɵelementStart(0, "span",
|
|
1395
|
-
i0.ɵɵelement(1, "i",
|
|
1405
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1406
|
+
i0.ɵɵelementStart(0, "span", 255);
|
|
1407
|
+
i0.ɵɵelement(1, "i", 258);
|
|
1396
1408
|
i0.ɵɵtext(2, " Broke ");
|
|
1397
1409
|
i0.ɵɵelementEnd();
|
|
1398
1410
|
} }
|
|
1399
|
-
function
|
|
1400
|
-
i0.ɵɵelementStart(0, "span",
|
|
1401
|
-
i0.ɵɵelement(1, "i",
|
|
1411
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1412
|
+
i0.ɵɵelementStart(0, "span", 256);
|
|
1413
|
+
i0.ɵɵelement(1, "i", 197);
|
|
1402
1414
|
i0.ɵɵelementEnd();
|
|
1403
1415
|
} }
|
|
1404
|
-
function
|
|
1405
|
-
i0.ɵɵelementStart(0, "tr",
|
|
1416
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template(rf, ctx) { if (rf & 1) {
|
|
1417
|
+
i0.ɵɵelementStart(0, "tr", 251)(1, "td", 180);
|
|
1406
1418
|
i0.ɵɵtext(2);
|
|
1407
1419
|
i0.ɵɵelementEnd();
|
|
1408
1420
|
i0.ɵɵelementStart(3, "td");
|
|
1409
|
-
i0.ɵɵ
|
|
1421
|
+
i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_4_Template, 2, 2, "span", 140);
|
|
1422
|
+
i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_5_Template, 2, 0, "span", 252);
|
|
1410
1423
|
i0.ɵɵelementEnd();
|
|
1411
1424
|
i0.ɵɵelementStart(6, "td");
|
|
1412
|
-
i0.ɵɵ
|
|
1425
|
+
i0.ɵɵconditionalCreate(7, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_7_Template, 2, 2, "span", 140);
|
|
1426
|
+
i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_8_Template, 2, 0, "span", 252);
|
|
1413
1427
|
i0.ɵɵelementEnd();
|
|
1414
1428
|
i0.ɵɵelementStart(9, "td");
|
|
1415
|
-
i0.ɵɵ
|
|
1429
|
+
i0.ɵɵconditionalCreate(10, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_10_Template, 2, 6, "span", 251);
|
|
1430
|
+
i0.ɵɵconditionalCreate(11, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_11_Template, 2, 0, "span", 253);
|
|
1416
1431
|
i0.ɵɵelementEnd();
|
|
1417
1432
|
i0.ɵɵelementStart(12, "td");
|
|
1418
|
-
i0.ɵɵ
|
|
1433
|
+
i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_13_Template, 2, 6, "span", 251);
|
|
1434
|
+
i0.ɵɵconditionalCreate(14, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_14_Template, 2, 0, "span", 253);
|
|
1419
1435
|
i0.ɵɵelementEnd();
|
|
1420
1436
|
i0.ɵɵelementStart(15, "td");
|
|
1421
|
-
i0.ɵɵ
|
|
1437
|
+
i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_16_Template, 3, 0, "span", 254);
|
|
1438
|
+
i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_17_Template, 3, 0, "span", 255);
|
|
1439
|
+
i0.ɵɵconditionalCreate(18, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_18_Template, 2, 0, "span", 256);
|
|
1422
1440
|
i0.ɵɵelementEnd()();
|
|
1423
1441
|
} if (rf & 2) {
|
|
1424
1442
|
const result_r37 = ctx.$implicit;
|
|
@@ -1426,60 +1444,60 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_Template(rf, ctx) {
|
|
|
1426
1444
|
i0.ɵɵadvance(2);
|
|
1427
1445
|
i0.ɵɵtextInterpolate(result_r37.testName);
|
|
1428
1446
|
i0.ɵɵadvance(2);
|
|
1429
|
-
i0.ɵɵ
|
|
1447
|
+
i0.ɵɵconditional(result_r37.runA ? 4 : -1);
|
|
1430
1448
|
i0.ɵɵadvance();
|
|
1431
|
-
i0.ɵɵ
|
|
1449
|
+
i0.ɵɵconditional(!result_r37.runA ? 5 : -1);
|
|
1432
1450
|
i0.ɵɵadvance(2);
|
|
1433
|
-
i0.ɵɵ
|
|
1451
|
+
i0.ɵɵconditional(result_r37.runB ? 7 : -1);
|
|
1434
1452
|
i0.ɵɵadvance();
|
|
1435
|
-
i0.ɵɵ
|
|
1453
|
+
i0.ɵɵconditional(!result_r37.runB ? 8 : -1);
|
|
1436
1454
|
i0.ɵɵadvance(2);
|
|
1437
|
-
i0.ɵɵ
|
|
1455
|
+
i0.ɵɵconditional(result_r37.scoreDiff != null ? 10 : -1);
|
|
1438
1456
|
i0.ɵɵadvance();
|
|
1439
|
-
i0.ɵɵ
|
|
1457
|
+
i0.ɵɵconditional(result_r37.scoreDiff == null ? 11 : -1);
|
|
1440
1458
|
i0.ɵɵadvance(2);
|
|
1441
|
-
i0.ɵɵ
|
|
1459
|
+
i0.ɵɵconditional(result_r37.durationDiff != null ? 13 : -1);
|
|
1442
1460
|
i0.ɵɵadvance();
|
|
1443
|
-
i0.ɵɵ
|
|
1461
|
+
i0.ɵɵconditional(result_r37.durationDiff == null ? 14 : -1);
|
|
1444
1462
|
i0.ɵɵadvance(2);
|
|
1445
|
-
i0.ɵɵ
|
|
1463
|
+
i0.ɵɵconditional(result_r37.runA && result_r37.runB && result_r37.runA.status !== "Passed" && result_r37.runB.status === "Passed" ? 16 : -1);
|
|
1446
1464
|
i0.ɵɵadvance();
|
|
1447
|
-
i0.ɵɵ
|
|
1465
|
+
i0.ɵɵconditional(result_r37.runA && result_r37.runB && result_r37.runA.status === "Passed" && result_r37.runB.status !== "Passed" ? 17 : -1);
|
|
1448
1466
|
i0.ɵɵadvance();
|
|
1449
|
-
i0.ɵɵ
|
|
1467
|
+
i0.ɵɵconditional(!result_r37.statusChanged ? 18 : -1);
|
|
1450
1468
|
} }
|
|
1451
|
-
function
|
|
1452
|
-
i0.ɵɵelementStart(0, "div",
|
|
1469
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1470
|
+
i0.ɵɵelementStart(0, "div", 224)(1, "div", 240)(2, "div", 241)(3, "div", 242);
|
|
1453
1471
|
i0.ɵɵtext(4, "Pass Rate Change");
|
|
1454
1472
|
i0.ɵɵelementEnd();
|
|
1455
|
-
i0.ɵɵelementStart(5, "div",
|
|
1473
|
+
i0.ɵɵelementStart(5, "div", 243);
|
|
1456
1474
|
i0.ɵɵelement(6, "i", 16);
|
|
1457
1475
|
i0.ɵɵtext(7);
|
|
1458
1476
|
i0.ɵɵelementEnd()();
|
|
1459
|
-
i0.ɵɵelementStart(8, "div",
|
|
1477
|
+
i0.ɵɵelementStart(8, "div", 241)(9, "div", 242);
|
|
1460
1478
|
i0.ɵɵtext(10, "Duration Change");
|
|
1461
1479
|
i0.ɵɵelementEnd();
|
|
1462
|
-
i0.ɵɵelementStart(11, "div",
|
|
1480
|
+
i0.ɵɵelementStart(11, "div", 243);
|
|
1463
1481
|
i0.ɵɵelement(12, "i", 16);
|
|
1464
1482
|
i0.ɵɵtext(13);
|
|
1465
1483
|
i0.ɵɵelementEnd()();
|
|
1466
|
-
i0.ɵɵelementStart(14, "div",
|
|
1484
|
+
i0.ɵɵelementStart(14, "div", 244)(15, "div", 242);
|
|
1467
1485
|
i0.ɵɵtext(16, "Improved");
|
|
1468
1486
|
i0.ɵɵelementEnd();
|
|
1469
|
-
i0.ɵɵelementStart(17, "div",
|
|
1487
|
+
i0.ɵɵelementStart(17, "div", 245);
|
|
1470
1488
|
i0.ɵɵtext(18);
|
|
1471
1489
|
i0.ɵɵelementEnd()();
|
|
1472
|
-
i0.ɵɵelementStart(19, "div",
|
|
1490
|
+
i0.ɵɵelementStart(19, "div", 246)(20, "div", 242);
|
|
1473
1491
|
i0.ɵɵtext(21, "Regressed");
|
|
1474
1492
|
i0.ɵɵelementEnd();
|
|
1475
|
-
i0.ɵɵelementStart(22, "div",
|
|
1493
|
+
i0.ɵɵelementStart(22, "div", 245);
|
|
1476
1494
|
i0.ɵɵtext(23);
|
|
1477
1495
|
i0.ɵɵelementEnd()()();
|
|
1478
|
-
i0.ɵɵelementStart(24, "div",
|
|
1479
|
-
i0.ɵɵelement(26, "i",
|
|
1496
|
+
i0.ɵɵelementStart(24, "div", 247)(25, "h3");
|
|
1497
|
+
i0.ɵɵelement(26, "i", 248);
|
|
1480
1498
|
i0.ɵɵtext(27, " Test-by-Test Comparison");
|
|
1481
1499
|
i0.ɵɵelementEnd();
|
|
1482
|
-
i0.ɵɵelementStart(28, "div",
|
|
1500
|
+
i0.ɵɵelementStart(28, "div", 249)(29, "table", 250)(30, "thead")(31, "tr")(32, "th");
|
|
1483
1501
|
i0.ɵɵtext(33, "Test");
|
|
1484
1502
|
i0.ɵɵelementEnd();
|
|
1485
1503
|
i0.ɵɵelementStart(34, "th");
|
|
@@ -1498,21 +1516,21 @@ function TestSuiteFormComponentExtended_div_62_div_14_Template(rf, ctx) { if (rf
|
|
|
1498
1516
|
i0.ɵɵtext(43, "Change");
|
|
1499
1517
|
i0.ɵɵelementEnd()()();
|
|
1500
1518
|
i0.ɵɵelementStart(44, "tbody");
|
|
1501
|
-
i0.ɵɵ
|
|
1519
|
+
i0.ɵɵrepeaterCreate(45, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template, 19, 16, "tr", 251, i0.ɵɵrepeaterTrackByIdentity);
|
|
1502
1520
|
i0.ɵɵelementEnd()()()()();
|
|
1503
1521
|
} if (rf & 2) {
|
|
1504
1522
|
let tmp_4_0;
|
|
1505
1523
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1506
1524
|
i0.ɵɵadvance(5);
|
|
1507
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
1525
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c6, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0));
|
|
1508
1526
|
i0.ɵɵadvance();
|
|
1509
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(
|
|
1527
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(12, _c4, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0, ctx_r0.getComparePassRateDiff() === 0));
|
|
1510
1528
|
i0.ɵɵadvance();
|
|
1511
1529
|
i0.ɵɵtextInterpolate2(" ", ctx_r0.getComparePassRateDiff() > 0 ? "+" : "", "", (tmp_4_0 = ctx_r0.getComparePassRateDiff()) == null ? null : tmp_4_0.toFixed(1), "% ");
|
|
1512
1530
|
i0.ɵɵadvance(4);
|
|
1513
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(
|
|
1531
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(16, _c6, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0));
|
|
1514
1532
|
i0.ɵɵadvance();
|
|
1515
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(
|
|
1533
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(19, _c7, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0, ctx_r0.getCompareDurationDiff() === 0));
|
|
1516
1534
|
i0.ɵɵadvance();
|
|
1517
1535
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDuration(ctx_r0.getAbsCompareDurationDiff()), " ");
|
|
1518
1536
|
i0.ɵɵadvance(5);
|
|
@@ -1520,15 +1538,15 @@ function TestSuiteFormComponentExtended_div_62_div_14_Template(rf, ctx) { if (rf
|
|
|
1520
1538
|
i0.ɵɵadvance(5);
|
|
1521
1539
|
i0.ɵɵtextInterpolate(ctx_r0.getCompareRegressedCount());
|
|
1522
1540
|
i0.ɵɵadvance(22);
|
|
1523
|
-
i0.ɵɵ
|
|
1541
|
+
i0.ɵɵrepeater(ctx_r0.compareResults);
|
|
1524
1542
|
} }
|
|
1525
|
-
function
|
|
1526
|
-
i0.ɵɵelementStart(0, "div",
|
|
1527
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
1543
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
1544
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
1545
|
+
i0.ɵɵelement(1, "mj-loading", 259);
|
|
1528
1546
|
i0.ɵɵelementEnd();
|
|
1529
1547
|
} }
|
|
1530
|
-
function
|
|
1531
|
-
i0.ɵɵelementStart(0, "div",
|
|
1548
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1549
|
+
i0.ɵɵelementStart(0, "div", 225)(1, "div", 260);
|
|
1532
1550
|
i0.ɵɵelement(2, "i", 33);
|
|
1533
1551
|
i0.ɵɵelementEnd();
|
|
1534
1552
|
i0.ɵɵelementStart(3, "h4");
|
|
@@ -1538,9 +1556,9 @@ function TestSuiteFormComponentExtended_div_62_div_16_Template(rf, ctx) { if (rf
|
|
|
1538
1556
|
i0.ɵɵtext(6, "Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.");
|
|
1539
1557
|
i0.ɵɵelementEnd()();
|
|
1540
1558
|
} }
|
|
1541
|
-
function
|
|
1559
|
+
function TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1542
1560
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1543
|
-
i0.ɵɵelementStart(0, "div",
|
|
1561
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
|
|
1544
1562
|
i0.ɵɵelement(2, "i", 33);
|
|
1545
1563
|
i0.ɵɵelementEnd();
|
|
1546
1564
|
i0.ɵɵelementStart(3, "h4");
|
|
@@ -1550,77 +1568,82 @@ function TestSuiteFormComponentExtended_div_62_div_17_Template(rf, ctx) { if (rf
|
|
|
1550
1568
|
i0.ɵɵtext(6, "You need at least 2 suite runs to use the comparison feature.");
|
|
1551
1569
|
i0.ɵɵelementEnd();
|
|
1552
1570
|
i0.ɵɵelementStart(7, "button", 21);
|
|
1553
|
-
i0.ɵɵlistener("click", function
|
|
1571
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
|
|
1554
1572
|
i0.ɵɵelement(8, "i", 22);
|
|
1555
1573
|
i0.ɵɵtext(9, " Run Suite Now ");
|
|
1556
1574
|
i0.ɵɵelementEnd()();
|
|
1557
1575
|
} }
|
|
1558
|
-
function
|
|
1559
|
-
i0.ɵɵelementStart(0, "div",
|
|
1576
|
+
function TestSuiteFormComponentExtended_Conditional_62_Template(rf, ctx) { if (rf & 1) {
|
|
1577
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "div", 218)(2, "div", 219)(3, "h4");
|
|
1560
1578
|
i0.ɵɵtext(4, "Run A (Baseline)");
|
|
1561
1579
|
i0.ɵɵelementEnd();
|
|
1562
|
-
i0.ɵɵ
|
|
1580
|
+
i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_Template, 3, 0, "div", 220);
|
|
1581
|
+
i0.ɵɵconditionalCreate(6, TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template, 12, 5, "div", 221);
|
|
1563
1582
|
i0.ɵɵelementEnd();
|
|
1564
|
-
i0.ɵɵelementStart(7, "div",
|
|
1565
|
-
i0.ɵɵelement(8, "i",
|
|
1583
|
+
i0.ɵɵelementStart(7, "div", 222);
|
|
1584
|
+
i0.ɵɵelement(8, "i", 223);
|
|
1566
1585
|
i0.ɵɵelementEnd();
|
|
1567
|
-
i0.ɵɵelementStart(9, "div",
|
|
1586
|
+
i0.ɵɵelementStart(9, "div", 219)(10, "h4");
|
|
1568
1587
|
i0.ɵɵtext(11, "Run B (Compare)");
|
|
1569
1588
|
i0.ɵɵelementEnd();
|
|
1570
|
-
i0.ɵɵ
|
|
1589
|
+
i0.ɵɵconditionalCreate(12, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_Template, 3, 0, "div", 220);
|
|
1590
|
+
i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template, 12, 5, "div", 221);
|
|
1571
1591
|
i0.ɵɵelementEnd()();
|
|
1572
|
-
i0.ɵɵ
|
|
1592
|
+
i0.ɵɵconditionalCreate(14, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_Template, 47, 23, "div", 224);
|
|
1593
|
+
i0.ɵɵconditionalCreate(15, TestSuiteFormComponentExtended_Conditional_62_Conditional_15_Template, 2, 0, "div", 56);
|
|
1594
|
+
i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_62_Conditional_16_Template, 7, 0, "div", 225);
|
|
1595
|
+
i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template, 10, 0, "div", 58);
|
|
1573
1596
|
i0.ɵɵelementEnd();
|
|
1574
1597
|
} if (rf & 2) {
|
|
1575
1598
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
1576
1599
|
i0.ɵɵadvance(5);
|
|
1577
|
-
i0.ɵɵ
|
|
1600
|
+
i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 5 : -1);
|
|
1578
1601
|
i0.ɵɵadvance();
|
|
1579
|
-
i0.ɵɵ
|
|
1602
|
+
i0.ɵɵconditional(ctx_r0.compareRunA ? 6 : -1);
|
|
1580
1603
|
i0.ɵɵadvance(6);
|
|
1581
|
-
i0.ɵɵ
|
|
1604
|
+
i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 12 : -1);
|
|
1582
1605
|
i0.ɵɵadvance();
|
|
1583
|
-
i0.ɵɵ
|
|
1606
|
+
i0.ɵɵconditional(ctx_r0.compareRunB ? 13 : -1);
|
|
1584
1607
|
i0.ɵɵadvance();
|
|
1585
|
-
i0.ɵɵ
|
|
1608
|
+
i0.ɵɵconditional(ctx_r0.compareRunA && ctx_r0.compareRunB && !ctx_r0.loadingCompare ? 14 : -1);
|
|
1586
1609
|
i0.ɵɵadvance();
|
|
1587
|
-
i0.ɵɵ
|
|
1610
|
+
i0.ɵɵconditional(ctx_r0.loadingCompare ? 15 : -1);
|
|
1588
1611
|
i0.ɵɵadvance();
|
|
1589
|
-
i0.ɵɵ
|
|
1612
|
+
i0.ɵɵconditional(!ctx_r0.compareRunA || !ctx_r0.compareRunB ? 16 : -1);
|
|
1590
1613
|
i0.ɵɵadvance();
|
|
1591
|
-
i0.ɵɵ
|
|
1614
|
+
i0.ɵɵconditional(ctx_r0.runsLoaded && ctx_r0.suiteRuns.length < 2 ? 17 : -1);
|
|
1592
1615
|
} }
|
|
1593
|
-
function
|
|
1616
|
+
function TestSuiteFormComponentExtended_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
1594
1617
|
const _r39 = i0.ɵɵgetCurrentView();
|
|
1595
|
-
i0.ɵɵelementStart(0, "div",
|
|
1618
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "div", 261);
|
|
1596
1619
|
i0.ɵɵelement(2, "i", 41);
|
|
1597
1620
|
i0.ɵɵtext(3, " Shortcuts ");
|
|
1598
|
-
i0.ɵɵelementStart(4, "button",
|
|
1599
|
-
i0.ɵɵlistener("click", function
|
|
1600
|
-
i0.ɵɵelement(5, "i",
|
|
1621
|
+
i0.ɵɵelementStart(4, "button", 262);
|
|
1622
|
+
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_65_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
|
|
1623
|
+
i0.ɵɵelement(5, "i", 170);
|
|
1601
1624
|
i0.ɵɵelementEnd()();
|
|
1602
|
-
i0.ɵɵelementStart(6, "div",
|
|
1625
|
+
i0.ɵɵelementStart(6, "div", 263)(7, "div", 264)(8, "span");
|
|
1603
1626
|
i0.ɵɵtext(9, "Refresh");
|
|
1604
1627
|
i0.ɵɵelementEnd();
|
|
1605
|
-
i0.ɵɵelementStart(10, "span",
|
|
1628
|
+
i0.ɵɵelementStart(10, "span", 265)(11, "kbd");
|
|
1606
1629
|
i0.ɵɵtext(12, "Cmd");
|
|
1607
1630
|
i0.ɵɵelementEnd();
|
|
1608
1631
|
i0.ɵɵelementStart(13, "kbd");
|
|
1609
1632
|
i0.ɵɵtext(14, "R");
|
|
1610
1633
|
i0.ɵɵelementEnd()()();
|
|
1611
|
-
i0.ɵɵelementStart(15, "div",
|
|
1634
|
+
i0.ɵɵelementStart(15, "div", 264)(16, "span");
|
|
1612
1635
|
i0.ɵɵtext(17, "Run Suite");
|
|
1613
1636
|
i0.ɵɵelementEnd();
|
|
1614
|
-
i0.ɵɵelementStart(18, "span",
|
|
1637
|
+
i0.ɵɵelementStart(18, "span", 265)(19, "kbd");
|
|
1615
1638
|
i0.ɵɵtext(20, "Cmd");
|
|
1616
1639
|
i0.ɵɵelementEnd();
|
|
1617
1640
|
i0.ɵɵelementStart(21, "kbd");
|
|
1618
1641
|
i0.ɵɵtext(22, "Enter");
|
|
1619
1642
|
i0.ɵɵelementEnd()()();
|
|
1620
|
-
i0.ɵɵelementStart(23, "div",
|
|
1643
|
+
i0.ɵɵelementStart(23, "div", 264)(24, "span");
|
|
1621
1644
|
i0.ɵɵtext(25, "Switch Tabs");
|
|
1622
1645
|
i0.ɵɵelementEnd();
|
|
1623
|
-
i0.ɵɵelementStart(26, "span",
|
|
1646
|
+
i0.ɵɵelementStart(26, "span", 265)(27, "kbd");
|
|
1624
1647
|
i0.ɵɵtext(28, "1");
|
|
1625
1648
|
i0.ɵɵelementEnd();
|
|
1626
1649
|
i0.ɵɵtext(29, "-");
|
|
@@ -3331,8 +3354,8 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3331
3354
|
let _t;
|
|
3332
3355
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartContainer = _t.first);
|
|
3333
3356
|
} }, hostBindings: function TestSuiteFormComponentExtended_HostBindings(rf, ctx) { if (rf & 1) {
|
|
3334
|
-
i0.ɵɵlistener("keydown", function TestSuiteFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); },
|
|
3335
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 66, vars: 36, consts: [["chartContainer", ""], ["kendoDialogContainer", "", 1, "test-suite-form"], [1, "suite-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "fas", "fa-layer-group"], [1, "header-content"], [1, "header-left"], [1, "suite-icon"], [1, "suite-info"], [1, "suite-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], ["class", "test-count", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "title", "Export to CSV", 3, "click"], [1, "fas", "fa-file-excel"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], ["class", "suite-description", 4, "ngIf"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-flask"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-history"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-balance-scale"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "tests-tab", 4, "ngIf"], ["class", "runs-tab", 4, "ngIf"], ["class", "analytics-tab", 4, "ngIf"], ["class", "compare-tab", 4, "ngIf"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], ["class", "keyboard-shortcuts", 4, "ngIf"], [1, "test-count"], [1, "suite-description"], [1, "tab-badge"], [1, "overview-tab"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "tests-tab"], ["class", "loading-state", 4, "ngIf"], ["class", "tests-list", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], [1, "loading-state"], [1, "skeleton-list"], ["class", "skeleton-card", 4, "ngFor", "ngForOf"], [1, "skeleton-card"], [1, "skeleton-sequence"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "tests-list"], ["class", "test-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "test-item", 3, "click"], [1, "test-sequence"], [1, "test-icon"], [1, "test-content"], [1, "test-name"], [1, "test-status"], [4, "ngIf"], [1, "fas", "fa-chevron-right"], [1, "empty-state"], [1, "empty-icon"], [1, "runs-tab"], ["class", "runs-list", 4, "ngIf"], [1, "runs-list"], ["class", "run-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [1, "run-eval-metrics"], ["class", "eval-metric status", 3, "class", 4, "ngIf"], ["class", "eval-metric human", "title", "Human evaluation", 4, "ngIf"], ["class", "eval-metric auto", "title", "Auto score (pass rate)", 3, "high", "medium", "low", 4, "ngIf"], ["class", "run-tags", 4, "ngIf"], [1, "fas", "fa-check-circle"], [1, "eval-metric", "status"], ["title", "Human evaluation", 1, "eval-metric", "human"], [1, "fas", "fa-user"], [1, "eval-pending"], [1, "fas", "fa-clock"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto"], [1, "fas", "fa-robot"], [1, "run-tags"], ["class", "tag-chip", 4, "ngFor", "ngForOf"], [1, "tag-chip"], [1, "fas", "fa-play-circle"], [1, "analytics-tab"], ["text", "Loading analytics data..."], [1, "analytics-subnav"], [1, "subnav-tabs"], [1, "subnav-tab", 3, "click"], [1, "fas", "fa-chart-bar"], [1, "fas", "fa-th"], [1, "fas", "fa-project-diagram"], [1, "analytics-filters"], [1, "filters-header", 3, "click"], [1, "filters-title"], [1, "fas", "fa-filter"], ["class", "filter-summary", 4, "ngIf"], ["class", "filters-content", 4, "ngIf"], [1, "filter-summary"], [1, "filters-content"], [1, "filter-group"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], ["class", "filter-group", 4, "ngIf"], ["class", "filter-hint", 4, "ngIf"], [1, "filter-buttons", "tag-filters"], [1, "filter-btn", "tag-btn", "all-tags-btn", 3, "click"], ["class", "filter-btn tag-btn", 3, "active", "click", 4, "ngFor", "ngForOf"], [1, "filter-hint"], [1, "filter-btn", "tag-btn", 3, "click"], ["class", "fas fa-check", 4, "ngIf"], [1, "fas", "fa-check"], [1, "analytics-kpis"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "success"], [1, "kpi-trend", 3, "ngClass"], [1, "kpi-icon", "info"], [1, "kpi-icon", "warning"], [1, "fas", "fa-dollar-sign"], [1, "analytics-table-section"], [1, "fas", "fa-table"], [1, "analytics-table-wrapper"], [1, "analytics-table"], ["class", "clickable-row", 3, "click", 4, "ngFor", "ngForOf"], ["class", "empty-state small", 4, "ngIf"], [1, "clickable-row", 3, "click"], [1, "status-chip", 3, "ngClass"], [1, "pass-rate-cell"], [1, "pass-rate-bar", 3, "ngClass"], [1, "tag-cell"], ["class", "tag-chip-table", 4, "ngFor", "ngForOf"], ["class", "tag-more", 4, "ngIf"], [1, "tag-chip-table"], [1, "tag-more"], [1, "empty-state", "small"], ["class", "matrix-section", 4, "ngIf"], ["text", "Loading test matrix..."], [1, "matrix-section"], [1, "matrix-header"], [1, "matrix-header-right"], [1, "matrix-filter-input"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Filter tests...", 1, "filter-input", 3, "input", "value"], ["class", "clear-filter-btn", "title", "Clear filter", 3, "click", 4, "ngIf"], [1, "matrix-run-count"], ["kendoButton", "", "title", "Export matrix to CSV", 3, "click", "disabled"], [1, "fas", "fa-download"], [1, "matrix-scroll-container"], [1, "test-matrix"], ["title", "Sort by sequence", 1, "seq-header", 3, "click"], ["title", "Sort by name", 1, "test-name-header", 3, "click"], ["class", "run-header", 3, "title", "click", 4, "ngFor", "ngForOf"], [1, "spacer-header"], [3, "row-selected", "click", 4, "ngFor", "ngForOf"], [1, "totals-row"], [1, "seq-cell", "totals-label"], [1, "test-name-cell", "totals-label"], ["class", "result-cell totals-cell", 4, "ngFor", "ngForOf"], [1, "spacer-cell"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fas", "fa-times"], [1, "run-header", 3, "click", "title"], [1, "run-header-content"], ["class", "run-tags-header", 4, "ngIf"], [1, "run-date"], [1, "run-pass-rate", 3, "ngClass"], [1, "run-tags-header"], ["class", "tag-chip-header", 4, "ngFor", "ngForOf"], ["class", "tag-more-header", 4, "ngIf"], [1, "tag-chip-header"], [1, "tag-more-header"], [3, "click"], [1, "seq-cell"], [1, "test-name-cell"], [1, "test-name", 3, "title"], ["class", "result-cell", 3, "ngClass", "clickable", "cell-not-run", "title", "click", 4, "ngFor", "ngForOf"], [1, "result-cell", 3, "click", "ngClass", "title"], ["class", "cell-not-run-indicator", 4, "ngIf"], [1, "cell-eval-stack"], ["class", "cell-status", 3, "ngClass", "cell-skipped-status", "title", 4, "ngIf"], ["class", "cell-human no-feedback", "title", "Human Review: No rating submitted yet", 4, "ngIf"], ["class", "cell-human has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title", 4, "ngIf"], ["class", "cell-auto has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title", 4, "ngIf"], ["class", "cell-auto no-score", "title", "Auto Score: No automated score available", 4, "ngIf"], [1, "cell-status", 3, "ngClass", "title"], ["title", "Human Review: No rating submitted yet", 1, "cell-human", "no-feedback"], [1, "fas", "fa-user-slash"], [1, "cell-human", "has-feedback", 3, "title"], [1, "rating-value"], [1, "cell-auto", "has-score", 3, "title"], [1, "score-value"], ["title", "Auto Score: No automated score available", 1, "cell-auto", "no-score"], [1, "cell-not-run-indicator"], [1, "fas", "fa-minus"], [1, "result-cell", "totals-cell"], [1, "cell-eval-stack", "totals-stack"], ["class", "totals-status", 4, "ngIf"], ["class", "totals-human", 4, "ngIf"], ["class", "totals-auto", 4, "ngIf"], [1, "totals-status"], [1, "pass-count"], [1, "totals-human"], ["class", "avg-label", 4, "ngIf"], [1, "count-label"], [1, "avg-label"], [1, "totals-auto"], ["class", "chart-section", 4, "ngIf"], ["text", "Loading chart data..."], [1, "chart-section"], [1, "chart-header"], [1, "chart-legend"], [1, "legend-item", "chart-passed"], [1, "legend-item", "chart-failed"], [1, "legend-item", "chart-error"], [1, "fas", "fa-exclamation"], [1, "legend-item", "chart-skipped"], [1, "fas", "fa-forward"], [1, "chart-container"], [1, "d3-chart"], [1, "chart-info"], [1, "compare-tab"], [1, "compare-selection"], [1, "compare-run-selector"], ["class", "run-selector-list", 4, "ngIf"], ["class", "selected-run-preview", 4, "ngIf"], [1, "compare-vs"], [1, "fas", "fa-exchange-alt"], ["class", "compare-results", 4, "ngIf"], ["class", "compare-empty", 4, "ngIf"], [1, "run-selector-list"], ["class", "run-selector-item", 3, "selected", "click", 4, "ngFor", "ngForOf"], [1, "run-selector-item", 3, "click"], [1, "selector-status"], [1, "selector-content"], [1, "selector-date"], [1, "selector-rate"], ["class", "selector-tags", 4, "ngIf"], [1, "selector-tags"], ["class", "tag-mini", 4, "ngFor", "ngForOf"], [1, "tag-mini"], [1, "selected-run-preview"], [1, "preview-header"], [1, "preview-label"], [1, "clear-btn", 3, "click"], [1, "preview-details"], [1, "preview-rate"], ["class", "run-selector-item", 3, "selected", "disabled", "click", 4, "ngFor", "ngForOf"], [1, "compare-results"], [1, "compare-summary"], [1, "compare-summary-card"], [1, "summary-label"], [1, "summary-value", 3, "ngClass"], [1, "compare-summary-card", "improved"], [1, "summary-value"], [1, "compare-summary-card", "regressed"], [1, "compare-table-section"], [1, "fas", "fa-list"], [1, "compare-table-wrapper"], [1, "compare-table"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "ngClass"], ["class", "status-chip", 3, "ngClass", 4, "ngIf"], ["class", "status-chip status-missing", 4, "ngIf"], [3, "ngClass", 4, "ngIf"], ["class", "muted", 4, "ngIf"], ["class", "change-indicator improved", 4, "ngIf"], ["class", "change-indicator regressed", 4, "ngIf"], ["class", "change-indicator unchanged", 4, "ngIf"], [1, "status-chip", "status-missing"], [1, "muted"], [1, "change-indicator", "improved"], [1, "fas", "fa-arrow-up"], [1, "change-indicator", "regressed"], [1, "fas", "fa-arrow-down"], [1, "change-indicator", "unchanged"], ["text", "Loading comparison data..."], [1, "compare-empty"], [1, "compare-empty-icon"], [1, "keyboard-shortcuts"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestSuiteFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3357
|
+
i0.ɵɵlistener("keydown", function TestSuiteFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, i0.ɵɵresolveDocument);
|
|
3358
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 66, vars: 36, consts: [["chartContainer", ""], ["kendoDialogContainer", "", 1, "test-suite-form"], [1, "suite-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "fas", "fa-layer-group"], [1, "header-content"], [1, "header-left"], [1, "suite-icon"], [1, "suite-info"], [1, "suite-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], [1, "test-count"], [1, "header-actions"], ["kendoButton", "", "title", "Export to CSV", 3, "click"], [1, "fas", "fa-file-excel"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], [1, "suite-description"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-flask"], [1, "tab-badge"], [1, "fas", "fa-history"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-balance-scale"], [1, "tab-content"], [1, "overview-tab"], [1, "tests-tab"], [1, "runs-tab"], [1, "analytics-tab"], [1, "compare-tab"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], [1, "keyboard-shortcuts"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "loading-state"], [1, "tests-list"], [1, "empty-state"], [1, "skeleton-list"], [1, "skeleton-card"], [1, "skeleton-sequence"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "test-item"], [1, "test-item", 3, "click"], [1, "test-sequence"], [1, "test-icon"], [1, "test-content"], [1, "test-name"], [1, "test-status"], [1, "fas", "fa-chevron-right"], [1, "empty-icon"], [1, "runs-list"], [1, "run-item"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [1, "run-eval-metrics"], [1, "eval-metric", "status", 3, "class"], ["title", "Human evaluation", 1, "eval-metric", "human"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto", 3, "high", "medium", "low"], [1, "run-tags"], [1, "fas", "fa-check-circle"], [1, "eval-metric", "status"], [1, "fas", "fa-user"], [1, "eval-pending"], [1, "fas", "fa-clock"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto"], [1, "fas", "fa-robot"], [1, "tag-chip"], [1, "fas", "fa-play-circle"], ["text", "Loading analytics data..."], [1, "analytics-subnav"], [1, "subnav-tabs"], [1, "subnav-tab", 3, "click"], [1, "fas", "fa-chart-bar"], [1, "fas", "fa-th"], [1, "fas", "fa-project-diagram"], [1, "analytics-filters"], [1, "filters-header", 3, "click"], [1, "filters-title"], [1, "fas", "fa-filter"], [1, "filter-summary"], [1, "filters-content"], [1, "filter-group"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], [1, "filter-hint"], [1, "filter-buttons", "tag-filters"], [1, "filter-btn", "tag-btn", "all-tags-btn", 3, "click"], [1, "filter-btn", "tag-btn", 3, "active"], [1, "filter-btn", "tag-btn", 3, "click"], [1, "fas", "fa-check"], [1, "analytics-kpis"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "success"], [1, "kpi-trend", 3, "ngClass"], [1, "kpi-icon", "info"], [1, "kpi-icon", "warning"], [1, "fas", "fa-dollar-sign"], [1, "analytics-table-section"], [1, "fas", "fa-table"], [1, "analytics-table-wrapper"], [1, "analytics-table"], [1, "clickable-row"], [1, "empty-state", "small"], [1, "clickable-row", 3, "click"], [1, "status-chip", 3, "ngClass"], [1, "pass-rate-cell"], [1, "pass-rate-bar", 3, "ngClass"], [1, "tag-cell"], [1, "tag-chip-table"], [1, "tag-more"], [1, "matrix-section"], ["text", "Loading test matrix..."], [1, "matrix-header"], [1, "matrix-header-right"], [1, "matrix-filter-input"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Filter tests...", 1, "filter-input", 3, "input", "value"], ["title", "Clear filter", 1, "clear-filter-btn"], [1, "matrix-run-count"], ["kendoButton", "", "title", "Export matrix to CSV", 3, "click", "disabled"], [1, "fas", "fa-download"], [1, "matrix-scroll-container"], [1, "test-matrix"], ["title", "Sort by sequence", 1, "seq-header", 3, "click"], ["title", "Sort by name", 1, "test-name-header", 3, "click"], [1, "run-header", 3, "title"], [1, "spacer-header"], [3, "row-selected"], [1, "totals-row"], [1, "seq-cell", "totals-label"], [1, "test-name-cell", "totals-label"], [1, "result-cell", "totals-cell"], [1, "spacer-cell"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fas", "fa-times"], [1, "run-header", 3, "click", "title"], [1, "run-header-content"], [1, "run-tags-header"], [1, "run-date"], [1, "run-pass-rate", 3, "ngClass"], [1, "tag-chip-header"], [1, "tag-more-header"], [3, "click"], [1, "seq-cell"], [1, "test-name-cell"], [1, "test-name", 3, "title"], [1, "result-cell", 3, "ngClass", "clickable", "cell-not-run", "title"], [1, "result-cell", 3, "click", "ngClass", "title"], [1, "cell-eval-stack"], [1, "cell-not-run-indicator"], [1, "cell-status", 3, "ngClass", "cell-skipped-status", "title"], ["title", "Human Review: No rating submitted yet", 1, "cell-human", "no-feedback"], [1, "cell-human", "has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title"], [1, "cell-auto", "has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title"], ["title", "Auto Score: No automated score available", 1, "cell-auto", "no-score"], [1, "cell-status", 3, "ngClass", "title"], [1, "fas", "fa-user-slash"], [1, "cell-human", "has-feedback", 3, "title"], [1, "rating-value"], [1, "cell-auto", "has-score", 3, "title"], [1, "score-value"], [1, "fas", "fa-minus"], [1, "cell-eval-stack", "totals-stack"], [1, "totals-status"], [1, "totals-human"], [1, "totals-auto"], [1, "pass-count"], [1, "avg-label"], [1, "count-label"], [1, "chart-section"], ["text", "Loading chart data..."], [1, "chart-header"], [1, "chart-legend"], [1, "legend-item", "chart-passed"], [1, "legend-item", "chart-failed"], [1, "legend-item", "chart-error"], [1, "fas", "fa-exclamation"], [1, "legend-item", "chart-skipped"], [1, "fas", "fa-forward"], [1, "chart-container"], [1, "d3-chart"], [1, "chart-info"], [1, "compare-selection"], [1, "compare-run-selector"], [1, "run-selector-list"], [1, "selected-run-preview"], [1, "compare-vs"], [1, "fas", "fa-exchange-alt"], [1, "compare-results"], [1, "compare-empty"], [1, "run-selector-item", 3, "selected"], [1, "run-selector-item", 3, "click"], [1, "selector-status"], [1, "selector-content"], [1, "selector-date"], [1, "selector-rate"], [1, "selector-tags"], [1, "tag-mini"], [1, "preview-header"], [1, "preview-label"], [1, "clear-btn", 3, "click"], [1, "preview-details"], [1, "preview-rate"], [1, "run-selector-item", 3, "selected", "disabled"], [1, "compare-summary"], [1, "compare-summary-card"], [1, "summary-label"], [1, "summary-value", 3, "ngClass"], [1, "compare-summary-card", "improved"], [1, "summary-value"], [1, "compare-summary-card", "regressed"], [1, "compare-table-section"], [1, "fas", "fa-list"], [1, "compare-table-wrapper"], [1, "compare-table"], [3, "ngClass"], [1, "status-chip", "status-missing"], [1, "muted"], [1, "change-indicator", "improved"], [1, "change-indicator", "regressed"], [1, "change-indicator", "unchanged"], [1, "fas", "fa-arrow-up"], [1, "fas", "fa-arrow-down"], ["text", "Loading comparison data..."], [1, "compare-empty-icon"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestSuiteFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3336
3359
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "nav", 3)(3, "ol")(4, "li")(5, "a", 4);
|
|
3337
3360
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_a_click_5_listener() { return ctx.navigateToTestingDashboard(); });
|
|
3338
3361
|
i0.ɵɵelement(6, "i", 5);
|
|
@@ -3354,7 +3377,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3354
3377
|
i0.ɵɵelement(23, "i", 16);
|
|
3355
3378
|
i0.ɵɵtext(24);
|
|
3356
3379
|
i0.ɵɵelementEnd();
|
|
3357
|
-
i0.ɵɵ
|
|
3380
|
+
i0.ɵɵconditionalCreate(25, TestSuiteFormComponentExtended_Conditional_25_Template, 3, 1, "span", 17);
|
|
3358
3381
|
i0.ɵɵelementEnd()()();
|
|
3359
3382
|
i0.ɵɵelementStart(26, "div", 18);
|
|
3360
3383
|
i0.ɵɵelement(27, "app-evaluation-mode-toggle");
|
|
@@ -3373,7 +3396,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3373
3396
|
i0.ɵɵelement(35, "i", 16);
|
|
3374
3397
|
i0.ɵɵtext(36);
|
|
3375
3398
|
i0.ɵɵelementEnd()()();
|
|
3376
|
-
i0.ɵɵ
|
|
3399
|
+
i0.ɵɵconditionalCreate(37, TestSuiteFormComponentExtended_Conditional_37_Template, 3, 1, "div", 24);
|
|
3377
3400
|
i0.ɵɵelementEnd();
|
|
3378
3401
|
i0.ɵɵelementStart(38, "div", 25)(39, "div", 26)(40, "button", 27);
|
|
3379
3402
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_40_listener() { return ctx.changeTab("overview"); });
|
|
@@ -3384,13 +3407,13 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3384
3407
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_43_listener() { return ctx.changeTab("tests"); });
|
|
3385
3408
|
i0.ɵɵelement(44, "i", 29);
|
|
3386
3409
|
i0.ɵɵtext(45, " Tests ");
|
|
3387
|
-
i0.ɵɵ
|
|
3410
|
+
i0.ɵɵconditionalCreate(46, TestSuiteFormComponentExtended_Conditional_46_Template, 2, 1, "span", 30);
|
|
3388
3411
|
i0.ɵɵelementEnd();
|
|
3389
3412
|
i0.ɵɵelementStart(47, "button", 27);
|
|
3390
3413
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_47_listener() { return ctx.changeTab("runs"); });
|
|
3391
3414
|
i0.ɵɵelement(48, "i", 31);
|
|
3392
3415
|
i0.ɵɵtext(49, " Runs ");
|
|
3393
|
-
i0.ɵɵ
|
|
3416
|
+
i0.ɵɵconditionalCreate(50, TestSuiteFormComponentExtended_Conditional_50_Template, 2, 1, "span", 30);
|
|
3394
3417
|
i0.ɵɵelementEnd();
|
|
3395
3418
|
i0.ɵɵelementStart(51, "button", 27);
|
|
3396
3419
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_51_listener() { return ctx.changeTab("analytics"); });
|
|
@@ -3403,13 +3426,17 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3403
3426
|
i0.ɵɵtext(56, " Compare ");
|
|
3404
3427
|
i0.ɵɵelementEnd()()();
|
|
3405
3428
|
i0.ɵɵelementStart(57, "div", 34);
|
|
3406
|
-
i0.ɵɵ
|
|
3429
|
+
i0.ɵɵconditionalCreate(58, TestSuiteFormComponentExtended_Conditional_58_Template, 45, 13, "div", 35);
|
|
3430
|
+
i0.ɵɵconditionalCreate(59, TestSuiteFormComponentExtended_Conditional_59_Template, 4, 3, "div", 36);
|
|
3431
|
+
i0.ɵɵconditionalCreate(60, TestSuiteFormComponentExtended_Conditional_60_Template, 4, 3, "div", 37);
|
|
3432
|
+
i0.ɵɵconditionalCreate(61, TestSuiteFormComponentExtended_Conditional_61_Template, 4, 3, "div", 38);
|
|
3433
|
+
i0.ɵɵconditionalCreate(62, TestSuiteFormComponentExtended_Conditional_62_Template, 18, 8, "div", 39);
|
|
3407
3434
|
i0.ɵɵelementEnd();
|
|
3408
3435
|
i0.ɵɵelementStart(63, "button", 40);
|
|
3409
3436
|
i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_63_listener() { return ctx.toggleShortcuts(); });
|
|
3410
3437
|
i0.ɵɵelement(64, "i", 41);
|
|
3411
3438
|
i0.ɵɵelementEnd();
|
|
3412
|
-
i0.ɵɵ
|
|
3439
|
+
i0.ɵɵconditionalCreate(65, TestSuiteFormComponentExtended_Conditional_65_Template, 32, 0, "div", 42);
|
|
3413
3440
|
i0.ɵɵelementEnd();
|
|
3414
3441
|
} if (rf & 2) {
|
|
3415
3442
|
i0.ɵɵadvance(13);
|
|
@@ -3425,7 +3452,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3425
3452
|
i0.ɵɵadvance();
|
|
3426
3453
|
i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
|
|
3427
3454
|
i0.ɵɵadvance();
|
|
3428
|
-
i0.ɵɵ
|
|
3455
|
+
i0.ɵɵconditional(ctx.testsLoaded ? 25 : -1);
|
|
3429
3456
|
i0.ɵɵadvance(9);
|
|
3430
3457
|
i0.ɵɵproperty("disabled", ctx.isRefreshing);
|
|
3431
3458
|
i0.ɵɵadvance();
|
|
@@ -3433,7 +3460,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3433
3460
|
i0.ɵɵadvance();
|
|
3434
3461
|
i0.ɵɵtextInterpolate1(" ", ctx.isRefreshing ? "Refreshing..." : "Refresh", " ");
|
|
3435
3462
|
i0.ɵɵadvance();
|
|
3436
|
-
i0.ɵɵ
|
|
3463
|
+
i0.ɵɵconditional(ctx.record.Description ? 37 : -1);
|
|
3437
3464
|
i0.ɵɵadvance(3);
|
|
3438
3465
|
i0.ɵɵclassProp("active", ctx.activeTab === "overview");
|
|
3439
3466
|
i0.ɵɵattribute("aria-selected", ctx.activeTab === "overview");
|
|
@@ -3441,12 +3468,12 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3441
3468
|
i0.ɵɵclassProp("active", ctx.activeTab === "tests");
|
|
3442
3469
|
i0.ɵɵattribute("aria-selected", ctx.activeTab === "tests");
|
|
3443
3470
|
i0.ɵɵadvance(3);
|
|
3444
|
-
i0.ɵɵ
|
|
3471
|
+
i0.ɵɵconditional(ctx.testsLoaded ? 46 : -1);
|
|
3445
3472
|
i0.ɵɵadvance();
|
|
3446
3473
|
i0.ɵɵclassProp("active", ctx.activeTab === "runs");
|
|
3447
3474
|
i0.ɵɵattribute("aria-selected", ctx.activeTab === "runs");
|
|
3448
3475
|
i0.ɵɵadvance(3);
|
|
3449
|
-
i0.ɵɵ
|
|
3476
|
+
i0.ɵɵconditional(ctx.runsLoaded ? 50 : -1);
|
|
3450
3477
|
i0.ɵɵadvance();
|
|
3451
3478
|
i0.ɵɵclassProp("active", ctx.activeTab === "analytics");
|
|
3452
3479
|
i0.ɵɵattribute("aria-selected", ctx.activeTab === "analytics");
|
|
@@ -3454,20 +3481,20 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
|
|
|
3454
3481
|
i0.ɵɵclassProp("active", ctx.activeTab === "compare");
|
|
3455
3482
|
i0.ɵɵattribute("aria-selected", ctx.activeTab === "compare");
|
|
3456
3483
|
i0.ɵɵadvance(4);
|
|
3457
|
-
i0.ɵɵ
|
|
3484
|
+
i0.ɵɵconditional(ctx.activeTab === "overview" ? 58 : -1);
|
|
3458
3485
|
i0.ɵɵadvance();
|
|
3459
|
-
i0.ɵɵ
|
|
3486
|
+
i0.ɵɵconditional(ctx.activeTab === "tests" ? 59 : -1);
|
|
3460
3487
|
i0.ɵɵadvance();
|
|
3461
|
-
i0.ɵɵ
|
|
3488
|
+
i0.ɵɵconditional(ctx.activeTab === "runs" ? 60 : -1);
|
|
3462
3489
|
i0.ɵɵadvance();
|
|
3463
|
-
i0.ɵɵ
|
|
3490
|
+
i0.ɵɵconditional(ctx.activeTab === "analytics" ? 61 : -1);
|
|
3464
3491
|
i0.ɵɵadvance();
|
|
3465
|
-
i0.ɵɵ
|
|
3492
|
+
i0.ɵɵconditional(ctx.activeTab === "compare" ? 62 : -1);
|
|
3466
3493
|
i0.ɵɵadvance();
|
|
3467
3494
|
i0.ɵɵproperty("title", ctx.showShortcuts ? "Hide keyboard shortcuts" : "Show keyboard shortcuts");
|
|
3468
3495
|
i0.ɵɵadvance(2);
|
|
3469
|
-
i0.ɵɵ
|
|
3470
|
-
} }, dependencies: [i5.NgClass, i5.NgForOf, i5.NgIf, i6.DefaultValueAccessor, i6.NumberValueAccessor, i6.NgControlStatus, i6.NgModel, i7.DialogContainerDirective, i8.ButtonComponent, i3.EvaluationModeToggleComponent, i9.LoadingComponent, i5.DatePipe], styles: ["\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.suite-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon[_ngcontent-%COMP%]:hover { transform: scale(1.05); }\n\n.suite-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-text-secondary);\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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\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 animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n\n\n.tests-tab[_ngcontent-%COMP%], .runs-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.loading-state[_ngcontent-%COMP%] { padding: 0; }\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list[_ngcontent-%COMP%], .runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover, .run-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon[_ngcontent-%COMP%], .run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content[_ngcontent-%COMP%], .run-content[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.test-name[_ngcontent-%COMP%], .run-header[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] { font-weight: 600; }\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--test-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n@media (max-width: 1024px) {\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header[_ngcontent-%COMP%] { padding: 16px; }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { flex: 1; }\n\n .tab-shortcut[_ngcontent-%COMP%] { display: none; }\n\n .info-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] { font-size: 16px; }\n\n .tab-badge[_ngcontent-%COMP%] { display: none; }\n\n .test-sequence[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item[_ngcontent-%COMP%]:active, .run-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%] { min-height: 48px; }\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], *[_ngcontent-%COMP%]::before, *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions[_ngcontent-%COMP%], .tabs-container[_ngcontent-%COMP%], .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n}\n\n\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.tag-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n\n\n.run-eval-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] .eval-pending[_ngcontent-%COMP%] {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.analytics-filters[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.filters-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header[_ngcontent-%COMP%]:hover {\n background: var(--test-bg);\n}\n\n.filters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.filter-summary[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] i.fa-check[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.filter-hint[_ngcontent-%COMP%] {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters[_ngcontent-%COMP%] {\n max-height: 120px;\n overflow-y: auto;\n}\n\n\n\n.analytics-kpis[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info[_ngcontent-%COMP%] {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n\n\n.analytics-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed[_ngcontent-%COMP%] { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running[_ngcontent-%COMP%] { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending[_ngcontent-%COMP%] { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium[_ngcontent-%COMP%] { background: var(--test-warning); }\n.pass-rate-bar.low[_ngcontent-%COMP%] { background: var(--test-error); }\n\n\n\n.analytics-subnav[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.matrix-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.matrix-run-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n\n\n.matrix-filter-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n\n\n.matrix-scroll-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix[_ngcontent-%COMP%] {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n display: table-header-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] {\n display: table-row-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n display: table-footer-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; \n\n top: 0;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%] {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .spacer-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.run-tags-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name[_ngcontent-%COMP%] {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell[_ngcontent-%COMP%] {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-cell.clickable[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.result-cell.cell-passed[_ngcontent-%COMP%], \n.result-cell.cell-failed[_ngcontent-%COMP%], \n.result-cell.cell-error[_ngcontent-%COMP%], \n.result-cell.cell-timeout[_ngcontent-%COMP%], \n.result-cell.cell-running[_ngcontent-%COMP%], \n.result-cell.cell-pending[_ngcontent-%COMP%] {\n background: #ffffff;\n color: var(--test-text);\n}\n\n\n\n.result-cell.cell-skipped[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none[_ngcontent-%COMP%] {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n\n\n.cell-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval[_ngcontent-%COMP%] {\n min-width: 120px;\n width: auto;\n}\n\n\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.chart-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-passed[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-failed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-error[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.d3-chart[_ngcontent-%COMP%] .node-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip[_ngcontent-%COMP%] {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-value[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n.chart-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.compare-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-selection[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected[_ngcontent-%COMP%] {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.preview-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n\n\n.compare-results[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n\n.compare-summary-card.improved[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-success); }\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-error); }\n\n\n\n.compare-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.compare-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.improved[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.regressed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n.muted[_ngcontent-%COMP%] { color: var(--test-text-muted); }\n\n.change-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n\n\n.compare-empty[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 32px 16px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .compare-selection[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs[_ngcontent-%COMP%] {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .filter-btn[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper[_ngcontent-%COMP%], \n .compare-table-wrapper[_ngcontent-%COMP%] {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list[_ngcontent-%COMP%] {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n\n\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] .rating-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 11px;\n}\n\n\n\n.cell-human.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 10px;\n}\n\n\n\n.cell-auto.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%], \n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] .cell-eval-stack[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n\n\n\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-label[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-cell[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status[_ngcontent-%COMP%], \n.totals-human[_ngcontent-%COMP%], \n.totals-auto[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status[_ngcontent-%COMP%] {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status[_ngcontent-%COMP%] .pass-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-auto[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}"], changeDetection: 0 }); }
|
|
3496
|
+
i0.ɵɵconditional(ctx.showShortcuts ? 65 : -1);
|
|
3497
|
+
} }, dependencies: [i5.NgClass, i6.DefaultValueAccessor, i6.NumberValueAccessor, i6.NgControlStatus, i6.NgModel, i7.DialogContainerDirective, i8.ButtonComponent, i3.EvaluationModeToggleComponent, i9.LoadingComponent, i5.DatePipe], styles: ["\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.suite-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon[_ngcontent-%COMP%]:hover { transform: scale(1.05); }\n\n.suite-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-text-secondary);\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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\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 animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n\n\n.tests-tab[_ngcontent-%COMP%], .runs-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.loading-state[_ngcontent-%COMP%] { padding: 0; }\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list[_ngcontent-%COMP%], .runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover, .run-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon[_ngcontent-%COMP%], .run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content[_ngcontent-%COMP%], .run-content[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.test-name[_ngcontent-%COMP%], .run-header[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] { font-weight: 600; }\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--test-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n@media (max-width: 1024px) {\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header[_ngcontent-%COMP%] { padding: 16px; }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { flex: 1; }\n\n .tab-shortcut[_ngcontent-%COMP%] { display: none; }\n\n .info-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] { font-size: 16px; }\n\n .tab-badge[_ngcontent-%COMP%] { display: none; }\n\n .test-sequence[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item[_ngcontent-%COMP%]:active, .run-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%] { min-height: 48px; }\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], *[_ngcontent-%COMP%]::before, *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions[_ngcontent-%COMP%], .tabs-container[_ngcontent-%COMP%], .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n}\n\n\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.tag-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n\n\n.run-eval-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] .eval-pending[_ngcontent-%COMP%] {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.analytics-filters[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.filters-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header[_ngcontent-%COMP%]:hover {\n background: var(--test-bg);\n}\n\n.filters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.filter-summary[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] i.fa-check[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.filter-hint[_ngcontent-%COMP%] {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters[_ngcontent-%COMP%] {\n max-height: 120px;\n overflow-y: auto;\n}\n\n\n\n.analytics-kpis[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info[_ngcontent-%COMP%] {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n\n\n.analytics-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed[_ngcontent-%COMP%] { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running[_ngcontent-%COMP%] { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending[_ngcontent-%COMP%] { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium[_ngcontent-%COMP%] { background: var(--test-warning); }\n.pass-rate-bar.low[_ngcontent-%COMP%] { background: var(--test-error); }\n\n\n\n.analytics-subnav[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.matrix-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.matrix-run-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n\n\n.matrix-filter-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n\n\n.matrix-scroll-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix[_ngcontent-%COMP%] {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n display: table-header-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] {\n display: table-row-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n display: table-footer-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; \n\n top: 0;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%] {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .spacer-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.run-tags-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name[_ngcontent-%COMP%] {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell[_ngcontent-%COMP%] {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-cell.clickable[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.result-cell.cell-passed[_ngcontent-%COMP%], \n.result-cell.cell-failed[_ngcontent-%COMP%], \n.result-cell.cell-error[_ngcontent-%COMP%], \n.result-cell.cell-timeout[_ngcontent-%COMP%], \n.result-cell.cell-running[_ngcontent-%COMP%], \n.result-cell.cell-pending[_ngcontent-%COMP%] {\n background: #ffffff;\n color: var(--test-text);\n}\n\n\n\n.result-cell.cell-skipped[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none[_ngcontent-%COMP%] {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n\n\n.cell-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval[_ngcontent-%COMP%] {\n min-width: 120px;\n width: auto;\n}\n\n\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.chart-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-passed[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-failed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-error[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.d3-chart[_ngcontent-%COMP%] .node-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip[_ngcontent-%COMP%] {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-value[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n.chart-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.compare-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-selection[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected[_ngcontent-%COMP%] {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.preview-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n\n\n.compare-results[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n\n.compare-summary-card.improved[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-success); }\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-error); }\n\n\n\n.compare-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.compare-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.improved[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.regressed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n.muted[_ngcontent-%COMP%] { color: var(--test-text-muted); }\n\n.change-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n\n\n.compare-empty[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 32px 16px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .compare-selection[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs[_ngcontent-%COMP%] {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .filter-btn[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper[_ngcontent-%COMP%], \n .compare-table-wrapper[_ngcontent-%COMP%] {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list[_ngcontent-%COMP%] {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n\n\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] .rating-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 11px;\n}\n\n\n\n.cell-human.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 10px;\n}\n\n\n\n.cell-auto.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%], \n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] .cell-eval-stack[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n\n\n\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-label[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-cell[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status[_ngcontent-%COMP%], \n.totals-human[_ngcontent-%COMP%], \n.totals-auto[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status[_ngcontent-%COMP%] {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status[_ngcontent-%COMP%] .pass-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-auto[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}"], changeDetection: 0 }); }
|
|
3471
3498
|
};
|
|
3472
3499
|
TestSuiteFormComponentExtended = __decorate([
|
|
3473
3500
|
RegisterClass(BaseFormComponent, 'MJ: Test Suites')
|
|
@@ -3475,7 +3502,7 @@ TestSuiteFormComponentExtended = __decorate([
|
|
|
3475
3502
|
export { TestSuiteFormComponentExtended };
|
|
3476
3503
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestSuiteFormComponentExtended, [{
|
|
3477
3504
|
type: Component,
|
|
3478
|
-
args: [{ selector: 'mj-test-suite-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <i class=\"fas fa-layer-group\"></i>\n <span>{{ record.Name }}</span>\n </li>\n </ol>\n </nav>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"suite-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"record.Status === 'Active' ? 'fa-circle-check' : 'fa-circle-pause'\"></i>\n {{ record.Status }}\n </span>\n <span class=\"test-count\" *ngIf=\"testsLoaded\">\n <i class=\"fas fa-flask\"></i>\n {{ suiteTests.length }} tests\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"exportToExcel()\" title=\"Export to CSV\">\n <i class=\"fas fa-file-excel\"></i> Export\n </button>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite\n </button>\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n <div class=\"suite-description\" *ngIf=\"record.Description\">\n <p>{{ record.Description }}</p>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i> Overview\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'tests'\"\n (click)=\"changeTab('tests')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'tests'\">\n <i class=\"fas fa-flask\"></i> Tests\n <span class=\"tab-badge\" *ngIf=\"testsLoaded\">{{ suiteTests.length }}</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-history\"></i> Runs\n <span class=\"tab-badge\" *ngIf=\"runsLoaded\">{{ suiteRuns.length }}</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'compare'\"\n (click)=\"changeTab('compare')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'compare'\">\n <i class=\"fas fa-balance-scale\"></i> Compare\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 <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Suite Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Default timeout for tests in this suite</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tests Tab -->\n <div class=\"tests-tab\" *ngIf=\"activeTab === 'tests'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingTests\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3,4,5]\">\n <div class=\"skeleton-sequence\"></div>\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tests List -->\n <div class=\"tests-list\" *ngIf=\"!loadingTests && suiteTests.length > 0\">\n <div class=\"test-item\" *ngFor=\"let test of suiteTests\" (click)=\"openTest(test.TestID)\">\n <div class=\"test-sequence\">{{ test.Sequence }}</div>\n <div class=\"test-icon\"><i class=\"fas fa-flask\"></i></div>\n <div class=\"test-content\">\n <div class=\"test-name\">{{ test.Test }}</div>\n <div class=\"test-status\">\n <span *ngIf=\"test.Status\"><i class=\"fas fa-info-circle\"></i> {{ test.Status }}</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"testsLoaded && !loadingTests && suiteTests.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <h4>No Tests in Suite</h4>\n <p>Add tests to this suite to start running them together.</p>\n </div>\n </div>\n\n <!-- Runs Tab -->\n <div class=\"runs-tab\" *ngIf=\"activeTab === 'runs'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingRuns\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3]\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Runs List -->\n <div class=\"runs-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-item\" *ngFor=\"let run of suiteRuns\" (click)=\"openSuiteRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Completed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n <span *ngIf=\"run.TotalTests\">\n <i class=\"fas fa-check-circle\"></i> {{ run.PassedTests }}/{{ run.TotalTests }}\n ({{ getPassRate(run).toFixed(0) }}%)\n </span>\n </div>\n <!-- Evaluation metrics row -->\n <div class=\"run-eval-metrics\">\n <!-- Status badge -->\n <span class=\"eval-metric status\" *ngIf=\"evalPreferences.showExecution\" [class]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-circle-check]=\"run.Status === 'Completed'\"\n [class.fa-circle-xmark]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </span>\n <!-- Human score (placeholder - need avg from suite run) -->\n <span class=\"eval-metric human\" *ngIf=\"evalPreferences.showHuman\" title=\"Human evaluation\">\n <i class=\"fas fa-user\"></i>\n <span class=\"eval-pending\"><i class=\"fas fa-clock\"></i></span>\n </span>\n <!-- Auto score (pass rate as proxy) -->\n <span class=\"eval-metric auto\" *ngIf=\"evalPreferences.showAuto && run.TotalTests\"\n [class.high]=\"getPassRate(run) >= 80\"\n [class.medium]=\"getPassRate(run) >= 50 && getPassRate(run) < 80\"\n [class.low]=\"getPassRate(run) < 50\"\n title=\"Auto score (pass rate)\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ getPassRate(run).toFixed(0) }}%</span>\n </span>\n </div>\n <!-- Tags display -->\n <div class=\"run-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"tag-chip\" *ngFor=\"let tag of getRunTags(run)\">{{ tag }}</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"runsLoaded && !loadingRuns && suiteRuns.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Suite Runs Yet</h4>\n <p>Run this suite to see execution history and results here.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"analytics-tab\" *ngIf=\"activeTab === 'analytics'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingAnalytics\">\n <mj-loading text=\"Loading analytics data...\"></mj-loading>\n </div>\n\n <ng-container *ngIf=\"!loadingAnalytics && analyticsLoaded\">\n <!-- View Toggle Sub-nav -->\n <div class=\"analytics-subnav\">\n <div class=\"subnav-tabs\">\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'summary'\"\n (click)=\"setAnalyticsView('summary')\">\n <i class=\"fas fa-chart-bar\"></i>\n <span>Summary</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'matrix'\"\n (click)=\"setAnalyticsView('matrix')\">\n <i class=\"fas fa-th\"></i>\n <span>Matrix</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'chart'\"\n (click)=\"setAnalyticsView('chart')\">\n <i class=\"fas fa-project-diagram\"></i>\n <span>Chart</span>\n </button>\n </div>\n </div>\n\n <!-- Collapsible Filters (shared by both views) -->\n <div class=\"analytics-filters\" [class.collapsed]=\"filtersCollapsed\">\n <div class=\"filters-header\" (click)=\"toggleFilters()\">\n <span class=\"filters-title\">\n <i class=\"fas fa-filter\"></i>\n Filters\n <span class=\"filter-summary\" *ngIf=\"filtersCollapsed\">\n {{ analyticsTimeRange === 'all' ? 'All Time' : analyticsTimeRange }}\n <span *ngIf=\"selectedTags.length > 0\"> \u00B7 {{ selectedTags.length }} tags</span>\n </span>\n </span>\n <i class=\"fas\" [ngClass]=\"filtersCollapsed ? 'fa-chevron-down' : 'fa-chevron-up'\"></i>\n </div>\n <div class=\"filters-content\" *ngIf=\"!filtersCollapsed\">\n <div class=\"filter-group\">\n <label>Time Range</label>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '7d'\" (click)=\"setTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '30d'\" (click)=\"setTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '90d'\" (click)=\"setTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === 'all'\" (click)=\"setTimeRange('all')\">All Time</button>\n </div>\n </div>\n <div class=\"filter-group\" *ngIf=\"uniqueTags.length > 0\">\n <label>Filter by Tag <span class=\"filter-hint\" *ngIf=\"selectedTags.length > 0\">({{ selectedTags.length }} selected)</span></label>\n <div class=\"filter-buttons tag-filters\">\n <button class=\"filter-btn tag-btn all-tags-btn\"\n [class.active]=\"selectedTags.length === 0\"\n (click)=\"toggleTagFilter(null)\">\n <i class=\"fas fa-layer-group\"></i> All Tags\n </button>\n <button class=\"filter-btn tag-btn\"\n *ngFor=\"let tag of uniqueTags\"\n [class.active]=\"isTagSelected(tag)\"\n (click)=\"toggleTagFilter(tag)\">\n <i class=\"fas fa-check\" *ngIf=\"isTagSelected(tag)\"></i>\n {{ tag }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Summary View -->\n <ng-container *ngIf=\"analyticsView === 'summary'\">\n <!-- KPI Cards -->\n <div class=\"analytics-kpis\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\"><i class=\"fas fa-play-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon success\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getAveragePassRate().toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Pass Rate</div>\n <div class=\"kpi-trend\" [ngClass]=\"{'trend-up': getPassRateTrend().direction === 'up', 'trend-down': getPassRateTrend().direction === 'down'}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getPassRateTrend().direction === 'up', 'fa-arrow-down': getPassRateTrend().direction === 'down', 'fa-minus': getPassRateTrend().direction === 'stable'}\"></i>\n {{ getPassRateTrend().value.toFixed(1) }}%\n </div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon info\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getAverageDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon warning\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getTotalCost()) }}</div>\n <div class=\"kpi-label\">Total Cost</div>\n </div>\n </div>\n </div>\n\n <!-- Runs Table -->\n <div class=\"analytics-table-section\">\n <h3><i class=\"fas fa-table\"></i> Run History</h3>\n <div class=\"analytics-table-wrapper\">\n <table class=\"analytics-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Status</th>\n <th>Pass Rate</th>\n <th>Tests</th>\n <th>Duration</th>\n <th>Cost</th>\n <th>Tags</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let dp of getFilteredAnalyticsData()\" (click)=\"openSuiteRun(dp.runId)\" class=\"clickable-row\">\n <td>{{ dp.date | date:'short' }}</td>\n <td>\n <span class=\"status-chip\" [ngClass]=\"'status-' + dp.status.toLowerCase()\">{{ dp.status }}</span>\n </td>\n <td>\n <div class=\"pass-rate-cell\">\n <div class=\"pass-rate-bar\" [style.width.%]=\"dp.passRate\" [ngClass]=\"{'high': dp.passRate >= 80, 'medium': dp.passRate >= 50 && dp.passRate < 80, 'low': dp.passRate < 50}\"></div>\n <span>{{ dp.passRate.toFixed(0) }}%</span>\n </div>\n </td>\n <td>{{ dp.passedTests }}/{{ dp.totalTests }}</td>\n <td>{{ formatDuration(dp.duration) }}</td>\n <td>{{ formatCost(dp.cost) }}</td>\n <td>\n <div class=\"tag-cell\">\n <span class=\"tag-chip-table\" *ngFor=\"let tag of dp.tags.slice(0, 2)\">{{ tag }}</span>\n <span class=\"tag-more\" *ngIf=\"dp.tags.length > 2\">+{{ dp.tags.length - 2 }}</span>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"empty-state small\" *ngIf=\"getFilteredAnalyticsData().length === 0\">\n <p>No runs match the current filters.</p>\n </div>\n </div>\n </ng-container>\n\n <!-- Matrix View -->\n <ng-container *ngIf=\"analyticsView === 'matrix'\">\n <!-- Loading Matrix -->\n <div class=\"loading-state\" *ngIf=\"loadingMatrix\">\n <mj-loading text=\"Loading test matrix...\"></mj-loading>\n </div>\n\n <!-- Matrix Content -->\n <div class=\"matrix-section\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length > 0\">\n <div class=\"matrix-header\">\n <h3><i class=\"fas fa-th\"></i> Test Results Matrix</h3>\n <div class=\"matrix-header-right\">\n <div class=\"matrix-filter-input\">\n <i class=\"fas fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Filter tests...\"\n [value]=\"matrixTestFilter\"\n (input)=\"onMatrixFilterInput($event)\"\n class=\"filter-input\">\n <button class=\"clear-filter-btn\" *ngIf=\"matrixTestFilter\" (click)=\"clearMatrixFilter()\" title=\"Clear filter\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <span class=\"matrix-run-count\">{{ matrixData.length }} runs \u00B7 {{ getUniqueTestsFromMatrix().length }} tests</span>\n <button kendoButton (click)=\"exportMatrixToCSV()\" [disabled]=\"matrixData.length === 0\" title=\"Export matrix to CSV\">\n <i class=\"fas fa-download\"></i> Export\n </button>\n </div>\n </div>\n\n <div class=\"matrix-scroll-container\">\n <table class=\"test-matrix\">\n <thead>\n <tr>\n <th class=\"seq-header\" (click)=\"toggleMatrixSort('sequence')\" title=\"Sort by sequence\">\n #\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'sequence' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"test-name-header\" (click)=\"toggleMatrixSort('name')\" title=\"Sort by name\">\n Test\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'name' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"run-header\" *ngFor=\"let run of matrixData\" (click)=\"openSuiteRun(run.runId)\" [title]=\"'Click to view suite run - ' + (run.date | date:'medium')\">\n <div class=\"run-header-content\">\n <div class=\"run-tags-header\" *ngIf=\"run.tags.length > 0\">\n <span class=\"tag-chip-header\" *ngFor=\"let tag of run.tags.slice(0, 2)\">{{ tag }}</span>\n <span class=\"tag-more-header\" *ngIf=\"run.tags.length > 2\">+{{ run.tags.length - 2 }}</span>\n </div>\n <div class=\"run-date\">{{ getRelativeTime(run.date) }}</div>\n <div class=\"run-pass-rate\" [ngClass]=\"{'high': run.passRate >= 80, 'medium': run.passRate >= 50 && run.passRate < 80, 'low': run.passRate < 50}\">\n {{ run.passRate.toFixed(0) }}%\n </div>\n </div>\n </th>\n <th class=\"spacer-header\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let test of getUniqueTestsFromMatrix()\"\n [class.row-selected]=\"selectedMatrixTestId === test.testId\"\n (click)=\"selectMatrixRow(test.testId)\">\n <td class=\"seq-cell\">{{ test.sequence }}</td>\n <td class=\"test-name-cell\">\n <span class=\"test-name\" [title]=\"test.testName\">{{ test.testName }}</span>\n </td>\n <td class=\"result-cell\"\n *ngFor=\"let run of matrixData\"\n [ngClass]=\"getMatrixCellClass(getTestResultForRun(run.runId, test.testId))\"\n [class.clickable]=\"getTestResultForRun(run.runId, test.testId)\"\n [class.cell-not-run]=\"!getTestResultForRun(run.runId, test.testId)\"\n [title]=\"getTestResultForRun(run.runId, test.testId)?.status + ' - Click to view test run' || 'Not Run'\"\n (click)=\"onMatrixCellClick(getTestResultForRun(run.runId, test.testId), $event)\">\n <ng-container *ngIf=\"getTestResultForRun(run.runId, test.testId) as result\">\n <div class=\"cell-eval-stack\">\n <!-- Status indicator -->\n <span class=\"cell-status\" *ngIf=\"evalPreferences.showExecution\"\n [ngClass]=\"'status-' + result.status.toLowerCase()\"\n [class.cell-skipped-status]=\"result.status === 'Skipped' || result.status === 'Pending'\"\n [title]=\"getStatusTooltip(result.status)\">\n <i class=\"fas\"\n [class.fa-check]=\"result.status === 'Passed'\"\n [class.fa-times]=\"result.status === 'Failed'\"\n [class.fa-exclamation]=\"result.status === 'Error'\"\n [class.fa-hourglass-end]=\"result.status === 'Timeout'\"\n [class.fa-forward]=\"result.status === 'Skipped'\"\n [class.fa-spinner]=\"result.status === 'Running'\"\n [class.fa-clock]=\"result.status === 'Pending'\"></i>\n </span>\n <!-- Human score - slashed icon if no feedback, colored by rating if has feedback -->\n <span class=\"cell-human no-feedback\" *ngIf=\"evalPreferences.showHuman && !result.humanRating\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n <span class=\"cell-human has-feedback\" *ngIf=\"evalPreferences.showHuman && result.humanRating\"\n [class.rating-low]=\"result.humanRating <= 4\"\n [class.rating-medium]=\"result.humanRating >= 5 && result.humanRating <= 6\"\n [class.rating-good]=\"result.humanRating >= 7 && result.humanRating <= 8\"\n [class.rating-excellent]=\"result.humanRating >= 9\"\n [title]=\"getHumanTooltip(result.humanRating, result.humanComments)\">\n <i class=\"fas fa-user\"></i>\n <span class=\"rating-value\">{{ result.humanRating }}</span>\n </span>\n <!-- Auto score - colored by percentage -->\n <span class=\"cell-auto has-score\" *ngIf=\"evalPreferences.showAuto && result.score != null\"\n [class.score-low]=\"result.score < 0.5\"\n [class.score-medium]=\"result.score >= 0.5 && result.score < 0.7\"\n [class.score-good]=\"result.score >= 0.7 && result.score < 0.85\"\n [class.score-excellent]=\"result.score >= 0.85\"\n [title]=\"'Auto Score: ' + (result.score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"score-value\">{{ (result.score * 100).toFixed(0) }}</span>\n </span>\n <span class=\"cell-auto no-score\" *ngIf=\"evalPreferences.showAuto && result.score == null\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n </div>\n </ng-container>\n <span class=\"cell-not-run-indicator\" *ngIf=\"!getTestResultForRun(run.runId, test.testId)\">\n <i class=\"fas fa-minus\"></i>\n </span>\n </td>\n <td class=\"spacer-cell\"></td>\n </tr>\n </tbody>\n <!-- Footer row with totals -->\n <tfoot>\n <tr class=\"totals-row\">\n <td class=\"seq-cell totals-label\"></td>\n <td class=\"test-name-cell totals-label\">\n <strong>Totals</strong>\n </td>\n <td class=\"result-cell totals-cell\" *ngFor=\"let run of matrixData\">\n <div class=\"cell-eval-stack totals-stack\">\n <!-- Status totals -->\n <span class=\"totals-status\" *ngIf=\"evalPreferences.showExecution\">\n <span class=\"pass-count\">{{ getRunPassedCount(run) }}/{{ getRunTotalCount(run) }}</span>\n </span>\n <!-- Human totals -->\n <span class=\"totals-human\" *ngIf=\"evalPreferences.showHuman\">\n <span class=\"avg-label\" *ngIf=\"getRunHumanAvg(run) != null\">{{ getRunHumanAvg(run)?.toFixed(1) }}</span>\n <span class=\"count-label\">({{ getRunHumanCount(run) }})</span>\n </span>\n <!-- Auto totals -->\n <span class=\"totals-auto\" *ngIf=\"evalPreferences.showAuto\">\n <span class=\"avg-label\" *ngIf=\"getRunAutoAvg(run) != null\">{{ (getRunAutoAvg(run)! * 100).toFixed(0) }}%</span>\n <span class=\"count-label\">({{ getRunAutoCount(run) }})</span>\n </span>\n </div>\n </td>\n <td class=\"spacer-cell\"></td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n\n <!-- Empty Matrix State -->\n <div class=\"empty-state\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-th\"></i>\n </div>\n <h4>No Matrix Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n </ng-container>\n\n <!-- Chart View -->\n <ng-container *ngIf=\"analyticsView === 'chart'\">\n <!-- Loading Chart -->\n <div class=\"loading-state\" *ngIf=\"loadingMatrix\">\n <mj-loading text=\"Loading chart data...\"></mj-loading>\n </div>\n\n <!-- Chart Content -->\n <div class=\"chart-section\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length > 0\">\n <div class=\"chart-header\">\n <h3><i class=\"fas fa-project-diagram\"></i> Test Results Flow</h3>\n <div class=\"chart-legend\">\n <span class=\"legend-item chart-passed\"><i class=\"fas fa-check\"></i> Passed</span>\n <span class=\"legend-item chart-failed\"><i class=\"fas fa-times\"></i> Failed</span>\n <span class=\"legend-item chart-error\"><i class=\"fas fa-exclamation\"></i> Error</span>\n <span class=\"legend-item chart-skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n\n <div class=\"chart-container\">\n <div #chartContainer class=\"d3-chart\"></div>\n </div>\n\n <div class=\"chart-info\">\n <i class=\"fas fa-info-circle\"></i>\n Interactive visualization showing test results across {{ matrixData.length }} runs.\n Hover over elements for details, click nodes to navigate.\n </div>\n </div>\n\n <!-- Empty Chart State -->\n <div class=\"empty-state\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-project-diagram\"></i>\n </div>\n <h4>No Chart Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!loadingAnalytics && analyticsLoaded && analyticsData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No Analytics Data</h4>\n <p>Run this suite to start collecting analytics data.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n </div>\n\n <!-- Compare Tab -->\n <div class=\"compare-tab\" *ngIf=\"activeTab === 'compare'\">\n <!-- Run Selection -->\n <div class=\"compare-selection\">\n <div class=\"compare-run-selector\">\n <h4>Run A (Baseline)</h4>\n <div class=\"run-selector-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-selector-item\"\n *ngFor=\"let run of suiteRuns\"\n [class.selected]=\"compareRunA?.ID === run.ID\"\n (click)=\"selectCompareRunA(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n <div class=\"selector-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"tag-mini\" *ngFor=\"let tag of getRunTags(run).slice(0, 2)\">{{ tag }}</span>\n </div>\n </div>\n </div>\n <div class=\"selected-run-preview\" *ngIf=\"compareRunA\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunA = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunA.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunA).toFixed(1) }}%</span>\n </div>\n </div>\n </div>\n\n <div class=\"compare-vs\"><i class=\"fas fa-exchange-alt\"></i></div>\n\n <div class=\"compare-run-selector\">\n <h4>Run B (Compare)</h4>\n <div class=\"run-selector-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-selector-item\"\n *ngFor=\"let run of suiteRuns\"\n [class.selected]=\"compareRunB?.ID === run.ID\"\n [class.disabled]=\"compareRunA?.ID === run.ID\"\n (click)=\"compareRunA?.ID !== run.ID && selectCompareRunB(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n <div class=\"selector-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"tag-mini\" *ngFor=\"let tag of getRunTags(run).slice(0, 2)\">{{ tag }}</span>\n </div>\n </div>\n </div>\n <div class=\"selected-run-preview\" *ngIf=\"compareRunB\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunB = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunB.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunB).toFixed(1) }}%</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Comparison Results -->\n <div class=\"compare-results\" *ngIf=\"compareRunA && compareRunB && !loadingCompare\">\n <!-- Summary Cards -->\n <div class=\"compare-summary\">\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Pass Rate Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getComparePassRateDiff()! > 0, 'negative': getComparePassRateDiff()! < 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getComparePassRateDiff()! > 0, 'fa-arrow-down': getComparePassRateDiff()! < 0, 'fa-minus': getComparePassRateDiff() === 0}\"></i>\n {{ getComparePassRateDiff()! > 0 ? '+' : '' }}{{ getComparePassRateDiff()?.toFixed(1) }}%\n </div>\n </div>\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Duration Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getCompareDurationDiff()! < 0, 'negative': getCompareDurationDiff()! > 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-down': getCompareDurationDiff()! < 0, 'fa-arrow-up': getCompareDurationDiff()! > 0, 'fa-minus': getCompareDurationDiff() === 0}\"></i>\n {{ formatDuration(getAbsCompareDurationDiff()) }}\n </div>\n </div>\n <div class=\"compare-summary-card improved\">\n <div class=\"summary-label\">Improved</div>\n <div class=\"summary-value\">{{ getCompareImprovedCount() }}</div>\n </div>\n <div class=\"compare-summary-card regressed\">\n <div class=\"summary-label\">Regressed</div>\n <div class=\"summary-value\">{{ getCompareRegressedCount() }}</div>\n </div>\n </div>\n\n <!-- Detailed Comparison Table -->\n <div class=\"compare-table-section\">\n <h3><i class=\"fas fa-list\"></i> Test-by-Test Comparison</h3>\n <div class=\"compare-table-wrapper\">\n <table class=\"compare-table\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Run A Status</th>\n <th>Run B Status</th>\n <th>Score Diff</th>\n <th>Duration Diff</th>\n <th>Change</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let result of compareResults\" [ngClass]=\"{'improved': result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed', 'regressed': result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'}\">\n <td class=\"test-name-cell\">{{ result.testName }}</td>\n <td>\n <span class=\"status-chip\" *ngIf=\"result.runA\" [ngClass]=\"'status-' + result.runA.status.toLowerCase()\">{{ result.runA.status }}</span>\n <span class=\"status-chip status-missing\" *ngIf=\"!result.runA\">N/A</span>\n </td>\n <td>\n <span class=\"status-chip\" *ngIf=\"result.runB\" [ngClass]=\"'status-' + result.runB.status.toLowerCase()\">{{ result.runB.status }}</span>\n <span class=\"status-chip status-missing\" *ngIf=\"!result.runB\">N/A</span>\n </td>\n <td>\n <span *ngIf=\"result.scoreDiff != null\" [ngClass]=\"{'positive': result.scoreDiff > 0, 'negative': result.scoreDiff < 0}\">\n {{ result.scoreDiff > 0 ? '+' : '' }}{{ (result.scoreDiff * 100).toFixed(1) }}%\n </span>\n <span *ngIf=\"result.scoreDiff == null\" class=\"muted\">-</span>\n </td>\n <td>\n <span *ngIf=\"result.durationDiff != null\" [ngClass]=\"{'positive': result.durationDiff < 0, 'negative': result.durationDiff > 0}\">\n {{ result.durationDiff > 0 ? '+' : '' }}{{ result.durationDiff.toFixed(1) }}s\n </span>\n <span *ngIf=\"result.durationDiff == null\" class=\"muted\">-</span>\n </td>\n <td>\n <span class=\"change-indicator improved\" *ngIf=\"result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed'\">\n <i class=\"fas fa-arrow-up\"></i> Fixed\n </span>\n <span class=\"change-indicator regressed\" *ngIf=\"result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'\">\n <i class=\"fas fa-arrow-down\"></i> Broke\n </span>\n <span class=\"change-indicator unchanged\" *ngIf=\"!result.statusChanged\">\n <i class=\"fas fa-minus\"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n\n <!-- Loading State for Compare -->\n <div class=\"loading-state\" *ngIf=\"loadingCompare\">\n <mj-loading text=\"Loading comparison data...\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"compare-empty\" *ngIf=\"!compareRunA || !compareRunB\">\n <div class=\"compare-empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Select Two Runs to Compare</h4>\n <p>Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.</p>\n </div>\n\n <!-- No Runs State -->\n <div class=\"empty-state\" *ngIf=\"runsLoaded && suiteRuns.length < 2\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Not Enough Runs to Compare</h4>\n <p>You need at least 2 suite runs to use the comparison feature.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n </div>\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n <div class=\"keyboard-shortcuts\" *ngIf=\"showShortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["/* ===========================\n Test Suite Form - World-Class UX\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Header */\n.suite-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon:hover { transform: scale(1.05); }\n\n.suite-info { flex: 1; min-width: 0; }\n\n.suite-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-count {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* Tabs */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar { display: none; }\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-text-secondary);\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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\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 animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section, .config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3, .config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i, .config-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n/* Tests Tab */\n.tests-tab, .runs-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.loading-state { padding: 0; }\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list, .runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item, .run-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item:hover, .run-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon, .run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content, .run-content { flex: 1; min-width: 0; }\n\n.test-name, .run-header {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id { font-weight: 600; }\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status, .run-meta {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status span, .run-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item > i, .run-item > i {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item:hover > i, .run-item:hover > i {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Empty States */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Keyboard Shortcuts */\n/* Keyboard shortcuts toggle button - visible when shortcuts are hidden */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--test-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .keyboard-shortcuts, .shortcuts-toggle { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header { padding: 16px; }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button { flex: 1; }\n\n .tab-shortcut { display: none; }\n\n .info-grid { grid-template-columns: 1fr; }\n\n .test-item, .run-item { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info h1 { font-size: 16px; }\n\n .tab-badge { display: none; }\n\n .test-sequence { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item:active, .run-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab { min-height: 48px; }\n .test-item, .run-item { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions, .tabs-container, .keyboard-shortcuts {\n display: none !important;\n }\n}\n\n/* ===========================\n Tags UI\n =========================== */\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.tag-chip {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.tag-mini {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n/* Evaluation metrics row for Runs list */\n.run-eval-metrics {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human .eval-pending {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ===========================\n Analytics Tab\n =========================== */\n.analytics-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Collapsible filters */\n.analytics-filters {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed {\n margin-bottom: 12px;\n}\n\n.filters-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header:hover {\n background: var(--test-bg);\n}\n\n.filters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title i {\n color: var(--test-primary);\n}\n\n.filter-summary {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header > i {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn i.fa-check {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn i {\n font-size: 11px;\n}\n\n.filter-hint {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters {\n max-height: 120px;\n overflow-y: auto;\n}\n\n/* KPI Cards */\n.analytics-kpis {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n/* Analytics Table */\n.analytics-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section h3 i {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table tbody tr.clickable-row {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table tbody tr.clickable-row:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium { background: var(--test-warning); }\n.pass-rate-bar.low { background: var(--test-error); }\n\n/* Analytics Sub-navigation */\n.analytics-subnav {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab i {\n font-size: 14px;\n}\n\n/* Matrix View */\n.matrix-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header h3 i {\n color: var(--test-primary);\n}\n\n.matrix-run-count {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n/* Matrix filter input */\n.matrix-filter-input {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input i.fa-search {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input .filter-input {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input .filter-input::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n/* Scrollable matrix container with fixed height */\n.matrix-scroll-container {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix thead {\n display: table-header-group;\n}\n\n.test-matrix thead tr {\n display: table-row;\n}\n\n.test-matrix tbody {\n display: table-row-group;\n}\n\n.test-matrix tbody tr {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix tbody tr:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix tbody tr.row-selected {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tbody tr.row-selected td {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix tbody tr.row-selected .seq-cell,\n.test-matrix tbody tr.row-selected .test-name-cell {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tfoot {\n display: table-footer-group;\n}\n\n.test-matrix th,\n.test-matrix td {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix th {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n/* Sequence column - shared styles */\n.test-matrix .seq-header,\n.test-matrix .seq-cell {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n/* Seq header - sticky top AND left, highest z-index */\n.test-matrix .seq-header {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; /* Higher than other headers */\n top: 0;\n}\n\n/* Seq body cells - sticky left only, lower z-index */\n.test-matrix .seq-cell {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix .seq-header i {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix .seq-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .test-name-header {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix .test-name-header i {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix .test-name-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .run-header {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n/* Spacer column absorbs extra width */\n.test-matrix .spacer-header,\n.test-matrix .spacer-cell {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix .spacer-cell {\n background: var(--test-surface);\n}\n\n.test-matrix .run-header:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Matrix column header tags - emphasized */\n.run-tags-header {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix .test-name-cell {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable {\n cursor: pointer;\n}\n\n.result-cell.clickable:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell i {\n font-size: 14px;\n}\n\n/* Completed cells have neutral white background - pills tell the story */\n.result-cell.cell-passed,\n.result-cell.cell-failed,\n.result-cell.cell-error,\n.result-cell.cell-timeout,\n.result-cell.cell-running,\n.result-cell.cell-pending {\n background: #ffffff;\n color: var(--test-text);\n}\n\n/* Skipped/not-run cells get hatched background */\n.result-cell.cell-skipped {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n/* Matrix cell evaluation stack - shows multiple eval types horizontally */\n.cell-eval-stack {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval {\n min-width: 120px;\n width: auto;\n}\n\n/* Add timeout status icon */\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Chart View\n =========================== */\n.chart-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header h3 i {\n color: var(--test-primary);\n}\n\n.chart-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend .legend-item.chart-passed {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend .legend-item.chart-failed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend .legend-item.chart-error {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend .legend-item.chart-skipped {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart svg {\n width: 100%;\n height: 100%;\n}\n\n/* D3 Chart Node Styles */\n.d3-chart .node {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart .node:hover {\n transform: scale(1.05);\n}\n\n.d3-chart .node-label {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart .link {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart .link:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart .tooltip {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart .tooltip-title {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart .tooltip-value {\n opacity: 0.8;\n}\n\n.chart-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Compare Tab\n =========================== */\n.compare-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-selection {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn:hover { text-decoration: underline; }\n\n.preview-details {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n/* Compare Results */\n.compare-results {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card .summary-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card .summary-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card .summary-value.positive { color: var(--test-success); }\n.compare-summary-card .summary-value.negative { color: var(--test-error); }\n\n.compare-summary-card.improved {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved .summary-value { color: var(--test-success); }\n\n.compare-summary-card.regressed {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed .summary-value { color: var(--test-error); }\n\n/* Compare Table */\n.compare-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section h3 i {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper {\n overflow-x: auto;\n}\n\n.compare-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table tbody tr.improved {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table tbody tr.regressed {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive { color: var(--test-success); }\n.negative { color: var(--test-error); }\n.muted { color: var(--test-text-muted); }\n\n.change-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n/* Compare Empty State */\n.compare-empty {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon i {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty p {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Small empty state variant */\n.empty-state.small {\n padding: 32px 16px;\n}\n\n.empty-state.small p {\n margin: 0;\n}\n\n/* ===========================\n Responsive Analytics/Compare\n =========================== */\n@media (max-width: 1024px) {\n .compare-selection {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons {\n flex-direction: column;\n }\n\n .filter-btn {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis {\n grid-template-columns: 1fr;\n }\n\n .kpi-card {\n padding: 16px;\n }\n\n .kpi-value {\n font-size: 20px;\n }\n\n .compare-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper,\n .compare-table-wrapper {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card .summary-value {\n font-size: 20px;\n }\n\n .analytics-table th,\n .analytics-table td,\n .compare-table th,\n .compare-table td {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n/* ===========================\n Matrix Evaluation Indicators\n =========================== */\n\n/* Human Feedback Indicators */\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback i {\n font-size: 11px;\n}\n\n.cell-human.has-feedback {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback i {\n font-size: 9px;\n}\n\n.cell-human.has-feedback .rating-value {\n font-weight: 700;\n font-size: 11px;\n}\n\n/* Human rating color coding: red \u22644, yellow 5-6, light-green 7-8, green 9-10 */\n.cell-human.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto Score Indicators */\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score i {\n font-size: 11px;\n}\n\n.cell-auto.has-score {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score i {\n font-size: 9px;\n}\n\n.cell-auto.has-score .score-value {\n font-weight: 700;\n font-size: 10px;\n}\n\n/* Auto score color coding (0-100%): red <50, yellow 50-69, light-green 70-84, green 85+ */\n.cell-auto.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Status indicators in matrix cells */\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped,\n.cell-status.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Not-run / Skipped cells with hatch pattern */\n.result-cell.cell-not-run {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run .cell-eval-stack {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n/* ===========================\n Matrix Totals Footer Row\n =========================== */\n.test-matrix tfoot {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row td {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row .totals-label {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row .totals-cell {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status,\n.totals-human,\n.totals-auto {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status .pass-count {\n font-weight: 700;\n}\n\n.totals-human {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human .avg-label {\n font-weight: 700;\n}\n\n.totals-human .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto .avg-label {\n font-weight: 700;\n}\n\n.totals-auto .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n"] }]
|
|
3505
|
+
args: [{ standalone: false, selector: 'mj-test-suite-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <i class=\"fas fa-layer-group\"></i>\n <span>{{ record.Name }}</span>\n </li>\n </ol>\n </nav>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"suite-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"record.Status === 'Active' ? 'fa-circle-check' : 'fa-circle-pause'\"></i>\n {{ record.Status }}\n </span>\n @if (testsLoaded) {\n <span class=\"test-count\">\n <i class=\"fas fa-flask\"></i>\n {{ suiteTests.length }} tests\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"exportToExcel()\" title=\"Export to CSV\">\n <i class=\"fas fa-file-excel\"></i> Export\n </button>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite\n </button>\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n @if (record.Description) {\n <div class=\"suite-description\">\n <p>{{ record.Description }}</p>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i> Overview\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'tests'\"\n (click)=\"changeTab('tests')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'tests'\">\n <i class=\"fas fa-flask\"></i> Tests\n @if (testsLoaded) {\n <span class=\"tab-badge\">{{ suiteTests.length }}</span>\n }\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-history\"></i> Runs\n @if (runsLoaded) {\n <span class=\"tab-badge\">{{ suiteRuns.length }}</span>\n }\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'compare'\"\n (click)=\"changeTab('compare')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'compare'\">\n <i class=\"fas fa-balance-scale\"></i> Compare\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n @if (activeTab === 'overview') {\n <div class=\"overview-tab\">\n <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Suite Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Default timeout for tests in this suite</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Tests Tab -->\n @if (activeTab === 'tests') {\n <div class=\"tests-tab\">\n <!-- Loading State -->\n @if (loadingTests) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3,4,5]; track i) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-sequence\"></div>\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Tests List -->\n @if (!loadingTests && suiteTests.length > 0) {\n <div class=\"tests-list\">\n @for (test of suiteTests; track test) {\n <div class=\"test-item\" (click)=\"openTest(test.TestID)\">\n <div class=\"test-sequence\">{{ test.Sequence }}</div>\n <div class=\"test-icon\"><i class=\"fas fa-flask\"></i></div>\n <div class=\"test-content\">\n <div class=\"test-name\">{{ test.Test }}</div>\n <div class=\"test-status\">\n @if (test.Status) {\n <span><i class=\"fas fa-info-circle\"></i> {{ test.Status }}</span>\n }\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (testsLoaded && !loadingTests && suiteTests.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <h4>No Tests in Suite</h4>\n <p>Add tests to this suite to start running them together.</p>\n </div>\n }\n </div>\n }\n\n <!-- Runs Tab -->\n @if (activeTab === 'runs') {\n <div class=\"runs-tab\">\n <!-- Loading State -->\n @if (loadingRuns) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3]; track i) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Runs List -->\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"runs-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-item\" (click)=\"openSuiteRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Completed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n @if (run.TotalTests) {\n <span>\n <i class=\"fas fa-check-circle\"></i> {{ run.PassedTests }}/{{ run.TotalTests }}\n ({{ getPassRate(run).toFixed(0) }}%)\n </span>\n }\n </div>\n <!-- Evaluation metrics row -->\n <div class=\"run-eval-metrics\">\n <!-- Status badge -->\n @if (evalPreferences.showExecution) {\n <span class=\"eval-metric status\" [class]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-circle-check]=\"run.Status === 'Completed'\"\n [class.fa-circle-xmark]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </span>\n }\n <!-- Human score (placeholder - need avg from suite run) -->\n @if (evalPreferences.showHuman) {\n <span class=\"eval-metric human\" title=\"Human evaluation\">\n <i class=\"fas fa-user\"></i>\n <span class=\"eval-pending\"><i class=\"fas fa-clock\"></i></span>\n </span>\n }\n <!-- Auto score (pass rate as proxy) -->\n @if (evalPreferences.showAuto && run.TotalTests) {\n <span class=\"eval-metric auto\"\n [class.high]=\"getPassRate(run) >= 80\"\n [class.medium]=\"getPassRate(run) >= 50 && getPassRate(run) < 80\"\n [class.low]=\"getPassRate(run) < 50\"\n title=\"Auto score (pass rate)\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ getPassRate(run).toFixed(0) }}%</span>\n </span>\n }\n </div>\n <!-- Tags display -->\n @if (getRunTags(run).length > 0) {\n <div class=\"run-tags\">\n @for (tag of getRunTags(run); track tag) {\n <span class=\"tag-chip\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (runsLoaded && !loadingRuns && suiteRuns.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Suite Runs Yet</h4>\n <p>Run this suite to see execution history and results here.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"analytics-tab\">\n <!-- Loading State -->\n @if (loadingAnalytics) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading analytics data...\"></mj-loading>\n </div>\n }\n @if (!loadingAnalytics && analyticsLoaded) {\n <!-- View Toggle Sub-nav -->\n <div class=\"analytics-subnav\">\n <div class=\"subnav-tabs\">\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'summary'\"\n (click)=\"setAnalyticsView('summary')\">\n <i class=\"fas fa-chart-bar\"></i>\n <span>Summary</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'matrix'\"\n (click)=\"setAnalyticsView('matrix')\">\n <i class=\"fas fa-th\"></i>\n <span>Matrix</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'chart'\"\n (click)=\"setAnalyticsView('chart')\">\n <i class=\"fas fa-project-diagram\"></i>\n <span>Chart</span>\n </button>\n </div>\n </div>\n <!-- Collapsible Filters (shared by both views) -->\n <div class=\"analytics-filters\" [class.collapsed]=\"filtersCollapsed\">\n <div class=\"filters-header\" (click)=\"toggleFilters()\">\n <span class=\"filters-title\">\n <i class=\"fas fa-filter\"></i>\n Filters\n @if (filtersCollapsed) {\n <span class=\"filter-summary\">\n {{ analyticsTimeRange === 'all' ? 'All Time' : analyticsTimeRange }}\n @if (selectedTags.length > 0) {\n <span> \u00B7 {{ selectedTags.length }} tags</span>\n }\n </span>\n }\n </span>\n <i class=\"fas\" [ngClass]=\"filtersCollapsed ? 'fa-chevron-down' : 'fa-chevron-up'\"></i>\n </div>\n @if (!filtersCollapsed) {\n <div class=\"filters-content\">\n <div class=\"filter-group\">\n <label>Time Range</label>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '7d'\" (click)=\"setTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '30d'\" (click)=\"setTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '90d'\" (click)=\"setTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === 'all'\" (click)=\"setTimeRange('all')\">All Time</button>\n </div>\n </div>\n @if (uniqueTags.length > 0) {\n <div class=\"filter-group\">\n <label>Filter by Tag @if (selectedTags.length > 0) {\n <span class=\"filter-hint\">({{ selectedTags.length }} selected)</span>\n }</label>\n <div class=\"filter-buttons tag-filters\">\n <button class=\"filter-btn tag-btn all-tags-btn\"\n [class.active]=\"selectedTags.length === 0\"\n (click)=\"toggleTagFilter(null)\">\n <i class=\"fas fa-layer-group\"></i> All Tags\n </button>\n @for (tag of uniqueTags; track tag) {\n <button class=\"filter-btn tag-btn\"\n [class.active]=\"isTagSelected(tag)\"\n (click)=\"toggleTagFilter(tag)\">\n @if (isTagSelected(tag)) {\n <i class=\"fas fa-check\"></i>\n }\n {{ tag }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n <!-- Summary View -->\n @if (analyticsView === 'summary') {\n <!-- KPI Cards -->\n <div class=\"analytics-kpis\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\"><i class=\"fas fa-play-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon success\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getAveragePassRate().toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Pass Rate</div>\n <div class=\"kpi-trend\" [ngClass]=\"{'trend-up': getPassRateTrend().direction === 'up', 'trend-down': getPassRateTrend().direction === 'down'}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getPassRateTrend().direction === 'up', 'fa-arrow-down': getPassRateTrend().direction === 'down', 'fa-minus': getPassRateTrend().direction === 'stable'}\"></i>\n {{ getPassRateTrend().value.toFixed(1) }}%\n </div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon info\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getAverageDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon warning\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getTotalCost()) }}</div>\n <div class=\"kpi-label\">Total Cost</div>\n </div>\n </div>\n </div>\n <!-- Runs Table -->\n <div class=\"analytics-table-section\">\n <h3><i class=\"fas fa-table\"></i> Run History</h3>\n <div class=\"analytics-table-wrapper\">\n <table class=\"analytics-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Status</th>\n <th>Pass Rate</th>\n <th>Tests</th>\n <th>Duration</th>\n <th>Cost</th>\n <th>Tags</th>\n </tr>\n </thead>\n <tbody>\n @for (dp of getFilteredAnalyticsData(); track dp) {\n <tr (click)=\"openSuiteRun(dp.runId)\" class=\"clickable-row\">\n <td>{{ dp.date | date:'short' }}</td>\n <td>\n <span class=\"status-chip\" [ngClass]=\"'status-' + dp.status.toLowerCase()\">{{ dp.status }}</span>\n </td>\n <td>\n <div class=\"pass-rate-cell\">\n <div class=\"pass-rate-bar\" [style.width.%]=\"dp.passRate\" [ngClass]=\"{'high': dp.passRate >= 80, 'medium': dp.passRate >= 50 && dp.passRate < 80, 'low': dp.passRate < 50}\"></div>\n <span>{{ dp.passRate.toFixed(0) }}%</span>\n </div>\n </td>\n <td>{{ dp.passedTests }}/{{ dp.totalTests }}</td>\n <td>{{ formatDuration(dp.duration) }}</td>\n <td>{{ formatCost(dp.cost) }}</td>\n <td>\n <div class=\"tag-cell\">\n @for (tag of dp.tags.slice(0, 2); track tag) {\n <span class=\"tag-chip-table\">{{ tag }}</span>\n }\n @if (dp.tags.length > 2) {\n <span class=\"tag-more\">+{{ dp.tags.length - 2 }}</span>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n @if (getFilteredAnalyticsData().length === 0) {\n <div class=\"empty-state small\">\n <p>No runs match the current filters.</p>\n </div>\n }\n </div>\n }\n <!-- Matrix View -->\n @if (analyticsView === 'matrix') {\n <!-- Loading Matrix -->\n @if (loadingMatrix) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading test matrix...\"></mj-loading>\n </div>\n }\n <!-- Matrix Content -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length > 0) {\n <div class=\"matrix-section\">\n <div class=\"matrix-header\">\n <h3><i class=\"fas fa-th\"></i> Test Results Matrix</h3>\n <div class=\"matrix-header-right\">\n <div class=\"matrix-filter-input\">\n <i class=\"fas fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Filter tests...\"\n [value]=\"matrixTestFilter\"\n (input)=\"onMatrixFilterInput($event)\"\n class=\"filter-input\">\n @if (matrixTestFilter) {\n <button class=\"clear-filter-btn\" (click)=\"clearMatrixFilter()\" title=\"Clear filter\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n <span class=\"matrix-run-count\">{{ matrixData.length }} runs \u00B7 {{ getUniqueTestsFromMatrix().length }} tests</span>\n <button kendoButton (click)=\"exportMatrixToCSV()\" [disabled]=\"matrixData.length === 0\" title=\"Export matrix to CSV\">\n <i class=\"fas fa-download\"></i> Export\n </button>\n </div>\n </div>\n <div class=\"matrix-scroll-container\">\n <table class=\"test-matrix\">\n <thead>\n <tr>\n <th class=\"seq-header\" (click)=\"toggleMatrixSort('sequence')\" title=\"Sort by sequence\">\n #\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'sequence' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"test-name-header\" (click)=\"toggleMatrixSort('name')\" title=\"Sort by name\">\n Test\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'name' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n @for (run of matrixData; track run) {\n <th class=\"run-header\" (click)=\"openSuiteRun(run.runId)\" [title]=\"'Click to view suite run - ' + (run.date | date:'medium')\">\n <div class=\"run-header-content\">\n @if (run.tags.length > 0) {\n <div class=\"run-tags-header\">\n @for (tag of run.tags.slice(0, 2); track tag) {\n <span class=\"tag-chip-header\">{{ tag }}</span>\n }\n @if (run.tags.length > 2) {\n <span class=\"tag-more-header\">+{{ run.tags.length - 2 }}</span>\n }\n </div>\n }\n <div class=\"run-date\">{{ getRelativeTime(run.date) }}</div>\n <div class=\"run-pass-rate\" [ngClass]=\"{'high': run.passRate >= 80, 'medium': run.passRate >= 50 && run.passRate < 80, 'low': run.passRate < 50}\">\n {{ run.passRate.toFixed(0) }}%\n </div>\n </div>\n </th>\n }\n <th class=\"spacer-header\"></th>\n </tr>\n </thead>\n <tbody>\n @for (test of getUniqueTestsFromMatrix(); track test) {\n <tr\n [class.row-selected]=\"selectedMatrixTestId === test.testId\"\n (click)=\"selectMatrixRow(test.testId)\">\n <td class=\"seq-cell\">{{ test.sequence }}</td>\n <td class=\"test-name-cell\">\n <span class=\"test-name\" [title]=\"test.testName\">{{ test.testName }}</span>\n </td>\n @for (run of matrixData; track run) {\n <td class=\"result-cell\"\n [ngClass]=\"getMatrixCellClass(getTestResultForRun(run.runId, test.testId))\"\n [class.clickable]=\"getTestResultForRun(run.runId, test.testId)\"\n [class.cell-not-run]=\"!getTestResultForRun(run.runId, test.testId)\"\n [title]=\"getTestResultForRun(run.runId, test.testId)?.status + ' - Click to view test run' || 'Not Run'\"\n (click)=\"onMatrixCellClick(getTestResultForRun(run.runId, test.testId), $event)\">\n @if (getTestResultForRun(run.runId, test.testId); as result) {\n <div class=\"cell-eval-stack\">\n <!-- Status indicator -->\n @if (evalPreferences.showExecution) {\n <span class=\"cell-status\"\n [ngClass]=\"'status-' + result.status.toLowerCase()\"\n [class.cell-skipped-status]=\"result.status === 'Skipped' || result.status === 'Pending'\"\n [title]=\"getStatusTooltip(result.status)\">\n <i class=\"fas\"\n [class.fa-check]=\"result.status === 'Passed'\"\n [class.fa-times]=\"result.status === 'Failed'\"\n [class.fa-exclamation]=\"result.status === 'Error'\"\n [class.fa-hourglass-end]=\"result.status === 'Timeout'\"\n [class.fa-forward]=\"result.status === 'Skipped'\"\n [class.fa-spinner]=\"result.status === 'Running'\"\n [class.fa-clock]=\"result.status === 'Pending'\"></i>\n </span>\n }\n <!-- Human score - slashed icon if no feedback, colored by rating if has feedback -->\n @if (evalPreferences.showHuman && !result.humanRating) {\n <span class=\"cell-human no-feedback\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n }\n @if (evalPreferences.showHuman && result.humanRating) {\n <span class=\"cell-human has-feedback\"\n [class.rating-low]=\"result.humanRating <= 4\"\n [class.rating-medium]=\"result.humanRating >= 5 && result.humanRating <= 6\"\n [class.rating-good]=\"result.humanRating >= 7 && result.humanRating <= 8\"\n [class.rating-excellent]=\"result.humanRating >= 9\"\n [title]=\"getHumanTooltip(result.humanRating, result.humanComments)\">\n <i class=\"fas fa-user\"></i>\n <span class=\"rating-value\">{{ result.humanRating }}</span>\n </span>\n }\n <!-- Auto score - colored by percentage -->\n @if (evalPreferences.showAuto && result.score != null) {\n <span class=\"cell-auto has-score\"\n [class.score-low]=\"result.score < 0.5\"\n [class.score-medium]=\"result.score >= 0.5 && result.score < 0.7\"\n [class.score-good]=\"result.score >= 0.7 && result.score < 0.85\"\n [class.score-excellent]=\"result.score >= 0.85\"\n [title]=\"'Auto Score: ' + (result.score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"score-value\">{{ (result.score * 100).toFixed(0) }}</span>\n </span>\n }\n @if (evalPreferences.showAuto && result.score == null) {\n <span class=\"cell-auto no-score\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n }\n </div>\n }\n @if (!getTestResultForRun(run.runId, test.testId)) {\n <span class=\"cell-not-run-indicator\">\n <i class=\"fas fa-minus\"></i>\n </span>\n }\n </td>\n }\n <td class=\"spacer-cell\"></td>\n </tr>\n }\n </tbody>\n <!-- Footer row with totals -->\n <tfoot>\n <tr class=\"totals-row\">\n <td class=\"seq-cell totals-label\"></td>\n <td class=\"test-name-cell totals-label\">\n <strong>Totals</strong>\n </td>\n @for (run of matrixData; track run) {\n <td class=\"result-cell totals-cell\">\n <div class=\"cell-eval-stack totals-stack\">\n <!-- Status totals -->\n @if (evalPreferences.showExecution) {\n <span class=\"totals-status\">\n <span class=\"pass-count\">{{ getRunPassedCount(run) }}/{{ getRunTotalCount(run) }}</span>\n </span>\n }\n <!-- Human totals -->\n @if (evalPreferences.showHuman) {\n <span class=\"totals-human\">\n @if (getRunHumanAvg(run) != null) {\n <span class=\"avg-label\">{{ getRunHumanAvg(run)?.toFixed(1) }}</span>\n }\n <span class=\"count-label\">({{ getRunHumanCount(run) }})</span>\n </span>\n }\n <!-- Auto totals -->\n @if (evalPreferences.showAuto) {\n <span class=\"totals-auto\">\n @if (getRunAutoAvg(run) != null) {\n <span class=\"avg-label\">{{ (getRunAutoAvg(run)! * 100).toFixed(0) }}%</span>\n }\n <span class=\"count-label\">({{ getRunAutoCount(run) }})</span>\n </span>\n }\n </div>\n </td>\n }\n <td class=\"spacer-cell\"></td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n }\n <!-- Empty Matrix State -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-th\"></i>\n </div>\n <h4>No Matrix Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n }\n }\n <!-- Chart View -->\n @if (analyticsView === 'chart') {\n <!-- Loading Chart -->\n @if (loadingMatrix) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading chart data...\"></mj-loading>\n </div>\n }\n <!-- Chart Content -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length > 0) {\n <div class=\"chart-section\">\n <div class=\"chart-header\">\n <h3><i class=\"fas fa-project-diagram\"></i> Test Results Flow</h3>\n <div class=\"chart-legend\">\n <span class=\"legend-item chart-passed\"><i class=\"fas fa-check\"></i> Passed</span>\n <span class=\"legend-item chart-failed\"><i class=\"fas fa-times\"></i> Failed</span>\n <span class=\"legend-item chart-error\"><i class=\"fas fa-exclamation\"></i> Error</span>\n <span class=\"legend-item chart-skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n <div class=\"chart-container\">\n <div #chartContainer class=\"d3-chart\"></div>\n </div>\n <div class=\"chart-info\">\n <i class=\"fas fa-info-circle\"></i>\n Interactive visualization showing test results across {{ matrixData.length }} runs.\n Hover over elements for details, click nodes to navigate.\n </div>\n </div>\n }\n <!-- Empty Chart State -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-project-diagram\"></i>\n </div>\n <h4>No Chart Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n }\n }\n }\n <!-- Empty State -->\n @if (!loadingAnalytics && analyticsLoaded && analyticsData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No Analytics Data</h4>\n <p>Run this suite to start collecting analytics data.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Compare Tab -->\n @if (activeTab === 'compare') {\n <div class=\"compare-tab\">\n <!-- Run Selection -->\n <div class=\"compare-selection\">\n <div class=\"compare-run-selector\">\n <h4>Run A (Baseline)</h4>\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"run-selector-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-selector-item\"\n [class.selected]=\"compareRunA?.ID === run.ID\"\n (click)=\"selectCompareRunA(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"selector-tags\">\n @for (tag of getRunTags(run).slice(0, 2); track tag) {\n <span class=\"tag-mini\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n @if (compareRunA) {\n <div class=\"selected-run-preview\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunA = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunA.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunA).toFixed(1) }}%</span>\n </div>\n </div>\n }\n </div>\n <div class=\"compare-vs\"><i class=\"fas fa-exchange-alt\"></i></div>\n <div class=\"compare-run-selector\">\n <h4>Run B (Compare)</h4>\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"run-selector-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-selector-item\"\n [class.selected]=\"compareRunB?.ID === run.ID\"\n [class.disabled]=\"compareRunA?.ID === run.ID\"\n (click)=\"compareRunA?.ID !== run.ID && selectCompareRunB(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"selector-tags\">\n @for (tag of getRunTags(run).slice(0, 2); track tag) {\n <span class=\"tag-mini\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n @if (compareRunB) {\n <div class=\"selected-run-preview\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunB = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunB.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunB).toFixed(1) }}%</span>\n </div>\n </div>\n }\n </div>\n </div>\n <!-- Comparison Results -->\n @if (compareRunA && compareRunB && !loadingCompare) {\n <div class=\"compare-results\">\n <!-- Summary Cards -->\n <div class=\"compare-summary\">\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Pass Rate Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getComparePassRateDiff()! > 0, 'negative': getComparePassRateDiff()! < 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getComparePassRateDiff()! > 0, 'fa-arrow-down': getComparePassRateDiff()! < 0, 'fa-minus': getComparePassRateDiff() === 0}\"></i>\n {{ getComparePassRateDiff()! > 0 ? '+' : '' }}{{ getComparePassRateDiff()?.toFixed(1) }}%\n </div>\n </div>\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Duration Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getCompareDurationDiff()! < 0, 'negative': getCompareDurationDiff()! > 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-down': getCompareDurationDiff()! < 0, 'fa-arrow-up': getCompareDurationDiff()! > 0, 'fa-minus': getCompareDurationDiff() === 0}\"></i>\n {{ formatDuration(getAbsCompareDurationDiff()) }}\n </div>\n </div>\n <div class=\"compare-summary-card improved\">\n <div class=\"summary-label\">Improved</div>\n <div class=\"summary-value\">{{ getCompareImprovedCount() }}</div>\n </div>\n <div class=\"compare-summary-card regressed\">\n <div class=\"summary-label\">Regressed</div>\n <div class=\"summary-value\">{{ getCompareRegressedCount() }}</div>\n </div>\n </div>\n <!-- Detailed Comparison Table -->\n <div class=\"compare-table-section\">\n <h3><i class=\"fas fa-list\"></i> Test-by-Test Comparison</h3>\n <div class=\"compare-table-wrapper\">\n <table class=\"compare-table\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Run A Status</th>\n <th>Run B Status</th>\n <th>Score Diff</th>\n <th>Duration Diff</th>\n <th>Change</th>\n </tr>\n </thead>\n <tbody>\n @for (result of compareResults; track result) {\n <tr [ngClass]=\"{'improved': result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed', 'regressed': result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'}\">\n <td class=\"test-name-cell\">{{ result.testName }}</td>\n <td>\n @if (result.runA) {\n <span class=\"status-chip\" [ngClass]=\"'status-' + result.runA.status.toLowerCase()\">{{ result.runA.status }}</span>\n }\n @if (!result.runA) {\n <span class=\"status-chip status-missing\">N/A</span>\n }\n </td>\n <td>\n @if (result.runB) {\n <span class=\"status-chip\" [ngClass]=\"'status-' + result.runB.status.toLowerCase()\">{{ result.runB.status }}</span>\n }\n @if (!result.runB) {\n <span class=\"status-chip status-missing\">N/A</span>\n }\n </td>\n <td>\n @if (result.scoreDiff != null) {\n <span [ngClass]=\"{'positive': result.scoreDiff > 0, 'negative': result.scoreDiff < 0}\">\n {{ result.scoreDiff > 0 ? '+' : '' }}{{ (result.scoreDiff * 100).toFixed(1) }}%\n </span>\n }\n @if (result.scoreDiff == null) {\n <span class=\"muted\">-</span>\n }\n </td>\n <td>\n @if (result.durationDiff != null) {\n <span [ngClass]=\"{'positive': result.durationDiff < 0, 'negative': result.durationDiff > 0}\">\n {{ result.durationDiff > 0 ? '+' : '' }}{{ result.durationDiff.toFixed(1) }}s\n </span>\n }\n @if (result.durationDiff == null) {\n <span class=\"muted\">-</span>\n }\n </td>\n <td>\n @if (result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed') {\n <span class=\"change-indicator improved\">\n <i class=\"fas fa-arrow-up\"></i> Fixed\n </span>\n }\n @if (result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed') {\n <span class=\"change-indicator regressed\">\n <i class=\"fas fa-arrow-down\"></i> Broke\n </span>\n }\n @if (!result.statusChanged) {\n <span class=\"change-indicator unchanged\">\n <i class=\"fas fa-minus\"></i>\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n </div>\n }\n <!-- Loading State for Compare -->\n @if (loadingCompare) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading comparison data...\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!compareRunA || !compareRunB) {\n <div class=\"compare-empty\">\n <div class=\"compare-empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Select Two Runs to Compare</h4>\n <p>Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.</p>\n </div>\n }\n <!-- No Runs State -->\n @if (runsLoaded && suiteRuns.length < 2) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Not Enough Runs to Compare</h4>\n <p>You need at least 2 suite runs to use the comparison feature.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n @if (showShortcuts) {\n <div class=\"keyboard-shortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* ===========================\n Test Suite Form - World-Class UX\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Header */\n.suite-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon:hover { transform: scale(1.05); }\n\n.suite-info { flex: 1; min-width: 0; }\n\n.suite-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-count {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* Tabs */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar { display: none; }\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-text-secondary);\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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\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 animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section, .config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3, .config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i, .config-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n/* Tests Tab */\n.tests-tab, .runs-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.loading-state { padding: 0; }\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list, .runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item, .run-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item:hover, .run-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon, .run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content, .run-content { flex: 1; min-width: 0; }\n\n.test-name, .run-header {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id { font-weight: 600; }\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status, .run-meta {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status span, .run-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item > i, .run-item > i {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item:hover > i, .run-item:hover > i {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Empty States */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Keyboard Shortcuts */\n/* Keyboard shortcuts toggle button - visible when shortcuts are hidden */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--test-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .keyboard-shortcuts, .shortcuts-toggle { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header { padding: 16px; }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button { flex: 1; }\n\n .tab-shortcut { display: none; }\n\n .info-grid { grid-template-columns: 1fr; }\n\n .test-item, .run-item { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info h1 { font-size: 16px; }\n\n .tab-badge { display: none; }\n\n .test-sequence { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item:active, .run-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab { min-height: 48px; }\n .test-item, .run-item { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions, .tabs-container, .keyboard-shortcuts {\n display: none !important;\n }\n}\n\n/* ===========================\n Tags UI\n =========================== */\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.tag-chip {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.tag-mini {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n/* Evaluation metrics row for Runs list */\n.run-eval-metrics {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human .eval-pending {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ===========================\n Analytics Tab\n =========================== */\n.analytics-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Collapsible filters */\n.analytics-filters {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed {\n margin-bottom: 12px;\n}\n\n.filters-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header:hover {\n background: var(--test-bg);\n}\n\n.filters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title i {\n color: var(--test-primary);\n}\n\n.filter-summary {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header > i {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn i.fa-check {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn i {\n font-size: 11px;\n}\n\n.filter-hint {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters {\n max-height: 120px;\n overflow-y: auto;\n}\n\n/* KPI Cards */\n.analytics-kpis {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n/* Analytics Table */\n.analytics-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section h3 i {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table tbody tr.clickable-row {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table tbody tr.clickable-row:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium { background: var(--test-warning); }\n.pass-rate-bar.low { background: var(--test-error); }\n\n/* Analytics Sub-navigation */\n.analytics-subnav {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab i {\n font-size: 14px;\n}\n\n/* Matrix View */\n.matrix-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header h3 i {\n color: var(--test-primary);\n}\n\n.matrix-run-count {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n/* Matrix filter input */\n.matrix-filter-input {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input i.fa-search {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input .filter-input {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input .filter-input::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n/* Scrollable matrix container with fixed height */\n.matrix-scroll-container {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix thead {\n display: table-header-group;\n}\n\n.test-matrix thead tr {\n display: table-row;\n}\n\n.test-matrix tbody {\n display: table-row-group;\n}\n\n.test-matrix tbody tr {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix tbody tr:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix tbody tr.row-selected {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tbody tr.row-selected td {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix tbody tr.row-selected .seq-cell,\n.test-matrix tbody tr.row-selected .test-name-cell {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tfoot {\n display: table-footer-group;\n}\n\n.test-matrix th,\n.test-matrix td {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix th {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n/* Sequence column - shared styles */\n.test-matrix .seq-header,\n.test-matrix .seq-cell {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n/* Seq header - sticky top AND left, highest z-index */\n.test-matrix .seq-header {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; /* Higher than other headers */\n top: 0;\n}\n\n/* Seq body cells - sticky left only, lower z-index */\n.test-matrix .seq-cell {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix .seq-header i {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix .seq-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .test-name-header {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix .test-name-header i {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix .test-name-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .run-header {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n/* Spacer column absorbs extra width */\n.test-matrix .spacer-header,\n.test-matrix .spacer-cell {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix .spacer-cell {\n background: var(--test-surface);\n}\n\n.test-matrix .run-header:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Matrix column header tags - emphasized */\n.run-tags-header {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix .test-name-cell {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable {\n cursor: pointer;\n}\n\n.result-cell.clickable:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell i {\n font-size: 14px;\n}\n\n/* Completed cells have neutral white background - pills tell the story */\n.result-cell.cell-passed,\n.result-cell.cell-failed,\n.result-cell.cell-error,\n.result-cell.cell-timeout,\n.result-cell.cell-running,\n.result-cell.cell-pending {\n background: #ffffff;\n color: var(--test-text);\n}\n\n/* Skipped/not-run cells get hatched background */\n.result-cell.cell-skipped {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n/* Matrix cell evaluation stack - shows multiple eval types horizontally */\n.cell-eval-stack {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval {\n min-width: 120px;\n width: auto;\n}\n\n/* Add timeout status icon */\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Chart View\n =========================== */\n.chart-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header h3 i {\n color: var(--test-primary);\n}\n\n.chart-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend .legend-item.chart-passed {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend .legend-item.chart-failed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend .legend-item.chart-error {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend .legend-item.chart-skipped {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart svg {\n width: 100%;\n height: 100%;\n}\n\n/* D3 Chart Node Styles */\n.d3-chart .node {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart .node:hover {\n transform: scale(1.05);\n}\n\n.d3-chart .node-label {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart .link {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart .link:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart .tooltip {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart .tooltip-title {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart .tooltip-value {\n opacity: 0.8;\n}\n\n.chart-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Compare Tab\n =========================== */\n.compare-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-selection {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn:hover { text-decoration: underline; }\n\n.preview-details {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n/* Compare Results */\n.compare-results {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card .summary-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card .summary-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card .summary-value.positive { color: var(--test-success); }\n.compare-summary-card .summary-value.negative { color: var(--test-error); }\n\n.compare-summary-card.improved {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved .summary-value { color: var(--test-success); }\n\n.compare-summary-card.regressed {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed .summary-value { color: var(--test-error); }\n\n/* Compare Table */\n.compare-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section h3 i {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper {\n overflow-x: auto;\n}\n\n.compare-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table tbody tr.improved {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table tbody tr.regressed {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive { color: var(--test-success); }\n.negative { color: var(--test-error); }\n.muted { color: var(--test-text-muted); }\n\n.change-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n/* Compare Empty State */\n.compare-empty {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon i {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty p {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Small empty state variant */\n.empty-state.small {\n padding: 32px 16px;\n}\n\n.empty-state.small p {\n margin: 0;\n}\n\n/* ===========================\n Responsive Analytics/Compare\n =========================== */\n@media (max-width: 1024px) {\n .compare-selection {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons {\n flex-direction: column;\n }\n\n .filter-btn {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis {\n grid-template-columns: 1fr;\n }\n\n .kpi-card {\n padding: 16px;\n }\n\n .kpi-value {\n font-size: 20px;\n }\n\n .compare-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper,\n .compare-table-wrapper {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card .summary-value {\n font-size: 20px;\n }\n\n .analytics-table th,\n .analytics-table td,\n .compare-table th,\n .compare-table td {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n/* ===========================\n Matrix Evaluation Indicators\n =========================== */\n\n/* Human Feedback Indicators */\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback i {\n font-size: 11px;\n}\n\n.cell-human.has-feedback {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback i {\n font-size: 9px;\n}\n\n.cell-human.has-feedback .rating-value {\n font-weight: 700;\n font-size: 11px;\n}\n\n/* Human rating color coding: red \u22644, yellow 5-6, light-green 7-8, green 9-10 */\n.cell-human.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto Score Indicators */\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score i {\n font-size: 11px;\n}\n\n.cell-auto.has-score {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score i {\n font-size: 9px;\n}\n\n.cell-auto.has-score .score-value {\n font-weight: 700;\n font-size: 10px;\n}\n\n/* Auto score color coding (0-100%): red <50, yellow 50-69, light-green 70-84, green 85+ */\n.cell-auto.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Status indicators in matrix cells */\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped,\n.cell-status.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Not-run / Skipped cells with hatch pattern */\n.result-cell.cell-not-run {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run .cell-eval-stack {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n/* ===========================\n Matrix Totals Footer Row\n =========================== */\n.test-matrix tfoot {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row td {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row .totals-label {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row .totals-cell {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status,\n.totals-human,\n.totals-auto {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status .pass-count {\n font-weight: 700;\n}\n\n.totals-human {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human .avg-label {\n font-weight: 700;\n}\n\n.totals-human .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto .avg-label {\n font-weight: 700;\n}\n\n.totals-auto .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n"] }]
|
|
3479
3506
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.TestingDialogService }, { type: i3.EvaluationPreferencesService }, { type: i0.ViewContainerRef }, { type: i4.ApplicationManager }], { chartContainer: [{
|
|
3480
3507
|
type: ViewChild,
|
|
3481
3508
|
args: ['chartContainer']
|
|
@@ -3483,7 +3510,5 @@ export { TestSuiteFormComponentExtended };
|
|
|
3483
3510
|
type: HostListener,
|
|
3484
3511
|
args: ['document:keydown', ['$event']]
|
|
3485
3512
|
}] }); })();
|
|
3486
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/
|
|
3487
|
-
export function LoadTestSuiteFormComponentExtended() { }
|
|
3488
|
-
LoadTestSuiteFormComponentExtended();
|
|
3513
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/tests/test-suite-form.component.ts", lineNumber: 32 }); })();
|
|
3489
3514
|
//# sourceMappingURL=test-suite-form.component.js.map
|