Commit 534321d1 authored by ibuler's avatar ibuler

Merge with master

parents 3c00c578 45dcb261
...@@ -44,7 +44,8 @@ ...@@ -44,7 +44,8 @@
$('.select2').select2(); $('.select2').select2();
$("#tags").select2({ $("#tags").select2({
tags: true, tags: true,
maximumSelectionLength: 8 //最多能够选择的个数 maximumSelectionLength: 8, //最多能够选择的个数
closeOnSelect: false
}); });
}) })
......
...@@ -10,6 +10,7 @@ div.dataTables_wrapper div.dataTables_filter, ...@@ -10,6 +10,7 @@ div.dataTables_wrapper div.dataTables_filter,
.dataTables_length { .dataTables_length {
float: left; float: left;
} }
</style> </style>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
...@@ -45,9 +46,15 @@ div.dataTables_wrapper div.dataTables_filter, ...@@ -45,9 +46,15 @@ div.dataTables_wrapper div.dataTables_filter,
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
<h3 class="widget-head-color-box">用户选择的资产</h3> <h3 class="widget-head-color-box">用户选择的资产</h3>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label">已选</label> <label class="col-sm-2 control-label" id="asset_on_count">已选({{ assets_count }})</label>
<div class="col-sm-9" id="asset_sed"> <div class="col-sm-9" id="asset_sed">
<input type="text" class=" form-control" id="add_asset" value="{{ assets_count }}"> <div class="form-asset-on" id="add_asset">
<p id="asset_on_p">
{% for asset in assets_on_list %}
<button name='asset_hostname' title='{{ asset.ip }}' type='button' class='btn btn-default btn-xs'>{{ asset.hostname }}</button>
{% endfor %}
</p>
</div>
</div> </div>
</div> </div>
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
......
{% extends 'base.html' %} {% extends '_base_list.html' %}
{% load static %}
{% load i18n %} {% load i18n %}
{% load common_tags %} {% load common_tags %}
{% block custom_head_css_js %} {% block custom_head_css_js %}
<link href="{% static "css/plugins/dataTables/dataTables.min.css" %}" rel="stylesheet"> <style>
<link href="{% static "css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css" %}" rel="stylesheet"> div.dataTables_wrapper div.dataTables_filter,
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet"> .dataTables_length {
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script> float: right !important;
<script src="{% static "js/plugins/dataTables/dataTables.min.js" %}"></script> }
div.dataTables_wrapper div.dataTables_filter {
margin-left: 15px;
}
.custom{
float:left;
margin-right:5px;
}
</style>
{% endblock %} {% endblock %}
{% block content_left_head %}
{% endblock %}
{% block table_search %}
{% endblock %}
{% block tags_list %}
{% 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="ibox-title">
<div class="ibox-tools">
<div style="float:left">
<a href="{% url 'assets:asset-create' %}" class="btn btn-sm btn-primary "> {% trans "Create asset" %} </a>
</div>
<button class="btn btn-sm btn-primary" id="zksx" onclick="tagShow()">标签</button>
<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>
<a class="close-link"><i class="fa fa-times"></i></a>
</div>
</div>
<div class="ibox-content">
<div class="">
<div class="ydxbd" id="ydxbd" style="display: none;"> <div class="ydxbd" id="ydxbd" style="display: none;">
<div> <div>
<p id="tags_p"> <p id="tags_p">
{% for tag in tag_list %} {% for tag in tag_list %}
<a href="{% url 'assets:asset-tags' tag_id=tag.0 %}"
<a href="{% url 'assets:asset-tags' tag_id=tag.0 %}">
<span
{% if tag.0|IntToStr == tag_id %} {% if tag.0|IntToStr == tag_id %}
class="fa fa-tag btn btn-sm btn-primary mar-j" name="tag_on"> class="label label-warning" name="tag_on"
{% else %} {% else %}
class="fa fa-tag btn btn-sm btn-outline btn-primary mar-j"> class="label label-default"
{% endif %} {% endif %}
<span class="mar"> >{{ tag.1}}({{ tag.2 }})</span>
<strong>{{ tag.1}}</strong>({{ tag.2 }}) </a>
</span></a> {# <a href="{% url 'assets:asset-tags' tag_id=tag.0 %}"#}
{# {% if tag.0|IntToStr == tag_id %}#}
{# class="fa fa-tag btn btn-sm btn-warning btn-rounded mar-j" name="tag_on">#}
{# {% else %}#}
{# class="fa fa-tag btn btn-sm btn-default btn-rounded mar-j">#}
{# {% endif %}#}
{# <span class="mar">#}
{# <strong>{{ tag.1}}</strong>({{ tag.2 }})#}
{# </span></a>#}
{% endfor %} {% endfor %}
<a href="{% url 'assets:asset-list' %}" class="btn btn-sm btn-outline btn-default ">移除选择</a> {# <a href="{% url 'assets:asset-list' %}" class="btn btn-sm btn-rounded btn-default ">移除选择</a>#}
<a href="{% url 'assets:asset-list' %}" ><span class="label label-default">移除选择</span></a>
</p> </p>
</div> </div>
</div> </div>
{% block content_left_head %}{% endblock %}
{% block table_search %}{% endblock %} {% endblock %}
</div>
{% block table_container %} {% block table_head %}
<table aria-describedby="editable_info" role="grid" class="table table-striped table-bordered table-hover dataTable" id="editable">
<thead>
<tr>
<th class="text-center"><input type="checkbox" id="check_all" onclick="checkAll()"></th> <th class="text-center"><input type="checkbox" id="check_all" onclick="checkAll()"></th>
<th class="text-center"><a href="{% url 'assets:asset-list' %}?sort=hostname">{% trans 'Hostname' %}</a></th> <th class="text-center"><a href="{% url 'assets:asset-list' %}?sort=hostname">{% trans 'Hostname' %}</a></th>
<th class="text-center"><a href="{% url 'assets:asset-list' %}?sort=username">{% trans 'IP' %}</a></th> <th class="text-center"><a href="{% url 'assets:asset-list' %}?sort=username">{% trans 'IP' %}</a></th>
...@@ -61,13 +66,19 @@ ...@@ -61,13 +66,19 @@
<th class="text-center">{% trans 'Hardware' %}</th> <th class="text-center">{% trans 'Hardware' %}</th>
<th class="text-center">{% trans 'Valid' %}</th> <th class="text-center">{% trans 'Valid' %}</th>
<th class="text-center"></th> <th class="text-center"></th>
</tr> {% endblock %}
</thead>
<tbody> {% block table_body %}
{% for asset in asset_list %} {% for asset in asset_list %}
<tr class="gradeX" name="oAssets"> <tr class="gradeX" name="oAssets">
<td class="text-center"><input type="checkbox" name="checked" value="{{ asset.id }}"></td> <td class="text-center">
<td class="text-center"><a href="{% url 'assets:asset-detail' pk=asset.id %}">{{ asset.hostname }}</a></td> <input type="checkbox" name="checked" value="{{ asset.id }}">
</td>
<td class="text-center">
<a href="{% url 'assets:asset-detail' pk=asset.id %}">
{{ asset.hostname }}
</a>
</td>
<td class="text-center">{{ asset.ip }}</td> <td class="text-center">{{ asset.ip }}</td>
<td class="text-center">{{ asset.port }}</td> <td class="text-center">{{ asset.port }}</td>
<td class="text-center">{{ asset.type }}</td> <td class="text-center">{{ asset.type }}</td>
...@@ -85,13 +96,9 @@ ...@@ -85,13 +96,9 @@
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody>
</table>
{% endblock %} {% endblock %}
<div class="row">
<div class="col-sm-4"> {% block content_bottom_left %}
{# Update batch #}
{% block content_bottom_left %}
<form id="" method="get" action="" class=" mail-search"> <form id="" method="get" action="" class=" mail-search">
<div class="input-group"> <div class="input-group">
<select class="form-control m-b" style="width: auto"> <select class="form-control m-b" style="width: auto">
...@@ -100,24 +107,15 @@ ...@@ -100,24 +107,15 @@
<option>{% trans 'Deactive selected' %}</option> <option>{% trans 'Deactive selected' %}</option>
<option>{% trans 'Export selected' %}</option> <option>{% trans 'Export selected' %}</option>
</select> </select>
<div class="input-group-btn pull-left" style="padding-left: 5px;"> <div class="input-group-btn pull-left" style="padding-left: 5px;">
<button id='search_btn' type="submit" style="height: 32px;" class="btn btn-sm btn-primary"> <button id='search_btn' type="submit" style="height: 32px;" class="btn btn-sm btn-primary">
{% trans 'Submit' %} {% trans 'Submit' %}
</button> </button>
</div> </div>
</div> </div>
</form> </form>
{% endblock %}
</div>
{% block table_pagination %}
{% include '_pagination.html' %}
{% endblock %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %} {% endblock %}
{% block custom_foot_js %} {% block custom_foot_js %}
...@@ -138,15 +136,20 @@ ...@@ -138,15 +136,20 @@
oDiv.style.display = "none"; oDiv.style.display = "none";
} }
}; };
$(document).ready(function(){ $(document).ready(function(){
var oTags = document.getElementById("ydxbd");
var table = $('#editable').DataTable({ var table = $('#editable').DataTable({
aLengthMenu: [[2, 25, 50, -1], ["2", "25", "50", "all"]], "aLengthMenu": [[10, 25, 50, -1], ["10", "25", "50", "all"]],
"iDisplayLength":25,
"aaSorting": [[7, "asc"]], "aaSorting": [[7, "asc"]],
"aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }], "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }],
"bAutoWidth": false, "bAutoWidth": false,
"language": { "language": {"url": "/static/js/plugins/dataTables/i18n/zh-hans.json"},
"url": "/static/js/plugins/dataTables/i18n/zh-hans.json" "dom": '<"custom">lftip',
"initComplete": function() {
//alert( 'DataTables has finished its initialisation.' );
$('#editable_length').before("<a href=\"{% url 'assets:asset-create' %}\" class=\"btn btn-sm btn-primary custom \"> {% trans 'Create asset' %} </a>&nbsp; <button class='btn btn-sm btn-primary custom' id='zksx' onclick='tagShow()'>标签</button>");
$('#editable').before(oTags);
}, },
columns: [ columns: [
{data: "checkbox"}, {data: "checkbox"},
......
...@@ -50,7 +50,8 @@ ...@@ -50,7 +50,8 @@
$(document).ready(function(){ $(document).ready(function(){
var table = $('#editable').DataTable({ var table = $('#editable').DataTable({
aLengthMenu: [[2, 25, 50, -1], ["2", "25", "50", "all"]], "aLengthMenu": [[10, 25, 50, -1], ["10", "25", "50", "all"]],
"iDisplayLength":25,
"aaSorting": [[2, "asc"]], "aaSorting": [[2, "asc"]],
"aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }], "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }],
"bAutoWidth": false, "bAutoWidth": false,
...@@ -60,7 +61,7 @@ $(document).ready(function(){ ...@@ -60,7 +61,7 @@ $(document).ready(function(){
columns: [ columns: [
{data: "checkbox"}, {data: "checkbox"},
{data: "id"}, {data: "id"},
{data: "name"}, {data: "hostname"},
{data: "ip"}, {data: "ip"},
{data: "type"}, {data: "type"},
{data: "group"}, {data: "group"},
...@@ -84,17 +85,26 @@ $(document).ready(function(){ ...@@ -84,17 +85,26 @@ $(document).ready(function(){
$('#close-btn').on('click',function(){ $('#close-btn').on('click',function(){
$('#modal').modal('hide'); $('#modal').modal('hide');
}); });
var size_name = document.getElementById('asset_on_count').innerText
$('#save-btn').on('click',function(){ $('#save-btn').on('click',function(){
// alert( table.rows('.selected').data().length +' row(s) selected' ); //alert( table.rows('.selected').data().length +' row(s) selected' );
var d = table.rows('.selected').data(); var d = table.rows('.selected').data();
var size = d.length; var size = d.length;
var re = /\d+/
document.getElementById('add_asset').value = size; document.getElementById('add_asset').value = size;
var str= size_name;
var re=/\d+/g;
document.getElementById('asset_on_count').innerText = str.replace(re, size);
var column2 = table.rows('.selected').data(); var column2 = table.rows('.selected').data();
$("#asset_sed").find("input[name='assets']").remove(); $("#asset_sed").find("input[name='assets']").remove();
$("#asset_sed").find("button[name='asset_hostname']").remove();
for(var i=0;i<column2.length;i++){ for(var i=0;i<column2.length;i++){
column2[i].checkbox='<input name="checked" value="1" checked="" type="checkbox">'; column2[i].checkbox='<input name="checked" value="1" checked="" type="checkbox">';
var value = column2[i].id; var value = column2[i].id;
var ip = column2[i].ip;
var hostname = column2[i].hostname;
$("#asset_sed").append("<input type='hidden' name='assets' value='"+value+"'>"); $("#asset_sed").append("<input type='hidden' name='assets' value='"+value+"'>");
$("#asset_on_p").append("<button name='asset_hostname' title='"+ip+"' type='button' class='btn btn-default btn-xs ss'>"+hostname+"</button> ");
} }
$('#modal').modal('hide'); $('#modal').modal('hide');
}); });
......
...@@ -42,9 +42,15 @@ div.dataTables_wrapper div.dataTables_filter, ...@@ -42,9 +42,15 @@ div.dataTables_wrapper div.dataTables_filter,
<h3 class="widget-head-color-box">基本信息</h3> <h3 class="widget-head-color-box">基本信息</h3>
{{ form.name|bootstrap_horizontal }} {{ form.name|bootstrap_horizontal }}
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label">关联的资产</label> <label class="col-sm-2 control-label" id="asset_on_count">关联的资产({{ assets_count }})</label>
<div class="col-sm-9" id="asset_sed"> <div class="col-sm-9" id="asset_sed">
<input type="text" class=" form-control" id="add_asset" value="{{ assets_count }}"> <div class="form-asset-on" id="add_asset">
<p id="asset_on_p">
{% for asset in assets_on_list %}
<button name='asset_hostname' title='{{ asset.ip}}' type='button' class='btn btn-default btn-xs'>{{ asset.hostname }}</button>
{% endfor %}
</p>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
......
...@@ -228,11 +228,12 @@ class AssetGroupUpdateView(AdminUserRequiredMixin, UpdateView): ...@@ -228,11 +228,12 @@ class AssetGroupUpdateView(AdminUserRequiredMixin, UpdateView):
return super(AssetGroupUpdateView, self).get(request, *args, **kwargs) return super(AssetGroupUpdateView, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
assets_all = self.object.assets.all()
context = { context = {
'app': _('Assets'), 'app': _('Assets'),
'action': _('Create asset group'), 'action': _('Create asset group'),
# 'assets': Asset.objects.all(), 'assets_on_list': assets_all,
'assets_count': self.object.assets.all().count(), 'assets_count': len(assets_all),
'group_id':self.object.id, 'group_id':self.object.id,
} }
kwargs.update(context) kwargs.update(context)
...@@ -662,10 +663,12 @@ class AssetTagUpdateView(AdminUserRequiredMixin, UpdateView): ...@@ -662,10 +663,12 @@ class AssetTagUpdateView(AdminUserRequiredMixin, UpdateView):
return super(AssetTagUpdateView, self).get(request, *args, **kwargs) return super(AssetTagUpdateView, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
assets_all = self.object.asset_set.all()
context = { context = {
'app': _('Tag'), 'app': _('Tag'),
'action': _('Asset Tags detail'), 'action': _('Asset Tags detail'),
'assets_count': self.object.asset_set.all().count(), 'assets_count': len(assets_all),
'assets_on_list': assets_all,
'tag_id':self.object.id, 'tag_id':self.object.id,
} }
kwargs.update(context) kwargs.update(context)
......
...@@ -204,14 +204,31 @@ table.dataTable tbody td.selected td i.text-navy ...@@ -204,14 +204,31 @@ table.dataTable tbody td.selected td i.text-navy
padding-top: 15px; padding-top: 15px;
margin-bottom: 15px; margin-bottom: 15px;
display: block; display: block;
background: #f4f4f4; /*background: #ccc;*/
padding-left: 10px; padding-left: 10px;
} }
.mar { .mar {
margin-left: 2px; margin-left: 2px;
line-height: 15px; line-height: 0px;
} }
.mar-j { .mar-j {
margin-left: 3px; margin-left: 3px;
margin-right: 3px; margin-right: 3px;
} }
.form-asset-on button{
background: #f1f1f1;
margin-right: 2px;
}
.form-asset-on{
border: 1px solid #e5e6e7;
padding-top:5px;
padding-bottom: 0px;
padding-left: 5px;
padding-right: 5px;
min-height:34px;
height: 100%;
}
.form-asset-on p{
margin-bottom:0px;
}
\ No newline at end of file
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="" id="content_start">
{% block content_left_head %} {% endblock %} {% block content_left_head %} {% endblock %}
{% block table_search %} {% block table_search %}
<form id="search_form" method="get" action="" class="pull-right mail-search"> <form id="search_form" method="get" action="" class="pull-right mail-search">
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
</div> </div>
</form> </form>
{% endblock %} {% endblock %}
{% block tags_list %}{% endblock %}
</div> </div>
{% block table_container %} {% block table_container %}
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li id=""> <li id="terminal">
<a href="{% url 'terminal:terminal-list' %}"> <a href="{% url 'terminal:terminal-list' %}">
<i class="fa fa-desktop"></i><span class="nav-label">{% trans 'Terminal' %}</span><span class="label label-info pull-right"></span> <i class="fa fa-desktop"></i><span class="nav-label">{% trans 'Terminal' %}</span><span class="label label-info pull-right"></span>
</a> </a>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment