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)/**
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Requests the database from the backend.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function requestAutocompleteActionPredictorDb() {
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome.send('requestAutocompleteActionPredictorDb');
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback from backend with the database contents. Sets up some globals and
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * calls to create the UI.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Dictionary} database Information about AutocompleteActionPredictor
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     including the database as a flattened list, a boolean indicating if the
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     system is enabled and the current hit weight.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateAutocompleteActionPredictorDb(database) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  console.debug('Updating Table NAP DB');
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var filter = $('filter');
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  filter.disabled = false;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  filter.onchange = function() {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    updateAutocompleteActionPredictorDbView(database);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  updateAutocompleteActionPredictorDbView(database);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the table from the database.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Dictionary} database Information about AutocompleteActionPredictor
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     including the database as a flattened list, a boolean indicating if the
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     system is enabled and the current hit weight.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function updateAutocompleteActionPredictorDbView(database) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var databaseSection = $('databaseTableBody');
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var showEnabled = database.enabled && database.db;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('autocompleteActionPredictorEnabledMode').hidden = !showEnabled;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('autocompleteActionPredictorDisabledMode').hidden = showEnabled;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!showEnabled)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var filter = $('filter');
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clear any previous list.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  databaseSection.textContent = '';
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (var i = 0; i < database.db.length; ++i) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var entry = database.db[i];
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!filter.checked || entry.confidence > 0) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var row = document.createElement('tr');
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.className = (entry.confidence > 0.8 ? 'action-prerender' :
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (entry.confidence > 0.5 ? 'action-preconnect' :
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              'action-none'));
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.appendChild(document.createElement('td')).textContent =
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          entry.user_text;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.appendChild(document.createElement('td')).textContent = entry.url;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.appendChild(document.createElement('td')).textContent =
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          entry.hit_count;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.appendChild(document.createElement('td')).textContent =
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          entry.miss_count;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      row.appendChild(document.createElement('td')).textContent =
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          entry.confidence;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      databaseSection.appendChild(row);
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('countBanner').textContent = 'Entries: ' + databaseSection.children.length;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)document.addEventListener('DOMContentLoaded',
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          requestAutocompleteActionPredictorDb);
79