Advertisement
Serzol64

Untitled

Dec 28th, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 5.10 KB | Source Code | 0 0
  1. $(document).ready(function(){
  2.    var sq = [new FormData(), new FormData()],
  3.        sqr = [{}, {}],
  4.        readyDescription = ['', ''],
  5.        content = ['', ''],
  6.        eventCard = ['', ''],
  7.        dateFormat = [[], []];
  8.  
  9.     let responseHtml = ['', ''];
  10.  
  11.   $('#events-search > .content select').change(function(e,t){
  12.       $('.load-screen-services').removeClass('list-smart-close');
  13.       $('#events-body > .events-feed main .slider').html('');
  14.      
  15.       let currentField = $(this).attr('name'),
  16.           childrenField = [
  17.             $('#period > li input[data-pm=\'from\']').val(),
  18.             $('#period > li input[data-pm=\'to\']').val()
  19.           ],
  20.           queryReady = {},
  21.           periodReady = { period: {} };
  22.      
  23.       if(currentField === 'eventRegion'){ queryReady.region = $(this).val(); }
  24.       else if(currentField === 'eventType'){ queryReady.type = $(this).val(); }
  25.       else if(currentField === 'eventCategory'){ queryReady.tematic = $(this).val(); }
  26.      
  27.       if(childrenField[1]){ periodReady.period.from = childrenField[1]; }
  28.       if(childrenField[0]){ periodReady.period.to = childrenField[0]; }
  29.      
  30.       sqr[0].service = 'eventsFind';
  31.       sqr[0].query = { search: queryReady };
  32.      
  33.       if((childrenField[0] && childrenField[1]) || (childrenField[0] || childrenField[1])){ sqr[0].query.search = periodReady; }
  34.      
  35.       sq[0].append('svcQuery', JSON.stringify(sqr[0]));
  36.      
  37.       fetch('/events/api/get', { method: 'POST', body: sq[0] })
  38.         .then(response => response[index].json())
  39.         .then((data) => {
  40.             console.log(data);
  41.            
  42.             data.forEach((response, index) => {
  43.                     content[0] = response[index].location !== '' ? '<span data-type="location">' + response[index].location + '</span>' : '';
  44.                     readyDescription[0] = response[index].content.matchAll(/<p[^>]*>(([^>]|.)*?)<\/p>/ug);
  45.                     content[0] += '<span data-type="description">' + readyDescription[0][1][0].length > 234 ? mb_strimwidth(readyDescription[0][1][0], 0, 234, '...') : readyDescription[0][1][0] + '</span>';
  46.                    
  47.                     dateFormat[0] = [
  48.                         moment(response[index].date_from, 'd/m/Y'),
  49.                         moment(response[index].date_to, 'd/m/Y')
  50.                     ];
  51.                    
  52.                     eventCard[0] = '<span id="date">' + response[index].date_to ? dateFormat[0].join(' - ') : dateFormat[0][0] + '</span><img src="' + response[index].titleImage + '" alt="' + response[index].title + '" />';
  53.                     eventCard[0] += '<span id="title">' + response[index].title + '</span><p>' + content[0] + '</p><a href="/events/' + response[index].id + '">Show more</a>';
  54.            
  55.                     responseHtml[0] += '<li>' + eventCard[0] + '</li>';
  56.             });
  57.             $('#events-body > .events-feed main .slider').html(responseHtml[0]);
  58.             $('.load-screen-services').addClass('list-smart-close');
  59.         })
  60.         .catch(() => { $('.load-screen-services').addClass('list-smart-close'); });
  61.   });
  62.   $('#period > li input').change(function(e,t){
  63.       $('.load-screen-services').removeClass('list-smart-close');
  64.       $('#events-body > .events-feed main .slider').html('');
  65.      
  66.       let currentField = $(this).data('pm'),
  67.           childrenField = [
  68.             $('#events-search > .content select[name=\'eventRegion\']').val(),
  69.             $('#events-search > .content select[name=\'eventType\']').val(),
  70.             $('#events-search > .content select[name=\'eventCategory\']').val()
  71.           ],
  72.           queryReady = { period: {} };
  73.      
  74.      
  75.       if(currentField === 'from'){ queryReady.period['from'] = $(this).val(); }
  76.       else if(currentField === 'to'){ queryReady.period['to'] = $(this).val(); }
  77.      
  78.       if(childrenField[2]){ queryReady.tematic = childrenField[2]; }
  79.       if(childrenField[0]){ queryReady.region = childrenField[0]; }
  80.       if(childrenField[1]){ queryReady.type = childrenField[1]; }
  81.      
  82.       sqr[1].service = 'eventsFind';
  83.       sqr[1].query = { search: queryReady };
  84.      
  85.       sq[1].append('svcQuery', JSON.stringify(sqr[1]));
  86.      
  87.       fetch('/events/api/get', { method: 'POST', body: sq[1] })
  88.         .then(response => response[index].json())
  89.         .then((data) => {
  90.             console.log(data);
  91.            
  92.             data.forEach((response, index) => {
  93.                     content[1] = response[index].location !== '' ? '<span data-type="location">' + response[index].location + '</span>' : '';
  94.                     readyDescription[1] = response[index].content.matchAll(/<p[^>]*>(([^>]|.)*?)<\/p>/ug);
  95.                     content[1] += '<span data-type="description">' + readyDescription[1][1][0].length > 234 ? mb_strimwidth(readyDescription[1][1][0], 0, 234, '...') : readyDescription[1][1][0] + '</span>';
  96.                    
  97.                     dateFormat[1] = [
  98.                         moment(response[index].date_from, 'd/m/Y'),
  99.                         moment(response[index].date_to, 'd/m/Y')
  100.                     ];
  101.                    
  102.                     eventCard[1] += '<span id="date">' + response[index].date_to ? dateFormat[1].join(' - ') : dateFormat[1][0] + '</span><img src="' + response[index].titleImage + '" alt="' + response[index].title + '" />';
  103.                     eventCard[1] += '<span id="title">' + response[index].title + '</span><p>' + content[1] + '</p><a href="/events/' + response[index].id + '">Show more</a>';
  104.            
  105.                     responseHtml[1] += '<li>' + eventCard[1] + '</li>';
  106.             });
  107.             $('#events-body > .events-feed main .slider').html(responseHtml[1]);
  108.             $('.load-screen-services').addClass('list-smart-close');
  109.         })
  110.         .catch(() => { $('.load-screen-services').addClass('list-smart-close'); });
  111.   });
  112. });
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement