Skip to content

Commit eee7c7a

Browse files
committed
script context added
1 parent 90db7cd commit eee7c7a

File tree

3 files changed

+183
-1
lines changed

3 files changed

+183
-1
lines changed

Diff for: .vitepress/config/en.mts

+7-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ export default defineConfig({
1616

1717
socialLinks: [
1818
{ icon: 'github', link: 'https://github.com/tabbled/tabbled' },
19-
{ icon: 'youtube', link: 'https://youtube.com/@erp-systems' },
19+
{ icon: {
20+
svg: '<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">' +
21+
' <path d="M20.665 3.717l-17.73 6.837c-1.21.486-1.203 1.161-.222 1.462l4.552 1.42l10.532-6.645c.498-.303.953-.14.579.192l-8.533 7.701h-.002l.002.001l-.314 4.692c.46 0 .663-.211.921-.46l2.211-2.15l4.599 3.397c.848.467 1.457.227 1.668-.785l3.019-14.228c.309-1.239-.473-1.8-1.282-1.434z" fill="currentColor"/>' +
22+
'</svg>'},
23+
link: "https://t.me/tabbled"
24+
},
25+
{ icon: 'youtube', link: 'https://youtube.com/@tabbled-platform' },
2026
{ icon: 'discord', link: 'https://discord.gg/HaaMEyzT' },
2127
{ icon: 'twitter', link: 'https://twitter.com/the_tabbled' }
2228
]

Diff for: .vitepress/config/ru.mts

+7
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,19 @@ export default defineConfig({
3636
{ text: 'Шаблоны печати', link: '/ru/configuration/templates' },
3737
{ text: 'Пользователи', link: '/ru/configuration/users' },
3838
{ text: 'Настройки', link: '/ru/configuration/settings' },
39+
{ text: 'Контекст', link: '/ru/configuration/script-context' },
3940
]
4041
}
4142
],
4243

4344
socialLinks: [
4445
{ icon: 'github', link: 'https://github.com/tabbled/tabbled' },
46+
{ icon: {
47+
svg: '<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">' +
48+
' <path d="M20.665 3.717l-17.73 6.837c-1.21.486-1.203 1.161-.222 1.462l4.552 1.42l10.532-6.645c.498-.303.953-.14.579.192l-8.533 7.701h-.002l.002.001l-.314 4.692c.46 0 .663-.211.921-.46l2.211-2.15l4.599 3.397c.848.467 1.457.227 1.668-.785l3.019-14.228c.309-1.239-.473-1.8-1.282-1.434z" fill="currentColor"/>' +
49+
'</svg>'},
50+
link: "https://t.me/tabbled"
51+
},
4552
{ icon: 'youtube', link: 'https://www.youtube.com/@tabbled-platform' },
4653
{ icon: 'discord', link: 'https://discord.gg/HaaMEyzT' },
4754
{ icon: 'twitter', link: 'https://twitter.com/the_tabbled' }

Diff for: ru/configuration/script-context.md

+169
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
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

Comments
 (0)