Shop JS Code Description Report
Shop JS Code Description Report
1. Project Description
The Simple Shop Management project is a web-based JavaScript application designed to
help small shops record daily transactions such as sales, supplies, and product summaries.
It provides a responsive interface to input, edit, and delete product records. It saves data
permanently using localStorage, auto-separates each day’s data, and includes a date selector
to view older records. It also features a visual bar chart to show which products were sold
most. The system works completely offline and does not require a backend.
```javascript
const form = document.getElementById("product-form");
const list = document.getElementById("product-list");
const summary = document.getElementById("summary");
const currentDay = document.getElementById("current-day");
const dateSelect = document.getElementById("date-select");
const chartCanvas = document.getElementById("salesChart");
```
```javascript
let products = JSON.parse(localStorage.getItem("products") || "[]");
let editIndex = null;
const today = new Date().toISOString().slice(0, 10);
```
```javascript
currentDay.textContent = `Day ${today.replace(/-/g, '/')}`;
```
4. Save Data to Browser
Stores all product data in localStorage.
```javascript
const saveToStorage = () => {
localStorage.setItem("products", JSON.stringify(products));
};
```
```javascript
const uniqueDates = [...new Set(products.map(p => p.date))];
dateSelect.innerHTML = ...;
```
Handles:
- Resetting the UI
- Filtering records by date
- Calculating totals
- Generating table rows
- Creating the bar graph
```javascript
const editProduct = index => {
const p = products[index];
...
editIndex = index;
};
```
```javascript
products.splice(index, 1);
saveToStorage();
populateDateSelector();
updateTable();
```
```javascript
new Chart(chartCanvas, {
type: 'bar',
data: { labels, datasets: [...] }
})
```
```javascript
if (editIndex !== null) {
products[editIndex] = newProduct;
} else {
products.push(newProduct);
}
```
```javascript
dateSelect.addEventListener('change', updateTable);
```
```javascript
populateDateSelector();
updateTable();
```