Replaced YQL data source with CSV
[marketstoday] / src / qml / StockDetailsComponent.qml
index ff62e44..ede381b 100644 (file)
@@ -6,6 +6,7 @@
 
 import Qt 4.7
 import "Library" as Library
+import "Library/js/CSVUtility.js" as CSVUtility
 
 Item {
 
@@ -72,12 +73,13 @@ Item {
         }
 
         function loadDetails(){
-            var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,LastTradeDate,LastTradeTime,Change,ChangeinPercent,DaysRange,YearRange,Volume,PreviousClose,MarketCapitalization from yahoo.finance.quotes where symbol in ("'+symbol+'")&env=store://datatables.org/alltableswithkeys';
+            var queryURL = 'http://download.finance.yahoo.com/d/quotes.csv?s='+symbol+'&f=snl1d1t1c1p2mwvpj1&e=.csv';
+            //var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,LastTradeDate,LastTradeTime,Change,ChangeinPercent,DaysRange,YearRange,Volume,PreviousClose,MarketCapitalization from yahoo.finance.quotes where symbol in ("'+symbol+'")&env=store://datatables.org/alltableswithkeys';
             logRequest("Loading stock details from "+queryURL);
             var response = new XMLHttpRequest();
             response.onreadystatechange = function() {
-                if (response.readyState == XMLHttpRequest.DONE) {
-                    refreshDetails(response.responseXML);
+                if (response.readyState === XMLHttpRequest.DONE) {
+                    refreshDetails(response.responseText);
                 }
             }
 
@@ -90,7 +92,7 @@ Item {
             logRequest("Loading news from "+rssURL);
             var response = new XMLHttpRequest();
             response.onreadystatechange = function() {
-                if (response.readyState == XMLHttpRequest.DONE) {
+                if (response.readyState === XMLHttpRequest.DONE) {
                     refreshNewsModel(response.responseXML);
                 }
             }
@@ -99,66 +101,32 @@ Item {
             response.send();
         }
 
-        function refreshDetails(responseXML){
-            if (!responseXML) return;
-            var xmlDoc = responseXML.documentElement;
-            var results = xmlDoc.firstChild;
+        function refreshDetails(responseText){
+            if (!responseText) {
+                logUtility("No responseText for quote "+symbol);
+                return;
+            }
 
-            if (results) {
-                var quoteNodes = results.childNodes;
-                if (quoteNodes){
-                    if (quoteNodes.length === 0) {
-                        logRequest("No results for stock quote details");
-                    }
-                    else{
-                        //We are only expecting one quote node per symbol.
-                        var quoteElements = quoteNodes[0].childNodes;
-                        var j = 0;
-                        var lastTradedDate = "", lastTradedTime ="";
-                        for (j = 0; j < quoteElements.length; j++){
-
-                            if (quoteElements[j].childNodes[0]) {
-                                switch (quoteElements[j].nodeName){
-                                    case 'Name':
-                                        stockName = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'LastTradePriceOnly':
-                                        lastTradedPrice = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'LastTradeDate':
-                                        lastTradedDate = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'LastTradeTime':
-                                        lastTradedTime = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'Change':
-                                        change = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'ChangeinPercent':
-                                        changePercentage = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'DaysRange':
-                                        daysRange = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'YearRange':
-                                        yearRange = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'Volume':
-                                        marketVolume = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'PreviousClose':
-                                        prevClose = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    case 'MarketCapitalization':
-                                        marketCap = quoteElements[j].childNodes[0].nodeValue;
-                                        break;
-                                    default:
-                                }
-                            }
-                        }
-                        if (lastTradedDate !== "") lastTradedDateTime = lastTradedDate + " " + lastTradedTime;
-                    }
-                }
+            var quoteDetails = CSVUtility.csvToArray(responseText.trim());
+            if (quoteDetails && quoteDetails.length > 0){
+                //We are only expecting one quote row per symbol.
+                //snl1d1t1c1p2mwvpj1
+                var lastTradedDate = "", lastTradedTime ="";
+                stockName = quoteDetails[0][1];
+                lastTradedPrice = quoteDetails[0][2];
+                lastTradedDate = quoteDetails[0][3];
+                lastTradedTime = quoteDetails[0][4];
+                change = quoteDetails[0][5];
+                changePercentage = quoteDetails[0][6];
+                daysRange = quoteDetails[0][7];
+                yearRange = quoteDetails[0][8];
+                marketVolume = quoteDetails[0][9];
+                prevClose = quoteDetails[0][10];
+                marketCap = quoteDetails[0][11];
+                if (lastTradedDate !== "") lastTradedDateTime = lastTradedDate + " " + lastTradedTime;
+            }
+            else {
+                logRequest("No results for stock quote details");
             }
         }