Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function createOfferItem(data) {
  2.   const allOfferItems = document.createDocumentFragment();
  3.  
  4.   data.forEach(offerItemData => {
  5.     console.log(offerItemData);
  6.     const { id, name, start, description, image } = offerItemData;
  7.  
  8.     const offerContainer = document.createElement("div");
  9.     offerContainer.className = "pilgrimage__box";
  10.     offerContainer.innerHTML = `
  11.             <div class="pilgrimage__imgContainer">
  12.                 <img src="${
  13.                  image != null
  14.                    ? image
  15.                    : "https://www.widzialni.pl/blog/wp-content/uploads/2017/10/google-grafika.jpg"
  16.                 }" alt="offerImage" />
  17.            </div>
  18.            <div class="pilgrimage__content">
  19.                <div class="pilgrimage__title">
  20.                    <div class="title__description"></div>
  21.                    <span>
  22.                        ${name}
  23.                    </span>
  24.                </div>
  25.                <span class="pilgrimage__date">
  26.                    ${start}
  27.                </span>
  28.                <span class="pilgrimage__description">
  29.                    ${description}
  30.                    w drodze do Medjugorje i nie tylko
  31.                </span>
  32.                <a href="http://kosciol.test/public/api/eventPaginate?page=${id}">
  33.                     SPRAWDŹ
  34.                 </a>
  35.             </div>
  36.         `;
  37.  
  38.     allOfferItems.appendChild(offerContainer);
  39.   });
  40.  
  41.   return allOfferItems;
  42. }
  43.  
  44. function createCommentItem(data) {
  45.   const allCommentItem = document.createDocumentFragment();
  46.  
  47.   data.forEach((commentItemData, index) => {
  48.     const {} = commentItemData;
  49.  
  50.     const commentContainer = document.createElement("div");
  51.     commentContainer.className = "commentary__container";
  52.     commentContainer.innerHTML = `
  53.             <div class="commentaryDecorationA commentaryDecorationA--${index +
  54.              1}">
  55.                 <div class="commentaryDecorationB commentaryDecorationB--${index +
  56.                  1}">
  57.                     <div class="commentary__header">
  58.                         <h3>Jan Kowalski</h3>
  59.                         <span>10.10.2010</span>
  60.                     </div>
  61.                     <div class="commentary__content">
  62.                         <h3 class="commentary__title">Temat wiadomości</h3>
  63.                         <div class="commentary__text">
  64.                             <span>
  65.                                 Lorem ipsum lorem ipsum lorem ipsum, lorem ipsum lorem ipsum
  66.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  67.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  68.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  69.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  70.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  71.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  72.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  73.                                 Lorem ipsum lorem ipsum lorem ipsum, lorem ipsum lorem ipsum
  74.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  75.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  76.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  77.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  78.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  79.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  80.                                 lorem ipsum lorem ipsum Lorem ipsum, lorem ipsum lorem ipsum
  81.                             </span>
  82.                         </div>
  83.                     </div>
  84.                 </div>
  85.             </div>
  86.         `;
  87.  
  88.     allCommentItem.appendChild(commentContainer);
  89.   });
  90.  
  91.   return allCommentItem;
  92. }
  93.  
  94. class Pagination {
  95.   constructor(
  96.     paginationBox,
  97.     prevButton,
  98.     nextButton,
  99.     itemsType,
  100.     prePlaceForItems,
  101.     placeForItems
  102.   ) {
  103.     this.paginationBox = paginationBox;
  104.     this.prevButton = prevButton;
  105.     this.nextButton = nextButton;
  106.     this.prePlaceForItems = prePlaceForItems;
  107.     this.placeForItems = placeForItems;
  108.     this.itemsType = itemsType; //offerItem or comment
  109.   }
  110.  
  111.   getNewData = async href => {
  112.     try {
  113.       const data = await axios.get(href, {
  114.         headers: {
  115.           Authorization:
  116.             "Bearer vdO1uZbmSLwlAMsgJGV41HCET44JF6jTeJZbrcMylFgj9pI0Fw1bY6vXL6OC"
  117.         }
  118.       });
  119.       return data;
  120.     } catch {
  121.       PopUp.createPopup(
  122.         "INFORMACJA",
  123.         "Wystąpił błąd podczas pobierania nowych ofert."
  124.       );
  125.     }
  126.   };
  127.  
  128.   createNewElements = (data, initial = false) => {
  129.     const newElements =
  130.       this.itemsType === "offerItem"
  131.         ? createOfferItem(data)
  132.         : createCommentItem(data);
  133.  
  134.     if (!initial) {
  135.       console.log(this.placeForItems);
  136.       let height = this.prePlaceForItems.height;
  137.       this.placeForItems.style.height = height + "px";
  138.       this.placeForItems.style.maxHeight = height + "px";
  139.     }
  140.  
  141.     this.placeForItems.innerHTML = null;
  142.     this.placeForItems.appendChild(newElements);
  143.  
  144.     if (!initial) {
  145.       height = this.prePlaceForItems.height;
  146.       this.placeForItems.style.maxHeight = height + "px";
  147.       this.placeForItems.style.height = null;
  148.     }
  149.   };
  150.  
  151.   putNewHrefs = links => {
  152.     const { prev, next } = links;
  153.  
  154.     if (prev !== null) {
  155.       this.prevButton.dataset.prev = prev;
  156.       if (
  157.         this.prevButton.classList.contains("paginationBar__element--inactive")
  158.       )
  159.         this.prevButton.classList.remove("paginationBar__element--inactive");
  160.     } else {
  161.       this.prevButton.dataset.prev = "";
  162.       this.prevButton.classList.add("paginationBar__element--inactive");
  163.     }
  164.  
  165.     if (next !== null) {
  166.       this.nextButton.dataset.next = next;
  167.       if (
  168.         this.nextButton.classList.contains("paginationBar__element--inactive")
  169.       )
  170.         this.nextButton.classList.remove("paginationBar__element--inactive");
  171.     } else {
  172.       this.nextButton.dataset.next = "";
  173.       this.nextButton.classList.add("paginationBar__element--inactive");
  174.     }
  175.   };
  176.  
  177.   newElementsHandler = event => {
  178.     const href = event.target.dataset.controls;
  179.  
  180.     this.getNewData(href).then(newData => {
  181.       console.log(newData);
  182.       const { data, links } = newData;
  183.       this.putNewHrefs(links);
  184.       this.createNewElements(data);
  185.     });
  186.   };
  187.  
  188.   addListeners = () => {
  189.     this.prevButton.addEventListener("click", this.newElementsHandler);
  190.     this.nextButton.addEventListener("click", this.newElementsHandler);
  191.   };
  192.  
  193.   initial(type) {
  194.     const baseURL = "/api";
  195.     this.getNewData(`${baseURL}/${type}`).then(initialData => {
  196.       // console.log(initialData);
  197.       const { data, links } = initialData.data;
  198.       console.log(links);
  199.       this.putNewHrefs(links);
  200.       this.createNewElements(data, true);
  201.     });
  202.   }
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement