diff options
Diffstat (limited to 'Resources/search.js')
| -rw-r--r-- | Resources/search.js | 159 |
1 files changed, 68 insertions, 91 deletions
diff --git a/Resources/search.js b/Resources/search.js index 54038da..1afe7f2 100644 --- a/Resources/search.js +++ b/Resources/search.js @@ -1,6 +1,21 @@ // Create a reference to the current window var win = Titanium.UI.currentWindow; + +// Create a search input bar +var search_input = Titanium.UI.createSearchBar({ + hintText: 'Enter a search query', // let user know what to type + height: 43, + top: 0 +}); + +var result_table = Titanium.UI.createTableView({ + top: 43 +}); +var row_data = []; // an array to store our result rows in + // (this gets fed into the result_table) + + // Create an object to contain some useful functions // Namespacing can be useful for keeping code organised in Ti applications // In simple applications such as this, it's not exactly necessary @@ -12,20 +27,62 @@ var TSearch = { request.onload = function() { var results = (eval('(' + this.responseText + ')')).results; - // No result case? - - // Open a database to store our result set (Ti uses asynchronous - // requests, so this is what I came up with to separate view - // and data code) - var db = Titanium.Database.open('twitsearch'); - db.execute('CREATE TABLE IF NOT EXISTS "search_results" (tweet TEXT, user STRING, avatar STRING)'); - db.execute('DELETE FROM "search_results"'); + row_data = []; // Clear existing row_data for (var i = 0; i < results.length; i++) { - db.execute('INSERT INTO "search_results" (tweet, user, avatar) VALUES (?, ?, ?)', results[i].text, results[i].from_user, results[i].profile_image_url); + // Construct a TableView to display our results + + var tweet = results[i].text; + var user = results[i].from_user; + var avatar = results[i].profile_image_url; + + var row = Titanium.UI.createTableViewRow({ + height: 'auto', + selectedBackgroundColor: 'transparent' + }); + // tweet_view will contain our tweet elements for a customised TableRow + var tweet_view = Titanium.UI.createView({ + height: 'auto', + top: 5, + right: 5, + bottom: 5, + left: 5 + }); + var avatar_image = Titanium.UI.createImageView({ + image: avatar, + top: 0, + left: 0, + height: 45, + width: 45 + }); + var user_label = Titanium.UI.createLabel({ + text: user, + height: 'auto', + font: {fontFamily: 'Helvetica Neue', fontSize: 16, fontWeight: 'bold'}, + top: -5, + left: 50 + }); + var tweet_label = Titanium.UI.createLabel({ + text: tweet, + height: 'auto', + font: {fontSize: 14}, + top: 15, + left: 50 + }); + + + // Combine our UI elements + tweet_view.add(avatar_image); + tweet_view.add(user_label); + tweet_view.add(tweet_label); + row.add(tweet_view); + + // Add our row to the row_data array + row_data.push(row); } - db.close(); + // Add our new rows to the result TableView + result_table.setData(row_data); }; request.send(); @@ -33,94 +90,14 @@ var TSearch = { }; -// Create a search input bar -var search_input = Titanium.UI.createSearchBar({ - hintText: 'Enter a search query', // let user know what to type - height: 43, - top: 0 -}); - -var result_table = Titanium.UI.createTableView({ - top: 43 -}); -var row_data = []; // an array to store our result rows in - // (this gets fed into the result_table) - - search_input.addEventListener('return', function(e) { TSearch.s(e.value); - // Clear existing row_data - row_data = []; - - var db = Titanium.Database.open('twitsearch'); - //db.execute('CREATE TABLE IF NOT EXISTS "search_results" (tweet TEXT, user STRING, avatar STRING)'); - var results = db.execute('SELECT * FROM "search_results"'); - - while (results.isValidRow()) { - // Construct a TableView to display our results - - var tweet = results.fieldByName('tweet'); - var user = results.fieldByName('user'); - var avatar = results.fieldByName('avatar'); - - var row = Titanium.UI.createTableViewRow({ - height: 'auto', - selectedBackgroundColor: 'transparent' - }); - // tweet_view will contain our tweet elements for a customised TableRow - var tweet_view = Titanium.UI.createView({ - height: 'auto', - top: 5, - right: 5, - bottom: 5, - left: 5 - }); - var avatar_image = Titanium.UI.createImageView({ - image: avatar, - top: 0, - left: 0, - height: 45, - width: 45 - }); - var user_label = Titanium.UI.createLabel({ - text: user, - height: 'auto', - font: {fontFamily: 'Helvetica Neue', fontSize: 16, fontWeight: 'bold'}, - top: -5, - left: 50 - }); - var tweet_label = Titanium.UI.createLabel({ - text: tweet, - height: 'auto', - font: {fontSize: 14}, - top: 15, - left: 50 - }); - - - // Combine our UI elements - tweet_view.add(avatar_image); - tweet_view.add(user_label); - tweet_view.add(tweet_label); - row.add(tweet_view); - - // Add our row to the row_data array - row_data.push(row); - - results.next(); - } - - results.close(); - db.close(); - // Blur search field to hide on-screen keyboard search_input.blur(); - - // Add our new rows to the result TableView - result_table.setData(row_data); }); +// Add our UI elements to the window win.add(search_input); win.add(result_table); |
