정산달력
This commit is contained in:
@@ -14,10 +14,20 @@ export const CalendarAmountRow = ({
|
|||||||
const makeTitle = () => {
|
const makeTitle = () => {
|
||||||
let rs = [];
|
let rs = [];
|
||||||
if(settlementStatus === SettlementStatus.SCHEDULED){
|
if(settlementStatus === SettlementStatus.SCHEDULED){
|
||||||
rs.push(<span className="scheduled">예정</span>)
|
rs.push(
|
||||||
|
<span
|
||||||
|
key='amount-label-scheduled'
|
||||||
|
className="scheduled"
|
||||||
|
>예정</span>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else if(settlementStatus === SettlementStatus.COMPLETED){
|
else if(settlementStatus === SettlementStatus.COMPLETED){
|
||||||
rs.push(<span className="complete">완료</span>)
|
rs.push(
|
||||||
|
<span
|
||||||
|
key='amount-label-complete'
|
||||||
|
className="complete"
|
||||||
|
>완료</span>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return rs;
|
return rs;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ export const CalendarWrap = () => {
|
|||||||
|
|
||||||
<CalendarGrid
|
<CalendarGrid
|
||||||
yearMonth={ yearMonth }
|
yearMonth={ yearMonth }
|
||||||
settlementDays={ [...scheduledList, ...completedList] }
|
scheduledList={ scheduledList }
|
||||||
|
completedList={ completedList }
|
||||||
></CalendarGrid>
|
></CalendarGrid>
|
||||||
|
|
||||||
<div className="settlement-list">
|
<div className="settlement-list">
|
||||||
|
|||||||
@@ -1,26 +1,38 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { SettlementDays, SettlementStatus } from '../model/types';
|
import { SettlementDays, SettlementStatus } from '../model/types';
|
||||||
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
export interface CalendarGridProps {
|
export interface CalendarGridProps {
|
||||||
yearMonth: string;
|
yearMonth: string;
|
||||||
settlementDays: Array<SettlementDays | undefined>
|
scheduledList: Array<SettlementDays | undefined>;
|
||||||
|
completedList: Array<SettlementDays | undefined>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CalendarGrid = ({
|
export const CalendarGrid = ({
|
||||||
yearMonth,
|
yearMonth,
|
||||||
settlementDays
|
scheduledList,
|
||||||
|
completedList,
|
||||||
}: CalendarGridProps) => {
|
}: CalendarGridProps) => {
|
||||||
|
|
||||||
const checkData = (val: number) => {
|
const [scheduledDateList, setScheduledDateList] = useState<Array<number>>();
|
||||||
let rs: SettlementStatus | undefined;
|
const [completedDateList, setCompletedDateList] = useState<Array<number>>();
|
||||||
for(let i=0;i<settlementDays.length;i++){
|
const [assembled, setAssembled] = useState<boolean>(false);
|
||||||
let date = moment(settlementDays[i]?.settlementDate).date();
|
|
||||||
if(val === date){
|
const assembleDate = () => {
|
||||||
rs = settlementDays[i]?.settlementStatus;
|
let rsScheduledDate = [];
|
||||||
break;
|
let rsCompletedList = [];
|
||||||
}
|
for(let i=0;i<scheduledList.length;i++){
|
||||||
|
let date = moment(scheduledList[i]?.settlementDate).date();
|
||||||
|
rsScheduledDate.push(date);
|
||||||
}
|
}
|
||||||
return rs;
|
for(let i=0;i<completedList.length;i++){
|
||||||
|
let date = moment(completedList[i]?.settlementDate).date();
|
||||||
|
rsCompletedList.push(date);
|
||||||
|
}
|
||||||
|
setScheduledDateList(rsScheduledDate);
|
||||||
|
setCompletedDateList(rsCompletedList);
|
||||||
|
|
||||||
|
setAssembled(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const makeCalendarDate = () => {
|
const makeCalendarDate = () => {
|
||||||
@@ -34,36 +46,54 @@ export const CalendarGrid = ({
|
|||||||
let rs = [];
|
let rs = [];
|
||||||
for(let i=0;i<startDay;i++){
|
for(let i=0;i<startDay;i++){
|
||||||
rs.push(
|
rs.push(
|
||||||
<div className="day other">{ (lastYearMonthLastDate - startDay + i + 1) }</div>
|
<div
|
||||||
|
key={ `key-day-item=other-prev-${i}` }
|
||||||
|
className="day other"
|
||||||
|
>{ (lastYearMonthLastDate - startDay + i + 1) }</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
for(let i=1;i<=lastDate;i++){
|
for(let i=1;i<=lastDate;i++){
|
||||||
let ck = checkData(i);
|
if(scheduledDateList?.includes(i)){
|
||||||
if(ck === SettlementStatus.SCHEDULED){
|
|
||||||
rs.push(
|
rs.push(
|
||||||
<div className="day scheduled">{ i }</div>
|
<div
|
||||||
|
key={ `key-day-item-${i}` }
|
||||||
|
className="day scheduled"
|
||||||
|
>{ i }</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if(ck === SettlementStatus.COMPLETED){
|
else if(completedDateList?.includes(i)){
|
||||||
rs.push(
|
rs.push(
|
||||||
<div className="day complete">{ i }</div>
|
<div
|
||||||
|
key={ `key-day-item-${i}` }
|
||||||
|
className="day complete"
|
||||||
|
>{ i }</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
rs.push(
|
rs.push(
|
||||||
<div className="day">{ i }</div>
|
<div
|
||||||
|
key={ `key-day-item-${i}` }
|
||||||
|
className="day"
|
||||||
|
>{ i }</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(let i=0;i<lastOthersCnt;i++){
|
for(let i=0;i<lastOthersCnt;i++){
|
||||||
rs.push(
|
rs.push(
|
||||||
<div className="day other">{ (i + 1) }</div>
|
<div
|
||||||
|
key={ `key-day-item-other-next-${i}` }
|
||||||
|
className="day other"
|
||||||
|
>{ (i + 1) }</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
assembleDate();
|
||||||
|
}, [yearMonth])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="calendar-grid">
|
<div className="calendar-grid">
|
||||||
@@ -77,7 +107,7 @@ export const CalendarGrid = ({
|
|||||||
<div className="weekday sat">토</div>
|
<div className="weekday sat">토</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="days">
|
<div className="days">
|
||||||
{ makeCalendarDate() }
|
{ !!assembled && makeCalendarDate() }
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user