Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $(document).ready(function() {
- // Process any GET params set
- var filterableQueryString = false;
- var urlVars = getUrlVars();
- if (urlVars.length > 0) {
- if (urlVars.indexOf('country') > -1) {
- if ($('#country option[value="' + urlVars['country'] + '"]').length > 0) {
- $('#country').val(urlVars['country']);
- filterableQueryString = true;
- }
- }
- if (urlVars.indexOf('category') > -1) {
- if ($('#category option[value="' + urlVars['category'] + '"]').length > 0) {
- $('#category').val(urlVars['category']);
- filterableQueryString = true;
- }
- }
- if (urlVars.indexOf('search') > -1) {
- $('#search').val(urlVars['search']);
- filterableQueryString = true;
- }
- if (filterableQueryString) {
- applyFilterChange();
- }
- }
- $('#sort').on('change', function() {
- var sortBy = $(this).val();
- var itemsArray = [];
- $('.exhibitor-column').each(function() {
- itemsArray.push($(this));
- });
- itemsArray.sort(function(a, b) {
- if (sortBy == 'stand_number') {
- if (a.data('stand') === b.data('stand')) {
- return 0;
- } else if (a.data('stand') > b.data('stand')) {
- return 1;
- } else {
- return -1;
- }
- }
- if (sortBy == 'company_name') {
- if (a.data('company') === b.data('company')) {
- return 0;
- } else if (a.data('company') > b.data('company')) {
- return 1;
- } else {
- return -1;
- }
- }
- if (sortBy == 'country') {
- if(a.data('country') === b.data('country')) {
- return 0;
- } else if (a.data('country') > b.data('country')) {
- return 1;
- } else {
- return -1;
- }
- }
- });
- for (i = 0; i < itemsArray.length; ++i) {
- $('#sortable').append(itemsArray[i]);
- }
- applyFilterChange();
- });
- $('#country, #category').on('change', function() {
- applyFilterChange();
- });
- $('#search').on('search input', function() {
- applyFilterChange();
- });
- function applyFilterChange()
- {
- // Show all
- $('.exhibitor-column').show();
- $('#messages').text('').hide();
- // Limit by country
- var country = $('#country').val();
- if (country != 0) {
- $('.exhibitor-column').each(function() {
- var exhibCountry = $(this).data('country');
- if (country != exhibCountry) {
- $(this).hide();
- }
- });
- }
- var visibleExhibitors = recalculateVisibleExhibitors();
- // Limit by category
- var category = $('#category').val();
- if (category != 0) {
- $(visibleExhibitors).each(function() {
- var categories = $(this).data('categories').toString();
- var categoryArray = categories.split('|');
- if (categoryArray.indexOf(category) == -1) {
- $(this).hide();
- }
- });
- }
- visibleExhibitors = recalculateVisibleExhibitors();
- // Limit by free text search
- var search = $('#search').val().toLowerCase();
- if (search) {
- $(visibleExhibitors).each(function() {
- var textContent = $(this).text().toLowerCase();
- if (textContent.indexOf(search) === -1) {
- $(this).hide();
- }
- });
- }
- // Reset rows/columns
- $('.clearfix').remove();
- var columnCount = 0;
- $('.exhibitor-column').each(function() {
- if ($(this).is(':visible')) {
- columnCount++;
- if (columnCount % 3 == 0) {
- $(this).after('<div class="clearfix"></div>');
- }
- }
- });
- visibleExhibitors = recalculateVisibleExhibitors();
- // Display "no results" message on empty list
- if (!visibleExhibitors.length) {
- $('#messages').html('<em>There are no search results.</em>').show();
- }
- }
- function recalculateVisibleExhibitors()
- {
- return $('.exhibitor-column').filter(':visible');
- }
- function getUrlVars()
- {
- var vars = [], hash;
- var hashes = window.location.href.slice(
- window.location.href.indexOf('?') + 1
- ).split('&');
- for (var i = 0; i < hashes.length; i++) {
- hash = hashes[i].split('=');
- vars.push(hash[0]);
- vars[hash[0]] = decodeURIComponent(hash[1]);
- }
- return vars;
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement