{"version":3,"sources":["_310-grid-with-filter.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","global","factory","document","w","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","rhtmlSuffix","jQuery","selector","context","fn","init","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem"],"mappings":"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","file":"310-grid-with-filter.min.js","sourcesContent":["var $ = require('jquery');\r\n\r\n$(function () {\r\n    $('[data-new-grid-table]').each(function () {\r\n        var currentPage,\r\n            servicesFilters,\r\n            industriesFilters,\r\n            publicationsFilters,\r\n            insightsSubjectsFilters,\r\n            itemTypesFilters,\r\n            locationsFilters,\r\n            authorCategorizationFilters,\r\n            makeRequest,\r\n            getFilterValues,\r\n            dateDesc,\r\n            toggleClearLinkVisibility,\r\n            clearLink,\r\n            scrollToTop,\r\n            uncheckAllFilterCheckboxes,\r\n            clearAllFilters,\r\n            filterDropdownCheckboxes;\r\n\r\n        // settings\r\n        var dateDesc = true;\r\n        var apiUrlGetGrid = '/api/sitecore/FilteredGrid/GetGrid';\r\n        // end settings\r\n        var $this = $(this);\r\n        var FilterCheckboxCollection = function () {\r\n            return {\r\n                services: null,\r\n                industries: null,\r\n                publications: null,\r\n                insightsSubjects: null,\r\n                itemTypes: null,\r\n                locations: null,\r\n                authorCategorization: null\r\n            };\r\n        }\r\n        var $this = $(this);\r\n\r\n        filterDropdownCheckboxes = new FilterCheckboxCollection();\r\n        filterDropdownCheckboxes.services = $this.find('[data-services]');\r\n        filterDropdownCheckboxes.industries = $this.find('[data-industries]');\r\n        filterDropdownCheckboxes.publications = $this.find('[data-publications]');\r\n        filterDropdownCheckboxes.insightsSubjects = $this.find('[data-insightssubjects]');\r\n        filterDropdownCheckboxes.itemTypes = $this.find('[data-itemtypes]');\r\n        filterDropdownCheckboxes.locations = $this.find('[data-locations]');\r\n        filterDropdownCheckboxes.authorCategorization = $this.find('[data-authorcategorization]');\r\n\r\n        var gridContainer = $this.find('[data-filtered-grid]');\r\n        var datasourceId = $this.attr('data-context-item');\r\n        var language = $this.attr('data-language');\r\n        var isNormal = $this.attr('data-is-normal');\r\n\r\n        clearLink = $this.find('[data-clear-filters]');\r\n\r\n        currentPage = $this.find('.pagination .current').attr('data-page');\r\n\r\n        var init = function () {\r\n            servicesFilters = getFilterValues(filterDropdownCheckboxes.services);\r\n            industriesFilters = getFilterValues(filterDropdownCheckboxes.industries);\r\n            publicationsFilters = getFilterValues(filterDropdownCheckboxes.publications);\r\n            insightsSubjectsFilters = getFilterValues(filterDropdownCheckboxes.insightsSubjects);\r\n            itemTypesFilters = getFilterValues(filterDropdownCheckboxes.itemTypes);\r\n            locationsFilters = getFilterValues(filterDropdownCheckboxes.locations);\r\n            authorCategorizationFilters = getFilterValues(filterDropdownCheckboxes.authorCategorization);\r\n\r\n            // Firefox preserves checkbox state on reload.\r\n            uncheckAllFilterCheckboxes();\r\n            clearAllFilters();\r\n\r\n            clearLink.hide();\r\n        }\r\n\r\n        uncheckAllFilterCheckboxes = function () {\r\n            $this.find('input[type=checkbox]:checked').each(function () {\r\n                var $this = $(this);\r\n                $this.removeAttr('checked');\r\n                $this.prop('checked', false);\r\n            });\r\n        }\r\n        clearAllFilters = function () {\r\n            servicesFilters = [];\r\n            industriesFilters = [];\r\n            publicationsFilters = [];\r\n            insightsSubjectsFilters = [];\r\n            itemTypesFilters = [];\r\n            locationsFilters = [];\r\n            authorCategorizationFilters = [];\r\n        }\r\n\r\n        scrollToTop = function () {\r\n            $('html, body').animate({\r\n                scrollTop: $this.find('.grid-table-scrollTop').offset().top - 100\r\n            }, 500);\r\n        };\r\n\r\n        makeRequest = function (targetServicesFilters,\r\n            targetIndustriesFilters,\r\n            targetPublicationsFilters,\r\n            targetInsightsSubjectsFilters,\r\n            targetItemTypesFilters,\r\n            targetLocationsFilters,\r\n            targetAuthorCategorizationFilters,\r\n            targetPage, dateSortDesc) {\r\n            var loadingElement = $this.find('.loading');\r\n            loadingElement.addClass('show');\r\n            $.ajax({\r\n                type: 'GET',\r\n                url: apiUrlGetGrid,\r\n                traditional: true,\r\n                data: {\r\n                    id: datasourceId,\r\n                    languageName: language,\r\n                    servicesFilters: targetServicesFilters,\r\n                    industriesFilters: targetIndustriesFilters,\r\n                    publicationsFilters: targetPublicationsFilters,\r\n                    insightsSubjectsFilters: targetInsightsSubjectsFilters,\r\n                    itemTypesFilters: targetItemTypesFilters,\r\n                    locationsFilters: targetLocationsFilters,\r\n                    authorCategorizationFilters: targetAuthorCategorizationFilters,\r\n                    page: targetPage,\r\n                    isDateDesc: dateSortDesc,\r\n                    enforceNormal: isNormal\r\n                },\r\n                success: function (data) {\r\n                    gridContainer.empty();\r\n                    gridContainer.html(data);\r\n\r\n                    servicesFilters = targetServicesFilters;\r\n                    industriesFilters = targetIndustriesFilters;\r\n                    publicationsFilters = targetPublicationsFilters;\r\n                    insightsSubjectsFilters = targetInsightsSubjectsFilters;\r\n                    itemTypesFilters = targetItemTypesFilters;\r\n                    locationsFilters = targetLocationsFilters;\r\n                    authorCategorizationFilters = targetAuthorCategorizationFilters;\r\n\r\n                    currentPage = targetPage;\r\n                    dateDesc = dateSortDesc;\r\n                    scrollToTop();\r\n                    loadingElement.removeClass('show');\r\n                },\r\n                error: function () {\r\n                },\r\n                complete: function () {\r\n                }\r\n            });\r\n        };\r\n\r\n        gridContainer.on('click', '.pagination', function (e) {\r\n            const targetPage = $(e.target).closest('[data-page]').data('page');\r\n            if (Number.isInteger(targetPage) && targetPage !== currentPage) {\r\n                //Enable when ready to use loading icon\r\n                makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, targetPage, dateDesc);\r\n            }\r\n        });\r\n\r\n        getFilterValues = function (element) {\r\n            const checkboxes = element.find('input[type=\"checkbox\"]');\r\n            const filteredCheckboxes = checkboxes.filter(':checked');\r\n\r\n            var ids = [];\r\n            filteredCheckboxes.each(function () {\r\n                ids.push($(this).attr('data-id'));\r\n            });\r\n\r\n            return ids;\r\n        };\r\n\r\n\r\n        toggleClearLinkVisibility = function () {\r\n            if (!!getFilterValues(filterDropdownCheckboxes.services).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.industries).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.publications).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.insightsSubjects).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.itemTypes).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.locations).length ||\r\n                !!getFilterValues(filterDropdownCheckboxes.authorCategorization).length) {\r\n                clearLink.show();\r\n            } else {\r\n                clearLink.hide();\r\n            }\r\n        };\r\n\r\n        filterDropdownCheckboxes.services.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(getFilterValues(filterDropdownCheckboxes.services), industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.industries.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, getFilterValues(filterDropdownCheckboxes.industries), publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.publications.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, industriesFilters, getFilterValues(filterDropdownCheckboxes.publications), insightsSubjectsFilters, itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.insightsSubjects.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, industriesFilters, publicationsFilters, getFilterValues(filterDropdownCheckboxes.insightsSubjects), itemTypesFilters, locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.itemTypes.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, getFilterValues(filterDropdownCheckboxes.itemTypes), locationsFilters, authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.locations.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, getFilterValues(filterDropdownCheckboxes.locations), authorCategorizationFilters, 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        filterDropdownCheckboxes.authorCategorization.on('click', 'input[type=\"checkbox\"]', function () {\r\n            makeRequest(servicesFilters, industriesFilters, publicationsFilters, insightsSubjectsFilters, itemTypesFilters, locationsFilters, getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        clearLink.on('click', function () {\r\n            uncheckAllFilterCheckboxes();\r\n            makeRequest(getFilterValues(filterDropdownCheckboxes.services), getFilterValues(filterDropdownCheckboxes.industries), getFilterValues(filterDropdownCheckboxes.publications), getFilterValues(filterDropdownCheckboxes.insightsSubjects), getFilterValues(filterDropdownCheckboxes.itemTypes), getFilterValues(filterDropdownCheckboxes.locations), getFilterValues(filterDropdownCheckboxes.authorCategorization), 0, dateDesc);\r\n            toggleClearLinkVisibility();\r\n        });\r\n\r\n        init();\r\n    });\r\n});"]}