diff options
Diffstat (limited to 'examples/quick/demos/stocqt/content/StockModel.qml')
-rw-r--r-- | examples/quick/demos/stocqt/content/StockModel.qml | 58 |
1 files changed, 16 insertions, 42 deletions
diff --git a/examples/quick/demos/stocqt/content/StockModel.qml b/examples/quick/demos/stocqt/content/StockModel.qml index 5352992789..9e3a815c11 100644 --- a/examples/quick/demos/stocqt/content/StockModel.qml +++ b/examples/quick/demos/stocqt/content/StockModel.qml @@ -54,7 +54,8 @@ ListModel { id: model property string stockId: "" property string stockName: "" - property string stockDataCycle: "d" + property var newest + property var oldest property bool ready: false property real stockPrice: 0.0 property real stockPriceChanged: 0.0 @@ -65,10 +66,10 @@ ListModel { if (model.count == 0) return -1; - var newest = new Date(model.get(0).date); - var oldest = new Date(model.get(model.count - 1).date); if (newest <= date) - return -1; + date = new Date(newest.getYear(), + newest.getMonth(), + newest.getDate() - 7); if (oldest >= date) return model.count - 1; @@ -81,46 +82,14 @@ ListModel { currDiff = Math.abs(d.getTime() - date.getTime()); if (currDiff < bestDiff) { bestDiff = currDiff; - retval = i; + retval = i + 1; } if (currDiff > bestDiff) return retval; } - 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], @@ -129,13 +98,17 @@ ListModel { "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 = "data/" + stockId + ".csv" if (!req) return; @@ -149,18 +122,19 @@ 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; + newest = new Date(model.get(0).date); + oldest = new Date(model.get(model.count - 1).date); } else { model.stockPrice = 0; model.stockPriceChanged = 0; |