옵시디언 활용/Dataview

Dataview 심화: DataviewJS의 다양한 렌더링 기법

반응형

DataviewJS를 활용해 텍스트, 헤더, 표, 그리고 사용자 정의 뷰를 동적으로 렌더링하는 방법을 알아보겠습니다. 다양한 렌더링 방식을 익혀두면 복잡한 정보를 단순화하고, 중요한 데이터 포인트를 시각적으로 강조하는 데에도 큰 도움이 됩니다.

dv.el(element, text)

굵은 텍스트 렌더링

dv.el 함수를 사용하여 HTML 요소 내에 임의의 텍스트를 렌더링할 수 있습니다.

dv.el("b", "굵은 텍스트");

사용자 정의 클래스와 속성 추가

dv.el 함수를 사용하여 요소에 사용자 정의 클래스와 속성을 추가할 수 있습니다.

dv.el("b", "이것은 일부 텍스트입니다", { cls: "dataview dataview-class", attr: { alt: "굵은 텍스트" } });

dv.header(level, text)

dv.header 함수를 사용하여 헤딩(H1-H6)을 렌더링할 수 있습니다.

dv.header(1, "H1");
dv.header(6, "H6");

dv.paragraph(text)

dv.paragraph 함수를 사용하여 문단 내에 임의의 텍스트를 렌더링할 수 있습니다.

dv.paragraph("이것은 일부 텍스트입니다");

dv.span(text)

dv.span 함수를 사용하여 span 내에 임의의 텍스트를 렌더링할 수 있습니다.

dv.span("이것은 일부 텍스트입니다");

dv.execute(source)

dv.execute 함수를 사용하여 임의의 Dataview 쿼리를 실행하고 현재 페이지에 뷰를 포함시킬 수 있습니다.

dv.execute("LIST FROM #태그");
dv.execute("TABLE 필드1, 필드2 FROM #태그");

dv.executeJs(source)

dv.executeJs 함수를 사용하여 임의의 DataviewJS 쿼리를 실행하고 현재 페이지에 뷰를 포함시킬 수 있습니다.

dv.executeJs("dv.list([1, 2, 3])");

dv.view(path, input)

 

Dataview 심화: dv.view()

dv.view() 함수는 특정 경로의 JavaScript 파일을 로드하여, 코드 재사용성을 높이고 문서의 동적 뷰 생성을 위한 유연성을 제공합니다. 예를 들면, 여러 노트에서 동일한 스크립트를 사용하는 경우

kaminik.tistory.com

dv.list(elements)

dv.list 함수는 배열이나 데이터 배열을 입력 받아 List를 렌더링합니다. 이는 단순 배열부터 복잡한 쿼리 결과까지 다양하게 활용될 수 있습니다.

dv.list([1, 2, 3])

1, 2, 3의 리스트를 생성합니다.

dv.list(dv.pages().file.name)

모든 파일 이름을 리스트로 생성합니다.

dv.list(dv.pages().file.link)

모든 파일 링크를 리스트로 생성합니다.

dv.list(dv.pages("#book").where(p => p.rating > 7))

평점이 7 초과인 모든 책을 리스트로 생성합니다.

dv.taskList(tasks, groupByFile)

taskList는 특정 조건을 만족하는 Task들을 List로 렌더링합니다. groupByFile 옵션을 사용하여 파일별로 그룹화할 수도 있습니다.

dv.taskList(dv.pages("#project").file.tasks)

프로젝트 태그가 있는 페이지의 모든 Task를 생성합니다.

dv.taskList(dv.pages("#project").file.tasks
    .where(t => !t.completed))

프로젝트 태그가 있는 페이지의 완료되지 않은 Task를 생성합니다.

dv.taskList(dv.pages("#project").file.tasks
    .where(t => t.text.includes("#tag")))

프로젝트 태그가 있는 페이지의 특정 태그가 포함된 Task를 생성합니다.

dv.table(headers, elements)

dv.table 함수는 테이블 형태로 데이터를 렌더링합니다. 각 행은 배열이며, 행 내의 배열은 불릿 포인트로 표시됩니다.

dv.table(["File", "Genre", "Time Read", "Rating"], dv.pages("#book")
    .sort(b => b.rating)
    .map(b => [b.file.link, b.genre, b["time-read"], b.rating]))

간단한 책 정보 테이블을 생성합니다.

마크다운 렌더링

Dataview는 결과를 마크다운 형식의 문자열로 반환하는 함수도 제공합니다. 이를 통해 렌더링된 결과를 마크다운 문서 내에서 직접 조작하거나 표시할 수 있습니다.

마크다운 Table

const table = dv.markdownTable(["File", "Genre", "Time Read", "Rating"], dv.pages("#book")
    .sort(b => b.rating)
    .map(b => [b.file.link, b.genre, b["time-read"], b.rating]));
dv.paragraph(table);

마크다운 List

const markdown = dv.markdownList([1, 2, 3]);
dv.paragraph(markdown);

마크다운 Task List

const markdown = dv.markdownTaskList(dv.pages("#project").file.tasks);
dv.paragraph(markdown);

 

반응형