Skip to content

Commit

Permalink
Speed up rendering of large docs in doc table
Browse files Browse the repository at this point in the history
Backports PR #9014

**Commit 1:**
Speed up rendering of large docs in doc table

Back in 2014 a utility was added to insert <wbr> (word break opportunity)
tags into doc table fields to improve their display in the browser. This
utility looped over every character in _source when it was selected as a
column in the doc table, which it was be default. That really started to
slow things down when displaying large docs. I compared how the browser
renders things with and without the <wbr>'s and there's almost no
difference, certainly nothing as dramatic as shown in the linked PR
which added this word breaking functionality. Perhaps browsers have
improved in the last two years, or perhaps something changed in our CSS.
Since we're getting no or negligible value from this utility and it
makes Discover impossible to use with large docs, I simply removed it.

Fixes #6328
Related #1993

* Original sha: fc443bb
* Authored by Matthew Bargar <mbargar@gmail.com> on 2016-11-09T00:11:45Z

**Commit 2:**
Improve word breaking in doc table

To maintain similar word breaking without adding <wbr> tags I've added
some css styles that do essentially the same job. word-break: break-word
gives us the best formatting but it's not a part of the standard yet
(see link below) so I provided an almost-as-good fallback with
break-all.

https://bugs.chromium.org/p/chromium/issues/detail?id=492202#c21

* Original sha: ac38524
* Authored by Matthew Bargar <mbargar@gmail.com> on 2016-11-10T23:01:30Z
  • Loading branch information
elastic-jasper authored and Bargs committed Nov 15, 2016
1 parent 3789591 commit 54080df
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 84 deletions.
15 changes: 5 additions & 10 deletions src/ui/public/doc_table/components/table_row.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import _ from 'lodash';
import $ from 'jquery';
import addWordBreaks from 'ui/utils/add_word_breaks';
import 'ui/highlight';
import 'ui/highlight/highlight_tags';
import 'ui/doc_viewer';
Expand Down Expand Up @@ -150,18 +149,14 @@ module.directive('kbnTableRow', function ($compile) {
/**
* Fill an element with the value of a field
*/
function _displayField(row, fieldName, breakWords) {
function _displayField(row, fieldName, truncate) {
let indexPattern = $scope.indexPattern;
let text = indexPattern.formatField(row, fieldName);

if (breakWords) {
text = addWordBreaks(text, MIN_LINE_LENGTH);

if (text.length > MIN_LINE_LENGTH) {
return truncateByHeightTemplate({
body: text
});
}
if (truncate && text.length > MIN_LINE_LENGTH) {
return truncateByHeightTemplate({
body: text
});
}

return text;
Expand Down
10 changes: 10 additions & 0 deletions src/ui/public/doc_table/doc_table.less
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ doc-table {

.discover-table-datafield {
white-space: pre-wrap;

// break-word is what we really want but it hasn't been added to the standard and adopted by all browsers yet,
// so we provide break-all as a fallback
word-break: break-all;
word-break: break-word;
}

.discover-table-sourcefield {
word-break: break-all;
word-break: break-word;
}

.loading {
Expand Down
25 changes: 0 additions & 25 deletions src/ui/public/utils/__tests__/add_word_breaks.js

This file was deleted.

49 changes: 0 additions & 49 deletions src/ui/public/utils/add_word_breaks.js

This file was deleted.

0 comments on commit 54080df

Please sign in to comment.