Skip to content

Instantly share code, notes, and snippets.

@leongaban
Created July 9, 2015 22:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leongaban/b28041b258e010815e6e to your computer and use it in GitHub Desktop.
Save leongaban/b28041b258e010815e6e to your computer and use it in GitHub Desktop.
getTickersFactory.js
/*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