Commit 9d3aada3061ae3740b3e746cd0e6a4dcd318df71
1 parent
9d304dd6
npm test
Showing
1 changed file
with
80 additions
and
80 deletions
Show diff stats
src/components/table/table.vue
| ... | ... | @@ -347,35 +347,55 @@ |
| 347 | 347 | }, |
| 348 | 348 | handleResize () { |
| 349 | 349 | //let tableWidth = parseInt(getStyle(this.$el, 'width')) - 1; |
| 350 | - let tableWidth = this.$el.offsetWidth - 1; | |
| 351 | - let columnsWidth = {}; | |
| 352 | - | |
| 353 | - let hasWidthColumns = []; | |
| 354 | - let noWidthColumns = []; | |
| 355 | - let minWidthColumns = this.minWidthColumns; | |
| 356 | - let maxWidthColumns = this.maxWidthColumns; | |
| 357 | - this.cloneColumns.forEach((col) => { | |
| 358 | - if (col.width) { | |
| 359 | - hasWidthColumns.push(col); | |
| 350 | + let tableWidth = this.$el.offsetWidth - 1; | |
| 351 | + let columnsWidth = {}; | |
| 352 | + | |
| 353 | + let hasWidthColumns = []; | |
| 354 | + let noWidthColumns = []; | |
| 355 | + let minWidthColumns = this.minWidthColumns; | |
| 356 | + let maxWidthColumns = this.maxWidthColumns; | |
| 357 | + this.cloneColumns.forEach((col) => { | |
| 358 | + if (col.width) { | |
| 359 | + hasWidthColumns.push(col); | |
| 360 | + } | |
| 361 | + else{ | |
| 362 | + noWidthColumns.push(col); | |
| 363 | + } | |
| 364 | + col._width = null; | |
| 365 | + }); | |
| 366 | + | |
| 367 | + | |
| 368 | + let unUsableWidth = hasWidthColumns.map(cell => cell.width).reduce((a, b) => a + b, 0); | |
| 369 | + let usableWidth = tableWidth - unUsableWidth - (this.showVerticalScrollBar?this.scrollBarWidth:0); | |
| 370 | + let usableLength = noWidthColumns.length; | |
| 371 | + let columnWidth = 0; | |
| 372 | + if(usableWidth > 0 && usableLength > 0){ | |
| 373 | + columnWidth = parseInt(usableWidth / usableLength); | |
| 374 | + } | |
| 375 | + for (let i = 0; i < maxWidthColumns.length; i++) { | |
| 376 | + if(columnWidth > maxWidthColumns[i].maxWidth){ | |
| 377 | + maxWidthColumns[i]._width = maxWidthColumns[i].maxWidth; | |
| 378 | + usableWidth -= maxWidthColumns[i].maxWidth; | |
| 379 | + usableLength--; | |
| 380 | + if (usableWidth>0) { | |
| 381 | + if (usableLength === 0) { | |
| 382 | + columnWidth = 0; | |
| 383 | + } | |
| 384 | + else { | |
| 385 | + columnWidth = parseInt(usableWidth / usableLength); | |
| 386 | + } | |
| 360 | 387 | } |
| 361 | 388 | else{ |
| 362 | - noWidthColumns.push(col); | |
| 389 | + columnWidth = 0; | |
| 363 | 390 | } |
| 364 | - col._width = null; | |
| 365 | - }); | |
| 366 | - | |
| 367 | - | |
| 368 | - let unUsableWidth = hasWidthColumns.map(cell => cell.width).reduce((a, b) => a + b, 0); | |
| 369 | - let usableWidth = tableWidth - unUsableWidth - (this.showVerticalScrollBar?this.scrollBarWidth:0); | |
| 370 | - let usableLength = noWidthColumns.length; | |
| 371 | - let columnWidth = 0; | |
| 372 | - if(usableWidth > 0 && usableLength > 0){ | |
| 373 | - columnWidth = parseInt(usableWidth / usableLength); | |
| 374 | 391 | } |
| 375 | - for (let i = 0; i < maxWidthColumns.length; i++) { | |
| 376 | - if(columnWidth > maxWidthColumns[i].maxWidth){ | |
| 377 | - maxWidthColumns[i]._width = maxWidthColumns[i].maxWidth; | |
| 378 | - usableWidth -= maxWidthColumns[i].maxWidth; | |
| 392 | + } | |
| 393 | + | |
| 394 | + for (let i = 0; i < minWidthColumns.length; i++) { | |
| 395 | + if(columnWidth < minWidthColumns[i].minWidth && !minWidthColumns[i].width){ | |
| 396 | + if(!minWidthColumns[i]._width){ | |
| 397 | + minWidthColumns[i]._width = minWidthColumns[i].minWidth; | |
| 398 | + usableWidth -= minWidthColumns[i].minWidth; | |
| 379 | 399 | usableLength--; |
| 380 | 400 | if (usableWidth>0) { |
| 381 | 401 | if (usableLength === 0) { |
| ... | ... | @@ -389,75 +409,55 @@ |
| 389 | 409 | columnWidth = 0; |
| 390 | 410 | } |
| 391 | 411 | } |
| 392 | - } | |
| 393 | - | |
| 394 | - for (let i = 0; i < minWidthColumns.length; i++) { | |
| 395 | - if(columnWidth < minWidthColumns[i].minWidth && !minWidthColumns[i].width){ | |
| 396 | - if(!minWidthColumns[i]._width){ | |
| 397 | - minWidthColumns[i]._width = minWidthColumns[i].minWidth; | |
| 398 | - usableWidth -= minWidthColumns[i].minWidth; | |
| 399 | - usableLength--; | |
| 400 | - if (usableWidth>0) { | |
| 401 | - if (usableLength === 0) { | |
| 402 | - columnWidth = 0; | |
| 403 | - } | |
| 404 | - else { | |
| 405 | - columnWidth = parseInt(usableWidth / usableLength); | |
| 406 | - } | |
| 407 | - } | |
| 408 | - else{ | |
| 409 | - columnWidth = 0; | |
| 410 | - } | |
| 411 | - } | |
| 412 | 412 | |
| 413 | - } | |
| 414 | 413 | } |
| 414 | + } | |
| 415 | 415 | |
| 416 | 416 | |
| 417 | - for (let i = 0; i < this.cloneColumns.length; i++) { | |
| 418 | - const column = this.cloneColumns[i]; | |
| 419 | - let width = columnWidth; | |
| 420 | - if(column.width){ | |
| 421 | - width = column.width; | |
| 417 | + for (let i = 0; i < this.cloneColumns.length; i++) { | |
| 418 | + const column = this.cloneColumns[i]; | |
| 419 | + let width = columnWidth; | |
| 420 | + if(column.width){ | |
| 421 | + width = column.width; | |
| 422 | + } | |
| 423 | + else{ | |
| 424 | + if (column._width) { | |
| 425 | + width = column._width; | |
| 422 | 426 | } |
| 423 | - else{ | |
| 424 | - if (column._width) { | |
| 425 | - width = column._width; | |
| 426 | - } | |
| 427 | - else if (column.minWidth > width){ | |
| 428 | - width = column.minWidth; | |
| 429 | - } | |
| 430 | - else if (column.maxWidth < width){ | |
| 431 | - width = column.maxWidth; | |
| 432 | - } | |
| 433 | - else { | |
| 434 | - if (usableWidth>0) { | |
| 435 | - if (usableLength > 1) { | |
| 436 | - usableLength--; | |
| 437 | - usableWidth -= width; | |
| 438 | - columnWidth = parseInt(usableWidth / usableLength); | |
| 439 | - } | |
| 440 | - else { | |
| 441 | - columnWidth = 0; | |
| 442 | - } | |
| 427 | + else if (column.minWidth > width){ | |
| 428 | + width = column.minWidth; | |
| 429 | + } | |
| 430 | + else if (column.maxWidth < width){ | |
| 431 | + width = column.maxWidth; | |
| 432 | + } | |
| 433 | + else { | |
| 434 | + if (usableWidth>0) { | |
| 435 | + if (usableLength > 1) { | |
| 436 | + usableLength--; | |
| 437 | + usableWidth -= width; | |
| 438 | + columnWidth = parseInt(usableWidth / usableLength); | |
| 443 | 439 | } |
| 444 | - else{ | |
| 440 | + else { | |
| 445 | 441 | columnWidth = 0; |
| 446 | 442 | } |
| 447 | 443 | } |
| 444 | + else{ | |
| 445 | + columnWidth = 0; | |
| 446 | + } | |
| 448 | 447 | } |
| 448 | + } | |
| 449 | 449 | |
| 450 | - this.cloneColumns[i]._width = width; | |
| 450 | + this.cloneColumns[i]._width = width; | |
| 451 | 451 | |
| 452 | - columnsWidth[column._index] = { | |
| 453 | - width: width | |
| 454 | - }; | |
| 452 | + columnsWidth[column._index] = { | |
| 453 | + width: width | |
| 454 | + }; | |
| 455 | 455 | |
| 456 | - } | |
| 456 | + } | |
| 457 | 457 | //this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0); |
| 458 | - this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0) + (this.showVerticalScrollBar?this.scrollBarWidth:0); | |
| 459 | - this.columnsWidth = columnsWidth; | |
| 460 | - this.fixedHeader(); | |
| 458 | + this.tableWidth = this.cloneColumns.map(cell => cell._width).reduce((a, b) => a + b, 0) + (this.showVerticalScrollBar?this.scrollBarWidth:0); | |
| 459 | + this.columnsWidth = columnsWidth; | |
| 460 | + this.fixedHeader(); | |
| 461 | 461 | }, |
| 462 | 462 | handleMouseIn (_index) { |
| 463 | 463 | if (this.disabledHover) return; | ... | ... |