

챌린지 달성을 위하여 날짜와 달성(체크박스) 속성이 있는 데이터베이스를 관계형 속성으로 연결한 뒤, 연결된 페이지에서 날짜의 요일과 달성 유무를 추출하여 미니 캘린더 위젯 형태로 만들어주는 수식입니다.
⚠️ 이 수식은 관계형 속성으로 연결되는 페이지가 하루 단위로 생성되어있어야 합니다.
<aside> ✔️
필요한 챌린지용 데이터베이스 생성 후 월별 페이지를 생성합니다. 갤러리 보기 지정 후, 수식 속성을 생성합니다. 그 후, 속성 표시 유무 항목에서 제목과 수식을 보여지도록 처리합니다. 필요한 경우 날짜 속성을 사용하여 해당 월의 기간을 지정하여 필터 조건으로 사용하세요.
요일 : 맨 윗 줄에 요일을 표시, 색상은 변경해도 무방합니다.
일요일 시작 : S M T W T F S
월요일 시작 : M T W T F S S
미니캘린더 전용 일요일 시작 : Su Mo Tu We Th Fr Sa
미니캘린더 전용 월요일 시작 : Mo Tu We Th Fr Sa Su
빈칸 : 빈칸을 표시
``
달성 : 색상은 변경해도 무방합니다.
*
미달성 : 색상은 변경해도 무방합니다.
*
<aside> ✔️
lets(
/변수 설정 1 : 이 달 1일의 요일을 계산해주는 수식입니다./
이달첫요일, toNumber(first(map(sort(관계형 속성),day(current.날짜)))),
/*변수 설정 2 : */
빈칸갯수, if(이달첫요일 == 7, 0, 이달첫요일),
/변수 설정 3/
빈칸변환, ifs(빈칸 == 0, "", 빈칸갯수 == 1, 빈칸+" ", 빈칸갯수 == 2, 빈칸+" "+빈칸+" ", 빈칸갯수 == 3, 빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 4, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 5, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 6, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "),
/변수 설정 4/ 날짜, map(관계형 속성, if(current.달성==false, 미달성, 달성)),
/표현식 : 1주를 1줄로 계산하여 일-토 챌린지 달력을 만들어주는 수식입니다./
요일+"\n" + 빈칸변환+ slice(날짜, 0, 7 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 7 - 빈칸갯수, 14 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 14 - 빈칸갯수, 21 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 21 - 빈칸갯수, 28 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 28 - 빈칸갯수, 35 - 빈칸갯수).join(" ")
)
</aside>
<aside> ✔️
lets(
/변수 설정 1 : 이 달 1일의 요일을 계산해주는 수식입니다./
이달첫요일, toNumber(first(map(sort(관계형 속성),day(current.날짜)))),
/*변수 설정 2 : */
빈칸갯수, if(이달첫요일 == 7, 0, 이달첫요일-1),
/변수 설정 3/
빈칸변환, ifs(빈칸 == 0, "", 빈칸갯수 == 1, 빈칸+" ", 빈칸갯수 == 2, 빈칸+" "+빈칸+" ", 빈칸갯수 == 3, 빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 4, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 5, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 6, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "),
/변수 설정 4/ 날짜, map(관계형 속성, if(current.달성==false, 미달성, 달성)),
/표현식 : 1주를 1줄로 계산하여 월-일 챌린지 달력을 만들어주는 수식입니다./
요일+"\n" + 빈칸변환+ slice(날짜, 0, 7 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 7 - 빈칸갯수, 14 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 14 - 빈칸갯수, 21 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 21 - 빈칸갯수, 28 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 28 - 빈칸갯수, 35 - 빈칸갯수).join(" ")
)
</aside>
<aside> ✔️
lets(
/변수 설정 1 : 이 달 1일의 요일을 계산해주는 수식입니다./
이달첫요일, toNumber(first(map(sort(관계형 속성),day(current.날짜)))),
/*변수 설정 2 : */
빈칸갯수, if(이달첫요일 == 7, 0, 이달첫요일-1),
/변수 설정 3/
빈칸변환, ifs(빈칸 == 0, "", 빈칸갯수 == 1, 빈칸+" ", 빈칸갯수 == 2, 빈칸+" "+빈칸+" ", 빈칸갯수 == 3, 빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 4, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 5, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" ", 빈칸갯수 == 6, 빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "+빈칸+" "),
/변수 설정 4 : 색상 변경을 원하는 경우 아래 함수에서 gray, pink, pink_background 에 다른 색상을 입력하세요./
날짜, map(관계형 속성,
let( a, if(current.달성==false, style(padStart(date(current.날짜),2,0),"c","gray"), style(padStart(date(current.날짜),2,0),"c","pink","b","pink_background")), if(filter(관계형 속성,current.날짜==today()),style(a,"u"),a) ) ),
/표현식 : 1주를 1줄로 계산하여 월-일 챌린지 달력을 만들어주는 수식입니다./
요일+"\n" + 빈칸변환+ slice(날짜, 0, 7 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 7 - 빈칸갯수, 14 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 14 - 빈칸갯수, 21 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 21 - 빈칸갯수, 28 - 빈칸갯수).join(" ") + "\n" + slice(날짜, 28 - 빈칸갯수, 35 - 빈칸갯수).join(" ")
)
</aside>