Files
hockey_new/settings/vmix_functions.json

307 lines
11 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"version": 1,
"title": "Функции формул vMix JSON — хоккей",
"description": "Справочник функций для вычисляемых колонок хоккейных vMix JSON.",
"categories": [
{
"title": "Поля и сборка строк",
"items": [
{
"name": "get",
"example": "get('player')",
"description": "Взять поле по имени. Если поля нет — пустая строка."
},
{
"name": "val",
"example": "val('total', '-')",
"description": "То же самое, что get()."
},
{
"name": "concat",
"example": "concat(position, '. ', player)",
"description": "Склеить значения без разделителя."
},
{
"name": "join",
"example": "join(' / ', player, club, total)",
"description": "Склеить только заполненные значения через разделитель."
},
{
"name": "tpl",
"example": "tpl('#{position} {player} {total}')",
"description": "Шаблон с подстановкой полей в фигурных скобках."
},
{
"name": "coalesce",
"example": "coalesce(player, name, '-')",
"description": "Первое непустое значение."
}
]
},
{
"title": "Текст",
"items": [
{
"name": "split",
"example": "split(player, ' ', 0)",
"description": "Разбить строку и взять часть по индексу."
},
{
"name": "part",
"example": "part(player, ' ', 1)",
"description": "Короткий вариант split(value, sep, index)."
},
{
"name": "left",
"example": "left(player, 3)",
"description": "Первые N символов."
},
{
"name": "right",
"example": "right(player, 3)",
"description": "Последние N символов."
},
{
"name": "mid",
"example": "mid(player, 2, 4)",
"description": "Фрагмент строки."
},
{
"name": "replace",
"example": "replace(player, ' ', ' ')",
"description": "Обычная замена текста."
},
{
"name": "upper/lower/title/strip",
"example": "upper(country)",
"description": "Регистр и очистка пробелов."
},
{
"name": "swap",
"example": "swap(player)",
"description": "Поменять порядок частей строки: Иван Петров → Петров Иван."
}
]
},
{
"title": "Условия",
"items": [
{
"name": "case / iif",
"example": "case(to_par == 0, 'E', to_par)",
"description": "Если условие истинно — первое значение, иначе второе."
},
{
"name": "empty / filled",
"example": "if_empty(total, '-', total)",
"description": "Проверка пустого/заполненного значения."
},
{
"name": "if_empty",
"example": "if_empty(thru, '—', thru)",
"description": "Если пусто."
},
{
"name": "if_filled",
"example": "if_filled(country, country, '')",
"description": "Если заполнено."
},
{
"name": "if_contains",
"example": "if_contains(status, 'active', 'LIVE', '')",
"description": "Если строка содержит текст."
},
{
"name": "if_not_contains",
"example": "if_not_contains(status, 'active', '', 'LIVE')",
"description": "Если строка не содержит текст."
},
{
"name": "if_equals / if_eq",
"example": "if_eq(to_par, '0', 'E', to_par)",
"description": "Если значение равно ожидаемому."
},
{
"name": "if_field_empty",
"example": "if_field_empty('today', '-', today)",
"description": "Проверить поле по имени."
}
]
},
{
"title": "Поиск и Regex",
"items": [
{
"name": "contains",
"example": "contains(player, 'Иван')",
"description": "True/False: содержит текст."
},
{
"name": "starts / ends",
"example": "starts(player, 'A')",
"description": "Начинается/заканчивается на текст."
},
{
"name": "regex / match",
"example": "regex(player, '^A')",
"description": "Проверка регулярным выражением."
},
{
"name": "if_regex",
"example": "if_regex(player, '^A', 'A', '')",
"description": "Условие по регулярному выражению."
},
{
"name": "re_replace",
"example": "re_replace(title, '(\\d)(?=(\\d{3})+\\b)', '\\1.')",
"description": "Regex-замена."
},
{
"name": "re_replace_first",
"example": "re_replace_first(text, '\\s+', ' ')",
"description": "Заменить только первое совпадение."
},
{
"name": "re_remove",
"example": "re_remove(player, '\\s+')",
"description": "Удалить по regex."
},
{
"name": "re_extract",
"example": "re_extract(player, '#(\\d+)', 1)",
"description": "Достать группу из текста."
},
{
"name": "first_match",
"example": "first_match(title, {'СБ':'Барьеры', 'Бег':'Бег'}, '')",
"description": "Первое совпавшее правило."
}
]
},
{
"title": "Числа, время, даты",
"items": [
{
"name": "number / num",
"example": "number(total, 0)",
"description": "Преобразовать в число."
},
{
"name": "int/float/round/min/max/abs/sum",
"example": "round(number(total), 1)",
"description": "Базовая математика Python."
},
{
"name": "format_thousands",
"example": "format_thousands(10000)",
"description": "10.000."
},
{
"name": "format_distance",
"example": "format_distance('10000')",
"description": "Формат дистанций: 10.000."
},
{
"name": "time_seconds",
"example": "time_seconds('1:02.34')",
"description": "Время в секунды."
},
{
"name": "format_time",
"example": "format_time(62.34, 'auto_tt')",
"description": "Секунды обратно во время."
},
{
"name": "time_diff",
"example": "time_diff(result, leader, 'auto_tt')",
"description": "Разница двух времен."
},
{
"name": "today",
"example": "today('%d.%m.%Y')",
"description": "Сегодняшняя дата."
},
{
"name": "age / age_at",
"example": "age_at(birthDate, today())",
"description": "Возраст по дате рождения."
},
{
"name": "birth_year",
"example": "birth_year(birthDate)",
"description": "Год рождения."
}
]
},
{
"title": "Склейка JSON",
"items": [
{
"name": "match",
"example": "player_id=id",
"description": "Сопоставление ключей: слева поле основного JSON, справа поле подключаемого источника."
},
{
"name": "fields",
"example": "club=club\\ncountry=country",
"description": "Какие поля подтянуть: слева новое имя поля, справа поле источника."
},
{
"name": "multiple",
"example": "first / last / all / count",
"description": "Что делать, если найдено несколько совпадений."
},
{
"name": "source_type",
"example": "scores / tournament / round / vmix_json / url",
"description": "Тип подключаемого источника данных."
}
]
},
{
"title": "Вертикальные вычисления по таблице",
"items": [
{
"name": "max",
"example": "max('total')",
"description": "Максимальное числовое значение колонки по всем строкам текущей таблицы. Для обычных чисел max(1, 2) тоже работает."
},
{
"name": "min",
"example": "min('total')",
"description": "Минимальное числовое значение колонки по всем строкам текущей таблицы."
},
{
"name": "avg / average / mean",
"example": "avg('total')",
"description": "Среднее числовое значение колонки по всем строкам текущей таблицы."
},
{
"name": "values",
"example": "values('total')",
"description": "Список числовых значений колонки по всем строкам. Можно использовать в своих формулах."
},
{
"name": "first_value / first",
"example": "first_value('total')",
"description": "Значение колонки из первой строки таблицы после сортировки/подготовки данных."
},
{
"name": "diff_first / diff_from_first",
"example": "diff_first('total', 2)",
"description": "Разница между значением текущей строки и первой строки: current - first. Второй аргумент — округление."
},
{
"name": "gap_first / gap_from_first",
"example": "gap_first('total', 2)",
"description": "То же, что diff_first(), но сразу форматирует со знаком +/-. Удобно для отставаний."
},
{
"name": "row_index / row_number",
"example": "row_number()",
"description": "Номер текущей строки: row_index() с нуля, row_number() с единицы."
}
]
}
]
}