{"version":3,"sources":["newsFinder.js"],"names":["BDM","newsFinder","results","reset","programData","settings","dataurl","shownumber","$el","finder","$","filters","mobileopen","mobileclose","filterwindow","template","loadmore","tabs","select","searchField","searchButton","notfound","loading","resultsLoaded","loadData","queryObject","type","val","topic","newsType","searchText","hasClass","addClass","removeClass","ajax","url","data","dataType","success","news","showResults","displayResults","find","remove","length","show","splice","hide","slice","fragment","document","createDocumentFragment","forEach","result","path","window","location","pathname","$temp","clone","text","title","subtitle","substr","lastIndexOf","attr","href","image","src","alt","icon","append","off","on","event","preventDefault","this","debounce","resizeHandler","placeholder","first","outerHeight","shortestImage","Math","max","height","width","equalheight","css","not","each","innerHeight","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","setTimeout","apply","init","offset","top","change","display","focus","keydown","keyCode","resize"],"mappings":"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","file":"newsFinder.min.js","sourcesContent":["/*globals $*/\r\n(function (BDM, newsFinder) {\r\n 'use strict';\r\n\r\n var settings = {\r\n dataurl: \"news_finder.json\",\r\n shownumber: 12 /// Number of results to reveal initially and after load more\r\n },\r\n\r\n $el = { //stored elements\r\n finder: $('.news-finder'),\r\n filters: $('.degree-finder__filter'),\r\n mobileopen: $('.degree-finder__mobilebutton'),\r\n mobileclose: $('.degree-finder__close'),\r\n filterwindow: $('.degree-finder__filters'),\r\n results: $('.degree-finder__results'),\r\n template: $('.degree-finder__template .card'),\r\n loadmore: $('.degree-finder__loadmore'),\r\n tabs: $('.degree-finder__filter .nav > li'),\r\n select: $('.news-finder select'),\r\n searchField: $('#news-search'),\r\n searchButton: $(' .btn'),\r\n notfound: $('.news-finder .degree-finder__notfound'),\r\n loading: $('.icon__loading')\r\n },\r\n filters = [],\r\n results,\r\n reset,\r\n resultsLoaded = false,\r\n scrollPos = null,\r\n programData,\r\n searchData = [],\r\n useSearchData = false;\r\n\r\n /**\r\n * Helper Methods\r\n **/\r\n\r\n function loadData() {\r\n var queryObject = {\r\n type: $('#type').val() || 'all',\r\n topic: $('#topic').val() || 'all',\r\n newsType: $('#newsType').val(),\r\n searchText: $el.searchField.val()\r\n };\r\n if ($el.results.hasClass('fadein')) {\r\n $el.results.addClass('fadeout').removeClass('fadein');\r\n }\r\n $el.loading.addClass('fadein').removeClass('fadeout');\r\n $.ajax({\r\n type: 'POST',\r\n url: settings.dataurl,\r\n data: queryObject,\r\n dataType: 'json',\r\n success: function (data) {\r\n if (!programData) {\r\n programData = data.news;\r\n }\r\n results = data.news;\r\n reset = true;\r\n resultsLoaded = false;\r\n showResults();\r\n }\r\n });\r\n }\r\n\r\n function showResults() {\r\n var displayResults = [];\r\n if (resultsLoaded === false) {\r\n resultsLoaded = true;\r\n if (reset) {\r\n $el.results.find('.card').remove();\r\n }\r\n reset = false;\r\n if (results.length) {\r\n if (results.length > settings.shownumber) {\r\n $el.loadmore.show();\r\n displayResults = results.splice(0, settings.shownumber);\r\n } else {\r\n $el.loadmore.hide();\r\n displayResults = results;\r\n }\r\n $el.notfound.removeClass('fadein');\r\n } else {\r\n $el.loadmore.hide();\r\n if (programData) {\r\n displayResults = programData.slice(0, 3);\r\n } else {\r\n displayResults = [];\r\n }\r\n $el.notfound.addClass('fadein');\r\n }\r\n\r\n var fragment = $(document.createDocumentFragment());\r\n displayResults.forEach(function (result) {\r\n console.log('holaaaa', result);\r\n var path = window.location.pathname;\r\n var $temp = $el.template.clone();\r\n $temp.find('.card-body .card-title').text(result.title);\r\n $temp.find('.card-body .card-subtitle').text(result.subtitle);\r\n\r\n if (path.substr(path.lastIndexOf('/') + 0) === \"/news\") {\r\n $temp.find('.card-subtitle').text(result.type);\r\n }\r\n\r\n $temp.find('a').attr('href', result.href);\r\n\r\n if (result.image) {\r\n $temp.find('.card-img-top').attr('src', result.image.src);\r\n $temp.find('.card-img-top').attr('alt', result.image.alt);\r\n } else {\r\n $temp.find('.card-img-top').addClass('placeholderb');\r\n $temp.find('.card-img-top').attr('src', '/images/UMassGlobal-placeholder.png');\r\n $temp.find('.card-img-top').attr('alt', 'Placeholder image');\r\n \r\n }\r\n if (result.icon) {\r\n $temp.find('.icon').addClass(result.icon);\r\n } else {\r\n $temp.find('.icon').remove();\r\n }\r\n fragment.append($temp);\r\n });\r\n\r\n $el.results.find(\".grid-results\").append(fragment);\r\n bindClick();\r\n\r\n $el.results.removeClass('fadeout').addClass('fadein');\r\n $el.loading.removeClass('fadein').addClass('fadeout');\r\n\r\n debounce(resizeHandler, 200)();\r\n }\r\n }\r\n\r\n function bindClick() {\r\n $('.degree-finder__result').off(\"click\").on(\"click\", function (event) {\r\n event.preventDefault();\r\n window.location.href = $(this).attr('data-href');\r\n });\r\n }\r\n\r\n function resizeHandler() {\r\n var placeholder = $el.results.find('.placeholder').first().outerHeight(),\r\n shortestImage = Math.max(placeholder, $el.results.find('img').first().height());\r\n if ($el.results.find('.card-body').length && $(window).width() > 767) {\r\n equalheight($el.results.find('.card-body'));\r\n } else {\r\n $el.results.find('.card-body').css('height', '');\r\n }\r\n $el.results.find('.card-img-top').not('.loaded').each(function () {\r\n $(this).addClass('loaded');\r\n if ($(this).find('img')) {\r\n $(this).find('img').on('load', function () {\r\n debounce(resizeHandler, 200)();\r\n $(this).off('load');\r\n });\r\n } else if (shortestImage > $(this).innerHeight()) {\r\n shortestImage = Math.max(placeholder, $(this).innerHeight());\r\n }\r\n });\r\n $el.results.find('.card-img-top').innerHeight(shortestImage);\r\n }\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n /// Setup Events\r\n function bindEvents() {\r\n $el.loadmore.on(\"click\", function (event) {\r\n event.preventDefault();\r\n resultsLoaded = false;\r\n showResults();\r\n });\r\n\r\n $el.tabs.on(\"click\", function (event) {\r\n event.preventDefault();\r\n loadData();\r\n });\r\n\r\n $el.select.change(function (event) {\r\n event.preventDefault();\r\n loadData();\r\n });\r\n\r\n $el.mobileopen.on(\"click\", function (event) {\r\n event.preventDefault();\r\n $el.filterwindow.addClass('open');\r\n $el.mobileopen.hide();\r\n });\r\n\r\n $el.mobileclose.on(\"click\", function (event) {\r\n event.preventDefault();\r\n $el.filterwindow.removeClass('open');\r\n $el.mobileopen.css({ display: '' }).focus();\r\n });\r\n\r\n $el.results.on('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () {\r\n if (resultsLoaded === false) {\r\n showResults();\r\n }\r\n });\r\n\r\n $el.searchButton.on(\"click\", function (event) {\r\n event.preventDefault();\r\n loadData();\r\n });\r\n\r\n $el.searchField.keydown(function (event) {\r\n if (event.keyCode === 13) {\r\n event.preventDefault();\r\n loadData();\r\n }\r\n });\r\n\r\n $(window).resize(debounce(resizeHandler, 200));\r\n }\r\n\r\n /**\r\n * Public Methods\r\n **/\r\n\r\n newsFinder.init = function () {\r\n if ($el.finder.length) {\r\n settings.dataurl = $el.finder.attr('data-programsurl') || settings.dataurl;\r\n scrollPos = $el.finder.offset().top;\r\n loadData();\r\n bindEvents();\r\n }\r\n };\r\n})(window.BDM = window.BDM || {}, window.BDM.newsFinder = window.BDM.newsFinder || {});\r\n\r\n//load when ready\r\n$(function () {\r\n window.BDM.newsFinder.init();\r\n});\r\n"]}