Advertisement
vovan333

GOWNOCODE BY VOVA GOWNOCODER #2

Jul 25th, 2016
109
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.     getBrandCards()
  48.     {
  49.         return kernel.gea(".brand-card");
  50.     },
  51.  
  52.     enableBrandCard(card)
  53.     {
  54.         card.style.background = "white";
  55.         card.children[0].style.visibility = "visible";
  56.     },
  57.  
  58.     disableBrandCard(card)
  59.     {
  60.         card.children[0].style.visibility = "hidden";
  61.         card.style.background = `url(${card.children[1].id})`;
  62.         card.style.backgroundSize = "cover";
  63.     },
  64.  
  65.     getParams()
  66.     {
  67.        
  68.     },
  69.  
  70.     getBody()
  71.     {
  72.         return kernel.ge(".body");
  73.     },
  74.  
  75.     renderError()
  76.     {
  77.         errorElement = kernel.createElem("div",
  78.         {
  79.             "className" : "error"
  80.         });
  81.         kernel.getBody().appendChild(errorElement);
  82.     },
  83.  
  84.     error(message)
  85.     {
  86.         message = !message ? "Error." : message;
  87.         kernel.renderError(message);
  88.         throw message;
  89.     },
  90.  
  91.     getBrands()
  92.     {
  93.         var response = kernel.APIRequest(
  94.         {
  95.             "method"     : "getBrands",
  96.             "parameters" : kernel.getParams()
  97.         });
  98.         if(!response.code)
  99.         {
  100.             kernel.dataModel.brands = response;
  101.         }
  102.         else
  103.         {
  104.             kernel.error(response.msg);
  105.         };
  106.     },
  107.  
  108.     encodeAPIRequest(request)
  109.     {
  110.         return btoa(JSON.stringify(request));
  111.     },
  112.  
  113.     APIRequest(request)
  114.     {
  115.         var socket = new XMLHttpRequest();
  116.         var encodedRequest = kernel.encodeAPIRequest(request);
  117.         socket.open("GET", "/api/" + encodedRequest, false);
  118.         socket.send();
  119.         return JSON.parse(socket.responseText);
  120.     },
  121.  
  122.     setBodyHeading(text)
  123.     {
  124.         var heading = kernel.createElem("div",
  125.         {
  126.             "className" : "heading",
  127.             "innerText" : text
  128.         });
  129.         kernel.getBody().appendChild(heading);
  130.     },
  131.  
  132.     resetBody()
  133.     {
  134.         kernel.getBody().innerHTML = "";
  135.     },
  136.  
  137.     createBrandCard()
  138.     {
  139.         return kernel.createElem("div",
  140.         {
  141.             "className" : "brand-card"
  142.         });
  143.     },
  144.  
  145.     createBrandCardContents()
  146.     {
  147.         return kernel.createElem("div",
  148.         {
  149.             "className" : "contents"
  150.         });
  151.     },
  152.  
  153.     createBrandCardContainer()
  154.     {
  155.         return kernel.createElem("div",
  156.         {
  157.             "className" : "brands",
  158.         });
  159.     },
  160.  
  161.     createBrandCardText(text)
  162.     {
  163.         return kernel.createElem("div",
  164.         {
  165.             "className" : "text",
  166.             "innerText" : text
  167.         });
  168.     },
  169.  
  170.     createBrandCardButton()
  171.     {
  172.         return kernel.createElem("div",
  173.         {
  174.             "className" : "button",
  175.             "innerText" : "ПЕРЕЙТИ К БРЕНДУ"
  176.         });
  177.     },
  178.  
  179.     createBrandCardBgImageData(imageData)
  180.     {
  181.         return kernel.createElem("div",
  182.         {
  183.             "id"        : imageData
  184.         });
  185.     },
  186.  
  187.     initBrandCard(card)
  188.     {
  189.         card.onmouseover = function()
  190.         {
  191.             kernel.enableBrandCard(card);
  192.         };
  193.         card.onmouseout = function()
  194.         {
  195.             kernel.disableBrandCard(card);
  196.         };
  197.         kernel.disableBrandCard(card);
  198.     },
  199.  
  200.     renderBrandCards()
  201.     {
  202.         kernel.resetBody();
  203.         kernel.setBodyHeading("Бренды");
  204.         var container = kernel.createBrandCardContainer();
  205.         var card, cardContents, cardText, cardButton;
  206.         kernel.dataModel.brands.forEach(function(brand, ind, arr)
  207.         {
  208.             card            = kernel.createBrandCard();
  209.             cardContents    = kernel.createBrandCardContents();
  210.             cardText        = kernel.createBrandCardText(brand.description);
  211.             cardButton      = kernel.createBrandCardButton();
  212.             bgImageData     = kernel.createBrandCardBgImageData(brand.img);
  213.  
  214.             cardContents.appendChild(cardText);
  215.             cardContents.appendChild(cardButton);
  216.  
  217.             card.appendChild(cardContents);
  218.             card.appendChild(bgImageData);
  219.             kernel.initBrandCard(card);
  220.             container.appendChild(card);
  221.         });
  222.         kernel.getBody().appendChild(container);
  223.     },
  224.  
  225.     setView(view)
  226.     {
  227.         console.log(`Setting view: "${view}"`);
  228.         kernel.currentView = view;
  229.         switch(view)
  230.         {
  231.             case "brands":
  232.                 kernel.setActiveNav(view);
  233.                 kernel.getBrands();
  234.                 kernel.renderBrandCards();
  235.             break;
  236.             case "cats":
  237.                 kernel.setActiveNav(view);
  238.             break;
  239.             case "production":
  240.                 kernel.setActiveNav(view);
  241.             break;
  242.         };
  243.     },
  244.  
  245.     getNavs()
  246.     {
  247.         return kernel.gea(".header-navs > .nav");
  248.     },
  249.  
  250.     disableAllNavs()
  251.     {
  252.         kernel.getNavs().forEach(function(navElem)
  253.         {
  254.             navElem.className = "nav";
  255.         });
  256.     },
  257.  
  258.     enableNav(navId)
  259.     {
  260.         kernel.ge(`#${navId}`).className = "nav underlined";
  261.     },
  262.  
  263.     setActiveNav(navId)
  264.     {
  265.         console.log(`Setting active nav: "${navId}"`);
  266.         kernel.disableAllNavs();
  267.         kernel.enableNav(navId);
  268.     },
  269.  
  270.     ge(selector, context)
  271.     {
  272.         return (context || document).querySelector(selector);
  273.     },
  274.  
  275.     gea(selector, context)
  276.     {
  277.         return (context || document).querySelectorAll(selector);
  278.     },
  279.  
  280.     createElem(tagName, attrs)
  281.     {
  282.         var elem = document.createElement(tagName);
  283.         for(attr in attrs)
  284.         {
  285.             elem[attr] = attrs[attr];
  286.         };
  287.         return elem;
  288.     }
  289. }
  290.  
  291. window.onload = kernel.initialize;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement