2cb8a6d9
梁灏
commit Table comp...
|
1
|
<template>
|
45e7ed7e
梁灏
update Table
|
2
|
<div :class="wrapClasses" :style="styles">
|
39311a50
梁灏
update Table
|
3
|
<div :class="classes">
|
486d4fda
梁灏
update Table
|
4
5
|
<div :class="[prefixCls + '-title']" v-if="showSlotHeader" ref="title"><slot name="header"></slot></div>
<div :class="[prefixCls + '-header']" v-if="showHeader" ref="header" @mousewheel="handleMouseWheel">
|
b8a43000
梁灏
update Table
|
6
|
<table-head
|
39311a50
梁灏
update Table
|
7
|
:prefix-cls="prefixCls"
|
eec3859c
huanghong
fixed table scollbar
|
8
|
:styleObject="tableHeaderStyle"
|
39311a50
梁灏
update Table
|
9
|
:columns="cloneColumns"
|
1acabf79
梁灏
Table support mul...
|
10
|
:column-rows="columnRows"
|
39311a50
梁灏
update Table
|
11
|
:obj-data="objData"
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
12
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
13
|
:data="rebuildData"></table-head>
|
b8a43000
梁灏
update Table
|
14
|
</div>
|
486d4fda
梁灏
update Table
|
15
|
<div :class="[prefixCls + '-body']" :style="bodyStyle" ref="body" @scroll="handleBodyScroll"
|
e5337c81
梁灏
fixed some compon...
|
16
|
v-show="!((!!localeNoDataText && (!data || data.length === 0)) || (!!localeNoFilteredDataText && (!rebuildData || rebuildData.length === 0)))">
|
b8a43000
梁灏
update Table
|
17
|
<table-body
|
486d4fda
梁灏
update Table
|
18
|
ref="tbody"
|
39311a50
梁灏
update Table
|
19
|
:prefix-cls="prefixCls"
|
486d4fda
梁灏
update Table
|
20
|
:styleObject="tableStyle"
|
39311a50
梁灏
update Table
|
21
22
|
:columns="cloneColumns"
:data="rebuildData"
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
23
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
24
|
:obj-data="objData"></table-body>
|
b8a43000
梁灏
update Table
|
25
|
</div>
|
2f7660b4
Rijn
fade table body w...
|
26
|
<div
|
8e171de8
huanghong
fixed #3124
|
27
|
:class="[prefixCls + '-tip']" :style="bodyStyle" @scroll="handleBodyScroll"
|
e5337c81
梁灏
fixed some compon...
|
28
|
v-show="((!!localeNoDataText && (!data || data.length === 0)) || (!!localeNoFilteredDataText && (!rebuildData || rebuildData.length === 0)))">
|
2f7660b4
Rijn
fade table body w...
|
29
30
31
|
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
|
8e171de8
huanghong
fixed #3124
|
32
|
<td :style="{'height':bodyStyle.height,'width':`${this.headerWidth}px`}">
|
e5337c81
梁灏
fixed some compon...
|
33
34
|
<span v-html="localeNoDataText" v-if="!data || data.length === 0"></span>
<span v-html="localeNoFilteredDataText" v-else></span>
|
2f7660b4
Rijn
fade table body w...
|
35
36
37
38
39
|
</td>
</tr>
</tbody>
</table>
</div>
|
a81dc06c
梁灏
publish 0.9.9-rc-4
|
40
|
<div :class="[prefixCls + '-fixed']" :style="fixedTableStyle" v-if="isLeftFixed">
|
548eac43
梁灏
fixed #1387 and u...
|
41
|
<div :class="fixedHeaderClasses" v-if="showHeader">
|
45e7ed7e
梁灏
update Table
|
42
|
<table-head
|
5d0499ce
梁灏
update Table
|
43
|
fixed="left"
|
39311a50
梁灏
update Table
|
44
|
:prefix-cls="prefixCls"
|
486d4fda
梁灏
update Table
|
45
|
:styleObject="fixedTableStyle"
|
39311a50
梁灏
update Table
|
46
|
:columns="leftFixedColumns"
|
1acabf79
梁灏
Table support mul...
|
47
|
:column-rows="columnRows"
|
c1e965c3
梁灏
fixed-head
|
48
|
:fixed-column-rows="leftFixedColumnRows"
|
39311a50
梁灏
update Table
|
49
|
:obj-data="objData"
|
68b308ee
梁灏
fixex #1353
|
50
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
51
|
:data="rebuildData"></table-head>
|
45e7ed7e
梁灏
update Table
|
52
|
</div>
|
b08f5e08
Aresn
Update table.vue
|
53
|
<div :class="[prefixCls + '-fixed-body']" :style="fixedBodyStyle" ref="fixedBody" @mousewheel="handleFixedMousewheel" @DOMMouseScroll="handleFixedMousewheel">
|
45e7ed7e
梁灏
update Table
|
54
|
<table-body
|
5d0499ce
梁灏
update Table
|
55
|
fixed="left"
|
39311a50
梁灏
update Table
|
56
|
:prefix-cls="prefixCls"
|
486d4fda
梁灏
update Table
|
57
|
:styleObject="fixedTableStyle"
|
39311a50
梁灏
update Table
|
58
59
|
:columns="leftFixedColumns"
:data="rebuildData"
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
60
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
61
|
:obj-data="objData"></table-body>
|
45e7ed7e
梁灏
update Table
|
62
|
</div>
|
b8a43000
梁灏
update Table
|
63
|
</div>
|
a81dc06c
梁灏
publish 0.9.9-rc-4
|
64
|
<div :class="[prefixCls + '-fixed-right']" :style="fixedRightTableStyle" v-if="isRightFixed">
|
548eac43
梁灏
fixed #1387 and u...
|
65
|
<div :class="fixedHeaderClasses" v-if="showHeader">
|
45e7ed7e
梁灏
update Table
|
66
|
<table-head
|
5d0499ce
梁灏
update Table
|
67
|
fixed="right"
|
39311a50
梁灏
update Table
|
68
|
:prefix-cls="prefixCls"
|
486d4fda
梁灏
update Table
|
69
|
:styleObject="fixedRightTableStyle"
|
39311a50
梁灏
update Table
|
70
|
:columns="rightFixedColumns"
|
1acabf79
梁灏
Table support mul...
|
71
|
:column-rows="columnRows"
|
c1e965c3
梁灏
fixed-head
|
72
|
:fixed-column-rows="rightFixedColumnRows"
|
39311a50
梁灏
update Table
|
73
|
:obj-data="objData"
|
486d4fda
梁灏
update Table
|
74
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
75
|
:data="rebuildData"></table-head>
|
45e7ed7e
梁灏
update Table
|
76
|
</div>
|
12739c33
梁灏
update Table
|
77
|
<div :class="[prefixCls + '-fixed-body']" :style="fixedBodyStyle" ref="fixedRightBody" @mousewheel="handleFixedMousewheel" @DOMMouseScroll="handleFixedMousewheel">
|
45e7ed7e
梁灏
update Table
|
78
|
<table-body
|
5d0499ce
梁灏
update Table
|
79
|
fixed="right"
|
39311a50
梁灏
update Table
|
80
|
:prefix-cls="prefixCls"
|
486d4fda
梁灏
update Table
|
81
|
:styleObject="fixedRightTableStyle"
|
39311a50
梁灏
update Table
|
82
83
|
:columns="rightFixedColumns"
:data="rebuildData"
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
84
|
:columns-width="columnsWidth"
|
39311a50
梁灏
update Table
|
85
|
:obj-data="objData"></table-body>
|
45e7ed7e
梁灏
update Table
|
86
|
</div>
|
b8a43000
梁灏
update Table
|
87
|
</div>
|
63014189
huanghong
fix table fixed-r...
|
88
|
<div :class="[prefixCls + '-fixed-right-header']" :style="fixedRightHeaderStyle" v-if="isRightFixed"></div>
|
486d4fda
梁灏
update Table
|
89
|
<div :class="[prefixCls + '-footer']" v-if="showSlotFooter" ref="footer"><slot name="footer"></slot></div>
|
abdec99d
梁灏
update Table
|
90
|
</div>
|
300bd662
梁灏
fixed #704
|
91
92
93
|
<Spin fix size="large" v-if="loading">
<slot name="loading"></slot>
</Spin>
|
2cb8a6d9
梁灏
commit Table comp...
|
94
95
96
|
</div>
</template>
<script>
|
7f34c510
梁灏
update Table
|
97
98
|
import tableHead from './table-head.vue';
import tableBody from './table-body.vue';
|
300bd662
梁灏
fixed #704
|
99
|
import Spin from '../spin/spin.vue';
|
3d6fa54b
梁灏
update Table
|
100
|
import { oneOf, getStyle, deepCopy, getScrollBarSize } from '../../utils/assist';
|
f00b5343
梁灏
update Table
|
101
|
import { on, off } from '../../utils/dom';
|
43509ad8
梁灏
Table support exp...
|
102
103
|
import Csv from '../../utils/csv';
import ExportCsv from './export-csv';
|
e5337c81
梁灏
fixed some compon...
|
104
|
import Locale from '../../mixins/locale';
|
c5beedf8
梁灏
fixed #690
|
105
|
import elementResizeDetectorMaker from 'element-resize-detector';
|
1acabf79
梁灏
Table support mul...
|
106
|
import { getAllColumns, convertToRows, convertColumnOrder } from './util';
|
e5337c81
梁灏
fixed some compon...
|
107
|
|
2cb8a6d9
梁灏
commit Table comp...
|
108
109
|
const prefixCls = 'ivu-table';
|
68b308ee
梁灏
fixex #1353
|
110
111
112
|
let rowKey = 1;
let columnKey = 1;
|
2cb8a6d9
梁灏
commit Table comp...
|
113
|
export default {
|
486d4fda
梁灏
update Table
|
114
|
name: 'Table',
|
e5337c81
梁灏
fixed some compon...
|
115
|
mixins: [ Locale ],
|
300bd662
梁灏
fixed #704
|
116
|
components: { tableHead, tableBody, Spin },
|
2cb8a6d9
梁灏
commit Table comp...
|
117
118
119
120
|
props: {
data: {
type: Array,
default () {
|
b0893113
jingsam
add eslint
|
121
|
return [];
|
2cb8a6d9
梁灏
commit Table comp...
|
122
123
124
125
126
|
}
},
columns: {
type: Array,
default () {
|
b0893113
jingsam
add eslint
|
127
|
return [];
|
2cb8a6d9
梁灏
commit Table comp...
|
128
129
130
131
|
}
},
size: {
validator (value) {
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
132
|
return oneOf(value, ['small', 'large', 'default']);
|
2cb8a6d9
梁灏
commit Table comp...
|
133
134
|
}
},
|
3ef4dfb9
梁灏
update Table
|
135
136
137
|
width: {
type: [Number, String]
},
|
e7e8c8ff
梁灏
update Table
|
138
139
140
|
height: {
type: [Number, String]
},
|
2cb8a6d9
梁灏
commit Table comp...
|
141
142
143
144
145
146
147
148
|
stripe: {
type: Boolean,
default: false
},
border: {
type: Boolean,
default: false
},
|
2cb8a6d9
梁灏
commit Table comp...
|
149
150
151
152
|
showHeader: {
type: Boolean,
default: true
},
|
0d136465
梁灏
update Table
|
153
|
highlightRow: {
|
2cb8a6d9
梁灏
commit Table comp...
|
154
155
|
type: Boolean,
default: false
|
e7e8c8ff
梁灏
update Table
|
156
157
158
159
160
161
|
},
rowClassName: {
type: Function,
default () {
return '';
}
|
d0e206c5
梁灏
Table add content...
|
162
|
},
|
d8892603
梁灏
Table prop: conte...
|
163
|
context: {
|
d0e206c5
梁灏
Table add content...
|
164
|
type: Object
|
cf7887ba
Rijn
Fixed #151
|
165
166
|
},
noDataText: {
|
e5337c81
梁灏
fixed some compon...
|
167
|
type: String
|
cf7887ba
Rijn
Fixed #151
|
168
169
|
},
noFilteredDataText: {
|
e5337c81
梁灏
fixed some compon...
|
170
|
type: String
|
2474ee59
Lawrence Lee
add hover-highlig...
|
171
|
},
|
174158b1
Lawrence Lee
change disable-ho...
|
172
|
disabledHover: {
|
2474ee59
Lawrence Lee
add hover-highlig...
|
173
|
type: Boolean
|
300bd662
梁灏
fixed #704
|
174
175
176
177
|
},
loading: {
type: Boolean,
default: false
|
2cb8a6d9
梁灏
commit Table comp...
|
178
179
180
181
|
}
},
data () {
return {
|
adaeca88
梁灏
update Table
|
182
|
ready: false,
|
744eb0af
梁灏
update Table comp...
|
183
|
tableWidth: 0,
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
184
|
columnsWidth: {},
|
2cb8a6d9
梁灏
commit Table comp...
|
185
|
prefixCls: prefixCls,
|
0d136465
梁灏
update Table
|
186
|
compiledUids: [],
|
35ad3764
梁灏
update Table
|
187
|
objData: this.makeObjData(), // checkbox or highlight-row
|
5d0499ce
梁灏
update Table
|
188
|
rebuildData: [], // for sort or filter
|
35ad3764
梁灏
update Table
|
189
|
cloneColumns: this.makeColumns(),
|
c1e965c3
梁灏
fixed-head
|
190
191
192
|
columnRows: this.makeColumnRows(false),
leftFixedColumnRows: this.makeColumnRows('left'),
rightFixedColumnRows: this.makeColumnRows('right'),
|
1acabf79
梁灏
Table support mul...
|
193
|
allColumns: getAllColumns(this.columns), // for multiple table-head, get columns that have no children
|
e7e8c8ff
梁灏
update Table
|
194
195
|
showSlotHeader: true,
showSlotFooter: true,
|
3d6fa54b
梁灏
update Table
|
196
|
bodyHeight: 0,
|
d16dce64
梁灏
fixed #193
|
197
|
bodyRealHeight: 0,
|
486d4fda
梁灏
update Table
|
198
|
scrollBarWidth: getScrollBarSize(),
|
d8892603
梁灏
Table prop: conte...
|
199
|
currentContext: this.context,
|
14d1de05
huanghong
fix table changin...
|
200
|
cloneData: deepCopy(this.data), // when Cell has a button to delete row data, clickCurrentRow will throw an error, so clone a data
|
f25f1252
huanghong
Refactor
|
201
|
showVerticalScrollBar:false,
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
202
|
showHorizontalScrollBar:false,
|
63014189
huanghong
fix table fixed-r...
|
203
204
|
headerWidth:0,
headerHeight:0,
|
b0893113
jingsam
add eslint
|
205
|
};
|
2cb8a6d9
梁灏
commit Table comp...
|
206
207
|
},
computed: {
|
e5337c81
梁灏
fixed some compon...
|
208
209
210
211
212
213
214
215
216
217
218
219
220
221
|
localeNoDataText () {
if (this.noDataText === undefined) {
return this.t('i.table.noDataText');
} else {
return this.noDataText;
}
},
localeNoFilteredDataText () {
if (this.noFilteredDataText === undefined) {
return this.t('i.table.noFilteredDataText');
} else {
return this.noFilteredDataText;
}
},
|
45e7ed7e
梁灏
update Table
|
222
223
224
225
|
wrapClasses () {
return [
`${prefixCls}-wrapper`,
{
|
0f4ccf44
梁灏
release 0.9.9
|
226
227
228
|
[`${prefixCls}-hide`]: !this.ready,
[`${prefixCls}-with-header`]: this.showSlotHeader,
[`${prefixCls}-with-footer`]: this.showSlotFooter
|
45e7ed7e
梁灏
update Table
|
229
|
}
|
b0893113
jingsam
add eslint
|
230
|
];
|
45e7ed7e
梁灏
update Table
|
231
|
},
|
2cb8a6d9
梁灏
commit Table comp...
|
232
233
234
235
|
classes () {
return [
`${prefixCls}`,
{
|
0d136465
梁灏
update Table
|
236
237
|
[`${prefixCls}-${this.size}`]: !!this.size,
[`${prefixCls}-border`]: this.border,
|
e7e8c8ff
梁灏
update Table
|
238
|
[`${prefixCls}-stripe`]: this.stripe,
|
e7e8c8ff
梁灏
update Table
|
239
|
[`${prefixCls}-with-fixed-top`]: !!this.height
|
2cb8a6d9
梁灏
commit Table comp...
|
240
|
}
|
b0893113
jingsam
add eslint
|
241
|
];
|
0d136465
梁灏
update Table
|
242
|
},
|
548eac43
梁灏
fixed #1387 and u...
|
243
244
245
246
247
248
249
250
|
fixedHeaderClasses () {
return [
`${prefixCls}-fixed-header`,
{
[`${prefixCls}-fixed-header-with-empty`]: !this.rebuildData.length
}
];
},
|
e7e8c8ff
梁灏
update Table
|
251
252
|
styles () {
let style = {};
|
3d6fa54b
梁灏
update Table
|
253
254
255
256
|
if (this.height) {
const height = (this.isLeftFixed || this.isRightFixed) ? parseInt(this.height) + this.scrollBarWidth : parseInt(this.height);
style.height = `${height}px`;
}
|
b0893113
jingsam
add eslint
|
257
|
if (this.width) style.width = `${this.width}px`;
|
e7e8c8ff
梁灏
update Table
|
258
259
|
return style;
},
|
0d136465
梁灏
update Table
|
260
261
|
tableStyle () {
let style = {};
|
3d6fa54b
梁灏
update Table
|
262
|
if (this.tableWidth !== 0) {
|
d16dce64
梁灏
fixed #193
|
263
264
265
266
267
268
269
|
let width = '';
if (this.bodyHeight === 0) {
width = this.tableWidth;
} else {
if (this.bodyHeight > this.bodyRealHeight) {
width = this.tableWidth;
} else {
|
8e171de8
huanghong
fixed #3124
|
270
|
width = this.tableWidth - (this.showVerticalScrollBar?this.scrollBarWidth:0);
|
d16dce64
梁灏
fixed #193
|
271
272
273
|
}
}
// const width = this.bodyHeight === 0 ? this.tableWidth : this.tableWidth - this.scrollBarWidth;
|
3d6fa54b
梁灏
update Table
|
274
275
|
style.width = `${width}px`;
}
|
0d136465
梁灏
update Table
|
276
|
return style;
|
e7e8c8ff
梁灏
update Table
|
277
|
},
|
eec3859c
huanghong
fixed table scollbar
|
278
279
280
281
282
283
284
285
286
|
tableHeaderStyle () {
let style = {};
if (this.tableWidth !== 0) {
let width = '';
width = this.tableWidth;
style.width = `${width}px`;
}
return style;
},
|
7f34c510
梁灏
update Table
|
287
288
|
fixedTableStyle () {
let style = {};
|
5d0499ce
梁灏
update Table
|
289
290
|
let width = 0;
this.leftFixedColumns.forEach((col) => {
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
291
|
if (col.fixed && col.fixed === 'left') width += col._width;
|
5d0499ce
梁灏
update Table
|
292
293
|
});
style.width = `${width}px`;
|
7f34c510
梁灏
update Table
|
294
295
296
297
|
return style;
},
fixedRightTableStyle () {
let style = {};
|
5d0499ce
梁灏
update Table
|
298
299
|
let width = 0;
this.rightFixedColumns.forEach((col) => {
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
300
|
if (col.fixed && col.fixed === 'right') width += col._width;
|
5d0499ce
梁灏
update Table
|
301
|
});
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
302
|
//width += this.scrollBarWidth;
|
5d0499ce
梁灏
update Table
|
303
|
style.width = `${width}px`;
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
304
|
style.right = `${this.showVerticalScrollBar?this.scrollBarWidth:0}px`;
|
7f34c510
梁灏
update Table
|
305
306
|
return style;
},
|
63014189
huanghong
fix table fixed-r...
|
307
308
309
310
311
312
313
314
315
316
317
|
fixedRightHeaderStyle () {
let style = {};
let width = 0;
let height = this.headerHeight+1;
if(this.showVerticalScrollBar){
width = this.scrollBarWidth;
}
style.width = `${width}px`;
style.height = `${height}px`;
return style;
},
|
e7e8c8ff
梁灏
update Table
|
318
319
|
bodyStyle () {
let style = {};
|
3d6fa54b
梁灏
update Table
|
320
321
322
323
324
|
if (this.bodyHeight !== 0) {
// add a height to resolve scroll bug when browser has a scrollBar in fixed type and height prop
const height = (this.isLeftFixed || this.isRightFixed) ? this.bodyHeight + this.scrollBarWidth : this.bodyHeight;
style.height = `${height}px`;
}
|
e7e8c8ff
梁灏
update Table
|
325
|
return style;
|
b8a43000
梁灏
update Table
|
326
327
328
|
},
fixedBodyStyle () {
let style = {};
|
3d6fa54b
梁灏
update Table
|
329
|
if (this.bodyHeight !== 0) {
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
330
|
let height = this.bodyHeight + (!this.showHorizontalScrollBar?this.scrollBarWidth:0) - 1;
|
d16dce64
梁灏
fixed #193
|
331
|
|
b142865e
梁灏
fixed #2102
|
332
333
|
// #2102 里,如果 Table 没有设置 width,而是集成父级的 width,固定列也应该不包含滚动条高度,所以这里直接计算表格宽度
const tableWidth = parseInt(getStyle(this.$el, 'width')) - 1;
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
334
|
if ((this.width && this.width < this.tableWidth) || tableWidth < this.tableWidth+(this.showVerticalScrollBar?this.scrollBarWidth:0)){
|
d16dce64
梁灏
fixed #193
|
335
336
337
338
|
height = this.bodyHeight;
}
// style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`;
style.height = this.scrollBarWidth > 0 ? `${height}px` : `${height - 1}px`;
|
3d6fa54b
梁灏
update Table
|
339
|
}
|
b8a43000
梁灏
update Table
|
340
|
return style;
|
35ad3764
梁灏
update Table
|
341
342
|
},
leftFixedColumns () {
|
1acabf79
梁灏
Table support mul...
|
343
|
return convertColumnOrder(this.cloneColumns, 'left');
|
35ad3764
梁灏
update Table
|
344
345
|
},
rightFixedColumns () {
|
1acabf79
梁灏
Table support mul...
|
346
|
return convertColumnOrder(this.cloneColumns, 'right');
|
a81dc06c
梁灏
publish 0.9.9-rc-4
|
347
348
349
350
351
352
|
},
isLeftFixed () {
return this.columns.some(col => col.fixed && col.fixed === 'left');
},
isRightFixed () {
return this.columns.some(col => col.fixed && col.fixed === 'right');
|
2cb8a6d9
梁灏
commit Table comp...
|
353
354
355
|
}
},
methods: {
|
e7e8c8ff
梁灏
update Table
|
356
357
358
|
rowClsName (index) {
return this.rowClassName(this.data[index], index);
},
|
a3547c1b
梁灏
update Table
|
359
|
handleResize () {
|
2cb8a6d9
梁灏
commit Table comp...
|
360
|
this.$nextTick(() => {
|
1acabf79
梁灏
Table support mul...
|
361
|
const allWidth = !this.allColumns.some(cell => !cell.width); // each column set a width
|
a3547c1b
梁灏
update Table
|
362
|
if (allWidth) {
|
1acabf79
梁灏
Table support mul...
|
363
|
this.tableWidth = this.allColumns.map(cell => cell.width).reduce((a, b) => a + b, 0);
|
a3547c1b
梁灏
update Table
|
364
365
|
} else {
this.tableWidth = parseInt(getStyle(this.$el, 'width')) - 1;
|
2cb8a6d9
梁灏
commit Table comp...
|
366
|
}
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
367
|
this.columnsWidth = {};
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
368
369
|
this.$nextTick(()=>{
this.headerWidth = this.$refs.header.childNodes[0].offsetWidth;
|
63014189
huanghong
fix table fixed-r...
|
370
|
this.headerHeight = this.$refs.header.childNodes[0].offsetHeight;
|
9fea8e7d
huanghong
fixed ivu-table-f...
|
371
372
373
374
375
|
if (!this.$refs.tbody) {
this.showVerticalScrollBar = false;
return;
}
});
|
a3547c1b
梁灏
update Table
|
376
|
this.$nextTick(() => {
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
377
|
let columnsWidth = {};
|
192e2cb8
梁灏
update Table
|
378
|
|
77201524
huanghong
column add prop m...
|
379
380
381
382
383
384
385
386
387
388
389
390
|
let hasWidthColumns = [];
let noWidthColumns = [];
let minWidthColumns = [];
let maxWidthColumns = [];
this.cloneColumns.forEach((col) => {
if (col.width) {
hasWidthColumns.push(col);
}
else{
noWidthColumns.push(col);
if(col.minWidth){
minWidthColumns.push(col);
|
d0e206c5
梁灏
Table add content...
|
391
|
}
|
77201524
huanghong
column add prop m...
|
392
393
394
395
396
|
if(col.maxWidth){
maxWidthColumns.push(col);
}
}
});
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
397
|
|
77201524
huanghong
column add prop m...
|
398
399
|
minWidthColumns.sort((a,b)=>a.minWidth > b.minWidth);
maxWidthColumns.sort((a,b)=>a.maxWidth < b.maxWidth);
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
400
|
|
77201524
huanghong
column add prop m...
|
401
402
403
404
405
406
407
408
409
410
|
let unUsableWidth = hasWidthColumns.map(cell => cell.width).reduce((a, b) => a + b, 0);
let usableWidth = this.tableWidth - unUsableWidth - (this.showVerticalScrollBar?this.scrollBarWidth:0);
let usableLength = noWidthColumns.length;
let columnWidth = parseInt(usableWidth / usableLength);
for (let i = 0; i < maxWidthColumns.length; i++) {
if(columnWidth > maxWidthColumns[i].maxWidth){
usableWidth -= maxWidthColumns[i].maxWidth;
usableLength--;
columnWidth = parseInt(usableWidth / usableLength);
|
2cb8a6d9
梁灏
commit Table comp...
|
411
|
}
|
77201524
huanghong
column add prop m...
|
412
413
414
415
416
417
418
419
420
|
}
for (let i = 0; i < minWidthColumns.length; i++) {
if(columnWidth < minWidthColumns[i].minWidth){
usableWidth -= minWidthColumns[i].minWidth;
usableLength--;
columnWidth = parseInt(usableWidth / usableLength);
}
}
|
14d1de05
huanghong
fix table changin...
|
421
|
|
77201524
huanghong
column add prop m...
|
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
|
if (usableLength===0){
columnWidth = 0;
}
for (let i = 0; i < this.cloneColumns.length; i++) {
const column = this.cloneColumns[i];
let width = columnWidth;
if(column.width){
width = column.width;
}
else{
if (column.minWidth > width){
width = column.minWidth;
}
else if (column.maxWidth < width){
width = column.maxWidth;
}
else{
if (usableLength > 1) {
usableLength--;
usableWidth -= width;
columnWidth = parseInt(usableWidth / usableLength);
}
|
14d1de05
huanghong
fix table changin...
|
445
|
}
|
77201524
huanghong
column add prop m...
|
446
447
448
449
450
451
452
453
454
|
}
this.cloneColumns[i]._width = width;
columnsWidth[column._index] = {
width: width
};
|
192e2cb8
梁灏
update Table
|
455
|
}
|
77201524
huanghong
column add prop m...
|
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
|
this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0);
this.columnsWidth = columnsWidth;
this.$nextTick(()=>{
this.fixedHeader();
if (this.$refs.tbody) {
let bodyContentEl = this.$refs.tbody.$el;
let bodyEl = bodyContentEl.parentElement;
let bodyContentHeight = bodyContentEl.offsetHeight;
let bodyContentWidth = bodyContentEl.offsetWidth;
let bodyWidth = bodyEl.offsetWidth;
let bodyHeight = bodyEl.offsetHeight;
let scrollBarWidth = 0;
if (bodyWidth < bodyContentWidth + (bodyHeight<bodyContentHeight?this.scrollBarWidth : 0)) {
scrollBarWidth = this.scrollBarWidth;
}
this.showVerticalScrollBar = this.bodyHeight? bodyHeight - scrollBarWidth < bodyContentHeight : false;
this.showHorizontalScrollBar = bodyWidth < bodyContentWidth + (this.showVerticalScrollBar?this.scrollBarWidth:0);
if(this.showVerticalScrollBar){
bodyEl.classList.add(this.prefixCls +'-overflowY');
}else{
bodyEl.classList.remove(this.prefixCls +'-overflowY');
}
if(this.showHorizontalScrollBar){
bodyEl.classList.add(this.prefixCls +'-overflowX');
}else{
bodyEl.classList.remove(this.prefixCls +'-overflowX');
}
this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0) + (this.showVerticalScrollBar?this.scrollBarWidth:0);
}
});
|
744eb0af
梁灏
update Table comp...
|
488
|
});
|
d16dce64
梁灏
fixed #193
|
489
490
|
// get table real height,for fixed when set height prop,but height < table's height,show scrollBarWidth
this.bodyRealHeight = parseInt(getStyle(this.$refs.tbody.$el, 'height'));
|
744eb0af
梁灏
update Table comp...
|
491
492
|
});
},
|
d3dfdb26
梁灏
update Table
|
493
|
handleMouseIn (_index) {
|
174158b1
Lawrence Lee
change disable-ho...
|
494
|
if (this.disabledHover) return;
|
d3dfdb26
梁灏
update Table
|
495
496
|
if (this.objData[_index]._isHover) return;
this.objData[_index]._isHover = true;
|
abdec99d
梁灏
update Table
|
497
|
},
|
d3dfdb26
梁灏
update Table
|
498
|
handleMouseOut (_index) {
|
174158b1
Lawrence Lee
change disable-ho...
|
499
|
if (this.disabledHover) return;
|
d3dfdb26
梁灏
update Table
|
500
|
this.objData[_index]._isHover = false;
|
abdec99d
梁灏
update Table
|
501
|
},
|
3aca3d56
梁灏
fixed #1372
|
502
503
|
// 通用处理 highlightCurrentRow 和 clearCurrentRow
handleCurrentRow (type, _index) {
|
0d136465
梁灏
update Table
|
504
|
let oldIndex = -1;
|
d3dfdb26
梁灏
update Table
|
505
506
507
508
|
for (let i in this.objData) {
if (this.objData[i]._isHighlight) {
oldIndex = parseInt(i);
this.objData[i]._isHighlight = false;
|
0d136465
梁灏
update Table
|
509
|
}
|
d3dfdb26
梁灏
update Table
|
510
|
}
|
3aca3d56
梁灏
fixed #1372
|
511
|
if (type === 'highlight') this.objData[_index]._isHighlight = true;
|
63f2e0f4
梁灏
fixed Table bug w...
|
512
|
const oldData = oldIndex < 0 ? null : JSON.parse(JSON.stringify(this.cloneData[oldIndex]));
|
3aca3d56
梁灏
fixed #1372
|
513
514
515
516
517
518
519
520
521
522
|
const newData = type === 'highlight' ? JSON.parse(JSON.stringify(this.cloneData[_index])) : null;
this.$emit('on-current-change', newData, oldData);
},
highlightCurrentRow (_index) {
if (!this.highlightRow || this.objData[_index]._isHighlight) return;
this.handleCurrentRow('highlight', _index);
},
clearCurrentRow () {
if (!this.highlightRow) return;
this.handleCurrentRow('clear');
|
0d136465
梁灏
update Table
|
523
|
},
|
da55375f
Rijn
Added click and d...
|
524
525
|
clickCurrentRow (_index) {
this.highlightCurrentRow (_index);
|
ade5dbba
梁灏
fixed #693
|
526
|
this.$emit('on-row-click', JSON.parse(JSON.stringify(this.cloneData[_index])), _index);
|
da55375f
Rijn
Added click and d...
|
527
528
529
|
},
dblclickCurrentRow (_index) {
this.highlightCurrentRow (_index);
|
ade5dbba
梁灏
fixed #693
|
530
|
this.$emit('on-row-dblclick', JSON.parse(JSON.stringify(this.cloneData[_index])), _index);
|
da55375f
Rijn
Added click and d...
|
531
|
},
|
0d136465
梁灏
update Table
|
532
533
|
getSelection () {
let selectionIndexes = [];
|
d3dfdb26
梁灏
update Table
|
534
535
536
|
for (let i in this.objData) {
if (this.objData[i]._isChecked) selectionIndexes.push(parseInt(i));
}
|
0d136465
梁灏
update Table
|
537
538
|
return JSON.parse(JSON.stringify(this.data.filter((data, index) => selectionIndexes.indexOf(index) > -1)));
},
|
d3dfdb26
梁灏
update Table
|
539
|
toggleSelect (_index) {
|
741b987a
梁灏
update Table
|
540
|
let data = {};
|
d3dfdb26
梁灏
update Table
|
541
542
543
544
|
for (let i in this.objData) {
if (parseInt(i) === _index) {
data = this.objData[i];
|
14cfcf3c
Kevin
Performance Impro...
|
545
|
break;
|
741b987a
梁灏
update Table
|
546
547
548
|
}
}
const status = !data._isChecked;
|
d3dfdb26
梁灏
update Table
|
549
550
|
this.objData[_index]._isChecked = status;
|
0d136465
梁灏
update Table
|
551
552
|
const selection = this.getSelection();
|
b0f1c61f
Rijn
add a event @on-s...
|
553
|
this.$emit(status ? 'on-select' : 'on-select-cancel', selection, JSON.parse(JSON.stringify(this.data[_index])));
|
0d136465
梁灏
update Table
|
554
555
|
this.$emit('on-selection-change', selection);
},
|
08fd628d
Aresn
Table support expand
|
556
557
558
559
560
561
|
toggleExpand (_index) {
let data = {};
for (let i in this.objData) {
if (parseInt(i) === _index) {
data = this.objData[i];
|
14cfcf3c
Kevin
Performance Impro...
|
562
|
break;
|
08fd628d
Aresn
Table support expand
|
563
564
565
566
567
568
|
}
}
const status = !data._isExpanded;
this.objData[_index]._isExpanded = status;
this.$emit('on-expand', JSON.parse(JSON.stringify(this.cloneData[_index])), status);
},
|
3d9e4f20
梁灏
update Table
|
569
|
selectAll (status) {
|
cd85c675
leonine
修改_checked=true 时...
|
570
571
572
573
574
575
|
// this.rebuildData.forEach((data) => {
// if(this.objData[data._index]._isDisabled){
// this.objData[data._index]._isChecked = false;
// }else{
// this.objData[data._index]._isChecked = status;
// }
|
6a248176
Sergio Crisostomo
Add counter start...
|
576
|
|
cd85c675
leonine
修改_checked=true 时...
|
577
578
|
// });
for(const data of this.rebuildData){
|
0dcc9482
leonine
itable 添加禁用某行选中的功能
|
579
|
if(this.objData[data._index]._isDisabled){
|
cd85c675
leonine
修改_checked=true 时...
|
580
|
continue;
|
0dcc9482
leonine
itable 添加禁用某行选中的功能
|
581
582
583
|
}else{
this.objData[data._index]._isChecked = status;
}
|
cd85c675
leonine
修改_checked=true 时...
|
584
|
}
|
52874e27
梁灏
update Table
|
585
|
const selection = this.getSelection();
|
3d9e4f20
梁灏
update Table
|
586
|
if (status) {
|
52874e27
梁灏
update Table
|
587
|
this.$emit('on-select-all', selection);
|
3d9e4f20
梁灏
update Table
|
588
|
}
|
52874e27
梁灏
update Table
|
589
|
this.$emit('on-selection-change', selection);
|
e7e8c8ff
梁灏
update Table
|
590
|
},
|
47638ad8
huanghong
fixed table scrol...
|
591
|
|
e7e8c8ff
梁灏
update Table
|
592
|
fixedHeader () {
|
b0893113
jingsam
add eslint
|
593
|
if (this.height) {
|
e7e8c8ff
梁灏
update Table
|
594
|
this.$nextTick(() => {
|
486d4fda
梁灏
update Table
|
595
596
597
|
const titleHeight = parseInt(getStyle(this.$refs.title, 'height')) || 0;
const headerHeight = parseInt(getStyle(this.$refs.header, 'height')) || 0;
const footerHeight = parseInt(getStyle(this.$refs.footer, 'height')) || 0;
|
e7e8c8ff
梁灏
update Table
|
598
|
this.bodyHeight = this.height - titleHeight - headerHeight - footerHeight;
|
b0893113
jingsam
add eslint
|
599
|
});
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
600
601
|
} else {
this.bodyHeight = 0;
|
e7e8c8ff
梁灏
update Table
|
602
|
}
|
abdec99d
梁灏
update Table
|
603
|
},
|
99f80db0
梁灏
update Table
|
604
605
606
|
hideColumnFilter () {
this.cloneColumns.forEach((col) => col._filterVisible = false);
},
|
192e2cb8
梁灏
update Table
|
607
|
handleBodyScroll (event) {
|
486d4fda
梁灏
update Table
|
608
609
610
|
if (this.showHeader) this.$refs.header.scrollLeft = event.target.scrollLeft;
if (this.isLeftFixed) this.$refs.fixedBody.scrollTop = event.target.scrollTop;
if (this.isRightFixed) this.$refs.fixedRightBody.scrollTop = event.target.scrollTop;
|
99f80db0
梁灏
update Table
|
611
|
this.hideColumnFilter();
|
192e2cb8
梁灏
update Table
|
612
|
},
|
e25070eb
huanghong
fixed #2871
|
613
|
handleFixedMousewheel(event) {
|
e970884b
huanghong
mousewheel suppor...
|
614
615
616
617
618
619
620
|
let deltaY = event.deltaY;
if(!deltaY && event.detail){
deltaY = event.detail * 40;
}
if(!deltaY && event.wheelDeltaY){
deltaY = -event.wheelDeltaY;
}
|
a796b2c5
huanghong
support ie Mousew...
|
621
622
623
|
if(!deltaY && event.wheelDelta){
deltaY = -event.wheelDelta;
}
|
e970884b
huanghong
mousewheel suppor...
|
624
|
if(!deltaY) return;
|
e25070eb
huanghong
fixed #2871
|
625
626
627
628
629
630
631
632
633
634
635
|
const body = this.$refs.body;
const currentScrollTop = body.scrollTop;
if (deltaY < 0 && currentScrollTop !== 0) {
event.preventDefault();
}
if (deltaY > 0 && body.scrollHeight - body.clientHeight > currentScrollTop) {
event.preventDefault();
}
//body.scrollTop += deltaY;
let step = 0;
let timeId = setInterval(()=>{
|
7f2e78d8
huanghong
Decrease table sc...
|
636
|
step += 5;
|
e25070eb
huanghong
fixed #2871
|
637
|
if(deltaY>0){
|
7f2e78d8
huanghong
Decrease table sc...
|
638
|
body.scrollTop += 2;
|
e25070eb
huanghong
fixed #2871
|
639
640
|
}
else{
|
7f2e78d8
huanghong
Decrease table sc...
|
641
|
body.scrollTop -= 2;
|
e25070eb
huanghong
fixed #2871
|
642
|
}
|
7f2e78d8
huanghong
Decrease table sc...
|
643
|
if(step >= Math.abs(deltaY)){
|
e25070eb
huanghong
fixed #2871
|
644
645
|
clearInterval(timeId);
}
|
7f2e78d8
huanghong
Decrease table sc...
|
646
|
}, 5);
|
e25070eb
huanghong
fixed #2871
|
647
|
},
|
3ef4dfb9
梁灏
update Table
|
648
649
|
handleMouseWheel (event) {
const deltaX = event.deltaX;
|
486d4fda
梁灏
update Table
|
650
|
const $body = this.$refs.body;
|
3ef4dfb9
梁灏
update Table
|
651
652
653
654
655
656
|
if (deltaX > 0) {
$body.scrollLeft = $body.scrollLeft + 10;
} else {
$body.scrollLeft = $body.scrollLeft - 10;
}
|
52874e27
梁灏
update Table
|
657
|
},
|
9f853e3e
梁灏
update Table
|
658
659
660
661
|
sortData (data, type, index) {
const key = this.cloneColumns[index].key;
data.sort((a, b) => {
if (this.cloneColumns[index].sortMethod) {
|
da020a63
Rijn
Changed parameter...
|
662
|
return this.cloneColumns[index].sortMethod(a[key], b[key], type);
|
9f853e3e
梁灏
update Table
|
663
|
} else {
|
89670198
梁灏
publish 0.9.9-rc-5
|
664
665
666
667
668
|
if (type === 'asc') {
return a[key] > b[key] ? 1 : -1;
} else if (type === 'desc') {
return a[key] < b[key] ? 1 : -1;
}
|
9f853e3e
梁灏
update Table
|
669
670
671
672
|
}
});
return data;
},
|
b34e09b8
梁灏
fixed #2832
|
673
674
|
handleSort (_index, type) {
const index = this.GetOriginalIndex(_index);
|
35ad3764
梁灏
update Table
|
675
676
677
|
this.cloneColumns.forEach((col) => col._sortType = 'normal');
const key = this.cloneColumns[index].key;
|
642299b9
梁灏
update Table
|
678
|
if (this.cloneColumns[index].sortable !== 'custom') { // custom is for remote sort
|
9f853e3e
梁灏
update Table
|
679
|
if (type === 'normal') {
|
97edb2eb
梁灏
update Table
|
680
|
this.rebuildData = this.makeDataWithFilter();
|
9f853e3e
梁灏
update Table
|
681
682
|
} else {
this.rebuildData = this.sortData(this.rebuildData, type, index);
|
642299b9
梁灏
update Table
|
683
|
}
|
52874e27
梁灏
update Table
|
684
|
}
|
35ad3764
梁灏
update Table
|
685
686
687
|
this.cloneColumns[index]._sortType = type;
this.$emit('on-sort-change', {
|
1acabf79
梁灏
Table support mul...
|
688
|
column: JSON.parse(JSON.stringify(this.allColumns[this.cloneColumns[index]._index])),
|
35ad3764
梁灏
update Table
|
689
690
|
key: key,
order: type
|
9f853e3e
梁灏
update Table
|
691
|
});
|
741b987a
梁灏
update Table
|
692
|
},
|
adaeca88
梁灏
update Table
|
693
694
695
|
handleFilterHide (index) { // clear checked that not filter now
if (!this.cloneColumns[index]._isFiltered) this.cloneColumns[index]._filterChecked = [];
},
|
cb31ede0
梁灏
update Table
|
696
697
|
filterData (data, column) {
return data.filter((row) => {
|
73ae27d8
梁灏
update Table filt...
|
698
|
//如果定义了远程过滤方法则忽略此方法
|
257bc4e6
H
filterRemote过滤时,单...
|
699
|
if (typeof column.filterRemote === 'function') return true;
|
73ae27d8
梁灏
update Table filt...
|
700
|
|
cb31ede0
梁灏
update Table
|
701
|
let status = !column._filterChecked.length;
|
adaeca88
梁灏
update Table
|
702
703
704
705
706
707
|
for (let i = 0; i < column._filterChecked.length; i++) {
status = column.filterMethod(column._filterChecked[i], row);
if (status) break;
}
return status;
});
|
cb31ede0
梁灏
update Table
|
708
709
|
},
filterOtherData (data, index) {
|
12bcf7bd
H
添加 remoteFilter方法...
|
710
|
let column = this.cloneColumns[index];
|
73ae27d8
梁灏
update Table filt...
|
711
712
|
if (typeof column.filterRemote === 'function') {
column.filterRemote.call(this.$parent, column._filterChecked, column.key, column);
|
12bcf7bd
H
添加 remoteFilter方法...
|
713
714
|
}
|
cb31ede0
梁灏
update Table
|
715
716
717
718
719
720
721
722
723
|
this.cloneColumns.forEach((col, colIndex) => {
if (colIndex !== index) {
data = this.filterData(data, col);
}
});
return data;
},
handleFilter (index) {
const column = this.cloneColumns[index];
|
9f853e3e
梁灏
update Table
|
724
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
725
726
727
728
729
|
// filter others first, after filter this column
filterData = this.filterOtherData(filterData, index);
this.rebuildData = this.filterData(filterData, column);
|
adaeca88
梁灏
update Table
|
730
731
|
this.cloneColumns[index]._isFiltered = true;
this.cloneColumns[index]._filterVisible = false;
|
6c634aa6
梁灏
fixed #2078
|
732
|
this.$emit('on-filter-change', column);
|
adaeca88
梁灏
update Table
|
733
|
},
|
b34e09b8
梁灏
fixed #2832
|
734
735
736
737
738
739
740
741
742
743
744
745
|
/**
* #2832
* 应该区分当前表头的 column 是左固定还是右固定
* 否则执行到 $parent 时,方法的 index 与 cloneColumns 的 index 是不对应的
* 左固定和右固定,要区分对待
* 所以,此方法用来获取正确的 index
* */
GetOriginalIndex (_index) {
return this.cloneColumns.findIndex(item => item._index === _index);
},
handleFilterSelect (_index, value) {
const index = this.GetOriginalIndex(_index);
|
45e7ed7e
梁灏
update Table
|
746
747
748
|
this.cloneColumns[index]._filterChecked = [value];
this.handleFilter(index);
},
|
b34e09b8
梁灏
fixed #2832
|
749
750
|
handleFilterReset (_index) {
const index = this.GetOriginalIndex(_index);
|
adaeca88
梁灏
update Table
|
751
|
this.cloneColumns[index]._isFiltered = false;
|
45e7ed7e
梁灏
update Table
|
752
753
|
this.cloneColumns[index]._filterVisible = false;
this.cloneColumns[index]._filterChecked = [];
|
cb31ede0
梁灏
update Table
|
754
|
|
9f853e3e
梁灏
update Table
|
755
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
756
757
|
filterData = this.filterOtherData(filterData, index);
this.rebuildData = filterData;
|
6c634aa6
梁灏
fixed #2078
|
758
|
this.$emit('on-filter-change', this.cloneColumns[index]);
|
adaeca88
梁灏
update Table
|
759
|
},
|
741b987a
梁灏
update Table
|
760
761
|
makeData () {
let data = deepCopy(this.data);
|
68b308ee
梁灏
fixex #1353
|
762
763
764
765
|
data.forEach((row, index) => {
row._index = index;
row._rowKey = rowKey++;
});
|
741b987a
梁灏
update Table
|
766
|
return data;
|
d3dfdb26
梁灏
update Table
|
767
|
},
|
9f853e3e
梁灏
update Table
|
768
769
770
771
|
makeDataWithSort () {
let data = this.makeData();
let sortType = 'normal';
let sortIndex = -1;
|
2533a192
梁灏
update DatePicker
|
772
773
|
let isCustom = false;
|
9f853e3e
梁灏
update Table
|
774
775
776
777
|
for (let i = 0; i < this.cloneColumns.length; i++) {
if (this.cloneColumns[i]._sortType !== 'normal') {
sortType = this.cloneColumns[i]._sortType;
sortIndex = i;
|
2533a192
梁灏
update DatePicker
|
778
|
isCustom = this.cloneColumns[i].sortable === 'custom';
|
9f853e3e
梁灏
update Table
|
779
780
781
|
break;
}
}
|
2533a192
梁灏
update DatePicker
|
782
|
if (sortType !== 'normal' && !isCustom) data = this.sortData(data, sortType, sortIndex);
|
9f853e3e
梁灏
update Table
|
783
784
|
return data;
},
|
97edb2eb
梁灏
update Table
|
785
786
787
788
789
790
791
792
793
794
|
makeDataWithFilter () {
let data = this.makeData();
this.cloneColumns.forEach(col => data = this.filterData(data, col));
return data;
},
makeDataWithSortAndFilter () {
let data = this.makeDataWithSort();
this.cloneColumns.forEach(col => data = this.filterData(data, col));
return data;
},
|
d3dfdb26
梁灏
update Table
|
795
796
797
798
799
|
makeObjData () {
let data = {};
this.data.forEach((row, index) => {
const newRow = deepCopy(row);// todo 直接替换
newRow._isHover = false;
|
08fd628d
Aresn
Table support expand
|
800
|
if (newRow._disabled) {
|
c7315098
leonine
修复两个问题:
|
801
|
newRow._isDisabled = newRow._disabled;
|
08fd628d
Aresn
Table support expand
|
802
|
} else {
|
c7315098
leonine
修复两个问题:
|
803
804
|
newRow._isDisabled = false;
}
|
2404849c
leonine
合并原作者更新
|
805
|
if (newRow._checked) {
|
03773f7e
梁灏
update
|
806
|
newRow._isChecked = newRow._checked;
|
2404849c
leonine
合并原作者更新
|
807
|
} else {
|
1594942f
leonine
itable 添加设置默认选中行的功能
|
808
809
|
newRow._isChecked = false;
}
|
08fd628d
Aresn
Table support expand
|
810
811
812
813
814
|
if (newRow._expanded) {
newRow._isExpanded = newRow._expanded;
} else {
newRow._isExpanded = false;
}
|
2404849c
leonine
合并原作者更新
|
815
816
817
818
819
|
if (newRow._highlight) {
newRow._isHighlight = newRow._highlight;
} else {
newRow._isHighlight = false;
}
|
d3dfdb26
梁灏
update Table
|
820
821
822
|
data[index] = newRow;
});
return data;
|
35ad3764
梁灏
update Table
|
823
824
|
},
makeColumns () {
|
1acabf79
梁灏
Table support mul...
|
825
826
|
// 在 data 时,this.allColumns 暂时为 undefined
let columns = deepCopy(getAllColumns(this.columns));
|
35ad3764
梁灏
update Table
|
827
828
829
830
831
|
let left = [];
let right = [];
let center = [];
columns.forEach((column, index) => {
|
35ad3764
梁灏
update Table
|
832
|
column._index = index;
|
68b308ee
梁灏
fixex #1353
|
833
|
column._columnKey = columnKey++;
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
834
|
column._width = column.width ? column.width : ''; // update in handleResize()
|
99f80db0
梁灏
update Table
|
835
836
837
838
|
column._sortType = 'normal';
column._filterVisible = false;
column._isFiltered = false;
column._filterChecked = [];
|
35ad3764
梁灏
update Table
|
839
|
|
adaeca88
梁灏
update Table
|
840
841
842
843
844
|
if ('filterMultiple' in column) {
column._filterMultiple = column.filterMultiple;
} else {
column._filterMultiple = true;
}
|
5d0499ce
梁灏
update Table
|
845
846
847
848
|
if ('filteredValue' in column) {
column._filterChecked = column.filteredValue;
column._isFiltered = true;
}
|
adaeca88
梁灏
update Table
|
849
|
|
835b37ff
梁灏
fixed #1403
|
850
851
852
853
|
if ('sortType' in column) {
column._sortType = column.sortType;
}
|
35ad3764
梁灏
update Table
|
854
855
856
857
858
859
860
861
862
|
if (column.fixed && column.fixed === 'left') {
left.push(column);
} else if (column.fixed && column.fixed === 'right') {
right.push(column);
} else {
center.push(column);
}
});
return left.concat(center).concat(right);
|
43509ad8
梁灏
Table support exp...
|
863
|
},
|
1acabf79
梁灏
Table support mul...
|
864
|
// create a multiple table-head
|
c1e965c3
梁灏
fixed-head
|
865
866
|
makeColumnRows (fixedType) {
return convertToRows(this.columns, fixedType);
|
1acabf79
梁灏
Table support mul...
|
867
|
},
|
43509ad8
梁灏
Table support exp...
|
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
|
exportCsv (params) {
if (params.filename) {
if (params.filename.indexOf('.csv') === -1) {
params.filename += '.csv';
}
} else {
params.filename = 'table.csv';
}
let columns = [];
let datas = [];
if (params.columns && params.data) {
columns = params.columns;
datas = params.data;
} else {
|
1acabf79
梁灏
Table support mul...
|
883
|
columns = this.allColumns;
|
43509ad8
梁灏
Table support exp...
|
884
885
886
887
888
889
890
|
if (!('original' in params)) params.original = true;
datas = params.original ? this.data : this.rebuildData;
}
let noHeader = false;
if ('noHeader' in params) noHeader = params.noHeader;
|
fb847998
Sergio Crisostomo
Improve export to...
|
891
892
893
|
const data = Csv(columns, datas, params, noHeader);
if (params.callback) params.callback(data);
else ExportCsv.download(params.filename, data);
|
2cb8a6d9
梁灏
commit Table comp...
|
894
895
|
}
},
|
486d4fda
梁灏
update Table
|
896
|
created () {
|
d8892603
梁灏
Table prop: conte...
|
897
|
if (!this.context) this.currentContext = this.$parent;
|
7409cb3c
梁灏
fixed #549
|
898
899
|
this.showSlotHeader = this.$slots.header !== undefined;
this.showSlotFooter = this.$slots.footer !== undefined;
|
5d0499ce
梁灏
update Table
|
900
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
e7e8c8ff
梁灏
update Table
|
901
|
},
|
486d4fda
梁灏
update Table
|
902
|
mounted () {
|
a3547c1b
梁灏
update Table
|
903
|
this.handleResize();
|
e7e8c8ff
梁灏
update Table
|
904
|
this.fixedHeader();
|
adaeca88
梁灏
update Table
|
905
|
this.$nextTick(() => this.ready = true);
|
c5beedf8
梁灏
fixed #690
|
906
|
|
f00b5343
梁灏
update Table
|
907
|
on(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
908
909
910
|
this.observer = elementResizeDetectorMaker();
this.observer.listenTo(this.$el, this.handleResize);
|
67c9b1c8
梁灏
fixed #591
|
911
|
this.$on('on-visible-change', (val) => {
|
a6eee4e5
梁灏
update Table
|
912
913
914
915
|
if (val) {
this.handleResize();
this.fixedHeader();
}
|
67c9b1c8
梁灏
fixed #591
|
916
|
});
|
744eb0af
梁灏
update Table comp...
|
917
918
|
},
beforeDestroy () {
|
f00b5343
梁灏
update Table
|
919
|
off(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
920
|
this.observer.removeListener(this.$el, this.handleResize);
|
2cb8a6d9
梁灏
commit Table comp...
|
921
922
923
924
|
},
watch: {
data: {
handler () {
|
119eeafe
梁灏
fixed a Table bug
|
925
|
const oldDataLen = this.rebuildData.length;
|
d3dfdb26
梁灏
update Table
|
926
|
this.objData = this.makeObjData();
|
97edb2eb
梁灏
update Table
|
927
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
928
|
this.handleResize();
|
119eeafe
梁灏
fixed a Table bug
|
929
930
931
|
if (!oldDataLen) {
this.fixedHeader();
}
|
63f2e0f4
梁灏
fixed Table bug w...
|
932
933
934
935
|
// here will trigger before clickCurrentRow, so use async
setTimeout(() => {
this.cloneData = deepCopy(this.data);
}, 0);
|
2cb8a6d9
梁灏
commit Table comp...
|
936
937
938
939
940
|
},
deep: true
},
columns: {
handler () {
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
941
|
// todo 这里有性能问题,可能是左右固定计算属性影响的
|
1acabf79
梁灏
Table support mul...
|
942
|
this.allColumns = getAllColumns(this.columns);
|
35ad3764
梁灏
update Table
|
943
|
this.cloneColumns = this.makeColumns();
|
c1e965c3
梁灏
fixed-head
|
944
945
946
|
this.columnRows = this.makeColumnRows(false);
this.leftFixedColumnRows = this.makeColumnRows('left');
this.rightFixedColumnRows = this.makeColumnRows('right');
|
97edb2eb
梁灏
update Table
|
947
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
948
|
this.handleResize();
|
2cb8a6d9
梁灏
commit Table comp...
|
949
950
|
},
deep: true
|
e7e8c8ff
梁灏
update Table
|
951
952
|
},
height () {
|
b08bd8a8
huanghong
fixed height changed
|
953
|
this.handleResize();
|
e7e8c8ff
梁灏
update Table
|
954
|
this.fixedHeader();
|
75803add
huanghong
fixed scoll bar
|
955
956
957
958
|
},
showHorizontalScrollBar () {
this.handleResize();
this.fixedHeader();
|
2cb8a6d9
梁灏
commit Table comp...
|
959
960
|
}
}
|
b0893113
jingsam
add eslint
|
961
962
|
};
</script>
|