1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
Polymer({
is: 'log-panel',
properties: {
/**
* List of displayed logs.
* @type {Array<{{
* text: string,
* date: string,
* source: string
* }}>}
*/
logs: Array,
},
observers: [
'logsChanged_(logs.*)',
],
/**
* @type {boolean}
* @private
*/
isScrollAtBottom_: true,
/**
* Called after the Polymer element is initialized.
*/
ready: function() {
this.$.list.onscroll = this.onScroll_.bind(this);
this.async(this.scrollToBottom_);
},
/**
* Called when the list of logs change.
*/
logsChanged_: function() {
if (this.isScrollAtBottom_)
this.async(this.scrollToBottom_);
},
/**
* Clears the logs.
* @private
*/
clearLogs_: function() {
this.$.logBuffer.clearLogs();
},
/**
* Event handler when the list is scrolled.
* @private
*/
onScroll_: function() {
var list = this.$.list;
this.isScrollAtBottom_ =
list.scrollTop + list.offsetHeight == list.scrollHeight;
},
/**
* Scrolls the logs container to the bottom.
* @private
*/
scrollToBottom_: function() {
this.$.list.scrollTop = this.$.list.scrollHeight;
},
/**
* @param {LogMessage} log
* @return {string} The filename stripped of its preceeding path concatenated
* with the line number of the log.
* @private
*/
computeFileAndLine_: function(log) {
var directories = log.file.split('/');
return directories[directories.length - 1] + ':' + log.line;
},
});
|