/*
-@version: 0.2
+@version: 0.5
@author: Sudheer K. <scifi1947 at gmail.com>
@license: GNU General Public License
*/
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..");
}
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);
}
logUtility.logMessage("Appending "+symbolsArray[i]+ " to Query");
if (!query){
- query = '"'+symbolsArray[i]+'"';
+ query = symbolsArray[i];
}
else{
- query = query + ',"' + symbolsArray[i]+'"';
+ query = query + '+' + symbolsArray[i];
}
}
}
}
function reloadNews(){
- if (!rssURL || rssURL == "Unknown") {
+ if (!rssURL || rssURL === "Unknown") {
logUtility.logMessage("Invalid RSS URL: "+rssURL);
}
else{
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..");
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
{
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;
}
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