feat(doc): update api doc

This commit is contained in:
chenos 2021-11-17 18:54:32 +08:00
parent a702f534ba
commit 296fbd6c08
11 changed files with 230 additions and 27 deletions

View File

@ -59,6 +59,64 @@ const SchemaComponent = createSchemaComponent({
/> />
``` ```
SchemaComponent 是通过 Schema 协议渲染的组件SchemaComponent 可能由多个原子组件组合而成。
```ts
interface ISchema {
type: string;
name?: string;
title?: any;
properties?: any;
['x-component']?: any;
['x-component-props']?: any;
['x-decorator']?: any;
['x-decorator-props']?: any;
['x-designable-bar']?: any;
['x-designable-bar-props']?: any;
}
```
Schema 组件的完整结构如下:
<pre lang="tsx">
<Decorator>
<DesignableBar />
<Component>
{...properties}
</Component>
</Decorator>
</pre>
DesignableBar 可以用于修改当前 SchemaComponent 的 Schema。可以以任意形态出现例如
<pre lang="tsx">
function DesignableBar() {
// 这里是随意写的,当前 schema可以 updateremove 等等
const { schema, update, remove } = useDesignableSchema();
return (
<Space>
<Dropdown overlay={
<Menu>
<Menu.Item>配置项1</Menu.Item>
<Menu.Item>配置项2</Menu.Item>
<Menu.Item>配置项3</Menu.Item>
</Menu>
}>
<a>配置<a/>
</DropDown>
<Dropdown>
<a>配置<a/>
</DropDown>
<Dropdown>
<a>配置<a/>
</DropDown>
</Space>
)
}
</pre>
如果 DesignableBar 只是修改当前层级的参数比较好处理,但是如果修改的是 properties 子节点里的参数,情况会变得比较复杂。
## 字段组件 ## 字段组件
```ts ```ts
@ -82,7 +140,6 @@ const string: FieldOptions = {
}, },
}, },
properties: { properties: {
}, },
operations: [ operations: [
{ label: '包含', value: '$includes', selected: true }, { label: '包含', value: '$includes', selected: true },
@ -92,10 +149,14 @@ const string: FieldOptions = {
{ label: '非空', value: '$notNull', noValue: true }, { label: '非空', value: '$notNull', noValue: true },
{ label: '为空', value: '$null', noValue: true }, { label: '为空', value: '$null', noValue: true },
], ],
designableBar: {
key1: {},
key2: {},
},
}; };
const CollectionField = createCollectionField({ const CollectionField = createCollectionField({
interface: { interfaces: {
string, string,
}, },
}) })

135
docs/plugins/collections.md Normal file
View File

@ -0,0 +1,135 @@
# @nocobase/plugin-collections
提供 HTTP API 的方式管理数据表和字段
## HTTP API
### Collections
```bash
GET /api/collections
POST /api/collections
GET /api/collections/<collectionName>
PUT /api/collections/<collectionName>
DELETE /api/collections/<collectionName>
```
### Fields
```bash
GET /api/collections/<collectionName>/fields
POST /api/collections/<collectionName>/fields
GET /api/collections/<collectionName>/fields/<fieldName>
PUT /api/collections/<collectionName>/fields/<fieldName>
DELETE /api/collections/<collectionName>/fields/<fieldName>
```
<Alert title="注意">
- 方便开发使用API Route 上直接暴露的是 collectionName 和 fieldName这样的可读性更好但是如果修改了 collectionName 和 fieldName可能会导致很多不可预知问题所以要谨慎修改或者不允许修改。
- fieldName 只在某 collectionName 下是唯一的。fields 表要为 collectionName 和 fieldName 建立唯一索引。
</Alert>
## Repository API
### CollectionRepository.load()
将符合条件的 collections 配置导入 db.collections
##### Definition
```ts
class CollectionRepository extends Repository {
async load(options?: LoadOptions): void;
}
```
##### Examples
```ts
const Collection = db.getCollection('collections');
await Collection.repository.load({
filter: {},
});
```
## Model API
### CollectionModel.migrate()
##### Definition
```ts
class CollectionModel extends Model {
migrate(options?: MigrateOptions): Promise<void>;
}
```
##### Examples
```ts
const collection = await Collection.repository.create({
name: 'tests',
});
await collection.migrate();
```
### FieldModel.migrate()
##### Definition
```ts
class FieldModel extends Model {
migrate(options?: MigrateOptions): Promise<void>;
}
```
##### Examples
```ts
const Field = db.getCollection('fields');
const field = await Field.repository.create({
type: 'string',
name: 'title',
collectionName: 'tests',
});
await field.migrate();
```
## plugin-collections 和 db.collection() 的区别
- plugin-collections 增加了绑定组件的相关参数interface、uiSchema
- plugin-collections 的配置存储在数据表里,再同步给 db.collection()
- db.collection() 适用于配置较固定的系统表
- plugin-collections 适用于配置业务表
## Examples
<Alert title="注意">
例子待补充
</Alert>
简单的配置
```ts
Collection.repository.create({
name: 'tests',
fields: [
{ type: 'string', name: 'title' },
{ type: 'text', name: 'content' },
],
});
```
带 uiSchema 的配置
```ts
Collection.repository.create({
name: 'tests',
fields: [
{ type: 'string', name: 'title' },
{ type: 'text', name: 'content', uiSchema: {}, interface: 'markdown' },
],
});
```

View File

@ -0,0 +1,3 @@
# @nocobase/plugin-permissions

View File

@ -31,7 +31,7 @@ app.db.on('xxx', () => {
资源实例 资源实例
## app.pm ## app.pm <Badge>待完善</Badge>
插件管理器,详情见 [Plugin Manager](plugin-manager) 插件管理器,详情见 [Plugin Manager](plugin-manager)
@ -71,9 +71,13 @@ app.i18n.t('Hello');
构造器 构造器
## app.use() ## app.use() <Badge>待完善</Badge>
中间件 添加中间件
## app.unuse() <Badge>待完善</Badge>
移除中间件
## app.on() ## app.on()
@ -87,11 +91,11 @@ app.i18n.t('Hello');
等同于 app.db.collection() 等同于 app.db.collection()
## app.actions() ## app.actions() <Badge>待完善</Badge>
等同于 app.resourcer.registerActions() 等同于 app.resourcer.registerActions()
## app.resource() ## app.resource() <Badge>待完善</Badge>
等同于 app.resourcer.define() 等同于 app.resourcer.define()
@ -99,19 +103,19 @@ app.i18n.t('Hello');
等同于 app.cli.parse() 等同于 app.cli.parse()
## app.load() ## app.load() <Badge>待完善</Badge>
加载配置 加载配置
## app.init() ## app.init() <Badge>待完善</Badge>
初始化 初始化
## app.start() ## app.start() <Badge>待完善</Badge>
启动应用 启动应用
## app.stop() ## app.stop() <Badge>待完善</Badge>
停止应用 停止应用

View File

@ -2,7 +2,7 @@
toc: menu toc: menu
--- ---
# CLI # CLI <Badge>待完善</Badge>
这里的 CLI 指的是通过 app.cli 提供的默认的 commands。 这里的 CLI 指的是通过 app.cli 提供的默认的 commands。
@ -23,18 +23,18 @@ toc: menu
- `--force` 删除重建 - `--force` 删除重建
## `pm:download` ## `pm:download` <Badge>待完善</Badge>
下载插件 下载插件
## `pm:enable` ## `pm:enable` <Badge>待完善</Badge>
激活插件 激活插件
## `pm:disable` ## `pm:disable` <Badge>待完善</Badge>
禁用插件 禁用插件
## `pm:remove` ## `pm:remove` <Badge>待完善</Badge>
移除插件 移除插件

View File

@ -2,15 +2,15 @@
toc: menu toc: menu
--- ---
# Client # Client <Badge>待完善</Badge>
## APIClient ## APIClient <Badge>待完善</Badge>
## createRouteSwitch ## createRouteSwitch <Badge>待完善</Badge>
## createCollectionField ## createCollectionField <Badge>待完善</Badge>
## createSchemaComponent ## createSchemaComponent <Badge>待完善</Badge>
## i18n ## i18n

View File

@ -2,7 +2,7 @@
toc: menu toc: menu
--- ---
# Collection # Collection <Badge>待完善</Badge>
## `collection.addField()` ## `collection.addField()`

View File

@ -24,7 +24,7 @@ async (ctx, next) {
## ctx.resourcer ## ctx.resourcer
## ctx.action ## ctx.action <Badge>待完善</Badge>
## ctx.i18n ## ctx.i18n

View File

@ -2,7 +2,7 @@
toc: menu toc: menu
--- ---
# Operators # Operators <Badge>待完善</Badge>
## string ## string

View File

@ -2,7 +2,7 @@
toc: menu toc: menu
--- ---
# PluginManager # PluginManager <Badge>待完善</Badge>
## pm.constructor() ## pm.constructor()

View File

@ -2,7 +2,7 @@
toc: menu toc: menu
--- ---
# Plugin # Plugin <Badge>待完善</Badge>
## plugin.constructor() ## plugin.constructor()
## plugin.enable() ## plugin.enable()