diff options
Diffstat (limited to 'examples/quick/demos/stocqt/content/StockModel.qml')
-rw-r--r-- | examples/quick/demos/stocqt/content/StockModel.qml | 51 |
1 files changed, 12 insertions, 39 deletions
diff --git a/examples/quick/demos/stocqt/content/StockModel.qml b/examples/quick/demos/stocqt/content/StockModel.qml index 5352992789..2828f13fac 100644 --- a/examples/quick/demos/stocqt/content/StockModel.qml +++ b/examples/quick/demos/stocqt/content/StockModel.qml @@ -49,12 +49,12 @@ ****************************************************************************/ import QtQuick 2.0 +import "stocqt.js" as JSLibrary ListModel { id: model property string stockId: "" property string stockName: "" - property string stockDataCycle: "d" property bool ready: false property real stockPrice: 0.0 property real stockPriceChanged: 0.0 @@ -67,6 +67,7 @@ ListModel { var newest = new Date(model.get(0).date); var oldest = new Date(model.get(model.count - 1).date); + if (newest <= date) return -1; @@ -81,7 +82,7 @@ ListModel { currDiff = Math.abs(d.getTime() - date.getTime()); if (currDiff < bestDiff) { bestDiff = currDiff; - retval = i; + retval = i + 1; } if (currDiff > bestDiff) return retval; @@ -90,52 +91,25 @@ ListModel { return -1; } - function requestUrl() { - if (stockId === "") - return; - - var startDate = new Date(2011, 4, 25); - - var endDate = new Date(); //today - - if (stockDataCycle !== "d" && stockDataCycle !== "w" && stockDataCycle !== "m") - stockDataCycle = "d"; - - /* - Fetch stock data from yahoo finance: - url: http://ichart.finance.yahoo.com/table.csv?s=NOK&a=5&b=11&c=2010&d=7&e=23&f=2010&g=d&ignore=.csv - s:stock name/id, a:start day, b:start month, c:start year default: 25 April 1995, oldest c= 1962 - d:end day, e:end month, f:end year, default:today (data only available 3 days before today) - g:data cycle(d daily, w weekly, m monthly, v Dividend) - */ - var request = "http://ichart.finance.yahoo.com/table.csv?"; - request += "s=" + stockId; - request += "&a=" + startDate.getMonth(); - request += "&b=" + startDate.getDate(); - request += "&c=" + startDate.getFullYear(); - request += "&d=" + endDate.getMonth(); - request += "&e=" + endDate.getDate(); - request += "&f=" + endDate.getFullYear(); - request += "&g=" + stockDataCycle; - request += "&ignore=.csv"; - return request; - } - function createStockPrice(r) { return { - "date": r[0], + "date": JSLibrary.parseDate(r[0]), "open":r[1], "high":r[2], "low":r[3], "close":r[4], "volume":r[5], - "adjusted":r[6] }; } function updateStock() { - var req = requestUrl(); + if (stockId === "") + return; + var startDate = new Date(2011, 4, 25); + var endDate = new Date(); //today + + var req = JSLibrary.requestUrl(stockId, startDate, endDate); if (!req) return; @@ -149,17 +123,16 @@ ListModel { xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.LOADING || xhr.readyState === XMLHttpRequest.DONE) { var records = xhr.responseText.split('\n'); - for (;i < records.length; i++ ) { var r = records[i].split(','); - if (r.length === 7) + if (r.length === 6) model.append(createStockPrice(r)); } if (xhr.readyState === XMLHttpRequest.DONE) { if (model.count > 0) { model.ready = true; - model.stockPrice = model.get(0).adjusted; + model.stockPrice = model.get(0).close; model.stockPriceChanged = model.count > 1 ? (Math.round((model.stockPrice - model.get(1).close) * 100) / 100) : 0; } else { model.stockPrice = 0; |