-
Notifications
You must be signed in to change notification settings - Fork 5
/
gridCompSet.js
158 lines (151 loc) · 6.63 KB
/
gridCompSet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/*
* 设置某列是否显示(传入column)
*/
const setColumnVisibleByColumn = function(column, visible) {
var index = this.getIndexOfColumn(column);
this.setColumnVisibleByIndex(index, visible);
};
/*
* 设置某列是否显示(传入index为gridCompColumnArr中的数据)
*/
const setColumnVisibleByIndex = function(index, visible) {
if (index >= 0) {
var column = this.gridCompColumnArr[index],
visibleIndex = this.getVisibleIndexOfColumn(column),
canVisible = column.options.canVisible;
if (!canVisible) {
return;
}
// 显示处理
if (column.options.visible == false && visible) {
var htmlStr = '<col';
if (column.options.width) {
htmlStr += ' style="width:' + this.formatWidth(column.options.width) + '"';
}
htmlStr += '>';
$('#' + this.options.id + '_header_table th:eq(' + index + ')').css('display', "");
$('#' + this.options.id + '_content_table th:eq(' + index + ')').css('display', "");
$('td:eq(' + index + ')', $('#' + this.options.id + '_content tbody tr')).css('display', "");
// 当前列之后的显示列的index
var nextVisibleIndex = this.getNextVisibleInidexOfColumn(column);
if (nextVisibleIndex < 1) {
// 添加在最后面
try {
$('#' + this.options.id + '_header_table col:last')[0].insertAdjacentHTML('afterEnd', htmlStr);
$('#' + this.options.id + '_content_table col:last')[0].insertAdjacentHTML('afterEnd', htmlStr);
} catch (e) {
$('#' + this.options.id + '_header_table col:last').after(htmlStr);
$('#' + this.options.id + '_content_table col:last').after(htmlStr);
}
} else {
// 添加在下一个显示列之前
try {
$('#' + this.options.id + '_header_table col:eq(' + (nextVisibleIndex - 1) + ')')[0].insertAdjacentHTML('beforeBegin', htmlStr);
$('#' + this.options.id + '_content_table col:eq(' + (nextVisibleIndex - 1) + ')')[0].insertAdjacentHTML('beforeBegin', htmlStr);
} catch (e) {
$('#' + this.options.id + '_header_table col:eq(' + (nextVisibleIndex - 1) + ')').before(htmlStr);
$('#' + this.options.id + '_content_table col:eq(' + (nextVisibleIndex - 1) + ')').before(htmlStr);
}
}
var newContentW = this.contentWidth + parseInt(column.options.width);
$('#' + this.options.id + '_column_menu_columns_ul li input:eq(' + index + ')')[0].checked = true;
}
// 隐藏处理
if (column.options.visible == true && !visible) {
$('#' + this.options.id + '_header_table th:eq(' + index + ')').css('display', "none");
$('#' + this.options.id + '_header_table col:eq(' + visibleIndex + ')').remove();
$('#' + this.options.id + '_content_table th:eq(' + index + ')').css('display', "none");
$('#' + this.options.id + '_content_table col:eq(' + visibleIndex + ')').remove();
$('td:eq(' + index + ')', $('#' + this.options.id + '_content_table tbody tr')).css('display', "none");
// 隐藏之后需要判断总体宽度是否小于内容区最小宽度,如果小于需要将最后一列进行扩展
var newContentW = this.contentWidth - parseInt(column.options.width);
$('#' + this.options.id + '_column_menu_columns_ul li input:eq(' + index + ')')[0].checked = false;
}
column.options.visible = visible;
this.columnsVisibleFun();
var w = this.contentWidthChange(newContentW);
this.lastVisibleColumn.options.width = this.lastVisibleColumnWidth;
this.contentWidth = w;
this.resetThVariable();
this.saveGridCompColumnArrToLocal();
}
};
/*
* 根据field设置宽度
*/
const setCoulmnWidthByField = function(field, newWidth) {
var column = this.getColumnByField(field);
this.setColumnWidth(column, newWidth);
};
/*
* 根据column对象设置宽度
*/
const setColumnWidth = function(column, newWidth) {
// if(column != this.lastVisibleColumn){
if (newWidth > this.minColumnWidth || newWidth == this.minColumnWidth) {
var nowVisibleThIndex = this.getVisibleIndexOfColumn(column),
oldWidth = column.options.width,
changeWidth = newWidth - oldWidth,
cWidth = this.contentWidth + changeWidth;
this.contentWidth = this.contentWidthChange(cWidth);
$('#' + this.options.id + '_header_table col:eq(' + nowVisibleThIndex + ')').css('width', newWidth + "px");
$('#' + this.options.id + '_content_table col:eq(' + nowVisibleThIndex + ')').css('width', newWidth + "px");
column.options.width = newWidth;
column.options.realWidth = newWidth;
this.resetThVariable();
this.saveGridCompColumnArrToLocal();
}
this.columnsVisibleFun();
// }
};
/*
* 设置数据源
*/
const setDataSource = function(dataSource) {
if (!(this.$ele.data('gridComp') == this))
return;
this.initDataSourceVariable();
this.options.dataSource = dataSource;
this.initDataSource();
this.repairContent();
this.afterGridDivsCreate();
};
/*
* 设置数据源 格式为:
* {
fields:['column1','column2','column3','column4','column5','column6'],
values:[["cl1","1","cl3","cl4","cl5","cl6"]
,["cl12","2","cl32","cl42","cl52","cl62"]
,["cl13","3","cl33","cl43","cl53","cl63"]
,["cl14","4","cl34","cl44","cl54","cl64"]
,["cl15","5","cl35","cl45","cl55","cl65"]
,["cl16","6","cl36","cl46","cl56","cl66"]
]
}
*/
const setDataSourceFun1 = function(dataSource) {
var dataSourceObj = {};
if (dataSource.values) {
var valuesArr = new Array();
$.each(dataSource.values, function() {
if (dataSource.fields) {
var valueObj = {},
value = this;
$.each(dataSource.fields, function(j) {
$(valueObj).attr(this, value[j])
});
valuesArr.push(valueObj);
}
});
}
$(dataSourceObj).attr('values', valuesArr);
this.setDataSource(dataSourceObj);
};
export const setFunObj = {
setColumnVisibleByColumn: setColumnVisibleByColumn,
setColumnVisibleByIndex: setColumnVisibleByIndex,
setCoulmnWidthByField: setCoulmnWidthByField,
setColumnWidth: setColumnWidth,
setDataSource: setDataSource,
setDataSourceFun1: setDataSourceFun1,
}