Created
July 9, 2015 22:06
-
-
Save leongaban/b28041b258e010815e6e to your computer and use it in GitHub Desktop.
getTickersFactory.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*global angular*/ | |
//////////////////////////////////////////////////////////////////////////////// | |
/** | |
* @name getTickersFactory | |
* @namespace Factories | |
* @desc Pulls the tickers list needed (Portfolio / Searched) | |
*/ | |
(function() { | |
'use strict'; | |
angular | |
.module('getTickersFactory', []) | |
.factory('GetTickersFactory', factory); | |
factory.$inject = [ | |
'ApiFactory', | |
'ScopeFactory', | |
'RenderTickersFactory', | |
'TagFactory', | |
'ViewFactory']; | |
function factory( | |
ApiFactory, | |
ScopeFactory, | |
RenderTickersFactory, | |
TagFactory, | |
ViewFactory) { | |
var tickersPane = ScopeFactory.getScope('tickersPanel'), | |
socialMedia = {}, | |
root = ScopeFactory.getScope('root'), | |
portfolioCached = true, | |
checkURL = false, | |
limit = 0, | |
start = 0, | |
loadString = "?limit=50&start="+start; | |
var portfolioTickers = { that: this }, | |
searchedTickers = { that: this }; | |
var getTickersFactory = { | |
returnPortfolioTickers : returnPortfolioTickers, | |
returnSearchedTickers : returnSearchedTickers, | |
getTickers : getTickers | |
}; | |
return getTickersFactory; | |
//////////////////////////////////////////////////////////////////////// | |
function returnPortfolioTickers() { | |
return portfolioTickers.that; | |
} | |
function returnSearchedTickers() { | |
return searchedTickers.that; | |
} | |
function getTickers(type, load, searchedTicker) { | |
load = load || loadString; | |
searchedTicker = searchedTicker || ''; | |
var portfolioTickersArray = [], | |
searchedTickersArray = []; | |
tickersPane.loadingTickersDone = false; | |
switch(type) { | |
case 'searched': | |
ApiFactory.getTickers(null, load).then(function(data) { | |
tickersPane.tempTickers = data.data.tickers; | |
tickersPane.loadingTickersDone = true; | |
tickersPane.viewingTempTicker = true; | |
tickersPane.allTickersBtn.selected = false; | |
if (tickersPane.tempTickers.length > 0) { | |
searchedTickersArray = renderTickers(data.data.tickers, searchedTicker, 'searched'); | |
searchedTickers.that = searchedTickersArray; | |
console.log('searchedTickersArray: ', searchedTickersArray); | |
return searchedTickersArray; | |
} | |
}); | |
break; | |
case 'portfolio': | |
tickersPane.addOption = false; | |
tickersPane.removeOption = true; | |
tickersPane.displayTopTags = false; | |
tickersPane.displayPortfolio = true; | |
if (portfolioCached) { | |
ApiFactory.getWatchList().then(function(data) { | |
portfolioTickersArray = renderTickers(data.data.tickers, undefined, type); | |
portfolioTickers.that = portfolioTickersArray; | |
tickersPane.loadingTickersDone = true; | |
console.log('portfolioTickersArray: ', portfolioTickersArray); | |
return portfolioTickersArray; | |
}); | |
} else { | |
ApiFactory.getWatchListRefresh().then(function(data) { | |
portfolioTickersArray = renderTickers(data.data.tickers, undefined, type); | |
portfolioTickers.that = portfolioTickersArray; | |
portfolioCached = true; | |
tickersPane.loadingTickersDone = true; | |
console.log('portfolioTickersArray: ', portfolioTickersArray); | |
return portfolioTickersArray; | |
}); | |
} | |
break; | |
} | |
function renderTickers(data, searchedTicker, type) { | |
searchedTicker = searchedTicker || ''; | |
type = type || ''; | |
if (data.length === 0) { | |
tickersPane.noPortTickers = true; | |
} | |
else { | |
var defaultTicker; | |
checkURL = root.customURL; | |
tickersPane.noPortTickers = false; | |
// Load appropriate array with tickers (Portfolio or Searched): | |
if (type === 'searched') { | |
tickersPane.tempTickers = data; | |
tickersPane.tempTickers[0].selected = true; | |
defaultTicker = tickersPane.tempTickers[0]; | |
} | |
// else if (type === 'all') { | |
// tickersPane.tickers = data; | |
// defaultTicker = tickersPane.allTickersBtn; | |
// } | |
else if (type === 'portfolio') { | |
tickersPane.tickers = data; | |
// Check custom URL for last selected Portfolio ticker: | |
if (checkURL) { | |
for (var i = 0; i < tickersPane.tickers.length; i++) { | |
if (tickersPane.tickers[i].ticker === root.selectedTicker) { | |
tickersPane.tickers[i].selected = true; | |
defaultTicker = tickersPane.tickers[i]; | |
break; | |
} | |
} | |
} | |
if (!defaultTicker) { | |
defaultTicker = tickersPane.tickers[0]; | |
tickersPane.tickers[0].selected = true; | |
} | |
} | |
// Set defaultTicker to be passed on into other scopes: | |
if (defaultTicker === undefined && searchedTicker != undefined) { | |
defaultTicker = searchedTicker; | |
} | |
TagFactory.setCurrentTicker(defaultTicker); | |
RenderTickersFactory.renderTickerDetails(defaultTicker, true); | |
ViewFactory.storeCurrentTicker(defaultTicker.ticker); | |
ViewFactory.updateViewURL(TagFactory.retrieveTickerTags('all')); | |
// Check if customURL: | |
if (root.customURL) { | |
socialMedia = ScopeFactory.getScope('social'); | |
socialMedia.rebuildSocialMedia(); | |
} | |
} | |
tickersPane.loadingTickersDone = true; | |
return data; | |
} | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment