Advertisement
vovan333

GOWNOCODE (SHITCODE) BY VOVA #3

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