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
@ -82,7 +140,6 @@ const string: FieldOptions = {
},
},
properties: {
},
operations: [
{ label: '包含', value: '$includes', selected: true },
@ -92,10 +149,14 @@ const string: FieldOptions = {
{ label: '非空', value: '$notNull', noValue: true },
{ label: '为空', value: '$null', noValue: true },
],
designableBar: {
key1: {},
key2: {},
},
};
const CollectionField = createCollectionField({
interface: {
interfaces: {
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)
@ -71,9 +71,13 @@ app.i18n.t('Hello');
构造器
## app.use()
## app.use() <Badge>待完善</Badge>
中间件
添加中间件
## app.unuse() <Badge>待完善</Badge>
移除中间件
## app.on()
@ -87,11 +91,11 @@ app.i18n.t('Hello');
等同于 app.db.collection()
## app.actions()
## app.actions() <Badge>待完善</Badge>
等同于 app.resourcer.registerActions()
## app.resource()
## app.resource() <Badge>待完善</Badge>
等同于 app.resourcer.define()
@ -99,19 +103,19 @@ app.i18n.t('Hello');
等同于 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>
停止应用
@ -121,4 +125,4 @@ app.i18n.t('Hello');
## app.plugin()
等同于 app.pm.add()
等同于 app.pm.add()

View File

@ -2,7 +2,7 @@
toc: menu
---
# CLI
# CLI <Badge>待完善</Badge>
这里的 CLI 指的是通过 app.cli 提供的默认的 commands。
@ -23,18 +23,18 @@ toc: menu
- `--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
---
# Client
# Client <Badge>待完善</Badge>
## APIClient
## APIClient <Badge>待完善</Badge>
## createRouteSwitch
## createRouteSwitch <Badge>待完善</Badge>
## createCollectionField
## createCollectionField <Badge>待完善</Badge>
## createSchemaComponent
## createSchemaComponent <Badge>待完善</Badge>
## i18n

View File

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

View File

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

View File

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

View File

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

View File

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