X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fqml%2FLibrary%2Fjs%2FCoreLogic.js;h=f6dd8e1c39e431be7b35820f3f67287eed385b46;hb=0f8d4b44f550d528c2b6b09fb0f6a8c7821caf9f;hp=11341e22671cce1c84c6bf8ab25fceae1c1332a7;hpb=fc2f53285830346bbb3281738c65b4550d3b2477;p=marketstoday diff --git a/src/qml/Library/js/CoreLogic.js b/src/qml/Library/js/CoreLogic.js index 11341e2..f6dd8e1 100644 --- a/src/qml/Library/js/CoreLogic.js +++ b/src/qml/Library/js/CoreLogic.js @@ -1,5 +1,5 @@ /* -@version: 0.2 +@version: 0.5 @author: Sudheer K. @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