Commit f88c1490 authored by 江世峰's avatar 江世峰

asset:add assets_bulk

parent cdb1602e
......@@ -52,7 +52,6 @@ class AssetCreateForm(forms.ModelForm):
'groups': forms.SelectMultiple(attrs={'class': 'select2',
'data-placeholder': _('Select asset groups')}),
'tags': forms.SelectMultiple(attrs={'class': 'select2',
'id':'tags',
'data-placeholder': _('Select asset tags')}),
'system_users': forms.SelectMultiple(attrs={'class': 'select2',
'data-placeholder': _('Select asset system users')}),
......
......@@ -42,10 +42,10 @@
<script>
$(document).ready(function () {
$('.select2').select2();
$("#tags").select2({
$("#id_tags").select2({
tags: true,
maximumSelectionLength: 8, //最多能够选择的个数
closeOnSelect: false
//closeOnSelect: false
});
})
......
......@@ -8,7 +8,7 @@
<style>
div.dataTables_wrapper div.dataTables_filter {
margin-left: 15px;
margin-left: 15px;
float: right !important;
}
div.dataTables_wrapper div.dataTables_filter,
......@@ -18,48 +18,29 @@ div.dataTables_wrapper div.dataTables_filter,
.custom{
/*float:left;*/
margin-right:5px;
}
#modal .modal-body { max-height: 200px; }
</style>
{% endblock %}
{% block content_left_head %}
{% endblock %}
{% block table_search %}
{% endblock %}
{% block content_left_head %}{% endblock %}
{% block table_search %}{% endblock %}
{% block tags_list %}
<div class="ydxbd" id="ydxbd" style="display: none;">
<div>
<p id="tags_p">
{% for tag in tag_list %}
<a href="{% url 'assets:asset-tags' tag_id=tag.0 %}">
<span
{% if tag.0|IntToStr == tag_id %}
class="label label-warning" name="tag_on"
{% else %}
class="label label-default"
{% endif %}
>{{ tag.1}}({{ tag.2 }})</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 %}
{# <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>
</div>
</div>
<div class="ydxbd" id="ydxbd" style="display: none;">
<div class="tagBtnList">
{% for tag in tag_list %}
<a href="{% url 'assets:asset-tags' tag_id=tag.0 %}"
{% if tag.0|IntToStr == tag_id %}
class="tagBtn2 label label-warning" name="tag_on">
{% else %}
class="tagBtn2 label label-default">
{% endif %}
{{ tag.1}}({{ tag.2 }})
</a>
{% endfor %}
<a href="{% url 'assets:asset-list' %}" class="tagBtn2 label label-default" >移除选择</a>
</div>
</div>
{% endblock %}
{% block table_head %}
......@@ -139,10 +120,8 @@ div.dataTables_wrapper div.dataTables_filter,
if(tag_on.length > 0){
oDiv.style.display = "block";
}
};
function tagShow() {
var oDiv = document.getElementById("ydxbd");
if (oDiv.style.display == 'none'){
......@@ -152,11 +131,7 @@ div.dataTables_wrapper div.dataTables_filter,
}
};//onload;
$(document).ready(function(){
$('#modal').modal({
show: false,
backdrop: 'static',
......@@ -164,37 +139,35 @@ div.dataTables_wrapper div.dataTables_filter,
remote:"{% url 'assets:asset-modal-update' %}",
});
//$('#modal').on('shown.bs.modal',function(){
$('#asset_bulk_update_modal').on('shown.bs.modal',function(){
//alert('当弹窗完全加载完后,再触发;')
$('.select2').select2();
$("#tags").select2({
$('.select2').select2();
$("#id_tags").select2({
tags: true,
maximumSelectionLength: 8, //最多能够选择的个数
closeOnSelect: false
//closeOnSelect: false
});
});
$('#asset_bulk_update_modal').modal({
show: false,
backdrop: 'static',
keyboard: 'false',
});
var oTags = document.getElementById("ydxbd");
var table = $('#editable').DataTable({
"aLengthMenu": [[10, 25, 50, -1], ["10", "25", "50", "all"]],
"iDisplayLength":25,
"aaSorting": [[7, "asc"]],
"aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }],
"bAutoWidth": false,
"language": {"url": "/static/js/plugins/dataTables/i18n/zh-hans.json"},
"dom": '<"custom"fl>tip',
"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);
},
$('#asset_bulk_update_modal').modal({
show: false,
backdrop: 'static',
keyboard: 'false',
});
var oTags = document.getElementById("ydxbd");
var table = $('#editable').DataTable({
"aLengthMenu": [[10, 25, 50, -1], ["10", "25", "50", "all"]],
"iDisplayLength":25,
"aaSorting": [[7, "asc"]],
"aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] }],
"bAutoWidth": false,
"language": {"url": "/static/js/plugins/dataTables/i18n/zh-hans.json"},
"dom": '<"custom"fl>tip',
"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: [
{data: "checkbox"},
{data: "id"},
......@@ -220,9 +193,7 @@ div.dataTables_wrapper div.dataTables_filter,
};
});
$('#btn_bulk_update').on('click',function(){
// alert( table.rows('.selected').data().length +' row(s) selected' );
var column2 = table.rows('.selected').data();
var id_list = [];
var plain_id_list = [];
......@@ -259,9 +230,9 @@ div.dataTables_wrapper div.dataTables_filter,
};
function doUpdate() {
$('#asset_bulk_update_modal').modal('show');
// $('#modal').modal('show');
// alert(JSON.stringify(id_list));
// alert(plain_id_list);
// $('#asset_bulk_update_modal').modal('show');
window.location.href="{% url 'assets:asset-modal-update' %}?plain_id_lists="+plain_id_list
};
var action = $('#slct_bulk_update option:selected').val();
......@@ -295,14 +266,8 @@ div.dataTables_wrapper div.dataTables_filter,
});//button
}); //$(document).ready
var bCheck = 1;
function checkAll(){
if(bCheck){
......@@ -324,18 +289,5 @@ div.dataTables_wrapper div.dataTables_filter,
};
};
</script>
{% endblock %}
\ No newline at end of file
......@@ -5,61 +5,173 @@
{% block form %}
<div class="hr-line-dashed"></div>
<div class="ydxbd" id="ydxbd" style="display: block;">
<div>
<p id="tags_p">
<a>
</a>
{% for f in form %}
<span class="label label-default">{{ f.hostname }}</span>
{% endfor %}
<a href="{% url 'assets:asset-list' %}" ><span class="label label-default">移除选择</span></a>
</p>
</div>
</div>
<div class="hr-line-dashed"></div>
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
<div class="hr-line-dashed"></div>
{{ form.hostname|bootstrap_horizontal }}
{{ form.ip|bootstrap_horizontal }}
<div style="display:none" id="ridd">
{{ form.port|bootstrap_horizontal }}
{{ form.type|bootstrap_horizontal }}
{{ form.idc|bootstrap_horizontal }}
{{ form.groups|bootstrap_horizontal }}
{{ form.admin_user|bootstrap_horizontal }}
{{ form.system_users|bootstrap_horizontal }}
{{ form.brand|bootstrap_horizontal }}
{{ form.cpu|bootstrap_horizontal }}
{{ form.memory|bootstrap_horizontal }}
{{ form.disk|bootstrap_horizontal }}
{{ form.os|bootstrap_horizontal }}
{{ form.cabinet_no|bootstrap_horizontal }}
{{ form.cabinet_pos|bootstrap_horizontal }}
{{ form.status|bootstrap_horizontal }}
{{ form.env|bootstrap_horizontal }}
{{ form.tags|bootstrap_horizontal }}
{{ form.comment|bootstrap_horizontal }}
</div>
<div class="hr-line-dashed"></div>
<form action="" class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2 col-lg-2 " id="asset_on_count">已选主机({{ assets_count }})</label>
<div class="col-sm-9" id="asset_sed">
<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>
</form>
<div class="hr-line-dashed"></div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<div class="ydxbd" id="formlists" style="display: block;">
<p id="tags_p" class="mgl-5 c02">选择属性</p>
<div class="tagBtnList">
<a onclick="AddAllForm(this)" class="tagBtn2 label label-primary" id="changeall">全选</a>
<a onclick="AddForm(this,'id_port')" class="tagBtn2 label label-default" name="changebtn">端口</a>
<a onclick="AddForm(this,'id_type')" class="tagBtn2 label label-default" name="changebtn">系统类型</a>
<a onclick="AddForm(this,'id_idc')" class="tagBtn2 label label-default" name="changebtn">机房</a>
<a onclick="AddForm(this,'id_groups')" class="tagBtn2 label label-default" name="changebtn">用户组</a>
<a onclick="AddForm(this,'id_admin_user')" class="tagBtn2 label label-default" name="changebtn">管理用户</a>
<a onclick="AddForm(this,'id_system_users')" class="tagBtn2 label label-default" name="changebtn">系统用户</a>
<a onclick="AddForm(this,'id_brand')" class="tagBtn2 label label-default" name="changebtn">品牌</a>
<a onclick="AddForm(this,'id_cpu')" class="tagBtn2 label label-default" name="changebtn">CPU</a>
<a onclick="AddForm(this,'id_memory')" class="tagBtn2 label label-default" name="changebtn">内存</a>
<a onclick="AddForm(this,'id_disk')" class="tagBtn2 label label-default" name="changebtn">硬盘</a>
<a onclick="AddForm(this,'id_os')" class="tagBtn2 label label-default" name="changebtn">操作系统</a>
<a onclick="AddForm(this,'id_cabinet_no')" class="tagBtn2 label label-default" name="changebtn">机柜编号</a>
<a onclick="AddForm(this,'id_cabinet_pos')" class="tagBtn2 label label-default" name="changebtn">机柜层号</a>
<a onclick="AddForm(this,'id_status')" class="tagBtn2 label label-default" name="changebtn">资产状态</a>
<a onclick="AddForm(this,'id_env')" class="tagBtn2 label label-default" name="changebtn">资产环境</a>
<a onclick="AddForm(this,'id_tags')" class="tagBtn2 label label-default" name="changebtn">标签</a>
<a onclick="AddForm(this,'id_comment')" class="tagBtn2 label label-default" name="changebtn">备注</a>
</div>
</div>
<div class="hr-line-dashed"></div>
<form action="" method="post" class="form-horizontal" id="add_form">
{% csrf_token %}
<div class="form-group" name="formbtn" id="formbtn">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-white" type="reset">{% trans 'Reset' %}</button>
<button id="submit_button" class="btn btn-primary" type="submit">{% trans 'Submit' %}</button>
</div>
</div>
</form>
<!-- 模态框(Modal) -->
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content" id="box">
<!--此部分为主体内容,将远程加载进来-->
</div>
</div>
</div>
{% endblock %}
{% block custom_foot_js %}
<script>
$(document).ready(function () {
$('.select2').select2();
$("#tags").select2({
tags: true,
maximumSelectionLength: 8, //最多能够选择的个数
closeOnSelect: false
});
})
<script>
$('#add_asset').on('click',function(){
$('#modal').modal('show');
});
$('#modal').modal({
show: false,
backdrop: 'static',
keyboard: 'false',
remote:"{% url 'assets:asset-modal-list' %}?plain_id_lists={{ plain_id_lists }}",
});
$('#modal').on('show.bs.modal',function(){
//alert('当调用show方法时,立即触发;')
});
$('#modal').on('shown.bs.modal',function(){
//alert('当弹窗完全加载完后,再触发;')
});
$('#modal').on('hide.bs.modal',function(){
//alert('当关闭时,立即触发;')
});
$('#modal').on('hidden.bs.modal',function(){
//alert('当关完全关闭后,再触发;')
});
$('#modal').on('loaded.bs.modal',function(){
//alert('当远程数据加载完毕后,再触发;')
});
function SetSelect2(){
$('.select2').select2();
$("#id_tags").select2({
tags: true,
maximumSelectionLength: 8, //最多能够选择的个数
//closeOnSelect: false
});
};
function AddForm(obj,id_form) {
var oHiddenForms = document.getElementById("ridd");
var parentElem = document.getElementById("add_form");
var oH = document.getElementById(id_form);
var oNew = oH.parentNode.parentNode
var aDiv = parentElem.getElementsByClassName('form-group');
if(oNew.parentNode.id=='ridd') {
obj.className="tagBtn2 label label-warning";
parentElem.insertBefore(oNew,aDiv[0]);
SetSelect2();
}else{
oHiddenForms.appendChild(oNew);
obj.className="tagBtn2 label label-default";
SetSelect2();
};
};
</script>
function ChangeBtnCss(class_var){
var changebtns = $("#formlists").find("a[name='changebtn']")
for (var i=0; i<changebtns.length;i++){
changebtns[i].className=class_var;
};
};
function AddAllForm(obj) {
var oHiddenForms = document.getElementById("ridd");
var parentElem = document.getElementById("add_form");
var aDiv = parentElem.getElementsByClassName('form-group');
var bFormBtn = document.getElementById("formbtn");
var oHidden_len = oHiddenForms.children.length;
var aDiv_len = aDiv.length;
if(oHidden_len == 0 || obj.innerText == "取消全选"){
for(var i=0;i<aDiv_len-1;i++){
oHiddenForms.appendChild(aDiv[0]);
};
ChangeBtnCss("tagBtn2 label label-default");
$('#changeall').text("全选");
}else{
for(var i=0;i<oHidden_len;i++){
parentElem.insertBefore(oHiddenForms.children[0],bFormBtn);
};
ChangeBtnCss("tagBtn2 label label-warning");
$('#changeall').text("取消全选");
SetSelect2();
};
};
</script>
{% endblock %}
......@@ -75,12 +75,32 @@ class AssetCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,CreateView):
return super(AssetCreateView, self).get_context_data(**kwargs)
class AssetModalCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,CreateView):
class AssetModalCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,ListView):
model = Asset
# tag_type = 'asset'
form_class = AssetCreateForm
template_name = 'assets/asset_modal_update.html'
success_url = reverse_lazy('assets:asset-list')
def get_queryset(self):
self.queryset = super(AssetModalCreateView,self).get_queryset()
self.s = self.request.GET.get('plain_id_lists')
if "," in str(self.s):
self.plain_id_lists = [int(x) for x in self.s.split(',')]
else:
self.plain_id_lists = [self.s]
return self.queryset
def get_context_data(self, **kwargs):
asset_on_list = Asset.objects.filter(id__in = self.plain_id_lists)
context = {
'app': 'Assets',
'action': 'Bulk Update asset',
'assets_on_list': asset_on_list,
'assets_count': len(asset_on_list),
'plain_id_lists':self.s,
}
kwargs.update(context)
return super(AssetModalCreateView, self).get_context_data(**kwargs)
class AssetUpdateView(AdminUserRequiredMixin,UpdateAssetTagsMiXin,UpdateView):
model = Asset
......@@ -134,6 +154,17 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
def get_context_data(self, **kwargs):
group_id = self.request.GET.get('group_id')
tag_id = self.request.GET.get('tag_id')
plain_id_lists = self.request.GET.get('plain_id_lists')
self.s = self.request.GET.get('plain_id_lists')
if "," in str(self.s):
self.plain_id_lists = [int(x) for x in self.s.split(',')]
else:
self.plain_id_lists = [self.s]
print plain_id_lists
if plain_id_lists:
context = {
'all_assets':plain_id_lists
}
if group_id:
group = AssetGroup.objects.get(id=group_id)
context = {
......
......@@ -206,6 +206,7 @@ table.dataTable tbody td.selected td i.text-navy
display: block;
background: #f4f4f4;
padding-left: 10px;
padding-bottom: 15px;
}
.mar {
margin-left: 2px;
......@@ -216,6 +217,10 @@ table.dataTable tbody td.selected td i.text-navy
margin-right: 3px;
}
.form-asset-on p{
margin-bottom:0px;
}
.form-asset-on button{
background: #f1f1f1;
margin-right: 2px;
......@@ -229,6 +234,24 @@ table.dataTable tbody td.selected td i.text-navy
min-height:34px;
height: 100%;
}
.form-asset-on p{
margin-bottom:0px;
}
\ No newline at end of file
.mgl-5 {
margin-left: 5px;
font-size: 12px;
}
.c02 {
color: #999;
}
.tagBtnList {
font-size: 12px;
line-height: 32px;
margin: -5px 0 0 0;
padding-left: 0px;
}
.tagBtn2 {
margin: 0 5px 5px 0;
font-size: 12px;
vertical-align: middle;
}
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