{"version":3,"sources":["app/insightlisting.js"],"names":["define","$","take","page","type","cid","keyword","isLoadMore","currentIndex","totalInsightsFound","$resultListArea","results","BindRemoveCriteriaClick","unbind","click","this","hasClass","html","remove","val","History","replaceState","removeQueryString","getState","url","encodeURIComponent","GetSearchResults","show","ajax","data","JSON","stringify","categoryId","topicId","tid","startPage","keyWord","skip","contentType","dataType","success","response","parse","d","Insights","TotalInsightsFound","text","hide","LoadListItems","error","xhr","ajaxOptions","thrownError","index","ajaxUrl","done","p","append","fadeIn","updateHistory","stateObj","dataGuid","window","location","href","toString","indexOf","pushState","document","title","currURL","keywordValue","getParameterByName","replace","newQueryString","name","RegExp","exec","search","decodeURIComponent","queryStringBefore","host","currQueryString","queryStringAfter","qmIDX","startIDX","endIDX","length","substring","charAt","parseInt","attr","keypress","e","which","on"],"mappings":"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","file":"insightlisting.js","sourcesContent":["define(['jquery', 'jquery.history'], function ($) {\r\n    var take = 0;\r\n    var page = 1;\r\n    var type = '';\r\n    var cid = '';\r\n    var keyword = '';\r\n    var isLoadMore = false;\r\n    var currentIndex = 1;\r\n    var totalInsightsFound = 0;\r\n    var $resultListArea = $(\".js-listing-module .articles-list\");\r\n    var results = [];\r\n\r\n    // execute this once the DOMContentLoaded has fired (dom ready)\r\n    $(function (context, targetEl, facadeEl) {\r\n        $('.js-view-more').hide();\r\n        take = parseInt($(\".js-listing-module\").attr(\"data-take\"));\r\n\r\n        type = getParameterByName('type');\r\n        if (type == '') {\r\n            type = $(\".js-listing-module\").attr(\"data-type\");\r\n        }\r\n\r\n        //only need to update the cid history for back button on category pages\r\n        cid = getParameterByName('cid');\r\n        if (cid != '') { updateHistory({}, \"cid\", cid); }\r\n        if (cid == '') {\r\n            cid = $(\".js-listing-module\").attr(\"data-cid\");\r\n        }\r\n\r\n        tid = getParameterByName('tid');\r\n        if (tid == '') {\r\n            tid = $(\".js-listing-module\").attr(\"data-tid\");\r\n        }\r\n\r\n        keyword = getParameterByName('keyword');\r\n        if (keyword && keyword != '') {\r\n            $('.js-listing-module .js-keyword').val(keyword);\r\n            $(\".form-results__criteria\").append('<span role=\"button\" class=\"btn btn-grey form-results__keyword keyword-field\">' + keyword + '</span>');\r\n            BindRemoveCriteriaClick();\r\n            updateHistory({}, \"keyword\", keyword);\r\n        }\r\n\r\n        GetSearchResults();\r\n    }());\r\n\r\n    function BindRemoveCriteriaClick() {\r\n        $(\".form-results__keyword\").unbind();\r\n        $(\".form-results__keyword\").click(function () {\r\n            if ($(this).hasClass(\"keyword-field\")) {\r\n                resetSearch();\r\n            }\r\n        });\r\n    }\r\n\r\n    function escapeHtml(str) {\r\n        var div = document.createElement('div');\r\n        div.appendChild(document.createTextNode(str));\r\n        return div.innerHTML;\r\n    }\r\n\r\n    function resetSearch() {\r\n        $resultListArea.html('');\r\n        $(\".form-results__keyword.keyword-field\").remove();\r\n        $('.js-listing-module .js-keyword').val('');\r\n        History.replaceState({}, \"\", removeQueryString(History.getState().url, \"keyword\", encodeURIComponent(keyword)));\r\n        keyword = '';\r\n        page = 1;\r\n        GetSearchResults();\r\n    }\r\n\r\n    $(\".js-listing-module .js-keyword\").keypress(function (e) {\r\n        if (e.which == 13) {\r\n            page = 1;\r\n            isLoadMore = false;\r\n            $(\".form-results__keyword.keyword-field\").remove();\r\n            keyword = $(this).val();\r\n            if (keyword != \"\") {\r\n                $(\".form-results__criteria\").append('<span role=\"button\" class=\"btn btn-grey form-results__keyword keyword-field\">' + keyword + '</span>');\r\n                BindRemoveCriteriaClick();\r\n            }\r\n            updateHistory({}, \"keyword\", keyword);\r\n            GetSearchResults();\r\n            return false;\r\n        }\r\n    });\r\n\r\n    $(\".js-listing-module .js-keyword-btn\").on('click', function (e) {\r\n        keyword = $('.js-listing-module .js-keyword').val();\r\n        if (keyword) {\r\n            page = 1;\r\n            isLoadMore = false;\r\n            $(\".form-results__keyword.keyword-field\").remove();\r\n            $(\".form-results__criteria\").append('<span role=\"button\" class=\"btn btn-grey form-results__keyword keyword-field\">' + keyword + '</span>');\r\n            updateHistory({}, \"keyword\", keyword);\r\n            GetSearchResults();\r\n        }\r\n    });\r\n\r\n    $('.btn.readmore-trigger').on('click', function () {\r\n        isLoadMore = true;        \r\n        GetPaginatedSearchResults(currentIndex);\r\n    });\r\n\r\n    function GetSearchResults() {\r\n        $(\".loading-image\").show();\r\n        $.ajax({\r\n            type: \"POST\",\r\n            url: \"/Layouts/WebUserControls/Main/Insights/InsightSearchService.asmx/GetListingResults\",\r\n            data: JSON.stringify({ type: type, categoryId: cid, topicId: tid, startPage: page, keyWord: keyword, skip: 0, take: take }),\r\n            contentType: \"application/json; charset=utf-8\",\r\n            dataType: \"json\",\r\n            success: function (response) {\r\n                results = JSON.parse(response.d).Insights;\r\n                currentIndex = 1;\r\n                totalInsightsFound = JSON.parse(response.d).TotalInsightsFound;\r\n\r\n                $(\".filtering__results\").text(\"Result(s): \" + totalInsightsFound);\r\n\r\n                if (totalInsightsFound == 0) {\r\n                    $(\".loading-image\").hide();\r\n                }\r\n\r\n                //clear previous search results if load more is false\r\n                if (!isLoadMore) {\r\n                    $resultListArea.html('');\r\n                }\r\n\r\n                LoadListItems(currentIndex)\r\n\r\n                if (keyword !== '') {\r\n                    $('.js-form-results').show();\r\n                } else {\r\n                    $('.js-form-results').hide();\r\n                }\r\n\r\n                $resultListArea.show();\r\n\r\n                $(\".filtering.filtering--result-stat\").show();\r\n            },\r\n            error: function (xhr, ajaxOptions, thrownError) {\r\n\r\n            }\r\n        });\r\n    }\r\n\r\n    function GetPaginatedSearchResults() {\r\n        $.ajax({\r\n            type: \"POST\",\r\n            url: \"/Layouts/WebUserControls/Main/Insights/InsightSearchService.asmx/GetListingResults\",\r\n            data: JSON.stringify({ type: type, categoryId: cid, topicId: tid, startPage: page, keyWord: keyword, skip: currentIndex - 1, take: take }),\r\n            contentType: \"application/json; charset=utf-8\",\r\n            dataType: \"json\",\r\n            success: function (response) {\r\n                results = JSON.parse(response.d).Insights;\r\n                currentIndex = currentIndex;\r\n                totalInsightsFound = JSON.parse(response.d).TotalInsightsFound;\r\n\r\n                LoadListItems(currentIndex)\r\n\r\n                $(\".filtering.filtering--result-stat\").show();\r\n            },\r\n            error: function (xhr, ajaxOptions, thrownError) {\r\n\r\n            }\r\n        });\r\n    }\r\n\r\n    function LoadListItems(index) {\r\n        if (index > totalInsightsFound || index >= (currentIndex + take)) {\r\n            if (totalInsightsFound <= (page * take)) {\r\n                $('.js-view-more').hide();\r\n            } else {\r\n                $('.js-view-more').show();\r\n            }\r\n            $(\".loading-image\").hide();\r\n\r\n            currentIndex = index;\r\n            page++;\r\n            return;\r\n        }\r\n\r\n        var ajaxUrl = \"/Layouts/WebUserControls/Main/Insights/AjaxLoadListItem.aspx?guid=\" + results[(page > 1 ? (index - 1) - (take * (page - 1)) : index - 1)];\r\n        $.ajax({ url: ajaxUrl })\r\n            .done(function (p) {\r\n                $resultListArea.append(p);\r\n                $resultListArea.fadeIn();\r\n                LoadListItems(index + 1)\r\n                $(\".loading-image\").hide();\r\n            });\r\n    }\r\n\r\n    //constructs url with query parameters\r\n    function updateHistory(stateObj, dataType, dataGuid) {\r\n        if (window.location.href.toString().indexOf(\"?\") == -1) {\r\n            History.pushState({}, document.title, \"?\" + dataType + \"=\" + encodeURIComponent(dataGuid));\r\n        } else if (dataType == \"keyword\" && window.location.href.toString().indexOf(\"keyword\") > -1) {\r\n            if (dataGuid == \"\") {\r\n                var currURL = History.getState().url;\r\n                var keywordValue = getParameterByName(\"keyword\");\r\n                History.replaceState({}, document.title, removeQueryString(currURL, \"keyword\", encodeURIComponent(keywordValue)));\r\n            } else {\r\n                var currURL = History.getState().url;\r\n\r\n                //get decoded keyword value\r\n                var keywordValue = getParameterByName(\"keyword\");\r\n                var updatedKeywordQuery = History.getState().url.replace(\"keyword=\" + encodeURIComponent(keywordValue), \"keyword=\" + encodeURIComponent(dataGuid));\r\n                var newQueryString = removeQueryString(currURL, \"keyword\", encodeURIComponent(keywordValue));\r\n\r\n                if (window.location.href.toString().indexOf(\"?keyword\") > -1) {\r\n                    History.replaceState({}, document.title, newQueryString + \"?keyword=\" + encodeURIComponent(dataGuid));\r\n                } else {\r\n                    History.replaceState({}, document.title, newQueryString + \"&keyword=\" + encodeURIComponent(dataGuid));\r\n                }\r\n            }\r\n        } else if (window.location.href.toString().indexOf(\"?\") > -1 && window.location.href.toString().indexOf(dataGuid) == -1) {\r\n            History.replaceState({}, document.title, History.getState().url += \"&\" + dataType + \"=\" + encodeURIComponent(dataGuid));\r\n        }\r\n    }\r\n\r\n    //finds current query parameter given a type to search for\r\n    //for example, will return the keyword the user is searching for by parsing url for 'keyword'\r\n    function getParameterByName(name) {\r\n        name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n        var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n            results = regex.exec(location.search);\r\n        return results == null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n    }\r\n\r\n    function removeQueryString(currURL, dataType, dataGuid) {\r\n        var currQueryString = dataType + \"=\" + dataGuid;\r\n        var queryStringBefore = \"\";\r\n        var queryStringAfter = \"\";\r\n        var host = \"\";\r\n        var newQueryString = \"\";\r\n\r\n        //index of question mark\r\n        var qmIDX = currURL.indexOf(\"?\");\r\n\r\n        //subtract one to include ? or & char\r\n        var startIDX = currURL.indexOf(currQueryString) - 1;\r\n\r\n        //error catching\r\n        //if ever a  query parameter is removed from the url, but not .form-results__criteria, then return nothing\r\n        if (startIDX < 0) {\r\n            return \"\"\r\n        }\r\n\r\n        var endIDX = currQueryString.length + startIDX + 1;\r\n\r\n        queryStringBefore = currURL.substring(qmIDX, startIDX);\r\n        host = currURL.substring(0, qmIDX);\r\n\r\n        if (endIDX == currURL.length) {\r\n            queryStringAfter = \"\";\r\n        } else {\r\n            queryStringAfter = currURL.substring(endIDX, currURL.length);\r\n        }\r\n\r\n        if (queryStringBefore == \"\" && queryStringAfter == \"\") {\r\n            return host;\r\n        } else {\r\n            newQueryString = queryStringBefore + queryStringAfter;\r\n            if (newQueryString.charAt(0) == \"&\") {\r\n                newQueryString = newQueryString.replace(\"&\", \"?\");\r\n            }\r\n            return newQueryString;\r\n        }\r\n    }\r\n});"]}