From 41913c5bbd0530b223d211df7d76b77bc60342e5 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Fri, 4 Oct 2013 09:01:10 -0500 Subject: [PATCH 1/2] Friday project for week 5 2013-10-4 --- index.html | 8 +++++--- src/main.js | 41 +++++++++++++++++++++++++++++++++++++++-- src/models/.gitkeep | 0 src/models/dummy.js | 9 --------- src/models/stock.js | 10 ++++++++++ src/views/.gitkeep | 0 src/views/dummy.js | 9 --------- src/views/stock-view.js | 8 ++++++++ 8 files changed, 62 insertions(+), 23 deletions(-) delete mode 100644 src/models/.gitkeep delete mode 100644 src/models/dummy.js create mode 100644 src/models/stock.js delete mode 100644 src/views/.gitkeep delete mode 100644 src/views/dummy.js create mode 100644 src/views/stock-view.js diff --git a/index.html b/index.html index 0043fc2..9adc1b3 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,11 @@ - Backbone Starter + Super Special Awesome Stock Ticker + + @@ -13,9 +15,9 @@ - + - + diff --git a/src/main.js b/src/main.js index a63a7c7..5c7167f 100644 --- a/src/main.js +++ b/src/main.js @@ -1,3 +1,40 @@ +(function () { -// Remove this line when you start working -alert('Hello World!'); + // Create our stocks + var yhoo = new Stock({ name: 'YHOO' }); + var aapl = new Stock({ name: 'AAPL' }); + var goog = new Stock({ name: 'GOOG' }); + var msft = new Stock({ name: 'MSFT' }); + + // Store in a variable for convenience + var stocks = [yhoo, aapl, goog, msft]; + + // Create a view for each stock and render its element to the page + _.each(stocks, function (stock) { + var view = new StockView({ model: stock }); + view.render(); + $('.stocks').append(view.el); + }); + + // ---- + // Get realtime stock data + // It's not required that you understand the code. + + window.updateStocks = function (data) { + + _.each(data.query.results.quote, function (quote) { + var stock = _.find(stocks, function (s) { return s.get('name') == quote.symbol }); + stock.updatePrice(quote.AskRealtime); + }); + setTimeout(updateLoop, 3000); + } + + var updateLoop = function () { + $.ajax({ + url: 'http://mks-cacher.nodejitsu.com/', + dataType: 'jsonp' + }); + }; + updateLoop(); + +})(); diff --git a/src/models/.gitkeep b/src/models/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/models/dummy.js b/src/models/dummy.js deleted file mode 100644 index a82d49f..0000000 --- a/src/models/dummy.js +++ /dev/null @@ -1,9 +0,0 @@ -(function () { - - window.Dummy = Backbone.Model.extend({ - defaults: { - foo: 'default val' - } - }); - -})(); diff --git a/src/models/stock.js b/src/models/stock.js new file mode 100644 index 0000000..d05bcda --- /dev/null +++ b/src/models/stock.js @@ -0,0 +1,10 @@ +(function () { + + window.Stock = Backbone.Model.extend({ + updatePrice: function (newPrice) { + console.log('Updating', this.get('name'), 'price to:', newPrice); + // TODO + } + }); + +})(); diff --git a/src/views/.gitkeep b/src/views/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/views/dummy.js b/src/views/dummy.js deleted file mode 100644 index b61d1f0..0000000 --- a/src/views/dummy.js +++ /dev/null @@ -1,9 +0,0 @@ -(function () { - - window.DummyView = Backbone.View.extend({ - initialize: function (options) { - this.bar = 'init val'; - } - }); - -})(); diff --git a/src/views/stock-view.js b/src/views/stock-view.js new file mode 100644 index 0000000..faa5795 --- /dev/null +++ b/src/views/stock-view.js @@ -0,0 +1,8 @@ +(function () { + + window.StockView = Backbone.View.extend({ + className: 'stock' + // TODO + }); + +})(); From 45ffc305c8fafaebbe01e2d612a8062a1896af43 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Fri, 4 Oct 2013 13:40:04 -0500 Subject: [PATCH 2/2] Removed unnecessary line --- src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 5c7167f..3872b23 100644 --- a/src/main.js +++ b/src/main.js @@ -10,9 +10,9 @@ var stocks = [yhoo, aapl, goog, msft]; // Create a view for each stock and render its element to the page + // Since view start with a blank div, we can do this no problem _.each(stocks, function (stock) { var view = new StockView({ model: stock }); - view.render(); $('.stocks').append(view.el); });