{"version":3,"sources":["HelpHubArticleListing.js"],"names":["THF","Interface","$","HelpArticleListing","options","extend","apiConfig","endPoint","pageSize","currentPage","selectors","parentElem","tileRow","oddRow","evenRow","btnLoadMore","articleTile","pagination","paginationProgress","currentlyShowing","totalResults","$oddRow","$parentElem","$evenRow","$btnLoadMore","$paginationProgress","$currentlyShowing","$totalResults","catId","data","selector","fetchPage","pageNumber","loadMoreButtonClicked","apiUrl","ajax","type","crossDomain","dataType","url","done","response","x","loaded","total","pageItems","topics","forEach","obj","tileMarkup","getHelpArticleTile","append","children","delay","fadeIn","removeClass","html","css","addClass","$topicTiles","length","each","this","find","click","e","window","dataLayer","push","event","pagePath","attr","loadedMessage","results","fail","jqXHR","textStatus","errorThrown","articleObj","isActive","articles","name","count","article","link","document","on","parent","hide","jQuery"],"mappings":"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","file":"help-hub.min.js","sourcesContent":["\r\nvar THF = THF || {};\r\nTHF.Interface = THF.Interface || {};\r\n(function ($, jQuery) {\r\n 'use strict';\r\n\r\n THF.Interface.HelpArticleListing = function (options) {\r\n\r\n var defaults = {\r\n\r\n apiConfig: {\r\n endPoint: '/api/v1/help-hub/topic-list/',\r\n pageSize:4,\r\n },\r\n //article-odd\r\n currentPage: 0,\r\n selectors: {\r\n //Module Parent\r\n parentElem: '.topic-article-list',\r\n tileRow: '.tile-container-row',\r\n oddRow: '.article-odd',\r\n evenRow: '.article-even',\r\n btnLoadMore: '.btn-load-more',\r\n articleTile: '.article-tile-featured',\r\n pagination: '.pagination',\r\n paginationProgress: '.pagination-process-bar .inner',\r\n currentlyShowing: '.pagination .currently-showing',\r\n totalResults: '.pagination .total-results'\r\n },\r\n\r\n };\r\n\r\n options = $.extend(true, {}, defaults, options);\r\n\r\n /**********************************\r\n // Declare DOM elements\r\n **********************************/\r\n var parentElem = $(options.selectors.parentElem);\r\n var $tileRow = $parentElem(options.selectors.tileRow);\r\n var $oddRow = $parentElem(options.selectors.oddRow);\r\n var $evenRow = $parentElem(options.selectors.evenRow);\r\n var $btnLoadMore = $parentElem(options.selectors.btnLoadMore);\r\n var $paginationProgress = $parentElem(options.selectors.paginationProgress);\r\n var $currentlyShowing = $parentElem(options.selectors.currentlyShowing);\r\n var $totalResults = $parentElem(options.selectors.totalResults);\r\n\r\n var catId = parentElem.data('keytopic-id');\r\n\r\n /**********************************\r\n // State Management\r\n **********************************/\r\n function setErrorState(bool) {\r\n\r\n if (bool === true) {\r\n parentElem.addClass('error-occurred');\r\n $btnLoadMore.html('Try again?');\r\n } else {\r\n parentElem.removeClass('error-occurred');\r\n $btnLoadMore.html('Show More');\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n function updatePagination(loaded, total) {\r\n var percentageLoaded = (loaded / total * 100) + '%';\r\n $paginationProgress.css('width', percentageLoaded);\r\n $currentlyShowing.html(loaded);\r\n $totalResults.html(total);\r\n\r\n if (loaded === total) {\r\n $btnLoadMore.addClass('disabled');\r\n }\r\n }\r\n\r\n /**********************************\r\n // Helper function to return a jQuery object, which is a child of 'parentElem'\r\n **********************************/\r\n function $parentElem(selector) {\r\n return $(options.selectors.parentElem + ' ' + selector);\r\n }\r\n\r\n /**********************************\r\n // API methods\r\n **********************************/\r\n function buildApiUrl(catId, pageSize, pageNumber) {\r\n // var root = window.location.protocol + '//' + window.location.hostname;\r\n var apiUrl = options.apiConfig.endPoint + catId + '/page?pageSize=' + pageSize + '&page=' + pageNumber;\r\n return apiUrl;\r\n }\r\n\r\n\r\n function fetchPage(pageNumber, loadMoreButtonClicked) {\r\n var apiUrl = buildApiUrl(catId, options.apiConfig.pageSize, pageNumber);\r\n $.ajax({\r\n type: 'GET',\r\n crossDomain: true,\r\n dataType: 'JSON',\r\n url: apiUrl,\r\n })\r\n .done(function (response) {\r\n\r\n appendPage(response.topics);\r\n setErrorState(false);\r\n updatePagination(response.loaded, response.total);\r\n initTopicArticleListTracking();\r\n\r\n //// Track only when 'Load More' button is clicked\r\n if (loadMoreButtonClicked) {\r\n initLoadMoreTracking(response.loaded, response.total);\r\n }\r\n\r\n })\r\n\r\n .fail(function (jqXHR, textStatus, errorThrown) {\r\n //setErrorState(true);\r\n });\r\n }\r\n /**********************************\r\n // Template Generators\r\n **********************************/\r\n function getHelpArticleTile(articleObj) {\r\n var isActive = articleObj.articles.length > 5 ? \"loadMore\" : \"inactive\";\r\n var articleTile =\r\n '
\\n' +\r\n '
\\n' +\r\n '\\n' +\r\n '

' + articleObj.name + '\\n' +\r\n '

';\r\n\r\n var count = 0;\r\n articleObj.articles.forEach((article) => {\r\n var addclass = '';\r\n if (count > 4) { addclass = \"inactive\" }\r\n articleTile += '
\\n' +\r\n '' + article.name + '\\n' +\r\n ' \\n' +\r\n '
\\n';\r\n count++;\r\n });\r\n\r\n if (articleObj.articles.length > 5) {\r\n articleTile += 'View All\\n';\r\n\r\n }\r\n\r\n $(document).on('click', \".loadMore\", function () {\r\n $(this).parent().parent().find('div').removeClass(\"inactive\");\r\n $(this).hide();\r\n });\r\n\r\n articleTile += '
\\n';\r\n return articleTile;\r\n }\r\n\r\n\r\n /**********************************\r\n // Rendering\r\n **********************************/\r\n function appendPage(pageItems) {\r\n var x = 0;\r\n pageItems.forEach(function (obj) {\r\n if (x % 2 != 0) {\r\n var tileMarkup = null;\r\n tileMarkup = getHelpArticleTile(obj);\r\n $evenRow\r\n .append(tileMarkup)\r\n .children()\r\n .delay(150)\r\n .fadeIn(350);\r\n }\r\n else {\r\n var tileMarkup = null;\r\n tileMarkup = getHelpArticleTile(obj);\r\n $oddRow\r\n .append(tileMarkup)\r\n .children()\r\n .delay(150)\r\n .fadeIn(350);\r\n }\r\n x++;\r\n });\r\n\r\n //Increase the page count\r\n options.currentPage++;\r\n }\r\n /**********************************\r\n // Event binding\r\n **********************************/\r\n function bindEvents() {\r\n $btnLoadMore.click(function (e) {\r\n fetchPage(options.currentPage + 1, true);\r\n\r\n });\r\n }\r\n\r\n /**********************************\r\n // Load More Button Tracking\r\n **********************************/\r\n function initLoadMoreTracking(loaded, total) {\r\n if (total > 0) {\r\n var loadedMessage = loaded + ' of ' + total + ' results';\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'showMore',\r\n 'results': loadedMessage\r\n });\r\n }\r\n }\r\n\r\n\r\n /**********************************\r\n // Tpoic Article List Tracking\r\n **********************************/\r\n function initTopicArticleListTracking() {\r\n\r\n // Find topic Tile \r\n var $topicTiles = $('.topic-article-list');\r\n if ($topicTiles.length > 0) {\r\n $topicTiles.each(function () {\r\n var current = $(this);\r\n /* Find Service Tile that has not binded to click event */\r\n var topicTileButton = current.find('a:not(.bound)');\r\n\r\n /* Add bound class once the click event is binded to it serviceTileButton */\r\n topicTileButton.addClass('bound').click(function (e) {\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'categoryMainCard',\r\n 'type': 'Topic',\r\n 'pagePath': $(this).attr('href')\r\n });\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n /**********************************\r\n // Simple constructor\r\n **********************************/\r\n function __construct() {\r\n\r\n // Init\r\n if (parentElem.length > 0) {\r\n fetchPage(1, false);\r\n bindEvents();\r\n }\r\n }\r\n\r\n __construct();\r\n\r\n\r\n //\r\n // Make some events accessible from global scope\r\n //\r\n return {\r\n\r\n };\r\n };\r\n\r\n\r\n\r\n})(jQuery, jQuery);\r\n\r\n\r\n\r\n//# sourceMappingURL=help-hub.min.js.map\r\n"]}