Harmattan font changes completed
[marketstoday] / src / qml / Library / js / CoreLogic.js
index 11341e2..f6dd8e1 100644 (file)
@@ -1,5 +1,5 @@
 /*
-@version: 0.2
+@version: 0.5
 @author: Sudheer K. <scifi1947 at gmail.com>
 @license: GNU General Public License
 */
@@ -11,14 +11,14 @@ function reloadQuotes(){
     if (query){
         quoteRefreshStarted();
         logUtility.logMessage("Reloading Data..");
-
         //var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ("INDU","^IXIC","^GSPC","CLJ11.NYM","YHOO","AAPL","GOOG","MSFT")&env=store://datatables.org/alltableswithkeys';
-        var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,Change,ChangeinPercent,Volume,MarketCapitalization from yahoo.finance.quotes where symbol in ('+query+')&env=store://datatables.org/alltableswithkeys';
+        //var queryURL = 'http://download.finance.yahoo.com/d/quotes.csv?s=INDU+^IXIC+^GSPC+CLJ11.NYM+YHOO+AAPL+GOOG+MSFT+ACT&f=snl1c1p2vj1&e=.csv';
+        var queryURL = 'http://download.finance.yahoo.com/d/quotes.csv?s='+query+'&f=snl1c1p2vj1&e=.csv';
         logUtility.logMessage(queryURL);
 
         var response = new XMLHttpRequest();
         response.onreadystatechange = function() {
-            if (response.readyState == XMLHttpRequest.DONE) {
+            if (response.readyState === XMLHttpRequest.DONE) {
                 var success = refreshDataModel(response);
                 if (success === true){
                     logUtility.logMessage("Data Reload Completed..");
@@ -35,7 +35,10 @@ function reloadQuotes(){
     }
     else{
         logUtility.logMessage("No stock symbols found in configuration.");
-        strErrorMessage = "Tap the title bar to add stock tickers and update settings."
+        if (!isDesktopWidget)
+            strErrorMessage = "Tap the title bar to add stock tickers and update settings."
+        else
+            strErrorMessage = "Use the widget settings screen to add stock tickers and update configuration."
         stockQuoteDataModel.clear();
         quoteRefreshCompleted(false,strErrorMessage);
     }
@@ -50,10 +53,10 @@ function getQuery(){
             logUtility.logMessage("Appending "+symbolsArray[i]+ " to Query");
 
             if (!query){
-                query = '"'+symbolsArray[i]+'"';
+                query = symbolsArray[i];
             }
             else{
-                query = query + ',"' + symbolsArray[i]+'"';
+                query = query + '+' + symbolsArray[i];
             }
         }
     }
@@ -62,7 +65,7 @@ function getQuery(){
 }
 
 function reloadNews(){
-    if (!rssURL || rssURL == "Unknown") {
+    if (!rssURL || rssURL === "Unknown") {
         logUtility.logMessage("Invalid RSS URL: "+rssURL);
     }
     else{
@@ -71,7 +74,7 @@ function reloadNews(){
         logUtility.logMessage(rssURL);
         var response = new XMLHttpRequest();
         response.onreadystatechange = function() {
-            if (response.readyState == XMLHttpRequest.DONE) {
+            if (response.readyState === XMLHttpRequest.DONE) {
                 var success = refreshNewsModel(response);
                 if (success === true){
                     logUtility.logMessage("News Reload Completed..");
@@ -90,68 +93,45 @@ function reloadNews(){
 
 function refreshDataModel(response){
     var status = false;   
-    if (!response.responseXML) {
-        //This shouldn't happen
-        strErrorMessage = "Error occurred while loading stock quotes. Please contact the developer."
-        if (response.responseText)
-            logUtility.logMessage(response.responseText);
-        else
-            logUtility.logMessage("No responseXML for quotes");
+    if (!response.responseText) {
+        strErrorMessage = "Error occurred while loading stock quotes."
+        logUtility.logMessage("No responseText for quotes");
         return status;
     }
-
-    var xmlDoc = response.responseXML.documentElement;
-    var results = xmlDoc.firstChild;
-
-    //Not the best code I ever wrote, but got no choice
-    //Refer to Memory leak issue with XMLListModel --> http://bugreports.qt.nokia.com/browse/QTBUG-15191
-
-    if (results) {
-        var quoteNodes = results.childNodes;
-        if (quoteNodes && quoteNodes.length > 0){
+    else{
+        //snl1c1p2vj1
+        var quoteDetails = CSVUtility.csvToArray(response.responseText.trim());
+        var i = 0;
+        if (quoteDetails && quoteDetails.length > 0){
             logUtility.logMessage("Clearing Data Model");
             stockQuoteDataModel.clear();
 
-            var i = 0;
-            for (i = 0; i < quoteNodes.length; i++) {
-
-                var quoteElements = quoteNodes[i].childNodes;
-                var j = 0;
-                var symbol,stockName,lastTradedPrice,change,changePercentage,volume,marketCap
-
-                for (j = 0; j < quoteElements.length; j++){
-
-                    switch (quoteElements[j].nodeName){
-                        case 'Symbol':
-                            symbol = quoteElements[j].childNodes[0].nodeValue;
-                            break;
-                        case 'Name':
-                            stockName = quoteElements[j].childNodes[0].nodeValue;
-                            break;
-                        case 'LastTradePriceOnly':
-                            lastTradedPrice = quoteElements[j].childNodes[0].nodeValue;
-                            break;
-                        case 'Change':
-                            change = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
-                            break;
-                        case 'ChangeinPercent':
-                            changePercentage = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
-                            break;
-                        case 'Volume':
-                            volume = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
-                            break;
-                        case 'MarketCapitalization':
-                            marketCap = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
-                            break;
-                        default:
-                    }
-                }
+            for (i = 0; i < quoteDetails.length; i++){
+
+                var symbol,stockName,lastTradedPrice,change,changePercentage,volume,marketCap;
+                symbol = quoteDetails[i][0];
+                stockName = quoteDetails[i][1];
+                lastTradedPrice = quoteDetails[i][2];
+                change = (quoteDetails[i][3] !== 'N/A')? quoteDetails[i][3]:'';
+                changePercentage = (quoteDetails[i][4] !== 'N/A')? quoteDetails[i][4]:'';
+                volume = (quoteDetails[i][5] !== 'N/A')? quoteDetails[i][5]:'';
+                marketCap = (quoteDetails[i][6] !== 'N/A')? quoteDetails[i][6]:'';
+
                 stockQuoteDataModel.append({"symbol":symbol,"stockName":stockName,"lastTradedPrice":lastTradedPrice,"change":change,"changePercentage":changePercentage,"volume":volume,"marketCap":marketCap});
                 //logUtility.logMessage("Symbol: "+stockQuoteDataModel.get(i).symbol+", Name: "+ stockQuoteDataModel.get(i).stockName+", LastTraded: "+stockQuoteDataModel.get(i).lastTradedPrice+", Change: "+stockQuoteDataModel.get(i).change+", ChangePercent: "+stockQuoteDataModel.get(i).changePercentage+", Volume: "+stockQuoteDataModel.get(i).volume+", MarketCap: "+stockQuoteDataModel.get(i).marketCap);
                 logUtility.logMessage(stockQuoteDataModel.get(i).symbol+", "+stockQuoteDataModel.get(i).lastTradedPrice+", "+stockQuoteDataModel.get(i).change+", "+stockQuoteDataModel.get(i).changePercentage+", "+stockQuoteDataModel.get(i).volume+", "+stockQuoteDataModel.get(i).marketCap);
             }
 
             status = true;
+            var timeNow = new Date();
+            try{
+                lastUpdatedTimeStamp = "Updated: "+DateLib.ISODate.format(timeNow);
+                logUtility.logMessage(lastUpdatedTimeStamp);
+            }
+            catch(exception){
+                logUtility.logMessage("Error occured while converting timestamp");
+                logUtility.logMessage(exception);
+            }
         }
         else
         {
@@ -160,25 +140,6 @@ function refreshDataModel(response){
             status = false;
         }
     }
-    else{
-        strErrorMessage = "Stock quote data from Yahoo! Finance is currently not available. Please try again later."
-        logUtility.logMessage(response.responseText);
-        status = false;
-    }
-
-
-    var queryNode = xmlDoc;
-    if (queryNode) {
-        i = 0;
-        var queryAttributes = queryNode.attributes;
-        for (i = 0; i < queryAttributes.length; i++) {
-            if (queryAttributes[i].name == 'created') {
-                lastUpdatedTimeStamp = "Updated: "+DateLib.ISODate.format(queryAttributes[i].value);
-                logUtility.logMessage(lastUpdatedTimeStamp);
-                break;
-            }
-        }
-    }
 
     return status;
 }
@@ -187,7 +148,7 @@ function refreshNewsModel(response){
     var status = false;
     if (!response.responseXML) {
         //This shouldn't happen
-        strErrorMessage = "Error occurred while loading news. Please contact the developer."
+        strErrorMessage = "Error occurred while loading news."
         if (response.responseText)
             logUtility.logMessage(response.responseText);
         else