Index: components/dom_distiller/webui/resources/about_dom_distiller.js |
diff --git a/components/dom_distiller/webui/resources/about_dom_distiller.js b/components/dom_distiller/webui/resources/about_dom_distiller.js |
index f558d7fa9fb1c0bfd1961ee9a31844dfaaa309cb..4a401a9c911850f40ce38b569f7263e7a6d985d5 100644 |
--- a/components/dom_distiller/webui/resources/about_dom_distiller.js |
+++ b/components/dom_distiller/webui/resources/about_dom_distiller.js |
@@ -2,31 +2,76 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-/** |
- * Callback from the backend with the list of entries to display. |
- * This call will build the entries section of the DOM distiller page, or hide |
- * that section if there are none to display. |
- * @param {!Array.<string>} entries The entries. |
- */ |
-function onGotEntries(entries) { |
- $('entries-section').hidden = !entries.length; |
- if (entries.length > 0) { |
- var list = document.createElement('ul'); |
+var domDistiller = { |
+ /** |
+ * Callback from the backend with the list of entries to display. |
+ * This call will build the entries section of the DOM distiller page, or hide |
+ * that section if there are none to display. |
+ * @param {!Array.<string>} entries The entries. |
+ */ |
+ onReceivedEntries: function(entries) { |
+ $('entries-list-loading').classList.add('hidden'); |
+ if (!entries.length) $('entries-list').classList.add('hidden'); |
+ |
+ var list = $('entries-list'); |
+ domDistiller.removeAllChildren(list); |
for (var i = 0; i < entries.length; i++) { |
var listItem = document.createElement('li'); |
var link = document.createElement('a'); |
+ var entry_id = entries[i].entry_id; |
+ link.setAttribute('id', 'entry-' + entry_id); |
+ link.setAttribute('href', '#'); |
link.innerText = entries[i].title; |
- link.setAttribute('href', entries[i].url); |
+ link.addEventListener('click', function(event) { |
+ domDistiller.onSelectArticle(event.target.id.substr("entry-".length)); |
+ }, true); |
listItem.appendChild(link); |
list.appendChild(listItem); |
} |
- $('entries-list').appendChild(list); |
- } |
-} |
+ }, |
+ |
+ /** |
+ * Callback from the backend when adding an article failed. |
+ */ |
+ onArticleAddFailed: function() { |
+ $('add-entry-error').classList.remove('hidden'); |
+ }, |
+ |
+ removeAllChildren: function(root) { |
+ while(root.firstChild) { |
+ root.removeChild(root.firstChild); |
+ } |
+ }, |
+ |
+ onAddArticle: function() { |
+ $('add-entry-error').classList.add('hidden'); |
+ var url = $('article_url').value; |
+ chrome.send('addArticle', [url]); |
+ }, |
+ |
+ onSelectArticle: function(articleId) { |
+ chrome.send('selectArticle', [articleId]); |
+ }, |
+ |
+ /* All the work we do on load. */ |
+ onLoadWork: function() { |
+ $('list-section').classList.remove('hidden'); |
+ $('entries-list-loading').classList.add('hidden'); |
+ $('add-entry-error').classList.add('hidden'); |
+ |
+ $('refreshbutton').addEventListener('click', function(event) { |
+ domDistiller.onRequestEntries(); |
+ }, false); |
+ $('addbutton').addEventListener('click', function(event) { |
+ domDistiller.onAddArticle(); |
+ }, false); |
+ domDistiller.onRequestEntries(); |
+ }, |
-/* All the work we do on load. */ |
-function onLoadWork() { |
- chrome.send('requestEntries'); |
+ onRequestEntries: function() { |
+ $('entries-list-loading').classList.remove('hidden'); |
+ chrome.send('requestEntries'); |
+ }, |
} |
-document.addEventListener('DOMContentLoaded', onLoadWork); |
+document.addEventListener('DOMContentLoaded', domDistiller.onLoadWork); |