This is a solution to the Time tracking dashboard challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Users should be able to:
- View the optimal layout for the site depending on their device's screen size
- See hover states for all interactive elements on the page
- Switch between viewing Daily, Weekly, and Monthly stats
- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
I learnt quite a few things actually, the most important one being how to fetch data from an API (well the process is same as of fetching a local json file) and then changing the DOM based on that data.
This function below is what i'm the most proud of:-
function updateDOMwithData(json, timeframe) {
const container = document.querySelector("#grid-container");
// getting the profile element
const profile = document.querySelector(".profile");
// then clearing all stuff
container.innerHTML = "";
// inserting the profile element
container.insertAdjacentElement("afterbegin", profile);
// inserting all the cards according to the data given
json.forEach((element) => {
container.insertAdjacentHTML(
"beforeend",
`
<div class="card ${element.title.replace(" ", "-").toLowerCase()}">
<div class="card-content">
<div class="card-top-bar">
<div class="card-title">${element.title}</div>
<img class="ellipsis" src="./images/icon-ellipsis.svg" alt="ellipsis">
</div>
<h1 class="card-time">${element.timeframes[timeframe].current}hrs</h1>
<p class="subtle">Last ${
timeframe === "daily"
? "day"
: timeframe === "weekly"
? "week"
: timeframe === "monthly"
? "month"
: "error"
} - ${element.timeframes[timeframe].previous}hrs</p>
</div>
</div>
`
);
});
}
Working with APIs will be a must to stay in this field... so yeah i'll probably keep focusing on that in my future projects.
- Website - !MAD!
- Frontend Mentor - @iMADi-ARCH
- Twitter - @iMADi69235681
- LinkedIn - Aditya Nandan
Ty to Vatsal for helping me :) Go follow em.