fix(explore/logs) not collapsing whitespace (#15737)

- Set container width to 100% so column widths can be calculated properly
- Sets duplicates, level, timestamp, local time to a fixed width based upon em units since the size of these are static
- Sets labels to be 20%
- Remove min-width:80% on message column so that it now consumes remaining space
- Additionally fixes long labels from overflowing into the messages column by properly setting a max-width per label and hiding overflow

closes #15673

Signed-off-by: Steven Sheehy <ssheehy@firescope.com>
This commit is contained in:
Steven Sheehy 2019-03-11 09:55:11 -05:00 committed by David
parent 5f6838abca
commit aa7e348694
3 changed files with 40 additions and 8 deletions

View File

@ -13,8 +13,19 @@ interface Props {
export class LogLabels extends PureComponent<Props> { export class LogLabels extends PureComponent<Props> {
render() { render() {
const { getRows, labels, onClickLabel, plain } = this.props; const { getRows, labels, onClickLabel, plain } = this.props;
return Object.keys(labels).map(key => ( return (
<LogLabel key={key} getRows={getRows} label={key} value={labels[key]} plain={plain} onClickLabel={onClickLabel} /> <span className="logs-labels">
)); {Object.keys(labels).map(key => (
<LogLabel
key={key}
getRows={getRows}
label={key}
value={labels[key]}
plain={plain}
onClickLabel={onClickLabel}
/>
))}
</span>
);
} }
} }

View File

@ -150,7 +150,7 @@ export class LogRow extends PureComponent<Props, State> {
</div> </div>
)} )}
{showLocalTime && ( {showLocalTime && (
<div className="logs-row__time" title={`${row.timestamp} (${row.timeFromNow})`}> <div className="logs-row__localtime" title={`${row.timestamp} (${row.timeFromNow})`}>
{row.timeLocal} {row.timeLocal}
</div> </div>
)} )}

View File

@ -63,6 +63,7 @@ $column-horizontal-spacing: 10px;
font-size: $font-size-sm; font-size: $font-size-sm;
display: table; display: table;
table-layout: fixed; table-layout: fixed;
width: 100%;
} }
.logs-row { .logs-row {
@ -83,16 +84,22 @@ $column-horizontal-spacing: 10px;
.logs-row__time { .logs-row__time {
white-space: nowrap; white-space: nowrap;
width: 19em;
}
.logs-row__localtime {
white-space: nowrap;
width: 12.5em;
} }
.logs-row__labels { .logs-row__labels {
max-width: 20%; width: 20%;
line-height: 1.2; line-height: 1.2;
position: relative;
} }
.logs-row__message { .logs-row__message {
word-break: break-all; word-break: break-all;
min-width: 80%;
} }
.logs-row__match-highlight { .logs-row__match-highlight {
@ -112,6 +119,7 @@ $column-horizontal-spacing: 10px;
.logs-row__level { .logs-row__level {
position: relative; position: relative;
width: 10px;
&::after { &::after {
content: ''; content: '';
@ -165,6 +173,7 @@ $column-horizontal-spacing: 10px;
.logs-row__duplicates { .logs-row__duplicates {
text-align: right; text-align: right;
width: 4.5em;
} }
.logs-row__field-highlight { .logs-row__field-highlight {
@ -193,15 +202,20 @@ $column-horizontal-spacing: 10px;
} }
} }
.logs-labels {
display: flex;
flex-wrap: wrap;
}
.logs-label { .logs-label {
display: inline-block; display: flex;
padding: 0 2px; padding: 0 2px;
background-color: $btn-inverse-bg; background-color: $btn-inverse-bg;
border-radius: $border-radius; border-radius: $border-radius;
margin: 0 4px 2px 0; margin: 0 4px 2px 0;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
position: relative; overflow: hidden;
} }
.logs-label__icon { .logs-label__icon {
@ -211,6 +225,13 @@ $column-horizontal-spacing: 10px;
margin-left: 2px; margin-left: 2px;
} }
.logs-label__value {
display: inline-block;
max-width: 20em;
text-overflow: ellipsis;
overflow: hidden;
}
.logs-label__stats { .logs-label__stats {
position: absolute; position: absolute;
top: 1.25em; top: 1.25em;