| Index: pkg/analysis_server/tool/instrumentation/page/log_page.dart
|
| diff --git a/pkg/analysis_server/tool/instrumentation/page/log_page.dart b/pkg/analysis_server/tool/instrumentation/page/log_page.dart
|
| index 83dd31d0b8375404fe60427c890061c5a98e28dd..11fb33c67d4baf531488d75dd28c7428dc9de63d 100644
|
| --- a/pkg/analysis_server/tool/instrumentation/page/log_page.dart
|
| +++ b/pkg/analysis_server/tool/instrumentation/page/log_page.dart
|
| @@ -20,6 +20,16 @@ class LogPage extends PageWriter {
|
| InstrumentationLog log;
|
|
|
| /**
|
| + * The id of the entry groups to be displayed.
|
| + */
|
| + EntryGroup selectedGroup;
|
| +
|
| + /**
|
| + * The entries in the selected group.
|
| + */
|
| + List<LogEntry> entries;
|
| +
|
| + /**
|
| * The index of the first entry to be written.
|
| */
|
| int pageStart = 0;
|
| @@ -36,26 +46,16 @@ class LogPage extends PageWriter {
|
| int prefixLength;
|
|
|
| /**
|
| - * The number of each kind of log entry. Currently used only for debugging and
|
| - * should be removed.
|
| - */
|
| - Map<String, int> counts = new HashMap<String, int>();
|
| -
|
| - /**
|
| * Initialize a newly created writer to write the content of the given
|
| * [instrumentationLog].
|
| */
|
| - LogPage(this.log) {
|
| - List<LogEntry> entries = log.logEntries;
|
| - prefixLength = computePrefixLength(entries);
|
| - for (LogEntry entry in entries) {
|
| - int count = counts.putIfAbsent(entry.kind, () => 0);
|
| - counts[entry.kind] = count + 1;
|
| - }
|
| - }
|
| + LogPage(this.log);
|
|
|
| @override
|
| void writeBody(StringSink sink) {
|
| + entries = log.entriesInGroup(selectedGroup);
|
| + prefixLength = computePrefixLength(entries);
|
| +
|
| writeMenu(sink);
|
| writeTwoColumns(
|
| sink, 'leftColumn', _writeLeftColumn, 'rightColumn', _writeRightColumn);
|
| @@ -89,6 +89,11 @@ function setDetails(detailsContent) {
|
| element.innerHTML = detailsContent;
|
| }
|
| }
|
| +function selectEntryGroup(pageStart) {
|
| + var element = document.getElementById("entryGroup");
|
| + var url = "/log?group=" + element.value;
|
| + window.location.assign(url);
|
| +}
|
| ''');
|
| }
|
|
|
| @@ -175,6 +180,8 @@ function setDetails(detailsContent) {
|
| description = '<span class="error">$description</span>';
|
| } else if (entry is ExceptionEntry) {
|
| description = '<span class="error">$description</span>';
|
| + } else if (entry is MalformedLogEntry) {
|
| + description = '<span class="error">$description</span>';
|
| }
|
| id = id == null ? '' : 'id="$id" ';
|
| clickHandler = '$clickHandler; setDetails(\'${escape(entry.details())}\')';
|
| @@ -198,7 +205,6 @@ function setDetails(detailsContent) {
|
| * Write the entries in the instrumentation log to the given [sink].
|
| */
|
| void _writeLeftColumn(StringSink sink) {
|
| - List<LogEntry> entries = log.nonTaskEntries;
|
| int length = entries.length;
|
| int pageEnd =
|
| pageLength == null ? length : math.min(pageStart + pageLength, length);
|
| @@ -207,6 +213,19 @@ function setDetails(detailsContent) {
|
| //
|
| sink.writeln('<div class="columnHeader">');
|
| sink.writeln('<div style="float: left">');
|
| + sink.writeln('<select id="entryGroup" onchange="selectEntryGroup()">');
|
| + for (EntryGroup group in EntryGroup.groups) {
|
| + sink.write('<option value="');
|
| + sink.write(group.id);
|
| + sink.write('"');
|
| + if (group == selectedGroup) {
|
| + sink.write(' selected');
|
| + }
|
| + sink.write('>');
|
| + sink.write(group.name);
|
| + sink.writeln('</option>');
|
| + }
|
| + sink.writeln('</select>');
|
| sink.writeln('Events $pageStart - ${pageEnd - 1} of ${length - 1}');
|
| sink.writeln('</div>');
|
|
|
| @@ -216,7 +235,7 @@ function setDetails(detailsContent) {
|
| } else {
|
| sink.write('<button type="button">');
|
| sink.write(
|
| - '<a href="${WebServer.logPath}?start=${pageStart - pageLength}">');
|
| + '<a href="${WebServer.logPath}?group=${selectedGroup.id}&start=${pageStart - pageLength}">');
|
| sink.write('<b><</b>');
|
| sink.writeln('</a></button>');
|
| }
|
| @@ -226,7 +245,7 @@ function setDetails(detailsContent) {
|
| } else {
|
| sink.write('<button type="button">');
|
| sink.write(
|
| - '<a href="${WebServer.logPath}?start=${pageStart + pageLength}">');
|
| + '<a href="${WebServer.logPath}?group=${selectedGroup.id}&start=${pageStart + pageLength}">');
|
| sink.write('<b>></b>');
|
| sink.writeln('</a></button>');
|
| }
|
|
|