Формат описания фрейма
Фрейм - Массив конфигураций виджетов, который получается в результате работы конструктора, предназначен для вставки в окружение какой-то другой страницы/панели. Примеры - виджеты на главной, фрейм с доп.полями в документе. Фрейм может храниться "по месту" в формате .frame или быть записан в базу данных.
Фрейм состоит из следующих частей:
- id: string - идентификатор фрейма в формате uuid;
- widgets: IConstructedWidget - содержимое фрейма.
Пример описания фрейма в .frame файле
{
"id": "9e73bec4-b30e-4141-8f97-d3d04738d355",
"widgets": [{
"id": "5af84c73-6bb1-40c9-ae10-b0ff783f705c",
"widgetType": "first-widget",
"props": {
"somePropName": "somePropValue"
}
}, {
"id": "77528d8c-512d-4c31-8da1-0141da19ee46",
"widgetType": "second-widget",
"props": {
"childWidgets": [{
"id": "48c2e747-c66a-4df7-9273-e7d3f4d96b44",
"widgetType": "third-widget"
}, {
"id": "d458a5bb-9814-4cff-8f36-ea18ca9259f5",
"widgetType": "fourth-widget"
}]
}
}]
}
Загрузка фрейма из .frame файла по идентификатору
Для загрузки фрейма необходимо использовать метод SiteEditorBase/Loader:loadFrameById.
Метода loadFrame принимает на вход идентификатор фрейма, указанный в .frame файле. Метод вернет Promise, в результате которого будет находиться содержимое фрейма, указанное в поле widgets в .frame файле.
Пример:
import {IConstructedWidget} from 'SiteEditorBase/interfaces/IWidgets';
import {loadFrame} from 'SiteEditorBase/Loader';
loadFrame('9e73bec4-b30e-4141-8f97-d3d04738d355').then((frame: IConstructedWidget[]) => {
doSomeWithFrame(frame);
});