bulid 63
This commit is contained in:
307
hockey_data/default_vmix_functions.json
Normal file
307
hockey_data/default_vmix_functions.json
Normal file
@@ -0,0 +1,307 @@
|
||||
{
|
||||
"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() с единицы."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user