@steedos/steedos-plugin-schema-builder 2.2.50 → 2.2.51-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -49
- package/webapp/package.json +59 -0
- package/src/objects.action.js +0 -5
- package/src/objects.object.yml +0 -6
- package/webapp/src/custom.d.ts +0 -33
- package/webapp/src/g6/behavior/activate-relations/index.tsx +0 -160
- package/webapp/src/g6/behavior/darg/index.tsx +0 -146
- package/webapp/src/g6/behavior/index.tsx +0 -5
- package/webapp/src/g6/model/editor-background.png +0 -0
- package/webapp/src/g6/model/index.tsx +0 -574
- package/webapp/src/g6/model/model-node.tsx +0 -1080
- package/webapp/src/g6/model/model.scss +0 -163
- package/webapp/src/g6/model/toolbar.tsx +0 -360
- package/webapp/src/g6/shape/base-sharp/index.tsx +0 -19
- package/webapp/src/g6/shape/index.tsx +0 -0
- package/webapp/src/g6/util/graph.tsx +0 -60
- package/webapp/src/g6/util/hooks.tsx +0 -26
- package/webapp/src/g6/util/index.tsx +0 -20
- package/webapp/src/g6/util/intel.ts +0 -7
- package/webapp/src/hook/index.tsx +0 -47
- package/webapp/src/index.tsx +0 -25
- package/webapp/src/page/dva-model/index.tsx +0 -70
- package/webapp/src/page/dva-model/reducer/arrange.tsx +0 -16
- package/webapp/src/page/dva-model/reducer/index.tsx +0 -7
- package/webapp/src/page/dva-model/reducer/init.tsx +0 -61
- package/webapp/src/page/dva-model/reducer/model.tsx +0 -126
- package/webapp/src/page/dva-model/reducer/on-expand.tsx +0 -27
- package/webapp/src/page/dva-model/style.tsx +0 -88
- package/webapp/src/page/hooks/callback.tsx +0 -54
- package/webapp/src/page/hooks/fullscreen.tsx +0 -34
- package/webapp/src/page/hooks/pagehooks.tsx +0 -127
- package/webapp/src/page/hooks/resize.tsx +0 -20
- package/webapp/src/page/index.tsx +0 -393
- package/webapp/src/page/model-navi/index.tsx +0 -329
- package/webapp/src/page/model-navi/style.scss +0 -111
- package/webapp/src/page/util/index.tsx +0 -234
- package/webapp/src/page/util/layout-nodes/index.tsx +0 -185
- package/webapp/src/pdm/index.tsx +0 -50
- package/webapp/src/pdm/pdm-json/index.js +0 -224
- package/webapp/src/pdm/pdm-json/removeDiacritics.js +0 -96
- package/webapp/src/pdm/util.ts +0 -60
- package/webapp/src/style.less +0 -14
- package/webapp/src/tree/index.tsx +0 -46
- package/webapp/src/tree/style.scss +0 -26
- package/webapp/src/type/field.tsx +0 -10
- package/webapp/src/type/index.tsx +0 -3
- package/webapp/src/type/model.tsx +0 -12
- package/webapp/src/type/module.tsx +0 -4
- package/webapp/test/g6-test/mock/model-test.ts +0 -3620
- package/webapp/test/g6-test/mock/module-test.ts +0 -14
- package/webapp/test/g6-test/mock/steedos-test.ts +0 -86
- package/webapp/test/index.tsx +0 -66
- package/webapp/test/testg6.tsx +0 -126
- package/webapp/test/unstated/index.tsx +0 -19
- package/webapp/tsconfig.json +0 -27
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { IModel, IModule } from '../../../src/type'
|
|
2
|
-
|
|
3
|
-
export type models = {
|
|
4
|
-
value : model[]
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export type model = {
|
|
8
|
-
fields: Record<string, field>
|
|
9
|
-
label: string,
|
|
10
|
-
name: string ,
|
|
11
|
-
is_system: boolean
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export type field = {
|
|
15
|
-
label: string,
|
|
16
|
-
name: string,
|
|
17
|
-
type : string, //lookup
|
|
18
|
-
is_system: boolean,
|
|
19
|
-
is_enable: boolean,
|
|
20
|
-
reference_to: string
|
|
21
|
-
required: boolean
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export type ItoErd = (models: models)=> IModel[]
|
|
25
|
-
|
|
26
|
-
const FIELDTYPEMAP:any = {
|
|
27
|
-
boolean: '勾选框',
|
|
28
|
-
currency: '金额',
|
|
29
|
-
date: '日期',
|
|
30
|
-
datetime: '日期时间',
|
|
31
|
-
email: '邮件地址',
|
|
32
|
-
html: 'Html文本',
|
|
33
|
-
lookup: '相关表',
|
|
34
|
-
master_detail: '主表/子表',
|
|
35
|
-
number: '数值',
|
|
36
|
-
password: '密码',
|
|
37
|
-
select: '选择框',
|
|
38
|
-
text: '文本',
|
|
39
|
-
textarea: '长文本',
|
|
40
|
-
url: '网址',
|
|
41
|
-
autonumber: '自动编号'
|
|
42
|
-
}
|
|
43
|
-
const getFieldTypeLabel = function(type: string){
|
|
44
|
-
let lable = FIELDTYPEMAP[type];
|
|
45
|
-
return lable ? lable: type
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export const toERDModels : ItoErd = (models: models) =>{
|
|
49
|
-
|
|
50
|
-
return models?.value.map(v => {
|
|
51
|
-
return {
|
|
52
|
-
fields : Object.entries(v.fields).filter(([_,v]) => !v.is_system ).map(([_,v])=> {
|
|
53
|
-
let relationModel = v.reference_to && v.reference_to === 'users'? 'space_users' : v.reference_to
|
|
54
|
-
return {
|
|
55
|
-
type : getFieldTypeLabel(v.type),
|
|
56
|
-
key: v.name,
|
|
57
|
-
originalKey: v.name,
|
|
58
|
-
name: v.label,
|
|
59
|
-
typeMeta: relationModel && {
|
|
60
|
-
type:'Relation',
|
|
61
|
-
relationModel: relationModel
|
|
62
|
-
},
|
|
63
|
-
required: v.required
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
}),
|
|
67
|
-
key: v.name,
|
|
68
|
-
name: v.label,
|
|
69
|
-
moduleKey : v.is_system ? "system" :"business",
|
|
70
|
-
originalKey: v.name,
|
|
71
|
-
type: ""
|
|
72
|
-
}
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export type toModules = ()=> IModule[]
|
|
77
|
-
|
|
78
|
-
export const toModules = () => {
|
|
79
|
-
return [{
|
|
80
|
-
key :'system',
|
|
81
|
-
name:'系统'
|
|
82
|
-
},{
|
|
83
|
-
key :'business',
|
|
84
|
-
name:'业务'
|
|
85
|
-
}]
|
|
86
|
-
}
|
package/webapp/test/index.tsx
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// import dva from 'dva'
|
|
2
|
-
import React, { useMemo, useCallback } from 'react'
|
|
3
|
-
import { useRequest } from 'ahooks';
|
|
4
|
-
import { Skeleton, message } from 'antd'
|
|
5
|
-
import Page , { DvaModel } from '../src'
|
|
6
|
-
// import getAllModelsTest from './g6-test/mock/model-test'
|
|
7
|
-
// import getAllModulesTest from './g6-test/mock/module-test'
|
|
8
|
-
import { toModules, toERDModels } from './g6-test/mock/steedos-test'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import init from './unstated'
|
|
12
|
-
|
|
13
|
-
const ErdPdmPage = (props) => {
|
|
14
|
-
var href = new URL(window.location.href);
|
|
15
|
-
var foo = href.pathname.split('/schema-builder');
|
|
16
|
-
var ROOT_URL_PATH_PREFIX = '';
|
|
17
|
-
if(foo.length > 1){
|
|
18
|
-
ROOT_URL_PATH_PREFIX = foo[0];
|
|
19
|
-
}
|
|
20
|
-
const { data, error, loading } = useRequest(ROOT_URL_PATH_PREFIX+'/api/v4/objects/schema/erd');
|
|
21
|
-
// alert(JSON.stringify(data))
|
|
22
|
-
const { getModels, getModules } = useMemo(() => ({
|
|
23
|
-
getModels: async () => ({ res: toERDModels(data) }),
|
|
24
|
-
getModules: async () => ({ res: toModules() }),
|
|
25
|
-
// getModels: async () => ({ res: getAllModelsTest }),
|
|
26
|
-
// getModules: async () => ({ res: getAllModulesTest }),
|
|
27
|
-
}), [data])
|
|
28
|
-
|
|
29
|
-
if(error?.message === 'Unauthorized') {
|
|
30
|
-
// alert(window.location.href)
|
|
31
|
-
message.error('请登录');
|
|
32
|
-
window.location.href = ROOT_URL_PATH_PREFIX+'/accounts/a/#/login?redirect_uri='+ encodeURI(window.location.href)
|
|
33
|
-
} else {
|
|
34
|
-
if(error) message.error(error.message);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const openModelFun = useCallback((args)=>{
|
|
39
|
-
window.open(`${ROOT_URL_PATH_PREFIX}/app/admin/objects/view/${args.model}`,'model')
|
|
40
|
-
} , [])
|
|
41
|
-
|
|
42
|
-
if(!data) return <Skeleton avatar active paragraph={{ rows: 20 }} >{error?.message}</Skeleton>
|
|
43
|
-
return (
|
|
44
|
-
<Page {...props}
|
|
45
|
-
getModels={getModels}
|
|
46
|
-
getModules={getModules}
|
|
47
|
-
modelEditFun={openModelFun}
|
|
48
|
-
isFullScreen
|
|
49
|
-
/>
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
// alert()
|
|
53
|
-
// // 创建应用
|
|
54
|
-
// const app = dva()
|
|
55
|
-
// app.model(DvaModel({namespace: 'erd'}) as any)
|
|
56
|
-
// // 注册视图
|
|
57
|
-
// app.router(() => (
|
|
58
|
-
// <div>
|
|
59
|
-
// <ErdPdmPage />
|
|
60
|
-
// </div>
|
|
61
|
-
// ))
|
|
62
|
-
// // 启动应用
|
|
63
|
-
// app.start('#app')
|
|
64
|
-
init(ErdPdmPage)
|
|
65
|
-
// document.appendChild(new HTMLDivElement({}))
|
|
66
|
-
// import './testg6'
|
package/webapp/test/testg6.tsx
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import G6 from '@antv/g6';
|
|
2
|
-
/**
|
|
3
|
-
* 演示如何响应节点某一区域上的点击事件
|
|
4
|
-
* by 长哲
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const GRAPH_CONTAINER = 'app1';
|
|
8
|
-
|
|
9
|
-
// 注册自定义节点
|
|
10
|
-
G6.registerNode(
|
|
11
|
-
'customNode',
|
|
12
|
-
{
|
|
13
|
-
// 绘制节点
|
|
14
|
-
drawShape: function drawShape(cfg, group) {
|
|
15
|
-
const shapeType = this.shapeType;
|
|
16
|
-
const style = Object.assign({}, this.getShapeStyle(cfg), {
|
|
17
|
-
x: 0,
|
|
18
|
-
y: 0,
|
|
19
|
-
r: 50,
|
|
20
|
-
});
|
|
21
|
-
const shape = group.addShape(shapeType, {
|
|
22
|
-
attrs: style,
|
|
23
|
-
name: 'key-shape',
|
|
24
|
-
});
|
|
25
|
-
// 绘制节点里面的小圆。点击这个小圆会显示tooltip
|
|
26
|
-
group.addShape('circle', {
|
|
27
|
-
attrs: {
|
|
28
|
-
x: 0,
|
|
29
|
-
y: -30,
|
|
30
|
-
r: 10,
|
|
31
|
-
fill: '#096dd9',
|
|
32
|
-
cursor: 'pointer',
|
|
33
|
-
},
|
|
34
|
-
name: 'circle-shape',
|
|
35
|
-
});
|
|
36
|
-
return shape;
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
'circle',
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
const data = {
|
|
43
|
-
nodes: [
|
|
44
|
-
{
|
|
45
|
-
id: 'node1',
|
|
46
|
-
x: 100,
|
|
47
|
-
y: 150,
|
|
48
|
-
label: 'node1',
|
|
49
|
-
size: 100,
|
|
50
|
-
type: 'customNode',
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
id: 'node2',
|
|
54
|
-
x: 300,
|
|
55
|
-
y: 150,
|
|
56
|
-
label: 'node2',
|
|
57
|
-
size: 100,
|
|
58
|
-
type: 'customNode',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
edges: [
|
|
62
|
-
{
|
|
63
|
-
source: 'node1',
|
|
64
|
-
target: 'node2',
|
|
65
|
-
},
|
|
66
|
-
],
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const width = 500;
|
|
70
|
-
const height = document.getElementById('app1')!.scrollHeight || 500;
|
|
71
|
-
const graph = new G6.Graph({
|
|
72
|
-
container: GRAPH_CONTAINER,
|
|
73
|
-
width,
|
|
74
|
-
height,
|
|
75
|
-
modes: {
|
|
76
|
-
default: [
|
|
77
|
-
{
|
|
78
|
-
type: 'drag-node',
|
|
79
|
-
enableDelegate: true
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
defaultNode: {
|
|
84
|
-
style: {
|
|
85
|
-
fill: '#DEE9FF',
|
|
86
|
-
stroke: '#5B8FF9',
|
|
87
|
-
},
|
|
88
|
-
labelCfg: {
|
|
89
|
-
style: {
|
|
90
|
-
fontSize: 12,
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
defaultEdge: {
|
|
95
|
-
style: {
|
|
96
|
-
stroke: '#e2e2e2',
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
nodeStateStyles: {
|
|
100
|
-
selected: {
|
|
101
|
-
stroke: 'red'
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
graph.data(data);
|
|
107
|
-
graph.render();
|
|
108
|
-
|
|
109
|
-
// 节点上的点击事件
|
|
110
|
-
graph.on('node:click', function(event) {
|
|
111
|
-
const { item } = event;
|
|
112
|
-
graph.setItemState(item, 'selected', true)
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
graph.on('circle-shape:click', evt => {
|
|
116
|
-
const { item } = evt
|
|
117
|
-
graph.updateItem(item, {
|
|
118
|
-
label: '点击了圆',
|
|
119
|
-
labelCfg: {
|
|
120
|
-
style: {
|
|
121
|
-
fill: '#003a8c',
|
|
122
|
-
fontSize: 16,
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
})
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React, { useReducer } from 'react'
|
|
2
|
-
import ReactDom from 'react-dom'
|
|
3
|
-
import { PageModel } from '../../src/hook'
|
|
4
|
-
|
|
5
|
-
const PageComp = () => {
|
|
6
|
-
const { state } = PageModel.useContainer()
|
|
7
|
-
return <div>{JSON.stringify(state)}</div>
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const PageRender = (PageCompp = PageComp) =>
|
|
11
|
-
<PageModel.Provider>
|
|
12
|
-
<PageCompp />
|
|
13
|
-
</PageModel.Provider>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export default (PageCompp) => {
|
|
17
|
-
ReactDom.render(PageRender(PageCompp), document.getElementById("app"))
|
|
18
|
-
}
|
|
19
|
-
|
package/webapp/tsconfig.json
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "esnext",
|
|
4
|
-
"target": "es2018",
|
|
5
|
-
"lib": ["dom", "es6"],
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"importHelpers": true,
|
|
8
|
-
"jsx": "react",
|
|
9
|
-
"esModuleInterop": true,
|
|
10
|
-
"experimentalDecorators": true,
|
|
11
|
-
"sourceMap": true,
|
|
12
|
-
"baseUrl": ".",
|
|
13
|
-
"allowSyntheticDefaultImports": true,
|
|
14
|
-
"resolveJsonModule": true,
|
|
15
|
-
"noImplicitAny": true,
|
|
16
|
-
"noUnusedParameters": true,
|
|
17
|
-
"noUnusedLocals": true,
|
|
18
|
-
"downlevelIteration": true,
|
|
19
|
-
"emitDecoratorMetadata": true,
|
|
20
|
-
"allowUnreachableCode": true,
|
|
21
|
-
"strictNullChecks": true,
|
|
22
|
-
"forceConsistentCasingInFileNames": true,
|
|
23
|
-
"isolatedModules":false,
|
|
24
|
-
"preserveSymlinks":true
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
}
|