Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let app = {
  2.  
  3.     pages: null,
  4.     list: [],
  5.     reviewIndex: "",
  6.     key: "verv0022",
  7.     img: "",
  8.  
  9.  
  10.     init: function () {
  11.         if (window.hasOwnProperty("cordova")) {
  12.             console.log("You're on a mobile device");
  13.         }
  14.         let isReady = (window.hasOwnProperty("cordova")) ? 'deviceready' : 'DOMContentLoaded';
  15.  
  16.         document.addEventListener(isReady, () => {
  17.             app.pages = document.querySelectorAll('.page');
  18.             app.pages[0].classList.add('active');
  19.  
  20.             app.pages.forEach(page => {
  21.                 page.querySelector('.nav').addEventListener('click', app.navigate);
  22.             });
  23.  
  24.             let stars = document.querySelectorAll('.star');
  25.             stars.forEach(function (star) {
  26.                 star.addEventListener('click', app.setRating);
  27.             });
  28.  
  29.             let rating = parseInt(document.querySelector('.stars').getAttribute('data-rating'));
  30.             let target = stars[rating - 1];
  31.             target.dispatchEvent(new MouseEvent('click'));
  32.  
  33.  
  34.         });
  35.         document.getElementById('fabButton').addEventListener('click', app.takephoto);
  36.  
  37.         document.getElementById("saveButton").addEventListener("click", app.saveReview);
  38.         document.getElementById("deleteButton").addEventListener("click", app.navigate);
  39.  
  40.         app.checkLocalStorage();
  41.     },
  42.  
  43.  
  44.     takephoto: function () {
  45.         let options = {
  46.             destinationType: Camera.DestinationType.FILE_URI,
  47.             sourceType: Camera.PictureSourceType.CAMERA,
  48.             cameraDirection: Camera.Direction.BACK,
  49.             quality: 100,
  50.             encodingType: Camera.EncodingType.JPEG,
  51.             targetWidth: 1920,
  52.             targetHeight: 1080,
  53.             correctOrientation: true
  54.  
  55.         };
  56.  
  57.         navigator.camera.getPicture(app.ftw, app.wtf, options)
  58.     },
  59.  
  60.  
  61.     checkLocalStorage: function () {
  62.         let storage = localStorage.getItem(app.key);
  63.  
  64.         if (storage) {
  65.  
  66.             app.list = JSON.parse(storage);
  67.             console.log(app.list, "list");
  68.             app.list.forEach(item => {
  69.                 app.createReviewList(item);
  70.             })
  71.         } else {
  72.             let container = document.getElementById("listDiv"),
  73.                 h1 = document.createElement("h1");
  74.  
  75.             h1.textContent = "No Reviews";
  76.             h1.setAttribute("id", "noReviews")
  77.             h1.style.textTransform = "uppercase";
  78.             h1.style.margin = "50px 0px 0px 0px";
  79.  
  80.             container.appendChild(h1);
  81.         }
  82.     },
  83.  
  84.  
  85.     createReviewList: function () {
  86.         let unorderedList = document.getElementById("reviewList");
  87.  
  88.         unorderedList.innerHTML = "";
  89.  
  90.         unorderedList.style.listStyle = "none";
  91.  
  92.         let reviews = app.list,
  93.             fragment = document.createDocumentFragment();
  94.  
  95.         reviews.forEach(function (list) {
  96.  
  97.             let reviewList = document.createElement("li"),
  98.                 reviewTitle = document.createElement("h1");
  99.  
  100.             reviewList.setAttribute("class", "reviewList");
  101.  
  102.             reviewTitle.setAttribute("class", "reviewTitle");
  103.             reviewTitle.setAttribute("data-id", list.id);
  104.             reviewTitle.textContent = list.title;
  105.             reviewTitle.addEventListener("click", app.createDetails);
  106.             reviewTitle.style.textAlign = "left";
  107.  
  108.             reviewList.appendChild(reviewTitle);
  109.             fragment.appendChild(reviewList);
  110.         });
  111.  
  112.         unorderedList.appendChild(fragment);
  113.     },
  114.  
  115.  
  116.     setRating: function (ev) {
  117.         let span = ev.currentTarget;
  118.         let stars = document.querySelectorAll('.star');
  119.         let match = false;
  120.         let num = 0;
  121.         stars.forEach(function (star, index) {
  122.             if (match) {
  123.                 star.classList.remove('rated');
  124.             } else {
  125.                 star.classList.add('rated');
  126.             }
  127.             if (star === span) {
  128.                 match = true;
  129.                 num = index + 1;
  130.             }
  131.         });
  132.         document.querySelector('.stars').setAttribute('data-rating', num);
  133.     },
  134.  
  135.  
  136.     createDetails: function (ev) {
  137.         ev.preventDefault();
  138.         let reviewId = ev.currentTarget.getAttribute("data-id"),
  139.             list = app.list,
  140.             reviewList = list.filter(function (list) {
  141.                 if (list.id == reviewId) {
  142.                     return list;
  143.                 }
  144.             });
  145.  
  146.         app.reviewIndex = reviewId;
  147.  
  148.         let detailsDiv = document.getElementById("detailsDiv"),
  149.             reviewIMG = document.createElement("img"),
  150.             reviewTitle = document.createElement("h1"),
  151.             reviewRating = document.createElement("h1"),
  152.             fragment = document.createDocumentFragment();
  153.  
  154.         detailsDiv.innerHTML = "";
  155.  
  156.         reviewIMG.setAttribute("class", "reviewIMG");
  157.         reviewIMG.setAttribute("src", reviewList[0].img);
  158.         reviewIMG.setAttribute("alt", reviewList[0].title);
  159.         reviewIMG.setAttribute("width", "100%");
  160.         reviewIMG.setAttribute("height", "500px");
  161.         reviewIMG.setAttribute("data-id", list.id);
  162.  
  163.         reviewTitle.setAttribute("class", "reviewTitle");
  164.         reviewTitle.textContent = reviewList[0].title;
  165.  
  166.         reviewRating.setAttribute("class", "reviewRating");
  167.         reviewRating.textContent = reviewList[0].rating + "/5";
  168.  
  169.         fragment.appendChild(reviewIMG);
  170.         fragment.appendChild(reviewTitle);
  171.         fragment.appendChild(reviewRating);
  172.  
  173.         detailsDiv.appendChild(fragment);
  174.  
  175.         document.getElementById("homePage").classList.remove("active");
  176.         document.getElementById("detailsPage").classList.add("active");
  177.  
  178.         document.getElementById("deleteButton").addEventListener("click", () => {
  179.             app.deleteReview(reviewId);
  180.         });
  181.     },
  182.  
  183.  
  184.     deleteReview: function (reviewId) {
  185.         reviewList = app.list.filter(function (list) {
  186.  
  187.             if (list.id != reviewId) {
  188.                 return true;
  189.             } else {
  190.                 let index = app.list.indexOf(list);
  191.                 listOfReviews = document.getElementById('reviewList');
  192.                 listOfReviews.removeChild(listOfReviews.children[index]);
  193.             }
  194.         });
  195.  
  196.         app.list = reviewList;
  197.         localStorage.setItem(app.key, JSON.stringify(app.list));
  198.         console.log(app.list);
  199.     },
  200.  
  201.  
  202.     saveReview: function (ev) {
  203.         let title = document.getElementById('titleInput').value,
  204.             rating = parseInt(document.querySelector('.stars').getAttribute('data-rating'));
  205.         id = Date.now(),
  206.  
  207.             object = {
  208.                 id,
  209.                 title,
  210.                 rating,
  211.                 "img": app.img
  212.             }
  213.  
  214.         app.list.push(object);
  215.  
  216.         localStorage.setItem(app.key, JSON.stringify(app.list));
  217.  
  218.         console.log(app.key)
  219.  
  220.         app.createReviewList();
  221.  
  222.         if (document.getElementById("noReviews")) {
  223.             document.getElementById("noReviews").style.display = "none";
  224.         }
  225.  
  226.         app.navigate(ev);
  227.     },
  228.  
  229.     ftw: function (imgURI) {
  230.         document.getElementById("photo").src = imgURI;
  231.  
  232.         app.img = imgURI;
  233.  
  234.         let inputDiv = document.getElementById("inputDiv");
  235.         inputDiv.style.display = "flex";
  236.  
  237.         let photoCtrl = document.getElementById("photoCtrlDiv");
  238.         photoCtrl.style.display = "flex";
  239.  
  240.  
  241.     },
  242.  
  243.  
  244.     wtf: function (msg) {
  245.         document.getElementById("msg").textContent = msg;
  246.     },
  247.  
  248.  
  249.     navigate: function (ev) {
  250.         ev.preventDefault();
  251.         let tapped = ev.currentTarget;
  252.         if (tapped.getAttribute("data-id")) {
  253.             app.reviewIndex = tapped.getAttribute("data-id");
  254.         }
  255.  
  256.         console.log(tapped);
  257.  
  258.         document.querySelector('.active').classList.remove('active');
  259.         let target = tapped.getAttribute('data-target');
  260.         document.getElementById(target).classList.add('active');
  261.     },
  262. };
  263.  
  264.  
  265. app.init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement