{"version":3,"file":"dist/nav-tickers.js","mappings":"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","sources":["webpack://vaneckweb/../Static/au/js/insights/src/override/ticker-nav-functions.ts","webpack://vaneckweb/../Static/au/js/insights/src/override/nav-tickers.js"],"sourcesContent":["export interface HomepageTickerNavViewModel {\r\n Prices: ChangedPriceItem[];\r\n TickerNavMetaData: HomepageDailyPriceViewModel;\r\n}\r\n\r\nexport interface ChangedPriceItem {\r\n Ticker: string;\r\n AsOfDate: string;\r\n NavCurrent: number;\r\n NavDailyChange: number;\r\n FundUrl: string;\r\n}\r\n\r\nexport interface CategorisedFundItems {\r\n AsOfDate: string;\r\n FormattedAsOfDate: string;\r\n Items: ChangedPriceItem[]\r\n}\r\n\r\nexport interface HomepageDailyPriceViewModel {\r\n TabId: string;\r\n GroupId: string;\r\n TabText: string;\r\n TabSwitchNavId: string;\r\n LatestNavText: string;\r\n AsOfDateText: string;\r\n NavVaneckDtpText: string;\r\n HeaderLabels: string;\r\n DataRows: string[];\r\n PriceReturnsText: string;\r\n PriceReturnsLink: string;\r\n TabClass: string;\r\n TabCssClass: string;\r\n TabPaneCssClass: string;\r\n TabSelected: string;\r\n GroupDisplayStyle: string;\r\n}\r\n\r\nexport function processPricesData(pricesData: ChangedPriceItem[]) {\r\n let result: CategorisedFundItems[] = [];\r\n\r\n pricesData.forEach(priceItem => {\r\n let categoryItem = result.find(x => x.AsOfDate === priceItem.AsOfDate);\r\n if (categoryItem) {\r\n return categoryItem.Items.push(priceItem);\r\n }\r\n let newCategory: CategorisedFundItems = {\r\n AsOfDate: priceItem.AsOfDate,\r\n FormattedAsOfDate: convCSDate(priceItem.AsOfDate),\r\n Items: [priceItem]\r\n }\r\n return result.push(newCategory);\r\n })\r\n\r\n return result;\r\n}\r\n\r\nfunction convCSDate(dateString: string) {\r\n dateString = dateString.replaceAll(/[^0-9]/g, \"\");\r\n if (typeof dateString != \"string\") {\r\n return \"Error\";\r\n }\r\n var date = new Date(Number(dateString));\r\n\r\n var year = new Intl.DateTimeFormat('en', { year: '2-digit' }).format(date);\r\n var month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date);\r\n var day = new Intl.DateTimeFormat('en', { day: 'numeric' }).format(date);\r\n\r\n //NAV as of 05/10/23\r\n return `NAV as of ${day}/${month}/${year}`;\r\n}\r\n\r\nexport const mkChangedTab = (dataSet: CategorisedFundItems, tab: HomepageDailyPriceViewModel, columnSize = 6) => {\r\n\r\n let markup = \"\";\r\n const asOfDate = dataSet.FormattedAsOfDate;\r\n markup += `
${asOfDate}
`\r\n let SplitChildList = [];\r\n\r\n //splitting data to arrays of 6 items - Childlist defined at the top\r\n for (let i = 0; i < dataSet.Items.length; i += columnSize) {\r\n const chunk = dataSet.Items.slice(i, i + columnSize);\r\n SplitChildList.push(chunk);\r\n }\r\n\r\n //This is the expanded view where each column is rendered seperately.\r\n markup += SplitChildList.reduce((prev, curr) => {\r\n //Iterating though each column...\r\n var mk = `
`;\r\n mk += curr.reduce((p, c) => {\r\n //Now iterate through each fund...\r\n return p + mkFund(c);\r\n }, \"\");\r\n mk += `
`;\r\n return prev + mk;\r\n }, \"\");\r\n\r\n markup += `
`;\r\n\r\n return markup;\r\n}\r\n\r\n\r\n//draw each fund item\r\nconst mkFund = (fund: ChangedPriceItem) => {\r\n return `
${fund.Ticker}\r\n \r\n $${Number(fund.NavCurrent).toFixed(2)}\r\n (${mkLastChange(fund.NavDailyChange)})\r\n \r\n
`;\r\n};\r\n\r\n\r\n//draw the last change value\r\nconst mkLastChange = (amount: number) => {\r\n const formattedAmount = Number(amount).toFixed(2);\r\n if (amount < 0) return getSVG(\"fund-decrease\", \"$\" + formattedAmount);\r\n return getSVG(\"fund-increase\", \"$\" + formattedAmount);\r\n};\r\n\r\n\r\n//to create the CTA link\r\nexport const mkCTA = (linkURL: string, linkTitle: string) => {\r\n return `\r\n \r\n ${linkTitle}${getSVG(\"angle-right\")}\r\n \r\n `\r\n};\r\n\r\nfunction getSVG(name: string, text?: string) {\r\n switch (name) {\r\n case \"chevron-up\":\r\n return ``;\r\n case \"chevron-down\":\r\n return ``\r\n case \"angle-right\":\r\n return ``;\r\n case \"fund-increase\":\r\n return ` ${text}`\r\n case \"fund-decrease\":\r\n return ` ${text}`;\r\n default:\r\n return \"\";\r\n }\r\n}","//require(\"regenerator-runtime/runtime\");\r\nimport { processPricesData, mkChangedTab, mkCTA } from \"./ticker-nav-functions.ts\";\r\n\r\nwindow.veNavTickers = {\r\n initialised: false,\r\n data: [],\r\n container: \"div.ticker-nav__tabs\",\r\n dropdownTitle: \"ETF NAVs\",\r\n dropdownList: [\r\n { displayValue: \"Volume\", sortHeader: \"Volume\", sortOrder: \"desc\" }, \r\n { displayValue: \"Ticker\", sortHeader: \"Ticker\", sortOrder: \"asc\" },\r\n { displayValue: \"Net Assets\", sortHeader: \"AUM\", sortOrder: \"desc\" },\r\n // { displayValue: \"Net Expense Ratio\", sortHeader: \"NetExpenseRatio\", sortOrder: \"desc\" },\r\n { displayValue: \"Price Change\", sortHeader: \"DailyChangeNav\", sortOrder: \"desc\" }\r\n // { displayValue: \"30-Day SEC Yield\", sortHeader: \"ThirtyDaySecYield\", sortOrder: \"desc\" }\r\n ],\r\n initialSortItem: { displayValue: \"Volume\", sortHeader: \"Volume\", sortOrder: \"desc\" },\r\n columnSize: 6,\r\n linkTitle: \"View More Details\",\r\n linkURL:\"/vaneck-etfs/?page=etf-selector\",\r\n APIURL: \"/Australia/HomeAuPage/GetDailyPrices\",\r\n\r\n getData: async x => {\r\n try {\r\n var data = await $.get(veNavTickers.APIURL);\r\n return data;\r\n }\r\n catch (err) {\r\n console.log(\"Error getting data\");\r\n console.log(err);\r\n return []\r\n }\r\n },\r\n\r\n //draw the dropdown section\r\n rnDropdown: (data, showDropdowns = true) => {\r\n var markup =\r\n `
\r\n
${data.LatestNavText}
\r\n
\r\n

Fund Dropdown

\r\n
\r\n \r\n
`;\r\n showDropdowns && veNavTickers.dropdownList.forEach(function (item) {\r\n markup += ``\r\n });\r\n markup += `
${mkCTA(data.PriceReturnsLink, data.PriceReturnsText)}
`;\r\n markup += `
`\r\n return markup\r\n },\r\n\r\n\r\n //draw the main data content\r\n rnTabContent: (data, pricesData) => {\r\n var markup = ``;\r\n $('.fund-widget.tabs__content.tab-content').empty();\r\n //Iterate though high level tabs\r\n markup += `
`;\r\n markup += `
`;\r\n markup += veNavTickers.mkTabInnerContent(data, pricesData);\r\n markup += \"
\";\r\n $('.fund-widget.tabs__content.tab-content').append(markup);\r\n },\r\n\r\n mkTabInnerContent: (data, pricesData) => {\r\n var markup = `
`;\r\n markup += veNavTickers.mkTabFundContent(data, pricesData);\r\n markup += `
`;\r\n return markup;\r\n },\r\n\r\n //drawing the contents based on the array available\r\n mkTabFundContent: (tab, pricesData) => {\r\n const sortHeader = $(\"#HomeFundDropdown\").attr(\"data-title\");\r\n const sortOrder = $(\"#HomeFundDropdown\").attr(\"data-order\");\r\n\r\n const TabPaneCssClass = \"active show\";\r\n //const TabPaneCssClass = isExpanded && type == \"collapsed\" ? \"\" : \"active show\";\r\n\r\n const categoriedPricesData = processPricesData(pricesData);\r\n\r\n console.log(categoriedPricesData);\r\n\r\n var markup = `
`\r\n categoriedPricesData.forEach(dataSet => {\r\n markup += mkChangedTab(dataSet);\r\n })\r\n markup += `
`;\r\n return markup;\r\n },\r\n\r\n //sort data based on the order and the title\r\n rnSortData: (dataSet, sortTitle, sortType) => {\r\n var newArray = dataSet.sort((a, b) => {\r\n if (a[sortTitle] == null || b[sortTitle] == null) {\r\n return b[sortTitle] == null ? -1 : 0;\r\n }\r\n let la, lb;\r\n //if string the data is converted to lowercase for comparison\r\n if (isNaN(a[sortTitle]) && isNaN(b[sortTitle])) {\r\n la = a[sortTitle].toLowerCase(), lb = b[sortTitle].toLowerCase();\r\n } else {\r\n la = Number(a[sortTitle]), lb = Number(b[sortTitle]);\r\n }\r\n\r\n if (sortType == \"asc\") {\r\n if (la < lb) return -1;\r\n if (la > lb) return 1;\r\n return 0;\r\n } else {\r\n if (la > lb) return -1;\r\n if (la < lb) return 1;\r\n return 0;\r\n }\r\n })\r\n return newArray\r\n },\r\n\r\n init: async x => {\r\n if ($(\".ticker-nav\").length === 0) return;\r\n veNavTickers.response = await veNavTickers.getData();\r\n\r\n veNavTickers.data = veNavTickers.response.TickerNavMetaData;\r\n veNavTickers.prices = veNavTickers.response.Prices;\r\n\r\n if (!veNavTickers.data || veNavTickers.data.length == 0) {\r\n console.info(\"Failed to load nav tickers: Did not receive response.\")\r\n $(\".ticker-nav .ticker-nav__tabs\").hide();\r\n return;\r\n }\r\n \r\n [\"linkTitle\", \"dropdownTitle\"].forEach(e => {\r\n veNavTickers[e] = $(veNavTickers.container).data(e.toLowerCase()) ?? veNavTickers[e]\r\n })\r\n\r\n var markup = veNavTickers.rnDropdown(veNavTickers.data, false);\r\n $(veNavTickers.container).html(markup);\r\n $(\"div.ticker-nav\").removeClass(\"d-none\");\r\n veNavTickers.rnTabContent(veNavTickers.data, veNavTickers.prices);\r\n }\r\n}\r\n\r\nasync function Bootstrap() {\r\n await veNavTickers.init();\r\n}\r\n\r\nwindow.addEventListener(\"DOMContentLoaded\", Bootstrap);\r\n\r\n"],"names":["convCSDate","dateString","replaceAll","date","Date","Number","year","Intl","DateTimeFormat","format","month","day","mkLastChange","amount","getSVG","toFixed","name","text","window","veNavTickers","initialised","data","container","dropdownTitle","dropdownList","displayValue","sortHeader","sortOrder","initialSortItem","columnSize","linkTitle","linkURL","APIURL","getData","async","$","get","err","console","log","rnDropdown","showDropdowns","arguments","length","undefined","markup","LatestNavText","forEach","item","PriceReturnsLink","PriceReturnsText","rnTabContent","pricesData","empty","TabPaneCssClass","TabId","mkTabInnerContent","append","mkTabFundContent","tab","attr","categoriedPricesData","result","priceItem","categoryItem","find","x","AsOfDate","Items","push","newCategory","FormattedAsOfDate","processPricesData","dataSet","SplitChildList","i","chunk","slice","reduce","prev","curr","mk","p","c","fund","FundUrl","Ticker","NavCurrent","NavDailyChange","mkChangedTab","rnSortData","sortTitle","sortType","sort","a","b","la","lb","isNaN","toLowerCase","init","response","TickerNavMetaData","prices","Prices","info","hide","e","html","removeClass","addEventListener"],"sourceRoot":""}