Перейти к основному содержимому

Список (Select)

Поле типа Список позволяет выбирать одно или несколько значений из предопределенного набора опций.

Основные характеристики

  • Тип данных: Строка или массив строк
  • Источник значений: Предопределенный список опций
  • Режимы: Одиночный выбор (Single Select) или множественный выбор (Multi Select)
  • Цветовое кодирование: Каждая опция может иметь свой цвет

Режимы работы

Одиночный выбор (Single Select)

Позволяет выбрать только одно значение из списка. Хранится как строка.

{
"name": "status",
"type": "select",
"multiple": false,
"options": ["Новый", "В работе", "Завершен"]
}

Множественный выбор (Multi Select)

Позволяет выбрать несколько значений. Хранится как массив строк.

{
"name": "tags",
"type": "select",
"multiple": true,
"options": ["Срочно", "Важно", "Требует проверки"]
}

Настройки поля

При создании поля типа "Список" доступны следующие настройки:

  • Название поля: Отображаемое имя поля
  • Системное имя: Уникальный идентификатор для API
  • Описание: Подсказка для пользователей
  • Обязательное поле: Требовать выбора значения
  • Множественный выбор: Разрешить выбор нескольких опций
  • Список опций: Набор доступных значений
  • Цвета опций: Цветовое кодирование для каждой опции
  • Разрешить создание новых опций: Пользователи могут добавлять новые значения

Настройка опций

Каждая опция может иметь:

  • Значение: Текст опции
  • Цвет: Цвет для визуального выделения
  • Порядок: Позиция в списке
{
"name": "priority",
"type": "select",
"options": [
{ "value": "Низкий", "color": "gray" },
{ "value": "Средний", "color": "blue" },
{ "value": "Высокий", "color": "orange" },
{ "value": "Критический", "color": "red" }
]
}

Примеры использования

Статус задачи

{
"name": "status",
"type": "select",
"required": true,
"default": "Новая",
"options": ["Новая", "В работе", "На проверке", "Завершена", "Отменена"]
}

Приоритет

{
"name": "priority",
"type": "select",
"default": "Средний",
"options": ["Низкий", "Средний", "Высокий", "Критический"]
}

Теги (множественный выбор)

{
"name": "tags",
"type": "select",
"multiple": true,
"options": ["Frontend", "Backend", "Design", "Bug", "Feature"]
}

Категория товара

{
"name": "category",
"type": "select",
"required": true,
"options": ["Электроника", "Одежда", "Книги", "Спорт", "Дом и сад"]
}

Работа через API

Создание записи (одиночный выбор)

const record = await emd.database.collection('tasks').create({
title: 'Исправить баг',
status: 'Новая',
priority: 'Высокий'
});

Создание записи (множественный выбор)

const record = await emd.database.collection('tasks').create({
title: 'Разработать функцию',
tags: ['Frontend', 'Feature']
});

Поиск по значению

// Найти все задачи со статусом "В работе"
const tasks = await emd.database.collection('tasks').find({
status: 'В работе'
});

// Найти задачи с определенными тегами
const tasks = await emd.database.collection('tasks').find({
tags: { $in: ['Bug', 'Critical'] }
});

Обновление значения

// Изменить статус
await emd.database.collection('tasks').update(recordId, {
status: 'Завершена'
});

// Добавить тег (для множественного выбора)
const record = await emd.database.collection('tasks').get(recordId);
await emd.database.collection('tasks').update(recordId, {
tags: [...record.tags, 'Urgent']
});

Операторы для полей списка

Одиночный выбор

  • $eq — равно
  • $ne — не равно
  • $in — входит в список значений
  • $nin — не входит в список значений

Множественный выбор

  • $in — содержит хотя бы одно из значений
  • $all — содержит все указанные значения
  • $size — количество выбранных опций
// Задачи с тегами Frontend ИЛИ Backend
const tasks = await emd.database.collection('tasks').find({
tags: { $in: ['Frontend', 'Backend'] }
});

// Задачи с тегами Frontend И Bug одновременно
const tasks = await emd.database.collection('tasks').find({
tags: { $all: ['Frontend', 'Bug'] }
});

Управление опциями

Добавление новой опции

Новые опции можно добавлять через админ-панель или API:

await emd.database.collection('tasks').updateField('status', {
options: [...existingOptions, 'Отложена']
});

Переименование опции

При переименовании опции все существующие записи автоматически обновляются:

await emd.database.collection('tasks').updateField('status', {
renameOption: {
from: 'В работе',
to: 'Выполняется'
}
});

Удаление опции

При удалении опции можно указать, что делать с существующими записями:

await emd.database.collection('tasks').updateField('status', {
removeOption: 'Отменена',
replaceWith: 'Завершена' // или null для очистки
});

Рекомендации

  • Используйте Single Select для статусов и категорий
  • Используйте Multi Select для тегов и меток
  • Ограничивайте количество опций (оптимально 5-15)
  • Используйте цветовое кодирование для важных статусов
  • Для большого количества опций (>20) рассмотрите использование связей (Relation)
  • Документируйте значение каждой опции
  • Используйте понятные и короткие названия опций
  • Избегайте дублирования опций с разным регистром

Отличие от других типов

  • Select vs String: Select ограничивает выбор предопределенными значениями
  • Select vs Relation: Select для простых категорий, Relation для связи с другими коллекциями
  • Select vs Boolean: Boolean для бинарного выбора, Select для множественных опций