(function (context) {
function get() {
return $('div.modal[data-visible]');
}
function close() {
var dialog = get();
dialog.fadeOut(200, function() {
$(this).remove();
});
// $('body').unbind('keyup');
$('body').unbind('keydown');
return false;
}
function escCallback(e) {
if (e.keyCode == 27) {
close();
}
}
function JDialog () {
this.get = get;
this.close = close;
this.msgTid = '';
this.escCallback = function(e) {
escCallback(e);
};
this.setCallback = function(formCallback, dialog) {
dialog.find('form').bind('submit', function(e) {
var formData = C.parseForm($(this));
formCallback(e, formData);
return false;
});
};
this.setTitle = function(title, dialog) {
dialog.find('h3').text(title);
};
this.showMsg = function(msg, dialog, timeout) {
this._showMsg(msg, 'success', dialog, timeout);
};
this.showErrorMsg = function(msg, dialog, timeout) {
this._showMsg(msg, 'error', dialog, timeout);
};
this.showLoading = function(msg, dialog) {
this.showMsg(msg, dialog, 864000);
};
this._showMsg = function(msg, type, dialog, timeout) {
dialog.find('.alert').remove();
elem = $('
');
elem.insertAfter(dialog.find('h3'));
elem.find('.alert-content').html(C.htmlEncode(msg));
if (type == 'error') {
elem.removeClass('success').addClass('error');
} else if (type == 'success') {
elem.removeClass('error').addClass('success');
}
elem.fadeIn(200);
if (this.msgTid !== '') {
clearTimeout(this.msgTid);
}
var sec = 5000;
if (timeout) {
sec = timeout * 1000;
}
this.msgTid = setTimeout(this.hideMsg, sec);
};
this.hideMsg = function() {
get().find('div.alert').fadeOut(200, function() {
$(this).remove();
});
};
this.setSubmitText = function(text, dialog) {
dialog.find('button.primary').text(text);
};
this.create = function(html) {
var dialog = $(html).attr('data-visible', 1);
dialog.find('.modal-content').addClass('vertical-center');
dialog.find('[data-id]').each(function() {
var id = $(this).attr('data-id');
$(this).attr('id', id);
});
dialog.find('[data-attr-name]').each(function() {
var name = $(this).attr('data-attr-name');
$(this).attr('name', name);
});
$('body').append(dialog);
dialog = this.bindEvent(dialog);
return dialog;
};
this.bindEvent = function(dialog) {
dialog.fadeIn(200);
dialog.find('.close').bind('click', this.close);
dialog.find('[data-optype="cancel"]').bind('click', this.close);
dialog.find('input').focus(UI.removeError);
dialog.find('select').focus(UI.removeError);
dialog.find('textarea').focus(UI.removeError);
dialog.find('input:text').attr('autocomplete', 'off');
dialog.find('input:password').attr('autocomplete', 'off');
$('body').bind('keydown', this.escCallback);
// 如果先设置foucus,再将dialog添加到body中,设置focus不会起作用
UI.setFocus(dialog);
return dialog;
};
this.show = function(html, formCallback) {
var dialog = this.create(html);
if (formCallback) {
this.setCallback(formCallback, dialog);
}
return dialog;
};
this.confirm = function(callback, msg) {
var html = '';
var dialog = this.create(html);
if (msg) {
$('#confirm-msg').html(msg);
}
if (callback) {
dialog.find('form').bind('submit', function(e) {
callback();
close();
return false;
});
}
return dialog;
};
this.alert = function(msg) {
var html = '';
var dialog = this.create(html);
if (msg) {
$('#alert-msg').text(msg);
}
return dialog;
};
}
context.dialog = new JDialog();
})(UI);
(function(context) {
function JNotice() {
this.show = function(msg, elem, msgstyle){
if (!msgstyle) {
msgstyle ='success';
}
if (!elem) {
elem = $('form').eq(0);
}
elem.prev('[data-type="form-notice"]').remove();
var div = $('');
div.addClass(msgstyle).html(msg).insertBefore(elem).fadeIn(200);
$('.main').scrollTop(0);
};
this.success = function(msg, elem) {
this.show(msg, elem, 'success');
};
this.error = function(msg, elem) {
this.show(msg, elem, 'danger');
};
this.hide = function() {
$('[data-type="form-notice"]').fadeOut(0, function() {
$(this).remove();
});
};
}
context.notice = new JNotice();
})(UI);
(function(context) {
function JMsg() {
this.style = new Array('error', 'success');
this.tid = '';
this.show = function(msg, classIndex, timeout, fadeIn){
this.remove();
if (this.tid !== '') {
clearTimeout(this.tid);
}
var div = $('');
var msgClass = this.style[classIndex];
if (typeof msgClass === 'undefined') {
msgClass = this.style[1];
}
div.addClass(msgClass);
div.find('div').text(msg);
$('div.app-body').append(div);
if (typeof fadeIn == 'undefined') {
fadeIn = 200;
}
div.fadeIn(fadeIn);
var sec = 5000;
//参数timeout为信息显示的时间,单位秒
if (timeout) {
sec = timeout * 1000;
}
this.tid = setTimeout(this.hide, sec);
};
this.error = function(msg, timeout) {
this.show(msg, 0, timeout);
};
this.hide = function() {
$('div.app-body div.alert').fadeOut(200, function() {
$(this).remove();
});
};
this.remove = function() {
$('div.app-body div.alert').remove();
};
this.loading = function(msg, fadeIn) {
if (typeof msg == 'undefined') {
msg = '正在载入数据...';
}
this.show(msg, 1, 864000, fadeIn);
};
this.loading_show = function(msg){
this.remove();
if(this.tid !== '')
{
clearTimeout(this.tid);
}
if(typeof(msg) == 'undefined')
{
msg = '正在载入数据...';
}
var div = $('
');
div.find('.msgText').html(msg);
$('body').append(div);
};
this.hideLoading = function(){
$('div.app-body div.alert').fadeOut(200, function() {
$(this).remove();
});
};
}
context.msg = new JMsg();
})(UI);
(function(context) {
var aData = [],
aSearch = '',
aSearchKey = '',
aValueKey = 'id',
aNameKey = 'uname',
aFilter = [],
aFilterKey = '',
aFilterValueKey = '',
aFilterNameKey = '',
aFilterTitle = '',
aTreeSetting = {},
bData = [],
orderKey = 'id',
nameFormatter = null,
dialogElem = null,
treeObj = null,
title = '',
bTitle = '',
bItemMulti = true;
function initSetting() {
aData = [];
aSearch = '';
aSearchKey = '';
aValueKey = 'id';
aNameKey = 'uname';
aFilter = [];
aFilterKey = '';
aFilterValueKey = '';
aFilterNameKey = '';
aFilterTitle = '';
aTreeSetting = {};
bData = [];
orderKey = 'id';
nameFormatter = null;
dialogElem = null;
treeObj = null;
title = '';
bTitle = '';
bItemMulti = true;
}
function orderData(rows) {
var data = [];
for (var i in rows) {
data[rows[i][orderKey] + '_' + rows[i][aValueKey]] = rows[i];
}
return data;
}
function treeSetting() {
var setting = {
data: {
simpleData: {
enable: true,
idKey: 'id',
pIdKey: 'pid',
rootPid: 4
},
key: {
name: 'domain_name'
},
keep: {
parent: true
}
},
callback: {
onClick: function(event, treeid, treeNode) {
}
}
};
return setting;
}
function getViewA() {
return dialogElem.find('[name="view-a"]');
}
function getViewB() {
return dialogElem.find('[name="view-b"]');
}
function getAFliterValue() {
return dialogElem.find('[name="filter-a"]').attr('data-value');
}
function setAFilterName(name) {
dialogElem.find('[name="filter-a"]').html(C.htmlEncode(name));
}
function getViewBValues() {
var elem = getViewB().find('a');
var values = [];
for (var i = 0, n = elem.length; i < n; i ++) {
values.push(elem.eq(i).attr('data-value'));
}
return values;
}
function aItemToB(elem) {
var uqid = elem.attr('uqid');
getViewB().append(elem.parent());
bData[uqid] = aData[uqid];
aData[uqid] = null;
}
function bItemToA(elem) {
var uqid = elem.attr('uqid');
if (String(bData[uqid][aFilterKey]) === getAFliterValue()) {
getViewA().append(elem.parent());
} else {
elem.parent().remove();
}
aData[uqid] = bData[uqid];
bData[uqid] = null;
}
var MsDialog = function() {};
MsDialog.prototype.show = function(settings, events) {
initSetting();
settings = settings || {};
aSearchKey = settings.aSearchKey || [];
aValueKey = settings.aValueKey || 'id';
aNameKey = settings.aNameKey || 'uname';
aFilter = settings.aFilter || [];
aFilterKey = settings.aFilterKey || '';
aFilterValueKey = settings.aFilterValueKey || '';
aFilterNameKey = settings.aFilterNameKey || '';
aFilterTitle = settings.aFilterTitle || '';
aTreeSetting = settings.aTreeSetting || treeSetting();
orderKey = settings.orderKey || 'id';
nameFormatter = settings.nameFormatter || null;
title = settings.title || '';
bTitle = settings.bTitle || '';
if (typeof settings.bItemMulti !== 'undefined') {
bItemMulti = settings.bItemMulti;
} else {
bItemMulti = true;
}
if (!settings.html) {
settings.html = '\
';
}
dialogElem = UI.dialog.create(settings.html);
if (title) {
dialogElem.find('h3').html(title);
}
if (aFilterTitle) {
setAFilterName(aFilterTitle);
}
if (bTitle) {
dialogElem.find('[name="btitle"]').html(C.htmlEncode(bTitle));
}
var _this = this;
if (aFilter.length) {
_this.showAFilter();
}
events = events || {};
$('form', dialogElem).submit(function() {
if (events.formCallback) {
events.formCallback(getViewBValues());
}
return false;
});
getViewA().bind('click', _this.viewAClick);
getViewB().bind('click', _this.viewBClick);
return dialogElem;
};
MsDialog.prototype.showAFilter = function() {
if (!aFilter) {
return;
}
for (var i in aFilter) {
aFilter[i]['isParent'] = true;
}
var _this = this;
aTreeSetting.callback.onClick = function(event, treeid, treeNode) {
_this.selectAFilter(treeNode.id);
dialogElem.find('[name="filter-a"]').attr('data-value', treeNode.id);
setAFilterName(treeNode[aTreeSetting.data.key.name]);
};
treeObj = $.fn.zTree.init(dialogElem.find('div[name="ztree"]'), aTreeSetting, aFilter);
// var nodes = treeObj.getNodes();
// treeObj.expandNode(nodes[0]);
treeObj.expandAll(true);
};
MsDialog.prototype.selectAFilter = function(value) {
var res = {};
for (var i in aData) {
if (!aData[i]) {
continue;
}
if (aData[i][aFilterKey] == value) {
res[i] = aData[i];
}
}
this.displayViewData(getViewA(), res);
};
MsDialog.prototype.setAData = function(data) {
aData = orderData(data);
for (var i in aData) {
if (bData[i]) {
aData[i] = null;
}
}
};
MsDialog.prototype.setBData = function(data) {
bData = orderData(data);
for (var i in aData) {
if (bData[i]) {
aData[i] = null;
}
}
this.displayViewData(dialogElem.find('ul[name="view-b"]'), bData);
};
MsDialog.prototype.displayViewData = function(container, data) {
var html = '';
if (nameFormatter) {
for (var i in data) {
html += '' + C.htmlEncode(nameFormatter(data[i])) + '';
}
} else {
for (var i in data) {
html += '' + C.htmlEncode(data[i][aNameKey]) + '';
}
}
container.empty().html(html);
};
MsDialog.prototype.viewAClick = function(e) {
var elem = $(e.target);
if (!elem.attr('uqid')) {
return false;
}
// B框不能多选
if (bItemMulti !== true) {
var bItems = getViewB().find('*[uqid]');
for (var i = 0, n = bItems.length; i < n; i ++) {
bItemToA(bItems.eq(i));
}
}
aItemToB(elem);
return false;
};
MsDialog.prototype.viewBClick = function(e) {
var elem = $(e.target);
if (!elem.attr('uqid')) {
return false;
}
bItemToA(elem);
return false;
};
context.msDialog = new MsDialog();
})(UI);
(function(UI) {
var dialogElem = null,
theads = ['主机名称', '主机IP', '主机帐户', '协议'],
placeholder = '',
title = '',
treeData = [],
treeValueKey = 'id',
treeNameKey = 'domain_name',
treeSetting = {
data: {
simpleData: {
enable: true,
idKey: 'id',
pIdKey: 'pid',
rootPid: 4
},
key: {
name: 'domain_name'
},
keep: {
parent: true
}
},
callback: {
onClick: function(event, treeid, treeNode) {
}
}
},
curPage = 1,
count = '',
callback = {
getData: null,
showData: showAccount,
event1: null
};
function initSetting() {
dialogElem = null;
theads = ['主机名称', '主机IP', '主机帐户', '协议'];
placeholder = '';
title = '';
treeData = [];
treeValueKey = 'id';
treeNameKey = 'domain_name';
treeSetting = {
data: {
simpleData: {
enable: true,
idKey: 'id',
pIdKey: 'pid',
rootPid: 4
},
key: {
name: 'domain_name'
},
keep: {
parent: true
}
},
callback: {
onClick: function(event, treeid, treeNode) {
}
}
};
curPage = 1;
count = '';
callback = {
getData: null,
showData: showAccount,
event1: null
};
}
function setSetting(settings) {
if (settings.callback.getData) {
callback.getData = settings.callback.getData;
}
if (settings.callback.event1) {
callback.event1 = settings.callback.event1;
}
if (settings.treeData) {
treeData = settings.treeData;
}
if (settings.treeSetting) {
treeSetting = settings.treeSetting;
}
if (settings.title) {
title = settings.title;
}
}
function getData() {
var params = {};
params.treeValue = getTreeValue();
params.search = C.getValue($('input[name="search"]'), dialogElem);
params.offset = UI.listOffset(curPage);
params.limit = UI.listLimit();
params.count = count;
var msg = callback.getData(params);
var table = $('table', dialogElem);
callback.showData(msg[0], table);
if (!msg[0].length) {
UI.showEmptyMsg(table);
} else {
UI.removeEmptyMsg(table);
}
count = msg[1];
$('div[data-name="table-pagination"]').uPagination({
totalPage: UI.listTotalPage(msg[1]),
curPage: curPage,
callback: getDataByPage
});
}
function getDataByPage(pageNum) {
curPage = pageNum;
getData();
}
function showAccount(rows, container) {
var html = '';
for (var i in rows) {
html += '';
html += '| ' + UI.checkerHtml() + ' | ';
html += '' + C.htmlEncode(rows[i].astname) + ' | ';
html += '' + C.htmlEncode(rows[i].ip) + ' | ';
html += '' + C.htmlEncode(rows[i].acctname) + ' | ';
html += '' + C.htmlEncode(rows[i].prot) + ' | ';
html += '
';
}
container.find('tbody').html(html);
}
function getTreeValue() {
var value = $('[data-name="tree-value"]', dialogElem).attr('data-value');
return value;
}
function setTreeValue(value, name) {
$('[data-name="tree-value"]', dialogElem).attr('data-value', value).html(C.htmlEncode(name));
}
var TableDialog = function() {};
TableDialog.prototype.show = function(settings) {
initSetting();
setSetting(settings);
if (!settings.html) {
settings.html = '\
\
\
\
\
\
\
\
\
\
| \
主机名称 | \
主机IP | \
主机帐户 | \
协议 | \
\
\
\
\
\
\
\
';
}
dialogElem = UI.dialog.create(settings.html);
if (title) {
dialogElem.find('h3').html(title);
}
for (var i in treeData) {
treeData[i]['isParent'] = true;
}
treeSetting.callback.onClick = function(event, treeid, treeNode) {
setTreeValue(treeNode[treeValueKey], treeNode[treeNameKey]);
curPage = 1;
count = '';
getData();
}
var treeObj = $.fn.zTree.init($('div[data-name="dialog-tree"]', dialogElem), treeSetting, treeData);
var nodes = treeObj.getNodes();
treeObj.expandNode(nodes[0]);
getData();
dialogElem.find('form').submit(function() {
curPage = 1;
count = '';
getData();
return false;
});
dialogElem.find('div[data-name="optype1"]').click(function() {
if (callback.event1) {
var values = UI.tableCheckedValue(dialogElem.find("table"));
var trs = UI.tableCheckedTr(dialogElem.find("table"));
if (values.length) {
callback.event1(values, trs);
}
}
});
return dialogElem;
};
UI.tDialog = new TableDialog();
})(UI);
(function(UI) {
var TableDialog = function(settings) {
this.type = '';
this.elem = null;
this.deptSelect = null;
this.roleSelect = null;
this.authmodeSelect = null;
this.title = '';
this.enableMulti = false; //是否支持多选
this.enableRoleSelect = true;
this.curPage = 1;
this.count = '';
this.callback = {
getData: null,
showData: null,
submit: null
};
this.keys = {
id: 'id'
}
this.roles = null;
if (typeof settings.roles !== 'undefined') {
this.roles = settings.roles;
}
this.data = [];
this.depts = null;
settings = settings || {};
if (settings.callback) {
if (settings.callback.getData) {
this.callback.getData = settings.callback.getData;
}
if (settings.callback.showData) {
this.callback.showData = settings.callback.showData;
}
if (settings.callback.submit) {
this.callback.submit = settings.callback.submit;
}
}
if (settings.keys) {
if (settings.keys.id) {
this.keys.id = settings.keys.id;
}
}
if (settings.title) {
this.title = settings.title;
}
if (typeof settings.enableMulti !== 'undefined') {
this.enableMulti = settings.enableMulti;
}
if (typeof settings.enableRoleSelect !== 'undefined') {
this.enableRoleSelect = settings.enableRoleSelect;
}
if (settings.depts) {
this.depts = settings.depts;
}
var html = '\
\
\
\
\
\
\
\
\
| \
\
\
| \
\
| \
\
| \
\
请选择部门 \
\
\
| \
\
\
\
\
\
\
\
\
';
this.elem = UI.dialog.create(html);
if ($('#_dept_status').val() !== '1') {
this.elem.find('[data-name="filter-dept"]').hide();
}
if (this.title) {
this.elem.find('h3').html(this.title);
}
if (this.enableMulti) {
this.elem.find('.modal-footer').remove();
} else {
this.elem.find('[data-name="multi-toolbar"]').remove();
}
var _this = this;
function reloadData() {
_this.curPage = 1;
_this.count = '';
_this.getData();
}
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
if (_this.enableRoleSelect) {
_this.roleSelect = UI.roleDropSelect(_this.elem.find('[data-name="filter-role"]'), {size: 'full', data: _this.roles, callback: reloadData});
}
_this.authmodeSelect = UI.authmodeSelect(_this.elem.find('[data-name="filter-authmode"]'), {size: 'full',callback: reloadData});
_this.elem.find('[data-name="form-search-user"]').submit(function() {
reloadData();
return false;
});
_this.elem.find('[data-name="clear-filter"]').click(function() {
_this.elem.find('[data-name="searchUser"]').val('');
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
if (_this.enableRoleSelect) {
_this.roleSelect = UI.roleDropSelect(_this.elem.find('[data-name="filter-role"]'), {size: 'full', data: _this.roles, callback: reloadData});
}
_this.authmodeSelect = UI.authmodeSelect(_this.elem.find('[data-name="filter-authmode"]'), {size: 'full',callback: reloadData});
reloadData();
});
_this.getData();
_this.elem.find('[data-optype="submit"]').click(function() {
if (_this.callback.submit) {
var values = [];
if (_this.enableMulti) {
// 多选
values = UI.tableCheckedValue(_this.elem.find("table"));
} else {
// 单选
values = UI.tableRadioValue(_this.elem.find("table"));
}
if (values.length) {
var users = [];
for (var i in values) {
users.push(_this.data[values[i]]);
}
_this.callback.submit(users);
_this.close();
} else {
UI.dialog.showErrorMsg('请选择用户', _this.elem);
}
}
return false;
});
};
TableDialog.prototype.getData = function() {
var _this = this;
var params = {};
params.search = C.getValue(_this.elem.find('[data-name="searchUser"]'));
params.deptid = _this.deptSelect ? _this.deptSelect.get()[0] : '';
params.roleid = _this.roleSelect ? _this.roleSelect.get()[0] : '';
params.authmode = _this.authmodeSelect ? _this.authmodeSelect.get()[0] : '';
params.offset = UI.listOffset(_this.curPage);
params.limit = UI.listLimit();
params.count = _this.count;
var getData = _this.getDataDefault;
if (_this.callback.getData) {
getData = _this.callback.getData;
}
var msg = getData(params);
_this.data = {};
for (var i in msg[0]) {
_this.data[String(msg[0][i]['id'])] = msg[0][i];
}
var table = $('table', _this.elem);
if (_this.callback.showData) {
_this.callback.showData(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
} else {
_this.showUserList(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
}
if (!msg[0].length) {
var msg1 = '暂无用户数据';
var msg2 = '创建用户';
var url = '/index.php/user/user';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else {
UI.removeEmptyMsg(table);
}
_this.count = msg[1];
$('[data-name="pagination"]', _this.elem).uPagination({
totalPage: UI.listTotalPage(msg[1]),
curPage: _this.curPage,
callback: function(pageNum) {
_this.curPage = pageNum;
_this.getData();
}
});
};
TableDialog.prototype.getDataDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/user/user/user_list_my', params, [[], 0]);
return res;
};
TableDialog.prototype.showUserList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableuser') + ' | ';
}
html += '' + C.htmlEncode(rows[i].uname) + '' + C.htmlEncode(rows[i].name) + ' | ';
html += '' + C.htmlEncode(rows[i].rolename) + ' | ';
html += '' + AC.getUserAuthmodeNameByValue(rows[i].authmode) + ' | ';
if ($('#_dept_status').val() === '1') {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.close = function() {
UI.dialog.close();
};
UI.userTDialog = function(settings) {
var dialog = new TableDialog(settings);
return dialog;
};
})(UI);
(function(UI) {
var AccountDialog = function(settings) {
this.elem = null;
this.vpcSelect = null;
this.deptSelect = null;
this.protSelect = null;
this.protSelectData = null;
this.typeSelect = null;
this.title = '';
this.enableMulti = true; //是否支持多选
this.showAccoutTypeSelect = false;//是否支持帐户类型选择
this.curPage = 1;
this.count = '';
this.callback = {
getData: null,
showData: null,
submit: null
};
this.keys = {
id: 'id'
}
this.depts = null;
this.data = [];
settings = settings || {};
if (settings.callback) {
if (settings.callback.getData) {
this.callback.getData = settings.callback.getData;
}
if (settings.callback.showData) {
this.callback.showData = settings.callback.showData;
}
if (settings.callback.submit) {
this.callback.submit = settings.callback.submit;
}
}
if (settings.keys) {
if (settings.keys.id) {
this.keys.id = settings.keys.id;
}
}
if (settings.title) {
this.title = settings.title;
}
if (typeof settings.enableMulti !== 'undefined') {
this.enableMulti = settings.enableMulti;
}
if (settings.depts) {
this.depts = settings.depts;
}
if (settings.protSelectData) {
this.protSelectData = settings.protSelectData;
}
if (typeof settings.showAccoutTypeSelect !== 'undefined') {
this.showAccoutTypeSelect = settings.showAccoutTypeSelect;
}
var html = '\
\
\
\
\
\
\
\
\
| \
\
\
| \
\
\
| \
\
请选择协议 \
\
\
| ';
if ($('#_feature_vpc').val() === '1') {
html += '\
\
| ';
}
html += '\
\
| \
\
\
\
\
\
\
\
';
this.elem = UI.dialog.create(html);
if ($('#_dept_status').val() !== '1') {
this.elem.find('[data-name="filter-dept"]').hide();
}
if (!this.showAccoutTypeSelect) {
this.elem.find('[data-name="filter-type"]').hide();
}
if (this.title) {
this.elem.find('h3').html(this.title);
}
var _this = this;
function reloadData() {
_this.curPage = 1;
_this.count = '';
_this.getData();
}
if ($('#_feature_vpc').val() === '1') {
_this.vpcSelect = UI.assetVpcSelect(_this.elem.find('[data-name="filter-vpc"]'), {size: 'full', callback: reloadData});
}
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
_this.protSelect = UI.protSelect(_this.elem.find('[data-name="filter-prot"]'), {size: 'full', protids: _this.protSelectData, callback: reloadData});
_this.typeSelect = UI.accountTypeSelect(_this.elem.find('[data-name="filter-type"]'), {size: 'full', callback: reloadData});
_this.elem.find('[data-name="form-search"]').submit(function() {
reloadData();
return false;
});
_this.elem.find('[data-name="clear-filter"]').click(function() {
_this.elem.find('[data-name="search"]').val('');
if ($('#_feature_vpc').val() === '1') {
_this.vpcSelect = UI.assetVpcSelect(_this.elem.find('[data-name="filter-vpc"]'), {size: 'full', callback: reloadData});
}
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
_this.protSelect = UI.protSelect(_this.elem.find('[data-name="filter-prot"]'), {size: 'full', protids: _this.protSelectData, callback: reloadData});
_this.typeSelect = UI.accountTypeSelect(_this.elem.find('[data-name="filter-type"]'), {size: 'full', callback: reloadData});
reloadData();
});
_this.getData();
_this.elem.find('[data-optype="submit"]').click(function() {
if (_this.callback.submit) {
var values = [];
if (_this.enableMulti) {
// 多选
values = UI.tableCheckedValue(_this.elem.find("table"));
} else {
// 单选
values = UI.tableRadioValue(_this.elem.find("table"));
}
if (values.length) {
var selected = [];
for (var i in values) {
selected.push(_this.data[values[i]]);
}
_this.callback.submit(selected);
_this.close();
} else {
UI.dialog.showErrorMsg('请选择帐户', _this.elem);
}
}
return false;
});
};
AccountDialog.prototype.getData = function() {
var _this = this;
var params = {};
params.search = C.getValue(_this.elem.find('[data-name="search"]'));
params.vpcid = _this.vpcSelect ? _this.vpcSelect.get()[0] : '';
params.deptid = _this.deptSelect ? _this.deptSelect.get()[0] : '';
params.protid = _this.protSelect ? _this.protSelect.get()[0] : '';
params.account_type = _this.typeSelect ? _this.typeSelect.get()[0] : '';
params.offset = UI.listOffset(_this.curPage);
params.limit = UI.listLimit();
params.count = _this.count;
var role = $('#sj89asd0z').val();
var getData = _this.getDataDefault;
if (_this.callback.getData) {
getData = _this.callback.getData;
}
var msg = getData(params);
_this.data = {};
for (var i in msg[0]) {
_this.data[String(msg[0][i]['id'])] = msg[0][i];
}
var table = $('table', _this.elem);
if (_this.callback.showData) {
_this.callback.showData(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
} else {
_this.showAccountList(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
}
if (!msg[0].length) {
if (role == rolesId.superAdmin || role == rolesId.departmentAdmin || role == rolesId.operatorAdmin) {
var msg1 = '暂无帐户数据';
var msg2 = '创建主机及帐户';
var url = '/index.php/asset/asset';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
}
} else {
UI.removeEmptyMsg(table);
}
_this.count = msg[1];
$('[data-name="pagination"]', _this.elem).uPagination({
totalPage: UI.listTotalPage(msg[1]),
curPage: _this.curPage,
callback: function(pageNum) {
_this.curPage = pageNum;
_this.getData();
}
});
};
// AccountDialog.prototype.getDataDefault = function(params) {
// };
AccountDialog.prototype.showAccountList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableaccount') + ' | ';
}
html += '';
html += C.htmlEncode(rows[i].ip) + '' + C.htmlEncode(rows[i].astname) + ' | ';
if (rows[i].protid != Globals.oracleProtid) {
html += '' + C.htmlEncode(rows[i].acctname);
} else {
html += ' | ' + C.htmlEncode(rows[i].acctname + ' ' + rows[i].loginattr + ':' + rows[i].servicename + ' as ' + rows[i].role);
}
if (rows[i].account_type === 'shared') {
html += '' + C.htmlEncode(rows[i].shared_name) + ' | ';
} else {
html += '';
}
if (this.showAccoutTypeSelect) {
if (rows[i].account_type === 'private') {
html += '主机帐户 | ';
} else if (rows[i].account_type === 'shared') {
html += '共享帐户 | ';
} else {
html += ' | ';
}
} else {
html += ' | ';
}
html += '' + C.htmlEncode(rows[i].prot) + ' | ';
if ($('#_feature_vpc').val() === '1') {
html += '' + C.htmlEncode(rows[i].vpcname) + ' | ';
}
if ($('#_dept_status').val() === '1') {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
AccountDialog.prototype.close = function() {
UI.dialog.close();
};
UI.accountTDialog = function(settings) {
var dialog = new AccountDialog(settings);
return dialog;
};
})(UI);
(function(UI) {
var TableDialog = function(settings) {
this.type = 'asset'; // asset || acctgroup || app || ugroup || astgroup || sharedaccount
this.elem = null;
this.deptSelect = null;
this.accountSelect = null;
this.protSelect = null;
this.osSelect = null;
this.authtypeSelect = null;
this.title = '';
this.enableMulti = false; //是否支持多选
this.showDept = true;
this.curPage = 1;
this.count = '';
this.callback = {
getData: null,
showData: null,
submit: null
};
this.keys = {
id: 'id'
}
this.depts = null;
this.vpcs = null;
this.oss = null;
this.data = [];
settings = settings || {};
if (settings.type) {
this.type = settings.type;
}
if (settings.callback) {
if (settings.callback.getData) {
this.callback.getData = settings.callback.getData;
}
if (settings.callback.showData) {
this.callback.showData = settings.callback.showData;
}
if (settings.callback.submit) {
this.callback.submit = settings.callback.submit;
}
}
if (settings.keys) {
if (settings.keys.id) {
this.keys.id = settings.keys.id;
}
}
// set default title
if (this.type == 'asset') {
this.title = '选择主机';
} else if (this.type == 'acctgroup') {
this.title = '选择帐户组';
} else if (this.type == 'app') {
this.title = '选择应用';
} else if (this.type == 'ugroup') {
this.title = '选择用户组';
} else if (this.type == 'astgroup') {
this.title = '选择主机组';
} else if (this.type == 'sharedaccount') {
this.title = '选择共享帐户';
}
if (settings.title) {
this.title = settings.title;
}
if (typeof settings.enableMulti !== 'undefined') {
this.enableMulti = settings.enableMulti;
}
if (typeof settings.showDept !== 'undefined') {
this.showDept = settings.showDept;
}
if (settings.depts) {
this.depts = settings.depts;
}
if (settings.vpcs) {
this.vpcs = settings.vpcs;
}
if (settings.oss) {
this.oss = settings.oss;
}
var html = '\
\
\
\
\
\
\
\
\
| ';
if (this.type == 'sharedaccount') {
html += '';
} else {
html += ' | ';
}
html += '\
| ';
if (this.type == 'asset') {
html += ' | ';
if ($('#_feature_vpc').val() === '1') {
html += ' | ';
}
} else if (this.type == 'sharedaccount') {
html += ' | ';
html += ' | ';
}
html += '\
\
| \
\
\
\
\
\
\
\
\
';
this.elem = UI.dialog.create(html);
if (($('#_dept_status').val() !== '1' && this.type !== 'app') || !this.showDept) {
this.elem.find('[data-name="filter-dept"]').hide();
}
if (this.type == 'app') {
$(' | ').insertBefore(this.elem.find('form[data-name="form-search"]').parents('td'));
}
if (this.title) {
this.elem.find('h3').html(this.title);
}
if (this.enableMulti) {
this.elem.find('.modal-footer').remove();
} else {
this.elem.find('[data-name="multi-toolbar"]').remove();
}
if (this.type == 'acctgroup') {
this.elem.find('[data-name="search"]').attr('placeholder', '搜索帐户组名称');
} else if (this.type == 'app') {
this.elem.find('[data-name="search"]').attr('placeholder', '搜索应用名称');
} else if (this.type == 'ugroup') {
this.elem.find('[data-name="search"]').attr('placeholder', '搜索用户组名称');
} else if (this.type == 'astgroup') {
this.elem.find('[data-name="search"]').attr('placeholder', '搜索主机组名称');
} else if (this.type == 'sharedaccount') {
this.elem.find('[data-name="search"]').attr('placeholder', '搜索共享帐户名称/登录名');
}
var _this = this;
function reloadData() {
_this.curPage = 1;
_this.count = '';
_this.getData();
}
if (_this.type == 'app') {
_this.accountSelect = UI.appAccountSelect(_this.elem.find('[data-name="filter-dept"]'), {callback: reloadData});
} else {
if (_this.showDept) {
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
}
}
if (_this.type == 'asset') {
if ($('#_feature_vpc').val() === '1') {
_this.vpcSelect = UI.assetVpcSelect(_this.elem.find('[data-name="filter-vpc"]'), {size: 'full', callback: reloadData, data: _this.vpcs});
}
_this.osSelect = UI.assetOsSelect(_this.elem.find('[data-name="filter-os"]'), {size: 'full', callback: reloadData, data: _this.oss});
}
function sharedAccountSelectInit() {
if (_this.type == 'sharedaccount') {
_this.protSelect = UI.protSelect(_this.elem.find('[data-name="filter-prot"]'), {
size: 'full',
callback: reloadData,
protids: AC.getAllSharedAccountProtocolIds(),
});
_this.authtypeSelect = UI.authtypeSelect(_this.elem.find('[data-name="filter-authtype"]'), {
size: 'full',
callback: reloadData
});
}
}
sharedAccountSelectInit();
_this.elem.find('[data-name="form-search"]').submit(function() {
reloadData();
return false;
});
_this.elem.find('[data-name="clear-filter"]').click(function() {
_this.elem.find('[data-name="search"]').val('');
if (_this.type == 'app') {
_this.accountSelect = UI.appAccountSelect(_this.elem.find('[data-name="filter-dept"]'), {callback: reloadData});
} else {
_this.deptSelect = UI.deptDropTree(_this.elem.find('[data-name="filter-dept"]'), {size: 'full', callback: reloadData, data: _this.depts});
}
if (_this.type == 'asset') {
_this.vpcSelect = UI.assetVpcSelect(_this.elem.find('[data-name="filter-vpc"]'), {size: 'full', callback: reloadData, data: _this.vpcs});
_this.osSelect = UI.assetOsSelect(_this.elem.find('[data-name="filter-os"]'), {size: 'full', callback: reloadData, data: _this.oss});
}
sharedAccountSelectInit();
reloadData();
});
_this.getData();
_this.elem.find('[data-optype="submit"]').click(function() {
if (_this.callback.submit) {
var values = [];
if (_this.enableMulti) {
// 多选
values = UI.tableCheckedValue(_this.elem.find("table"));
} else {
// 单选
values = UI.tableRadioValue(_this.elem.find("table"));
}
if (values.length) {
var selected = [];
for (var i in values) {
selected.push(_this.data[values[i]]);
}
_this.callback.submit(selected);
_this.close();
} else {
if (_this.type == 'acctgroup') {
UI.dialog.showErrorMsg('请选择帐户组', _this.elem);
} else if (_this.type == 'app') {
UI.dialog.showErrorMsg('请选择应用', _this.elem);
} else if (_this.type == 'asset'){
UI.dialog.showErrorMsg('请选择主机', _this.elem);
} else if (_this.type == 'ugroup'){
UI.dialog.showErrorMsg('请选择用户组', _this.elem);
} else if (_this.type == 'astgroup'){
UI.dialog.showErrorMsg('请选择主机组', _this.elem);
} else if (_this.type == 'sharedaccount'){
UI.dialog.showErrorMsg('请选择共享帐户', _this.elem);
}
}
}
return false;
});
};
TableDialog.prototype.getData = function() {
var _this = this;
var params = {};
params.search = C.getValue(_this.elem.find('[data-name="search"]'));
params.deptid = _this.deptSelect ? _this.deptSelect.get()[0] : '';
params.vpcid = _this.vpcSelect ? _this.vpcSelect.get()[0] : '';
params.acctid = _this.accountSelect ? _this.accountSelect.get()[0] : '';
params.protid = _this.protSelect ? _this.protSelect.get()[0] : '';
params.osid = _this.osSelect ? _this.osSelect.get()[0] : '';
params.authtype = this.authtypeSelect ? _this.authtypeSelect.get()[0] : '';
params.offset = UI.listOffset(_this.curPage);
params.limit = UI.listLimit();
params.count = _this.count;
var role = $('#sj89asd0z').val();
var msg;
if (_this.callback.getData) {
msg = _this.callback.getData(params);
} else {
msg = _this.getDataDefault(params);
}
_this.data = {};
for (var i in msg[0]) {
_this.data[String(msg[0][i]['id'])] = msg[0][i];
}
var table = $('table', _this.elem);
if (_this.callback.showData) {
_this.callback.showData(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
} else {
_this.showData(msg[0], table);
UI.resetContainer(table.siblings('.toolbar'));
}
if (!msg[0].length) {
if (_this.type == 'ugroup') {
var msg1 = '暂无用户组数据';
var msg2 = '创建用户组';
var url = '/index.php/user/ugroup';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else if (_this.type == 'acctgroup') {
var msg1 = '暂无帐户组数据';
var msg2 = '创建帐户组';
var url = '/index.php/asset/account';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else if (this.type == 'astgroup') {
var msg1 = '暂无主机组数据';
var msg2 = '创建主机组';
var url = '/index.php/asset/group';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else if (this.type == 'app' && (role == rolesId.superAdmin || role == rolesId.departmentAdmin || role == rolesId.operatorAdmin)) {
var msg1 = '暂无应用数据';
var msg2 = '创建应用';
var url = '/index.php/asset/app';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else if (this.type == 'asset' && (role == rolesId.superAdmin || role == rolesId.departmentAdmin || role == rolesId.operatorAdmin)) {
var msg1 = '暂无主机数据';
var msg2 = '创建主机及帐户';
var url = '/index.php/asset/asset';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
} else if (this.type == 'sharedaccount' && (role == rolesId.superAdmin || role == rolesId.departmentAdmin || role == rolesId.operatorAdmin)) {
var msg1 = '暂无共享帐户数据';
var msg2 = '创建共享帐户';
var url = '/index.php/asset/sharedaccount';
UI.showEmptyMsg(table, UI.msgFormatter(msg1, msg2, url));
}
} else {
UI.removeEmptyMsg(table);
}
_this.count = msg[1];
$('[data-name="pagination"]', _this.elem).uPagination({
totalPage: UI.listTotalPage(msg[1]),
curPage: _this.curPage,
callback: function(pageNum) {
_this.curPage = pageNum;
_this.getData();
}
});
};
TableDialog.prototype.getDataDefault = function(params) {
if (this.type == 'asset') {
return this.getAssetDefault(params);
} else if (this.type == 'acctgroup') {
return this.getAccountGroupDefault(params);
} else if (this.type == 'app') {
return this.getAppDefault(params);
} else if (this.type == 'ugroup') {
return this.getUgroupDefault(params);
} else if (this.type == 'astgroup') {
return this.getAssetGroupDefault(params);
} else if (this.type == 'sharedaccount') {
return this.getSharedAccountDefault(params);
} else {
return [[], 0];
}
};
TableDialog.prototype.getAssetDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/common/asset_list', params, [[], 0]);
return res;
};
TableDialog.prototype.getAccountGroupDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/asset/account/group_list', params, [[], 0]);
return res;
};
TableDialog.prototype.getAppDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/asset/app/app_list', params, [[], 0]);
return res;
};
TableDialog.prototype.getUgroupDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/user/ugroup/group_list', params, [[], 0]);
return res;
};
TableDialog.prototype.getAssetGroupDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/asset/group/group_list', params, [[], 0]);
return res;
};
TableDialog.prototype.getSharedAccountDefault = function(params) {
var res = AC.getObjectFromUrl('/index.php/asset/sharedaccount/get_account_list', params, [[], 0]);
return res;
};
TableDialog.prototype.showData = function(rows, container) {
if (this.type == 'asset') {
this.showAssetList(rows, container);
} else if (this.type == 'acctgroup') {
this.showAccountGroupList(rows, container);
} else if (this.type == 'app') {
this.showAppList(rows, container);
} else if (this.type == 'ugroup') {
this.showUgroupList(rows, container);
} else if (this.type == 'astgroup') {
this.showAssetGroupList(rows, container);
} else if (this.type == 'sharedaccount') {
this.showSharedAccountList(rows, container);
}
};
TableDialog.prototype.showAssetList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += '';
html += C.htmlEncode(rows[i].ip) + '' + C.htmlEncode(rows[i].astname) + ' | ';
html += '' + C.htmlEncode(rows[i].minor) + ' | ';
if ($('#_feature_vpc').val() === '1') {
html += '' + C.htmlEncode(rows[i].vpcname) + ' | ';
}
if ($('#_dept_status').val() === '1' && this.showDept) {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.showAccountGroupList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += '' + C.htmlEncode(rows[i].name) + ' | ';
if ($('#_dept_status').val() === '1' && this.showDept) {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.showAppList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += ' | ';
html += '' + C.htmlEncode(rows[i].appname) + ' | ';
if (rows[i].acctname || rows[i].astname) {
html += '' + C.htmlEncode(rows[i].acctname) + '@' + C.htmlEncode(rows[i].astname) + ' | ';
} else {
html += ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.showUgroupList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += '' + C.htmlEncode(rows[i].groupname) + ' | ';
if ($('#_dept_status').val() === '1' && this.showDept) {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.showAssetGroupList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += '' + C.htmlEncode(rows[i].groupname) + ' | ';
if ($('#_dept_status').val() === '1' && this.showDept) {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.showSharedAccountList = function(rows, container) {
var html = '';
for (var i in rows) {
html += '';
if (this.enableMulti) {
html += '| ' + UI.checkerHtml() + ' | ';
} else {
html += '' + UI.radioHtml(rows[i].id, 'tableasset') + ' | ';
}
html += '' + C.htmlEncode(rows[i].name) + ' | ';
html += '' + C.htmlEncode(rows[i].acctname) + ' | ';
html += '' + AC.getAllProtocol()[rows[i].protid] + ' | ';
if (rows[i].authtype == 'password') {
html += '密码'
} else if (rows[i].authtype == 'privatekey') {
html += ' | 密钥'
}
if ($('#_dept_status').val() === '1' && this.showDept) {
html += ' | ' + C.htmlEncode(rows[i].deptname) + ' | ';
} else {
html += '' + C.htmlEncode(rows[i].deptname) + ' | ';
}
html += '
';
}
container.find('tbody').html(html);
};
TableDialog.prototype.close = function() {
UI.dialog.close();
};
UI.tableDialog = function(settings) {
var dialog = new TableDialog(settings);
return dialog;
};
})(UI);
(function(UI) {
var DropSearch = function(elem, data, settings) {
this.elem = null;
this.data = [];
this.title = '请选择';
this.value = '';
this.name = '';
this.nameFormatter = null;
this.enableClear = true;
this.callback = {
select: null,
search: null
};
this.keys = {
search: [],
value: '',
name: ''
};
this.elem = elem || this.elem;
settings = settings || {};
if (settings.callback) {
if (settings.callback.search) {
this.callback.search = settings.callback.search;
}
if (settings.callback.select) {
this.callback.select = settings.callback.select;
}
}
if (settings.keys) {
if (settings.keys.search) {
this.keys.search = settings.keys.search;
}
if (settings.keys.value) {
this.keys.value = settings.keys.value;
}
if (settings.keys.name) {
this.keys.name = settings.keys.name;
}
}
if (settings.title) {
this.title = settings.title;
}
if (settings.nameFormatter) {
this.nameFormatter = settings.nameFormatter;
}
if (settings.enableClear !== undefined) {
this.enableClear = settings.enableClear;
}
if (!this.elem.length) {
return;
}
var html = '\
';
if (this.enableClear) {
html += '×
';
}
this.elem.html(html);
this.elem.find('[data-selected]').text(this.title);
this.setData(data);
var _this = this;
this.elem.find('input[data-search]').keyup(function(e) {
AC.delay(function() {
_this.searchHandler(e);
});
}).keydown(function(e){
// Prevent parent form from being submitted
if (e.keyCode == 13) {
return false;
}
});
this.elem.find('[data-optype="clear-search"]').click(function(e) {
_this.elem.find('input[data-search]').val('').keyup();
});
this.elem.find('[data-optype="clear-select"]').click(function(e) {
_this.value = '';
_this.name = '';
_this.elem.find('[data-selected]').html(C.htmlEncode(_this.title)).attr('data-selected', _this.value);
if (_this.callback.select) {
_this.callback.select();
}
});
this.elem.find('[data-list]').click(function(e) {
_this.selectHandler(e);
});
};
DropSearch.prototype.selectHandler = function(e) {
var target = $(e.target);
var value = target.attr('data-value');
var name = target.attr('data-name');
if (value !== undefined) {
var _this = this;
_this.value = value;
_this.name = name;
_this.elem.find('[data-selected]').html(C.htmlEncode(name)).attr('data-selected', value);
if (_this.callback.select) {
_this.callback.select();
}
}
};
DropSearch.prototype.searchHandler = function(e) {
var _this = this;
var search = C.getValue($(e.target));
var res = _this.searchData(search);
_this.showData(res);
};
DropSearch.prototype.showData = function(data) {
var html = '';
if (this.nameFormatter) {
for (var i in data) {
html += '';
html += C.htmlEncode(this.nameFormatter(data[i])) + '
';
}
} else {
for (var i in data) {
html += '';
html += C.htmlEncode(data[i][this.keys.name]) + '
';
}
}
this.elem.find('[data-list]').html(html);
};
DropSearch.prototype.searchData = function(search) {
var res = [];
for (var i in this.data) {
for (var j in this.keys.search) {
if (this.data[i][this.keys.search[j]] && this.data[i][this.keys.search[j]].toUpperCase().indexOf(search.toUpperCase()) != -1) {
res.push(this.data[i]);
break;
}
}
}
return res;
};
DropSearch.prototype.get = function() {
res = [this.value, this.name];
return res;
};
DropSearch.prototype.setData = function(data) {
if (data) {
this.data = data;
}
this.showData(this.data);
};
UI.DropSearch = function(elem, data, settings) {
var dropSearch = new DropSearch(elem, data, settings);
return dropSearch;
};
})(UI);
(function(UI) {
var DropTree = function(elem, data, settings) {
this.elem = null;
this.data = [];
this.title = '按部门过滤';
this.value = '';
this.name = '';
this.treeObj = null;
this.treeId = 'droptree-1';
this.size = null;
this.help = '';
this.enableSelect = true;
this.callback = {
select: null
};
this.keys = {
value: '',
name: 'name',
id: 'id',
pid: 'pid'
};
this.elem = elem || this.elem;
settings = settings || {};
if (settings.callback) {
if (settings.callback.select) {
this.callback.select = settings.callback.select;
}
}
if (settings.keys) {
if (settings.keys.name) {
this.keys.name = settings.keys.name;
}
if (settings.keys.id) {
this.keys.id = settings.keys.id;
}
if (settings.keys.pid) {
this.keys.pid = settings.keys.pid;
}
}
if (settings.title) {
this.title = settings.title;
}
if (settings.size) {
this.size = settings.size;
}
if (settings.help) {
this.help = settings.help;
}
if (settings.treeId) {
this.treeId = settings.treeId;
}
if (typeof settings.enableSelect !== 'undefined') {
this.enableSelect = settings.enableSelect;
}
if (!this.elem.length) {
return;
}
var html = '';
if (this.help) {
html += ' '+ C.htmlEncode(this.help) +'
';
}
this.elem.html(html);
if (this.enableSelect) {
this.elem.find('.btn-group').addClass('select').addClass('dropdown');
}
if (this.help) {
this.elem.find('.btn-group').css('margin-right', '15px');
}
if (this.size) {
this.elem.find('.btn-group').addClass(this.size);
}
this.elem.find('[data-tree]').attr('id', this.treeId);
this.elem.find('[data-selected]').text(this.title);
this.setData(data);
};
DropTree.prototype.showData = function(data) {
var _this = this;
for (var i in data) {
data[i]['isParent'] = true;
}
var setting = {
data: {
simpleData: {
enable: true,
idKey: _this.keys.id,
pIdKey: _this.keys.pid
},
key: {
name: _this.keys.name
},
keep: {
parent: false
}
},
callback: {
onClick: function(event, treeId, treeNode) {
_this.selectNode(treeNode);
if (_this.callback.select) {
_this.callback.select();
}
}
}
};
_this.treeObj = $.fn.zTree.init(_this.elem.find('[data-tree]'), setting, data);
var nodes = _this.treeObj.getNodes();
_this.treeObj.expandNode(nodes[0]);
};
DropTree.prototype.get = function() {
res = [this.value, this.name];
return res;
};
DropTree.prototype.setData = function(data) {
if (data) {
this.data = data;
}
this.showData(this.data);
};
DropTree.prototype.selectById = function(id) {
var node = this.treeObj.getNodesByParam('id', id)[0];
if (node) {
this.treeObj.selectNode(node);
this.selectNode(node);
}
};
DropTree.prototype.selectNode = function(treeNode) {
var _this = this;
_this.value = treeNode[_this.keys.id];
_this.name = treeNode[_this.keys.name];
if (_this.enableSelect) {
_this.elem.find('[data-selected]').attr('data-selected', _this.value).text(_this.name);
}
};
DropTree.prototype.reset = function() {
var _this = this;
_this.value = ''
_this.name = _this.title;
_this.elem.find('[data-selected]').attr('data-selected', _this.value).text(_this.name);
};
DropTree.prototype.setDisabled = function() {
if (!this.elem.find('[data-toggle="dropdown"]').hasClass('disabled')) {
this.elem.find('[data-toggle="dropdown"]').addClass('disabled');
}
};
UI.DropTree = function(elem, data, settings) {
var dropTree = new DropTree(elem, data, settings);
return dropTree;
};
})(UI);
(function(UI) {
var DropSelect = function(elem, data, settings) {
this.elem = null;
this.data = [];
this.title = '请选择';
this.value = '';
this.name = '';
this.nameFormatter = null;
this.enableItemAll = true;
this.enableCount = true;
this.changeTitleOnSelect = true;
this.size = null;
this.callback = {
select: null
};
this.keys = {
value: 'id',
name: 'name',
number: ''
};
this.elem = elem || this.elem;
settings = settings || {};
if (settings.callback) {
if (settings.callback.select) {
this.callback.select = settings.callback.select;
}
}
if (settings.keys) {
if (settings.keys.value) {
this.keys.value = settings.keys.value;
}
if (settings.keys.name) {
this.keys.name = settings.keys.name;
}
if (settings.keys.number) {
this.keys.number = settings.keys.number;
}
}
if (settings.title) {
this.title = settings.title;
}
if (typeof settings.enableItemAll !== 'undefined') {
this.enableItemAll = settings.enableItemAll;
}
if (typeof settings.enableCount !== 'undefined') {
this.enableCount = settings.enableCount;
}
if (typeof settings.changeTitleOnSelect !== 'undefined') {
this.changeTitleOnSelect = settings.changeTitleOnSelect;
}
if (settings.nameFormatter) {
this.nameFormatter = settings.nameFormatter;
}
if (settings.size) {
this.size = settings.size;
}
if (!this.elem.length) {
return;
}
var html = '';
this.elem.html(html);
if (this.size) {
this.elem.find('.select').addClass(this.size);
}
if (!this.enableCount) {
this.elem.find('[data-list]').removeClass('count');
}
this.elem.find('[data-selected]').text(this.title);
this.setData(data);
var _this = this;
this.elem.find('[data-list]').click(function(e) {
_this.selectHandler(e);
});
};
DropSelect.prototype.selectHandler = function(e) {
var target = $(e.target).parents('li').find('div');
var value = target.attr('data-value');
var name = target.attr('data-name');
if (value !== undefined) {
var _this = this;
_this.value = value;
_this.name = name;
if (_this.callback.select) {
_this.callback.select();
}
if (_this.changeTitleOnSelect) {
_this.elem.find('[data-selected]').html(C.htmlEncode(name)).attr('data-selected', value);
}
}
};
DropSelect.prototype.changeById = function(id) {
var target = this.elem.find('[data-list]').find('[data-value="' + C.htmlEncode(id) + '"]');
var value = target.attr('data-value');
var name = target.attr('data-name');
if (value !== undefined) {
var _this = this;
_this.value = value;
_this.name = name;
_this.elem.find('[data-selected]').html(C.htmlEncode(name)).attr('data-selected', value);
}
};
DropSelect.prototype.showData = function(data) {
var html = '';
for (var i in data) {
if (C.emptyObject(data[i])) {
html += '';
continue;
}
html += '';
html += (this.nameFormatter ? this.nameFormatter(data[i]) : C.htmlEncode(data[i][this.keys.name]));
html += '';
if (this.enableCount) {
html += '' + (this.keys.number ? C.htmlEncode(data[i][this.keys.number]) : '') + '';
}
html += '
';
}
if (html && this.enableItemAll) {
html = '' + '全部' + '
' + html;
}
this.elem.find('[data-list]').html(html);
};
DropSelect.prototype.get = function() {
res = [this.value, this.name];
return res;
};
DropSelect.prototype.setData = function(data) {
if (data) {
this.data = data;
}
this.showData(this.data);
};
UI.DropSelect = function(elem, data, settings) {
var dropSelect = new DropSelect(elem, data, settings);
return dropSelect;
};
})(UI);
(function(UI) {
var DropGroupSelect = function(elem, data, settings) {
this.elem = null;
this.data = [];
this.value = '';
this.name = '';
this.enableItemAll = true;
this.size = null;
this.callback = {
select: null
};
this.keys = {
groupname: 'name',
list: 'list',
value: 'id',
name: 'name'
};
this.elem = elem || this.elem;
settings = settings || {};
if (settings.callback) {
if (settings.callback.select) {
this.callback.select = settings.callback.select;
}
}
if (settings.keys) {
if (settings.keys.groupname) {
this.keys.groupname = settings.keys.groupname;
}
if (settings.keys.list) {
this.keys.list = settings.keys.list;
}
if (settings.keys.value) {
this.keys.value = settings.keys.value;
}
if (settings.keys.name) {
this.keys.name = settings.keys.name;
}
}
if (typeof settings.enableItemAll !== 'undefined') {
this.enableItemAll = settings.enableItemAll;
}
if (settings.size) {
this.size = settings.size;
}
if (!this.elem.length) {
return;
}
var html = '';
this.elem.html(html);
if (this.size) {
this.elem.find('.select').addClass(this.size);
}
this.setData(data);
var _this = this;
this.elem.find('[data-list]').click(function(e) {
_this.selectHandler(e);
});
};
DropGroupSelect.prototype.selectHandler = function(e) {
if ($(e.target).hasClass('unclickTitle') || $(e.target).parents('li').hasClass('unclickTitle')) {
return false;
}
var target = $(e.target).parents('li').find('div');
var value = target.attr('data-value');
var name = target.attr('data-name');
var _this = this;
if (value !== undefined) {
_this.value = value;
_this.name = name;
}
if (_this.callback.select) {
_this.callback.select();
}
_this.elem.find('[data-selected]').html(C.htmlEncode(name)).attr('data-selected', value);
};
DropGroupSelect.prototype.changeById = function(id) {
var target = this.elem.find('[data-list]').find('[data-value="' + C.htmlEncode(id) + '"]');
var value = target.attr('data-value');
var name = target.attr('data-name');
if (value !== undefined) {
var _this = this;
_this.value = value;
_this.name = name;
_this.elem.find('[data-selected]').html(C.htmlEncode(name)).attr('data-selected', value);
}
};
DropGroupSelect.prototype.showData = function(data) {
var html = '';
for (var i in data) {
html += '';
html += '' + C.htmlEncode(data[i][this.keys.groupname]) + '
';
for (var j in data[i][this.keys.list]) {
html += '';
html += C.htmlEncode(data[i]['list'][j][this.keys.name]);
html += '';
html += '
';
}
}
if (html && this.enableItemAll) {
html = '' + '全部' + '
' + html;
}
this.elem.find('[data-list]').html(html);
};
DropGroupSelect.prototype.get = function() {
res = [this.value, this.name];
return res;
};
DropGroupSelect.prototype.setData = function(data) {
if (data) {
this.data = data;
}
this.showData(this.data);
};
UI.DropGroupSelect = function(elem, data, settings) {
var dropGroupSelect = new DropGroupSelect(elem, data, settings);
return dropGroupSelect;
};
})(UI);
(function(UI) {
var AliSyncDialog = function(settings) {
this.type = 'asset';
this.elem = null;
this.zoneSelect = null;
this.networkSelect = null;
this.zoneSelectData = null;
this.title = '';
this.enableMulti = true;
this.showSync = false;
this.accountid = null;
this.callback = {
getData: null,
showData: null,
submit: null
};
this.keys = {
id: 'id'
}
this.data = [];
settings = settings || {};
if (settings.callback) {
if (settings.callback.getData) {
this.callback.getData = settings.callback.getData;
}
if (settings.callback.showData) {
this.callback.showData = settings.callback.showData;
}
if (settings.callback.submit) {
this.callback.submit = settings.callback.submit;
}
}
if (settings.keys) {
if (settings.keys.id) {
this.keys.id = settings.keys.id;
}
}
if (settings.title) {
this.title = settings.title;
}
if (settings.type) {
this.type = settings.type;
}
if (settings.accountid) {
this.accountid = settings.accountid;
}
if (typeof settings.enableMulti !== 'undefined') {
this.enableMulti = settings.enableMulti;
}
if (typeof settings.showSync !== 'undefined') {
this.showSync = settings.showSync;
}
if (settings.data) {
this.data = settings.data;
}
this.formatData(settings);
var html = '\
\
\
\
\
\
\
\
\
| ';
if (this.type == 'asset') {
html += '\
\
| \
\
\
| \
\
\
| ';
} else if (this.type == 'user') {
html += '\
\
| ';
}
html += '
\
\
\
\
\
\
\
';
this.elem = UI.dialog.create(html);
if (this.title) {
this.elem.find('h3').html(this.title);
}
var _this = this;
function reloadData() {
_this.getData();
}
function aliSyncSelectInit() {
if (_this.elem.find('[data-name="filter-zone"]').length) {
_this.zoneSelect = UI.aliZoneSelect(_this.elem.find('[data-name="filter-zone"]'), {size: 'full', callback: reloadData, data: _this.zoneSelectData});
}
if (_this.elem.find('[data-name="filter-network"]').length) {
_this.networkSelect = UI.aliNetworkSelect(_this.elem.find('[data-name="filter-network"]'), {size: 'full', callback: reloadData});
}
}
aliSyncSelectInit();
_this.elem.find('[data-name="form-search"]').submit(function() {
reloadData();
return false;
});
_this.elem.find('[data-name="clear-filter"]').click(function() {
_this.elem.find('[data-name="search"]').val('');
aliSyncSelectInit();
reloadData();
});
if (this.showSync && this.type == 'asset') {
_this.elem.on('click', '[data-optype="syncEcs"]', function() {
var elemParent = $('[data-optype="syncEcs"]').parent('div');
elemParent.prepend('');
AC.ajax({
url: '/index.php/asset/alicloud/sync_ecs',
success: function(msg) {
msg = C.jsonDecode(msg);
if (msg['errcode'] == 'OK') {
elemParent.removeClass('tcm tcn').addClass('tcy').html('数据刷新成功');
var msg = AC.getObjectFromUrl('/index.php/asset/alicloud/get_ali_ecs_by_abtoken', {accountid: _this.accountid}, []);
if (msg.errcode == 'OK') {
_this.formatData({
data: msg.not_created,
});
_this.zoneSelect = UI.aliZoneSelect(_this.elem.find('[data-name="filter-zone"]'), {
size: 'full',
callback: reloadData,
data: _this.zoneSelectData
});
_this.networkSelect = UI.aliNetworkSelect(_this.elem.find('[data-name="filter-network"]'), {
size: 'full',
callback: reloadData
});
_this.elem.find('[data-name="search"]').val('');
reloadData();
}
} else if (msg['errcode'] == 'ConcurrencyExceedLimit') {
elemParent.removeClass('tcy tcn').addClass('tcm').html('30分钟内已发送过请求,请勿重复发送');
} else if (msg['errcode'] == 'GET_TASKINFO_FAILED') {
elemParent.removeClass('tcm tcy').addClass('tcn').html('获取任务信息失败,请再次手工刷新');
} else if (msg['errcode'] == 'TIMEOUT') {
elemParent.removeClass('tcm tcy').addClass('tcn').html('请求超时,请再次手工刷新');
} else if (msg['errcode'] == 'RPC_ERROR') {
elemParent.removeClass('tcm tcy').addClass('tcn').html('服务器访问出错,请再次手工刷新');
} else if (C.inArray(msg['errcode'], ['InvalidInstanceUuid', 'InvalidInstanceStatus', 'InvalidAbToken', 'InvalidAliuid', 'GET_ABTOKEN_FAILED', 'SYNC_ECS_FAILED', 'ExpiredAbToken'])) {
elemParent.removeClass('tcm tcy').addClass('tcn').html('数据刷新失败(' + C.htmlEncode(msg['errmsg']) + '),请再次手工刷新');
} else {
elemParent.removeClass('tcm tcy').addClass('tcn').html('数据刷新失败,请再次手工刷新');
}
},
error: function() {
elemParent.removeClass('tcm tcy').addClass('tcn').html('数据刷新失败,请再次手工刷新');
}
});
});
}
_this.getData();
_this.elem.find('[data-optype="submit"]').click(function() {
if (_this.callback.submit) {
var values = [];
values = UI.tableCheckedValue(_this.elem.find("table"));
if (_this.enableMulti) {
// 多选
values = UI.tableCheckedValue(_this.elem.find("table"));
} else {
// 单选
values = UI.tableRadioValue(_this.elem.find("table"));
}
if (values.length) {
var selected = [];
for (var i in values) {
selected.push(_this.data[values[i]]);
}
_this.callback.submit(selected);
// _this.close();
} else {
if (_this.type == 'asset') {
UI.dialog.showErrorMsg('请选择云主机', _this.elem);
} else if (_this.type == 'user') {
UI.dialog.showErrorMsg('请选择RAM子账号', _this.elem);
}
}
}
return false;
});
};
AliSyncDialog.prototype.formatData = function(settings) {
if (settings.data) {
var data = {};
if (this.type == 'asset') {
this.zoneSelectData = [];
var ZoneId = [];
for (var i in settings.data) {
data[String(settings['data'][i]['InstanceId'])] = settings['data'][i];
if (!C.inArray(settings['data'][i]['ZoneId'], ZoneId)) {
this.zoneSelectData.push({value: settings['data'][i]['ZoneId'], name: C.htmlEncode(settings['data'][i]['ZoneLocalName'])});
ZoneId.push(settings['data'][i]['ZoneId'])
}
}
} else if (this.type == 'user') {
for (var i in settings.data) {
data[String(settings['data'][i]['uname'])] = settings['data'][i];
}
}
this.data = data;
}
};
AliSyncDialog.prototype.getData = function() {
var _this = this;
UI.resetContainer(_this.elem.find('.toolbar'));
_this.elem.find('.tools-text').html('');
res = _this.filterSyncData(_this.data);
if (this.type == 'asset') {
_this.showAssetList(res[0]);
} else if (this.type == 'user') {
_this.showUserList(res[0]);
}
var table = $('#dialog-table');
if (res[1] > 0) {
UI.removeEmptyMsg(table);
} else {
UI.showEmptyMsg(table);
}
};
AliSyncDialog.prototype.filterSyncData = function(data) {
var _this = this;
if (_this.type == 'asset') {
var zone = _this.zoneSelect.get()[0];
var network = _this.networkSelect.get()[0];
}
var search = C.getValue(_this.elem.find('[data-name="search"]'));
var filterData = {};
var count = 0;
for (var i in data) {
patt = new RegExp(search);
if (_this.type == 'asset') {
if (search !== '' && !patt.test(data[i]['InstanceName']) && !patt.test(data[i]['PublicIpAddress']) && !patt.test(data[i]['PrivateIpAddress'])) {
continue;
}
if (zone !== '' && data[i]['ZoneId'] !== zone) {
continue;
}
if (network !== '' && data[i]['InstanceNetworkType'] !== network) {
continue;
}
} else if (_this.type == 'user') {
if (search !== '' && !patt.test(data[i]['uname']) && !patt.test(data[i]['name']) && !patt.test(data[i]['mobile']) && !patt.test(data[i]['email'])) {
continue;
}
}
filterData[i] = data[i];
count ++;
}
return [filterData, count]
};
AliSyncDialog.prototype.showAssetList = function(rows) {
var html = '';
for (var i in rows) {
html += '\
| \
' + C.htmlEncode(rows[i].InstanceName) + ' | \
' + C.htmlEncode(rows[i].PublicIpAddress) + ' | \
' + C.htmlEncode(rows[i].PrivateIpAddress) + ' | ';
if (rows[i].InstanceNetworkType.toLowerCase() === 'vpc') {
html += '专有网络 | ';
} else if (rows[i].InstanceNetworkType.toLowerCase() === 'classic') {
html += '经典网络 | ';
}
html += '' + C.htmlEncode(rows[i].ZoneLocalName) + ' | ';
html += '
';
}
this.elem.find('tbody').html(html);
};
AliSyncDialog.prototype.showUserList = function(rows) {
var html = '';
for (var i in rows) {
html += '';
html += ' | ';
html += '' + C.htmlEncode(rows[i].uname) + ' | ';
html += '' + C.htmlEncode(rows[i].name) + ' | ';
html += '' + C.htmlEncode(rows[i].mobile) + ' | ';
html += '' + C.htmlEncode(rows[i].email) + ' |
';
}
this.elem.find('tbody').html(html);
};
AliSyncDialog.prototype.close = function() {
UI.dialog.close();
};
UI.AliSyncDialog = function(settings) {
var dialog = new AliSyncDialog(settings);
return dialog;
};
})(UI);