Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
f88c1490
Commit
f88c1490
authored
Oct 24, 2016
by
江世峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
asset:add assets_bulk
parent
cdb1602e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
253 additions
and
138 deletions
+253
-138
forms.py
apps/assets/forms.py
+0
-1
asset_create.html
apps/assets/templates/assets/asset_create.html
+2
-2
asset_list.html
apps/assets/templates/assets/asset_list.html
+43
-92
asset_modal_update.html
apps/assets/templates/assets/asset_modal_update.html
+150
-38
views.py
apps/assets/views.py
+32
-1
jumpserver.css
apps/static/css/jumpserver.css
+26
-4
No files found.
apps/assets/forms.py
View file @
f88c1490
...
...
@@ -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'
)}),
...
...
apps/assets/templates/assets/asset_create.html
View file @
f88c1490
...
...
@@ -42,10 +42,10 @@
<script>
$
(
document
).
ready
(
function
()
{
$
(
'.select2'
).
select2
();
$
(
"#tags"
).
select2
({
$
(
"#
id_
tags"
).
select2
({
tags
:
true
,
maximumSelectionLength
:
8
,
//最多能够选择的个数
closeOnSelect
:
false
//
closeOnSelect: false
});
})
...
...
apps/assets/templates/assets/asset_list.html
View file @
f88c1490
...
...
@@ -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> <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> <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
apps/assets/templates/assets/asset_modal_update.html
View file @
f88c1490
...
...
@@ -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 %}
apps/assets/views.py
View file @
f88c1490
...
...
@@ -75,12 +75,32 @@ class AssetCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,CreateView):
return
super
(
AssetCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetModalCreateView
(
AdminUserRequiredMixin
,
CreateAssetTagsMiXin
,
Create
View
):
class
AssetModalCreateView
(
AdminUserRequiredMixin
,
CreateAssetTagsMiXin
,
List
View
):
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
=
{
...
...
apps/static/css/jumpserver.css
View file @
f88c1490
...
...
@@ -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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment