Создайте числовые поля для хранения числовых значений с необязательными ограничениями по минимальному/максимальному значению и форматированием префикса
Пользовательские числовые поля позволяют вам хранить числовые значения для записей. Они поддерживают ограничения валидации, десятичную точность и могут использоваться для количеств, оценок, измерений или любых числовых данных, которые не требуют специального форматирования.
Простой пример
Создайте простое числовое поле:
mutation CreateNumberField {
createCustomField(input: {
name: "Priority Score"
type: NUMBER
projectId: "proj_123"
}) {
id
name
type
}
}
Расширенный пример
Создайте числовое поле с ограничениями и префиксом:
mutation CreateConstrainedNumberField {
createCustomField(input: {
name: "Team Size"
type: NUMBER
projectId: "proj_123"
min: 1
max: 100
prefix: "#"
description: "Number of team members assigned to this project"
}) {
id
name
type
min
max
prefix
description
}
}
Входные параметры
CreateCustomFieldInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
name |
String! | ✅ Да | Отображаемое имя числового поля |
type |
CustomFieldType! | ✅ Да | Должно быть NUMBER |
projectId |
String! | ✅ Да | ID проекта, в котором нужно создать поле |
min |
Float | Нет | Ограничение минимального значения (только для UI) |
max |
Float | Нет | Ограничение максимального значения (только для UI) |
prefix |
String | Нет | Префикс отображения (например, "#", "~", "$") |
description |
String | Нет | Текст помощи, отображаемый пользователям |
Установка числовых значений
Числовые поля хранят десятичные значения с необязательной валидацией:
Простое числовое значение
mutation SetNumberValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
number: 42.5
})
}
Целочисленное значение
mutation SetIntegerValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
number: 100
})
}
Параметры SetTodoCustomFieldInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
todoId |
String! | ✅ Да | ID записи для обновления |
customFieldId |
String! | ✅ Да | ID пользовательского числового поля |
number |
Float | Нет | Числовое значение для хранения |
Ограничения значений
Ограничения Min/Max (Руководство по UI)
Важно: Ограничения min/max хранятся, но НЕ применяются на стороне сервера. Они служат руководством для UI приложений.
mutation CreateConstrainedField {
createCustomField(input: {
name: "Rating"
type: NUMBER
projectId: "proj_123"
min: 1
max: 10
description: "Rating from 1 to 10"
}) {
id
name
min
max
}
}
Требуется валидация на стороне клиента: Приложения на стороне клиента должны реализовать логику валидации для применения ограничений min/max.
Поддерживаемые типы значений
Тип | Пример | Описание |
---|---|---|
Integer | 42 |
Целые числа |
Decimal | 42.5 |
Числа с десятичными знаками |
Negative | -10 |
Отрицательные значения (если нет ограничения min) |
Zero | 0 |
Нулевое значение |
Примечание: Ограничения min/max НЕ проверяются на стороне сервера. Значения вне указанного диапазона будут приняты и сохранены.
Создание записей с числовыми значениями
При создании новой записи с числовыми значениями:
mutation CreateRecordWithNumber {
createTodo(input: {
title: "Performance Review"
todoListId: "list_123"
customFields: [{
customFieldId: "score_field_id"
number: 85.5
}]
}) {
id
title
customFields {
id
customField {
name
type
min
max
prefix
}
number
value
}
}
}
Поддерживаемые форматы ввода
При создании записей используйте параметр number
(не value
) в массиве пользовательских полей:
customFields: [{
customFieldId: "field_id"
number: 42.5 # Use number parameter, not value
}]
Поля ответа
Ответ TodoCustomField
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор для значения поля |
customField |
CustomField! | Определение пользовательского поля |
number |
Float | Числовое значение |
todo |
Todo! | Запись, к которой принадлежит это значение |
createdAt |
DateTime! | Когда значение было создано |
updatedAt |
DateTime! | Когда значение было в последний раз изменено |
Ответ CustomField
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор для определения поля |
name |
String! | Отображаемое имя поля |
type |
CustomFieldType! | Всегда NUMBER |
min |
Float | Минимально допустимое значение |
max |
Float | Максимально допустимое значение |
prefix |
String | Префикс отображения |
description |
String | Текст помощи |
Примечание: Если числовое значение не установлено, поле number
будет null
.
Фильтрация и запросы
Числовые поля поддерживают комплексную числовую фильтрацию:
query FilterByNumberRange {
todos(filter: {
customFields: [{
customFieldId: "score_field_id"
operator: GTE
number: 80
}]
}) {
id
title
customFields {
number
}
}
}
Поддерживаемые операторы
Оператор | Описание | Пример |
---|---|---|
EQ |
Равно | number = 42 |
NE |
Не равно | number ≠ 42 |
GT |
Больше чем | number > 42 |
GTE |
Больше или равно | number ≥ 42 |
LT |
Меньше чем | number < 42 |
LTE |
Меньше или равно | number ≤ 42 |
IN |
В массиве | number in [1, 2, 3] |
NIN |
Не в массиве | number not in [1, 2, 3] |
IS |
Является null/не является null | number is null |
Фильтрация по диапазону
query FilterByRange {
todos(filter: {
customFields: [{
customFieldId: "priority_field_id"
operator: GTE
number: 5
}]
}) {
id
title
}
}
Форматирование отображения
С префиксом
Если установлен префикс, он будет отображаться:
Значение | Префикс | Отображение |
---|---|---|
42 |
"#" |
#42 |
100 |
"~" |
~100 |
3.14 |
"π" |
π3.14 |
Десятичная точность
Числа сохраняют свою десятичную точность:
Ввод | Хранится | Отображается |
---|---|---|
42 |
42.0 |
42 |
42.5 |
42.5 |
42.5 |
42.123 |
42.123 |
42.123 |
Необходимые разрешения
Действие | Необходимое разрешение |
---|---|
Create number field | Company role: OWNER or ADMIN |
Update number field | Company role: OWNER or ADMIN |
Set number value | Any company role (OWNER , ADMIN , MEMBER , CLIENT ) or custom project role with edit permission |
View number value | Standard record view permissions |
Use in filtering | Standard record view permissions |
Ответы на ошибки
Неверный формат числа
{
"errors": [{
"message": "Invalid number format",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Поле не найдено
{
"errors": [{
"message": "Custom field was not found.",
"extensions": {
"code": "CUSTOM_FIELD_NOT_FOUND"
}
}]
}
Примечание: Ошибки валидации min/max не происходят на стороне сервера. Валидация ограничений должна быть реализована в вашем приложении на стороне клиента.
Не число
{
"errors": [{
"message": "Value is not a valid number",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Рекомендации по лучшим практикам
Проектирование ограничений
- Установите реалистичные значения min/max для руководства по UI
- Реализуйте валидацию на стороне клиента для применения ограничений
- Используйте ограничения для предоставления обратной связи пользователям в формах
- Рассмотрите, являются ли отрицательные значения допустимыми для вашего случая использования
Точность значений
- Используйте соответствующую десятичную точность для ваших нужд
- Рассмотрите округление для целей отображения
- Будьте последовательны с точностью по связанным полям
Улучшение отображения
- Используйте значимые префиксы для контекста
- Рассмотрите единицы измерения в названиях полей (например, "Вес (кг)")
- Предоставьте четкие описания для правил валидации
Общие случаи использования
-
Системы оценки
- Оценки производительности
- Оценки качества
- Уровни приоритета
- Оценки удовлетворенности клиентов
-
Измерения
- Количества и суммы
- Размеры и габариты
- Продолжительности (в числовом формате)
- Вместимости и лимиты
-
Бизнес-метрики
- Показатели дохода
- Уровни конверсии
- Распределения бюджета
- Целевые числа
-
Технические данные
- Номера версий
- Значения конфигурации
- Показатели производительности
- Настройки порогов
Функции интеграции
С графиками и панелями мониторинга
- Используйте числовые поля в расчетах графиков
- Создавайте числовые визуализации
- Отслеживайте тенденции с течением времени
С автоматизацией
- Запускайте действия на основе порогов чисел
- Обновляйте связанные поля на основе изменений чисел
- Отправляйте уведомления для конкретных значений
С поисками
- Агрегируйте числа из связанных записей
- Рассчитывайте суммы и средние значения
- Находите значения min/max по связям
С графиками
- Создавайте числовые визуализации
- Отслеживайте тенденции с течением времени
- Сравнивайте значения по записям
Ограничения
- Нет валидации на стороне сервера для ограничений min/max
- Требуется валидация на стороне клиента для применения ограничений
- Нет встроенного форматирования валюты (используйте тип CURRENCY вместо)
- Нет автоматического символа процента (используйте тип PERCENT вместо)
- Нет возможностей конвертации единиц
- Десятичная точность ограничена типом Decimal базы данных
- Нет оценки математических формул в самом поле
Связанные ресурсы
- Обзор пользовательских полей - Общие концепции пользовательских полей
- Пользовательское поле валюты - Для денежных значений
- Пользовательское поле процента - Для процентных значений
- API автоматизации - Создавайте автоматизации на основе чисел