Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
5148c7e
Merge pull request #4 from vikrant-vikrant/DynamicLab
vikrant-vikrant Jan 8, 2025
6078136
add backend practice file
vikrant-vikrant Jan 9, 2025
0556d4d
Merge pull request #5 from vikrant-vikrant/main
vikrant-vikrant Jan 9, 2025
ff00e2b
Load products from the backend
vikrant-vikrant Jan 9, 2025
80ec18a
Merge pull request #6 from vikrant-vikrant/ProductsData
vikrant-vikrant Jan 10, 2025
2b6fbb3
Merge pull request #7 from vikrant-vikrant/DynamicLab
vikrant-vikrant Jan 10, 2025
696203b
Refactor product loading to use Promises for better error handling an…
vikrant-vikrant Jan 11, 2025
349e77e
Remove commented-out code for loading products and initialize product…
vikrant-vikrant Jan 19, 2025
d7d0c5f
adjust the code to run
vikrant-vikrant Jan 19, 2025
18213a0
Refactor checkout.js to use async/await for product loading and order…
vikrant-vikrant Jan 20, 2025
b35fdaa
Convert loadProducts from XHR to fetch
vikrant-vikrant Jan 20, 2025
d50ed18
Convert from promises to async await
vikrant-vikrant Jan 20, 2025
db8c3ce
Learn error handling
vikrant-vikrant Jan 20, 2025
8798ea6
Merge pull request #8 from vikrant-vikrant/DynamicLab
vikrant-vikrant Jan 20, 2025
41c3d18
Create order using the backend
vikrant-vikrant Jan 20, 2025
6287d57
Create order page
vikrant-vikrant Jan 21, 2025
857d43a
Add order details layout and styling
vikrant-vikrant Jan 21, 2025
0171312
Enhance order page layout and styling; add order header and total dis…
vikrant-vikrant Jan 23, 2025
9940dad
Add order details section with product information and styling
vikrant-vikrant Jan 23, 2025
a6ed174
Refactor order details layout and styling; enhance product display an…
vikrant-vikrant Jan 23, 2025
e19996d
Refactor order details rendering;
vikrant-vikrant Jan 24, 2025
fce5c3e
Add order details section with product information and styling #9 fr…
vikrant-vikrant Jan 24, 2025
d5f6161
Add view products button
vikrant-vikrant Jan 25, 2025
b7acc08
Refactor order summary layout and styling; enhance product display in…
vikrant-vikrant Jan 26, 2025
108889c
Refactor order cart styling and class names for consistency
vikrant-vikrant Jan 26, 2025
da4cf05
Add tracking page
vikrant-vikrant Jan 27, 2025
1313ddd
Add tracking page styles for improved layout and presentation
vikrant-vikrant Jan 27, 2025
a468633
Add tracking page styles for improved layout and presentation
vikrant-vikrant Jan 27, 2025
9c9b79b
Comment out unused renderCartSummary function in checkout.js for debu…
vikrant-vikrant Jan 27, 2025
b63787d
Merge branch 'main' into DynamicLab
vikrant-vikrant Jan 27, 2025
15257c6
Merge pull request #10 from vikrant-vikrant/DynamicLab
vikrant-vikrant Jan 27, 2025
491eab9
Merge pull request #11 from vikrant-vikrant/main
vikrant-vikrant Jan 27, 2025
561a7dd
Refactor footer and product loading functionality; enhance user exper…
vikrant-vikrant Jan 28, 2025
23a0f44
Add loader animations and styles
vikrant-vikrant Jan 29, 2025
0e93d12
Merge pull request #12 from vikrant-vikrant/DynamicLab
vikrant-vikrant Jan 29, 2025
cdb5fc4
Refactor currency formatting tests; update test suite structure and a…
vikrant-vikrant Jan 30, 2025
bef974c
Refactor currency formatting tests; restore and enhance test cases fo…
vikrant-vikrant Jan 31, 2025
5583d67
Remove obsolete Jasmine test
vikrant-vikrant Feb 3, 2025
e6f7d4f
add jasmin
vikrant-vikrant Feb 3, 2025
0dc964f
Remove default tests and add money tests
vikrant-vikrant Feb 3, 2025
4868270
Add Cart class and related tests for cart functionality
vikrant-vikrant Feb 4, 2025
8e001ff
Merge pull request #13 from vikrant-vikrant/DynamicLab
vikrant-vikrant Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ app.get("/checkout", (req, res) => {
res.render("listings/checkout.ejs");
});

app.get("/order", (req, res) => {
res.render("listings/order.ejs");
});

app.get("/tracking", (req, res) => {
res.render("listings/tracking.ejs");
});

app.listen(8000, () => {
console.log("App is listening on port 8000");
});
File renamed without changes.
64 changes: 64 additions & 0 deletions jasmine-standalone-5.1.1 (1)/moneyTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { formatCurrency } from "../public/js/money.js";
import { Cart } from "../public/js/cart-class.js";

describe("Test suite : formatCurrency", () => {
it("Converts cents into dollars", () => {
expect(formatCurrency(2000)).toEqual("20.00");
});
it("Works with zero", () => {
expect(formatCurrency(0)).toEqual("0.00");
});
it("round up to the nearest cent", () => {
expect(formatCurrency(2000.5)).toEqual("20.01");
});
});

describe("Cart Class", function () {
let cart;
const testProductId = "19c6a64a-5463-4d45-9af8-e41140a4100c";

// Mock localStorage
beforeEach(function () {
spyOn(localStorage, "getItem").and.callFake(() => {
return JSON.stringify([]);
});
spyOn(localStorage, "setItem");

const quantitySelector = document.createElement("input");
quantitySelector.classList.add(`js-quantity-selector-${testProductId}`);
quantitySelector.value = 1; // Default quantity for testing
document.body.appendChild(quantitySelector);

cart = new Cart("test-cart");
});

it("should add a new item to the cart", function () {
cart.addToCart(testProductId);

expect(cart.cartItems.length).toBe(1);
expect(cart.cartItems[0].productId).toBe(testProductId);
expect(cart.cartItems[0].quantity).toBe(1);
expect(localStorage.setItem).toHaveBeenCalled();
});

it("should increase quantity if item already exists", function () {
cart.addToCart(testProductId);
cart.addToCart(testProductId);

expect(cart.cartItems.length).toBe(1); // Still one item
expect(cart.cartItems[0].quantity).toBe(2); // Quantity increased
expect(localStorage.setItem).toHaveBeenCalledTimes(2);
});

// it("should handle multiple different products", function () {
// cart.addToCart("a45cfa0a-66d6-4dc7-9475-e2b01595f7d7");
// cart.addToCart("10ed8504-57db-433c-b0a3-fc71a35c88a1");

// expect(cart.cartItems.length).toBe(2);
// console.log(cart.cartItems)
// expect(cart.cartItems[0].productId).toBe("a45cfa0a-66d6-4dc7-9475-e2b01595f7d7");
// expect(cart.cartItems[1].productId).toBe("10ed8504-57db-433c-b0a3-fc71a35c88a1");
// expect(localStorage.setItem).toHaveBeenCalledTimes(2);
// });
});

23 changes: 23 additions & 0 deletions jasmine-standalone-5.1.1 (1)/test.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Jasmine Spec Runner v5.1.1</title>

<link
rel="shortcut icon"
type="image/png"
href="lib/jasmine-5.1.1/jasmine_favicon.png"
/>
<link rel="stylesheet" href="lib/jasmine-5.1.1/jasmine.css" />

<script src="lib/jasmine-5.1.1/jasmine.js"></script>
<script src="lib/jasmine-5.1.1/jasmine-html.js"></script>
<script src="lib/jasmine-5.1.1/boot0.js"></script>
<!-- optional: include a file here that configures the Jasmine env -->
<script src="lib/jasmine-5.1.1/boot1.js"></script>
<script type="module" src="moneyTest.js"></script>
</head>

<body></body>
</html>
28 changes: 28 additions & 0 deletions kaka.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Loader</title>
</head>
<link rel="stylesheet" href="loder.css">
<body>
<div class="loader">
<svg viewBox="0 0 80 80">
<circle cx="40" cy="40" r="32"></circle>
</svg>
</div>

<div class="loader triangle">
<svg viewBox="0 0 86 80">
<polygon points="43 8 79 72 7 72"></polygon>
</svg>
</div>

<div class="loader">
<svg viewBox="0 0 80 80">
<rect x="8" y="8" width="64" height="64"></rect>
</svg>
</div>
</body>
</html>
171 changes: 171 additions & 0 deletions loder.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
html {
-webkit-font-smoothing: antialiased;
}

* {
box-sizing: border-box;
}

*:before,
*:after {
box-sizing: border-box;
}

body {
min-height: 100vh;
background: #485769; /* Black background */
display: flex;
justify-content: center;
align-items: center;
}

.loader {
--path: #222f3d; /* Updated path color to white */
--dot: #febd69;
--duration: 3s;
width: 44px;
height: 44px;
position: relative;
margin: 0 8px; /* Reduced gap size */
}

.loader svg {
display: block;
width: 100%;
height: 100%;
}

.loader svg rect,
.loader svg polygon,
.loader svg circle {
fill: none;
stroke: var(--path); /* This will now be white */
stroke-width: 10px;
stroke-linejoin: round;
stroke-linecap: round;
}

.loader svg polygon {
stroke-dasharray: 145 76 145 76;
stroke-dashoffset: 0;
-webkit-animation: pathTriangle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
animation: pathTriangle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
}

.loader svg rect {
stroke-dasharray: 192 64 192 64;
stroke-dashoffset: 0;
-webkit-animation: pathRect 3s cubic-bezier(0.785, 0.135, 0.15, 0.86)
infinite;
animation: pathRect 3s cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
}

.loader svg circle {
stroke-dasharray: 150 50 150 50;
stroke-dashoffset: 75;
-webkit-animation: pathCircle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
animation: pathCircle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
}

.loader:before {
content: "";
width: 6px;
height: 6px;
border-radius: 50%;
position: absolute;
display: block;
background: var(--dot);
top: 37px;
left: 19px;
transform: translate(-18px, -18px);
-webkit-animation: dotMove var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
animation: dotMove var(--duration) cubic-bezier(0.785, 0.135, 0.15, 0.86)
infinite;
}

.loader.triangle {
width: 48px;
}

.loader.triangle:before {
left: 21px;
transform: translate(-10px, -18px);
-webkit-animation: dotTriangle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
animation: dotTriangle var(--duration)
cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite;
}

@keyframes pathTriangle {
33% {
stroke-dashoffset: 74;
}
66% {
stroke-dashoffset: 147;
}
100% {
stroke-dashoffset: 221;
}
}

@keyframes dotTriangle {
33% {
transform: translate(0, 0);
}
66% {
transform: translate(10px, -18px);
}
100% {
transform: translate(-10px, -18px);
}
}

@keyframes pathRect {
25% {
stroke-dashoffset: 64;
}
50% {
stroke-dashoffset: 128;
}
75% {
stroke-dashoffset: 192;
}
100% {
stroke-dashoffset: 256;
}
}

@keyframes dotMove {
25% {
transform: translate(0, 0);
}
50% {
transform: translate(18px, -18px);
}
75% {
transform: translate(0, -36px);
}
100% {
transform: translate(-18px, -18px);
}
}

@keyframes pathCircle {
25% {
stroke-dashoffset: 125;
}
50% {
stroke-dashoffset: 175;
}
75% {
stroke-dashoffset: 225;
}
100% {
stroke-dashoffset: 275;
}
}
28 changes: 26 additions & 2 deletions public/css/checkout/checkout.css
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,23 @@
padding-left: 8rem;
padding-right: 8rem;
}

.view-products {
padding: 12px 18px;
border-radius: 8px;
border: none;
font-size: 1.3rem;
font-weight: 500;
background-color: rgba(247, 202, 0, 0.8);
margin: 0rem 8rem;
cursor: pointer;
box-shadow: 0 2px 5px rgba(213, 217, 217, 0.5);
}
.view-products:hover {
background-color: #f7ca00;
}
.display-none{
display: none;
}
.checkout-grid {
display: grid;
grid-template-columns: 1fr 450px;
Expand Down Expand Up @@ -239,9 +255,17 @@
border: none;
font-size: 1.3rem;
font-weight: 500;
background-color: #f7ca00;
background-color: rgba(247, 202, 0, 0.8);
margin-top: 11px;
margin-bottom: 15px;
cursor: pointer;
}
.place-order-button:hover {
background-color: #f7ca00;
}
.place-order-button a,.view-products a {
text-decoration: none;
color: black;
}
.quantity-input {
width: 30px;
Expand Down
12 changes: 1 addition & 11 deletions public/css/footer.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,17 @@
display: flex;
justify-content: center;
align-items: center;
text-decoration: underline #37475a;
}
.foot-panell:hover {
background-color: #485769;
text-decoration: underline #485769;
}
.foot-panell2 {
background-color: #222f3d;
height: 300px;
color: white;
display: flex;
justify-content: space-evenly;
}
.panel2 {
background-color: #222f3d;
color: white;
display: flex;
justify-content: space-evenly;
}
.panel2 ul a {
cursor: pointer;
}
ul {
margin-top: 4rem;
}
Expand All @@ -39,6 +28,7 @@ ul a {
font-size: 1rem;
margin-top: 0.8rem;
color: #dddddd;
cursor: pointer;
}
ul a:hover {
text-decoration: underline;
Expand Down
Loading