blob: 93f075c4d19d5413714306794e2a82b4e3e592f5 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './log_object.html.js';
import type {LogMessage} from './types.js';
import {Severity} from './types.js';
/** @polymer */
class LogObjectElement extends PolymerElement {
static get is() {
return 'log-object';
}
static get template() {
return getTemplate();
}
static get properties() {
return {
/**
* Log whose metadata is displayed within this element.
*/
logMessage: {
type: Object,
observer: 'logMessageChanged_',
},
};
}
logMessage: LogMessage;
/**
* Sets the log message style based on severity level.
*/
private logMessageChanged_(): void {
switch (this.logMessage.severity) {
case Severity.WARNING:
this.className = 'warning-log';
break;
case Severity.ERROR:
this.className = 'error-log';
break;
case Severity.VERBOSE:
this.className = 'verbose-log';
break;
default:
this.className = 'default-log';
break;
}
}
private getFilenameWithLine(): string {
if (!this.logMessage) {
return '';
}
// The filename is prefixed with "../../", so replace it with "//".
const filename = this.logMessage.file.replace('../../', '//');
return filename + ':' + this.logMessage.line;
}
}
customElements.define(LogObjectElement.is, LogObjectElement);