nntndfrk

Untitled

Oct 12th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (() => {
  2.     const firstGroup = document.querySelector('.first-group'),
  3.         secondGroup = document.querySelector('.second-group'),
  4.         thirdGroup = document.querySelector('.third-group'),
  5.         firstBlock = document.querySelector('#first-line'),
  6.         secondBlock = document.querySelector('#second-line'),
  7.         thirdBlock = document.querySelector('#third-line'),
  8.         btn = document.getElementById('play'),
  9.         typeSelector = document.getElementById('type-selector'),
  10.         lineSelector = document.getElementById('line-selector');
  11.  
  12.     const replaceItemTemplate = '<div class="col-sm-3 col-xs-6">\
  13.                                <img src="$url" alt="$name" class="img-thumbnail">\
  14.                                <div class="info-wrapper">\
  15.                                <div class="text-muted">$name</div>\
  16.                                <div class="text-muted top-padding">$description</div>\
  17.                                <div class="text-muted">$date</div>\
  18.                                </div>\
  19.                                </div>';
  20.  
  21.     function getParams() {
  22.         return {
  23.             galleryType: typeSelector.value,
  24.             elementCount: lineSelector.value
  25.         }
  26.     }
  27.  
  28.     function buildGalleryReplace(count) {
  29.         let dataCopy = [...data];
  30.         if (count === '1') {
  31.             dataCopy = dataCopy.splice(0, 3)
  32.         } else if (count === '2') {
  33.             dataCopy = dataCopy.splice(0, 6)
  34.         }
  35.         let outHtml = '';
  36.         dataCopy.forEach(item => {
  37.             outHtml += replaceItemTemplate
  38.                 .replace(/\$name/gi, item.name)
  39.                 .replace("$url", fixUrl(item.url))
  40.                 .replace("$description", item.description)
  41.                 .replace("$date", item.date)
  42.         });
  43.  
  44.         firstBlock.innerHTML = outHtml;
  45.     }
  46.  
  47.     function buildGalleryTemplate(count) {
  48.         let dataCopy = [...data];
  49.         if (count === '1') {
  50.             dataCopy = dataCopy.splice(0, 3)
  51.         } else if (count === '2') {
  52.             dataCopy = dataCopy.splice(0, 6)
  53.         }
  54.         let outHtml = '';
  55.  
  56.         dataCopy.forEach(item => {
  57.             outHtml += `<div class="col-sm-3 col-xs-6">\
  58.                             <img src="${fixUrl(item.url)}" alt="${item.name}" class="img-thumbnail">\
  59.                             <div class="info-wrapper">\
  60.                                 <div class="text-muted">${item.name}</div>\
  61.                                 <div class="text-muted top-padding">${item.description}</div>\
  62.                                 <div class="text-muted">${item.date}</div>\
  63.                             </div>\
  64.                         </div>`
  65.         });
  66.         secondBlock.innerHTML = outHtml;
  67.  
  68.     }
  69.  
  70.     function buildGalleryCreate(count) {
  71.         let dataCopy = [...data];
  72.         if (count === '1') {
  73.             dataCopy = dataCopy.splice(0, 3)
  74.         } else if (count === '2') {
  75.             dataCopy = dataCopy.splice(0, 6)
  76.         }
  77.         // let outHtml = ''/;
  78.  
  79.         dataCopy.forEach(item => {
  80.             wrapper = document.createElement('div');
  81.             wrapper.classList.add('col-sm-3', ['col-xs-6']);
  82.  
  83.             let img = document.createElement('img');
  84.             img.setAttribute('src', fixUrl(item.url));
  85.             img.setAttribute('alt', item.name);
  86.             img.classList.add('img-thumbnail');
  87.  
  88.             let infoWrapper = document.createElement('div');
  89.             infoWrapper.classList.add('info-wrapper');
  90.  
  91.             let itemName = document.createElement('div');
  92.             itemName.classList.add('text-muted');
  93.             let itemDescription = document.createElement('div');
  94.             itemDescription.classList.add('text-muted', 'top-padding');
  95.             let itemDate = document.createElement('div');
  96.             itemDate.classList.add('text-muted');
  97.  
  98.             let name = document.createTextNode(item.name);
  99.             let description = document.createTextNode(item.description);
  100.             let date = document.createTextNode(item.date);
  101.  
  102.             itemName.appendChild(name);
  103.             itemDescription.appendChild(description);
  104.             itemDate.appendChild(date);
  105.  
  106.             infoWrapper.appendChild(itemName);
  107.             infoWrapper.appendChild(itemDescription);
  108.             infoWrapper.appendChild(itemDate);
  109.  
  110.             wrapper.appendChild(img);
  111.             wrapper.appendChild(infoWrapper);
  112.  
  113.             thirdBlock.appendChild(wrapper);
  114.         })
  115.  
  116.     }
  117.  
  118.     function buildGallery(params) {
  119.         console.dir(params);
  120.         switch (params.galleryType) {
  121.             case '1':
  122.                 buildGalleryReplace(params.elementCount);
  123.                 break;
  124.             case '2':
  125.                 buildGalleryTemplate(params.elementCount);
  126.                 break;
  127.             case '3':
  128.                 buildGalleryCreate(params.elementCount);
  129.                 break;
  130.             default:
  131.                 alert('Укажите, пожалуйста, тип галлереи!')
  132.         }
  133.     }
  134.  
  135.     function clearGallery() {
  136.         firstBlock.innerHTML = '';
  137.         secondBlock.innerHTML = '';
  138.         thirdBlock.innerHTML = '';
  139.         firstGroup.classList.add('hide');
  140.         secondGroup.classList.add('hide');
  141.         thirdGroup.classList.add('hide');
  142.     }
  143.  
  144.     function showGalleryReplace() {
  145.         firstGroup.classList.remove('hide');
  146.         firstGroup.classList.add('show');
  147.     }
  148.     function showGalleryTemplate() {
  149.         secondGroup.classList.remove('hide');
  150.         secondGroup.classList.add('show');
  151.     }
  152.     function showGalleryCreate() {
  153.         thirdGroup.classList.remove('hide');
  154.         thirdGroup.classList.add('show');
  155.     }
  156.  
  157.     function showGallery(params) {
  158.         let galleryType = params.galleryType;
  159.         switch (galleryType) {
  160.             case '1':
  161.                 showGalleryReplace();
  162.                 break;
  163.             case '2':
  164.                 showGalleryTemplate();
  165.                 break;
  166.             case '3':
  167.                 showGalleryCreate();
  168.                 break;
  169.         }
  170.     }
  171.  
  172.     function fixUrl(txt) {
  173.         return 'http://' + txt;
  174.     }
  175.  
  176.     function run() {
  177.         clearGallery();
  178.         let params = getParams();
  179.         buildGallery(params);
  180.         showGallery(params);
  181.     }
  182.  
  183.     btn.addEventListener('click', run);
  184. })();
Advertisement
Add Comment
Please, Sign In to add comment