## Что это
Dataview - это мощный плагин для Obsidian позволяющий отбирать данные (теги, даты, числа и любые другие пользовательские параметры) markdown-заметок, а затем их фильтровать и отбирать как пожелаешь.
## Как установить
Пошаговая инструкция по установке плагина представлена в этой [статье.](https://habr.com/ru/articles/710356/)
## Как всё это работает в двух словах
1. Dataview работает на [встроенном языке запросов](https://blacksmithgu.github.io/obsidian-dataview/queries/structure/)
2. Все запросы должны писаться внутри подобного блока кода:
````
```dataview
TABLE|LIST|TASK <Поле1> [AS "Название столбца"], <Поле2>, ..., <Поле3>
FROM <Источник>
WHERE <Выражение>
SORT <Выражение> [ASC/DESC]
... другие команды
```
````
## Примеры использования
**Проекты со счётчиком выполненных и не выполненных задач**
1. Данный кейс предназначен для отслеживания прогресса по проектам
2. Код запроса выглядит вот так:
````
```dataview
TABLE WITHOUT ID
file.link AS Проект,
Статус,
(length(filter(file.tasks.completed, (t) => t = true))) / (length(file.tasks.text)) * 100 AS "% Завершено",
(length(file.tasks.text)) AS Всего,
(length(filter(file.tasks.completed, (t) => t = true))) AS Завершённых,
(length(file.tasks.text)) - (length(filter(file.tasks.completed, (t) => t = true))) AS "Незавршенных"
FROM #проекты
```
````
3. Разбираем код построчно:
1. TABLE WITHOUT ID - мы указали, что нам нужна таблица
2. Далее перечисляем столбцы, которые нам нужны, первым столбцом будет ссылка на саму заметку (file.link), а называться этот столбец будет "Проект" (AS Проект)
3. Статус - это статус наших проектов (В процессе, Готово, Не приступал)
4. Следующей строчкой мы вычисляем кол-во завершённых задач проекте и кол-во незавершённых задач, делим их друг на друга и получаем процент готовности проекта
5. Данной строчкой мы считаем кол-во всех задач, т.е. берём размер массива file.tasks.text
6. Этой строчкой мы считаем кол-во завершённых задач
7. А этой строчкой мы вычитаем из общего кол-ва задач кол-во завершённых задач и таким образом получаем кол-во незавершённых задач
8. Затем мы указываем откуда будут собираться и обрабатываться заметки. В данном случае будут отбираться все заметки с тегом # проекты (FROM # проекты). Данный способ отбора заметок подходит для тех, кто хочет отобрать заметки с определённым тегоv => в вашем хранилище заметкам должны быть присвоены соответствующе теги. В дальнейшем при добавлении в хранилище новой заметки с указанным тегом она так же отобразится в получившейся таблице.
4. Сами заметки должны содержать следующий набор параметров:
```
#проекты
Статус:: "Готово"
---
# ToDo:
- [x] Снять размеры с вытяжки
- [x] Нагуглить вытяжки
- [x] Купить вытяжку
- [x] Съездить за вытяжкой в магазин
- [x] Установить вытяжку
```
4. Разбираем построчно:
1. Тег # проекты - чтобы запрос отбирал нужную нам заметки
2. Статус - чтобы он отображался в таблице. В дальнейшем этот статус можно будет менять в заметке и он будет меняться в таблице
3. Затем разделитель (---) - для удобства
4. И затем список задач - которые будут обрабатываться нашей таблицей
5. В конечном итоге получаем вот такую таблицу:
