Advertisement
vovan333

SHITCODE (REFRACTORED)

Jul 27th, 2016
124
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.     enableBrandCard(card)
  48.     {
  49.         card.style.background = "white";
  50.         card.children[0].style.visibility = "visible";
  51.     },
  52.  
  53.     disableBrandCard(card)
  54.     {
  55.         card.children[0].style.visibility = "hidden";
  56.         card.style.backgroundImage = kernel.url(card.children[1].id);
  57.     },
  58.  
  59.     getParams()
  60.     {
  61.        
  62.     },
  63.  
  64.     getBody()
  65.     {
  66.         return kernel.ge(".body");
  67.     },
  68.  
  69.     renderError()
  70.     {
  71.         errorElement = kernel.createElem(
  72.         {
  73.             "className" : "error"
  74.         });
  75.         kernel.getBody().appendChild(errorElement);
  76.     },
  77.  
  78.     error(message)
  79.     {
  80.         message = !message ? "Error." : message;
  81.         kernel.renderError(message);
  82.         throw message;
  83.     },
  84.  
  85.     getBrands()
  86.     {
  87.         var response = kernel.APIRequest(
  88.         {
  89.             "method"     : "getBrands",
  90.             "parameters" : kernel.getParams()
  91.         });
  92.         if(!response.code)
  93.         {
  94.             kernel.dataModel.brands = response;
  95.         }
  96.         else
  97.         {
  98.             kernel.error(response.msg);
  99.         };
  100.     },
  101.  
  102.     encodeAPIRequest(request)
  103.     {
  104.         return btoa(JSON.stringify(request));
  105.     },
  106.  
  107.     APIRequest(request)
  108.     {
  109.         var socket = new XMLHttpRequest();
  110.         var encodedRequest = kernel.encodeAPIRequest(request);
  111.         socket.open("GET", "/api/" + encodedRequest, false);
  112.         socket.send();
  113.         return JSON.parse(socket.responseText);
  114.     },
  115.  
  116.     setBodyHeading(text)
  117.     {
  118.         var heading = kernel.createElem(
  119.         {
  120.             "className" : "heading",
  121.             "innerText" : text
  122.         });
  123.         kernel.getBody().children[0] = heading;
  124.     },
  125.  
  126.     resetBody()
  127.     {
  128.         kernel.getBody().innerHTML = "";
  129.     },
  130.  
  131.     initBrandCard(card)
  132.     {
  133.         card.onmouseover = function()
  134.         {
  135.             kernel.enableBrandCard(card);
  136.         };
  137.         card.onmouseout = function()
  138.         {
  139.             kernel.disableBrandCard(card);
  140.         };
  141.         kernel.disableBrandCard(card);
  142.     },
  143.  
  144.     createBrandsContainer()
  145.     {
  146.         return kernel.createElem(
  147.         {
  148.             "className" : "brands"
  149.         });
  150.     },
  151.  
  152.     createBrandCard(description, image)
  153.     {
  154.         return kernel.createElem(
  155.         {
  156.             "className" : "brand-card",
  157.             "children"  :
  158.             [
  159.                 {
  160.                     "className" : "contents",
  161.                     "children"  :
  162.                     [
  163.                         {
  164.                             "className" : "text",
  165.                             "innerText" : description
  166.                         },
  167.  
  168.                         {
  169.                             "className" : "button",
  170.                             "innerText" : "ОТКРЫТЬ БРЕНД"
  171.                         }
  172.                     ]
  173.                 },
  174.  
  175.                 {
  176.                     "id" : image
  177.                 }
  178.             ]
  179.         });
  180.     },
  181.  
  182.     renderBrandCards()
  183.     {
  184.         kernel.resetBody();
  185.         kernel.setBodyHeading("Бренды");
  186.         var container = kernel.createBrandsContainer();
  187.         var card;
  188.         kernel.dataModel.brands.forEach(function(brand)
  189.         {
  190.             card = kernel.createBrandCard(brand.description, brand.img);
  191.             kernel.initBrandCard(card);
  192.             container.appendChild(card);
  193.         });
  194.         kernel.getBody().appendChild(container);
  195.     },
  196.  
  197.     getCats()
  198.     {
  199.         var response = kernel.APIRequest(
  200.         {
  201.             "method" : "getCats"
  202.         });
  203.         if(!response.code)
  204.         {
  205.             kernel.dataModel.cats = response;
  206.         }
  207.         else
  208.         {
  209.             kernel.error(response.msg);
  210.         };
  211.     },
  212.  
  213.     url(path)
  214.     {
  215.         return `url(${path})`;
  216.     },
  217.  
  218.     createCatsContainer()
  219.     {
  220.         return kernel.createElem(
  221.         {
  222.             "className" : "cats"
  223.         });
  224.     },
  225.  
  226.     createCat(title, image)
  227.     {
  228.         return kernel.createElem(
  229.         {
  230.             "className" : "cat",
  231.             "children"  :
  232.             [
  233.                 {
  234.                     "className" : "image",
  235.                     "style"     :
  236.                     {
  237.                         "backgroundImage" : kernel.url(image)
  238.                     }
  239.                 },
  240.  
  241.                 {
  242.                     "className" : "title",
  243.                     "innerText" : title
  244.                 },
  245.  
  246.                 {
  247.                     "className" : "button",
  248.                     "innerText" : "ОТКРЫТЬ КАТЕГОРИЮ"
  249.                 }
  250.             ]
  251.         });
  252.     },
  253.  
  254.     initCat()
  255.     {
  256.  
  257.     },
  258.  
  259.     renderCats()
  260.     {
  261.         kernel.resetBody();
  262.         kernel.setBodyHeading("Категории продукции");
  263.         var cat;
  264.         var container = kernel.createCatsContainer();
  265.         kernel.dataModel.cats.forEach(function(cat)
  266.         {
  267.             cat = kernel.createCat(cat.name, cat.img);
  268.             kernel.initCat(cat);
  269.             container.appendChild(cat);
  270.         });
  271.         kernel.getBody().appendChild(container);
  272.     },
  273.  
  274.     setView(view)
  275.     {
  276.         console.log(`Setting view: "${view}"`);
  277.         kernel.currentView = view;
  278.         switch(view)
  279.         {
  280.             case "brands":
  281.                 kernel.setActiveNav(view);
  282.                 kernel.getBrands();
  283.                 kernel.renderBrandCards();
  284.             break;
  285.             case "cats":
  286.                 kernel.setActiveNav(view);
  287.                 kernel.getCats();
  288.                 kernel.renderCats();
  289.             break;
  290.             case "production":
  291.                 kernel.setActiveNav(view);
  292.             break;
  293.         };
  294.     },
  295.  
  296.     getNavs()
  297.     {
  298.         return kernel.gea(".header-navs > .nav");
  299.     },
  300.  
  301.     disableAllNavs()
  302.     {
  303.         kernel.getNavs().forEach(function(navElem)
  304.         {
  305.             navElem.className = "nav";
  306.         });
  307.     },
  308.  
  309.     enableNav(navId)
  310.     {
  311.         kernel.ge(`#${navId}`).className = "nav underlined";
  312.     },
  313.  
  314.     setActiveNav(navId)
  315.     {
  316.         console.log(`Setting active nav: "${navId}"`);
  317.         kernel.disableAllNavs();
  318.         kernel.enableNav(navId);
  319.     },
  320.  
  321.     ge(selector, context)
  322.     {
  323.         return (context || document).querySelector(selector);
  324.     },
  325.  
  326.     gea(selector, context)
  327.     {
  328.         return (context || document).querySelectorAll(selector);
  329.     },
  330.  
  331.     createElem(virtualDOM)
  332.     {
  333.         var element = document.createElement(virtualDOM.tagName || "div");
  334.         for(propName in virtualDOM)
  335.         {
  336.             var propVal = virtualDOM[propName];
  337.             switch(propName)
  338.             {
  339.                 case "children":
  340.                     if(propVal.forEach)
  341.                     {  
  342.                         propVal.forEach(function(child, ind, arr)
  343.                         {
  344.                             element.appendChild(kernel.createElem(child));
  345.                         });
  346.                     }
  347.                     else
  348.                     {
  349.                         element.appendChild(kernel.createElem(propVal));
  350.                     };
  351.                 break;
  352.  
  353.                 default:
  354.                     element[propName] = propVal;
  355.                 break;
  356.             };
  357.         };
  358.         return element;
  359.     }
  360. }
  361.  
  362. window.onload = kernel.initialize;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement