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
|
if (this.height) {
|
b3ef1c63
huanghong
column add prop m...
|
254
|
const height = parseInt(this.height);
|
3d6fa54b
梁灏
update Table
|
255
256
|
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
|
if (this.bodyHeight !== 0) {
|
b3ef1c63
huanghong
column add prop m...
|
321
|
const height = this.bodyHeight;
|
3d6fa54b
梁灏
update Table
|
322
323
|
style.height = `${height}px`;
}
|
e7e8c8ff
梁灏
update Table
|
324
|
return style;
|
b8a43000
梁灏
update Table
|
325
326
327
|
},
fixedBodyStyle () {
let style = {};
|
3d6fa54b
梁灏
update Table
|
328
|
if (this.bodyHeight !== 0) {
|
b3ef1c63
huanghong
column add prop m...
|
329
330
|
let height = this.bodyHeight - (this.showHorizontalScrollBar?this.scrollBarWidth:0);
style.height = this.showHorizontalScrollBar ? `${height}px` : `${height - 1}px`;
|
3d6fa54b
梁灏
update Table
|
331
|
}
|
b8a43000
梁灏
update Table
|
332
|
return style;
|
35ad3764
梁灏
update Table
|
333
334
|
},
leftFixedColumns () {
|
1acabf79
梁灏
Table support mul...
|
335
|
return convertColumnOrder(this.cloneColumns, 'left');
|
35ad3764
梁灏
update Table
|
336
337
|
},
rightFixedColumns () {
|
1acabf79
梁灏
Table support mul...
|
338
|
return convertColumnOrder(this.cloneColumns, 'right');
|
a81dc06c
梁灏
publish 0.9.9-rc-4
|
339
340
341
342
343
344
|
},
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...
|
345
346
347
|
}
},
methods: {
|
e7e8c8ff
梁灏
update Table
|
348
349
350
|
rowClsName (index) {
return this.rowClassName(this.data[index], index);
},
|
a3547c1b
梁灏
update Table
|
351
|
handleResize () {
|
2cb8a6d9
梁灏
commit Table comp...
|
352
|
this.$nextTick(() => {
|
1acabf79
梁灏
Table support mul...
|
353
|
const allWidth = !this.allColumns.some(cell => !cell.width); // each column set a width
|
a3547c1b
梁灏
update Table
|
354
|
if (allWidth) {
|
1acabf79
梁灏
Table support mul...
|
355
|
this.tableWidth = this.allColumns.map(cell => cell.width).reduce((a, b) => a + b, 0);
|
a3547c1b
梁灏
update Table
|
356
357
|
} else {
this.tableWidth = parseInt(getStyle(this.$el, 'width')) - 1;
|
2cb8a6d9
梁灏
commit Table comp...
|
358
|
}
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
359
|
this.columnsWidth = {};
|
a3547c1b
梁灏
update Table
|
360
|
this.$nextTick(() => {
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
361
|
let columnsWidth = {};
|
192e2cb8
梁灏
update Table
|
362
|
|
77201524
huanghong
column add prop m...
|
363
364
365
366
367
368
369
370
371
372
373
374
|
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...
|
375
|
}
|
77201524
huanghong
column add prop m...
|
376
377
378
379
|
if(col.maxWidth){
maxWidthColumns.push(col);
}
}
|
b3ef1c63
huanghong
column add prop m...
|
380
|
col._width = null;
|
77201524
huanghong
column add prop m...
|
381
|
});
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
382
|
|
77201524
huanghong
column add prop m...
|
383
384
|
minWidthColumns.sort((a,b)=>a.minWidth > b.minWidth);
maxWidthColumns.sort((a,b)=>a.maxWidth < b.maxWidth);
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
385
|
|
77201524
huanghong
column add prop m...
|
386
387
388
389
390
391
392
|
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){
|
b3ef1c63
huanghong
column add prop m...
|
393
|
maxWidthColumns[i]._width = maxWidthColumns[i].maxWidth;
|
77201524
huanghong
column add prop m...
|
394
395
396
|
usableWidth -= maxWidthColumns[i].maxWidth;
usableLength--;
columnWidth = parseInt(usableWidth / usableLength);
|
2cb8a6d9
梁灏
commit Table comp...
|
397
|
}
|
77201524
huanghong
column add prop m...
|
398
399
400
|
}
for (let i = 0; i < minWidthColumns.length; i++) {
|
b3ef1c63
huanghong
column add prop m...
|
401
402
|
if(columnWidth < minWidthColumns[i].minWidth && !minWidthColumns[i].width){
minWidthColumns[i]._width = minWidthColumns[i].minWidth;
|
77201524
huanghong
column add prop m...
|
403
404
405
406
407
|
usableWidth -= minWidthColumns[i].minWidth;
usableLength--;
columnWidth = parseInt(usableWidth / usableLength);
}
}
|
14d1de05
huanghong
fix table changin...
|
408
|
|
77201524
huanghong
column add prop m...
|
409
410
411
412
413
414
415
416
417
418
419
|
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{
|
b3ef1c63
huanghong
column add prop m...
|
420
421
422
423
|
if(column._width){
width = column._width;
}
else if (column.minWidth > width){
|
77201524
huanghong
column add prop m...
|
424
425
426
427
428
429
430
431
432
433
434
|
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...
|
435
|
}
|
77201524
huanghong
column add prop m...
|
436
437
|
}
|
77201524
huanghong
column add prop m...
|
438
439
440
441
442
443
|
this.cloneColumns[i]._width = width;
columnsWidth[column._index] = {
width: width
};
|
192e2cb8
梁灏
update Table
|
444
|
}
|
b3ef1c63
huanghong
column add prop m...
|
445
|
//this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0);
|
77201524
huanghong
column add prop m...
|
446
447
448
|
this.columnsWidth = columnsWidth;
this.$nextTick(()=>{
this.fixedHeader();
|
b3ef1c63
huanghong
column add prop m...
|
449
|
|
77201524
huanghong
column add prop m...
|
450
|
});
|
744eb0af
梁灏
update Table comp...
|
451
|
});
|
d16dce64
梁灏
fixed #193
|
452
453
|
// 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...
|
454
455
|
});
},
|
d3dfdb26
梁灏
update Table
|
456
|
handleMouseIn (_index) {
|
174158b1
Lawrence Lee
change disable-ho...
|
457
|
if (this.disabledHover) return;
|
d3dfdb26
梁灏
update Table
|
458
459
|
if (this.objData[_index]._isHover) return;
this.objData[_index]._isHover = true;
|
abdec99d
梁灏
update Table
|
460
|
},
|
d3dfdb26
梁灏
update Table
|
461
|
handleMouseOut (_index) {
|
174158b1
Lawrence Lee
change disable-ho...
|
462
|
if (this.disabledHover) return;
|
d3dfdb26
梁灏
update Table
|
463
|
this.objData[_index]._isHover = false;
|
abdec99d
梁灏
update Table
|
464
|
},
|
3aca3d56
梁灏
fixed #1372
|
465
466
|
// 通用处理 highlightCurrentRow 和 clearCurrentRow
handleCurrentRow (type, _index) {
|
0d136465
梁灏
update Table
|
467
|
let oldIndex = -1;
|
d3dfdb26
梁灏
update Table
|
468
469
470
471
|
for (let i in this.objData) {
if (this.objData[i]._isHighlight) {
oldIndex = parseInt(i);
this.objData[i]._isHighlight = false;
|
0d136465
梁灏
update Table
|
472
|
}
|
d3dfdb26
梁灏
update Table
|
473
|
}
|
3aca3d56
梁灏
fixed #1372
|
474
|
if (type === 'highlight') this.objData[_index]._isHighlight = true;
|
63f2e0f4
梁灏
fixed Table bug w...
|
475
|
const oldData = oldIndex < 0 ? null : JSON.parse(JSON.stringify(this.cloneData[oldIndex]));
|
3aca3d56
梁灏
fixed #1372
|
476
477
478
479
480
481
482
483
484
485
|
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
|
486
|
},
|
da55375f
Rijn
Added click and d...
|
487
488
|
clickCurrentRow (_index) {
this.highlightCurrentRow (_index);
|
ade5dbba
梁灏
fixed #693
|
489
|
this.$emit('on-row-click', JSON.parse(JSON.stringify(this.cloneData[_index])), _index);
|
da55375f
Rijn
Added click and d...
|
490
491
492
|
},
dblclickCurrentRow (_index) {
this.highlightCurrentRow (_index);
|
ade5dbba
梁灏
fixed #693
|
493
|
this.$emit('on-row-dblclick', JSON.parse(JSON.stringify(this.cloneData[_index])), _index);
|
da55375f
Rijn
Added click and d...
|
494
|
},
|
0d136465
梁灏
update Table
|
495
496
|
getSelection () {
let selectionIndexes = [];
|
d3dfdb26
梁灏
update Table
|
497
498
499
|
for (let i in this.objData) {
if (this.objData[i]._isChecked) selectionIndexes.push(parseInt(i));
}
|
0d136465
梁灏
update Table
|
500
501
|
return JSON.parse(JSON.stringify(this.data.filter((data, index) => selectionIndexes.indexOf(index) > -1)));
},
|
d3dfdb26
梁灏
update Table
|
502
|
toggleSelect (_index) {
|
741b987a
梁灏
update Table
|
503
|
let data = {};
|
d3dfdb26
梁灏
update Table
|
504
505
506
507
|
for (let i in this.objData) {
if (parseInt(i) === _index) {
data = this.objData[i];
|
14cfcf3c
Kevin
Performance Impro...
|
508
|
break;
|
741b987a
梁灏
update Table
|
509
510
511
|
}
}
const status = !data._isChecked;
|
d3dfdb26
梁灏
update Table
|
512
513
|
this.objData[_index]._isChecked = status;
|
0d136465
梁灏
update Table
|
514
515
|
const selection = this.getSelection();
|
b0f1c61f
Rijn
add a event @on-s...
|
516
|
this.$emit(status ? 'on-select' : 'on-select-cancel', selection, JSON.parse(JSON.stringify(this.data[_index])));
|
0d136465
梁灏
update Table
|
517
518
|
this.$emit('on-selection-change', selection);
},
|
08fd628d
Aresn
Table support expand
|
519
520
521
522
523
524
|
toggleExpand (_index) {
let data = {};
for (let i in this.objData) {
if (parseInt(i) === _index) {
data = this.objData[i];
|
14cfcf3c
Kevin
Performance Impro...
|
525
|
break;
|
08fd628d
Aresn
Table support expand
|
526
527
528
529
530
531
|
}
}
const status = !data._isExpanded;
this.objData[_index]._isExpanded = status;
this.$emit('on-expand', JSON.parse(JSON.stringify(this.cloneData[_index])), status);
},
|
3d9e4f20
梁灏
update Table
|
532
|
selectAll (status) {
|
cd85c675
leonine
修改_checked=true 时...
|
533
534
535
536
537
538
|
// 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...
|
539
|
|
cd85c675
leonine
修改_checked=true 时...
|
540
541
|
// });
for(const data of this.rebuildData){
|
0dcc9482
leonine
itable 添加禁用某行选中的功能
|
542
|
if(this.objData[data._index]._isDisabled){
|
cd85c675
leonine
修改_checked=true 时...
|
543
|
continue;
|
0dcc9482
leonine
itable 添加禁用某行选中的功能
|
544
545
546
|
}else{
this.objData[data._index]._isChecked = status;
}
|
cd85c675
leonine
修改_checked=true 时...
|
547
|
}
|
52874e27
梁灏
update Table
|
548
|
const selection = this.getSelection();
|
3d9e4f20
梁灏
update Table
|
549
|
if (status) {
|
52874e27
梁灏
update Table
|
550
|
this.$emit('on-select-all', selection);
|
3d9e4f20
梁灏
update Table
|
551
|
}
|
52874e27
梁灏
update Table
|
552
|
this.$emit('on-selection-change', selection);
|
e7e8c8ff
梁灏
update Table
|
553
|
},
|
47638ad8
huanghong
fixed table scrol...
|
554
|
|
e7e8c8ff
梁灏
update Table
|
555
|
fixedHeader () {
|
b0893113
jingsam
add eslint
|
556
|
if (this.height) {
|
e7e8c8ff
梁灏
update Table
|
557
|
this.$nextTick(() => {
|
486d4fda
梁灏
update Table
|
558
559
560
|
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
|
561
|
this.bodyHeight = this.height - titleHeight - headerHeight - footerHeight;
|
b3ef1c63
huanghong
column add prop m...
|
562
|
this.fixedBody();
|
b0893113
jingsam
add eslint
|
563
|
});
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
564
565
|
} else {
this.bodyHeight = 0;
|
b3ef1c63
huanghong
column add prop m...
|
566
|
this.fixedBody();
|
e7e8c8ff
梁灏
update Table
|
567
|
}
|
abdec99d
梁灏
update Table
|
568
|
},
|
b3ef1c63
huanghong
column add prop m...
|
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
fixedBody (){
this.headerWidth = this.$refs.header.childNodes[0].offsetWidth;
this.headerHeight = this.$refs.header.childNodes[0].offsetHeight;
this.showHorizontalScrollBar = this.headerWidth>this.$refs.header.parentElement.offsetWidth;
if (!this.$refs.tbody) {
this.showVerticalScrollBar = false;
return;
}
else{
let bodyContentEl = this.$refs.tbody.$el;
let bodyEl = bodyContentEl.parentElement;
let bodyContentHeight = bodyContentEl.offsetHeight;
let bodyHeight = bodyEl.offsetHeight;
let scrollBarWidth = 0;
this.showVerticalScrollBar = this.bodyHeight? bodyHeight - (this.showHorizontalScrollBar?this.scrollBarWidth:0) < bodyContentHeight : false;
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);
}
},
|
99f80db0
梁灏
update Table
|
600
601
602
|
hideColumnFilter () {
this.cloneColumns.forEach((col) => col._filterVisible = false);
},
|
192e2cb8
梁灏
update Table
|
603
|
handleBodyScroll (event) {
|
486d4fda
梁灏
update Table
|
604
605
606
|
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
|
607
|
this.hideColumnFilter();
|
192e2cb8
梁灏
update Table
|
608
|
},
|
e25070eb
huanghong
fixed #2871
|
609
|
handleFixedMousewheel(event) {
|
e970884b
huanghong
mousewheel suppor...
|
610
611
612
613
614
615
616
|
let deltaY = event.deltaY;
if(!deltaY && event.detail){
deltaY = event.detail * 40;
}
if(!deltaY && event.wheelDeltaY){
deltaY = -event.wheelDeltaY;
}
|
a796b2c5
huanghong
support ie Mousew...
|
617
618
619
|
if(!deltaY && event.wheelDelta){
deltaY = -event.wheelDelta;
}
|
e970884b
huanghong
mousewheel suppor...
|
620
|
if(!deltaY) return;
|
e25070eb
huanghong
fixed #2871
|
621
622
623
624
625
626
627
628
629
630
631
|
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...
|
632
|
step += 5;
|
e25070eb
huanghong
fixed #2871
|
633
|
if(deltaY>0){
|
7f2e78d8
huanghong
Decrease table sc...
|
634
|
body.scrollTop += 2;
|
e25070eb
huanghong
fixed #2871
|
635
636
|
}
else{
|
7f2e78d8
huanghong
Decrease table sc...
|
637
|
body.scrollTop -= 2;
|
e25070eb
huanghong
fixed #2871
|
638
|
}
|
7f2e78d8
huanghong
Decrease table sc...
|
639
|
if(step >= Math.abs(deltaY)){
|
e25070eb
huanghong
fixed #2871
|
640
641
|
clearInterval(timeId);
}
|
7f2e78d8
huanghong
Decrease table sc...
|
642
|
}, 5);
|
e25070eb
huanghong
fixed #2871
|
643
|
},
|
3ef4dfb9
梁灏
update Table
|
644
645
|
handleMouseWheel (event) {
const deltaX = event.deltaX;
|
486d4fda
梁灏
update Table
|
646
|
const $body = this.$refs.body;
|
3ef4dfb9
梁灏
update Table
|
647
648
649
650
651
652
|
if (deltaX > 0) {
$body.scrollLeft = $body.scrollLeft + 10;
} else {
$body.scrollLeft = $body.scrollLeft - 10;
}
|
52874e27
梁灏
update Table
|
653
|
},
|
9f853e3e
梁灏
update Table
|
654
655
656
657
|
sortData (data, type, index) {
const key = this.cloneColumns[index].key;
data.sort((a, b) => {
if (this.cloneColumns[index].sortMethod) {
|
da020a63
Rijn
Changed parameter...
|
658
|
return this.cloneColumns[index].sortMethod(a[key], b[key], type);
|
9f853e3e
梁灏
update Table
|
659
|
} else {
|
89670198
梁灏
publish 0.9.9-rc-5
|
660
661
662
663
664
|
if (type === 'asc') {
return a[key] > b[key] ? 1 : -1;
} else if (type === 'desc') {
return a[key] < b[key] ? 1 : -1;
}
|
9f853e3e
梁灏
update Table
|
665
666
667
668
|
}
});
return data;
},
|
b34e09b8
梁灏
fixed #2832
|
669
670
|
handleSort (_index, type) {
const index = this.GetOriginalIndex(_index);
|
35ad3764
梁灏
update Table
|
671
672
673
|
this.cloneColumns.forEach((col) => col._sortType = 'normal');
const key = this.cloneColumns[index].key;
|
642299b9
梁灏
update Table
|
674
|
if (this.cloneColumns[index].sortable !== 'custom') { // custom is for remote sort
|
9f853e3e
梁灏
update Table
|
675
|
if (type === 'normal') {
|
97edb2eb
梁灏
update Table
|
676
|
this.rebuildData = this.makeDataWithFilter();
|
9f853e3e
梁灏
update Table
|
677
678
|
} else {
this.rebuildData = this.sortData(this.rebuildData, type, index);
|
642299b9
梁灏
update Table
|
679
|
}
|
52874e27
梁灏
update Table
|
680
|
}
|
35ad3764
梁灏
update Table
|
681
682
683
|
this.cloneColumns[index]._sortType = type;
this.$emit('on-sort-change', {
|
1acabf79
梁灏
Table support mul...
|
684
|
column: JSON.parse(JSON.stringify(this.allColumns[this.cloneColumns[index]._index])),
|
35ad3764
梁灏
update Table
|
685
686
|
key: key,
order: type
|
9f853e3e
梁灏
update Table
|
687
|
});
|
741b987a
梁灏
update Table
|
688
|
},
|
adaeca88
梁灏
update Table
|
689
690
691
|
handleFilterHide (index) { // clear checked that not filter now
if (!this.cloneColumns[index]._isFiltered) this.cloneColumns[index]._filterChecked = [];
},
|
cb31ede0
梁灏
update Table
|
692
693
|
filterData (data, column) {
return data.filter((row) => {
|
73ae27d8
梁灏
update Table filt...
|
694
|
//如果定义了远程过滤方法则忽略此方法
|
257bc4e6
H
filterRemote过滤时,单...
|
695
|
if (typeof column.filterRemote === 'function') return true;
|
73ae27d8
梁灏
update Table filt...
|
696
|
|
cb31ede0
梁灏
update Table
|
697
|
let status = !column._filterChecked.length;
|
adaeca88
梁灏
update Table
|
698
699
700
701
702
703
|
for (let i = 0; i < column._filterChecked.length; i++) {
status = column.filterMethod(column._filterChecked[i], row);
if (status) break;
}
return status;
});
|
cb31ede0
梁灏
update Table
|
704
705
|
},
filterOtherData (data, index) {
|
12bcf7bd
H
添加 remoteFilter方法...
|
706
|
let column = this.cloneColumns[index];
|
73ae27d8
梁灏
update Table filt...
|
707
708
|
if (typeof column.filterRemote === 'function') {
column.filterRemote.call(this.$parent, column._filterChecked, column.key, column);
|
12bcf7bd
H
添加 remoteFilter方法...
|
709
710
|
}
|
cb31ede0
梁灏
update Table
|
711
712
713
714
715
716
717
718
719
|
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
|
720
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
721
722
723
724
725
|
// filter others first, after filter this column
filterData = this.filterOtherData(filterData, index);
this.rebuildData = this.filterData(filterData, column);
|
adaeca88
梁灏
update Table
|
726
727
|
this.cloneColumns[index]._isFiltered = true;
this.cloneColumns[index]._filterVisible = false;
|
6c634aa6
梁灏
fixed #2078
|
728
|
this.$emit('on-filter-change', column);
|
adaeca88
梁灏
update Table
|
729
|
},
|
b34e09b8
梁灏
fixed #2832
|
730
731
732
733
734
735
736
737
738
739
740
741
|
/**
* #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
|
742
743
744
|
this.cloneColumns[index]._filterChecked = [value];
this.handleFilter(index);
},
|
b34e09b8
梁灏
fixed #2832
|
745
746
|
handleFilterReset (_index) {
const index = this.GetOriginalIndex(_index);
|
adaeca88
梁灏
update Table
|
747
|
this.cloneColumns[index]._isFiltered = false;
|
45e7ed7e
梁灏
update Table
|
748
749
|
this.cloneColumns[index]._filterVisible = false;
this.cloneColumns[index]._filterChecked = [];
|
cb31ede0
梁灏
update Table
|
750
|
|
9f853e3e
梁灏
update Table
|
751
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
752
753
|
filterData = this.filterOtherData(filterData, index);
this.rebuildData = filterData;
|
6c634aa6
梁灏
fixed #2078
|
754
|
this.$emit('on-filter-change', this.cloneColumns[index]);
|
adaeca88
梁灏
update Table
|
755
|
},
|
741b987a
梁灏
update Table
|
756
757
|
makeData () {
let data = deepCopy(this.data);
|
68b308ee
梁灏
fixex #1353
|
758
759
760
761
|
data.forEach((row, index) => {
row._index = index;
row._rowKey = rowKey++;
});
|
741b987a
梁灏
update Table
|
762
|
return data;
|
d3dfdb26
梁灏
update Table
|
763
|
},
|
9f853e3e
梁灏
update Table
|
764
765
766
767
|
makeDataWithSort () {
let data = this.makeData();
let sortType = 'normal';
let sortIndex = -1;
|
2533a192
梁灏
update DatePicker
|
768
769
|
let isCustom = false;
|
9f853e3e
梁灏
update Table
|
770
771
772
773
|
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
|
774
|
isCustom = this.cloneColumns[i].sortable === 'custom';
|
9f853e3e
梁灏
update Table
|
775
776
777
|
break;
}
}
|
2533a192
梁灏
update DatePicker
|
778
|
if (sortType !== 'normal' && !isCustom) data = this.sortData(data, sortType, sortIndex);
|
9f853e3e
梁灏
update Table
|
779
780
|
return data;
},
|
97edb2eb
梁灏
update Table
|
781
782
783
784
785
786
787
788
789
790
|
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
|
791
792
793
794
795
|
makeObjData () {
let data = {};
this.data.forEach((row, index) => {
const newRow = deepCopy(row);// todo 直接替换
newRow._isHover = false;
|
08fd628d
Aresn
Table support expand
|
796
|
if (newRow._disabled) {
|
c7315098
leonine
修复两个问题:
|
797
|
newRow._isDisabled = newRow._disabled;
|
08fd628d
Aresn
Table support expand
|
798
|
} else {
|
c7315098
leonine
修复两个问题:
|
799
800
|
newRow._isDisabled = false;
}
|
2404849c
leonine
合并原作者更新
|
801
|
if (newRow._checked) {
|
03773f7e
梁灏
update
|
802
|
newRow._isChecked = newRow._checked;
|
2404849c
leonine
合并原作者更新
|
803
|
} else {
|
1594942f
leonine
itable 添加设置默认选中行的功能
|
804
805
|
newRow._isChecked = false;
}
|
08fd628d
Aresn
Table support expand
|
806
807
808
809
810
|
if (newRow._expanded) {
newRow._isExpanded = newRow._expanded;
} else {
newRow._isExpanded = false;
}
|
2404849c
leonine
合并原作者更新
|
811
812
813
814
815
|
if (newRow._highlight) {
newRow._isHighlight = newRow._highlight;
} else {
newRow._isHighlight = false;
}
|
d3dfdb26
梁灏
update Table
|
816
817
818
|
data[index] = newRow;
});
return data;
|
35ad3764
梁灏
update Table
|
819
820
|
},
makeColumns () {
|
1acabf79
梁灏
Table support mul...
|
821
822
|
// 在 data 时,this.allColumns 暂时为 undefined
let columns = deepCopy(getAllColumns(this.columns));
|
35ad3764
梁灏
update Table
|
823
824
825
826
827
|
let left = [];
let right = [];
let center = [];
columns.forEach((column, index) => {
|
35ad3764
梁灏
update Table
|
828
|
column._index = index;
|
68b308ee
梁灏
fixex #1353
|
829
|
column._columnKey = columnKey++;
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
830
|
column._width = column.width ? column.width : ''; // update in handleResize()
|
99f80db0
梁灏
update Table
|
831
832
833
834
|
column._sortType = 'normal';
column._filterVisible = false;
column._isFiltered = false;
column._filterChecked = [];
|
35ad3764
梁灏
update Table
|
835
|
|
adaeca88
梁灏
update Table
|
836
837
838
839
840
|
if ('filterMultiple' in column) {
column._filterMultiple = column.filterMultiple;
} else {
column._filterMultiple = true;
}
|
5d0499ce
梁灏
update Table
|
841
842
843
844
|
if ('filteredValue' in column) {
column._filterChecked = column.filteredValue;
column._isFiltered = true;
}
|
adaeca88
梁灏
update Table
|
845
|
|
835b37ff
梁灏
fixed #1403
|
846
847
848
849
|
if ('sortType' in column) {
column._sortType = column.sortType;
}
|
35ad3764
梁灏
update Table
|
850
851
852
853
854
855
856
857
858
|
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...
|
859
|
},
|
1acabf79
梁灏
Table support mul...
|
860
|
// create a multiple table-head
|
c1e965c3
梁灏
fixed-head
|
861
862
|
makeColumnRows (fixedType) {
return convertToRows(this.columns, fixedType);
|
1acabf79
梁灏
Table support mul...
|
863
|
},
|
43509ad8
梁灏
Table support exp...
|
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
|
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...
|
879
|
columns = this.allColumns;
|
43509ad8
梁灏
Table support exp...
|
880
881
882
883
884
885
886
|
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...
|
887
888
889
|
const data = Csv(columns, datas, params, noHeader);
if (params.callback) params.callback(data);
else ExportCsv.download(params.filename, data);
|
2cb8a6d9
梁灏
commit Table comp...
|
890
891
|
}
},
|
486d4fda
梁灏
update Table
|
892
|
created () {
|
d8892603
梁灏
Table prop: conte...
|
893
|
if (!this.context) this.currentContext = this.$parent;
|
7409cb3c
梁灏
fixed #549
|
894
895
|
this.showSlotHeader = this.$slots.header !== undefined;
this.showSlotFooter = this.$slots.footer !== undefined;
|
5d0499ce
梁灏
update Table
|
896
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
e7e8c8ff
梁灏
update Table
|
897
|
},
|
486d4fda
梁灏
update Table
|
898
|
mounted () {
|
a3547c1b
梁灏
update Table
|
899
|
this.handleResize();
|
adaeca88
梁灏
update Table
|
900
|
this.$nextTick(() => this.ready = true);
|
c5beedf8
梁灏
fixed #690
|
901
|
|
f00b5343
梁灏
update Table
|
902
|
on(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
903
904
905
|
this.observer = elementResizeDetectorMaker();
this.observer.listenTo(this.$el, this.handleResize);
|
67c9b1c8
梁灏
fixed #591
|
906
|
this.$on('on-visible-change', (val) => {
|
a6eee4e5
梁灏
update Table
|
907
908
|
if (val) {
this.handleResize();
|
a6eee4e5
梁灏
update Table
|
909
|
}
|
67c9b1c8
梁灏
fixed #591
|
910
|
});
|
744eb0af
梁灏
update Table comp...
|
911
912
|
},
beforeDestroy () {
|
f00b5343
梁灏
update Table
|
913
|
off(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
914
|
this.observer.removeListener(this.$el, this.handleResize);
|
2cb8a6d9
梁灏
commit Table comp...
|
915
916
917
918
|
},
watch: {
data: {
handler () {
|
119eeafe
梁灏
fixed a Table bug
|
919
|
const oldDataLen = this.rebuildData.length;
|
d3dfdb26
梁灏
update Table
|
920
|
this.objData = this.makeObjData();
|
97edb2eb
梁灏
update Table
|
921
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
922
|
this.handleResize();
|
119eeafe
梁灏
fixed a Table bug
|
923
924
925
|
if (!oldDataLen) {
this.fixedHeader();
}
|
63f2e0f4
梁灏
fixed Table bug w...
|
926
927
928
929
|
// here will trigger before clickCurrentRow, so use async
setTimeout(() => {
this.cloneData = deepCopy(this.data);
}, 0);
|
2cb8a6d9
梁灏
commit Table comp...
|
930
931
932
933
934
|
},
deep: true
},
columns: {
handler () {
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
935
|
// todo 这里有性能问题,可能是左右固定计算属性影响的
|
1acabf79
梁灏
Table support mul...
|
936
|
this.allColumns = getAllColumns(this.columns);
|
35ad3764
梁灏
update Table
|
937
|
this.cloneColumns = this.makeColumns();
|
c1e965c3
梁灏
fixed-head
|
938
939
940
|
this.columnRows = this.makeColumnRows(false);
this.leftFixedColumnRows = this.makeColumnRows('left');
this.rightFixedColumnRows = this.makeColumnRows('right');
|
97edb2eb
梁灏
update Table
|
941
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
942
|
this.handleResize();
|
2cb8a6d9
梁灏
commit Table comp...
|
943
944
|
},
deep: true
|
e7e8c8ff
梁灏
update Table
|
945
946
|
},
height () {
|
b08bd8a8
huanghong
fixed height changed
|
947
|
this.handleResize();
|
75803add
huanghong
fixed scoll bar
|
948
949
950
|
},
showHorizontalScrollBar () {
this.handleResize();
|
b3ef1c63
huanghong
column add prop m...
|
951
952
953
|
},
showVerticalScrollBar () {
this.handleResize();
|
2cb8a6d9
梁灏
commit Table comp...
|
954
955
|
}
}
|
b0893113
jingsam
add eslint
|
956
957
|
};
</script>
|