OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 (function() { | 5 (function() { |
6 function makeLogEntryNode(entry) { | 6 'use strict'; |
| 7 var toggleDisplay = function() { |
| 8 var detailsNode = this.parentNode.getElementsByClassName('details')[0]; |
| 9 if (detailsNode.classList.contains('hidden')) { |
| 10 detailsNode.classList.remove('hidden'); |
| 11 } else { |
| 12 detailsNode.classList.add('hidden'); |
| 13 } |
| 14 } |
| 15 |
| 16 var makeLogEntryNode = function(entry) { |
7 var timeNode = document.createElement('td'); | 17 var timeNode = document.createElement('td'); |
8 timeNode.textContent = entry.date; | 18 timeNode.textContent = entry.date; |
9 | 19 |
10 var submoduleNode = document.createElement('td'); | 20 var submoduleNode = document.createElement('td'); |
11 submoduleNode.textContent = entry.submodule; | 21 submoduleNode.textContent = entry.submodule; |
12 | 22 |
13 var eventNode = document.createElement('td'); | 23 var eventNode = document.createElement('td'); |
14 eventNode.textContent = entry.event; | 24 eventNode.textContent = entry.event; |
15 | 25 |
16 var details = document.createElement('pre'); | 26 var details = document.createElement('pre'); |
17 details.textContent = JSON.stringify(entry.details, null, 2); | 27 details.textContent = JSON.stringify(entry.details, null, 2); |
| 28 details.className = 'details'; |
| 29 details.classList.add('details'); |
| 30 details.classList.add('hidden'); |
| 31 var detailsToggleButton = document.createElement('button'); |
| 32 detailsToggleButton.addEventListener('click', toggleDisplay, false); |
| 33 detailsToggleButton.textContent = 'Show/Hide Details'; |
18 var detailsNode = document.createElement('td'); | 34 var detailsNode = document.createElement('td'); |
| 35 detailsNode.appendChild(detailsToggleButton); |
19 detailsNode.appendChild(details); | 36 detailsNode.appendChild(details); |
20 | 37 |
21 var node = document.createElement('tr'); | 38 var node = document.createElement('tr'); |
22 node.appendChild(timeNode); | 39 node.appendChild(timeNode); |
23 node.appendChild(submoduleNode); | 40 node.appendChild(submoduleNode); |
24 node.appendChild(eventNode); | 41 node.appendChild(eventNode); |
25 node.appendChild(detailsNode); | 42 node.appendChild(detailsNode); |
26 | 43 |
27 return node; | 44 return node; |
28 } | 45 } |
29 | 46 |
30 var syncEvents = document.getElementById('sync-events'); | 47 var syncEvents = $('sync-events'); |
31 | 48 |
32 var entries = chrome.sync.log.entries; | 49 var entries = chrome.sync.log.entries; |
33 for (var i = 0; i < entries.length; ++i) { | 50 for (var i = 0; i < entries.length; ++i) { |
34 syncEvents.appendChild(makeLogEntryNode(entries[i])); | 51 syncEvents.appendChild(makeLogEntryNode(entries[i])); |
35 } | 52 } |
36 | 53 |
37 chrome.sync.log.addEventListener('append', function(event) { | 54 chrome.sync.log.addEventListener('append', function(event) { |
38 syncEvents.appendChild(makeLogEntryNode(event.detail)); | 55 syncEvents.appendChild(makeLogEntryNode(event.detail)); |
39 }); | 56 }); |
40 })(); | 57 })(); |
OLD | NEW |