101 lines
2.7 KiB
JavaScript
101 lines
2.7 KiB
JavaScript
/**
|
|
* 数据表格模块
|
|
*/
|
|
|
|
|
|
const FileManager = require('../../filemanager/');
|
|
const LANG = antSword['language']['shellmanager']['list']['grid'];
|
|
const ContextMenu = require('./contextmenu');
|
|
|
|
class Grid {
|
|
/**
|
|
* 初始化函数
|
|
* @param {object} cell dhtmlx.cell对象
|
|
* @param {object} top 父层list对象
|
|
* @return {[type]} [description]
|
|
*/
|
|
constructor(cell, top) {
|
|
// 初始化grid
|
|
const grid = cell.attachGrid();
|
|
// 设置grid头
|
|
grid.setHeader(`
|
|
${LANG['url']},
|
|
${LANG['ip']},
|
|
${LANG['addr']},
|
|
${LANG['note']},
|
|
${LANG['ctime']},
|
|
${LANG['utime']}
|
|
`);
|
|
grid.setColTypes("ro,ro,ro,ro,ro,ro");
|
|
grid.setColSorting('str,str,str,str,str,str');
|
|
grid.setInitWidths("200,120,*,*,140,140");
|
|
grid.setColAlign("left,left,left,left,center,center");
|
|
grid.enableMultiselect(true);
|
|
// 根据设置隐藏相应的列
|
|
const dis_smhc = localStorage.hasOwnProperty('display_shellmanager_hiddencolumns') ? JSON.parse(localStorage.display_shellmanager_hiddencolumns):[];
|
|
dis_smhc.map((_)=>{grid.setColumnHidden(_,true)});
|
|
|
|
// 隐藏右键菜单
|
|
grid.attachEvent('onRowSelect', bmenu.hide);
|
|
$('.objbox')
|
|
.on('click', bmenu.hide)
|
|
.on('contextmenu', (e) => {
|
|
if (e.target.nodeName === 'DIV' && grid.callEvent instanceof Function) {
|
|
grid.callEvent('onRightClick', [grid.getSelectedRowId(), '', e]);
|
|
}
|
|
});
|
|
|
|
// 监听事件
|
|
grid.attachEvent('onRightClick', this._onRightClick);
|
|
grid.attachEvent('onRowDblClicked', this._onRowDblClicked);
|
|
|
|
grid.init();
|
|
return grid;
|
|
}
|
|
|
|
/**
|
|
* 右键事件
|
|
* @param {number} id 选择ID
|
|
* @param {number} lid 上一ID
|
|
* @param {object} event [description]
|
|
* @return {[type]} [description]
|
|
*/
|
|
_onRightClick(id, lid, event) {
|
|
// 解析出选中的数据信息
|
|
let ids = (this.getSelectedId() || '').split(',');
|
|
// 如果没有选中?则选中右键对应选项
|
|
if (ids.length === 1) {
|
|
this.selectRowById(id);
|
|
ids = [id];
|
|
}
|
|
// 获取选择数据信息
|
|
let infos = [];
|
|
if (ids.length >= 1) {
|
|
infos = antSword['ipcRenderer'].sendSync(
|
|
'shell-find',
|
|
{ _id: { $in: ids } }
|
|
)
|
|
}
|
|
// 获取选中的单条数据
|
|
let info = infos[0];
|
|
// 弹出右键菜单
|
|
new ContextMenu(
|
|
infos, event,
|
|
id, ids
|
|
);
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 双击事件
|
|
* @param {[type]} id [description]
|
|
* @param {[type]} event [description]
|
|
* @return {[type]} [description]
|
|
*/
|
|
_onRowDblClicked(id, event) {
|
|
const info = antSword['ipcRenderer'].sendSync('shell-findOne', id);
|
|
new FileManager(info);
|
|
}
|
|
}
|
|
module.exports = Grid;
|