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

Код для вставки:

```dataviewjs
const pages = dv.pages('"2. Areas/Занятие спортом/Динамика веса"')
  .where(p => p.Вес && p.date)
  .sort(p => p.date);

let rows = [];
let prevWeight = null;
const goal = 80;

for (let p of pages) {
  const date = new Date(p.date).toLocaleDateString();
  const weight = p.Вес;
  let diffDisplay = "–";
  let toGoal = `${(goal - weight).toFixed(1)} кг`;

  if (prevWeight !== null) {
    const diff = weight - prevWeight;
    if (diff > 0) {
      diffDisplay = `🟢 +${diff.toFixed(1)}`; // набор массы = хорошо
    } else if (diff < 0) {
      diffDisplay = `🔴 ${diff.toFixed(1)}`;  // потеря = плохо
    } else {
      diffDisplay = "➖ 0";
    }
  }

  rows.push([date, weight, diffDisplay, toGoal]);
  prevWeight = weight;
}

dv.table(["📅 Дата", "⚖️ Вес (кг)", "📈 Разница", "🎯 До цели (80 кг)"], rows);```

const pages = dv.pages(‘“2. Areas/Занятие спортом/Динамика веса”’) — заменить на свой путь, в котором лежат наши заметки с YAML Последние три символа апострофа перенести на новую строку


🧠 Пояснение для тех, кто хочет глубже понимать о чем этот код:

Этот код — не просто таблица. Это умный трекер веса прямо внутри Obsidian. Он показывает:

  • дату записи;

  • текущий вес;

  • изменение веса по сравнению с предыдущей записью;

  • сколько ещё осталось до цели (например, 80 кг).

И всё это — автоматически, без Excel и сторонних приложений.


Чем отличается dataviewjs от обычного dataview?

Обычный dataviewdataviewjs
Пишешь как в Excel: просто таблица, сортировка, фильтр.Используешь JavaScript — значит, можно делать более сложную логику: сравнения, расчёты, эмоции.
Подходит для простых списков и таблиц.Подходит для продвинутых трекеров, расчётов, визуализаций.
Не умеет считать разницу между значениями.Умеет сравнивать, считать разницу и даже выводить эмоджи в зависимости от результата.

Объяснение кода шаг за шагом

const pages = dv.pages('"2. Areas/Занятие спортом/Динамика веса"')
  .where(p => p.Вес && p.date)
  .sort(p => p.date);
  • Мы берём все заметки из папки “Динамика веса”.

  • Фильтруем: нужны только те, где есть и вес, и дата.

  • Сортируем по дате — чтобы было по порядку.


let rows = [];
let prevWeight = null;
const goal = 80;
  • rows — сюда будут собираться строки таблицы.

  • prevWeight — запомним предыдущий вес, чтобы сравнить с текущим.

  • goal — твоя цель (например, 80 кг). Код будет показывать, сколько ещё осталось.


for (let p of pages) {
  const date = new Date(p.date).toLocaleDateString();
  const weight = p.Вес;
  • Получаем дату и вес из каждой заметки.

  • Дату делаем читаемой (например, “27.05.2025”).


let diffDisplay = "–";
let toGoal = `${(goal - weight).toFixed(1)} кг`;
  • diffDisplay — что произошло с весом с прошлого раза.

  • toGoal — сколько ещё осталось до цели в килограммах.


if (prevWeight !== null) {
  const diff = weight - prevWeight;
  if (diff > 0) {
    diffDisplay = `🟢 +${diff.toFixed(1)}`;
  } else if (diff < 0) {
    diffDisplay = `🔴 ${diff.toFixed(1)}`;
  } else {
    diffDisplay = "➖ 0";
  }
}
  • Сравниваем вес: стал больше, меньше или остался прежним.

  • Добавляем цвет и эмоджи:

    • 🟢 набрал вес — хорошо!

    • 🔴 потерял — может, надо поесть 😅

    • ➖ остался — стабильность!


rows.push([date, weight, diffDisplay, toGoal]);
prevWeight = weight;
  • Добавляем всё в таблицу.

  • Запоминаем текущий вес, чтобы сравнивать с следующим.


dv.table(["📅 Дата", "⚖️ Вес (кг)", "📈 Разница", "🎯 До цели (80 кг)"], rows);
  • Выводим красивую таблицу:

    • дата,

    • вес,

    • изменение,

    • сколько осталось до цели.


💥 Результат

Ты получаешь таблицу прямо в Obsidian, которая:

  • считает прогресс;

  • показывает, где ты теряешь или набираешь;

  • мотивирует продолжать.

Это идеальный инструмент для саморазвития и отслеживания прогресса. И ты сам это сделал — без Excel, без приложений, только на базе Obsidian.