Класс Категории

Вернитесь в Студию и создайте класс category (Категория). В нем будут содержаться ссылки на статьи определенной тематики.

Создайте атрибут name (Название), тип String (Строка). Он будет хранит название категории. Установите флажки Required (Обязательный) и Unique (Уникальный). Перейдите на вкладку Search (Поиск) и установите флажки Common searchable (Общий поисковый) и Select searchable (Поисковый в списке выбора).

Далее необходимо связать статьи и категории. Одна статья может быть размещена в нескольких категориях. Перейдите в класс статьи и создайте атрибут categories (Категории), тип Reference (Ссылочный). Установите флажок Multiple (Множественное).

Перейдите в класс Категория и создайте атрибут publicArticles (Публичные статьи), тип Back reference (Обратная ссылка). В поле Reference class (Ссылочный класс) выберите класс article (Статья). В поле Reference attribute (Ссылочный атрибут) выберите атрибут categories (Категории). Установите флажки Multiple (Множественное) и Read only (Только чтение). Нельзя добавлять и убирать статьи через данный атрибут, только через управлением категориями из самой статьи.

Сейчас в атрибуте Публичные статьи отображаются все статьи, имеющие данную категорию. Чтобы отфильтровать статьи необходимо создать представление класса. Представление расширяет и переопределяет параметры класса. Например, представление list может отобразить только некоторые атрибуты при отображение объектов в списке. Представление create может добавить валидаторы при создании объекта. Представление edit может запретить изменение некоторых атрибутов при редактировании объекта.

Откройте класс article (Статья) и перейдите на вкладку Views (Представления). Создайте представление publicList (Публичный список). В полe Filter (Фильтр) укажите условие отбора статей {"status":"published"} В данном представлении будут отображаться только статьи, имеющие статус published (Опубликовано).

Сохраните представление. Затем перейдите на появившуюся вкладку Attributes (Атрибуты) и добавьте атрибуты, которые должны быть в представлении.

Перейдите в класс Категория и откройте атрибут publicArticles (Публичные статьи). Перейдите на вкладку Relation (Отношение). В поле List view (Представление списка) выберите представление publicList (Публичный список).

Перейдите в класс Категория и создайте атрибут publicArticleCounter (Счетчик публичных статей), тип Calculated (Вычисляемый). В поле Expression (Выражение) задайте алгоритм вычисления:

["$query", "count", "publicList.article", null, {"categories": ".$key"}]

Подробнее смотри node_modules\evado-meta-document\calc\Calc.

Вычисляемый атрибут не хранится в базе данных, а вычисляется при каждом запросе. Это влияет на производительность и налагает определенные ограничения при поиске и выборках.

Экспортируйте метаданные и перейдите в Офис. Создайте категории и статьи. Добавьте категорию в статье. Измените статус статьи и проверьте как изменился список публичных статей в категории.