aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/demos/stocqt/content/StockModel.qml
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/demos/stocqt/content/StockModel.qml')
-rw-r--r--examples/quick/demos/stocqt/content/StockModel.qml58
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;