diff --git a/Aufgaben/Aufgabe_06_2020-06-03/script.ts b/Aufgaben/Aufgabe_06_2020-06-03/script.ts index e69de29..7c67067 100644 --- a/Aufgaben/Aufgabe_06_2020-06-03/script.ts +++ b/Aufgaben/Aufgabe_06_2020-06-03/script.ts @@ -0,0 +1,313 @@ +// Datensammlung für Produkte + +namespace Aufgabe06 { + + let shoppingPrice: number = 0; + let shoppingCount: number = 0; + + interface Product { + title: string; + price: number; + size: string; + imgName: string; + description: string; + } + + interface Category { + title: string; + id: string; + products: Product[]; + } + + let categories: Category[] = [ + { + title: "Special Offers!", + id: "special", + products: [ + { + title: "Color: Rainbow", + price: 3279.99, + size: "4m²", + imgName: "grass-rainbow-square.png", + description: "If you can't choose one color, go and catch them all!" + }, { + title: "Color: White", + price: 3279.99, + size: "4m²", + imgName: "grass-white.png", + description: "The appearance of many sparkling stars on your garden floor." + }, { + title: "Color: Black", + price: 3279.99, + size: "4m²", + imgName: "grass-black.png", + description: "Dark as the night. Be careful not to form a black hole!" + }, { + title: "Pattern: Murica", + price: 3279.99, + size: "4m²", + imgName: "grass-green-murica.png", + description: "Texas, Trump, Guns & Hamburgers" + }, { + title: "Pattern: Schachbrett", + price: 3279.99, + size: "4m²", + imgName: "grass-green-chess-square.png", + description: "Show your intellect on your own lawn and embarrass your opponents!" + } + ] + }, { + title: "Bunte Gräser", + id: "bunt", + products: [ + { + title: "Color: Green", + price: 2339.99, + size: "4m²", + imgName: "grass-green.png", + description: "The standard model in our range. Ensures a natural look and pleasant freshness in your living room!" + }, { + title: "Color: Desert", + price: 2339.99, + size: "4m²", + imgName: "grass-yellow.png", + description: "Summer, sun and oh my god, I'm hot! Are they pyramids in my garden ?!" + }, { + title: "Color: Beach", + price: 2339.99, + size: "4m²", + imgName: "grass-orange.png", + description: "Summer, sun and hot feelings!" + }, { + title: "Pattern: Hell", + price: 2339.99, + size: "4m²", + imgName: "grass-red.png", + description: "Look into the abyss that could await you after your death and invite guests to it!" + }, { + title: "Pattern: Unicorn", + price: 2339.99, + size: "4m²", + imgName: "grass-pink.png", + description: "PINK FLUFFY UNICORN, DANCING ON RAINBOWS (which you can also buy in here) !!!" + }, { + title: "Pattern: Grape", + price: 2339.99, + size: "4m²", + imgName: "grass-purple.png", + description: "It looks purple. Do you have to say more?" + }, { + title: "Pattern: Atlantic", + price: 2339.99, + size: "4m²", + imgName: "grass-blue.png", + description: "Blue like the ocean. A deep look and mysterious nature." + } + ] + }, { + title: "Green-Tones", + id: "grün", + products: [ + { + title: "Green: 3B", + price: 3499.99, + size: "10m²", + imgName: "grass-green-dark-3.png", + description: "Green in every way. Nothing more to know about it." + }, { + title: "Green: 2B", + price: 3499.99, + size: "10m²", + imgName: "grass-green-dark-2.png", + description: "Green in every way. Nothing more to know about it." + }, { + title: "Green: B", + price: 3499.99, + size: "10m²", + imgName: "grass-green-dark-1.png", + description: "Green in every way. Nothing more to know about it." + }, { + title: "Green: HB", + price: 2339.99, + size: "10m²", + imgName: "grass-green.png", + description: "The standard model in our range. Ensures a natural look and pleasant freshness in your living room!" + }, { + title: "Green: H", + price: 3499.99, + size: "10m²", + imgName: "grass-green-light-1.png", + description: "Green in every way. Nothing more to know about it." + }, { + title: "Green: 2H", + price: 3499.99, + size: "10m²", + imgName: "grass-green-light-2.png", + description: "Green in every way. Nothing more to know about it." + }, { + title: "Green: 3H", + price: 3499.99, + size: "10m²", + imgName: "grass-green-light-3.png", + description: "Green in every way. Nothing more to know about it." + } + ] + } + ]; + + printProducts(); + + //create Structure; + + function printProducts(): void { + for (let nummer: number = 0; nummer < categories.length; nummer++) { + + let heading: HTMLHeadingElement = document.createElement("h1"); + heading.setAttribute("id", categories[nummer].id); + heading.innerHTML = `${categories[nummer].title}`; + (document.querySelector("#übersicht")).appendChild(heading); + + let container: HTMLDivElement = document.createElement("div"); + container.classList.add("container"); + (document.querySelector("#übersicht")).appendChild(container); + + for (let index: number = 0; index < categories[nummer].products.length; index++) { + let product: HTMLDivElement = document.createElement("div"); + product.classList.add("product"); + product.innerHTML = ` +

${categories[nummer].products[index].title}

+
+ ${categories[nummer].products[index].price.toFixed(2).toLocaleString()} ¥ + + +
+ Product +

Size: ${categories[nummer].products[index].size}

+
+

${categories[nummer].products[index].description}

+
+ `; + container.appendChild(product); + } + + } + + } + + function drawCategory(_catNumber: number): void { + clearProducts(); + + let heading: HTMLHeadingElement = document.createElement("h1"); + heading.setAttribute("id", categories[_catNumber].id); + heading.innerHTML = `${categories[_catNumber].title}`; + (document.querySelector("#übersicht")).appendChild(heading); + + let container: HTMLDivElement = document.createElement("div"); + container.classList.add("container"); + (document.querySelector("#übersicht")).appendChild(container); + + for (let index: number = 0; index < categories[_catNumber].products.length; index++) { + let product: HTMLDivElement = document.createElement("div"); + product.classList.add("product"); + product.innerHTML = ` +

${categories[_catNumber].products[index].title}

+
+ ${categories[_catNumber].products[index].price} ¥ + + +
+ Product +

Size: ${categories[_catNumber].products[index].size}

+
+

${categories[_catNumber].products[index].description}

+
+ `; + //product.querySelector("button")!.setAttribute("productPrice", "${categories[catNumber].products[index].price}"); + container.appendChild(product); + } + + } + + function clearProducts(): void { + console.log("Ich wurde geklickt"); + for (let nummer: number = 0; nummer < categories.length; nummer++) { + let alles: HTMLDivElement = (document.querySelector("#übersicht")); + alles.innerHTML = ""; + } + } + + (document.querySelector("#special_a")).addEventListener("click", drawSpecial); + (document.querySelector("#bunt_a")).addEventListener("click", drawBunt); + (document.querySelector("#grün_a")).addEventListener("click", drawGrün); + (document.querySelector("#all_a")).addEventListener("click", drawAll); + + function drawSpecial(): void { + drawCategory(0); + } + function drawBunt(): void { + drawCategory(1); + } + function drawGrün(): void { + drawCategory(2); + } + function drawAll(): void { + clearProducts(); + printProducts(); + } + + function money(_event: Event): void { + let target: HTMLElement = (_event.target); + let price: number = parseFloat(target.getAttribute("productPrice")!); + console.log("Artikel-Preis: " + price + " ¥"); + shoppingPrice += price; + console.log("Shopping-Cart-Preis: " + shoppingPrice + " ¥"); + shoppingCount++; + (document.querySelector("#shoppingCartNumber")).innerHTML = shoppingCount.toLocaleString(); + } + + const buttons: HTMLCollectionOf = document.getElementsByClassName("addProduct"); + for (const button of buttons) { + button.addEventListener("click", money); + } +} + +// Folgender auskommentierter Code dient mir als Archiv für Gedankenansätze oder Verläufe. +// Wenn dies nicht gerne gesehen ist, gebt mir kurz Bescheid und ich werde es entfernen + +/* +function zeichnen(tagArray: Tag[]): void { + for (let i: number = 0; i < tagArray.length ; i++){ + let title: HTMLElement = document.createElement(tagArray[i].tag); + title.innerHTML = "I bims title"; + title.classList.add("title"); + if (tagArray[i].image) { + title.setAttribute("src", "value"); + title.setAttribute("alt", "value"); + } + document.body.appendChild(title); + } +} +*/ + +/* +console.log("Hello Console"); +let theName: String = "Justin" + "Dretvic" + 20; +console.log(theName); +*/ + +/* +# Template für ein Produkt in HTML +
tag class +

Color: Rainbow

tag class content +
tag class + 3279,99 ¥ tag class content + tag content + tag content +
+ Product tag attribute1 attribute2 +

Size: 4m²

tag class content +
tag class +

If you can't choose one color, go and catch them all!

tag content +
+
+*/ \ No newline at end of file