홈으로 돌아가기

DataviewJS와 Meta Bind를 사용한 Obsidian 날짜별 작업

기사에서는 Meta Bind와 DataviewJS를 사용해 선택한 날짜의 작업을 보기 위한 대화형 Obsidian 페이지 구현을 설명합니다. 코드 분석, 플러그인 설치 및 사용 팁. Obsidian을 사용하는 중급/시니어 개발자에게 적합.

동적 Obsidian 작업: Meta Bind로 클릭 한 번으로 날짜
Advertisement 728x90

Meta Bind와 DataviewJS로 선택한 날짜별 Obsidian 작업 보기 만들기

Meta Bind와 DataviewJS를 사용하면 날짜 선택기를 통해 작업을 확인할 수 있는 페이지를 만들 수 있습니다. 읽기 모드에서 사용자는 달력을 클릭해 날짜를 선택하면 목록이 자동으로 업데이트됩니다. 이 방법은 입력 위젯과 출력 스크립트 사이의 중간 저장소로 YAML 속성을 활용합니다.

이를 통해 작업이나 Dataview 쿼리에서 날짜를 수동으로 변경해야 하는 번거로움을 없앨 수 있습니다.

설정: 플러그인 설치와 YAML 블록

Obsidian 설정에서 Meta Bind와 Dataview 플러그인을 설치하세요. Dataview에서는 JavaScript 쿼리를 활성화합니다.

Google AdInline article slot

예를 들어 DynamicTasks.md 파일을 만들고 YAML 블록을 추가하세요:

---
selected-date: 2025-12-30
---

초기값은 위젯에 의해 덮어쓰여집니다.

날짜 선택을 위한 Meta Bind 위젯

YAML 아래에 다음을 삽입하세요:

Google AdInline article slot

INPUT[datePicker: selected-date]

읽기 모드에서 달력이 나타납니다. 클릭하면 날짜 선택기가 열리고, 값이 selected-date에 저장됩니다.

DataviewJS 스크립트: 작업 필터링 및 렌더링

위젯 뒤에 작업을 검색하는 스크립트를 추가하세요:

Google AdInline article slot

const targetDate = dv.current().file.frontmatter["selected-date"];

const pages = dv.pages('"Work"')

.where(p => p.file.tasks

.where(t => !t.completed && t.due && t.due.toISODate() === targetDate)

.length > 0);

for (let page of pages) {

dv.el("div", dv.fileLink(page.file.path, false), {

attr: {

style: "display:inline-block; margin:8px 0 4px 0; padding:3px 8px; border-radius:6px; background:#e0f0ff; color:#0366d6; font-weight:500;"

}

});

dv.taskList(

page.file.tasks

.where(t => !t.completed && t.due && t.due.toISODate() === targetDate),

false

);

}

스크립트 설명

  • 날짜 읽기: dv.current().file.frontmatter["selected-date"]YYYY-MM-DD 형식의 문자열을 반환합니다.
  • 파일 검색: dv.pages('"Work"')는 폴더를 스캔합니다. 필터는 duetargetDate와 일치하는 미완료 작업을 .toISODate()로 확인합니다.
  • 렌더링: 각 파일마다 CSS 스타일링이 적용된 배지 링크와 그룹화 없이(false) dv.taskList를 표시합니다. "Work"를 원하는 폴더로 바꾸세요.

Canvas 대시보드에 통합하기

파일을 Canvas로 드래그하면 Obsidian이 상호작용 가능한 카드를 생성합니다. 크기를 조정하세요. 대시보드에서 직접 작업하거나 클릭해 이동할 수 있습니다.

요구사항과 기능

  • 작업 구문: due에는 이모지 📅 YYYY-MM-DD를 사용하세요. 날짜가 없는 일반 체크박스는 무시됩니다.
  • 업데이트: 날짜 변경 후 DataviewJS는 약 1초 지연 후 재시작됩니다.

핵심 포인트

  • Meta Bind의 상호작용형 datePicker로 YAML을 수동 편집 없이 업데이트합니다.
  • DataviewJS가 due.toISODate() === targetDate로 작업을 정확히 필터링합니다.
  • 사용자 정의 배지로 파일별 그룹화하여 UI를 제어합니다.
  • 추가 플러그인 없이 Canvas에서 자동 렌더링됩니다.
  • 휴가나 회의 같은 미래 날짜의 작업량 확인에 적합합니다.

정적 쿼리 대비 장점

| 접근 방식 | 날짜 변경 | 읽기 모드 | 자동 업데이트 |

|----------|---------------|--------------|-------------|

| Tasks due on DATE | 코드에서 수동 | 아니요 | 아니요 |

| Dataview due = date() | 코드에서 수동 | 아니요 | 아니요 |

| YAML + Meta Bind + DataviewJS | 달력 클릭 | 예 | 예 |

이 방법은 확장 가능합니다: .where()에 태그나 상태 필터를 추가하세요.

— Editorial Team

Advertisement 728x90

다음 읽기