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