Advertisement
vovan333

GOWNOCODE (BY VOVA)

Jul 25th, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.kernel =
  2. {
  3.     dataModel : {},
  4.  
  5.     initialize()
  6.     {
  7.         console.log("Getting ready...");
  8.         kernel.initEventListeners();
  9.         kernel.setView("brands");
  10.         console.log("Ready");
  11.     },
  12.  
  13.     initNavbar()
  14.     {
  15.         kernel.getNavs().forEach(function(elem)
  16.         {
  17.             elem.onclick = function()
  18.             {
  19.                 kernel.setView(elem.id);
  20.             };
  21.         });
  22.     },
  23.  
  24.     initEventListeners()
  25.     {
  26.         kernel.initNavbar();
  27.         kernel.initCartButton();
  28.         kernel.initAddBrandButton();
  29.     },
  30.  
  31.     initCartButton()
  32.     {
  33.         kernel.ge("#cart").onclick = function()
  34.         {
  35.             kernel.setView("cart");
  36.         };
  37.     },
  38.  
  39.     initAddBrandButton()
  40.     {
  41.         kernel.ge("#addBrand").onclick = function()
  42.         {
  43.             kernel.setView("addBrand");
  44.         };
  45.     },
  46.  
  47.     initBrandCards()
  48.     {
  49.         kernel.getBrandCards().forEach(function(cardElem)
  50.         {
  51.             cardElem.onmouseover = function()
  52.             {
  53.                 kernel.enableBrandCard(cardElem);
  54.             };
  55.             cardElem.onmouseout = function()
  56.             {
  57.                 kernel.disableBrandCard(cardElem);
  58.             };
  59.         });
  60.     },
  61.  
  62.     getBrandCards()
  63.     {
  64.         return kernel.gea(".brand-card");
  65.     },
  66.  
  67.     enableBrandCard(card)
  68.     {
  69.         card.style.background = "white";
  70.         card.children[0].style.visibility = "visible";
  71.     },
  72.  
  73.     disableBrandCard(card)
  74.     {
  75.         card.children[0].style.visibility = "hidden";
  76.         card.style.background = `url(${card.children[1].id})`;
  77.         card.style.backgroundSize = "cover";
  78.     },
  79.  
  80.     getParams()
  81.     {
  82.        
  83.     },
  84.  
  85.     getBody()
  86.     {
  87.         return kernel.ge(".body");
  88.     },
  89.  
  90.     renderError()
  91.     {
  92.         var errorElement = kernel.ce("div");
  93.         errorElement.className = "error";
  94.         kernel.getBody().appendChild(errorElement);
  95.     },
  96.  
  97.     error(message)
  98.     {
  99.         message = !message ? "Error." : message;
  100.         kernel.renderError(message);
  101.         throw message;
  102.     },
  103.  
  104.     getBrands()
  105.     {
  106.         var response = kernel.APIRequest(
  107.         {
  108.             "method"     : "getBrands",
  109.             "parameters" : kernel.getParams()
  110.         });
  111.         if(!response.code)
  112.         {
  113.             kernel.dataModel.brands = response;
  114.         }
  115.         else
  116.         {
  117.             kernel.error(response.msg);
  118.         };
  119.     },
  120.  
  121.     encodeAPIRequest(request)
  122.     {
  123.         return btoa(JSON.stringify(request));
  124.     },
  125.  
  126.     APIRequest(request)
  127.     {
  128.         var socket = new XMLHttpRequest();
  129.         var encodedRequest = kernel.encodeAPIRequest(request);
  130.         socket.open("GET", "/api/" + encodedRequest, false);
  131.         socket.send();
  132.         return JSON.parse(socket.responseText);
  133.     },
  134.  
  135.     setBodyHeading(text)
  136.     {
  137.         var heading = kernel.ce("div");
  138.         heading.className = "heading";
  139.         heading.innerText = text;
  140.         kernel.getBody().appendChild(heading);
  141.     },
  142.  
  143.     resetBody()
  144.     {
  145.         kernel.getBody().innerHTML = "";
  146.     },
  147.  
  148.     renderBrandCards()
  149.     {
  150.         kernel.resetBody();
  151.         kernel.setBodyHeading("Бренды");
  152.         var container = kernel.ce("div");
  153.         container.className = "brands";
  154.         var card, cardContents, cardText, cardButton;
  155.         kernel.dataModel.brands.forEach(function(brand, ind, arr)
  156.         {
  157.             card         = kernel.ce("div");
  158.             cardContents = kernel.ce("div");
  159.             cardText     = kernel.ce("div");
  160.             cardButton   = kernel.ce("div");
  161.             bgImageData  = kernel.ce("div");
  162.  
  163.             card.className          = "brand-card";
  164.             cardContents.className  = "contents";
  165.             cardText.className      = "text";
  166.             cardButton.className    = "button";
  167.             bgImageData.id          = brand.img;
  168.  
  169.             cardButton.innerText = "ПЕРЕЙТИ К БРЕНДУ";
  170.             cardText.innerText   = brand.description;
  171.  
  172.             cardContents.appendChild(cardText);
  173.             cardContents.appendChild(cardButton);
  174.  
  175.             card.appendChild(cardContents);
  176.             card.appendChild(bgImageData);
  177.             kernel.disableBrandCard(card);
  178.             container.appendChild(card);
  179.         });
  180.         kernel.getBody().appendChild(container);
  181.     },
  182.  
  183.     setView(view)
  184.     {
  185.         console.log(`Setting view: "${view}"`);
  186.         kernel.currentView = view;
  187.         switch(view)
  188.         {
  189.             case "brands":
  190.                 kernel.setActiveNav(view);
  191.                 kernel.getBrands();
  192.                 kernel.renderBrandCards();
  193.                 kernel.initBrandCards();
  194.             break;
  195.             case "cats":
  196.                 kernel.setActiveNav(view);
  197.             break;
  198.             case "production":
  199.                 kernel.setActiveNav(view);
  200.             break;
  201.         };
  202.     },
  203.  
  204.     getNavs()
  205.     {
  206.         return kernel.gea(".header-navs > .nav");
  207.     },
  208.  
  209.     disableAllNavs()
  210.     {
  211.         kernel.getNavs().forEach(function(navElem)
  212.         {
  213.             navElem.className = "nav";
  214.         });
  215.     },
  216.  
  217.     enableNav(navId)
  218.     {
  219.         kernel.ge(`#${navId}`).className = "nav underlined";
  220.     },
  221.  
  222.     setActiveNav(navId)
  223.     {
  224.         console.log(`Setting active nav: "${navId}"`);
  225.         kernel.disableAllNavs();
  226.         kernel.enableNav(navId);
  227.     },
  228.  
  229.     ge(selector, context)
  230.     {
  231.         return (context || document).querySelector(selector);
  232.     },
  233.  
  234.     gea(selector, context)
  235.     {
  236.         return (context || document).querySelectorAll(selector);
  237.     },
  238.  
  239.     ce(tagName)
  240.     {
  241.         return document.createElement(tagName);
  242.     }
  243. }
  244.  
  245. window.onload = kernel.initialize;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement