diff --git a/app.js b/app.js
index b0b06a9..68b5016 100644
--- a/app.js
+++ b/app.js
@@ -13,6 +13,58 @@ db.settings({ timestampsInSnapshots: true });
var searchTimeout = null;
var resultsElm = document.getElementById('results');
+
+function runQuery (query) {
+ var input = document.querySelector('input');
+ input.parentElement.classList.add('is-loading');
+ results.innerHTML = '
|
';
+ query
+ .get()
+ .then(function (docs) {
+ if (docs.empty) {
+ results.innerHTML = '| No results found for query "' + queryString + '" |
';
+ return;
+ }
+
+ // Collect the data of our documents into an array
+ var data = [];
+ for (var i = 0; i < docs.size; i += 1) {
+ var doc = docs.docs[i];
+ data.push(doc.data());
+ }
+
+ // Sort our array by my popular movie first
+ data.sort(function (a, b) {
+ if (a.imdb_position < b.imdb_position) return -1;
+ if (a.imdb_position > b.imdb_position) return 1;
+ return 0;
+ });
+
+ // Render our results
+ results.innerHTML = '';
+ for (var i = 0; i < data.length; i += 1) {
+ var doc = data[i];
+ tr = document.createElement('tr');
+ var td = document.createElement('td');
+ td.innerText = doc.imdb_position;
+ tr.appendChild(td);
+
+ td = document.createElement('td');
+ td.innerText = doc.title;
+ tr.appendChild(td);
+
+ td = document.createElement('td');
+ td.innerText = doc.released;
+ tr.appendChild(td);
+
+ results.appendChild(tr);
+ }
+ })
+ .finally(function () {
+ input.parentElement.classList.remove('is-loading');
+ });
+}
+
document.querySelector('input').addEventListener('keyup', function (evt) {
var elm = evt.target;
var queryString = elm.value.trim();
@@ -43,74 +95,10 @@ document.querySelector('input').addEventListener('keyup', function (evt) {
// Use `setTimeout` to debounce our api calls
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function () {
- elm.parentElement.classList.add('is-loading');
- query
- .get()
- .then(function (docs) {
- if (docs.empty) {
- results.innerHTML = 'No results found for query "' + queryString + '"
';
- return;
- }
-
- // Collect the data of our documents into an array
- var data = [];
- for (var i = 0; i < docs.size; i += 1) {
- var doc = docs.docs[i];
- data.push(doc.data());
- }
-
- // Sort our array by my popular movie first
- data.sort(function (a, b) {
- if (a.imdb_position < b.imdb_position) return -1;
- if (a.imdb_position > b.imdb_position) return 1;
- return 0;
- });
-
- // Render our results
- // Table
- var table = document.createElement('table');
- table.classList.add('table');
- table.classList.add('is-striped');
-
- // Heading row
- var thead = document.createElement('thead');
- table.appendChild(thead);
- var tr = document.createElement('tr');
- thead.appendChild(tr);
-
- var th = document.createElement('th');
- th.innerText = 'Position';
- thead.appendChild(th);
- th = document.createElement('th');
- th.innerText = 'Title';
- thead.appendChild(th);
- th = document.createElement('th');
- th.innerText = 'Released';
- thead.appendChild(th);
-
- for (var i = 0; i < data.length; i += 1) {
- var doc = data[i];
- tr = document.createElement('tr');
- var td = document.createElement('td');
- td.innerText = doc.imdb_position;
- tr.appendChild(td);
-
- td = document.createElement('td');
- td.innerText = doc.title;
- tr.appendChild(td);
-
- td = document.createElement('td');
- td.innerText = doc.released;
- tr.appendChild(td);
-
- table.appendChild(tr);
- }
-
- results.innerHTML = '';
- results.appendChild(table);
- })
- .finally(function () {
- elm.parentElement.classList.remove('is-loading');
- });
+ runQuery(query);
}, 300);
});
+
+// Run initial query to load some data
+var top20 = db.collection('movies').orderBy('imdb_position', 'asc').limit(20);
+runQuery(top20);
diff --git a/index.html b/index.html
index b521d31..05ca9a7 100644
--- a/index.html
+++ b/index.html
@@ -18,14 +18,24 @@
-
+
+
+
+ | Position |
+ Title |
+ Released |
+
+
+
+
+