Advertisement
Guest User

Untitled

a guest
Mar 5th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.28 KB | None | 0 0
  1. var isLoggedIn = false;
  2. var searchBoolean = false;
  3. //Run this function when we have loaded the HTML document
  4. window.onload = function () {
  5. //Request items from the server. The server expects no request body, so we set it to null
  6.  
  7.  
  8. //This code is called when the body element has been loaded and the application starts
  9. updateStockList();
  10.  
  11.  
  12. /**
  13. * Laver en ny bruger og disabler knappen så du ikke kan lave flere brugere
  14. * Du kan derefter logge in.
  15. */
  16. $("#create-customer-submit-button").click(function () {
  17. var login = document.getElementById("login-button");
  18. var create = document.getElementById("create-customer-submit-button");
  19. createCustomer();
  20. create.disabled = true;
  21. login.disabled = false;
  22.  
  23. });
  24.  
  25.  
  26. /**
  27. * Logger dig ind og fjerner div efter.
  28. */
  29. $("#login-button").on("click", function () {
  30. loginCustomer();
  31. makeLoginDivDisappear();
  32.  
  33. });
  34.  
  35.  
  36. /**
  37. * Viser din kurv ved tryk og hvis du trykker på den igen slider den up.
  38. */
  39. $('a#show-quick-cart').click(function () {
  40.  
  41. if ($('div#cart').css("display") == 'none') {
  42. $('div#cart').slideDown(500);
  43. } else {
  44. $('div#cart').slideUp(500);
  45. $("#buy-items-message").text("");
  46. }
  47. return false;
  48. });
  49.  
  50.  
  51. /**
  52. * Får login div frem og hvis du trykker på den igen forsvinder den.
  53. */
  54. $('a#login').click(function () {
  55.  
  56. if ($('div.login-div').css("display") == 'none') {
  57. $('div.login-div').slideDown(500);
  58. } else {
  59. $('div.login-div').slideUp(500);
  60. }
  61. return false;
  62. });
  63.  
  64. //ONLOAD FUNCTIONS
  65. buyItemsInCart();
  66. makeSearchEnter();
  67. myOrdersLogInFirst();
  68. goHome();
  69. hideFormerBought();
  70. };
  71.  
  72.  
  73. /**
  74. * Får login div til at slideup når musen forlader div'en.
  75. */
  76. function makeLoginDivDisappear() {
  77. $('div.login-div').mouseleave(function () {
  78. $('div.login-div').slideUp(500);
  79. });
  80. }
  81.  
  82.  
  83. /**
  84. * Når du søger efter noget og trykker på enter bliver search kaldt.
  85. */
  86. function makeSearchEnter() {
  87. $(document).on('keyup', "#searchField", function (e) {
  88. if (e.keyCode == 13) {
  89. searchForItems();
  90.  
  91. }
  92. });
  93. }
  94.  
  95.  
  96. /**
  97. * Vores søge funktion, den ser hvilken shop du kigger på nu.
  98. * Og søger derefter det og viser det på siden.
  99. */
  100. function searchForItems() {
  101. var search = document.getElementById("searchField").value;
  102. var shop = document.getElementById("mySelect").value;
  103. console.log(search.length);
  104. if (search.length != 0){
  105. $('#searchField').val('');
  106. $('#searchField').attr("placeholder",'Searching...');
  107.  
  108. }else {
  109. $('#searchField').attr("placeholder",'Please type in text');
  110. }
  111. $.post("/rest/shop/search", {search: search, shopID: shop}, function (response) {
  112. var items = JSON.parse(response);
  113. addItemsToTable(items);
  114. searchBoolean = true;
  115. $('#searchField').attr("placeholder",'Done! Enter new Word');
  116.  
  117. });
  118. }
  119.  
  120.  
  121. /**
  122. * Laver en customer og ser om det er udfyldt korrekt.
  123. * Giver besked tilbage til brugeren, hvis det ikke lykkes.
  124. */
  125. function createCustomer() {
  126. var createCustomerName = document.getElementById("createUserName").value;
  127. var createCustomerPassword = document.getElementById("createUserPassword").value;
  128.  
  129. if (!(createCustomerName.length > 0 && createCustomerPassword.length > 0)) {
  130. errorMessage("You must fill in both username and password!");
  131. } else {
  132. $.post("/rest/shop/createCustomer", {
  133. username: createCustomerName,
  134. password: createCustomerPassword
  135. }, function (name) {
  136. var login = document.getElementById("login-customer-submit-button");
  137. var create = document.getElementById("create-customer-submit-button");
  138. if (name == "true") {
  139. errorMessage("Your are now a customer. Please Log in");
  140. create.disabled = true;
  141. login.disabled = false;
  142. } else {
  143. errorMessage("We could not create you. Username is taken");
  144. login.disabled = false;
  145. create.disabled = false;
  146. }
  147. });
  148. }
  149.  
  150. }
  151.  
  152.  
  153. /**
  154. * Logger din bruger ind og sætter boolean: isLoggedIn til true.
  155. */
  156. function loginCustomer() {
  157. var customerName = document.getElementById("createUserName").value;
  158. var customerPass = document.getElementById("createUserPassword").value;
  159.  
  160. if (!(customerName.length > 0 && customerPass.length > 0)) {
  161. errorMessage("You must fill in both username and password!");
  162. } else {
  163. $.post("/rest/shop/loginCustomer", {
  164. username: customerName,
  165. password: customerPass
  166. }, function (name) {
  167. var login = document.getElementById("login-button");
  168. var create = document.getElementById("create-customer-submit-button");
  169. if (name == "true") {
  170. errorMessage("You are now logged in.");
  171. isLoggedIn = true;
  172. create.disabled = true;
  173. login.disabled = true;
  174. } else {
  175. errorMessage("We could not log you in. Did you type your username & Password correct?");
  176. }
  177.  
  178. });
  179.  
  180. }
  181. }
  182.  
  183.  
  184. /**
  185. * Se mine tidligere ordre. Skjuler nuværende items og viser dine købte.
  186. */
  187. function myOrdersLogInFirst() {
  188. $(document).on('click', '#my-orders-button', function () {
  189. if (isLoggedIn == false) {
  190. alert("You have to log in before you can see your previous orders!");
  191. } else {
  192. hideTable();
  193. getFormerBought();
  194. showFormerBought();
  195. }
  196. });
  197. }
  198.  
  199. /**
  200. * Til at vise brugeren, hvis det ikke lykkes at logge ind eller create customer.
  201. */
  202. function errorMessage(name) {
  203. $("#login-message-error-area").text(name);
  204. }
  205.  
  206. /**
  207. * Hvis det ikke lykkes at købe tingene i kurven.
  208. * Eller hvis det lykkes giver den besked.
  209. */
  210. function buyMessage(text) {
  211. $("#buy-items-message").text(text);
  212. }
  213.  
  214.  
  215. /**
  216. * Bliver kaldt når siden loades og laver selecter.
  217. */
  218. function updateStockList() {
  219. sendRequest("GET", "rest/shop/testing", null, function (itemsText) {
  220. //This code is called when the server has sent its data
  221. var items = JSON.parse(itemsText);
  222. addItemsToTable(items);
  223. getShopNames();
  224. });
  225. }
  226.  
  227. /**
  228. * Bliver kaldt for at opdatere itemsList.
  229. */
  230. function updateStockListWithOutSelect() {
  231. sendRequest("GET", "rest/shop/testing", null, function (itemsText) {
  232. //This code is called when the server has sent its data
  233. var items = JSON.parse(itemsText);
  234. addItemsToTable(items);
  235. });
  236. }
  237.  
  238. /**
  239. * Opdaterer itemsList med det shopID som Selecteren har.
  240. */
  241. function updateStockListWithOtherShopID() {
  242. var shopID = $('#mySelect').val();
  243. console.log(shopID);
  244. sendRequest("GET", "rest/shop/items/" + shopID, null, function (itemsText) {
  245. //This code is called when the server has sent its data
  246. var items = JSON.parse(itemsText);
  247. addItemsToTable(items);
  248. hideFormerBought();
  249. showTable();
  250. });
  251. }
  252.  
  253. /**
  254. * Funktion der gør det muligt at købe det der er i cart.
  255. */
  256. function buyItemsInCart() {
  257. $(document).on("click", "#buy-items-in-shopping-bag", function () {
  258.  
  259. if (isLoggedIn == false) {
  260. buyMessage("You need to login to buy your items");
  261. } else {
  262. buyMessage("");
  263. $.post("/rest/shop/buyItemsInCart", null, function (response) {
  264. console.log("We got response");
  265. buyMessage(response);
  266. updateStockListWithOutSelect();
  267.  
  268. var shoppingBag = document.getElementById("quickCart-products");
  269.  
  270. //FIXME
  271. /*
  272. var $length = $('#quickCart-products').find('div').length;
  273. console.log("length is " + $length);
  274. if ($length >= 1) {
  275. for(i = 0; i<$length; i++){
  276. console.log(i);
  277. console.log(shoppingBag);
  278. console.log(shoppingBag.childNodes[i]);
  279. shoppingBag.removeChild(shoppingBag.childNodes[i]);
  280. }
  281. }
  282. */
  283.  
  284.  
  285. var price = document.getElementById("total-price");
  286. price.innerHTML = "0 kr.";
  287. updateStockListWithOtherShopID();
  288. var noItems = document.getElementById("no-items");
  289. noItems.style.display = "block";
  290.  
  291. });
  292.  
  293. }
  294. });
  295. }
  296.  
  297.  
  298.  
  299. /**
  300. * //FIXME
  301. */
  302. function addToCartIfLoggedIn(itemID, itemStock) {
  303. if (itemStock > 0) {
  304. $.post("/rest/shop/addToCart", {itemID: itemID}, function (response) {
  305. //Do nothing...
  306.  
  307. });
  308. }
  309. }
  310.  
  311. function removeFromCartIfLoggedIn(itemID) {
  312. $.post("/rest/shop/removeFromCart", {itemID: itemID}, function (response) {
  313. //Do nothing...
  314. });
  315. }
  316.  
  317.  
  318.  
  319. /**
  320. * Denne metode viser processen når der tilføjes et item til kurven. Når der
  321. * trykkes på addItemButton tælles produktet 1 op. Det er kun muligt så længe stock er over 0.
  322. * Dette bliver kontrolleret af metoden eow.
  323. * removeButton gør det modsatte af dette, den tæller antallet af det givne produkt ned medmindre
  324. * der er 0 af disse produkter. Metoden removeFromQuickCart fjerne produktet fra kurven.
  325. */
  326. var stockValue;
  327. function addToCartChange() {
  328.  
  329. $(".addItemButton").click(function () {
  330.  
  331. var $this = $(this);
  332.  
  333. var $counter = $this.closest('td').next('.itemsInCart').find('span');
  334. var $number = parseInt($counter.text());
  335. var $numberToAdd = 1;
  336. var $stock = $this.closest('td').prev('td');
  337. var $stockValue = parseInt($stock.text());
  338. stockValue = $stockValue;
  339. eow();
  340.  
  341. function eow(stockValue) {
  342.  
  343. if ($number < $stockValue || $stockValue > 0) {
  344. $number = $number + $numberToAdd;
  345. $stockValue--;
  346. $counter.replaceWith("<span class='inputInCart'>" + $number + "</span>");
  347. $stock.replaceWith("<td>" + $stockValue + "</td>");
  348.  
  349.  
  350. } else {
  351.  
  352. $number = $stockValue;
  353. }
  354. }
  355.  
  356. price();
  357.  
  358. });
  359.  
  360. $(".removeItemButton").click(function () {
  361.  
  362. var $this = $(this);
  363.  
  364. var $counter = $this.closest('td').prev('.itemsInCart').find('span');
  365. var $number = parseInt($counter.text());
  366. var $numberToRemove = 1;
  367. var $stock = $this.closest('td').prev('td').prev('td').prev('td');
  368. var $stockValue = parseInt($stock.text());
  369.  
  370. if ($number > 0) {
  371. $number = $number - $numberToRemove;
  372. $stockValue++;
  373. $counter.replaceWith("<span class='inputInCart'>" + $number + "</span>")
  374. $stock.replaceWith("<td>" + $stockValue + "</td>")
  375. } else {
  376. $number = 0;
  377. }
  378.  
  379. price();
  380. removeFromQuickCart();
  381.  
  382. function removeFromQuickCart() {
  383.  
  384. var $name = $this.closest('td').prev('td').prev('td').prev('td').prev('td').prev('td').prev('td').prev('td');
  385. var $nameText = $name.text();
  386. console.log($nameText);
  387. var $thisName = '.' + $nameText.toString();
  388. console.log($thisName);
  389. if ($('#quickCart-products').find($thisName).length != 0) {
  390.  
  391. var elements = $('#quickCart-products').find($thisName);
  392. elements[0].parentNode.removeChild(elements[0]);
  393. }
  394.  
  395. if ($('#quickCart-products').find('p').length === 1) {
  396.  
  397. var noItems = document.getElementById("no-items");
  398. noItems.style.display = "block";
  399. }
  400. }
  401.  
  402. });
  403.  
  404. }
  405.  
  406.  
  407. /**
  408. * Tilføjer et given produkt fra tabellen til kurven
  409. */
  410. function addToQuickCart(itemName, itemPrice, itemURL) {
  411.  
  412. // DIV
  413. var divToAdd = document.createElement("div");
  414. divToAdd.className = "divProductWithItem";
  415.  
  416. // IMG
  417. var image = document.createElement('img');
  418. image.className = "fishPictures";
  419. image.src = itemURL;
  420. image.alt = "FAIL";
  421. divToAdd.appendChild(image);
  422.  
  423.  
  424. // NAME
  425. var para = document.createElement("p");
  426. para.textContent = itemName;
  427. para.className = itemName;
  428. divToAdd.appendChild(para);
  429.  
  430. // PRICE
  431. var price = document.createElement("p");
  432. price.textContent = itemPrice + ' kr.';
  433. price.className = "itemPriceQuickCart";
  434. divToAdd.appendChild(price);
  435.  
  436. $('.quickCart-products').prepend(divToAdd);
  437.  
  438. var noItems = document.getElementById("no-items");
  439. noItems.style.display = "none";
  440. }
  441.  
  442. /**
  443. * Denne metode gør det muligt at se navnene på de andre shops
  444. */
  445. function getShopNames() {
  446. sendRequest("GET", "rest/shop/getShopNames", null, function (shopNames) {
  447. var shops = JSON.parse(shopNames);
  448. viewShops(shops);
  449. });
  450. }
  451.  
  452. /**
  453. * Denne metode laver en liste over alle de shops der ligger på serveren.
  454. * Metoden selectList fylder produkttabellen ud med de produkter der tilhører den givne shop.
  455. * @param shopNames
  456. */
  457. function viewShops(shopNames) {
  458. var scroller = document.getElementById("scroller");
  459. var select = document.createElement("SELECT");
  460. for (i = 0; i < shopNames.length; i++) {
  461. (function (i) {
  462. var shop = shopNames[i];
  463.  
  464. select.setAttribute("id", "mySelect");
  465.  
  466.  
  467. scroller.appendChild(select);
  468.  
  469. var shopName = shop.shopName;
  470. var shopID = shop.ShopID;
  471.  
  472. var option = document.createElement("option");
  473. option.setAttribute("value", shopID);
  474.  
  475. if (shop.shopName == "Fish Shop") {
  476. option.setAttribute("selected", "selected");
  477. }
  478.  
  479. var shoptext = document.createTextNode(shopName);
  480. option.appendChild(shoptext);
  481. select.appendChild(option);
  482. }(i));
  483. }
  484. selectList();
  485. }
  486.  
  487. /**
  488. * Denne metode muliggør at vores customer kan komme til startsiden, som er siden med produkttabellen.
  489. * Dette opnås ved at trykke homeiconet eller ved at trykke på fishop logoet.
  490. */
  491. function goHome() {
  492. $(document).on('click', '#home-button', function () {
  493. showTable();
  494. hideFormerBought();
  495. if (searchBoolean == true){
  496. updateStockListWithOtherShopID();
  497. searchBoolean = false;
  498. }
  499. });
  500.  
  501. $(document).on('click', '#logo', function () {
  502.  
  503. showTable();
  504. hideFormerBought();
  505. if (searchBoolean == true){
  506. updateStockListWithOtherShopID();
  507. searchBoolean = false;
  508. }
  509. });
  510.  
  511. }
  512.  
  513. /**
  514. * Viser tidligere købte varer
  515. */
  516. function showFormerBought() {
  517. var list = document.getElementById("my-orders");
  518. list.style.display = "table";
  519. list.style.visibility = "visible";
  520. list.style.width = "100%";
  521. list.style.marginTop = "0px";
  522. }
  523.  
  524. /**
  525. * Gemmer tidligere købte varer
  526. */
  527. function hideFormerBought() {
  528.  
  529. var list = document.getElementById("my-orders");
  530. list.style.display = "none";
  531. list.style.visibility = "hidden";
  532. list.style.marginTop = "150px";
  533. }
  534.  
  535. /**
  536. * gemmer produkttabellen
  537. */
  538. function hideTable() {
  539. var table = document.getElementById("table-div");
  540. table.style.display = "none";
  541. table.style.visibility = "hidden";
  542. }
  543.  
  544. /**
  545. * Viser produkttabellen
  546. */
  547. function showTable() {
  548. var table = document.getElementById("table-div");
  549. table.style.display = "table";
  550. table.style.visibility = "visible";
  551. table.style.width = "100%";
  552. }
  553.  
  554. /**
  555. * Vi får de tidligere købte varer for den givne customer
  556. */
  557. function getFormerBought() {
  558. sendRequest("GET", "rest/shop/itemsBought", null, function (shopNames) {
  559. var shops = JSON.parse(shopNames);
  560. viewBoughtItems(shops);
  561. });
  562. }
  563.  
  564. /**
  565. * I denne metode udfylder vi tabellen der indeholder de tidligere købte produkter.
  566. * Dette opnås ved at loop'e gennem items og placere et item på en række, hvor itemID,
  567. * itemName osv. bliver sat i deres respective celler.
  568. * @param items
  569. */
  570. function viewBoughtItems(items) {
  571. //Get the table body we we can add items to it
  572. var tableBody = document.getElementById("itemTableBody-my-orders");
  573. //Remove all contents of the table body (if any exist)
  574. tableBody.innerHTML = "";
  575.  
  576.  
  577. var totalAmountForCustomer = 0;
  578. for (i = 0; i < items.length; i++) {
  579. //GET ITEMS FROM SERVER WITH ID
  580. (function (i) {
  581. var itemFormerBought = items[i];
  582.  
  583. var tr = document.createElement("tr");
  584.  
  585. //TIME BOUGHT
  586. var dateCell = document.createElement("td");
  587. var timeStamp = new Date(parseInt(itemFormerBought.saleTime));
  588. var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  589. var year = timeStamp.getFullYear();
  590. var month = months[timeStamp.getMonth()];
  591. var days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
  592. var date = timeStamp.getDate();
  593. var day = days[timeStamp.getDay()];
  594. var hours = timeStamp.getHours();
  595. var minutes = timeStamp.getMinutes();
  596. var seconds = timeStamp.getSeconds();
  597. //+ " at " +hours+ ":" + minutes + ":" + seconds
  598. dateCell.textContent = day + ", " + month + " " + date + ", " + year;
  599. tr.appendChild(dateCell);
  600.  
  601.  
  602. // ITEM NAME
  603. var nameCell = document.createElement("td");
  604. nameCell.className = "itemName";
  605. nameCell.textContent = itemFormerBought.item.itemName;
  606. tr.appendChild(nameCell);
  607.  
  608. // ITEM URL / PICTURE
  609. var picturecell = document.createElement("td");
  610. var image = document.createElement('img');
  611. image.className = "fishPictures";
  612. image.src = itemFormerBought.item.itemURL;
  613. image.alt = "FAIL";
  614. picturecell.appendChild(image);
  615. tr.appendChild(picturecell);
  616.  
  617.  
  618. //ITEM DESCRIPTION
  619. var htmlItemDescription = itemFormerBought.item.itemDescription;
  620. var htmlConverter = document.createElement("td");
  621. htmlConverter.innerHTML = htmlItemDescription;
  622. tr.appendChild(htmlConverter);
  623.  
  624.  
  625. // ITEM AMOUNT
  626. var itemAmount = document.createElement("td");
  627. var saleAmount = itemFormerBought.saleAmount;
  628. itemAmount.textContent = saleAmount;
  629. tr.appendChild(itemAmount);
  630.  
  631.  
  632. // ITEM PRICE
  633. var paraItemPrice = document.createElement("td");
  634. var itemPrice = itemFormerBought.item.itemPrice;
  635. paraItemPrice.textContent = itemPrice + " kr.";
  636. tr.appendChild(paraItemPrice);
  637.  
  638.  
  639. // TOTAL FOR THIS ITEM
  640. var paraItemTotalAmount = document.createElement("td");
  641. var totalForThisItem = (parseInt(itemPrice * saleAmount));
  642. totalAmountForCustomer += totalForThisItem;
  643. paraItemTotalAmount.textContent = totalForThisItem + " kr.";
  644. tr.appendChild(paraItemTotalAmount);
  645.  
  646.  
  647. //Append
  648. tableBody.appendChild(tr);
  649.  
  650.  
  651. }(i));
  652. }
  653.  
  654. var div = document.getElementById("result-my-orders");
  655. div.innerHTML = "";
  656. var totalPricePara = document.createElement("p");
  657. totalPricePara.textContent = "Total price for all your buys is " + totalAmountForCustomer;
  658. div.appendChild(totalPricePara);
  659. }
  660.  
  661.  
  662. /**
  663. * Denne metode styrer hvilken shops produkttabel der bliver vist
  664. */
  665. function selectList() {
  666. $('#mySelect').change(function () {
  667. var shopID = $(this).val();
  668. sendRequest("GET", "rest/shop/items/" + shopID, null, function (itemsText) {
  669. //This code is called when the server has sent its data
  670. var items = JSON.parse(itemsText);
  671. addItemsToTable(items);
  672. hideFormerBought();
  673. showTable();
  674. });
  675.  
  676. });
  677. }
  678.  
  679. /**
  680. * Denne metode summerer prisen for alle de produkter der befinder sig i kurven
  681. */
  682. function price() {
  683. var totalPriceSpan = document.getElementById("total-price"),
  684. $totalPriceSpan = totalPriceSpan,
  685. amount = document.getElementsByClassName("inputInCart"),
  686. price = document.getElementsByClassName("price"),
  687. parent = totalPriceSpan.parentNode,
  688. tempDiv = document.createElement('div');
  689.  
  690. var totalPrice = 0;
  691.  
  692. for (var i = 0; i < amount.length; i++) {
  693.  
  694.  
  695. var amountOfItem = parseInt(amount[i].innerText);
  696. var priceOfEach = parseInt(price[i].innerText);
  697.  
  698. var priceOfAll = amountOfItem * priceOfEach;
  699. var oldString = totalPrice.toString() + "kr.";
  700.  
  701. totalPrice += priceOfAll;
  702. var totalPriceString = totalPrice.toString() + "kr.";
  703. }
  704.  
  705. tempDiv.innerHTML = "<b class='total-price' id='total-price'>" + totalPriceString + "</b>";
  706.  
  707. var input = tempDiv.childNodes[0];
  708.  
  709. parent.replaceChild(input, totalPriceSpan);
  710.  
  711. }
  712.  
  713. /**
  714. * I denne metode udfylder vi vores produkttabel. Dette gøres ved at loop'e igennem
  715. * alle items og placere dem på hver sin rækk, med itemID, itemName osv. i ders respektive celler.
  716. * @param items
  717. */
  718. function addItemsToTable(items) {
  719. //Get the table body we we can add items to it
  720. var tableBody = document.getElementById("itemtablebody");
  721. //Remove all contents of the table body (if any exist)
  722. tableBody.innerHTML = "";
  723.  
  724. //Loop through the items from the server
  725. for (var i = 0; i < items.length; i++) {
  726. (function (i) {
  727. var item = items[i];
  728. //Create a new line for this item
  729. var tr = document.createElement("tr");
  730. tr.id = item.itemID;
  731.  
  732.  
  733. // ITEM NAME
  734. var nameCell = document.createElement("td");
  735. nameCell.className = "itemName";
  736. nameCell.textContent = item.itemName;
  737. tr.appendChild(nameCell);
  738.  
  739. //Item URL / ITEM PICTURE
  740. var picturecell = document.createElement("td");
  741. var image = document.createElement('img');
  742. image.className = "fishPictures";
  743. image.src = item.itemURL;
  744. image.alt = "FAIL";
  745. picturecell.appendChild(image);
  746. tr.appendChild(picturecell);
  747.  
  748. // ITEM PRICE
  749. var priceCell = document.createElement("td");
  750. priceCell.textContent = item.itemPrice;
  751. priceCell.className = "price";
  752. tr.appendChild(priceCell);
  753.  
  754. //ITEM DESCRIPTION
  755. var htmlItemDescription = item.itemDescription;
  756. var htmlConverter = document.createElement("td");
  757. htmlConverter.innerHTML = htmlItemDescription;
  758. tr.appendChild(htmlConverter);
  759.  
  760. // ITEM STOCK
  761. var itemStock = document.createElement("td");
  762. itemStock.textContent = item.itemStock;
  763. tr.appendChild(itemStock);
  764.  
  765.  
  766. // ADD TO CART
  767. var addToCart = document.createElement("td");
  768. var addToCartButton = document.createElement("BUTTON");
  769. addToCartButton.className = "addItemButton";
  770. var buttonText = document.createTextNode(" + ");
  771. addToCartButton.appendChild(buttonText);
  772. addToCart.appendChild(addToCartButton);
  773. tr.appendChild(addToCart);
  774.  
  775. // ADD TO CART - FUNCTION
  776. $(addToCartButton).click(function () {
  777. addToQuickCart(item.itemName, item.itemPrice, item.itemURL);
  778. addToCartIfLoggedIn(item.itemID, item.itemStock);
  779. });
  780.  
  781. // IN CART
  782. var itemsInCart = document.createElement("td");
  783. itemsInCart.className = "inCart";
  784. var inputField = document.createElement("span");
  785. inputField.textContent = "0";
  786. inputField.className = "inputInCart";
  787. itemsInCart.appendChild(inputField);
  788. itemsInCart.className = "itemsInCart";
  789. tr.appendChild(itemsInCart);
  790.  
  791. //REMOVE FROM CART
  792. var removeFromCart = document.createElement("td");
  793. var removeFromCartButton = document.createElement("BUTTON");
  794. removeFromCartButton.className = "removeItemButton";
  795. var buttonText = document.createTextNode(" - ");
  796. removeFromCartButton.appendChild(buttonText);
  797. removeFromCart.appendChild(removeFromCartButton);
  798. tr.appendChild(removeFromCart);
  799.  
  800. // REMOVE FROM CART - BUTTON
  801. $(removeFromCartButton).click(function () {
  802. removeFromCartIfLoggedIn(item.itemID);
  803. });
  804.  
  805.  
  806. // ITEM ID
  807. var itemID = document.createElement("td");
  808. itemID.textContent = item.itemID;
  809. tr.appendChild(itemID);
  810.  
  811. tableBody.appendChild(tr);
  812. })(i);
  813. }
  814.  
  815. addToCartChange();
  816.  
  817. }
  818.  
  819.  
  820. /////////////////////////////////////////////////////
  821. // Code from slides
  822. /////////////////////////////////////////////////////
  823.  
  824. /**
  825. * A function that can add event listeners in any browser
  826. */
  827. function addEventListener(myNode, eventType, myHandlerFunc) {
  828. if (myNode.addEventListener)
  829. myNode.addEventListener(eventType, myHandlerFunc, false);
  830. else
  831. myNode.attachEvent("on" + eventType,
  832. function (event) {
  833. myHandlerFunc.call(myNode, event);
  834. });
  835. }
  836.  
  837. var http;
  838. if (!XMLHttpRequest)
  839. http = new ActiveXObject("Microsoft.XMLHTTP");
  840. else
  841. http = new XMLHttpRequest();
  842.  
  843. function sendRequest(httpMethod, url, body, responseHandler) {
  844. http.open(httpMethod, url);
  845. if (httpMethod == "POST") {
  846. http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  847. }
  848. http.onreadystatechange = function () {
  849. if (http.readyState == 4 && http.status == 200) {
  850. responseHandler(http.responseText);
  851. }
  852. };
  853. http.send(body);
  854. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement