Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. // функция объект для счетчика
  3. function myCounter(event, theme, final, link){
  4.     if(event){
  5.         this.event = event;
  6.     }
  7.     if(theme){
  8.         this.theme = theme;
  9.     }
  10.     if(final){
  11.         this.final = final;
  12.     }
  13.     if(link){
  14.         this.link = link;
  15.     }
  16. }
  17.  
  18. // функция для обертки счетчика
  19. function wrapperCounter(event, theme, date, link){
  20.     // если счетчику заданы параметры "событие" и "шаблон события", то создается счетчик
  21.     if(counter_obj.event && counter_obj.theme){
  22.         let block = document.createElement("div");
  23.         // если создалась основная обертка для счетчика
  24.         if(block) {
  25.             // добавляем класс по умолчанию обертке - template
  26.             block.className = event + "-" + theme + " template";
  27.             // добавляем стили для счетчика в head
  28.             let styles = document.createElement("link");
  29.             styles.href = "j/css/counter/" + event + "/" + theme + ".css";
  30.             styles.rel = "stylesheet";
  31.             document.querySelectorAll("head")[0].appendChild(styles);
  32.             // вычисляем период от текущей даты до события
  33.             let distance = new Date(date.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1')) - new Date();
  34.             // если это значение отрицательно, добавляем основной обертке еще класс "zero"
  35.             if (distance <= 0) {
  36.                 block.className += " zero";
  37.             }
  38.             // иначе продолжаем создавать счетчик
  39.             else {
  40.                 let wrap = document.createElement("div");
  41.                 if (wrap) {
  42.                     wrap.className = "counter-wrap";
  43.                     block.appendChild(wrap);
  44.                 }
  45.             }
  46.             // в любом счетчике, если указана ссылка, создаем указанную ссылку на счетчике
  47.             if (link) {
  48.                 let linker = document.createElement("a");
  49.                 linker.className = "counter-link";
  50.                 linker.href = link;
  51.                 linker.target = "_blank";
  52.                 block.appendChild(linker);
  53.             }
  54.             return block;
  55.         }
  56.     }
  57. }
  58.  
  59. // берем все объявленные счетчики
  60. let counter = document.querySelectorAll(".counter");
  61. // если у нас имеются счетчики, для каждого создается обертка
  62. if(counter){
  63.     for(let c = 0; c < counter.length; c++){
  64.         // создаем объект счетчика
  65.         counter_obj = new myCounter();
  66.         // передаем параметры счетчиков в объект
  67.         if(counter[c].dataset.theme){
  68.             counter_obj.theme = counter[c].dataset.theme;
  69.         }
  70.         if(counter[c].dataset.event){
  71.             counter_obj.event = counter[c].dataset.event;
  72.         }
  73.         if(counter[c].dataset.date){
  74.             counter_obj.final = counter[c].dataset.date;
  75.         }
  76.         if(counter[c].dataset.link){
  77.             counter_obj.link = counter[c].dataset.link;
  78.         }
  79.         // добавляем счетчик в наш блок с классом "counter"
  80.         counter[c].appendChild(wrapperCounter(counter_obj.event, counter_obj.theme, counter_obj.final, counter_obj.link));
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement