You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
10 KiB

4 years ago
/**
* grid样式保存窗口
* @description 将用户自己设置的grid样式保存到后台下次打开界面时就是用户保存的界面状态
*/
define(function(require, exports, module) {
require('./gridstylewindow.css')
var Window = require('../window/window'),
tpl = require('./gridstylewindow.tpl'),
ToolbarAdapter = require('../../../adapter/toolbarAdapter'),
GridAdapter = require('../../../adapter/datagridAdapter'),
editIndex = undefined,
self = null;
function GridStyleWindow(args) {
this.options = {
title: '报表样式设置',
content: tpl,
width: 800,
top: window.scrollY + 100,
height: 600,
modal: true,
closed: true,
closable: true,
draggable: true,
data: null
}
self = this;
this.args = args;
this.id = createGuid();
Window.call(this, this.options);
}
inherits(GridStyleWindow, Window);
GridStyleWindow.prototype.init = function() {
};
GridStyleWindow.prototype.open = function() {
Window.prototype.open.call(this);
};
GridStyleWindow.prototype.customerize = function() {
this.toolContainer = this.getElement('.fdpr-gridstyle-toolbar');
this.gridContainer = this.getElement('.fdpr-gridstyle-main');
this.initToolbar();
this.initGrid();
this.setVkEvent();
};
GridStyleWindow.prototype.setVkEvent = function() {
var panel = self.$grid.datagrid('getPanel');
self.$container.on('focus', 'input.datagrid-editable-input', function(e) {
window.openVK(e.target, '1');
});
panel.on('blur', 'input.datagrid-editable-input', function(e) {
window.closeVK(e);
});
};
GridStyleWindow.prototype.opRouter = function(opcode) {
var self = this;
switch (opcode) {
case 'stylesave':
saveStyleData();
break;
case 'quit':
self.close();
break;
default:
break;
}
};
GridStyleWindow.prototype.initToolbar = function() {
self.tooladp = new ToolbarAdapter({
pageId: self.id,
container: self.toolContainer,
buttons: [
{
"fieldname": "stylesave",
"dispname": "保存",
"icon": "icon-save",
"class": "",
"hint": "保存",
"opcode": "stylesave"
},
{
"fieldname": "quit",
"dispname": "退出",
"icon": "icon-save",
"class": "",
"hint": "退出",
"opcode": "quit"
}
],
menuButtons: [],
actions: {
click: function(opcode) {
self.opRouter(opcode);
}
}
});
self.tooladp.init();
};
GridStyleWindow.prototype.initGrid = function() {
var columns = makeGridColumns(),
data = makeGridData();
// var columns = JSON.parse(printColumns);
// self.makeColumnEditor(columns);
self.gridadp = new GridAdapter({
id: self.id,
selfColumn: true,
name: '',
opts: {},
data: {
columns: columns
},
actions: {
// onDblClickCell: onClickCell,
// onBeforeEdit: onBeforeEdit,
// onEndEdit: onEndEdit,
onLoadSuccess: function(){
enabelDnd();
},
onStopDrag: function(row) {
resetRowIndex(row);
},
onSortColumn: function() {
enabelDnd();
},
onAfterCellEdit: function(e, dg, blurObj) {
window.closeVK(e);
if (blurObj.ov == blurObj.nv || blurObj.field != 'dispindex') return;
resetTableSort(dg, blurObj);
}
}
});
self.gridadp.makeGridProperties({
height: 430,
showFooter: false,
rownumbers: true,
ctrlSelect: false,
singleSelect: true,
dblclickToEdit: true
});
self.gridadp.init(self.gridContainer);
// self.gridadp.fitColumns();
self.gridadp.loadData(data);
self.$grid = self.gridadp.grid.$grid;
};
function resetTableSort(dg, obj) {
var ov = parseInt(obj.ov);
var nv = parseInt(obj.nv);
var index = obj.index;
var rows = dg.datagrid('getRows');
for (var i = 0; i < rows.length; i++) {
var value = parseInt(rows[i].dispindex) || 0;
if (nv > ov) {
if (value >= ov && value <= nv && i != index) {
rows[i].dispindex = parseInt(rows[i].dispindex) - 1;
}
} else {
if (value >= nv && value <= ov && i != index) {
rows[i].dispindex = parseInt(rows[i].dispindex) + 1;
}
}
// dg.datagrid('refreshRow', i);
}
setTimeout(function() {
dg.datagrid('sort', {
sortName: 'dispindex'
});
}, 100)
}
function enabelDnd() {
self.gridadp.grid.$grid
// .datagrid('enableDnd')
.datagrid('enableCellEditing');
}
function onEndEdit(index, row){
var keys = Object.keys(row);
var width = self.$grid.datagrid('getEditor', {
index: 2,
field: keys[index]
});
var viewable = self.$grid.datagrid('getEditor', {
index: 3,
field: keys[index]
});
if (width) {
row[keys[2]] = width.target.val();
}
if (viewable) {
row[keys[3]] = viewable.target.val();
}
}
/**
* 重新设置行的显示顺序值
*/
function resetRowIndex(row) {
var grid = self.gridadp.grid.$grid,
// index = grid.datagrid('getRowIndex', row),
rows = grid.datagrid('getRows');
for (var i = 0; i < rows.length; i++) {
var _row = rows[i];
_row.dispindex = i;
grid.datagrid('updateRow', {
index: i,
row: _row
});
}
}
/**
* 制作grid column
*/
function makeGridColumns() {
return [[
{
"sortable": "true",
"field": "title",
"align": "",
"width": "23%",
"rowspan": 1,
"colspan": 1,
"title": "列名",
"deltaWidth": 9,
"boxWidth": 71
},
{
"sortable": "true",
"field": "dispindex",
"align": "center",
"width": "23%",
"rowspan": 1,
"colspan": 1,
"title": "显示顺序",
"deltaWidth": 9,
"boxWidth": 111,
"editor": "text"
},
{
"sortable": "true",
"field": "dispwidth",
"align": "center",
"width": "23%",
"rowspan": 1,
"colspan": 1,
"title": "显示宽度",
"deltaWidth": 9,
"boxWidth": 71,
"editor": "text"
},
{
"sortable": "true",
"field": "viewable",
"align": "center",
"width": "23%",
"rowspan": 1,
"colspan": 1,
"title": "是否可见",
"deltaWidth": 9,
"boxWidth": 71,
"editor": {
type: 'checkbox',
options:{on:'是',off:'否'}
}
}
]];
}
function saveStyleData() {
if (self.$grid.datagrid('getChanges').length == 0) {
return;
}
var rows = self.$grid.datagrid('getRows');
var _rows = JSON.stringify(rows);
_rows = _rows.replace(/"viewable":"是"/g, '"viewable":"1"');
_rows = _rows.replace(/"viewable":"否"/g, '"viewable":"0"');
rows = JSON.parse(_rows);
var params = {
rptId: self.args.dataManager.rptId,
rptFormatId: self.args.dataManager.rptFormatId,
styleList: rows
};
ER.services.privatefmt(params, function (isok, data) {
if (isok) {
ER.messager.tip('保存成功,点击确定后将刷新页面!', function() {
window.location.reload();
});
}
});
}
function makeGridData() {
var columns = self.args.cols,
col = null,
data = [];
for (var i = 0 ; i < columns.length; i++) {
col = columns[i];
data.push({
fieldname: col.fieldName,
title: col.dispName,
dispindex: col.dispIndex,
dispwidth: col.headerWidth,
viewable: col.dispPosition == '3' ? '否' : '是'
});
}
data = _.sortBy(data, 'dispindex');
return data;
}
function onClickCell(index, field){
// if (!self.editStatus) return;
// if (editIndex != index){
if (endEditing()){
self.$grid.datagrid('selectRow', index);
self.$grid.datagrid('beginEdit', index);
var ed = self.$grid.datagrid('getEditor', {index:index,field:field});
if (ed){
($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
}
editIndex = index;
} else {
setTimeout(function(){
self.$grid.datagrid('selectRow', editIndex);
},0);
}
// }
}
function accept(){
if (endEditing()){
self.$grid.datagrid('acceptChanges');
}
}
function endEditing(){
if (editIndex == undefined){return true}
// if (self.$grid.datagrid('validateRow', editIndex)){
self.$grid.datagrid('acceptChanges');
self.$grid.datagrid('endEdit', editIndex);
editIndex = undefined;
console.log('success');
return true;
// } else {
// console.log('failed');
// return false;
// }
}
return GridStyleWindow;
});