|
| 1 | +При выполнении выражений на страницах или в функциях прокидывается глобальные переменные, |
| 2 | +которые позволяют расширить функционал, выполнить проверки или дополнительную логику. |
| 3 | + |
| 4 | +# Глобальные переменные |
| 5 | + |
| 6 | +* `pages` (PagesService) - позволяет работать со страницами |
| 7 | +* `dataSources` (DataSourceService) - сервис доступа к источникам данных |
| 8 | +* `functions` (FunctionsService) - сервис позволяет вызывать и работать с функциями |
| 9 | +* `users` (UsersService) - работа с пользователями |
| 10 | +* `page` (PageParams) - текущие параметры страницы, доступно только в визульных компонентах и страницах |
| 11 | +* `message` (Message) - позволяет отобразить сообщение пользователю в виде всплыващего окна |
| 12 | + |
| 13 | + |
| 14 | +## PagesService |
| 15 | + |
| 16 | +Доступно только при испольнении интерфейсного кода, переменная `ctx.pages` |
| 17 | + |
| 18 | +### Функции |
| 19 | + |
| 20 | +#### open(alias: string, params: any) |
| 21 | +Открыть страницу по алиасу |
| 22 | + |
| 23 | +Параметры: |
| 24 | +* `alias`: string - алиас указанный в настройках страницы |
| 25 | +* `params`: any - параметры открытия страницы, который будут доступны в переменной контекста `ctx` |
| 26 | + |
| 27 | +Для страниц редактирования (`isEditPage=true`) обязательным параметром для открытия конкретной сущности является указание в `params` параметра `id` требуемой сущности, которые подставляется в route, наприме `/example-entity/{id}`. Если требуется открыть странцу для создания новой сущности, то передать `id=new` |
| 28 | + |
| 29 | +Пример открытия страницы редактирования существующей сущности (наприме выбранной в строке таблицы): |
| 30 | +```js |
| 31 | +pages.open('"example-entity"', { |
| 32 | + "id": "1681863152662220800" |
| 33 | +}) |
| 34 | +``` |
| 35 | +Пример открытия страницы редактирования для создания новой сущности |
| 36 | +```js |
| 37 | +ctx.pages.open('"example-entity"', { |
| 38 | + "id": "new" |
| 39 | +}) |
| 40 | +``` |
| 41 | + |
| 42 | +#### design (alias: string) |
| 43 | + |
| 44 | +Открыть страницу по алиасу в дизайнере страниц |
| 45 | + |
| 46 | +Параметры: |
| 47 | +* `alias`: string - алиас указанный в настройках страницы |
| 48 | + |
| 49 | +#### openDialog (options: DialogOptions) |
| 50 | + |
| 51 | +Открыть страницу в диалоговом окне |
| 52 | + |
| 53 | +Структура DialogOptions: |
| 54 | + |
| 55 | +* `page` (string, required) - алиас страницы |
| 56 | +* `title` (string, optional) - заголовок страницы |
| 57 | +* `modal` (bool, optional, default false) boolean - модальное окно, невозможно закрыть кликом мыши вне диалога |
| 58 | +* `width` (number, optional, default 400px) number - ширина окна |
| 59 | +* `selecting` (bool, optional, default false) boolean - диалог выбора, на странице должен быть компонент Table, который передает выбранные строки после нажатия кноки "Выбрать" |
| 60 | +* `onClose` (Function, optional) - callback вызываемый при закрытии окна |
| 61 | +* `onSelect` (Function, optional) - callback вызываемый после нажатия кнопки "Выбрать" |
| 62 | +* `onOpen` (Function, optional) - callback вызываемый при открытии страницы |
| 63 | + |
| 64 | +Пример вызова |
| 65 | +```js |
| 66 | +ctx.pages.openDialog({ |
| 67 | + page: "example-dialog", |
| 68 | + title: "Выбрать что то", |
| 69 | + selecting: true, |
| 70 | + onSelect: (event) => { |
| 71 | + console.log(event) |
| 72 | + } |
| 73 | +}) |
| 74 | +``` |
| 75 | + |
| 76 | +## DataSourceService |
| 77 | + |
| 78 | +Работа с источниками данных |
| 79 | + |
| 80 | +### Функции |
| 81 | + |
| 82 | +#### getByAlias(alias: string) : DataSource |
| 83 | + |
| 84 | +Параметры |
| 85 | + |
| 86 | +* `alias` (string, required) - алиас источника данных указанного в настройках |
| 87 | + |
| 88 | +Возвращает экземпляр класса `DataSource` |
| 89 | + |
| 90 | +### DataSource |
| 91 | + |
| 92 | +Позволяет работать с данными конкретного источника данных. |
| 93 | + |
| 94 | +#### Функции |
| 95 | + |
| 96 | +##### getMany(options?: GetDataManyOptions): Promise\<GetManyResponse\> |
| 97 | + |
| 98 | +Возвращает набор сущностей по заданным фильтрам |
| 99 | + |
| 100 | +Структура `GetDataManyOptions`: |
| 101 | +* `filter` (array of FilterItemInterface, optional) - фильтры по полям |
| 102 | +* `fields` (array of string, optional, default all fields) - необходимые для выборки поля по алиасам |
| 103 | +* `search` (string, optional) - поиск по совпадения текста, действуте только для полей с установленным полнотекстовым поиском |
| 104 | +* `take` (number, optional, default 100) - ограничение по кол-ву записей в выборке |
| 105 | +* `skip` (number, optional, default 0) - пропустить кол-во записей |
| 106 | +* `sort` (object, optional), - сортировка, доступны параметры: |
| 107 | + * `field` (string, required) - алиас поля |
| 108 | + * `ask` (boolean, required) - по возрастанию |
| 109 | +* `include` (array of string) - обязательно включить записи в выборку если они даже не подходят в поиске или фильтре |
| 110 | + |
| 111 | + |
| 112 | +##### getById(id: string) : Promise\<EntityInterface | undefined\> |
| 113 | + |
| 114 | +Возвращает сущность по его идентификатору |
| 115 | + |
| 116 | +##### getByKeys?(keys: any) : Promise\<EntityInterface | undefined\> |
| 117 | + |
| 118 | +Возвращает запись по ключевым полям, требуется для источников агрегаторов |
| 119 | + |
| 120 | +##### insert(id: string, value: any, parentId?: string, route?: string[]): Promise\<EntityInterface\> |
| 121 | + |
| 122 | +Добавить новую запись |
| 123 | + |
| 124 | +##### updateById(id: string, value: object): Promise\<EntityInterface\> |
| 125 | + |
| 126 | +Обновить щапись по идентификатору |
| 127 | + |
| 128 | +##### removeById(id: string, route?: string[]): Promise\<boolean\> |
| 129 | + |
| 130 | +Удалить запись по идентификатору, удаление мягкое, т.е. устанавливается пометка об удалении, потом запись можно найти в удаленных. |
| 131 | + |
| 132 | +##### setValue?(id: string, field: string, value: any): Promise\<void\> |
| 133 | + |
| 134 | +Обновить значение поля по идентификатору |
| 135 | + |
| 136 | +##### setVariable?(alias: string, value: any) |
| 137 | + |
| 138 | +Установить переменную для источника данных |
| 139 | + |
| 140 | +##### getFieldByAlias(alias: string): FieldInterface | undefined |
| 141 | + |
| 142 | +Возвращает параметры поля источника данных |
| 143 | + |
| 144 | +##### hasPermission(action: string, userPermissions: any) |
| 145 | + |
| 146 | +Возвращает, имеет ли пользователь полномочия на действие |
| 147 | + |
| 148 | +Доступные значения `alias`: |
| 149 | +* `Add` - добавление |
| 150 | +* `Edit` - изменения |
| 151 | +* `Remove` - удаление |
| 152 | + |
| 153 | +## FunctionsService |
| 154 | + |
| 155 | +Работа с функциями |
| 156 | + |
| 157 | +### Функции |
| 158 | + |
| 159 | +#### invoke (alias: string, context: any) : Promise\<any\> |
| 160 | + |
| 161 | +Вызов функции по алиасу с передачей контекста в функцию |
| 162 | + |
| 163 | +Пример |
| 164 | + |
| 165 | +```js |
| 166 | +functions.invoke('some-func', { |
| 167 | + makeSomething: true |
| 168 | +}) |
| 169 | +``` |
0 commit comments