Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 선언형
- 프로젝트 계확
- 링크계층
- 지연시간
- 페이징 교체 알고리즘
- 4-way handshake
- 다단계 큐
- 절차형
- modebit
- 요구사항 분석
- 개발 모델
- 처리량
- 3-way handshake
- 프로그래머스 데브코스
- 함수형
- 프록시패턴
- PERT/CPM
- MVVM
- nosql
- 관계형 데이터베이스
- 노출모듈패턴
- CPU 스케줄링
- MongoDB
- 메모리
- M/M
- 인터넷계층
- 스레싱
- redis
- 다크모드
- 럼바우
Archives
- Today
- Total
노트
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 17 (가계부 기능 추가2) 본문
앞으로 약 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 등등
기능을 개발하는 것보다 글자나 가격, 버튼 위치, 크기, 색 이런 자잘한 부분들을 수정하는 게 더 오래 걸렸다😅
디자인은 할때마다 매번 새롭게 느껴진다.... 애니메이션은 다음에 시간이 나면 시도하는 걸로
관련글
'TIL' 카테고리의 다른 글
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 19 (0) | 2024.05.10 |
---|---|
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 18 (0) | 2024.05.09 |
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 16 (0) | 2024.05.07 |
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 15 (가계부 기능 추가) (0) | 2024.05.05 |
[클라우딩 어플리케이션 엔지니어링 TIL] - DAY 14 (0) | 2024.05.02 |