image.png

image.png

설명

챌린지 달성을 위하여 날짜와 달성(체크박스) 속성이 있는 데이터베이스를 관계형 속성으로 연결한 뒤, 연결된 페이지에서 날짜의 요일과 달성 유무를 추출하여 미니 캘린더 위젯 형태로 만들어주는 수식입니다.

⚠️ 이 수식은 관계형 속성으로 연결되는 페이지가 하루 단위로 생성되어있어야 합니다.


<aside> ✔️

사전 설정

페이지

필요한 챌린지용 데이터베이스 생성 후 월별 페이지를 생성합니다. 갤러리 보기 지정 후, 수식 속성을 생성합니다. 그 후, 속성 표시 유무 항목에서 제목과 수식을 보여지도록 처리합니다. 필요한 경우 날짜 속성을 사용하여 해당 월의 기간을 지정하여 필터 조건으로 사용하세요.

속성

텍스트

관계형

<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>