| <style> |
| #sync-events-table, |
| #sync-events-table th, |
| #sync-events-table td { |
| border: 1px black solid; |
| } |
| |
| #sync-events-table { |
| width: 100%; |
| } |
| |
| #sync-events > tr { |
| vertical-align: top; |
| } |
| </style> |
| |
| <table id="sync-events-table"> |
| <thead> |
| <th>Time</th> |
| <th>Submodule</th> |
| <th>Event</th> |
| <th>Details</th> |
| </thead> |
| <tbody id="sync-events"> |
| </tbody> |
| </table> |
| |
| <script> |
| (function() { |
| function makeLogEntryNode(entry) { |
| var timeNode = document.createElement('td'); |
| timeNode.innerText = entry.date; |
| |
| var submoduleNode = document.createElement('td'); |
| submoduleNode.innerText = entry.submodule; |
| |
| var eventNode = document.createElement('td'); |
| eventNode.innerText = entry.event; |
| |
| var details = document.createElement('pre'); |
| details.innerText = JSON.stringify(entry.details, null, 2); |
| var detailsNode = document.createElement('td'); |
| detailsNode.appendChild(details); |
| |
| var node = document.createElement('tr'); |
| node.appendChild(timeNode); |
| node.appendChild(submoduleNode); |
| node.appendChild(eventNode); |
| node.appendChild(detailsNode); |
| |
| return node; |
| } |
| |
| var syncEvents = document.getElementById('sync-events'); |
| |
| var entries = chrome.sync.log.entries; |
| for (var i = 0; i < entries.length; ++i) { |
| syncEvents.appendChild(makeLogEntryNode(entries[i])); |
| } |
| |
| chrome.sync.log.addEventListener('append', function(event) { |
| syncEvents.appendChild(makeLogEntryNode(event.detail)); |
| }); |
| })(); |
| </script> |