mirror of https://github.com/jumpserver/jumpserver
163 lines
7.8 KiB
HTML
163 lines
7.8 KiB
HTML
{% extends 'base.html' %}
|
|
{% load static %}
|
|
{% load i18n %}
|
|
|
|
{% block custom_head_css_js %}
|
|
<link href="{% static 'css/plugins/select2/select2.min.css' %}" rel="stylesheet">
|
|
<link href="{% static "css/plugins/sweetalert/sweetalert.css" %}" rel="stylesheet">
|
|
<script src="{% static 'js/plugins/select2/select2.full.min.js' %}"></script>
|
|
<script src="{% static "js/plugins/sweetalert/sweetalert.min.js" %}"></script>
|
|
{% endblock %}
|
|
{% block content %}
|
|
<div class="wrapper wrapper-content animated fadeInRight">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="ibox float-e-margins">
|
|
<div class="panel-options">
|
|
<ul class="nav nav-tabs">
|
|
<li>
|
|
<a href="{% url 'ops:task-detail' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Task detail' %} </a>
|
|
</li>
|
|
<li>
|
|
<a href="{% url 'ops:task-adhoc' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Task versions' %} </a>
|
|
</li>
|
|
<li class="active">
|
|
<a href="{% url 'ops:task-history' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Run history' %} </a>
|
|
</li>
|
|
<li>
|
|
<a class="text-center celery-task-log"><i class="fa fa-laptop"></i> {% trans 'Last run output' %} </a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="tab-content">
|
|
<div class="col-sm-12" style="padding-left: 0">
|
|
<div class="ibox float-e-margins">
|
|
<div class="ibox-title">
|
|
<span style="float: left">{% trans 'History of ' %} <b>{{ object.name }}:{{ object.short_id }}</b></span>
|
|
<div class="ibox-tools">
|
|
<a class="collapse-link">
|
|
<i class="fa fa-chevron-up"></i>
|
|
</a>
|
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
|
<i class="fa fa-wrench"></i>
|
|
</a>
|
|
<ul class="dropdown-menu dropdown-user">
|
|
</ul>
|
|
<a class="close-link">
|
|
<i class="fa fa-times"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="ibox-content">
|
|
<table class="table table-hover " id="task-history-list-table" >
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center">
|
|
<input type="checkbox" id="check_all" class="ipt_check_all" >
|
|
</th>
|
|
<th>{% trans 'Date start' %}</th>
|
|
<th>{% trans 'F/S/T' %}</th>
|
|
<th>{% trans 'Ratio' %}</th>
|
|
<th>{% trans 'Is finished' %}</th>
|
|
<th>{% trans 'Is success' %}</th>
|
|
<th>{% trans 'Time' %}</th>
|
|
<th>{% trans 'Version' %}</th>
|
|
<th>{% trans 'Action' %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block custom_foot_js %}
|
|
<script>
|
|
function initTable() {
|
|
var options = {
|
|
ele: $('#task-history-list-table'),
|
|
buttons: [],
|
|
order: [],
|
|
select: [],
|
|
columnDefs: [
|
|
{targets: 1, createdCell: function (td, cellData, rowData) {
|
|
var d = new Date(cellData);
|
|
$(td).html(d.toLocaleString());
|
|
}},
|
|
{targets: 2, createdCell: function (td, cellData) {
|
|
var total = "<span>" + cellData.total + "</span>";
|
|
var success = "<span class='text-navy'>" + cellData.success + "</span>";
|
|
var failed = "<span class='text-danger'>" + cellData.failed + "</span>";
|
|
$(td).html(failed + '/' + success + '/' + total );
|
|
}},
|
|
{targets: 3, createdCell: function (td, cellData) {
|
|
var val = 0;
|
|
var innerHtml = "";
|
|
if (cellData.total !== 0) {
|
|
val = cellData.success/cellData.total * 100;
|
|
}
|
|
|
|
if (val === 100) {
|
|
innerHtml = "<span class='text-navy'>" + val + "% </span>";
|
|
} else {
|
|
innerHtml = "<span class='text-danger'>" + val + "% </span>";
|
|
}
|
|
$(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');
|
|
}},
|
|
{targets: 4, createdCell: function (td, cellData) {
|
|
if (!cellData) {
|
|
$(td).html('<i class="fa fa-times text-danger"></i>')
|
|
} else {
|
|
$(td).html('<i class="fa fa-check text-navy"></i>')
|
|
}
|
|
}},
|
|
{targets: 5, createdCell: function (td, cellData) {
|
|
if (!cellData) {
|
|
$(td).html('<i class="fa fa-times text-danger"></i>')
|
|
} else {
|
|
$(td).html('<i class="fa fa-check text-navy"></i>')
|
|
}
|
|
}},
|
|
{targets: 6, createdCell: function (td, cellData) {
|
|
if (cellData) {
|
|
$(td).html(cellData.toFixed(2) + ' s')
|
|
} else {
|
|
$(td).html("0" + ' s')
|
|
}
|
|
}},
|
|
{targets: 8, createdCell: function (td, cellData) {
|
|
var run_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" href="{% url 'ops:adhoc-history-detail' pk=DEFAULT_PK %}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
|
|
if (cellData) {
|
|
$(td).html(run_btn);
|
|
}
|
|
}}
|
|
],
|
|
ajax_url: '{% url "api-ops:history-list" %}?task={{ object.pk }}',
|
|
columns: [{data: function(){return ""}}, {data: "date_start"}, {data: "stat"}, {data: "stat"}, {data: "is_finished"},
|
|
{data: "is_success"}, {data: "timedelta"}, {data: 'adhoc_short_id'}, {data: "id"}]
|
|
};
|
|
jumpserver.initDataTable(options);
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
initTable();
|
|
}).on('click', '.celery-task-log', function () {
|
|
var history_pk = "{{ object.latest_history.pk }}";
|
|
if (!history_pk) {
|
|
alert("没有运行历史");
|
|
return
|
|
}
|
|
var url = '{% url 'ops:celery-task-log' pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', history_pk);
|
|
window.open(url, '', 'width=800,height=600,left=400,top=400')
|
|
})
|
|
|
|
</script>
|
|
{% endblock %}
|