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;
|
fda6dfa2
huanghong
column add prop m...
|
569
|
this.fixedBody();
|
b0893113
jingsam
add eslint
|
570
|
});
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
571
572
|
} else {
this.bodyHeight = 0;
|
fda6dfa2
huanghong
column add prop m...
|
573
|
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
580
581
582
583
|
if (this.$refs.header) {
this.headerWidth = this.$refs.header.children[0].offsetWidth;
this.headerHeight = this.$refs.header.children[0].offsetHeight;
this.showHorizontalScrollBar = this.headerWidth>this.$refs.header.offsetWidth;
}
|
b1262a3d
huanghong
fixed no data wid...
|
584
|
if (!this.$refs.tbody || !this.data || this.data.length === 0) {
|
fda6dfa2
huanghong
column add prop m...
|
585
|
this.showVerticalScrollBar = false;
|
fda6dfa2
huanghong
column add prop m...
|
586
587
588
589
590
591
|
}
else{
let bodyContentEl = this.$refs.tbody.$el;
let bodyEl = bodyContentEl.parentElement;
let bodyContentHeight = bodyContentEl.offsetHeight;
let bodyHeight = bodyEl.offsetHeight;
|
f1dfa8ff
huanghong
fixed table show-...
|
592
593
|
if (!this.$refs.header) {
|
5c9c4dff
huanghong
update
|
594
|
this.showHorizontalScrollBar = bodyEl.offsetWidth < bodyContentEl.offsetWidth + (this.showVerticalScrollBar?this.scrollBarWidth:0);
|
f1dfa8ff
huanghong
fixed table show-...
|
595
|
}
|
fda6dfa2
huanghong
column add prop m...
|
596
597
598
599
600
601
602
603
604
605
606
607
608
|
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-...
|
609
|
}
|
fda6dfa2
huanghong
column add prop m...
|
610
611
|
},
|
99f80db0
梁灏
update Table
|
612
613
614
|
hideColumnFilter () {
this.cloneColumns.forEach((col) => col._filterVisible = false);
},
|
192e2cb8
梁灏
update Table
|
615
|
handleBodyScroll (event) {
|
486d4fda
梁灏
update Table
|
616
617
618
|
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
|
619
|
this.hideColumnFilter();
|
192e2cb8
梁灏
update Table
|
620
|
},
|
e25070eb
huanghong
fixed #2871
|
621
|
handleFixedMousewheel(event) {
|
e970884b
huanghong
mousewheel suppor...
|
622
623
624
625
626
627
628
|
let deltaY = event.deltaY;
if(!deltaY && event.detail){
deltaY = event.detail * 40;
}
if(!deltaY && event.wheelDeltaY){
deltaY = -event.wheelDeltaY;
}
|
a796b2c5
huanghong
support ie Mousew...
|
629
630
631
|
if(!deltaY && event.wheelDelta){
deltaY = -event.wheelDelta;
}
|
e970884b
huanghong
mousewheel suppor...
|
632
|
if(!deltaY) return;
|
e25070eb
huanghong
fixed #2871
|
633
634
635
636
637
638
639
640
641
642
643
|
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...
|
644
|
step += 5;
|
e25070eb
huanghong
fixed #2871
|
645
|
if(deltaY>0){
|
7f2e78d8
huanghong
Decrease table sc...
|
646
|
body.scrollTop += 2;
|
e25070eb
huanghong
fixed #2871
|
647
648
|
}
else{
|
7f2e78d8
huanghong
Decrease table sc...
|
649
|
body.scrollTop -= 2;
|
e25070eb
huanghong
fixed #2871
|
650
|
}
|
7f2e78d8
huanghong
Decrease table sc...
|
651
|
if(step >= Math.abs(deltaY)){
|
e25070eb
huanghong
fixed #2871
|
652
653
|
clearInterval(timeId);
}
|
7f2e78d8
huanghong
Decrease table sc...
|
654
|
}, 5);
|
e25070eb
huanghong
fixed #2871
|
655
|
},
|
3ef4dfb9
梁灏
update Table
|
656
657
|
handleMouseWheel (event) {
const deltaX = event.deltaX;
|
486d4fda
梁灏
update Table
|
658
|
const $body = this.$refs.body;
|
3ef4dfb9
梁灏
update Table
|
659
660
661
662
663
664
|
if (deltaX > 0) {
$body.scrollLeft = $body.scrollLeft + 10;
} else {
$body.scrollLeft = $body.scrollLeft - 10;
}
|
52874e27
梁灏
update Table
|
665
|
},
|
9f853e3e
梁灏
update Table
|
666
667
668
669
|
sortData (data, type, index) {
const key = this.cloneColumns[index].key;
data.sort((a, b) => {
if (this.cloneColumns[index].sortMethod) {
|
da020a63
Rijn
Changed parameter...
|
670
|
return this.cloneColumns[index].sortMethod(a[key], b[key], type);
|
9f853e3e
梁灏
update Table
|
671
|
} else {
|
89670198
梁灏
publish 0.9.9-rc-5
|
672
673
674
675
676
|
if (type === 'asc') {
return a[key] > b[key] ? 1 : -1;
} else if (type === 'desc') {
return a[key] < b[key] ? 1 : -1;
}
|
9f853e3e
梁灏
update Table
|
677
678
679
680
|
}
});
return data;
},
|
b34e09b8
梁灏
fixed #2832
|
681
682
|
handleSort (_index, type) {
const index = this.GetOriginalIndex(_index);
|
35ad3764
梁灏
update Table
|
683
684
685
|
this.cloneColumns.forEach((col) => col._sortType = 'normal');
const key = this.cloneColumns[index].key;
|
642299b9
梁灏
update Table
|
686
|
if (this.cloneColumns[index].sortable !== 'custom') { // custom is for remote sort
|
9f853e3e
梁灏
update Table
|
687
|
if (type === 'normal') {
|
97edb2eb
梁灏
update Table
|
688
|
this.rebuildData = this.makeDataWithFilter();
|
9f853e3e
梁灏
update Table
|
689
690
|
} else {
this.rebuildData = this.sortData(this.rebuildData, type, index);
|
642299b9
梁灏
update Table
|
691
|
}
|
52874e27
梁灏
update Table
|
692
|
}
|
35ad3764
梁灏
update Table
|
693
694
695
|
this.cloneColumns[index]._sortType = type;
this.$emit('on-sort-change', {
|
1acabf79
梁灏
Table support mul...
|
696
|
column: JSON.parse(JSON.stringify(this.allColumns[this.cloneColumns[index]._index])),
|
35ad3764
梁灏
update Table
|
697
698
|
key: key,
order: type
|
9f853e3e
梁灏
update Table
|
699
|
});
|
741b987a
梁灏
update Table
|
700
|
},
|
adaeca88
梁灏
update Table
|
701
702
703
|
handleFilterHide (index) { // clear checked that not filter now
if (!this.cloneColumns[index]._isFiltered) this.cloneColumns[index]._filterChecked = [];
},
|
cb31ede0
梁灏
update Table
|
704
705
|
filterData (data, column) {
return data.filter((row) => {
|
73ae27d8
梁灏
update Table filt...
|
706
|
//如果定义了远程过滤方法则忽略此方法
|
257bc4e6
H
filterRemote过滤时,单...
|
707
|
if (typeof column.filterRemote === 'function') return true;
|
73ae27d8
梁灏
update Table filt...
|
708
|
|
cb31ede0
梁灏
update Table
|
709
|
let status = !column._filterChecked.length;
|
adaeca88
梁灏
update Table
|
710
711
712
713
714
715
|
for (let i = 0; i < column._filterChecked.length; i++) {
status = column.filterMethod(column._filterChecked[i], row);
if (status) break;
}
return status;
});
|
cb31ede0
梁灏
update Table
|
716
717
|
},
filterOtherData (data, index) {
|
12bcf7bd
H
添加 remoteFilter方法...
|
718
|
let column = this.cloneColumns[index];
|
73ae27d8
梁灏
update Table filt...
|
719
720
|
if (typeof column.filterRemote === 'function') {
column.filterRemote.call(this.$parent, column._filterChecked, column.key, column);
|
12bcf7bd
H
添加 remoteFilter方法...
|
721
722
|
}
|
cb31ede0
梁灏
update Table
|
723
724
725
726
727
728
729
730
731
|
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
|
732
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
733
734
735
736
737
|
// filter others first, after filter this column
filterData = this.filterOtherData(filterData, index);
this.rebuildData = this.filterData(filterData, column);
|
adaeca88
梁灏
update Table
|
738
739
|
this.cloneColumns[index]._isFiltered = true;
this.cloneColumns[index]._filterVisible = false;
|
6c634aa6
梁灏
fixed #2078
|
740
|
this.$emit('on-filter-change', column);
|
adaeca88
梁灏
update Table
|
741
|
},
|
b34e09b8
梁灏
fixed #2832
|
742
743
744
745
746
747
748
749
750
751
752
753
|
/**
* #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
|
754
755
756
|
this.cloneColumns[index]._filterChecked = [value];
this.handleFilter(index);
},
|
b34e09b8
梁灏
fixed #2832
|
757
758
|
handleFilterReset (_index) {
const index = this.GetOriginalIndex(_index);
|
adaeca88
梁灏
update Table
|
759
|
this.cloneColumns[index]._isFiltered = false;
|
45e7ed7e
梁灏
update Table
|
760
761
|
this.cloneColumns[index]._filterVisible = false;
this.cloneColumns[index]._filterChecked = [];
|
cb31ede0
梁灏
update Table
|
762
|
|
9f853e3e
梁灏
update Table
|
763
|
let filterData = this.makeDataWithSort();
|
cb31ede0
梁灏
update Table
|
764
765
|
filterData = this.filterOtherData(filterData, index);
this.rebuildData = filterData;
|
6c634aa6
梁灏
fixed #2078
|
766
|
this.$emit('on-filter-change', this.cloneColumns[index]);
|
adaeca88
梁灏
update Table
|
767
|
},
|
741b987a
梁灏
update Table
|
768
769
|
makeData () {
let data = deepCopy(this.data);
|
68b308ee
梁灏
fixex #1353
|
770
771
772
773
|
data.forEach((row, index) => {
row._index = index;
row._rowKey = rowKey++;
});
|
741b987a
梁灏
update Table
|
774
|
return data;
|
d3dfdb26
梁灏
update Table
|
775
|
},
|
9f853e3e
梁灏
update Table
|
776
777
778
779
|
makeDataWithSort () {
let data = this.makeData();
let sortType = 'normal';
let sortIndex = -1;
|
2533a192
梁灏
update DatePicker
|
780
781
|
let isCustom = false;
|
9f853e3e
梁灏
update Table
|
782
783
784
785
|
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
|
786
|
isCustom = this.cloneColumns[i].sortable === 'custom';
|
9f853e3e
梁灏
update Table
|
787
788
789
|
break;
}
}
|
2533a192
梁灏
update DatePicker
|
790
|
if (sortType !== 'normal' && !isCustom) data = this.sortData(data, sortType, sortIndex);
|
9f853e3e
梁灏
update Table
|
791
792
|
return data;
},
|
97edb2eb
梁灏
update Table
|
793
794
795
796
797
798
799
800
801
802
|
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
|
803
804
805
806
807
|
makeObjData () {
let data = {};
this.data.forEach((row, index) => {
const newRow = deepCopy(row);// todo 直接替换
newRow._isHover = false;
|
08fd628d
Aresn
Table support expand
|
808
|
if (newRow._disabled) {
|
c7315098
leonine
修复两个问题:
|
809
|
newRow._isDisabled = newRow._disabled;
|
08fd628d
Aresn
Table support expand
|
810
|
} else {
|
c7315098
leonine
修复两个问题:
|
811
812
|
newRow._isDisabled = false;
}
|
2404849c
leonine
合并原作者更新
|
813
|
if (newRow._checked) {
|
03773f7e
梁灏
update
|
814
|
newRow._isChecked = newRow._checked;
|
2404849c
leonine
合并原作者更新
|
815
|
} else {
|
1594942f
leonine
itable 添加设置默认选中行的功能
|
816
817
|
newRow._isChecked = false;
}
|
08fd628d
Aresn
Table support expand
|
818
819
820
821
822
|
if (newRow._expanded) {
newRow._isExpanded = newRow._expanded;
} else {
newRow._isExpanded = false;
}
|
2404849c
leonine
合并原作者更新
|
823
824
825
826
827
|
if (newRow._highlight) {
newRow._isHighlight = newRow._highlight;
} else {
newRow._isHighlight = false;
}
|
d3dfdb26
梁灏
update Table
|
828
829
830
|
data[index] = newRow;
});
return data;
|
35ad3764
梁灏
update Table
|
831
|
},
|
5d164b03
梁灏
fixed #3339
|
832
833
834
835
836
837
838
839
840
|
// 修改列,设置一个隐藏的 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...
|
841
|
// 在 data 时,this.allColumns 暂时为 undefined
|
5d164b03
梁灏
fixed #3339
|
842
|
let columns = deepCopy(getAllColumns(cols));
|
35ad3764
梁灏
update Table
|
843
844
845
846
847
|
let left = [];
let right = [];
let center = [];
columns.forEach((column, index) => {
|
35ad3764
梁灏
update Table
|
848
|
column._index = index;
|
68b308ee
梁灏
fixex #1353
|
849
|
column._columnKey = columnKey++;
|
224a3ae5
梁灏
publish 0.9.9-rc-3
|
850
|
column._width = column.width ? column.width : ''; // update in handleResize()
|
99f80db0
梁灏
update Table
|
851
852
853
854
|
column._sortType = 'normal';
column._filterVisible = false;
column._isFiltered = false;
column._filterChecked = [];
|
35ad3764
梁灏
update Table
|
855
|
|
adaeca88
梁灏
update Table
|
856
857
858
859
860
|
if ('filterMultiple' in column) {
column._filterMultiple = column.filterMultiple;
} else {
column._filterMultiple = true;
}
|
5d0499ce
梁灏
update Table
|
861
862
863
864
|
if ('filteredValue' in column) {
column._filterChecked = column.filteredValue;
column._isFiltered = true;
}
|
adaeca88
梁灏
update Table
|
865
|
|
835b37ff
梁灏
fixed #1403
|
866
867
868
869
|
if ('sortType' in column) {
column._sortType = column.sortType;
}
|
35ad3764
梁灏
update Table
|
870
871
872
873
874
875
876
877
878
|
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...
|
879
|
},
|
1acabf79
梁灏
Table support mul...
|
880
|
// create a multiple table-head
|
5d164b03
梁灏
fixed #3339
|
881
882
|
makeColumnRows (fixedType, cols) {
return convertToRows(cols, fixedType);
|
1acabf79
梁灏
Table support mul...
|
883
|
},
|
9d304dd6
huanghong
fixed safari scro...
|
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
|
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...
|
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
|
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...
|
918
|
columns = this.allColumns;
|
43509ad8
梁灏
Table support exp...
|
919
920
921
922
923
924
925
|
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...
|
926
927
928
|
const data = Csv(columns, datas, params, noHeader);
if (params.callback) params.callback(data);
else ExportCsv.download(params.filename, data);
|
2cb8a6d9
梁灏
commit Table comp...
|
929
930
|
}
},
|
486d4fda
梁灏
update Table
|
931
|
created () {
|
d8892603
梁灏
Table prop: conte...
|
932
|
if (!this.context) this.currentContext = this.$parent;
|
7409cb3c
梁灏
fixed #549
|
933
934
|
this.showSlotHeader = this.$slots.header !== undefined;
this.showSlotFooter = this.$slots.footer !== undefined;
|
5d0499ce
梁灏
update Table
|
935
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
e7e8c8ff
梁灏
update Table
|
936
|
},
|
486d4fda
梁灏
update Table
|
937
|
mounted () {
|
a3547c1b
梁灏
update Table
|
938
|
this.handleResize();
|
9d304dd6
huanghong
fixed safari scro...
|
939
|
this.setMinMaxColumnRows();
|
adaeca88
梁灏
update Table
|
940
|
this.$nextTick(() => this.ready = true);
|
c5beedf8
梁灏
fixed #690
|
941
|
|
f00b5343
梁灏
update Table
|
942
|
on(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
943
944
945
|
this.observer = elementResizeDetectorMaker();
this.observer.listenTo(this.$el, this.handleResize);
|
67c9b1c8
梁灏
fixed #591
|
946
|
this.$on('on-visible-change', (val) => {
|
a6eee4e5
梁灏
update Table
|
947
948
|
if (val) {
this.handleResize();
|
a6eee4e5
梁灏
update Table
|
949
|
}
|
67c9b1c8
梁灏
fixed #591
|
950
|
});
|
744eb0af
梁灏
update Table comp...
|
951
952
|
},
beforeDestroy () {
|
f00b5343
梁灏
update Table
|
953
|
off(window, 'resize', this.handleResize);
|
c5beedf8
梁灏
fixed #690
|
954
|
this.observer.removeListener(this.$el, this.handleResize);
|
2cb8a6d9
梁灏
commit Table comp...
|
955
956
957
958
|
},
watch: {
data: {
handler () {
|
119eeafe
梁灏
fixed a Table bug
|
959
|
const oldDataLen = this.rebuildData.length;
|
d3dfdb26
梁灏
update Table
|
960
|
this.objData = this.makeObjData();
|
97edb2eb
梁灏
update Table
|
961
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
962
|
this.handleResize();
|
119eeafe
梁灏
fixed a Table bug
|
963
964
965
|
if (!oldDataLen) {
this.fixedHeader();
}
|
63f2e0f4
梁灏
fixed Table bug w...
|
966
967
968
969
|
// here will trigger before clickCurrentRow, so use async
setTimeout(() => {
this.cloneData = deepCopy(this.data);
}, 0);
|
2cb8a6d9
梁灏
commit Table comp...
|
970
971
972
973
974
|
},
deep: true
},
columns: {
handler () {
|
f2a051a1
梁灏
publish 0.9.9-rc-6
|
975
|
// todo 这里有性能问题,可能是左右固定计算属性影响的
|
5d164b03
梁灏
fixed #3339
|
976
977
|
const colsWithId = this.makeColumnsId(this.columns);
this.allColumns = getAllColumns(colsWithId);
|
948accad
梁灏
forget update func
|
978
|
this.cloneColumns = this.makeColumns(colsWithId);
|
9d304dd6
huanghong
fixed safari scro...
|
979
980
|
this.setMinMaxColumnRows();
|
5d164b03
梁灏
fixed #3339
|
981
982
983
|
this.columnRows = this.makeColumnRows(false, colsWithId);
this.leftFixedColumnRows = this.makeColumnRows('left', colsWithId);
this.rightFixedColumnRows = this.makeColumnRows('right', colsWithId);
|
97edb2eb
梁灏
update Table
|
984
|
this.rebuildData = this.makeDataWithSortAndFilter();
|
a3547c1b
梁灏
update Table
|
985
|
this.handleResize();
|
2cb8a6d9
梁灏
commit Table comp...
|
986
987
|
},
deep: true
|
e7e8c8ff
梁灏
update Table
|
988
989
|
},
height () {
|
b08bd8a8
huanghong
fixed height changed
|
990
|
this.handleResize();
|
75803add
huanghong
fixed scoll bar
|
991
992
993
|
},
showHorizontalScrollBar () {
this.handleResize();
|
fda6dfa2
huanghong
column add prop m...
|
994
995
996
|
},
showVerticalScrollBar () {
this.handleResize();
|
2cb8a6d9
梁灏
commit Table comp...
|
997
998
|
}
}
|
b0893113
jingsam
add eslint
|
999
1000
|
};
</script>
|