Как выглядит простая таблица, которая берет информацию из YAML:

Код для вставки:
```dataviewjs
const pages = dv.pages('"2. Areas/Занятие спортом/Динамика веса"')
.where(p => p.Вес && p.date)
.sort(p => p.date);
const labels = pages.map(p => new Date(p.date).toLocaleDateString()).array();
const values = pages.map(p => p.Вес).array();
const goal = 80;
const goals = labels.map(() => goal); // Целевая линия
const chartData = {
type: 'line',
data: {
labels: labels,
datasets: [
{
label: "Вес (кг)",
data: values,
borderColor: "blue",
fill: false,
tension: 0.3
},
{
label: "Цель (80 кг)",
data: goals,
borderColor: "green",
borderDash: [5, 5],
pointRadius: 0,
fill: false
}
]
},
options: {
responsive: true,
plugins: {
title: {
display: true,
text: "📈 Рост веса к цели"
},
legend: {
position: "bottom"
}
},
scales: {
y: {
title: {
display: true,
text: "Вес (кг)"
},
suggestedMin: 65,
suggestedMax: 85
},
x: {
title: {
display: true,
text: "Дата"
}
}
}
}
};
window.renderChart(chartData, this.container);```
→ const pages = dv.pages(‘“2. Areas/Занятие спортом/Динамика веса”’) — заменить на свой путь, в котором лежат наши заметки с YAML → Последние три символа апострофа перенести на новую строку
🧠 Пояснение для тех, кто хочет глубже понимать о чем этот код:
🔹 Что делает код:
-
Ищет все заметки из нужной папки;
-
Фильтрует только те, где есть
Весиdate; -
Сортирует по дате — чтобы точки шли по порядку.
📌 💡 Замените путь на свой, если у вас другая папка.
const labels = pages.map(p => new Date(p.date).toLocaleDateString()).array();
const values = pages.map(p => p.Вес).array();🔹 Что делает:
-
labels— это даты, по которым строим график. -
values— сами значения веса.
const goal = 80;
const goals = labels.map(() => goal); // Целевая линия🔹 Что делает:
-
Мы задаём цель — например, 80 кг.
-
Создаём вторую линию на графике — она будет прямой, чтобы видеть, насколько ты близко к цели.
🧱 Настройка самого графика
const chartData = {
type: 'line',
data: {
labels: labels,
datasets: [
{
label: "Вес (кг)",
data: values,
borderColor: "blue",
fill: false,
tension: 0.3
},
{
label: "Цель (80 кг)",
data: goals,
borderColor: "green",
borderDash: [5, 5],
pointRadius: 0,
fill: false
}
]
},🔹 Что делает:
-
Строит две линии:
-
синяя линия — твой реальный прогресс;
-
зелёная пунктирная — целевой вес.
-
-
tension: 0.3— сглаживает линии (выглядит эстетично). -
borderDash— пунктир для цели, чтобы визуально отличать.
⚙️ Настройка внешнего вида
options: {
responsive: true,
plugins: {
title: {
display: true,
text: "📈 Рост веса к цели"
},
legend: {
position: "bottom"
}
},
scales: {
y: {
title: {
display: true,
text: "Вес (кг)"
},
suggestedMin: 65,
suggestedMax: 85
},
x: {
title: {
display: true,
text: "Дата"
}
}
}
}
};🔹 Что делает:
-
Добавляет заголовок.
-
Помещает легенду внизу.
-
Ограничивает ось Y (от 65 до 85 кг) — чтобы график не был слишком “плоским”.
-
Подписывает оси.
window.renderChart(chartData, this.container);🔹 Это команда, которая вставляет готовый график прямо в заметку Obsidian.