15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * Converts a number in bytes to a string in megabytes split by comma into 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * three digit block. 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * @param {number} bytes The number in bytes. 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * @return {string} Formatted string in megabytes. 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch */ 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochfunction ToMegaByteString(bytes) { 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var mb = Math.floor(bytes / (1 << 20)); 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return mb.toString().replace( 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch /\d+?(?=(\d{3})+$)/g, // Digit sequence (\d+) followed (?=) by 3n digits. 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch function(three_digit_block) { return three_digit_block + ','; } 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ); 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch/** 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the Drive related Preferences section. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Array} preferences List of dictionaries describing preferences. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateDriveRelatedPreferences(preferences) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var ul = $('drive-related-preferences'); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateKeyValueList(ul, preferences); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Updates the Connection Status section. 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * @param {Object} connStatus Dictionary containing connection status. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)function updateConnectionStatus(connStatus) { 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) $('connection-status').textContent = connStatus['status']; 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) $('has-refresh-token').textContent = connStatus['has-refresh-token']; 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) $('has-access-token').textContent = connStatus['has-access-token']; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Updates the Path Configurations section. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Array} paths List of dictionaries describing paths. 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function updatePathConfigurations(paths) { 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var ul = $('path-configurations'); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) updateKeyValueList(ul, paths); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the GCache Contents section. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Array} gcacheContents List of dictionaries describing metadata 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of files and directories under the GCache directory. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} gcacheSummary Dictionary of summary of GCache. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateGCacheContents(gcacheContents, gcacheSummary) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tbody = $('gcache-contents'); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < gcacheContents.length; i++) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var entry = gcacheContents[i]; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tr = document.createElement('tr'); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add some suffix based on the type. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var path = entry.path; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (entry.is_directory) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path += '/'; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (entry.is_symbolic_link) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path += '@'; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', path)); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', entry.size)); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', entry.last_modified)); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tr.appendChild(createElementFromText('td', entry.permission)); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tbody.appendChild(tr); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch $('gcache-summary-total-size').textContent = 74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ToMegaByteString(gcacheSummary['total_size']); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the File System Contents section. The function is called from the 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * C++ side repeatedly with contents of a directory. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} directoryContentsAsText Pre-formatted string representation 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of contents a directory in the file system. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateFileSystemContents(directoryContentsAsText) { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var div = $('file-system-contents'); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) div.appendChild(createElementFromText('pre', directoryContentsAsText)); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the Cache Contents section. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} cacheEntry Dictionary describing a cache entry. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The function is called from the C++ side repeatedly. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateCacheContents(cacheEntry) { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tr = document.createElement('tr'); 958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) tr.appendChild(createElementFromText('td', cacheEntry.local_id)); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', cacheEntry.md5)); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', cacheEntry.is_present)); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', cacheEntry.is_pinned)); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', cacheEntry.is_dirty)); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('cache-contents').appendChild(tr); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the Local Storage summary. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} localStorageSummary Dictionary describing the status of local 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * stogage. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateLocalStorageUsage(localStorageSummary) { 110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var freeSpaceInMB = ToMegaByteString(localStorageSummary.free_space); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('local-storage-freespace').innerText = freeSpaceInMB; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the summary about in-flight operations. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Array} inFlightOperations List of dictionaries describing the status 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of in-flight operations. 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateInFlightOperations(inFlightOperations) { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var container = $('in-flight-operations-contents'); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Reset the table. Remove children in reverse order. Otherwides each 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // existingNodes[i] changes as a side effect of removeChild. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var existingNodes = container.childNodes; 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (var i = existingNodes.length - 1; i >= 0; i--) { 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var node = existingNodes[i]; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (node.className == 'in-flight-operation') 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) container.removeChild(node); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add in-flight operations. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < inFlightOperations.length; i++) { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var operation = inFlightOperations[i]; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tr = document.createElement('tr'); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.className = 'in-flight-operation'; 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tr.appendChild(createElementFromText('td', operation.id)); 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tr.appendChild(createElementFromText('td', operation.type)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', operation.file_path)); 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) tr.appendChild(createElementFromText('td', operation.state)); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var progress = operation.progress_current + '/' + operation.progress_total; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (operation.progress_total > 0) { 142ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var percent = operation.progress_current / operation.progress_total * 100; 143ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch progress += ' (' + Math.round(percent) + '%)'; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', progress)); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) container.appendChild(tr); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Updates the summary about about resource. 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param {Object} aboutResource Dictionary describing about resource. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function updateAboutResource(aboutResource) { 156ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var quotaTotalInMb = ToMegaByteString(aboutResource['account-quota-total']); 157ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var quotaUsedInMb = ToMegaByteString(aboutResource['account-quota-used']); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('account-quota-info').textContent = 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quotaUsedInMb + ' / ' + quotaTotalInMb + ' (MB)'; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('account-largest-changestamp-remote').textContent = 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) aboutResource['account-largest-changestamp-remote']; 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('root-resource-id').textContent = aboutResource['root-resource-id']; 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Updates the summary about app list. 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param {Object} appList Dictionary describing app list. 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function updateAppList(appList) { 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('app-list-etag').textContent = appList['etag']; 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var itemContainer = $('app-list-items'); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (var i = 0; i < appList['items'].length; i++) { 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var app = appList['items'][i]; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tr = document.createElement('tr'); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.className = 'installed-app'; 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tr.appendChild(createElementFromText('td', app.name)); 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tr.appendChild(createElementFromText('td', app.application_id)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', app.object_type)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.appendChild(createElementFromText('td', app.supports_create)); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) itemContainer.appendChild(tr); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the local cache information about account metadata. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} localMetadata Dictionary describing account metadata. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateLocalMetadata(localMetadata) { 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var changestamp = localMetadata['account-largest-changestamp-local']; 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('account-largest-changestamp-local').textContent = 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) changestamp.toString() + 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) (changestamp > 0 ? ' (loaded)' : ' (not loaded)') + 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (localMetadata['account-metadata-refreshing'] ? ' (refreshing)' : ''); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the summary about delta update status. 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} deltaUpdateStatus Dictionary describing delta update status. 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateDeltaUpdateStatus(deltaUpdateStatus) { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('push-notification-enabled').textContent = 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deltaUpdateStatus['push-notification-enabled']; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('last-update-check-time').textContent = 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deltaUpdateStatus['last-update-check-time']; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('last-update-check-error').textContent = 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deltaUpdateStatus['last-update-check-error']; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Updates the event log section. 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param {Array} log Array of events. 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function updateEventLog(log) { 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var ul = $('event-log'); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) updateKeyValueList(ul, log); 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an element named |elementName| containing the content |text|. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} elementName Name of the new element to be created. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} text Text to be contained in the new element. 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {HTMLElement} The newly created HTML element. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function createElementFromText(elementName, text) { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var element = document.createElement(elementName); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) element.appendChild(document.createTextNode(text)); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return element; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates <ul> element with the given key-value list. 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {HTMLElement} ul <ul> element to be modified. 237a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * @param {Array} list List of dictionaries containing 'key', 'value' (optional) 238a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * and 'class' (optional). For each element <li> element with specified class is 239a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * created. 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateKeyValueList(ul, list) { 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < list.length; i++) { 243a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) var item = list[i]; 244a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) var text = item.key; 245a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (item.value != '') 246a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) text += ': ' + item.value; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var li = createElementFromText('li', text); 249a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (item.class) 250a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) li.classList.add(item.class); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ul.appendChild(li); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/** 2565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Updates the text next to the 'reset' button to update the status. 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {boolean} success whether or not resetting has succeeded. 258f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function updateResetStatus(success) { 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) $('reset-status-text').textContent = (success ? 'success' : 'failed'); 261f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 262f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)document.addEventListener('DOMContentLoaded', function() { 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('pageLoaded'); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update the table of contents. 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var toc = $('toc'); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var sections = document.getElementsByTagName('h2'); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < sections.length; i++) { 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var section = sections[i]; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var a = createElementFromText('a', section.textContent); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a.href = '#' + section.id; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var li = document.createElement('li'); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) li.appendChild(a); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) toc.appendChild(li); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('button-clear-access-token').addEventListener('click', function() { 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome.send('clearAccessToken'); 2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }); 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('button-clear-refresh-token').addEventListener('click', function() { 2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome.send('clearRefreshToken'); 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }); 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) $('button-reset-drive-filesystem').addEventListener('click', function() { 2875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) $('reset-status-text').textContent = 'resetting...'; 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chrome.send('resetDriveFileSystem'); 289f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }); 290f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) $('button-show-file-entries').addEventListener('click', function() { 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var button = $('button-show-file-entries'); 293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) button.parentNode.removeChild(button); 294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome.send('listFileEntries'); 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }); 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window.setInterval(function() { 298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome.send('periodicUpdate'); 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 1000); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 301