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