Метафайл - это файл в формате JSON, определяющий тип, параметры и ресурсы расширения.
Метафайл должен иметь имя metafile.json.
Пример метафайла:
{
"uri": "stmobile://report/routereports/performance",
"type": "report",
"title": "qsTr(Plans execution)",
"license": ["Report_Performance"],
"locales": {
"ru_RU": "performance_ru.lng"
},
"datascript": {
"script_file": "performance.js"
},
"template": {
"template_file": "performance.html"
},
"group": {
"group_title": "qsTr(Other)"
}
}
Список доступных полей:
uri - String, URI расширения, в формате: stmobile://module/target/name
type - String, тип расширения, возможные значения: report, printform, viewer, action, form, formconfig, union
union - Опциональный параметр, Object, объект с конфигурацией расширения типа union
"union": {
"list": [ // Список расширений для объединения
{
"uri": "stmobile://action/preorder/preopen/checkdoc", // URI расширения для объединения
"condition": "none" // Опциональный параметр, условие запуска расширения, по-умолчанию "none",
// доступные значения: "none", "prev_success", "prev_failed"
},
...
]
},
title - String, заголовок расширения, параметр опциональный для расширений типа action и formconfig
apiversion - Опциональный параметр, String, используемая версия API, по-умолчанию 2
enabled - Опциональный параметр, Boolean, включение/выключение расширения, по-умолчанию true
visible - Опциональный параметр, Boolean, включение/выключение отображения расширения, по-умолчанию true, влияет только на визуальные расширения
license - Опциональный параметр, []String, список ключей лицензии, для которых будет доступно расширение
locales - Опциональный параметр, Object, список файлов с переводами, соответствующих языкам:
"locales": {
"ru_RU": "mylocale_ru.lng",
"en_US": "mylocale_en.lng"
...
},
Подробнее о переводах расширений: Локализация
config - Опциональный параметр, Object, конфигурация отчета, доступ посредством api.context.metaConfig
datascript - Object, data-скрипт:
"datascript": {
"script_file": "myscript.js",
"cache_key": String, // Опциональный параметр, используемый ключ кэша, по умолчанию "module_target" из URI
"async": Boolean // Опциональный параметр, по-умолчанию false, используется только для расширений типа action.
// Позволяет запустить скрипт асинхронно, параллельно с основным потоком
},
template - Object, шаблон:
"template": {
"content_type": String, // Опциональный параметр, по-умолчанию "html", возможные значения: html, fixedtext, plaintext, richtext
"template_file": "mytemplate.html",
"content_width_mode": String, // Опциональный параметр, по-умолчанию "full", возможные значения: full, compact, используется только для страниц
"content_height_size": Number // Опциональный параметр, по-умолчанию 400, используется только для диалогов
},
print - Object, Опциональный параметр, печатная форма:
"print": {
"enabled": Boolean, // Опциональный параметр, по-умолчанию false
"printforms": [ // Список печатных форм
{
"type": String, // Опциональный параметр, по-умолчанию "standart", доступные значения: narrow, standart, wide
"content_type": String, // Опциональный параметр, по-умолчанию "fixedtext", доступные значения: fixedtext
"template_file": "myprint_st.txt"
},
...
]
}
group - Object, группа отчетов:
"group": {
"group_title": String, // Опциональный параметр, название группы
"priority": Number // Опциональный параметр, приоритет в группе, по-умолчанию 0
}
launch - Object, способ открытия:
"launch": {
"openmode": String // Опциональный параметр, по-умолчанию "page", доступные значения: page, dialog
},
dev - Object, параметры для разработчика:
"dev": {
"output_path": String // Опциональный параметр, например: "./output"
}
ВНИМАНИЕ! Метаданные внешних расширений объединяются с информацией, содержащейся в метафайлах внутренних расширений. Таким образом, не указанные во внешнем метафайле поля будут браться из внутреннего метафайла, при их наличии. Учитывайте это при разработке расширений, заменяющих встроенный функционал. Пример:
// Внутренний метафайл:
{
"uri": "stmobile://report/routeandoutletreports/cash",
"type": "report",
...
"template": {
"content_type": "qml"
},
...
}
// Внешний метафайл:
{
"uri": "stmobile://report/routeandoutletreports/cash",
"type": "report",
"template": {
"template_file": "cash.html"
},
...
}
Приведет к тому, что внешний отчет не будет работать, т.к. во внутреннем метафайле указано свойство "content_type": "qml", а во внешнем метфайле это свойство явно не указано.