Skip to content
Snippets Groups Projects

Расширение Actions для анонсов

Merged Pavel Antonov requested to merge feature/UIExtenstions into master
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
@@ -141,6 +141,18 @@ message ActionRequest {
content.references.Reference params = 11020;
}
// Target - определяет как открывать результат выполнения действия в пользовательском интерфейсе
enum Target {
DEFAULT = 0; // По умолчанию (если нет других условий, то MODAL)
MODAL = 1; // Открывать в модальном окне
WIDE = 2; // Открывать в широком модальном окне
MAIN = 4; // Открывать в главной рабочей области (часть без меню)
DRAWER = 5; // Открывать в боковой панели
NOTIFICATION = 6; // Открывать виде всплывающего уведомлении
BLANK = 7; // Открывать в новой вкладке
NONE = 100; // Не отображать результат
}
message ActionResponse {
enum State {
DONE = 0; // Запрос завершен
@@ -150,9 +162,19 @@ message ActionResponse {
PARAMETERS_REQUIRED = 4; // Требуются дополнительные данные для выполнения запроса
}
enum Format {
PLAIN = 0;
HTML = 1;
MARKDOWN = 2;
}
State state = 10000; // Состояние расширение
Target target = 10010; // Как открывать результат выполнения действия в пользовательском интерфейсе (переопределяет значение в Action)
Format format = 10050; // Формат полей msg и error
string msg = 10100; // Сообщение о выполнении действия
string error = 10200; // Сообщение в случае ошибки
string title = 10110; // Текст для отображения в интерфейсе
string image = 10140; // Изображение для отображения в интерфейсе (шапке окна)
string error = 10200; // Сообщение в случае ошибки (дополнительно к msg)
repeated Action next = 10300; // Следующие возможные действия. Интерфейс отображает как варианты дальнейших действий пользователя
map<string,string>metadata = 10400; // Метаданные запроса
repeated content.references.Reference refs = 10320; // Ссылки на записи (назначение ссылок зависит от действия и расширения)
@@ -186,16 +208,47 @@ message Action {
ITEMS = 5; // Действие связано с несколькими записями (требуется передача space_id, env_id, collection_id, item_ids). Отображается на экране списка записей.
REVISION = 6; // Действие связано с ревизией записи (требуется передача space_id, env_id, collection_id, item_id, rev_id). На данный момент не используется.
CREATE = 7; // Действие создание записи (требуется передача space_id, env_id, collection_id).
MAIN_MENU = 10000; // Действие отображается в главном меню (требуется передача space_id, env_id)
MAIN_MENU_BOTTOM = 10010; // Действие отображается в главном меню внизу (требуется передача space_id, env_id)
}
// DEPRECATED: Используйте `action` в формате URI
string extension = 10000; // Расширение
string action = 10100; // Идентификатор действия
// Идентификатор действия (в формате URI)
// Варианты использования:
// - пустой - никаких действий не выполняется
// - `action_id` - простое действие (если установлено расширение, то оно используется)
// - `grpc:///extension_id/action_id` - полное действие с указанием расширения
// - `https://host/path` - действие по HTTP(S)
// - `ui:///path` - действие в интерфейсе
// - `/path` - действие в интерфейсе
//
// Пример: `https://example.com/api/v1/action` - будет выполнен запрос HTTP по указанному URL.
// Сервер может вернуть ответ в формате JSON или HTML/MD. Дальнейшие действия определяется оп заголовку ответа
// `Content-Type`:
// - `application/json` - ответ в формате JSON. Структура ответа соответствует `ActionResponse` и интерпретируется
// тем же способом что и ответ от GRPC.
// - `text/html` - ответ в формате HTML. Интерфейс отображает ответ в виде сообщения в IFrame
// - `text/markdown` - ответ в формате MD. Интерфейс отображает ответ в виде сообщения.
//
// Переменные `:var` заменяются на текуще значение в пользовательском интерфейсе
// Перечень переменных для подстановки:
// - :spaceId
// - :envId
// - :colId
// - :itemId
//
// Пример: `ui:///spaces/:spaceId/envs/:envId/cols/:colId` - будет выполнено действие в интерфейсе.
string action = 10100;
Target target = 10110; // как должен отображаться результат действия
string parent = 10120; // Идентификатор родительского действия (для отображения в меню)
string name = 10200; // Название действия для отображения в интерфейсе (пункт меню, кнопка).
string description = 10210; // Описание действия для отображения в интерфейсе
string icon = 10220; // Название иконки для отображения действия в интерфейсе
content.references.Reference image = 10230; // Изображение для отображения в действия в интерфейсе
repeated string groups = 10240; // Группы отображения действия в интерфейсе
Kind kind = 10300; // Указывает на что направлено действие
Kind kind = 10300; // Указывает область действия (где отображается действие)
repeated string classes = 10310; // Классы данных к которым применимо действие (название коллекций или специальных групп в рамках которых данное действие применимо)
// Для `CREATE` действуют следующие правила:
// - Для создание записей в коллекции применимы действия которые содержат в classes название коллекции
@@ -209,6 +262,8 @@ message Action {
string params_collection = 10330;
ActionRequest request = 10400; // Параметры запроса (используется в случае `ActionResponse.next`)
// DEPRECATED: Используйте `action_url` вместо `navigation_route`
bool navigation_action = 10500; // Флаг указывающий что действие переносить пользователя в другую часть интерфейса, а не отправляет запрос на сервер
// navigation_route - Строка шаблон для перехода в интерфейсе
@@ -222,5 +277,14 @@ message Action {
// - :colId
// - :itemId
//
// DEPRECATED: Используйте `action_type == "NAVIGATION"`
string navigation_route = 10510;
// Параметр указывающий что действие выполняется автоматически
// Если указано, то действие выполняется автоматически каждый раз при загрузке приложения
bool autorun = 10520;
// Параметр указывающий что действие требует подтверждения пользователя
// Перед выполнением действия пользователю отображается информация о действии и кнопки подтверждения/отмены
bool confirm = 10530;
}
\ No newline at end of file
Loading