옵시디언 활용/Dataview

Dataview 심화: DataviewJS

반응형

DataviewJS는?

DataviewJS는 옵시디언 Dataview의 JavaScript 기반 확장 기능으로, 직접적이고 동적으로 데이터를 조작할 수 있게 해줍니다.

 

기본적인 Dataview응 DQL(Dataview Query Language)을 사용하여 쿼리를 작성하지만, DataviewJS는 JavaScript를 사용하여 쿼리를 작성합니다. JavaScript의 모든 기능을 활용하여 데이터를 처리하고, 복잡한 로직을 구현할 수 있습니다.

 

DataviewJS는 데이터를 보다 유연하게 관리하고, 개인 지식 관리 시스템을 더욱 효율적으로 사용할 수 있게 해주는 강력한 도구이지만, JavaScript에 대한 이해가 필요하기 때문에, DataviewJS를 최대한 활용하기 위해서는 기본적인 JavaScript 지식이 필요합니다.

DataviewJS의 장점

  • 동적 데이터 처리
    데이터를 기반으로 표, 리스트, 차트 등 다양한 형태를 생성할 수 있습니다.
  • 복잡한 쿼리 작성
    특정 조건에 맞는 노트와 해당 메타데이터를 추출하고 분석하는 복잡한 쿼리를 실행할 수 있습니다.
  • 개인화된 정보 관리
    상호 작용적 요소를 포함하는 대시보드나 위젯을 만들 수 있습니다. 예를 들어, 현재 날짜나 사용자 입력을 기반으로 데이터를 필터링하고 결과를 업데이트하는 대시보드, 데이터 요약 보고서 등을 생성할 수 있습니다.

DataviewJS의 예시

시작하기

DataviewJS를 사용하기 위해서는 코드 블록 내에 dataviewjs라고 쓰고, 그 안에 JavaScript 코드를 작성합니다.

```dataviewjs
```

기본 인사말 출력하기

```dataviewjs
dv.paragraph("Hello, World!");
```

dv.paragraph() 함수는 지정된 텍스트를 문서에 단락 형태로 추가합니다.

현재 날짜 표시하기

```dataviewjs
const today = moment().format("YYYY년 MM월 DD일");
dv.paragraph(`오늘은 ${today}입니다.`);
```

Moment.js를 활용하여 현재 날짜를 포맷하여 출력합니다. DataviewJS는 Moment.js를 내장하고 있어, 날짜와 시간 관련 기능을 바로 사용할 수 있습니다.

태그 기반 노트 목록 생성

```dataviewjs
const taggedNotes = dv.pages('#project')
    .sort(p => p.file.ctime, 'desc');

dv.table(["Title", "Created"],
    taggedNotes.map(note => [
        note.file.link,
        note.file.ctime.toFormat("yyyy-LL-dd")
    ])
);
```

#project 태그가 달린 노트를 검색하고, 생성 시간으로 내림차순 정렬한 후, 노트의 제목과 생성 날짜를 표 형태로 표시합니다.

프로젝트 진행 상태 대시보드 만들기

```dataviewjs
const projectInfo = {
    name: "프로젝트",
    progress: 80, 
    deadline: "2024-12-31"
};

dv.header(2, projectInfo.name);
dv.paragraph(`진행 상태: ${projectInfo.progress}%`);
dv.paragraph(`마감 기한: ${projectInfo.deadline}`);
```

특정 프로젝트의 정보를 선언하고, 이를 바탕으로 진행 상태와 마감 기한을 대시보드 형식으로 출력합니다.

동적인 일정 관리

```dataviewjs
const upcomingEvents = dv.pages('"일정"')
    .where(e => e.date && e.date > Date.now())
    .sort(e => e.date, 'asc');

dv.list(upcomingEvents.map(event => `${event.file.link} - ${event.date.toFormat("yyyy-LL-dd")}`));
```

메타데이터 date를 가진 노트 중 현재 날짜 이후의 일정만을 필터링하여 오름차순으로 정렬하고, 해당 일정의 링크와 날짜를 리스트로 표시합니다.

DataviewJS 활용을 위한 팁

문서화된 API 참고
DataviewJS의 기능을 최대한 활용하기 위해서는 공식 문서화된 API를 참고하여 사용 가능한 메소드와 속성을 이해해야 합니다.

 

Codeblock Reference - Dataview

Codeblock Reference Dataview JavaScript Codeblocks are created using the dataviewjs language specification for a codeblock: ```dataviewjs dv.table([], ...) ``` The API is available through the implicitly provided dv (or dataview) variable, through which yo

blacksmithgu.github.io

 

자바스크립트 기초 지식
DataviewJS는 자바스크립트를 기반으로 하므로, 기본적인 자바스크립트 문법과 개념에 익숙해지는 것이 중요합니다.

 

커뮤니티 리소스 활용
옵시디언 커뮤니티는 다양한 DataviewJS 예시와 사용 팁을 공유하고 있으므로, 다른 사용자들의 경험에서 배우는 것도 유용합니다.


 

반응형