TIL
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 17 (가계부 기능 추가2)
blackmilktea
2024. 5. 8. 23:57
앞으로 약 2주간 코딩 테스트를 위한 알고리즘 강의를 진행해서
남는 시간에 지난 내용 복습할 겸 가계부를 좀 더 개선해 봤다.
1. 총지출, 수입 추가
현재 자산 아래쪽에 소비 내역의 총지출과 수입을 추가하여 재정 상황을 빠르게 파악할 수 있다.
handleGetConsumptionDetails 안에서 소비 내역 리스트들을 구성할 때 지출과 수입의 합도 같이 계산해서
소비 내역을 추가, 삭제할 때 알아서 다시 갱신 하도록 했다.
const $totalMinusValue = document.querySelector(".total-minus-value");
const $totalPlusValue = document.querySelector(".total-plus-value");
const handleGetConsumptionDetails = async () => {
let totalPlus = 0, totalMinus = 0;
list.sort((a, b) => {...})
.map(({ createAt, category, description, price, fundsAtTheTime, id }) => {
...
if (category == "plus") totalPlus += price;
else totalMinus += price;
...
}
});
$totalMinusValue.textContent = totalMinus.toLocaleString();
$totalPlusValue.textContent = "+"+totalPlus.toLocaleString();
};
2) 선택한 카테고리 내역만 출력
전체 또는 지출과 수입 내역만 볼 수 있도록 조그마한 버튼들을 추가했다.
먼저 handleGetConsumptionDetails 안에서 각 소비 내역에 class 속성으로 카테고리 값을 미리 추가해놓고
$li.classList.add(category); // category: "minus" or "plus"
카테고리 값에 따른 정렬은 sort-list.js파일을 따로 만들어서 작업했다.
전체(All) 버튼이 눌리면 모든 리스트가 보여야 하므로 querySelectorAll로 접근하여 forEach문으로 요소들을 toShow
$sortButtonAll.addEventListener("click", function () {
if (!$sortButtonAll.className.includes("active")) {
document.querySelectorAll(".minus").forEach(function (elem) { toShow(elem) });
document.querySelectorAll(".plus").forEach(function (elem) { toShow(elem) });
$sortButtonAll.classList.add("active");
reMoveActive($sortButtonMinus);
reMoveActive($sortButtonPlus);
}
});
const reMoveActive = (node) => {
if (node.className.includes("active"))
node.classList.remove("active");
}
지출(minus) 버튼이 눌린다면 아래 코드처럼 동작하게 했다.
$sortButtonMinus.addEventListener("click", function () {
if (!$sortButtonMinus.className.includes("active")) {
// minus들은 toShow
document.querySelectorAll(".minus").forEach(function (elem) { toShow(elem) });
// plus들은 toHidden
document.querySelectorAll(".plus").forEach(function (elem) { toHidden(elem) });
// 눌린 버튼 활성화
$sortButtonMinus.classList.add("active");
// 나머지 버튼은 비활성화
reMoveActive($sortButtonAll);
reMoveActive($sortButtonPlus);
}
});
3) 기타 수정 사항
좀 더 많은 목록들이 오목조목하게 보이도록 스타일도 조금 수정했다.
- 아래의 있던 캡션을 위로 올리고 날짜를 표시
- 위아래 padding, margin 축소
- description과 price를 같은 줄에 표시하고 space-between 등등
기능을 개발하는 것보다 글자나 가격, 버튼 위치, 크기, 색 이런 자잘한 부분들을 수정하는 게 더 오래 걸렸다😅
디자인은 할때마다 매번 새롭게 느껴진다.... 애니메이션은 다음에 시간이 나면 시도하는 걸로
관련글