From c9af3139a1cd2c39c696c42ee3f8ad1ae77206cb Mon Sep 17 00:00:00 2001 From: arozynek Date: Sun, 13 Feb 2022 23:11:07 +0100 Subject: [PATCH 01/14] Initial commit --- index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/index.html b/index.html index e69de29b..56efbdba 100644 --- a/index.html +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + + Document + + + + + \ No newline at end of file From d9d3b6cb78235b32e289c69f29a9fc44fd8f9668 Mon Sep 17 00:00:00 2001 From: arozynek Date: Sun, 22 May 2022 23:41:40 +0200 Subject: [PATCH 02/14] Add canvas and buttons --- .vscode/settings.json | 3 ++ index.html | 35 +++++++++++++++------ main.js | 72 +++++++++++++++++++++++++++++++++++++++++++ style.css | 14 +++++++++ 4 files changed, 114 insertions(+), 10 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..6f3a2913 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/index.html b/index.html index 56efbdba..087b79fe 100644 --- a/index.html +++ b/index.html @@ -1,12 +1,27 @@ - - - - - Document - - - - - \ No newline at end of file + + + + + Anna's canvas + + + + +
+
+ The canva is error +
+ + +
+
+ + + diff --git a/main.js b/main.js index e69de29b..61739d1b 100644 --- a/main.js +++ b/main.js @@ -0,0 +1,72 @@ + +document.addEventListener("DOMContentLoaded", () => { + + +const canvas = document.getElementById('canvas'); +const ctx = canvas.getContext("2d"); + +// Resizing +canvas.height = window.innerHeight/ 1.5; +canvas.width = window.innerWidth/1.1; +window.addEventListener("resize", () => { + canvas.height = window.innerHeight/ 1.5; + canvas.width = window.innerWidth/1.1; +}) +// Variables +let painting = false; + +const startPosition = function () { + painting = true; +}; +const finishPosition = function () { + painting = false; + ctx.beginPath(); +}; +function draw (mousePosition) { + if (!painting) return; + ctx.lineWidth = 10; + ctx.lineCap = "round"; + ctx.lineTo(mousePosition.clientX, mousePosition.clientY); + ctx.stroke(); + // ctx.beginPath(); + // ctx.moveTo(mousePosition.clientX, mousePosition.clientY); +}; + +const navWidth = document.getElementById("nav"); +console.log(navWidth.style.width); +// Event listeners +canvas.addEventListener("mousedown", startPosition); +canvas.addEventListener("mouseup", finishPosition); +canvas.addEventListener("mousemove", draw); +// Clearing canvas +const clearBttn = document.getElementById("clear-button"); +clearBttn.addEventListener("click", function() { ctx.clearRect(0, 0, canvas.width, canvas.height) }) + + +/* +ctx.lineWidth = 10; +//whole canvas +ctx.fillStyle = 'white'; +ctx.fillRect(0,0, canvas.width, canvas.height); + +// Wall +ctx.strokeRect(75, 120, 150, 110); + +ctx.fillStyle = 'black'; +// Door +ctx.fillRect(130, 170, 40, 60); + +// Roof +ctx.beginPath(); +ctx.moveTo(50, 120); +ctx.lineTo(150, 30); +ctx.lineTo(250, 120); +ctx.closePath(); +ctx.stroke(); + +// clear rectangles: +// ctx.clearRect(0,0,canvas.width, canvas.height); +*/ + + +}) \ No newline at end of file diff --git a/style.css b/style.css index e69de29b..19d0483e 100644 --- a/style.css +++ b/style.css @@ -0,0 +1,14 @@ +.body { + box-sizing: border-box; +} +#nav { +top: 0; +left: 0; +width: 100%; +background-color: rgba(166, 166, 173, 0.205); +display: flex; +justify-content: space-around; +} +canvas { + border: 2px solid black; +} From 97f8ae46bd1a93d0a788ae57f2f701cc4d3cb7d5 Mon Sep 17 00:00:00 2001 From: arozynek Date: Tue, 24 May 2022 16:39:21 +0200 Subject: [PATCH 03/14] Drawing position fixed --- README.md | 4 ++++ main.js | 42 +++++++++++++++++------------------------- style.css | 24 +++++++++++++++--------- 3 files changed, 36 insertions(+), 34 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..326218be --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +This is my JavaScript final project of the CDV Frontend Developer's classes. + +It's responsive web application, that allows you to draw any shapes using randomly selected colors. +You can also add emoji to your drawing. \ No newline at end of file diff --git a/main.js b/main.js index 61739d1b..bbbec3ca 100644 --- a/main.js +++ b/main.js @@ -22,11 +22,24 @@ const finishPosition = function () { painting = false; ctx.beginPath(); }; -function draw (mousePosition) { + +// Canvas position +function getMousePos(canvas, e) { + var rect = canvas.getBoundingClientRect(); + // console.log(rect); + return { + x: (e.clientX - rect.left) / (rect.right - rect.left) * canvas.width, + y: (e.clientY - rect.top) / (rect.bottom - rect.top) * canvas.height + }; +} + + +function draw (e) { if (!painting) return; ctx.lineWidth = 10; ctx.lineCap = "round"; - ctx.lineTo(mousePosition.clientX, mousePosition.clientY); + var mousePos = getMousePos(canvas, e); + ctx.lineTo(mousePos.x, mousePos.y); ctx.stroke(); // ctx.beginPath(); // ctx.moveTo(mousePosition.clientX, mousePosition.clientY); @@ -43,30 +56,9 @@ const clearBttn = document.getElementById("clear-button"); clearBttn.addEventListener("click", function() { ctx.clearRect(0, 0, canvas.width, canvas.height) }) -/* -ctx.lineWidth = 10; -//whole canvas -ctx.fillStyle = 'white'; -ctx.fillRect(0,0, canvas.width, canvas.height); - -// Wall -ctx.strokeRect(75, 120, 150, 110); - -ctx.fillStyle = 'black'; -// Door -ctx.fillRect(130, 170, 40, 60); - -// Roof -ctx.beginPath(); -ctx.moveTo(50, 120); -ctx.lineTo(150, 30); -ctx.lineTo(250, 120); -ctx.closePath(); -ctx.stroke(); -// clear rectangles: -// ctx.clearRect(0,0,canvas.width, canvas.height); -*/ +// //whole canvas +// ctx.fillStyle = 'white'; }) \ No newline at end of file diff --git a/style.css b/style.css index 19d0483e..d357f1bf 100644 --- a/style.css +++ b/style.css @@ -1,14 +1,20 @@ -.body { - box-sizing: border-box; +* { + margin: 0; + padding: 0; + box-sizing: inherit; +} + +body { + box-sizing: border-box; } #nav { -top: 0; -left: 0; -width: 100%; -background-color: rgba(166, 166, 173, 0.205); -display: flex; -justify-content: space-around; + top: 0; + left: 0; + width: 100%; + background-color: rgba(166, 166, 173, 0.205); + display: flex; + justify-content: space-around; } canvas { - border: 2px solid black; + border: 2px solid black; } From 9a819f93dc641114f88561d4e4e72670fa0120fd Mon Sep 17 00:00:00 2001 From: arozynek Date: Tue, 24 May 2022 23:05:26 +0200 Subject: [PATCH 04/14] Colors generator is working --- index.html | 16 ++++++-- main.js | 108 +++++++++++++++++++++++++++++++++-------------------- style.css | 2 +- 3 files changed, 82 insertions(+), 44 deletions(-) diff --git a/index.html b/index.html index 087b79fe..3a326a99 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,7 @@ Anna's canvas + -
+
+
+
+ +
+
+
+ +
+
The canva is error -
+
-
+
diff --git a/main.js b/main.js index bbbec3ca..028ad57d 100644 --- a/main.js +++ b/main.js @@ -1,40 +1,39 @@ - document.addEventListener("DOMContentLoaded", () => { + const api = "https://x-colors.herokuapp.com/api/random"; + // -------------------------CANVAS----------------------- + const canvas = document.getElementById("canvas"); + const ctx = canvas.getContext("2d"); -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext("2d"); - -// Resizing -canvas.height = window.innerHeight/ 1.5; -canvas.width = window.innerWidth/1.1; -window.addEventListener("resize", () => { - canvas.height = window.innerHeight/ 1.5; - canvas.width = window.innerWidth/1.1; -}) -// Variables -let painting = false; + // Resizing + canvas.height = window.innerHeight / 1.5; + canvas.width = window.innerWidth; + window.addEventListener("resize", () => { + canvas.height = window.innerHeight / 1.5; + canvas.width = window.innerWidth / 1.1; + }); + // Variables + let painting = false; -const startPosition = function () { + const startPosition = function () { painting = true; -}; -const finishPosition = function () { + }; + const finishPosition = function () { painting = false; ctx.beginPath(); -}; + }; -// Canvas position -function getMousePos(canvas, e) { + // Canvas position + function getMousePos(canvas, e) { var rect = canvas.getBoundingClientRect(); // console.log(rect); return { - x: (e.clientX - rect.left) / (rect.right - rect.left) * canvas.width, - y: (e.clientY - rect.top) / (rect.bottom - rect.top) * canvas.height + x: ((e.clientX - rect.left) / (rect.right - rect.left)) * canvas.width, + y: ((e.clientY - rect.top) / (rect.bottom - rect.top)) * canvas.height, }; -} + } - -function draw (e) { + function draw(e) { if (!painting) return; ctx.lineWidth = 10; ctx.lineCap = "round"; @@ -43,22 +42,51 @@ function draw (e) { ctx.stroke(); // ctx.beginPath(); // ctx.moveTo(mousePosition.clientX, mousePosition.clientY); -}; - -const navWidth = document.getElementById("nav"); -console.log(navWidth.style.width); -// Event listeners -canvas.addEventListener("mousedown", startPosition); -canvas.addEventListener("mouseup", finishPosition); -canvas.addEventListener("mousemove", draw); -// Clearing canvas -const clearBttn = document.getElementById("clear-button"); -clearBttn.addEventListener("click", function() { ctx.clearRect(0, 0, canvas.width, canvas.height) }) + } + // Event listeners + canvas.addEventListener("mousedown", startPosition); + canvas.addEventListener("mouseup", finishPosition); + canvas.addEventListener("mousemove", draw); + // Clearing canvas + const clearBttn = document.getElementById("clear-button"); + clearBttn.addEventListener("click", function () { + ctx.clearRect(0, 0, canvas.width, canvas.height); + }); + // ------------------------CANVAS-END----------------------------------------- + // Generating colors + function getApiResponse(url) { + const colorsRequest = fetch(url); + return colorsRequest + .then((response) => response.json()) + .catch((error) => { + alert("Error - data can't be loaded"); + }); + } + const colorButton = document.getElementById("color-button"); + colorButton.addEventListener("click", getColors); + function getColors() { + let oldColors = document.getElementsByClassName('new-colors'); + for (var i = (oldColors.length - 1) ; i >= 0; i--) { + oldColors[i].parentNode.removeChild(oldColors[i]) + }; + getApiResponse(api).then((colors) => addColorStyle(colors.hex)); + getApiResponse(api).then((colors) => addColorStyle(colors.hex)); + getApiResponse(api).then((colors) => addColorStyle(colors.hex)); + }; +{/* +circle + */} + function addColorStyle(hex) { + const colors = document.getElementById("generated-colors"); + const colorsElement = document.createElement("span"); + colorsElement.style.color = hex; + colorsElement.classList = 'new-colors' + colorsElement.innerText = "Color"; + colors.append(colorsElement); + } -// //whole canvas -// ctx.fillStyle = 'white'; - - -}) \ No newline at end of file + // //whole canvas + // ctx.fillStyle = 'white'; +}); diff --git a/style.css b/style.css index d357f1bf..64aac697 100644 --- a/style.css +++ b/style.css @@ -16,5 +16,5 @@ body { justify-content: space-around; } canvas { - border: 2px solid black; + border: 2px solid #CD81D4; } From 1dade72ed2760526d1199c4ecc48fab6c40fbeb7 Mon Sep 17 00:00:00 2001 From: arozynek Date: Wed, 25 May 2022 00:21:20 +0200 Subject: [PATCH 05/14] Changing colors works --- index.html | 2 +- main.js | 41 +++++++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/index.html b/index.html index 3a326a99..9cc0b219 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ Anna's canvas - +
The canva is error
- - Save + + Save
diff --git a/style.css b/style.css index 7034e487..124aa0a6 100644 --- a/style.css +++ b/style.css @@ -1,7 +1,12 @@ +@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@700&family=Special+Elite&display=swap'); + * { margin: 0; padding: 0; box-sizing: inherit; + font-family: 'Special Elite', cursive; + + background-color: #8573f8; } body { @@ -12,17 +17,28 @@ body { top: 0; left: 0; width: 100%; - height: 8vh; - background-color: #E0E0E0; - align-items: center; + height: 10vh; + min-height: 50px; + background-color: #eda900; + align-items: flex-end; display: flex; justify-content: space-around; text-transform: uppercase; } +#nav p { +min-height: 48px; +margin-top: 2px; +background-color: #8573f8; +padding: 3vh; +border-top-right-radius: 20px; +border-top-left-radius: 20px; +color: #f4da79; +} + #header { display: flex; height: 12vh; - background-color: #E0E0E0; + background-color:#8573f8; align-items: center; justify-content: space-around; } @@ -35,13 +51,23 @@ body { } .right { width: 52rem; - font-size: 2rem; + font-size: 3rem; +} + +.btn{ + background-color: #0019d988; + color: ghostwhite; + border: 2px #0019d988; + padding: 10px; + } canvas { border: 2px solid #CD81D4; - display: flex; - justify-content: center; - align-content: center; + position: absolute; + top: 60%; + left: 50%; + transform: translate(-50%,-50%); + background-color: ghostwhite; } a { text-decoration: none; @@ -55,7 +81,7 @@ a:hover { } #previous { - background-color: #a82323; + background-color: #001ad9; color: rgb(255, 255, 255); border-radius: 50%; } @@ -64,10 +90,13 @@ a:hover { } #next { - background-color: #fae20b; + background-color: #001ad9; color: white; border-radius: 50%; } +#generated-emojis { + height: 10vh +} #emojis-button { display: block; } From 9697fd0851e7dd13587fe342bbf5f25e74ec5111 Mon Sep 17 00:00:00 2001 From: arozynek Date: Tue, 31 May 2022 03:01:07 +0200 Subject: [PATCH 12/14] Styles added; color API still broken --- images/logo.png | Bin 0 -> 26028 bytes images/sitting-person.png | Bin 0 -> 50035 bytes index.html | 98 ++++++++++++++++++++++------ main.js | 20 ++++-- style.css | 134 ++++++++++++++++++++++++++++++-------- 5 files changed, 197 insertions(+), 55 deletions(-) create mode 100644 images/logo.png create mode 100644 images/sitting-person.png diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c312f389e1563305e437d3e413b5f391638a0a GIT binary patch literal 26028 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 literal 0 HcmV?d00001 diff --git a/images/sitting-person.png b/images/sitting-person.png new file mode 100644 index 0000000000000000000000000000000000000000..134af21e6b14ac5fa7c93f9ef8615cb5fec54ece GIT binary patch literal 50035 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 -
- The canva is error -
- - Save + +
+
+
+ +
+
+ + + + +
+
+ The canva is error +
+ + Save +
+
+
+

You have got any projects yet. Draw something!

+
+
+ +
+

Hello!

+

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corporis dolorum ab incidunt ipsum, officiis delectus repudiandae quaerat, voluptatibus ipsam asperiores eveniet? Dolores tenetur rem veritatis perferendis reiciendis corporis laboriosam dolore! + Provident, quaerat ab nesciunt amet saepe dicta, modi necessitatibus repudiandae ex, debitis iste! Hic ratione animi quis esse saepe ad accusamus quae, laudantium placeat debitis harum maiores pariatur nam necessitatibus. + Laudantium dolor praesentium, voluptatum facilis ea reiciendis porro maiores velit neque rem. Inventore, praesentium? Architecto labore ut totam repellat nam debitis ratione illum, quam aspernatur fuga consectetur amet nulla enim?

+ My image
-
+
+ + + diff --git a/main.js b/main.js index a08b8e8b..f97bd668 100644 --- a/main.js +++ b/main.js @@ -4,16 +4,17 @@ document.addEventListener("DOMContentLoaded", () => { // DOM Elements const $previousButton = document.getElementById("previous"); - const $previousNav = document.getElementById("previous-project") + const $previousTab = document.getElementById("previous-project") const $previousSection = document.getElementById("previous-project-display") const $nextButton = document.getElementById("next"); const $genEmojis = document.getElementById("generated-emojis"); const save = document.getElementById("save-button"); - const $displayImage = document.getElementById("previous-project-display"); const $clearBttn = document.getElementById("clear-button"); const $colorButton = document.getElementById("color-button"); const $emojiButton = document.getElementById("emojis-button"); const colors = document.getElementById("generated-colors"); + const $tab = document.querySelectorAll('#nav button'); + // -------------------------CANVAS----------------------- @@ -76,18 +77,21 @@ document.addEventListener("DOMContentLoaded", () => { // }); $clearBttn.addEventListener("click", () => { + if ($previousSection.firstElementChild.tagName = 'h2') { + $previousSection.firstElementChild.className = 'hide'; + }; const addImg = document.createElement("img"); addImg.classList.add("saved-image"); addImg.src = imgLink(); addImg.alt = "Previous project"; addImg.style.alignContent = "center"; - $displayImage.append(addImg); + $previousSection.append(addImg); ctx.clearRect(0, 0, canvas.width, canvas.height); }); - $previousNav.addEventListener('click', () => { - $previousSection.style.display = "flex"; - }); + // $previousTab.addEventListener('click', () => { + // $previousSection.style.display = "flex"; + // }); // ------------------------CANVAS-END----------------------------------------- @@ -130,7 +134,7 @@ document.addEventListener("DOMContentLoaded", () => { colorsElement.addEventListener("click", () => ctx.strokeStyle = `${hex}`); colors.append(colorsElement); } - + getColors(); $colorButton.addEventListener("click", () => getColors()); /* ------------------- XML file -------------------------- @@ -243,5 +247,7 @@ http.send(JSON.stringify(data)); save.addEventListener("click", imgLink); + + // end of DOMContentLoaded }); diff --git a/style.css b/style.css index 124aa0a6..ab3d5084 100644 --- a/style.css +++ b/style.css @@ -1,15 +1,17 @@ -@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@700&family=Special+Elite&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Orbitron:wght@700&family=Special+Elite&display=swap"); * { margin: 0; padding: 0; box-sizing: inherit; - font-family: 'Special Elite', cursive; - + font-family: "Special Elite", cursive; + font:bold; background-color: #8573f8; + } body { + height: 100%; box-sizing: border-box; } @@ -19,54 +21,88 @@ body { width: 100%; height: 10vh; min-height: 50px; - background-color: #eda900; + background-color: #ecb600; align-items: flex-end; display: flex; justify-content: space-around; text-transform: uppercase; -} -#nav p { -min-height: 48px; -margin-top: 2px; -background-color: #8573f8; -padding: 3vh; -border-top-right-radius: 20px; -border-top-left-radius: 20px; -color: #f4da79; + background-image: ; +} +#nav button { + min-height: 48px; + margin-top: 2px; + background-color: #ecb600; + padding: 3vh; + border-top-right-radius: 20px; + border-top-left-radius: 20px; + color: #f8e9b5; + cursor: pointer; + outline: none; + border: none; + width: 30%; + float: left; + font-size: large; +} +#nav .tablink:hover { + background-color: #bb8f00; +} +.page-content { + color: white; + display: none; + padding: 20px 20px; + height: 100%; } -#header { +#rendered-elements { display: flex; height: 12vh; - background-color:#8573f8; + background-color: #8573f8; align-items: center; justify-content: space-around; } - -.left { - width: 52rem; +#draw-page .single-section { display: flex; flex-direction: column; + justify-content: space-between; align-items: center; } +.left { + flex-direction: column; + align-items: center; + float: left; + border: 0; + padding: 0; + width: 20%; + margin-top: 20%; + } .right { - width: 52rem; - font-size: 3rem; + flex-direction: column; + align-items: center; + float: right; + border: 0; + padding: 0; + width: 20%; + margin-top: 20%; } -.btn{ + +.btn { background-color: #0019d988; color: ghostwhite; border: 2px #0019d988; padding: 10px; - + margin: 4px; + cursor: pointer; + width: 200px; + text-align: center; + } canvas { - border: 2px solid #CD81D4; + border: 2px solid #cd81d4; position: absolute; top: 60%; left: 50%; - transform: translate(-50%,-50%); + transform: translate(-50%, -50%); background-color: ghostwhite; } a { @@ -86,16 +122,18 @@ a:hover { border-radius: 50%; } #previous-project-display { - display: none; + display: inline-block } - #next { background-color: #001ad9; color: white; border-radius: 50%; } +#generated-colors { + text-align: center; +} #generated-emojis { - height: 10vh + display: inline-block; } #emojis-button { display: block; @@ -103,4 +141,46 @@ a:hover { .saved-image { height: 35vh; align-items: center; +} +#nav #logo { + cursor: default; + border-bottom-left-radius: 50%; + border-bottom-right-radius: 50%; + height: 181px; + margin-top: auto; + width: 16%; + z-index: 10; +} +#logo img { + height: 16vh; + background: none; + border-radius: 50%; +} +#about-me { + text-align: center; +} +.text { + display: block; + text-align: center; + padding: 20px 30px; + justify-content: space-between; + max-width: 100vh; + margin: auto; +} +#previous-projects-page { + margin: auto; + display: block; + padding: 10px 30px; + text-align: center; +} +#about-me img { +max-width: 30vh; +max-height: fit-content; +} +.show { + display: block; + margin-top: 50% +} +.hide { + display: none; } \ No newline at end of file From b73342e1260f329e0a9c01419fc95967f849fd54 Mon Sep 17 00:00:00 2001 From: arozynek Date: Wed, 1 Jun 2022 00:26:17 +0200 Subject: [PATCH 13/14] Open tabs script changed --- index.html | 40 +++++++++--------------------- main.js | 31 +++++++++++++++++++---- style.css | 72 +++++++++++++++++++++++++++++++++++++++++------------- 3 files changed, 92 insertions(+), 51 deletions(-) diff --git a/index.html b/index.html index 0dfdae11..ca0627c3 100644 --- a/index.html +++ b/index.html @@ -19,23 +19,23 @@ @@ -48,16 +48,16 @@
- + - - + +
The canva is error
- - Save + + Save as png
@@ -78,23 +78,5 @@

Hello!

- diff --git a/main.js b/main.js index f97bd668..3d4846f8 100644 --- a/main.js +++ b/main.js @@ -4,8 +4,10 @@ document.addEventListener("DOMContentLoaded", () => { // DOM Elements const $previousButton = document.getElementById("previous"); - const $previousTab = document.getElementById("previous-project") - const $previousSection = document.getElementById("previous-project-display") + const $previousTab = document.getElementById("previous-project-btn") + const $aboutMeTab = document.getElementById('me-btn'); + const $drawTab = document.getElementById('new-image-btn'); + const $previousSection = document.getElementById("previous-project-display"); const $nextButton = document.getElementById("next"); const $genEmojis = document.getElementById("generated-emojis"); const save = document.getElementById("save-button"); @@ -13,9 +15,26 @@ document.addEventListener("DOMContentLoaded", () => { const $colorButton = document.getElementById("color-button"); const $emojiButton = document.getElementById("emojis-button"); const colors = document.getElementById("generated-colors"); - const $tab = document.querySelectorAll('#nav button'); + + function openPage(pageName,elmnt) { + var i, tabcontent, tablinks; + tabcontent = document.getElementsByClassName("page-content"); + for (i = 0; i < tabcontent.length; i++) { + tabcontent[i].style.display = "none"; + } + tablinks = document.getElementsByClassName("tablink"); + for (i = 0; i < tablinks.length; i++) { + tablinks[i].style.backgroundColor = ""; + } + document.getElementById(pageName).style.display = "block"; + elmnt.style.backgroundColor = '#8573f8'; + } + $drawTab.addEventListener('click', function() {openPage('draw-page',this)}); + $previousTab.addEventListener('click', function() {openPage('previous-projects-page',this)}); + $aboutMeTab.addEventListener('click', function() {openPage('about-me-page',this)}); + $drawTab.click(); // -------------------------CANVAS----------------------- const $canvas = document.getElementById("canvas"); @@ -131,6 +150,7 @@ document.addEventListener("DOMContentLoaded", () => { colorsElement.classList = "material-symbols-rounded"; colorsElement.id = i; colorsElement.innerText = "circle"; + colorsElement.title = 'Click to choose' colorsElement.addEventListener("click", () => ctx.strokeStyle = `${hex}`); colors.append(colorsElement); } @@ -189,8 +209,9 @@ http.send(JSON.stringify(data)); renderEmoji() { const emojisElement = document.createElement("span"); emojisElement.innerText = this.character; + emojisElement.title = 'Click to choose' emojisElement.addEventListener("click", () => { - ctx.font = "15vh verdana"; + ctx.font = "12vh verdana"; // use these alignment properties for "better" positioning ctx.textAlign = "center"; ctx.textBaseline = "middle"; @@ -246,7 +267,7 @@ http.send(JSON.stringify(data)); } save.addEventListener("click", imgLink); - + $emojiButton.click(); // end of DOMContentLoaded diff --git a/style.css b/style.css index ab3d5084..795eb90a 100644 --- a/style.css +++ b/style.css @@ -13,6 +13,11 @@ body { height: 100%; box-sizing: border-box; + -ms-overflow-style: none; /* Internet Explorer 10+ */ + scrollbar-width: none; /* Firefox */ +} +body::-webkit-scrollbar { + display: none; /* Safari and Chrome */ } #nav { @@ -21,17 +26,16 @@ body { width: 100%; height: 10vh; min-height: 50px; - background-color: #ecb600; + background-color: #f8a500; align-items: flex-end; display: flex; justify-content: space-around; text-transform: uppercase; - background-image: ; } #nav button { min-height: 48px; margin-top: 2px; - background-color: #ecb600; + background-color:#f8a500; padding: 3vh; border-top-right-radius: 20px; border-top-left-radius: 20px; @@ -73,16 +77,16 @@ body { border: 0; padding: 0; width: 20%; - margin-top: 20%; + margin-top: 10%; + justify-content: space-between; } .right { flex-direction: column; align-items: center; float: right; border: 0; - padding: 0; width: 20%; - margin-top: 20%; + margin-top: 15%; } @@ -90,17 +94,29 @@ body { background-color: #0019d988; color: ghostwhite; border: 2px #0019d988; - padding: 10px; + border-radius: 5px; + padding: 18px; margin: 4px; cursor: pointer; width: 200px; text-align: center; + font-size:medium; + border: 2px solid #001ad9; } +.btn:hover { + background-color: #ffc400; + color:#001ad9; +} +.btn:active { + background-color: #ffc400; + box-shadow: 0 1px #001ad9; + transform: translateY(2px); +} canvas { border: 2px solid #cd81d4; position: absolute; - top: 60%; + top: 55%; left: 50%; transform: translate(-50%, -50%); background-color: ghostwhite; @@ -121,8 +137,19 @@ a:hover { color: rgb(255, 255, 255); border-radius: 50%; } +#previous-projects-page { + margin: auto; + display: block; + padding: 10px 30px; + text-align: center; + max-width: fit-content; +} #previous-project-display { - display: inline-block + display: inline-block; + margin-left: 30vh; +} +#rendered-elements{ + justify-content: space-between; } #next { background-color: #001ad9; @@ -135,13 +162,22 @@ a:hover { #generated-emojis { display: inline-block; } +#generated-emojis span { + cursor: pointer; +} #emojis-button { - display: block; + display:block; + margin: auto; + margin-top: 5px; } .saved-image { - height: 35vh; + height: 33vh; align-items: center; + margin: 15px 10px; + background-color: #43da532b; } + + #nav #logo { cursor: default; border-bottom-left-radius: 50%; @@ -149,6 +185,7 @@ a:hover { height: 181px; margin-top: auto; width: 16%; + min-width: fit-content; z-index: 10; } #logo img { @@ -167,12 +204,6 @@ a:hover { max-width: 100vh; margin: auto; } -#previous-projects-page { - margin: auto; - display: block; - padding: 10px 30px; - text-align: center; -} #about-me img { max-width: 30vh; max-height: fit-content; @@ -183,4 +214,11 @@ max-height: fit-content; } .hide { display: none; +} +.emojis { + text-align: center; + /* display: contents; */ + display: block; + font-size: 30px; + margin: 10px; } \ No newline at end of file From 1bd608dff156d5cbe4785df25377164596cb3648 Mon Sep 17 00:00:00 2001 From: arozynek Date: Wed, 1 Jun 2022 22:58:31 +0200 Subject: [PATCH 14/14] Finished project --- README.md | 4 +- index.html | 75 +++++++++++++------------- main.js | 156 ++++++++++++++++++++--------------------------------- style.css | 62 ++++++++++----------- 4 files changed, 129 insertions(+), 168 deletions(-) diff --git a/README.md b/README.md index 326218be..21d5f0d2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ This is my JavaScript final project of the CDV Frontend Developer's classes. -It's responsive web application, that allows you to draw any shapes using randomly selected colors. -You can also add emoji to your drawing. \ No newline at end of file +It's web application, that allows you to draw any shapes using randomly selected colors. +You can also add emoji to your drawing and save it to your device. \ No newline at end of file diff --git a/index.html b/index.html index ca0627c3..456dbfb6 100644 --- a/index.html +++ b/index.html @@ -8,75 +8,74 @@
- +
- +
- The canva is error + The canva is error
- - Save as png + + Save as jpeg
-

You have got any projects yet. Draw something!

+

You haven't got projects yet. Draw something!

Hello!

-

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corporis dolorum ab incidunt ipsum, officiis delectus repudiandae quaerat, voluptatibus ipsam asperiores eveniet? Dolores tenetur rem veritatis perferendis reiciendis corporis laboriosam dolore! - Provident, quaerat ab nesciunt amet saepe dicta, modi necessitatibus repudiandae ex, debitis iste! Hic ratione animi quis esse saepe ad accusamus quae, laudantium placeat debitis harum maiores pariatur nam necessitatibus. - Laudantium dolor praesentium, voluptatum facilis ea reiciendis porro maiores velit neque rem. Inventore, praesentium? Architecto labore ut totam repellat nam debitis ratione illum, quam aspernatur fuga consectetur amet nulla enim?

- My image +

+ Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corporis + dolorum ab incidunt ipsum, officiis delectus repudiandae quaerat, + voluptatibus ipsam asperiores eveniet? Dolores tenetur rem veritatis + perferendis reiciendis corporis laboriosam dolore! Provident, + quaerat ab nesciunt amet saepe dicta, modi necessitatibus + repudiandae ex, debitis iste! Hic ratione animi quis esse saepe ad + accusamus quae, laudantium placeat debitis harum maiores pariatur + nam necessitatibus. Laudantium dolor praesentium, voluptatum facilis + ea reiciendis porro maiores velit neque rem. Inventore, praesentium? + Architecto labore ut totam repellat nam debitis ratione illum, quam + aspernatur fuga consectetur amet nulla enim? +

+ My image
- - diff --git a/main.js b/main.js index 3d4846f8..cfae5e9e 100644 --- a/main.js +++ b/main.js @@ -1,23 +1,23 @@ document.addEventListener("DOMContentLoaded", () => { const api = "https://x-colors.herokuapp.com/api/random"; - const localApi = "http://localhost:5000/api/random"; + const apiKey = "b2d5f5b8a462e384858bbfeaf3f0bf1b84fcd82e"; + const emojiList = `https://emoji-api.com/emojis?access_key=${apiKey}`; // DOM Elements const $previousButton = document.getElementById("previous"); - const $previousTab = document.getElementById("previous-project-btn") - const $aboutMeTab = document.getElementById('me-btn'); - const $drawTab = document.getElementById('new-image-btn'); + const $previousTab = document.getElementById("previous-project-btn"); + const $aboutMeTab = document.getElementById("me-btn"); + const $drawTab = document.getElementById("new-image-btn"); const $previousSection = document.getElementById("previous-project-display"); const $nextButton = document.getElementById("next"); const $genEmojis = document.getElementById("generated-emojis"); - const save = document.getElementById("save-button"); + const $save = document.getElementById("save-button"); const $clearBttn = document.getElementById("clear-button"); const $colorButton = document.getElementById("color-button"); const $emojiButton = document.getElementById("emojis-button"); - const colors = document.getElementById("generated-colors"); - + const $colors = document.getElementById("generated-colors"); - function openPage(pageName,elmnt) { + function openPage(pageName, elmnt) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("page-content"); for (i = 0; i < tabcontent.length; i++) { @@ -28,12 +28,18 @@ document.addEventListener("DOMContentLoaded", () => { tablinks[i].style.backgroundColor = ""; } document.getElementById(pageName).style.display = "block"; - elmnt.style.backgroundColor = '#8573f8'; + elmnt.style.backgroundColor = "#8573f8"; } - $drawTab.addEventListener('click', function() {openPage('draw-page',this)}); - $previousTab.addEventListener('click', function() {openPage('previous-projects-page',this)}); - $aboutMeTab.addEventListener('click', function() {openPage('about-me-page',this)}); + $drawTab.addEventListener("click", function () { + openPage("draw-page", this); + }); + $previousTab.addEventListener("click", function () { + openPage("previous-projects-page", this); + }); + $aboutMeTab.addEventListener("click", function () { + openPage("about-me-page", this); + }); $drawTab.click(); // -------------------------CANVAS----------------------- @@ -58,7 +64,7 @@ document.addEventListener("DOMContentLoaded", () => { } // PAINTING - + let painting = false; const startPosition = function () { painting = true; @@ -76,29 +82,19 @@ document.addEventListener("DOMContentLoaded", () => { ctx.lineTo(mousePos.x, mousePos.y); ctx.stroke(); ctx.save(); - // ctx.beginPath(); - // ctx.moveTo(mousePosition.clientX, mousePosition.clientY); } - // Event listeners + // Canvas event listeners canvas.addEventListener("mousedown", startPosition); canvas.addEventListener("mouseup", finishPosition); canvas.addEventListener("mousemove", draw); - // Clearing canvas and adding previous project - // document.addEventListener("keydown", (e) => { - // if (e.ctrlKey && e.key === "z") { - // ctx.restore(); - // // change settings to previous from the stack - // } - // }); - $clearBttn.addEventListener("click", () => { - if ($previousSection.firstElementChild.tagName = 'h2') { - $previousSection.firstElementChild.className = 'hide'; - }; + if (($previousSection.firstElementChild.tagName = "h2")) { + $previousSection.firstElementChild.className = "hide"; + } const addImg = document.createElement("img"); addImg.classList.add("saved-image"); addImg.src = imgLink(); @@ -108,10 +104,6 @@ document.addEventListener("DOMContentLoaded", () => { ctx.clearRect(0, 0, canvas.width, canvas.height); }); - // $previousTab.addEventListener('click', () => { - // $previousSection.style.display = "flex"; - // }); - // ------------------------CANVAS-END----------------------------------------- function getApiResponse(url) { @@ -124,79 +116,49 @@ document.addEventListener("DOMContentLoaded", () => { ${url}` ); })); - } - - // Generating colors - + } + + // Generating colors + + function addColorStyle(hex, i) { + const colorsElement = document.createElement("span"); + colorsElement.style.color = hex; + colorsElement.classList = "material-symbols-rounded"; + colorsElement.id = i; + colorsElement.innerText = "circle"; + colorsElement.title = "Click to choose"; + colorsElement.addEventListener("click", () => ctx.strokeStyle = `${hex}`); + $colors.append(colorsElement); + } + function getColors() { let oldColors = document.getElementsByClassName("material-symbols-rounded"); for (var i = oldColors.length - 1; i >= 0; i--) { oldColors[i].parentNode.removeChild(oldColors[i]); } - getApiResponse(localApi).then((colors) => + getApiResponse(api).then((colors) => addColorStyle(colors.hex, "color1") ); - getApiResponse(localApi).then((colors) => + getApiResponse(api).then((colors) => addColorStyle(colors.hex, "color2") ); - getApiResponse(localApi).then((colors) => + getApiResponse(api).then((colors) => addColorStyle(colors.hex, "color3") ); } - function addColorStyle(hex, i) { - const colorsElement = document.createElement("span"); - colorsElement.style.color = hex; - colorsElement.classList = "material-symbols-rounded"; - colorsElement.id = i; - colorsElement.innerText = "circle"; - colorsElement.title = 'Click to choose' - colorsElement.addEventListener("click", () => ctx.strokeStyle = `${hex}`); - colors.append(colorsElement); - } getColors(); $colorButton.addEventListener("click", () => getColors()); - /* ------------------- XML file -------------------------- -// when first colors API doesn't work - - var url = "http://colormind.io/api/"; -var data = { - model : "default", - input : [[44,43,44],[90,83,82],"N","N","N"] -} - -var http = new XMLHttpRequest(); - -var threeColors = []; -http.onreadystatechange = function() { - if(http.readyState == 4 && http.status == 200) { - var palette = JSON.parse(http.responseText).result; - for (let i = 1; i< palette.length-1; i++) { - threeColors.push(palette[i]) - } - } -} -// tablica z tablicą z trzema kolorami -console.log(threeColors); -http.open("POST", url, true); -http.send(JSON.stringify(data)); - -// colorsElement.style.color= (155, 102, 102); --> rgb - ------------------------- XML fetch end ------------------------- -*/ - // ------------------------emojis----------------- - const apiKey = "b2d5f5b8a462e384858bbfeaf3f0bf1b84fcd82e"; - const emojiList = `https://emoji-api.com/emojis?access_key=${apiKey}`; + class Emoji { constructor(group, character, id) { this.id = id; this.group = group; this.character = character; - }; + } emojis = document.getElementById("generated-emojis"); renderGroup() { const groupElement = document.createElement("span"); @@ -209,10 +171,9 @@ http.send(JSON.stringify(data)); renderEmoji() { const emojisElement = document.createElement("span"); emojisElement.innerText = this.character; - emojisElement.title = 'Click to choose' + emojisElement.title = "Click to choose"; emojisElement.addEventListener("click", () => { ctx.font = "12vh verdana"; - // use these alignment properties for "better" positioning ctx.textAlign = "center"; ctx.textBaseline = "middle"; painting = false; @@ -230,45 +191,44 @@ http.send(JSON.stringify(data)); } } - $emojiButton.addEventListener("click", async () => { const emojiJson = await getApiResponse(emojiList); var counter = 0; function changeEmojis() { for (let i = counter; i < counter + 10; i++) { - const emoji = new Emoji(emojiJson[i].group, emojiJson[i].character, i); - emoji.renderEmoji(); - }} - function delateEmojis(){ + const emoji = new Emoji(emojiJson[i].group, emojiJson[i].character, i); + emoji.renderEmoji(); + } + } + function delateEmojis() { while ($genEmojis.firstChild) { $genEmojis.removeChild($genEmojis.lastChild); } - }; + } delateEmojis(); changeEmojis(); $nextButton.addEventListener("click", () => { delateEmojis(); - counter += 10; - changeEmojis(); + counter += 10; + changeEmojis(); }); $previousButton.addEventListener("click", () => { delateEmojis(); - counter -= 10; + counter -= 10; changeEmojis(); }); - }); - + }); + // Save image function imgLink() { const link = canvas.toDataURL("image/png"); - save.href = link; - save.download = "IMAGE.jpeg"; + $save.href = link; + $save.download = "IMAGE.jpeg"; return link; } - save.addEventListener("click", imgLink); + $save.addEventListener("click", imgLink); $emojiButton.click(); - // end of DOMContentLoaded }); diff --git a/style.css b/style.css index 795eb90a..8d164977 100644 --- a/style.css +++ b/style.css @@ -5,19 +5,18 @@ padding: 0; box-sizing: inherit; font-family: "Special Elite", cursive; - font:bold; + font: bold; background-color: #8573f8; - } body { height: 100%; box-sizing: border-box; - -ms-overflow-style: none; /* Internet Explorer 10+ */ - scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* Internet Explorer 10+ */ + scrollbar-width: none; /* Firefox */ } -body::-webkit-scrollbar { - display: none; /* Safari and Chrome */ +body::-webkit-scrollbar { + display: none; /* Safari and Chrome */ } #nav { @@ -35,7 +34,7 @@ body::-webkit-scrollbar { #nav button { min-height: 48px; margin-top: 2px; - background-color:#f8a500; + background-color: #f8a500; padding: 3vh; border-top-right-radius: 20px; border-top-left-radius: 20px; @@ -64,6 +63,7 @@ body::-webkit-scrollbar { align-items: center; justify-content: space-around; } + #draw-page .single-section { display: flex; flex-direction: column; @@ -79,7 +79,7 @@ body::-webkit-scrollbar { width: 20%; margin-top: 10%; justify-content: space-between; - } +} .right { flex-direction: column; align-items: center; @@ -89,7 +89,6 @@ body::-webkit-scrollbar { margin-top: 15%; } - .btn { background-color: #0019d988; color: ghostwhite; @@ -100,13 +99,12 @@ body::-webkit-scrollbar { cursor: pointer; width: 200px; text-align: center; - font-size:medium; + font-size: medium; border: 2px solid #001ad9; - } .btn:hover { background-color: #ffc400; - color:#001ad9; + color: #001ad9; } .btn:active { background-color: #ffc400; @@ -132,11 +130,6 @@ a:hover { color: black; } -#previous { - background-color: #001ad9; - color: rgb(255, 255, 255); - border-radius: 50%; -} #previous-projects-page { margin: auto; display: block; @@ -148,9 +141,15 @@ a:hover { display: inline-block; margin-left: 30vh; } -#rendered-elements{ +#rendered-elements { justify-content: space-between; } + +#previous { + background-color: #001ad9; + color: rgb(255, 255, 255); + border-radius: 50%; +} #next { background-color: #001ad9; color: white; @@ -159,6 +158,17 @@ a:hover { #generated-colors { text-align: center; } +#generated-colors span:active { + border: #001ad9 solid 2px; + border-radius: 50%; +} +.emojis { + text-align: center; + /* display: contents; */ + display: block; + font-size: 30px; + margin: 10px; +} #generated-emojis { display: inline-block; } @@ -166,7 +176,7 @@ a:hover { cursor: pointer; } #emojis-button { - display:block; + display: block; margin: auto; margin-top: 5px; } @@ -177,7 +187,6 @@ a:hover { background-color: #43da532b; } - #nav #logo { cursor: default; border-bottom-left-radius: 50%; @@ -205,20 +214,13 @@ a:hover { margin: auto; } #about-me img { -max-width: 30vh; -max-height: fit-content; + max-width: 30vh; + max-height: fit-content; } .show { display: block; - margin-top: 50% + margin-top: 50%; } .hide { display: none; } -.emojis { - text-align: center; - /* display: contents; */ - display: block; - font-size: 30px; - margin: 10px; -} \ No newline at end of file