mirror of
https://github.com/ansible/awx.git
synced 2026-07-12 00:44:36 -02:30
Various bug fixes and minor ux enhancements
This commit is contained in:
@@ -150,7 +150,10 @@ function TemplatesStrings (BaseString) {
|
|||||||
SAVE_AND_EXIT: t.s('SAVE & EXIT'),
|
SAVE_AND_EXIT: t.s('SAVE & EXIT'),
|
||||||
APPROVAL: t.s('Approval'),
|
APPROVAL: t.s('Approval'),
|
||||||
TIMEOUT_POPOVER: t.s('The amount of time to wait before this approval step is automatically denied. Defaults to 0 for no timeout.'),
|
TIMEOUT_POPOVER: t.s('The amount of time to wait before this approval step is automatically denied. Defaults to 0 for no timeout.'),
|
||||||
TIMED_OUT: t.s('APPROVAL TIMED OUT')
|
TIMED_OUT: t.s('APPROVAL TIMED OUT'),
|
||||||
|
TIMEOUT: t.s('Timeout'),
|
||||||
|
APPROVED: t.s('APPROVED'),
|
||||||
|
DENIED: t.s('DENIED')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,13 +30,13 @@
|
|||||||
<div class="at-Row-container">
|
<div class="at-Row-container">
|
||||||
<at-row-item
|
<at-row-item
|
||||||
header-value="{{ approval.summary_fields.source_workflow_job.name }}"
|
header-value="{{ approval.summary_fields.source_workflow_job.name }}"
|
||||||
header-state="workflowResults({pid: {{approval.summary_fields.source_workflow_job.id}}})">
|
header-state="workflowResults({id: {{approval.summary_fields.source_workflow_job.id}}})">
|
||||||
</at-row-item>
|
</at-row-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="at-Row-container--wrapped">
|
<div class="at-Row-container--wrapped">
|
||||||
<at-row-item
|
<at-row-item
|
||||||
value-bind-html="<b>Pause Node</b>">
|
value-bind-html="<b>{{:: vm.strings.get('approvals.APPROVAL') }}</b>">
|
||||||
</at-row-item>
|
</at-row-item>
|
||||||
<at-row-item
|
<at-row-item
|
||||||
value-bind-html="{{ approval.name }}">
|
value-bind-html="{{ approval.name }}">
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ function ComponentsStrings (BaseString) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ns.approvals = {
|
ns.approvals = {
|
||||||
|
APPROVAL: t.s('APPROVAL'),
|
||||||
NONE: t.s('There are no jobs awaiting approval'),
|
NONE: t.s('There are no jobs awaiting approval'),
|
||||||
APPROVE: t.s('APPROVE'),
|
APPROVE: t.s('APPROVE'),
|
||||||
DENY: t.s('DENY'),
|
DENY: t.s('DENY'),
|
||||||
|
|||||||
@@ -97,7 +97,6 @@
|
|||||||
color: @at-white;
|
color: @at-white;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: bold;
|
|
||||||
cursor: default;
|
cursor: default;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -170,13 +170,20 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.WorkflowChart-timedOutText {
|
.WorkflowChart-timedOutText, .WorkflowChart-deniedText {
|
||||||
width: 180px;
|
width: 180px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
color: @default-err;
|
color: @default-err;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.WorkflowChart-approvedText {
|
||||||
|
width: 180px;
|
||||||
|
height: 14px;
|
||||||
|
color: @default-succ;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.WorkflowChart-tooltip {
|
.WorkflowChart-tooltip {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
@@ -835,6 +835,12 @@ export default ['moment', '$timeout', '$window', '$filter', 'TemplatesStrings',
|
|||||||
baseSvg.selectAll(".WorkflowChart-timedOutText")
|
baseSvg.selectAll(".WorkflowChart-timedOutText")
|
||||||
.style("display", (d) => { return d.job && d.job.timed_out ? null : "none"; });
|
.style("display", (d) => { return d.job && d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
|
baseSvg.selectAll(".WorkflowChart-deniedText")
|
||||||
|
.style("display", (d) => { return d.job && d.job.type === "workflow_approval" && d.job.status === "failed" && !d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
|
baseSvg.selectAll(".WorkflowChart-approvedText")
|
||||||
|
.style("display", (d) => { return d.job && d.job.type === "workflow_approval" && d.job.status === "successful" && !d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
baseSvg.selectAll(".WorkflowChart-activeNode")
|
baseSvg.selectAll(".WorkflowChart-activeNode")
|
||||||
.style("display", (d) => { return d.id === scope.graphState.nodeBeingEdited ? null : "none"; });
|
.style("display", (d) => { return d.id === scope.graphState.nodeBeingEdited ? null : "none"; });
|
||||||
|
|
||||||
@@ -950,7 +956,25 @@ export default ['moment', '$timeout', '$window', '$filter', 'TemplatesStrings',
|
|||||||
.attr("text-anchor", "middle")
|
.attr("text-anchor", "middle")
|
||||||
.attr("class", "WorkflowChart-defaultText WorkflowChart-timedOutText")
|
.attr("class", "WorkflowChart-defaultText WorkflowChart-timedOutText")
|
||||||
.html(`<span>${TemplatesStrings.get('workflow_maker.TIMED_OUT')}</span>`)
|
.html(`<span>${TemplatesStrings.get('workflow_maker.TIMED_OUT')}</span>`)
|
||||||
.style("display", (d) => { return d.job && d.job.timed_out ? null : "none"; });
|
.style("display", (d) => { return d.job && d.job.type === "workflow_approval" && d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
|
thisNode.append("foreignObject")
|
||||||
|
.attr("x", 0)
|
||||||
|
.attr("y", 22)
|
||||||
|
.attr("dy", ".35em")
|
||||||
|
.attr("text-anchor", "middle")
|
||||||
|
.attr("class", "WorkflowChart-defaultText WorkflowChart-deniedText")
|
||||||
|
.html(`<span>${TemplatesStrings.get('workflow_maker.DENIED')}</span>`)
|
||||||
|
.style("display", (d) => { return d.job && d.job.type === "workflow_approval" && d.job.status === "failed" && !d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
|
thisNode.append("foreignObject")
|
||||||
|
.attr("x", 0)
|
||||||
|
.attr("y", 22)
|
||||||
|
.attr("dy", ".35em")
|
||||||
|
.attr("text-anchor", "middle")
|
||||||
|
.attr("class", "WorkflowChart-defaultText WorkflowChart-approvedText")
|
||||||
|
.html(`<span>${TemplatesStrings.get('workflow_maker.APPROVED')}</span>`)
|
||||||
|
.style("display", (d) => { return d.job && d.job.type === "workflow_approval" && d.job.status === "successful" && !d.job.timed_out ? null : "none"; });
|
||||||
|
|
||||||
thisNode.append("circle")
|
thisNode.append("circle")
|
||||||
.attr("cy", nodeH)
|
.attr("cy", nodeH)
|
||||||
|
|||||||
@@ -159,11 +159,6 @@
|
|||||||
<span>{{:: strings.get('workflows.INVALID_JOB_TEMPLATE') }}</span>
|
<span>{{:: strings.get('workflows.INVALID_JOB_TEMPLATE') }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div ng-if="selectedTemplate && credentialRequiresPassword">
|
|
||||||
<div class="WorkflowMaker-invalidJobTemplateWarning">
|
|
||||||
<span class="fa fa-warning"></span>
|
|
||||||
<span>{{:: strings.get('workflows.CREDENTIAL_WITH_PASS') }}</span>
|
|
||||||
</div>
|
|
||||||
<div ng-if="selectedTemplate && jobNodeState.credentialRequiresPassword">
|
<div ng-if="selectedTemplate && jobNodeState.credentialRequiresPassword">
|
||||||
<div class="WorkflowMaker-invalidJobTemplateWarning">
|
<div class="WorkflowMaker-invalidJobTemplateWarning">
|
||||||
<span class="fa fa-warning"></span>
|
<span class="fa fa-warning"></span>
|
||||||
@@ -266,7 +261,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="Prompt-previewRow--flex" ng-if="nodeConfig.node.originalNodeObject.diff_mode !== null">
|
<div class="Prompt-previewRow--flex" ng-if="nodeConfig.node.originalNodeObject.diff_mode !== null">
|
||||||
<div class="Prompt-previewRowTitle">{{:: strings.get('prompt.SHOW_CHANGES') }}</div>
|
<div class="Prompt-previewRowTitle">{{:: strings.get('prompt.SHOW_CHANGES') }}</div>
|
||||||
<div class="Prompt-previewRowValue">
|
<div class="Prompt-previewRowValue">
|
||||||
@@ -295,4 +289,3 @@
|
|||||||
</div>
|
</div>
|
||||||
<prompt prompt-data="jobNodeState.promptData" action-text="{{:: strings.get('prompt.CONFIRM')}}" prevent-creds-with-passwords="preventCredsWithPasswords" read-only-prompts="readOnly"></prompt>
|
<prompt prompt-data="jobNodeState.promptData" action-text="{{:: strings.get('prompt.CONFIRM')}}" prevent-creds-with-passwords="preventCredsWithPasswords" read-only-prompts="readOnly"></prompt>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
Reference in New Issue
Block a user