{"version":3,"sources":["inoMsEtfSummary.js","inoMsEtfSummary.tmpl.js","inoMsChartHistorical.js","inoMsEtfOverview.tmpl.js"],"names":["inovestor","ms","etf","summary","config","apiRelativeUrl","ko","viewModels","summaryViewModel","plugin","self","this","pdfReportUrl","options","pdfHandler","observable","resources","hasError","isInvalidIdentifier","hasValidData","computed","formattedLowHighWeeks","low","low52Weeks","high","high52Weeks","bindingHandlers","currency","format","formattedDayRange","formattedBidAsk","bid","ask","formattedVolume","volume","avgVolume","averageVolume30Days","number","updateResources","currentResource","core","currentLanguage","isNullOrUndefined","downloadPdf","libRef","jQuery","$","pluginName","Plugin","element","_name","_defaults","fn","inoMsEtfSummary","defaults","extend","_viewModel","symbol","init","prototype","fileName","fileCacheKey","instances","register","update","templatePaths","filePath","isEmptyString","templateRootUrl","match","getTemplate","then","template","html","buildCache","bindEvents","render","bindModel","search","always","$element","trigger","destroy","unbindEvents","removeData","on","onReady","call","off","apiErrorHandler","apiError","onError","result","generateError","errors","invalidIdentifierHandler","invalidIdentifier","etfSummaryUrl","stringFormat","ajaxApi","type","contentType","error","data","requestStatus","valueHasMutated","applyBindings","each","asOf","assetClass","bidAsk","totalAssetInfo","dataDelayedBy","dataRealTime","dayRange","dividend","earningsPerShareTTM","fiftyTwoWeek","previousClose","riskRating","category","managementFeesRatio","managementFees","aum","ranking","inceptionDate","open","totalAssests","currentYield","unitsOutstanding","distributionYield","distributionYieldInfo","riskRatings","lowToMedium","medium","mediumToHigh","null","window","chart","historical","apiStocksRelativeUrl","apiFundsRelativeUrl","apiIntraDayUrl","apiQuoteUrl","Highcharts","charts","chartData","beforeRender","afterRender","beforeUpdateData","afterUpdateData","updateData","defer","Deferred","symbolsList","_getSymbols","historicalFundApiUrl","symbols","join","i","fundSymbol","_updateStockSeriesData","_setFundChartExtremes","_chartInstance","redraw","resolve","promise","convertChartDataToChartDataSet","showBalance","startingBalance","historicalDatas","convertedData","j","yVal","percentageChange","lastPoint","historicalData","length","navps","y","push","x","moment","utc","date","valueOf","formattedY","numberFormat","getChartConfig","resource","getCurrentResource","showTitle","zoomType","isMobile","height","panning","pinchType","styledMode","title","text","chartGrowthTitle","growth","chartChangeTitle","rangeSelector","enabled","navigator","scrollbar","plotOptions","series","turboThreshold","states","hover","animation","dataGrouping","units","dateTimeLabelFormats","week","stockTooltip","xAxis","ordinal","labels","rotation","yAxis","offset","style","fontSize","formatter","value","opposite","tooltip","enabledIndicators","headerFormat","footerFormat","lineHeight","pointFormatter","seriesData","_chartTooltipData","name","_mainSerieId","seriesName","Date","dataPoint","iCnt","getTime","fundTooltip","balanceLabel","changeLabel","navpsLabel","change","color","serieName","balance","balanceValue","changeValue","getChartType","otherSeriesData","symbolIndex","_symbols","index","toLowerCase","_mainSerieDataSource","_otherSeriesDataSources","_updateChartSeries","highcharts","showVolume","showNavigator","isOneDaySelected","zoomCount","toolbarOptions","showZoom","showIndexComparer","showTypeSwitcher","showFullScreenButton","otherSymbols","nameEn","nameFr","selected","$actionBarElement","remove","$actionBar","_addTimespanSelectors","_addIndexSelectors","_addChartTypeDropdown","_addFullScreenButton","$chartElement","addClass","prepend","css","cacheKey","cachedData","count","isChangingMode","_removeIntradayClosePlotLine","chartCompareModeEnabled","when","_getIntradayData","_getQuoteData","intradayResult","quoteResult","_updateAndSetupChartData","_apiCache","_getStockDailyData","fields","datas","dateIndex","indexOf","openIndex","highIndex","lowIndex","closeIndex","volumeIndex","isInCompareMode","marginBottom","buttons","inputEnabled","fillColor","tickInterval","stockChartVolume","top","showLastLabel","tickPositioner","positions","max","axis","align","close","navigation","buttonOptions","theme","r","stroke","fill","select","menuItemStyle","menuItemHoverStyle","chartType","isArray","quoteData","Array","_setChartExtremes","dateFormat","prop","ticks","_setIntraDayDateExtremes","_addIntradayClosePlotLine","setTimeout","_autoSelectLastPoint","xLabelsFormat","fullscreenButtonAriaLabel","chartSize","append","width","find","hasClass","removeClass","reflow","e","keyCode","click","zoom","oneDay","oneMonth","threeMonths","sixMonths","ytd","oneYear","all","zoomEle","preventDefault","stopPropagation","selectedEle","attr","parseInt","not","otherSymbol","square","isSelected","line","candlestick","mountain","ohlc","historicalStockApiUrl","intraDayApiUrl","apiUrl","minDateSettings","hour","minute","second","millisecond","maxDateSettings","minDate","set","maxDate","mainData","apiDate","min","setExtremes","maxExtreme","prices","map","minExtreme","Math","apply","addPlotLine","id","dashStyle","label","useHTML","lastClose","paddingTop","zIndex","removePlotLine","inoMsChartHistorical","getPseudoGuid","_apiCacheVar","destroyHighChart","getErrorTemplate","getInvalidIdentifierTemplate","openFullScreen","$loadingIndicatorElement","_renderChart","_buildSymbols","focusedElement","getLoadingIndicatorTemplate","show","hide","focus","dataPoints","points","refresh","chartConfig","mainColor","getOptions","colors","threshold","stockChart","key","cacheValue","val","slice","split","_updateMainSeries","convertedMainData","mainSeries","get","mainSeriesVolume","mainSeriesChanges","mainSeriesVolumeChanges","item","_updateOtherSeries","shouldRemove","_removeSeries","convertedSeriesData","serie","chartSerie","addSeries","setCompare","_mergeChartDataLists","originalChartDatas","additionalChartDatas","additionalChartData","hasBeenFound","renderChart","apiFirstDate","apiLastDate","currentExtremes","getExtremes","apiFirstDateUTC","setUTCMonth","getUTCMonth","apiLastDateUTC","UTC","getUTCFullYear","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","userMax","tempDate","setUTCFullYear","indexes","overview","overviewViewModel","selfPeer","peers","observableArray","redirectUrlTarget","hasChartError","inoMsEtfOverview","renderCharts","$etfChartInstance","chartErrorHandler","etfUrl","$fundChartInstance","_getPeersData","selfPeers","filter","p","isRequestedPeer","geographicAllocations","percent","_legendInTable","_renderFundChart","url","redirectUrl","peersData","u","encodeURIComponent","_renderAssetPieChart","_renderSectorPieChart","_renderGeographicPieChart","_renderHoldingsChart","assestAlloc","assetAllocations","chartdata","point","_getPieChartConfig","assetChart","colorByPoint","sectorAlloc","sectorAllocations","descriptionFr","descriptionEn","sectorChart","holdings","sort","a","b","marketPercent","securityName","_getBarChartConfig","holdingsChart","geoAlloc","countryNameFr","countryNameEn","geoChart","chartElement","pieChartConfig","barChartConfig","piechart","slices","s","squares","q","pie","allowPointSelect","cursor","dataLabels","showInLegend","legend","borderWidth","pointWidth","pointColor","pointName","pointValue","ofTotal","annualizedReturn","asset","assetAllocation","assets","benchmark","calendarReturn","closed","geographic","geographicAllocation","investementObjective","investementStrategy","isChoiceOfFrontOrBackFee","isNoLoadFund","keyFeatures","keyFeaturesName","keyFeaturesValue","keyCharacteristics","listingType","exchange","inverse","leverage","leverageFactor","eligibility","inovestorActive","targetOutcome","economicDevelopment","country","managerCompanyName","managers","maxBackEnd","maxFrontEnd","no","noDataFound","dataNotAvailable","openToInvestment","performance","performanceWarning","quartile","quartileInfo","rankOneYear","totalReturns","returnsLabels","twoYears","threeYears","fiveYears","tenYears","sinceInception","returnsPercent","rrspEligible","sector","sectorAllocation","stdDevThreeYears","topTenHoldings","volatilityRankingThreeYears","yes","contact","fax","free","management","phone","website","current","marketCap","ticker","mobile","mobileResources","fundPercent","transforms","false","true","active","passive","address","education","startDate"],"mappings":"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","file":"../inoMsEtfOverview.min.js","sourcesContent":["; (function (inovestor, undefined) {\n // Setup dependencies for this plugin\n // Normally we would add jQuery and knockout but ms-core, which we depend on, already register them so it's useless\n\n // Create plugin namespace with any desired config variable\n inovestor.ms.etf = inovestor.ms.etf || {};\n})(inovestor);\n\n\n; (function (etf, undefined) {\n // Create plugin namespace with any desired config variable\n etf.summary = {\n config: {\n apiRelativeUrl: 'etfs/summary?symbol={symbol}',\n }\n };\n\n})(inovestor.ms.etf);\n\n\n; (function ($, ko, inovestor, undefined) {\n inovestor.ms.etf.summary.viewModels = {};\n\n inovestor.ms.etf.summary.viewModels.summaryViewModel = function (plugin) {\n var self = this;\n\n self.pdfReportUrl = plugin.options.pdfReportUrl;\n self.pdfHandler = plugin.options.pdfHandler;\n\n self.summary = ko.observable();\n self.resources = ko.observable();\n self.hasError = ko.observable(false);\n self.isInvalidIdentifier = ko.observable(false);\n self.hasValidData = ko.computed(function () {\n return !self.hasError() && !self.isInvalidIdentifier() && self.summary() != null;\n }, this);\n\n self.formattedLowHighWeeks = ko.computed(function () {\n var low = self.summary()?.low52Weeks;\n var high = self.summary()?.high52Weeks;\n\n if (low === null && high === null) {\n return '-';\n }\n return ko.bindingHandlers.currency.format(low, true, true, false, 2) + \" - \" + ko.bindingHandlers.currency.format(high, true, true, false, 2)\n });\n\n self.formattedDayRange = ko.computed(function () {\n var low = self.summary()?.low\n var high = self.summary()?.high\n\n if (low === null && high === null) {\n return '-'\n }\n\n return ko.bindingHandlers.currency.format(low, true, true, false, 2) + \" - \" + ko.bindingHandlers.currency.format(high, true, true, false, 2)\n })\n self.formattedBidAsk = ko.computed(function () {\n var bid = self.summary()?.bid\n var ask = self.summary()?.ask\n\n if (bid === null && ask === null) {\n return '-'\n }\n\n return ko.bindingHandlers.currency.format(bid, true, true, false, 2) + \" - \" + ko.bindingHandlers.currency.format(ask, true, true, false, 2)\n })\n self.formattedVolume = ko.computed(function () {\n var volume = self.summary()?.volume\n var avgVolume = self.summary()?.averageVolume30Days\n\n if (volume === null && avgVolume === null) {\n return '-'\n }\n \n return ko.bindingHandlers.number.format(volume, true, 2, true, 1, true) + \" / \" + ko.bindingHandlers.number.format(avgVolume, true, 2, true, 1, true)\n })\n\n self.updateResources = function () {\n // Update main resources\n var currentResource = inovestor.ms.etf.summary.resources[inovestor.ms.core.currentLanguage];\n if (inovestor.ms.core.isNullOrUndefined(currentResource))\n currentResource = null;\n self.resources(currentResource);\n };\n\n self.downloadPdf = function () {\n\n };\n }\n\n})(inovestor.ms.libRef.jQuery, inovestor.ms.libRef.ko, inovestor);\n; (function ($, ko, inovestor, undefined) {\n\n var pluginName = 'inoMsEtfSummary';\n\n // Create the plugin constructor\n function Plugin(element, options) {\n\n this.element = element;\n this._name = pluginName;\n this._defaults = $.fn.inoMsEtfSummary.defaults;\n \n // Merge options with defaults\n this.options = $.extend({}, this._defaults, options);\n\n this._viewModel = new inovestor.ms.etf.summary.viewModels.summaryViewModel(this);\n\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(this.options.symbol))\n throw \"symbol is required\";\n\n // Call init\n this.init();\n }\n\n $.extend(Plugin.prototype, {\n\n // Initialization logic\n init: function () {\n var plugin = this;\n\n // Setup what plugin needs to do on language change\n inovestor.ms.core.instances.register(this, function () {\n plugin.update();\n });\n\n // Plugin overrides for template = cacheKey and path are the same\n var fileCacheKey = plugin.options.templatePaths.summary;\n var filePath = plugin.options.templatePaths.summary;\n // Default behavior (if no template path is set by plugin)\n if (inovestor.ms.core.isEmptyString(fileCacheKey)) {\n var fileName = 'summary.html';\n fileCacheKey = pluginName + '.' + fileName;\n filePath = (inovestor.ms.core.isEmptyString(inovestor.ms.core.config.templateRootUrl) ? '' : inovestor.ms.core.config.templateRootUrl) +\n (inovestor.ms.core.isEmptyString(inovestor.ms.core.config.templateRootUrl) || inovestor.ms.core.config.templateRootUrl.match(/\\/$/) != null ? '' : '/') + // check if templateRootUrl ends in slash\n (this._name + '/' + fileName);\n }\n\n // Get main template file\n inovestor.ms.core.getTemplate(fileCacheKey, filePath).then(function (template) {\n $(plugin.element).html(template);\n plugin.buildCache();\n plugin.bindEvents();\n plugin.render();\n plugin.bindModel();\n }).then(function () {\n // Call Search\n plugin.search(plugin.options.symbol).always(function () {\n // When search is completed, trigger onReady event\n plugin.$element.trigger('ready' + '.' + plugin._name);\n });\n });\n },\n\n // Remove plugin instance completely\n destroy: function () {\n this.unbindEvents();\n this.$element.removeData();\n },\n\n // Cache DOM nodes for performance\n buildCache: function () {\n this.$element = $(this.element);\n },\n\n // Bind events that trigger methods\n bindEvents: function () {\n var plugin = this;\n plugin.$element.on('ready' + '.' + plugin._name, function () {\n var onReady = plugin.options.onReady;\n if (typeof onReady === 'function')\n onReady.call(plugin.$element);\n });\n },\n\n // Unbind events that trigger methods\n unbindEvents: function () {\n this.$element.off('.' + this._name);\n },\n\n // API error handler\n apiErrorHandler: function (apiError) {\n var plugin = this;\n var onError = plugin.options.onError;\n if (typeof onError === 'function') {\n var result = onError.call(inovestor.ms.core.generateError(inovestor.ms.core.errors.apiError, apiError, plugin));\n // If callback returns false, do not execute default behavior\n if (!inovestor.ms.core.isNullOrUndefined(result) && result === false)\n return;\n }\n\n plugin._viewModel.hasError(true);\n },\n\n // Invalid Identifier error handler\n invalidIdentifierHandler: function () {\n var plugin = this;\n var onError = plugin.options.onError;\n if (typeof onError === 'function') {\n var result = onError.call(inovestor.ms.core.generateError(inovestor.ms.core.errors.invalidIdentifier, null, plugin));\n // If callback returns false, do not execute default behavior\n if (!inovestor.ms.core.isNullOrUndefined(result) && result === false)\n return;\n }\n\n plugin._viewModel.isInvalidIdentifier(true);\n },\n\n // Search for a particular etf\n search: function (symbol) {\n var plugin = this;\n\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(symbol))\n throw \"symbol is required\";\n\n // Update options\n plugin.options.symbol = symbol;\n\n // Setup API url with term\n var etfSummaryUrl = inovestor.ms.core.stringFormat(inovestor.ms.etf.summary.config.apiRelativeUrl, { symbol: symbol });\n //var etfSummaryUrl = inovestor.ms.core.stringFormat(inovestor.ms.etf.summary.config.apiRelativeUrl, {});\n\n // Reset relevant Data before calling API\n plugin._viewModel.summary(null);\n plugin._viewModel.hasError(false);\n plugin._viewModel.isInvalidIdentifier(false);\n\n // Call API and bind model\n var options = { type: 'GET', contentType: 'application/json', error: function (error) { plugin.apiErrorHandler(error); } };\n return inovestor.ms.core.ajaxApi(etfSummaryUrl, options).then(function (data) {\n if (!inovestor.ms.core.isNullOrUndefined(data)) {\n if (data.requestStatus === 'invalidIdentifier')\n plugin.invalidIdentifierHandler();\n plugin._viewModel.summary(data);\n\n }\n plugin.update();\n });\n },\n\n // Renders html template and binds model (should be called once)\n render: function () {\n var plugin = this;\n plugin._viewModel.updateResources();\n },\n\n // Update resources\n update: function () {\n var plugin = this;\n // Update view model resources\n plugin._viewModel.updateResources();\n plugin._viewModel.summary.valueHasMutated();\n },\n\n // Applies knockout bindings to element. (Should be done only once)\n bindModel: function () {\n var plugin = this;\n ko.applyBindings(plugin._viewModel, plugin.element);\n },\n });\n\n // JQuery Plugin wrapper\n $.fn.inoMsEtfSummary = function (options) {\n this.each(function () {\n if (!$.data(this, pluginName)) {\n // Store instance of plugin in \"$.data\"\n $.data(this, pluginName, new Plugin(this, options));\n }\n });\n\n // return plugin to support JQuery chaining\n return this;\n };\n\n // Default options for plugin\n $.fn.inoMsEtfSummary.defaults = {\n symbol: null,\n onError: null,\n onReady: null,\n pdfReportUrl: null,\n pdfHandler: null,\n templatePaths: {\n summary: null\n }\n };\n\n})(inovestor.ms.libRef.jQuery, inovestor.ms.libRef.ko, inovestor);\n; (function (etf, undefined) {\n etf.summary.resources = etf.summary.resources || {};\n etf.summary.resources[\"en\"] = {\n asOf: 'As of',\n assetClass: 'Asset Class',\n bidAsk: 'Bid / Ask',\n currency: 'Currency',\n totalAssetInfo: 'For this ETF Series only',\n dataDelayedBy: 'Data delayed by {minutes} minutes',\n dataRealTime: 'Real-time data',\n dayRange: \"Day Range\",\n dividend: \"Dividend (yield)\",\n earningsPerShareTTM: 'Earnings / Share',\n fiftyTwoWeek: \"52-Week Range\",\n previousClose: \"Previous Close\",\n riskRating: \"Risk Rating\",\n volume: \"Vol / Avg\",\n category: 'Category',\n managementFeesRatio: \"MER\",\n managementFees: \"Management Fees\",\n aum: 'AUM',\n ranking: \"Ranking\",\n inceptionDate: \"Inception Date\",\n open: \"Open\",\n totalAssests: \"Total Assets\",\n currentYield: \"Current Yield\",\n unitsOutstanding: \"Units Outstanding\",\n distributionYield: \"Distribution\\r\\nYield (TTM)\",\n distributionYieldInfo: \"TTM Distribution Yield refers to trailing twelve months distribution divided by the previous day close.\",\n downloadPdf: \"DOWNLOAD PDF\",\n riskRatings: {\n low: 'Low',\n lowToMedium: 'Low to Medium',\n medium: 'Medium',\n mediumToHigh: 'Medium to High',\n high: 'High',\n null: '-'\n }\n };\n})(inovestor.ms.etf);\n\n; (function (etf, undefined) {\n etf.summary.resources = etf.summary.resources || {};\n etf.summary.resources[\"fr\"] = {\n asOf: 'Au',\n assetClass: 'Classe d\\'actifs',\n bidAsk: 'Cours achet. / Cours vend.',\n currency: 'Devise',\n totalAssetInfo: 'Pour cette série de FNB seulement',\n dataDelayedBy: 'Données différées de {minutes} minutes',\n dataRealTime: 'Données en temps réel',\n dayRange: \"Var. jour\",\n dividend: \"Dividende (rendement)\",\n earningsPerShareTTM: 'Bénéfice par action',\n fiftyTwoWeek: \"Var. 52 semaines\",\n previousClose: \"Clôture\",\n riskRating: \"Cote de risque\",\n volume: \"Vol / Moy.\",\n category: \"Catégorie\",\n managementFeesRatio: \"RFG\",\n managementFees: \"Frais de gestion\",\n aum: 'Actifs sous gestion',\n ranking: \"Classement\",\n inceptionDate: \"Date de création\",\n open: \"Ouverture\",\n totalAssests: \"Actifs\",\n currentYield: \"Revenu actuel\",\n unitsOutstanding: \"Parts en circulation\",\n distributionYield: \"Revenu de distribution (DDM)\",\n distributionYieldInfo: \"Rendement des distributions sur 12 mois (TTM) fait référence à la distribution des douze derniers mois, divisée par la clôture de la veille.\",\n downloadPdf: \"TÉLÉCHARGER PDF\",\n riskRatings: {\n low: 'Faible',\n lowToMedium: 'Faible à moyen',\n medium: 'Moyen',\n mediumToHigh: 'Moyen à élevé',\n high: 'Élevé',\n null: '-'\n }\n };\n})(inovestor.ms.etf);","window[\"inoMsTemplatesCache\"] = window[\"inoMsTemplatesCache\"] || {};\nwindow[\"inoMsTemplatesCache\"][\"inoMsEtfSummary.summary.html\"] = \"

()

0\\\" class=\\\"fa fa-arrow-up text-success\\\">
0, 'text-danger' : summary().percentChange < 0 }\\\">
/
0, 'text-danger' : summary().percentChange < 0 }\\\">
0\\\">

 
 
 
\"; ","; (function (inovestor) {\n // Create plugin namespace with any desired config variable\n inovestor.ms.chart = inovestor.ms.chart || {};\n})(inovestor);\n\n\n; (function (inovestor, undefined) {\n // Create plugin namespace with any desired config variable\n inovestor.ms.chart.historical = {\n config: {\n apiStocksRelativeUrl: 'chartDatas/historicalData?symbols={symbols}',\n apiFundsRelativeUrl: 'mutualfunds/historicaldata?symbols={symbols}',\n apiIntraDayUrl: 'chartDatas/historicalData?symbols={symbols}&dataType=Intraday',\n apiQuoteUrl: 'quotes?symbols={symbols}'\n }\n };\n\n})(inovestor);\n\n\n; (function ($, Highcharts, historical, undefined) {\n\n historical.charts = historical.charts || {};\n historical.charts['fund'] = function () {\n var plugin = this;\n var chart = {\n data: $.extend({}, plugin.options.chartData),\n\n init: function () { },\n destroy: function () { },\n\n beforeRender: function () { },\n afterRender: function () { },\n\n beforeUpdateData: function () { },\n afterUpdateData: function () { },\n\n updateData: function () {\n var defer = $.Deferred(),\n symbolsList = plugin._getSymbols();\n\n if (inovestor.ms.core.isNullOrUndefined(symbolsList))\n throw 'No Symbols detected';\n\n // Setup API url with term\n var historicalFundApiUrl = inovestor.ms.core.stringFormat(inovestor.ms.chart.historical.config.apiFundsRelativeUrl, { symbols: symbolsList.join(',') });\n\n // Call API and render chart\n var options = { type: 'GET', contentType: 'application/json', error: function (error) { plugin.apiErrorHandler(error); } };\n inovestor.ms.core.ajaxApi(historicalFundApiUrl, options).then(function (data) {\n if (!inovestor.ms.core.isNullOrUndefined(data)) {\n // Main series is expecting a symbol property instead of a fundSymbol\n for (var i in data)\n data[i].symbol = data[i].fundSymbol;\n\n chart._updateStockSeriesData(data);\n plugin._setFundChartExtremes(false);\n plugin._chartInstance.redraw();\n defer.resolve();\n }\n });\n\n return defer.promise();\n },\n convertChartDataToChartDataSet: function (chartData) {\n var showBalance = !inovestor.ms.core.isNullOrUndefined(plugin.options.startingBalance);\n\n if (inovestor.ms.core.isNullOrUndefined(chartData) || inovestor.ms.core.isNullOrUndefined(chartData.historicalDatas))\n return [];\n\n var convertedData = [];\n if (chartData.requestStatus === 'success') {\n for (var j in chartData.historicalDatas) {\n var historicalData = chartData.historicalDatas[j];\n\n if (showBalance) {\n var percentageChange = 0;\n var yVal = plugin.options.startingBalance;\n if (convertedData.length > 0) {\n var lastPoint = convertedData[convertedData.length - 1];\n percentageChange = ((lastPoint.navps - historicalData.navps) / lastPoint.navps) * -1;\n yVal = lastPoint.y + (lastPoint.y * percentageChange);\n }\n convertedData.push({\n y: yVal,\n x: moment.utc(historicalData.date).valueOf(),\n formattedY: Highcharts.numberFormat(yVal, 0),\n navps: historicalData.navps,\n percentageChange: Highcharts.numberFormat(percentageChange * 100, 2)\n });\n }\n else {\n var percentageChange = 0;\n if (convertedData.length > 0) {\n var lastPoint = convertedData[convertedData.length - 1];\n percentageChange = ((lastPoint.navps - historicalData.navps) / lastPoint.navps) * -1;\n }\n convertedData.push({\n y: historicalData.navps,\n x: moment.utc(historicalData.date).valueOf(),\n formattedY: Highcharts.numberFormat(historicalData.navps * 100, 2),\n navps: historicalData.navps,\n percentageChange: Highcharts.numberFormat(percentageChange * 100, 2)\n });\n }\n }\n }\n return convertedData;\n },\n\n getChartConfig: function () {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n var showTitle = !inovestor.ms.core.isNullOrUndefined(plugin.options.showTitle);\n var showBalance = !inovestor.ms.core.isNullOrUndefined(plugin.options.startingBalance)\n\n return {\n chart: {\n zoomType: !plugin.options.isMobile ? 'x' : '',\n height: plugin.options.isMobile ? 250 : undefined,\n panning: false,\n pinchType: false,\n styledMode: plugin.options.styledMode ? plugin.options.styledMode : false\n },\n title: {\n text: showTitle ? showBalance\n ? inovestor.ms.core.stringFormat(resource.chartGrowthTitle, { growth: Highcharts.numberFormat(plugin.options.startingBalance, 0) })\n : resource.chartChangeTitle : null\n },\n rangeSelector: {\n enabled: false\n },\n navigator: {\n enabled: false\n },\n scrollbar: {\n enabled: false\n },\n plotOptions: {\n series: {\n turboThreshold: 0,\n states: {\n hover: {\n enabled: false\n }\n },\n animation: false,\n dataGrouping: {\n units: [['week', [1]]],\n dateTimeLabelFormats: {\n week: [resource.stockTooltip.week + ' %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y']\n },\n }\n }\n },\n xAxis: {\n type: 'datetime',\n ordinal: false,\n labels: {\n format: '{value:%b %Y}',\n rotation: 0\n }\n },\n yAxis: {\n offset: 35,\n labels: {\n style: {\n fontSize: '10.5px'\n },\n formatter: function () {\n var value = Highcharts.numberFormat(this.value, showBalance? 0 : 2);\n return value;\n },\n },\n opposite: showBalance? false : true\n },\n tooltip: {\n enabledIndicators: true,\n headerFormat: '
{point.key}
',\n footerFormat: null,\n style: {\n lineHeight: '1.5em'\n },\n pointFormatter: function () {\n var seriesData = plugin._chartTooltipData[this.series.name] ? plugin._chartTooltipData[this.series.name] : null;\n if (seriesData == null)\n return null;\n\n // If mobile, only show the first series in tooltip\n if (plugin.options.isMobile && plugin._mainSerieId !== this.series.name)\n return '';\n\n if (this.x == null)\n return null;\n var date = new Date(this.x);\n\n var dataPoint = null;\n var date = new Date(this.x);\n for (var iCnt = 0; iCnt < seriesData.data.length; iCnt++) {\n var itemDate = new Date(seriesData.data[iCnt].x);\n\n //series is always in right order. We take the first to be greater or equal in case of market closed during the week.\n if (itemDate.getTime() >= date.getTime()) {\n dataPoint = seriesData.data[iCnt];\n break;\n }\n }\n\n if (dataPoint == null)\n return null;\n\n var format =\n '{serieName}
';\n if (showBalance)\n format += '' + resource.fundTooltip.balanceLabel + ': ' +\n '{balance}
';\n\n format += '' + resource.fundTooltip.changeLabel + ': ' +\n '{change}';\n format += ' ' + resource.fundTooltip.navpsLabel + ': ' +\n '{navps}
';\n\n var seriesName = !this.change ? seriesData.name : seriesData.name + ' (' + Highcharts.numberFormat(this.change, 2) + '%)';\n\n var tooltip = inovestor.ms.core.stringFormat(format, {\n color: this.color,\n serieName: seriesName,\n balance: inovestor.ms.core.stringFormat(resource.fundTooltip.balanceValue, { balance: dataPoint.formattedY }),\n navps: Highcharts.numberFormat(dataPoint.navps, 2),\n change: inovestor.ms.core.stringFormat(resource.fundTooltip.changeValue, { change: dataPoint.percentageChange }),\n });\n return tooltip;\n }\n },\n series: []\n };\n },\n getChartType: function () {\n return 'line'; // only supports line for now\n },\n\n _updateStockSeriesData: function (data) {\n // Reset required data\n plugin._chartTooltipData = [];\n\n var otherSeriesData = [];\n var symbolIndex = 0;\n for (var symbol in plugin._symbols) {\n for (var index in data) {\n if (data[index].fundSymbol.toLowerCase() === symbol.toLowerCase()) {\n if (symbolIndex === 0)\n plugin._mainSerieDataSource = data[index];\n else\n otherSeriesData.push(data[index]);\n }\n }\n symbolIndex++;\n }\n plugin._otherSeriesDataSources = otherSeriesData;\n plugin._updateChartSeries();\n },\n };\n\n return chart;\n };\n\n})(inovestor.ms.libRef.jQuery, inovestor.ms.libRef.highcharts, inovestor.ms.chart.historical);\n\n\n; (function ($, Highcharts, historical, undefined) {\n\n historical.charts = historical.charts || {};\n historical.charts['stock'] = function () {\n var plugin = this;\n var chart = {\n data: $.extend({}, {\n showVolume: true,\n showNavigator: true,\n isOneDaySelected: false,\n zoomType: 'month',\n zoomCount: 6,\n }, plugin.options.chartData),\n\n toolbarOptions: $.extend({}, {\n showZoom: true,\n showIndexComparer: true,\n showTypeSwitcher: true,\n showFullScreenButton: true\n }, plugin.options.toolbarOptions),\n\n init: function () {\n if (plugin.options.isMobile) {\n chart.data.showVolume = true;\n chart.data.showNavigator = true;\n }\n\n // Add default others symbols\n if (inovestor.ms.core.isNullOrUndefined(plugin.options.otherSymbols))\n plugin.options.otherSymbols = [\n { symbol: 'INXTSX:SPTSX', nameEn: 'S&P TSX', nameFr: 'S&P TSX', selected: false },\n { symbol: 'INXTSX:SPTSXVEN', nameEn: 'S&P TSX Venture', nameFr: 'S&P TSX Venture', selected: false },\n { symbol: 'INXSNP:SPX', nameEn: 'S&P 500', nameFr: 'S&P 500', selected: false },\n { symbol: 'INXDJX:DJI', nameEn: 'Dow Jones', nameFr: 'Dow Jones', selected: false },\n { symbol: 'INXNDX:CCMP', nameEn: 'NASDAQ', nameFr: 'NASDAQ', selected: false }\n ];\n\n // make sure options are correctly set when loading as intra day by default\n if (chart.data.isOneDaySelected || chart.data.zoomType === 'intraday') {\n chart.data.isOneDaySelected = true;\n chart.data.zoomType = 'intraday';\n }\n },\n destroy: function () {\n if (chart.data.$actionBarElement)\n chart.data.$actionBarElement.remove();\n },\n\n beforeRender: function () {\n },\n afterRender: function () {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n var $actionBar = $('
');\n\n // Add Stock chart specific stuff\n if (chart.toolbarOptions.showZoom) {\n chart.data.$actionBarElement = chart.data.$actionBarElement || $actionBar;\n chart._addTimespanSelectors(); // Timespan selectors supprots mobile as is\n }\n if (chart.toolbarOptions.showIndexComparer) {\n chart.data.$actionBarElement = chart.data.$actionBarElement || $actionBar;\n chart._addIndexSelectors();\n }\n if (chart.toolbarOptions.showTypeSwitcher) {\n chart.data.$actionBarElement = chart.data.$actionBarElement || $actionBar;\n chart._addChartTypeDropdown();\n }\n if (chart.toolbarOptions.showFullScreenButton) {\n chart.data.$actionBarElement = chart.data.$actionBarElement || $actionBar;\n chart._addFullScreenButton();\n }\n\n if (chart.data.$actionBarElement) {\n plugin.$chartElement.addClass('has-chart-actions');\n plugin.$element.prepend(chart.data.$actionBarElement);\n }\n },\n\n beforeUpdateData: function () {\n if (chart.data.$actionBarElement) \n chart.data.$actionBarElement.css('visibility', 'hidden');\n },\n afterUpdateData: function () {\n if (chart.data.$actionBarElement)\n chart.data.$actionBarElement.css('visibility', 'visible'); \n },\n\n updateData: function () {\n var defer = $.Deferred(),\n symbolsList = plugin._getSymbols(),\n type = chart.data.zoomType,\n count = chart.data.zoomCount,\n isChangingMode = (chart.data.isOneDaySelected && type !== 'intraday') || (!chart.data.isOneDaySelected && type === 'intraday');\n\n if (inovestor.ms.core.isNullOrUndefined(symbolsList))\n throw 'No Symbols detected';\n\n // Always remove the intraday plot line when getting new data as it needs to be calculated.\n chart._removeIntradayClosePlotLine();\n\n // Update options\n chart.data.isOneDaySelected = type === 'intraday';\n plugin.options.chartCompareModeEnabled = symbolsList.length > 1;\n\n // Get Data\n if (!chart.data.isOneDaySelected) {\n var cacheKey = \"daily.\" + symbolsList.join(',');\n var cachedData = plugin._apiCache(cacheKey);\n if (cachedData) {\n chart._updateAndSetupChartData(cachedData, null, type, count, isChangingMode);\n defer.resolve();\n }\n else {\n chart._getStockDailyData(symbolsList).then(function (data) {\n plugin._apiCache(cacheKey, data);\n chart._updateAndSetupChartData(data, null, type, count, true);\n defer.resolve();\n });\n }\n }\n else {\n $.when(chart._getIntradayData(symbolsList), chart._getQuoteData(symbolsList)).then(function (intradayResult, quoteResult) {\n // Each argument is an array with the following structure: [ data, statusText, jqXHR ] (because of jQuery)\n chart._updateAndSetupChartData(intradayResult[0], quoteResult[0], type, count, isChangingMode);\n defer.resolve();\n });\n }\n\n return defer.promise();\n },\n convertChartDataToChartDataSet: function (chartData) {\n if (inovestor.ms.core.isNullOrUndefined(chartData) || inovestor.ms.core.isNullOrUndefined(chartData.fields) || inovestor.ms.core.isNullOrUndefined(chartData.datas))\n return [];\n\n var convertedData = [];\n var dateIndex = chartData.fields.indexOf(\"date\");\n var openIndex = chartData.fields.indexOf(\"open\");\n var highIndex = chartData.fields.indexOf(\"high\");\n var lowIndex = chartData.fields.indexOf(\"low\");\n var closeIndex = chartData.fields.indexOf(\"close\");\n var volumeIndex = chartData.fields.indexOf(\"volume\");\n\n if (this.getChartType() == 'ohlc' || this.getChartType() == 'candlestick') {\n for (var i in chartData.datas) {\n var date = moment.utc(chartData.datas[i][dateIndex]).valueOf();\n convertedData.push([\n date,\n chartData.datas[i][openIndex],\n chartData.datas[i][highIndex],\n chartData.datas[i][lowIndex],\n chartData.datas[i][closeIndex],\n chartData.datas[i][volumeIndex]\n ]);\n }\n }\n else {\n for (var i in chartData.datas) {\n var date = moment.utc(chartData.datas[i][dateIndex]).valueOf();\n convertedData.push([\n date,\n chartData.datas[i][closeIndex],\n chartData.datas[i][highIndex],\n chartData.datas[i][lowIndex],\n chartData.datas[i][openIndex],\n chartData.datas[i][volumeIndex]\n ]);\n }\n }\n\n return convertedData;\n },\n\n getChartConfig: function (isInCompareMode) {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n var getChartType = this.getChartType;\n\n return {\n chart: {\n zoomType: chart.data.showNavigator ? 'x' : '',\n marginBottom: chart.data.showNavigator ? 15 : undefined,\n height: chart.data.height ? chart.data.height : plugin.options.isMobile ? 250 : undefined,\n panning: false,\n pinchType: false,\n styledMode: plugin.options.styledMode ? plugin.options.styledMode : false\n },\n rangeSelector: {\n buttons: [],\n enabled: false,\n inputEnabled: false\n },\n navigator: {\n enabled: chart.data.showNavigator\n },\n scrollbar: {\n enabled: false\n },\n plotOptions: {\n series: {\n color: '#538dac',\n fillColor: 'rgba(203, 221, 230, 0.70)',\n turboThreshold: 0,\n states: {\n hover: {\n enabled: false\n }\n },\n animation: false,\n dataGrouping: {\n enabled: false,\n dateTimeLabelFormats: {\n week: [resource.stockTooltip.week + ' %A, %b %d, %Y']\n }\n }\n },\n\n },\n xAxis: {\n type: 'datetime',\n ordinal: chart.data.isOneDaySelected ? false : true,\n tickInterval: chart.data.isOneDaySelected ? 3600 * 1000 : 3 * 30 * 24 * 3600 * 1000,\n labels: {\n format: chart.data.isOneDaySelected ? '{value:%H:%M}' : '{value:%b %Y}',\n rotation: 0\n },\n },\n yAxis: chart.data.showNavigator ? [\n {\n height: plugin.options.isMobile ? '70%' : \"81%\",\n offset: 45,\n labels: {\n style: {\n fontSize: '10.5px'\n },\n formatter: function () {\n var value = Highcharts.numberFormat(this.value, 2);\n if (plugin.options.chartCompareModeEnabled) {\n value = \"\";\n if (this.value > 0)\n value = \"+\";\n\n value += Highcharts.numberFormat(this.value, 2) + \"%\";\n }\n return value;\n },\n }\n },\n {\n title: { text: resource.stockChartVolume },\n top: '85%',\n height: '15%',\n offset: 45,\n showLastLabel: true,\n tickPositioner: function () {\n var positions = [];\n positions.push(0);\n if (this.max) {\n positions.push(this.max / 2);\n positions.push(this.max);\n }\n\n return positions;\n },\n labels: {\n style: {\n fontSize: '10.5px'\n },\n formatter: function () {\n if (this.value) {\n if (this.axis.max && this.axis.max > 1000000) {\n return Highcharts.numberFormat(this.value / 1000000, 2) + 'M';\n }\n else {\n return Highcharts.numberFormat(this.value / 1000, 0) + 'K';\n }\n }\n else {\n return null;\n }\n }\n }\n }]\n :\n [{\n height: '100%',\n labels: {\n align: 'left',\n style: {\n fontSize: '10.5px'\n },\n formatter: function () {\n var value = Highcharts.numberFormat(this.value, 2);\n if (plugin.options.chartCompareModeEnabled) {\n value = \"\";\n if (this.value > 0)\n value = \"+\";\n\n value += Highcharts.numberFormat(this.value, 2) + \"%\";\n }\n return value;\n },\n }\n }],\n tooltip: {\n headerFormat: '
{point.key}
',\n footerFormat: '',\n style: {\n lineHeight: plugin.options.isMobile ? '10px' : '1.5em'\n },\n pointFormatter: function () {\n var seriesData = plugin._chartTooltipData[this.series.name] ? plugin._chartTooltipData[this.series.name] : null;\n if (seriesData == null || this.x == null)\n return null;\n\n var dataPoint = null;\n var date = new Date(this.x);\n for (var iCnt = 0; iCnt < seriesData.data.length; iCnt++) {\n var itemDate = new Date(seriesData.data[iCnt][0]);\n\n //series is always in right order. We take the first to be greater or equal in case of market closed during the week.\n if (itemDate.getTime() >= date.getTime()) {\n dataPoint = seriesData.data[iCnt];\n break;\n }\n }\n\n if (dataPoint == null)\n return null;\n\n \n var format = ''\n if (plugin.options.isMobile) {\n format =\n '{serieName}
'\n } else {\n format =\n '{serieName}
' +\n '' + resource.stockTooltip.open + ': ' +\n '{open}' +\n ' ' + resource.stockTooltip.high + ': ' +\n '{high}' +\n ' ' + resource.stockTooltip.low + ': ' +\n '{low}' +\n ' ' + resource.stockTooltip.close + ': ' +\n '{close}
';\n }\n\n if (!inovestor.ms.core.isNullOrUndefined(dataPoint[5]) && !plugin.options.isMobile)\n format += '' + resource.stockTooltip.volume + ': ' +\n '{volume}
';\n\n var seriesName = !this.change ? seriesData.name : seriesData.name + ' (' + Highcharts.numberFormat(this.change, 2) + '%)';\n\n if (getChartType() == 'ohlc' || getChartType() == 'candlestick') {\n var tooltip = inovestor.ms.core.stringFormat(format, {\n color: this.color,\n serieName: seriesName,\n close: Highcharts.numberFormat(dataPoint[4], 2),\n high: Highcharts.numberFormat(dataPoint[2], 2),\n open: Highcharts.numberFormat(dataPoint[1], 2),\n low: Highcharts.numberFormat(dataPoint[3], 2),\n volume: Highcharts.numberFormat(dataPoint[5], 0)\n });\n }\n else {\n var tooltip = inovestor.ms.core.stringFormat(format, {\n color: this.color,\n serieName: seriesName,\n close: Highcharts.numberFormat(dataPoint[1], 2),\n high: Highcharts.numberFormat(dataPoint[2], 2),\n open: Highcharts.numberFormat(dataPoint[4], 2),\n low: Highcharts.numberFormat(dataPoint[3], 2),\n volume: Highcharts.numberFormat(dataPoint[5], 0)\n });\n }\n\n return tooltip;\n }\n\n },\n series: [],\n navigation: {\n buttonOptions: {\n theme: {\n r: 3,\n states: {\n stroke: 'none',\n hover: {\n fill: '#eee',\n stroke: 'none',\n },\n select: {\n stroke: 'none',\n fill: '#ddd'\n }\n }\n }\n },\n menuItemStyle: {\n fontSize: '13px'\n },\n menuItemHoverStyle: {}\n }\n };\n\n },\n getChartType: function () {\n var defaultType = 'line';\n // Only line is supported in compare mode for now\n if (plugin.options.chartCompareModeEnabled)\n return 'line';\n\n switch (plugin.options.chartType.toLowerCase()) {\n case 'line':\n return plugin.options.chartType.toLowerCase();\n case 'area':\n case 'ohlc':\n case 'candlestick':\n // Check if other symbols to load\n if (inovestor.ms.core.isNullOrUndefined(plugin._otherSeriesDataSources) || !$.isArray(plugin._otherSeriesDataSources) || plugin._otherSeriesDataSources)\n return plugin.options.chartType.toLowerCase();\n else\n return defaultType;\n default:\n throw \"Cannot render a '\" + plugin.options.chartType + \"' chart for stocks\";\n }\n },\n\n _updateAndSetupChartData: function (chartData, quoteData, type, count, isChangingMode) {\n if (Array.isArray(chartData) && chartData.length === 0) {\n chart.destroy();\n plugin.$element.addClass('hidden');\n return;\n }\n\n if (!inovestor.ms.core.isNullOrUndefined(chartData)) {\n chart._updateStockSeriesData(chartData);\n }\n\n if (isChangingMode) {\n // WORKAROUND: this is to fix highchart issue when the series cannot change extremes without loading ALL first...\n plugin._setChartExtremes('all', null, false);\n }\n\n if (chart.data.isOneDaySelected) {\n // Update stock series\n plugin._chartInstance.xAxis[0].update({\n ordinal: false,\n tickInterval: 3600 * 1000,\n labels: {\n formatter: function () {\n if (!plugin.options.isMobile)\n return Highcharts.dateFormat('%H:%M', this.value);\n\n var index = 0;\n for (var prop in this.axis.ticks)\n index++;\n return index % 2 == 0 ? Highcharts.dateFormat('%H:%M', this.value) : '';\n }\n }\n }, false);\n\n if (chart.data.showNavigator) {\n // Update navigator series\n plugin._chartInstance.xAxis[1].update({ ordinal: false, tickInterval: 3600 * 1000 }, false);\n }\n\n // Set the extremes\n chart._setIntraDayDateExtremes();\n\n // Add the intraday close plotline\n chart._addIntradayClosePlotLine(quoteData);\n\n setTimeout(function () {\n if (plugin.options.isMobile)\n plugin._autoSelectLastPoint();\n });\n }\n else {\n var xLabelsFormat = '{value:%b %Y}';\n var tickInterval = 3 * 30 * 24 * 3600 * 1000;\n if (chart.data.zoomType == \"month\" && chart.data.zoomCount < 6) {\n tickInterval = 14 * 24 * 3600 * 1000;\n xLabelsFormat = '{value:%b %d}' + (plugin.options.isMobile ? '
{value:%Y}' : '');\n }\n plugin._chartInstance.xAxis[0].update({ ordinal: true, tickInterval: tickInterval, labels: { format: xLabelsFormat, formatter: null } }, false);\n if (chart.data.showNavigator)\n plugin._chartInstance.xAxis[1].update({ ordinal: true }, false);\n plugin._setChartExtremes(type, count);\n // Re-select the last point that isnt intra day\n if (isChangingMode) {\n if (plugin.options.isMobile)\n plugin._autoSelectLastPoint();\n }\n }\n\n plugin._chartInstance.redraw();\n },\n _updateStockSeriesData: function (data) {\n // Reset required data\n plugin._chartTooltipData = [];\n\n var otherSeriesData = [];\n var symbolIndex = 0;\n for (var symbol in plugin._symbols) {\n for (var index in data) {\n if (data[index].symbol.toLowerCase() === symbol.toLowerCase()) {\n if (symbolIndex === 0)\n plugin._mainSerieDataSource = data[index];\n else\n otherSeriesData.push(data[index]);\n }\n }\n symbolIndex++;\n }\n plugin._otherSeriesDataSources = otherSeriesData;\n plugin._updateChartSeries();\n },\n _addFullScreenButton: function () {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n\n var html =\n '
' +\n '' +\n '' +\n '' +\n '' +\n '
';\n\n chart.data.$actionBarElement.append(html);\n\n var chartSize = { width: 0, height: 0 };\n chart.data.$actionBarElement.find('.fullscreen-btn-icon').on('click', function () {\n if (plugin.$element.hasClass('fullscreen')) {\n plugin.$chartElement.find('.highcharts-container').width(chartSize.width);\n plugin.$chartElement.find('.highcharts-container').height(chartSize.height);\n plugin.$element.removeClass('fullscreen');\n $(this).find('.fa-stack-1x').removeClass('fa-close').addClass('fa-arrows-alt');\n }\n else {\n chartSize.width = plugin.$chartElement.width();\n chartSize.height = plugin.$chartElement.height();\n plugin.$element.addClass('fullscreen');\n $(this).find('.fa-stack-1x').removeClass('fa-arrows-alt').addClass('fa-close');\n }\n plugin._chartInstance.reflow();\n });\n\n // to improve keyboard navigation, simulate a click when pressing enter on the fullscreen button\n chart.data.$actionBarElement.find('.fullscreen-btn-icon').on('keydown', function (e) {\n if (e.keyCode === 13) {\n $(this).click();\n }\n });\n\n // to improve keyboard navigation, close fullscreen mode when pressing escape\n $('body').on('keydown', function (e) {\n if (e.keyCode === 27 && plugin.$element.hasClass('fullscreen')) {\n chart.data.$actionBarElement.find('.fullscreen-btn-icon').click();\n }\n });\n },\n _addTimespanSelectors: function () {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n\n // Add all the timespan selectors\n var html =\n '
' +\n '' + resource.zoom.zoom + '' +\n '' + resource.zoom.oneDay + '' +\n '' + resource.zoom.oneMonth + '' +\n '' + resource.zoom.threeMonths + '' +\n '' + resource.zoom.sixMonths + '' +\n '' + resource.zoom.ytd + '' +\n '' + resource.zoom.oneYear + '' +\n '' + resource.zoom.all + '' +\n '
';\n chart.data.$actionBarElement.append(html);\n\n // Add the onclick events\n chart.data.$actionBarElement.find('.zooms a').on('click', function (e) {\n var zoomEle = chart.data.$actionBarElement.find('.zooms');\n\n if (zoomEle.hasClass('busy')) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n zoomEle.addClass('busy');\n var selectedEle = $(this);\n var type = selectedEle.attr('type'),\n count = parseInt(selectedEle.attr('count'));\n\n chart.data.$actionBarElement.find('.zooms a').not(selectedEle).removeClass('active');\n selectedEle.addClass('active');\n\n chart.data.zoomType = type;\n chart.data.zoomCount = count;\n\n chart.updateData().then(function () {\n zoomEle.removeClass('busy');\n });\n });\n\n chart.data.$actionBarElement.find('.zooms a').on('keydown', function (e) {\n if (e.keyCode === 13) {\n $(this).click();\n }\n });\n },\n _addIndexSelectors: function () {\n // Add all the timespan selectors\n var html = '
';\n for (var i in plugin.options.otherSymbols) {\n var otherSymbol = plugin.options.otherSymbols[i];\n var name = otherSymbol.nameEn;\n var square = otherSymbol.selected ? \n '' : \n '';\n html += '' + square + name + '';\n }\n html += '
';\n chart.data.$actionBarElement.append(html);\n\n // Add the onclick events\n chart.data.$actionBarElement.find('.indexes a').on('click', function () {\n var symbol = $(this).attr('symbol');\n var otherSymbol = null;\n for (var i in plugin.options.otherSymbols) {\n if (plugin.options.otherSymbols[i].symbol === symbol) {\n otherSymbol = plugin.options.otherSymbols[i];\n break;\n }\n }\n\n if (!inovestor.ms.core.isNullOrUndefined(otherSymbol)) {\n var isSelected = $(this).find('.fa-check-square-o').length > 0;\n otherSymbol.selected = !isSelected;\n if (otherSymbol.selected) {\n plugin._symbols[symbol] = 1;\n $(this).find('.fa').addClass('fa-check-square-o').removeClass('fa-square-o').attr('aria-checked', 'true');\n }\n else {\n delete plugin._symbols[symbol];\n $(this).find('.fa').removeClass('fa-check-square-o').addClass('fa-square-o').attr('aria-checked', 'false');\n }\n\n plugin.search(plugin.options.symbols);\n }\n\n });\n\n // to improve keyboard navigation, simulate a click when pressing enter on the index selector\n chart.data.$actionBarElement.find('.indexes a').on('keydown', function (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n e.preventDefault();\n $(this).click();\n }\n });\n },\n _addChartTypeDropdown: function () {\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n\n // Add all the timespan selectors\n var html =\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
';\n chart.data.$actionBarElement.append(html);\n\n // Add the onclick events\n chart.data.$actionBarElement.find('.chart-types a').on('click', function (e) {\n e.preventDefault();\n\n var chartType = $(this).attr('chartType');\n\n plugin.options.chartType = chartType;\n plugin._updateChartSeries();\n chart._updateAndSetupChartData();\n });\n\n },\n _getStockDailyData: function (symbols) {\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(symbols))\n throw \"symbolsList is required\";\n\n // Setup API url with term\n var historicalStockApiUrl = inovestor.ms.core.stringFormat(inovestor.ms.chart.historical.config.apiStocksRelativeUrl, { symbols: symbols.join(',') });\n var options = {\n type: 'GET', contentType: 'application/json', error: function (error) {\n plugin.apiErrorHandler(error);\n }\n };\n return inovestor.ms.core.ajaxApi(historicalStockApiUrl, options);\n },\n _getIntradayData: function (symbols) {\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(symbols))\n throw \"symbolsList is required\";\n\n // Setup API url with term\n var intraDayApiUrl = inovestor.ms.core.stringFormat(inovestor.ms.chart.historical.config.apiIntraDayUrl, { symbols: symbols.join(',') });\n var options = {\n type: 'GET', contentType: 'application/json', error: function (error) {\n plugin.apiErrorHandler(error);\n }\n };\n return inovestor.ms.core.ajaxApi(intraDayApiUrl, options);\n },\n _getQuoteData: function (symbols) {\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(symbols))\n throw \"symbolsList is required\";\n\n // Setup API url with term\n var apiUrl = inovestor.ms.core.stringFormat(inovestor.ms.chart.historical.config.apiQuoteUrl, { symbols: symbols.join(',') });\n var options = {\n type: 'GET', contentType: 'application/json', error: function (error) {\n plugin.apiErrorHandler(error);\n }\n };\n return inovestor.ms.core.ajaxApi(apiUrl, options);\n },\n _setIntraDayDateExtremes: function () {\n var minDateSettings = { 'hour': 9, 'minute': 30, 'second': 0, 'millisecond': 0 };\n var maxDateSettings = { 'hour': 16, 'minute': 0, 'second': 0, 'millisecond': 0 };\n var minDate = moment().utc().set(minDateSettings);\n var maxDate = moment().utc().set(maxDateSettings);\n\n var mainData = plugin._mainSerieDataSource.datas;\n if (!inovestor.ms.core.isNullOrUndefined(mainData) && mainData.length > 0) {\n // If there's data coming from the API, use the first datapoint to set min and max dates.\n // This is to handle cases when markets are closed.\n // We can do this because intraday means we only get a single day worth of data.\n var apiDate = mainData[0][0];\n\n // Set the min and max hours based on the date.\n minDate = moment(apiDate).utc().set(minDateSettings);\n maxDate = moment(apiDate).utc().set(maxDateSettings);\n }\n\n // Set the min and max for the x-axis and call setExtremes so the navigator selects all.\n plugin._chartInstance.xAxis[0].update({min: +minDate, max: +maxDate});\n plugin._chartInstance.xAxis[0].setExtremes(+minDate, +maxDate, false, false);\n },\n _addIntradayClosePlotLine: function (quoteData) {\n if (!inovestor.ms.core.isNullOrUndefined(quoteData) && plugin._getSymbols().length === 1) {\n var close = quoteData[0].previousClose;\n var datas = plugin._mainSerieDataSource.datas;\n\n if (!inovestor.ms.core.isNullOrUndefined(close) && !inovestor.ms.core.isNullOrUndefined(datas) && datas.length > 0) {\n\n // Highcharts will not show the plotline if it's not in the range of the chart data.\n // To counter this, we find the min and max of the series and, if the value\n // of the plotline is either bigger or smaller the the min or max, we set the extremes\n // to the value of the plotline.\n\n var prices = datas.map(function (data) {\n return data[1];\n });\n var min = Math.min.apply(Math, prices);\n var max = Math.max.apply(Math, prices);\n var minExtreme = min > close ? close : null;\n var maxExtreme = max < close ? close : null;\n\n if (minExtreme || maxExtreme) {\n plugin._chartInstance.yAxis[0].setExtremes(minExtreme, maxExtreme);\n }\n\n // Finally, just add the plotline to the chart.\n var resource = inovestor.ms.core.getCurrentResource(inovestor.ms.chart.historical.resources);\n plugin._chartInstance.yAxis[0].addPlotLine({\n id: 'lastclose',\n color: '#d9534f',\n width: 1,\n value: close,\n dashStyle: 'shortdash',\n label: {\n useHTML: true,\n rotation: 0,\n text: resource.lastClose + '
' + Highcharts.numberFormat(close, 2),\n style: {\n color: '#d9534f',\n fontSize: '11px',\n lineHeight: '15px',\n paddingTop: '3px'\n },\n align: 'right'\n },\n zIndex: 3\n });\n }\n }\n },\n _removeIntradayClosePlotLine: function () {\n // Remove the plotline by id.\n plugin._chartInstance.yAxis[0].removePlotLine('lastclose');\n // Reset the extremes so the chart renders correctly in other modes.\n plugin._chartInstance.yAxis[0].setExtremes(null, null);\n },\n };\n\n return chart;\n };\n\n})(inovestor.ms.libRef.jQuery, inovestor.ms.libRef.highcharts, inovestor.ms.chart.historical);\n\n\n; (function ($, Highcharts, inovestor, undefined) {\n\n var pluginName = 'inoMsChartHistorical';\n\n // Create the plugin constructor\n function Plugin(element, options) {\n\n this.element = element;\n this.chart = null;\n this._name = pluginName;\n this._defaults = $.fn.inoMsChartHistorical.defaults;\n this._symbols = {};\n this._chartInstance = null;\n this._mainSerieId = inovestor.ms.core.getPseudoGuid();\n this._mainSerieDataSource = null;\n this._otherSeriesDataSources = null;\n this._chartTooltipData = null;\n this._apiCacheVar = {};\n\n // Merge options with defaults\n this.options = $.extend({}, this._defaults, options);\n\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(this.options.symbols))\n throw \"symbols is required\";\n if (inovestor.ms.core.isNullOrUndefined(this.options.type))\n throw \"type is required\";\n if (inovestor.ms.core.isNullOrUndefined(inovestor.ms.chart.historical.charts[this.options.type]))\n throw \"type '\" + this.options.type + \"' is not supported\";\n\n // If isMobile is not set, check the width of the rendered element to see if it is smaller than 650px\n if (inovestor.ms.core.isNullOrUndefined(this.options.isMobile))\n this.options.isMobile = $(element).width() <= 650;\n\n // Init plugin chart object\n this.chart = inovestor.ms.chart.historical.charts[this.options.type].call(this);\n\n // Call init\n this.init();\n }\n\n $.extend(Plugin.prototype, {\n\n // Initialization logic\n init: function () {\n var plugin = this;\n\n // Setup what plugin needs to do on language change\n inovestor.ms.core.instances.register(this, function () {\n // Need to re-render because of chart resources\n plugin.update();\n });\n\n plugin.buildCache();\n plugin.bindEvents();\n if (plugin.options.isMobile)\n plugin.$element.addClass('mobile');\n plugin.chart.init();\n plugin.render();\n\n // Call Search\n plugin.search(plugin.options.symbols).always(function () {\n // When search is completed, trigger onReady event\n plugin.$element.trigger('ready' + '.' + plugin._name);\n });\n },\n\n // Remove plugin instance completely\n destroy: function () {\n this.unbindEvents();\n this.destroyHighChart();\n this.$element.removeData();\n this.$element.html('');\n this.chart.destroy();\n },\n\n // Remove highchart instance\n destroyHighChart: function () {\n if (!inovestor.ms.core.isNullOrUndefined(this.$chartElement)) {\n if (!inovestor.ms.core.isNullOrUndefined(this._chartInstance))\n this._chartInstance.destroy();\n this.$chartElement.remove();\n this.$chartElement = null;\n }\n this.chart.destroy();\n },\n\n // Cache DOM nodes for performance\n buildCache: function () {\n this.$element = $(this.element);\n },\n\n // Bind events that trigger methods\n bindEvents: function () {\n var plugin = this;\n plugin.$element.on('ready' + '.' + plugin._name, function () {\n var onReady = plugin.options.onReady;\n if (typeof onReady === 'function')\n onReady.call(plugin.$element);\n });\n\n },\n\n // Unbind events that trigger methods\n unbindEvents: function () {\n this.$element.off('.' + this._name);\n },\n\n // Main API error handler\n apiErrorHandler: function (apiError) {\n var plugin = this;\n plugin._apiCacheVar = {};\n plugin.destroyHighChart();\n var onError = plugin.options.onError;\n if (typeof onError === 'function') {\n var result = onError.call(inovestor.ms.core.generateError(inovestor.ms.core.errors.apiError, apiError, plugin));\n\n // If callback returns false, do not execute default behavior\n if (!inovestor.ms.core.isNullOrUndefined(result) && result === false)\n return;\n }\n plugin.$element.append(inovestor.ms.core.getErrorTemplate(inovestor.ms.core.currentLanguage));\n\n },\n\n // Main API error handler\n invalidIdentifierHandler: function () {\n var plugin = this;\n plugin._apiCacheVar = {};\n plugin.destroyHighChart();\n var onError = plugin.options.onError;\n if (typeof onError === 'function') {\n var result = onError.call(inovestor.ms.core.generateError(inovestor.ms.core.errors.invalidIdentifier, null, plugin));\n\n // If callback returns false, do not execute default behavior\n if (!inovestor.ms.core.isNullOrUndefined(result) && result === false)\n return;\n }\n plugin.$element.append(inovestor.ms.core.getInvalidIdentifierTemplate(inovestor.ms.core.currentLanguage));\n },\n\n openFullScreen: function () {\n\n },\n\n // Renders html template\n // REQUIRED : chart methods: beforeRender() and afterRender()\n render: function () {\n var plugin = this;\n\n plugin.$element.addClass('ino-ms-chart');\n plugin.$element.html('');\n plugin.chart.beforeRender();\n\n plugin.destroyHighChart();\n\n plugin.$loadingIndicatorElement = $('
');\n plugin.$element.append(plugin.$loadingIndicatorElement);\n\n plugin.$chartElement = $('
');\n plugin.$element.append(plugin.$chartElement);\n\n plugin._renderChart();\n plugin.chart.afterRender();\n },\n\n // Search for a list stocks/funds\n search: function (symbols) {\n var plugin = this;\n\n // Update symbols list if it changes\n if (!inovestor.ms.core.isNullOrUndefined(symbols)) {\n plugin.options.symbols = symbols;\n // Build symbols list\n plugin._buildSymbols();\n }\n\n if (inovestor.ms.core.isNullOrUndefined(plugin.$chartElement))\n plugin.render();\n\n // Make sure required variables are set\n if (inovestor.ms.core.isNullOrUndefined(plugin._symbols))\n throw \"symbols is required\";\n\n // Reset relevant Data before calling API\n plugin._mainSerieDataSource = null;\n plugin._otherSeriesDataSources = null;\n plugin._chartTooltipData = null;\n\n // Keep track of the focused element (if any)\n // We will refocus on it after the chart is updated (to improve keyboard navigation)\n var focusedElement = plugin.$element.find(':focus');\n\n plugin.$loadingIndicatorElement.html(inovestor.ms.core.getLoadingIndicatorTemplate(inovestor.ms.core.currentLanguage));\n plugin.$loadingIndicatorElement.show();\n\n plugin.chart.beforeUpdateData();\n\n return plugin.chart.updateData().then(function () {\n plugin.$loadingIndicatorElement.hide();\n plugin.$loadingIndicatorElement.html('');\n\n if (plugin.options.isMobile)\n plugin._autoSelectLastPoint();\n\n if (!inovestor.ms.core.isNullOrUndefined(plugin._mainSerieDataSource) && plugin._mainSerieDataSource.requestStatus === 'invalidIdentifier')\n plugin.invalidIdentifierHandler();\n\n plugin.chart.afterUpdateData();\n\n if (focusedElement.length > 0) {\n focusedElement.focus();\n }\n });\n },\n\n _autoSelectLastPoint: function () {\n var plugin = this;\n\n // show tooltip on last point when mobile\n var dataPoints = plugin._chartInstance.series[0].points;\n if (dataPoints) {\n lastPoint = dataPoints[dataPoints.length - 1];\n if (!lastPoint || lastPoint.y == null)\n lastPoint = dataPoints[dataPoints.length - 2];\n plugin._chartInstance.tooltip.refresh([lastPoint]);\n }\n },\n\n // Sets up a Highchart with 2 series \n // REQUIRED : chart method getChartConfig()\n _renderChart: function () {\n var plugin = this;\n\n var chartConfig = plugin.chart.getChartConfig();\n var mainColor = Highcharts.getOptions().colors[0];\n\n // Set a serie that will hold the MAIN symbol data \n chartConfig.series.push({\n id: plugin._mainSerieId,\n name: plugin._mainSerieId,\n type: plugin.chart.getChartType(),\n yAxis: 0,\n threshold: null,\n color: mainColor,\n data: []\n });\n\n if (!inovestor.ms.core.isNullOrUndefined(plugin.chart.data.showVolume) && plugin.chart.data.showVolume === true) {\n // Set the volume serie of the MAIN \n chartConfig.series.push({\n id: plugin._mainSerieId + ':Volume',\n name: plugin._mainSerieId + ':Volume',\n type: 'column',\n yAxis: 1,\n color: mainColor,\n data: []\n });\n }\n\n // Create new highchart instance, deleting old one first\n plugin._chartInstance = Highcharts.stockChart('chart-element' + plugin._mainSerieId, chartConfig);\n },\n\n // Update the chart data / resources based on current localization\n update: function () {\n var plugin = this;\n // Re-render chart\n plugin._apiCacheVar = {};\n plugin.render();\n plugin.search(plugin.options.symbols);\n },\n\n // Getter / Setter method in order to store api calls\n _apiCache: function (key, cacheValue) {\n var plugin = this;\n\n if (inovestor.ms.core.isNullOrUndefined(key))\n return null;\n\n if (typeof cacheValue === 'undefined') {\n var val = plugin._apiCacheVar[key];\n if (inovestor.ms.core.isNullOrUndefined(val))\n return val;\n if ($.isArray(val))\n return val.slice();\n else\n return $.extend(true, {}, val);\n }\n\n if ($.isArray(cacheValue))\n plugin._apiCacheVar[key] = cacheValue.slice();\n else\n plugin._apiCacheVar[key] = $.extend(true, {}, cacheValue);\n return cacheValue;\n },\n\n // Methods for Building symbols list object and to get the selected symbols array\n _buildSymbols: function () {\n // Use the symbols in options with the selected symbols in otherSymbols to \n // generate a list of currently selected symbols, the first in index being the main symbol\n var plugin = this;\n var symbols = plugin.options.symbols;\n\n // Reset symbols list\n plugin._symbols = {};\n\n var symbolsList = [];\n if (typeof symbols == 'string') {\n if (symbols.split(',').length > 1)\n symbolsList = symbols.split(',');\n else\n symbolsList.push(symbols);\n }\n else if ($.isArray(symbols))\n symbolsList = symbols;\n\n if (!inovestor.ms.core.isNullOrUndefined(plugin.options.otherSymbols) && $.isArray(plugin.options.otherSymbols)) {\n for (var i in plugin.options.otherSymbols) {\n if (plugin.options.otherSymbols[i].selected)\n symbolsList.push(plugin.options.otherSymbols[i].symbol);\n }\n }\n\n for (var i in symbolsList)\n plugin._symbols[symbolsList[i]] = 1;\n },\n _getSymbols: function () {\n // Retun array of selected symbols using the plugin _symbols object\n var plugin = this;\n var symbolsList = [];\n\n for (var i in plugin._symbols)\n symbolsList.push(i);\n\n return symbolsList;\n },\n\n _updateMainSeries: function () {\n var plugin = this;\n var mainData = plugin._mainSerieDataSource;\n var convertedMainData = plugin.chart.convertChartDataToChartDataSet(mainData);\n\n // Get required data\n var colors = Highcharts.getOptions().colors;\n var mainSeries = plugin._chartInstance.get(plugin._mainSerieId);\n var mainSeriesVolume = plugin._chartInstance.get(plugin._mainSerieId + ':Volume');\n var chartType = plugin.chart.getChartType();\n\n // Set main series changes\n var mainSeriesChanges = {};\n mainSeriesChanges.data = convertedMainData\n mainSeriesChanges.options = { symbol: mainData.symbol };\n if (mainSeries.type !== chartType)\n mainSeriesChanges.type = chartType;\n // Update Series \n if (mainSeriesChanges.data || mainSeriesChanges.options || mainSeriesChanges.type)\n mainSeries.update(mainSeriesChanges, false);\n\n // Make sure tooltip data is updated to point at correct values\n plugin._chartTooltipData[plugin._mainSerieId] = { name: mainData.symbol, data: convertedMainData };\n\n // Set main series volume changes\n if (!inovestor.ms.core.isNullOrUndefined(plugin.chart.data.showVolume) && plugin.chart.data.showVolume === true) {\n var mainSeriesVolumeChanges = {};\n mainSeriesVolumeChanges.data = convertedMainData.map(function (item) {\n return [item[0], item[5]];\n });\n\n // Update Series \n if (mainSeriesVolumeChanges.data)\n mainSeriesVolume.update(mainSeriesVolumeChanges, false);\n }\n },\n _updateOtherSeries: function () {\n var plugin = this;\n var othersData = plugin._otherSeriesDataSources;\n\n // Get required data\n var colors = Highcharts.getOptions().colors;\n var chartType = plugin.chart.getChartType();\n\n // Update Other Series Data\n // Remove series if symbol not in plugin ChartDataList\n for (var i in plugin._chartInstance.series) {\n var shouldRemove = true;\n for (var iCnt = 1; iCnt < plugin._otherSeriesDataSources.length; iCnt++) {\n if (plugin._chartInstance.series[i].name.indexOf(plugin._otherSeriesDataSources[iCnt].symbol) >= 0) {\n shouldRemove = false;\n break;\n }\n }\n if (shouldRemove)\n plugin._removeSeries(plugin._chartInstance.series[i].name);\n }\n\n // Add Series if data in ChartDataList not in chart\n for (var iCnt = 0; iCnt < plugin._otherSeriesDataSources.length; iCnt++) {\n var chartData = plugin._otherSeriesDataSources[iCnt];\n var chartSerie = false;\n for (var i in plugin._chartInstance.series) {\n if (plugin._chartInstance.series[i].name.indexOf(chartData.symbol) >= 0) {\n // Workaround for SPTSX & SPTSXVEN\n if (!plugin._chartInstance.series[i].name.match('SPTSX') || !chartData.symbol.match('SPTSX')) {\n chartSerie = plugin._chartInstance.series[i];\n break;\n }\n }\n }\n if (!chartSerie) {\n var convertedSeriesData = plugin.chart.convertChartDataToChartDataSet(chartData);\n var serie = {\n id: chartData.symbol,\n name: chartData.symbol,\n yAxis: 0,\n color: colors[iCnt + 1],\n type: chartType,\n data: convertedSeriesData\n };\n plugin._chartInstance.addSeries(serie, false);\n plugin._chartTooltipData[chartData.symbol] = { name: chartData.symbol, data: convertedSeriesData };\n }\n else {\n var serieChanges = { type: chartType };\n chartSerie.update(serieChanges, false);\n }\n }\n\n },\n _updateChartSeries: function () {\n var plugin = this;\n\n var defer = $.Deferred();\n\n plugin._updateMainSeries();\n plugin._updateOtherSeries();\n\n // Set Chart Compare mode if needed\n if (plugin.options.chartCompareModeEnabled)\n plugin._chartInstance.yAxis[0].setCompare('percent', false);\n else\n plugin._chartInstance.yAxis[0].setCompare(null, false);\n\n defer.resolve();\n return defer.promise();\n },\n\n _removeSeries: function (symbol) {\n var plugin = this;\n for (var i in plugin._chartInstance.series) {\n var serie = plugin._chartInstance.series[i];\n if (serie.name.indexOf('Navigator') === -1 && serie.name.indexOf(plugin._mainSerieId) === -1)\n serie.remove(false);\n }\n },\n _mergeChartDataLists: function (originalChartDatas, additionalChartDatas) {\n if (inovestor.ms.core.isNullOrUndefined(originalChartDatas) || inovestor.ms.core.isNullOrUndefined(originalChartDatas))\n return originalChartDatas;\n\n for (var i in additionalChartDatas) {\n var additionalChartData = additionalChartDatas[i];\n if (additionalChartData.requestStatus !== 'success')\n continue;\n\n var hasBeenFound = false;\n for (var j in originalChartDatas) {\n var originalChartData = originalChartDatas[j];\n if (originalChartData.symbol === additionalChartData.symbol) {\n // Update data\n originalChartData = additionalChartData.symbol;\n hasBeenFound = true;\n break;\n }\n }\n if (!hasBeenFound)\n originalChartDatas.push(additionalChartData);\n }\n },\n\n _setChartExtremes: function (type, count, renderChart) {\n if (inovestor.ms.core.isNullOrUndefined(type))\n return;\n\n var plugin = this,\n apiFirstDate = null,\n apiLastDate = null,\n minDate = null,\n maxDate = null,\n mainSeries = plugin._chartInstance.get(plugin._mainSerieId),\n currentExtremes = plugin._chartInstance.xAxis[0].getExtremes(),\n renderChart = (inovestor.ms.core.isNullOrUndefined(renderChart) || renderChart !== false);\n\n var mainData = plugin._mainSerieDataSource.datas;\n if (!inovestor.ms.core.isNullOrUndefined(mainData) && mainData.length > 0) {\n apiFirstDate = new Date(mainData[0][0]);\n apiLastDate = new Date(mainData[mainData.length - 1][0]);\n apiFirstDateUTC = apiFirstDate.setUTCMonth(apiFirstDate.getUTCMonth());\n apiLastDateUTC = apiLastDate.setUTCMonth(apiLastDate.getUTCMonth());\n }\n else\n return;\n\n switch (type) {\n case 'ytd':\n maxDate = Date.UTC(apiLastDate.getUTCFullYear(), apiLastDate.getUTCMonth(), apiLastDate.getUTCDate(), apiLastDate.getUTCHours(), apiLastDate.getUTCMinutes(), apiLastDate.getUTCSeconds());\n minDate = Date.UTC(apiLastDate.getUTCFullYear(), 0, 1, 0, 0, 0);\n break;\n case 'all':\n minDate = Date.UTC(apiFirstDate.getUTCFullYear(), apiFirstDate.getUTCMonth(), apiFirstDate.getUTCDate(), apiFirstDate.getUTCHours(), apiFirstDate.getUTCMinutes(), apiFirstDate.getUTCSeconds());\n maxDate = Date.UTC(apiLastDate.getUTCFullYear(), apiLastDate.getUTCMonth(), apiLastDate.getUTCDate(), apiLastDate.getUTCHours(), apiLastDate.getUTCMinutes(), apiLastDate.getUTCSeconds());\n break;\n case 'year':\n case 'month':\n maxDate = currentExtremes.userMax;\n var tempDate = new Date(currentExtremes.userMax);\n minDate = type === 'year' ? tempDate.setUTCFullYear(tempDate.getUTCFullYear() - count) : tempDate.setUTCMonth(tempDate.getUTCMonth() - count);\n if (minDate < apiFirstDateUTC) {\n minDate = apiFirstDateUTC;\n tempDate = new Date(apiFirstDateUTC);\n maxDate = type === 'year' ? tempDate.setUTCFullYear(tempDate.getUTCFullYear() + count) : tempDate.setUTCMonth(tempDate.getUTCMonth() + count);\n if (maxDate > apiLastDateUTC) {\n maxDate = apiLastDateUTC;\n }\n }\n break;\n default:\n throw 'NOOOO';\n }\n\n plugin._chartInstance.xAxis[0].setExtremes(\n minDate,\n maxDate,\n renderChart,\n false\n );\n },\n _setFundChartExtremes: function (renderChart) {\n var plugin = this,\n apiFirstDate = null,\n apiLastDate = null,\n minDate = null,\n maxDate = null,\n mainSeries = plugin._chartInstance.get(plugin._mainSerieId),\n currentExtremes = plugin._chartInstance.xAxis[0].getExtremes(),\n renderChart = (inovestor.ms.core.isNullOrUndefined(renderChart) || renderChart !== false);\n\n var mainData = plugin._mainSerieDataSource.historicalDatas;\n if (!inovestor.ms.core.isNullOrUndefined(mainData) && mainData.length > 0) {\n apiFirstDate = new Date(mainData[0].date);\n apiLastDate = new Date(mainData[mainData.length - 1].date);\n apiFirstDateUTC = apiFirstDate.setUTCMonth(apiFirstDate.getUTCMonth());\n apiLastDateUTC = apiLastDate.setUTCMonth(apiLastDate.getUTCMonth());\n }\n else\n return;\n\n minDate = Date.UTC(apiFirstDate.getUTCFullYear(), apiFirstDate.getUTCMonth(), apiFirstDate.getUTCDate(), apiFirstDate.getUTCHours(), apiFirstDate.getUTCMinutes(), apiFirstDate.getUTCSeconds());\n maxDate = Date.UTC(apiLastDate.getUTCFullYear(), apiLastDate.getUTCMonth(), apiLastDate.getUTCDate(), apiLastDate.getUTCHours(), apiLastDate.getUTCMinutes(), apiLastDate.getUTCSeconds());\n\n plugin._chartInstance.xAxis[0].setExtremes(\n minDate,\n maxDate,\n renderChart,\n false\n );\n }\n });\n\n // JQuery Plugin wrapper\n $.fn.inoMsChartHistorical = function (options) {\n this.each(function () {\n if (!$.data(this, pluginName)) {\n // Store instance of plugin in \"$.data\"\n $.data(this, pluginName, new Plugin(this, options));\n }\n });\n\n // return plugin to support JQuery chaining\n return this;\n };\n\n // Default options for plugin\n $.fn.inoMsChartHistorical.defaults = {\n symbols: null,\n type: 'fund',\n chartType: 'line',\n chartCompareModeEnabled: false,\n otherSymbols: null,\n chartData: null,\n isMobile: null,\n styledMode: false,\n onError: null,\n onReady: null,\n showTitle: null,\n toolbarOptions: {\n showZoom: true,\n showIndexComparer: true,\n showTypeSwitcher: true,\n showFullScreenButton: true\n }\n };\n\n})(inovestor.ms.libRef.jQuery, inovestor.ms.libRef.highcharts, inovestor);\n; (function (inovestor, undefined) {\n inovestor.ms.chart.historical.resources = inovestor.ms.chart.historical.resources || {};\n inovestor.ms.chart.historical.resources[\"en\"] = {\n chartGrowthTitle: 'Growth of ${growth}',\n chartChangeTitle: 'Historical Data',\n chartType: {\n candlestick: 'Candlestick',\n line: 'Line',\n mountain: 'Mountain',\n ohlc: 'OHLC',\n title: 'Type'\n },\n fundTooltip: {\n balanceLabel: 'Balance',\n balanceValue: '${balance}',\n navpsLabel: 'NAV',\n changeLabel: 'Change',\n changeValue: '{change}%',\n },\n indexes: 'Indexes',\n stockTooltip: {\n close: 'C',\n high: 'H',\n low: 'L',\n open: 'O',\n volume: 'Volume',\n week: 'Week from'\n },\n zoom: {\n zoom: 'Zoom',\n all: 'All',\n oneDay: '1D',\n oneMonth: '1M',\n oneYear: '1Y',\n threeMonths: '3M',\n sixMonths: '6M',\n ytd: 'YTD',\n },\n lastClose: 'Last Close',\n fullscreenButtonAriaLabel: 'Enable/Disable fullscreen mode'\n };\n})(inovestor);\n; (function (inovestor, undefined) {\n inovestor.ms.chart.historical.resources = inovestor.ms.chart.historical.resources || {};\n inovestor.ms.chart.historical.resources[\"fr\"] = {\n chartGrowthTitle: 'Croissance de {growth} $',\n chartChangeTitle: 'Données historiques',\n chartType: {\n candlestick: 'Chandeliers',\n line: 'Courbe',\n mountain: 'Montagne',\n ohlc: 'Barre',\n title: 'Type'\n },\n fundTooltip: {\n balanceLabel: 'Balance',\n balanceValue: '{balance}$',\n navpsLabel: 'Val. Liq.',\n changeLabel: 'Variation',\n changeValue: '{change}%',\n },\n indexes: 'Indices',\n stockTooltip: {\n close: 'C',\n high: 'H',\n low: 'B',\n open: 'O',\n volume: 'Volume',\n week: 'Semaine du'\n },\n zoom: {\n zoom: 'Zoom',\n all: 'Max',\n oneDay: '1J',\n oneMonth: '1M',\n oneYear: '1A',\n threeMonths: '3M',\n sixMonths: '6M',\n ytd: 'Année',\n },\n lastClose: 'Dernière clôture',\n fullscreenButtonAriaLabel: 'Activer/Désactiver le mode plein écran'\n };\n})(inovestor);","window[\"inoMsTemplatesCache\"] = window[\"inoMsTemplatesCache\"] || {};\nwindow[\"inoMsTemplatesCache\"][\"inoMsEtfOverview.overview.html\"] = \"

0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">
0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">
0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">
0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">
0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">
0}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\">

\"; "]}