Skip to content

Commit 2774ded

Browse files
committed
add Editot
1 parent a2bc161 commit 2774ded

File tree

16 files changed

+104
-13
lines changed

16 files changed

+104
-13
lines changed

components-server/components-server/src/main/resources/application.properties

+8
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ spring.main.allow-bean-definition-overriding=true
1919

2020
codingapi.security.ignore-urls=/open/**,/oss/**,/#/**,/,/**.css,/**.js,/**.svg,/**.png,/**.ico
2121

22+
# ??????
23+
#codingapi.components.menu.enabled=false
24+
## ??????
25+
#codingapi.components.oss.enabled=false
26+
## ????????
27+
#codingapi.components.api.enabled=false
28+
## ????????
29+
#codingapi.components.parameter.enabled=false
2230

2331
codingapi.components.oss.endpoint=http://localhost:9000
2432
codingapi.components.oss.access-key=admin

components-server/components/api/api-domain/src/main/java/com/codingapi/components/api/config/ApiDomainConfiguration.java

+2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import com.codingapi.springboot.framework.dto.request.SearchRequest;
99
import com.codingapi.springboot.framework.dto.response.Response;
1010
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1112
import org.springframework.context.annotation.Bean;
1213
import org.springframework.context.annotation.Configuration;
1314
import org.springframework.data.domain.Page;
1415

1516
@Configuration
17+
@ConditionalOnProperty(prefix = "codingapi.components.api", name = "enabled", havingValue = "true", matchIfMissing = true)
1618
public class ApiDomainConfiguration {
1719

1820

components-server/components/api/api-infrastructure-db/src/main/java/com/codingapi/components/infrastructure/api/config/ApiInfrastructureConfiguration.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package com.codingapi.components.infrastructure.api.config;
22

3-
import com.codingapi.components.infrastructure.api.repository.impl.ApiRepositoryImpl;
4-
import com.codingapi.components.infrastructure.api.jpa.JpaApiMappingRepository;
53
import com.codingapi.components.api.repository.ApiRepository;
4+
import com.codingapi.components.infrastructure.api.jpa.JpaApiMappingRepository;
5+
import com.codingapi.components.infrastructure.api.repository.impl.ApiRepositoryImpl;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.boot.autoconfigure.domain.EntityScan;
78
import org.springframework.context.annotation.Bean;
89
import org.springframework.context.annotation.Configuration;
910
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
1011

12+
@Configuration
1113
@EnableJpaRepositories(basePackages = "com.codingapi.components.infrastructure.api")
1214
@EntityScan(basePackages = "com.codingapi.components.api.domain")
13-
@Configuration
15+
@ConditionalOnProperty(prefix = "codingapi.components.api", name = "enabled", havingValue = "true", matchIfMissing = true)
1416
public class ApiInfrastructureConfiguration {
1517

1618

components-server/components/api/api-restapi/src/main/java/com/codingapi/components/api/config/ApiRestApiConfiguration.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33
import com.codingapi.components.api.gateway.ScriptMappingGateway;
44
import com.codingapi.components.api.gateway.impl.ScriptMappingGatewayImpl;
55
import com.codingapi.springboot.fast.script.ScriptMappingRegister;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.context.annotation.Bean;
78
import org.springframework.context.annotation.ComponentScan;
89
import org.springframework.context.annotation.Configuration;
910

10-
@ComponentScan(basePackages = "com.codingapi.components.api")
1111
@Configuration
12+
@ComponentScan(basePackages = "com.codingapi.components.api")
13+
@ConditionalOnProperty(prefix = "codingapi.components.api", name = "enabled", havingValue = "true", matchIfMissing = true)
1214
public class ApiRestApiConfiguration {
1315

1416
@Bean
1517
public ScriptMappingGateway scriptMappingGateway(ScriptMappingRegister scriptMappingRegister) {
1618
return new ScriptMappingGatewayImpl(scriptMappingRegister);
1719
}
20+
1821
}

components-server/components/menu/menu-domain/src/main/java/com/codingapi/components/menu/config/MenuDomainConfiguration.java

+2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
import com.codingapi.components.menu.service.MenuService;
88
import com.codingapi.springboot.framework.dto.request.SearchRequest;
99
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
10+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1011
import org.springframework.context.annotation.Bean;
1112
import org.springframework.context.annotation.Configuration;
1213
import org.springframework.data.domain.Page;
1314

1415
import java.util.List;
1516

1617
@Configuration
18+
@ConditionalOnProperty(prefix = "codingapi.components.menu", name = "enabled", havingValue = "true", matchIfMissing = true)
1719
public class MenuDomainConfiguration {
1820

1921

components-server/components/menu/menu-infrastructure-db/src/main/java/com/codingapi/components/infrastructure/menu/config/MenuInfrastructureConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
import com.codingapi.components.infrastructure.menu.jpa.JpaMenuRepository;
44
import com.codingapi.components.infrastructure.menu.repository.impl.MenuRepositoryImpl;
55
import com.codingapi.components.menu.repository.MenuRepository;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.boot.autoconfigure.domain.EntityScan;
78
import org.springframework.context.annotation.Bean;
89
import org.springframework.context.annotation.Configuration;
910
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
1011

12+
@Configuration
13+
@ConditionalOnProperty(prefix = "codingapi.components.menu", name = "enabled", havingValue = "true", matchIfMissing = true)
1114
@EnableJpaRepositories(basePackages = "com.codingapi.components.infrastructure.menu")
1215
@EntityScan(basePackages = "com.codingapi.components.menu.domain")
13-
@Configuration
1416
public class MenuInfrastructureConfiguration {
1517

1618

components-server/components/menu/menu-restapi/src/main/java/com/codingapi/components/menu/config/MenuRestApiConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.codingapi.components.menu.config;
22

3+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
34
import org.springframework.context.annotation.ComponentScan;
45
import org.springframework.context.annotation.Configuration;
56

6-
@ComponentScan(basePackages = "com.codingapi.components.menu")
77
@Configuration
8+
@ConditionalOnProperty(prefix = "codingapi.components.menu", name = "enabled", havingValue = "true", matchIfMissing = true)
9+
@ComponentScan(basePackages = "com.codingapi.components.menu")
810
public class MenuRestApiConfiguration {
911

1012

components-server/components/oss/oss-domain/src/main/java/com/codingapi/components/oss/config/OSSDomainConfiguration.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
import com.codingapi.components.oss.domain.OSSFile;
44
import com.codingapi.components.oss.repository.FileRepository;
55
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.context.annotation.Bean;
78
import org.springframework.context.annotation.Configuration;
89

910
import java.io.InputStream;
1011
import java.util.List;
1112

1213
@Configuration
14+
@ConditionalOnProperty(prefix = "codingapi.components.oss", name = "enabled", havingValue = "true", matchIfMissing = true)
1315
public class OSSDomainConfiguration {
1416

1517

components-server/components/oss/oss-infrastructure-minio/src/main/java/com/codingapi/components/infrastructure/oss/config/OSSInfrastructureConfiguration.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
import com.codingapi.components.infrastructure.oss.properties.OSSProperties;
55
import com.codingapi.components.infrastructure.oss.repository.impl.FileRepositoryImpl;
66
import com.codingapi.components.oss.repository.FileRepository;
7+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
78
import org.springframework.boot.context.properties.ConfigurationProperties;
89
import org.springframework.context.annotation.Bean;
910
import org.springframework.context.annotation.Configuration;
1011

1112
@Configuration
13+
@ConditionalOnProperty(prefix = "codingapi.components.oss", name = "enabled", havingValue = "true", matchIfMissing = true)
1214
public class OSSInfrastructureConfiguration {
1315

1416

components-server/components/oss/oss-restapi/src/main/java/com/codingapi/components/oss/config/OSSRestApiConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.codingapi.components.oss.config;
22

3+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
34
import org.springframework.context.annotation.ComponentScan;
45
import org.springframework.context.annotation.Configuration;
56

6-
@ComponentScan(basePackages = "com.codingapi.components.oss")
77
@Configuration
8+
@ComponentScan(basePackages = "com.codingapi.components.oss")
9+
@ConditionalOnProperty(prefix = "codingapi.components.oss", name = "enabled", havingValue = "true", matchIfMissing = true)
810
public class OSSRestApiConfiguration {
911

1012

components-server/components/parameter/parameter-domain/src/main/java/com/codingapi/components/parameter/config/ParameterDomainConfiguration.java

+2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
import com.codingapi.components.parameter.service.ParameterService;
77
import com.codingapi.springboot.framework.dto.request.SearchRequest;
88
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
9+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
910
import org.springframework.context.annotation.Bean;
1011
import org.springframework.context.annotation.Configuration;
1112
import org.springframework.data.domain.Page;
1213

1314
@Configuration
15+
@ConditionalOnProperty(prefix = "codingapi.components.parameter", name = "enabled", havingValue = "true", matchIfMissing = true)
1416
public class ParameterDomainConfiguration {
1517

1618

components-server/components/parameter/parameter-infrastructure-db/src/main/java/com/codingapi/components/infrastructure/parameter/config/ParameterInfrastructureConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
import com.codingapi.components.infrastructure.parameter.jpa.JpaParameterRepository;
44
import com.codingapi.components.infrastructure.parameter.repository.impl.ParameterRepositoryImpl;
55
import com.codingapi.components.parameter.repository.ParameterRepository;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.boot.autoconfigure.domain.EntityScan;
78
import org.springframework.context.annotation.Bean;
89
import org.springframework.context.annotation.Configuration;
910
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
1011

12+
@Configuration
1113
@EnableJpaRepositories(basePackages = "com.codingapi.components.infrastructure.parameter")
1214
@EntityScan(basePackages = "com.codingapi.components.parameter.domain")
13-
@Configuration
15+
@ConditionalOnProperty(prefix = "codingapi.components.parameter", name = "enabled", havingValue = "true", matchIfMissing = true)
1416
public class ParameterInfrastructureConfiguration {
1517

1618

components-server/components/parameter/parameter-restapi/src/main/java/com/codingapi/components/parameter/config/ParameterRestApiConfiguration.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.codingapi.components.parameter.config;
22

3+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
34
import org.springframework.context.annotation.ComponentScan;
45
import org.springframework.context.annotation.Configuration;
56

6-
@ComponentScan(basePackages = "com.codingapi.components.parameter")
77
@Configuration
8+
@ComponentScan(basePackages = "com.codingapi.components.parameter")
9+
@ConditionalOnProperty(prefix = "codingapi.components.parameter", name = "enabled", havingValue = "true", matchIfMissing = true)
810
public class ParameterRestApiConfiguration {
911

1012

components-ui/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"dist"
88
],
99
"peerDependencies": {
10-
"@ant-design/pro-components": "^2.4.4",
1110
"@ant-design/icons": "^5.2.6",
11+
"@ant-design/pro-components": "^2.4.4",
1212
"@types/react": "^18.0.33",
1313
"@types/react-dom": "^18.0.11",
1414
"antd": "^5.12.5",
@@ -18,6 +18,7 @@
1818
},
1919
"dependencies": {
2020
"@ant-design/icons": "^5.2.6",
21+
"@monaco-editor/react": "^4.6.0",
2122
"@types/jest": "^26.0.15",
2223
"@types/node": "^12.0.0",
2324
"@types/react-resizable": "^3.0.7",

components-ui/src/page/Api/index.tsx

+41-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Button, Drawer, Form, message, notification, Popconfirm } from 'antd';
55
import { MyTable } from '../../components/MyTable';
66
import React, { useRef, useState } from 'react';
77
import Docs from './docs';
8+
import { Editor } from '@monaco-editor/react';
89

910
interface ApiPageProps {
1011

@@ -24,11 +25,17 @@ export const ApiPage: React.FC<ApiPageProps> = (props) => {
2425
const [createModalOpen, handleModalOpen] = useState<boolean>(false);
2526
const [api, contextHolder] = notification.useNotification();
2627
const [readmeVisible, setReadmeVisible] = useState(false);
28+
const editorRef = useRef(null);
2729

2830
const handleAdd = async (fields: any) => {
2931
const hide = message.loading('正在添加');
3032
try {
31-
await props.save({ ...fields });
33+
//@ts-ignore
34+
const script = editorRef.current?.getValue();
35+
await props.save({
36+
...fields,
37+
script: script
38+
});
3239
hide();
3340
message.success('保存成功');
3441
handleModalOpen(false);
@@ -141,6 +148,8 @@ export const ApiPage: React.FC<ApiPageProps> = (props) => {
141148
for (let key in record) {
142149
form.setFieldValue(key, record[key])
143150
}
151+
// @ts-ignore
152+
editorRef.current?.setValue(record.script);
144153
handleModalOpen(true);
145154
}}
146155
>
@@ -173,6 +182,28 @@ export const ApiPage: React.FC<ApiPageProps> = (props) => {
173182
},
174183
];
175184

185+
186+
function handleEditorDidMount(editor:any, monaco:any) {
187+
editorRef.current = editor;
188+
189+
//@ts-ignore
190+
monaco.languages.registerCompletionItemProvider('javascript', {
191+
triggerCharacters: ['$'],
192+
provideCompletionItems: function(model:any, position:any) {
193+
return {
194+
suggestions: [
195+
{
196+
label: '$jdbc.queryForList',
197+
kind: monaco.languages.CompletionItemKind.Text,
198+
insertText: '$jdbc.queryForList({sql},{params})',
199+
}
200+
]
201+
};
202+
}
203+
204+
});
205+
}
206+
176207
return (
177208
<div>
178209
{contextHolder}
@@ -313,7 +344,7 @@ export const ApiPage: React.FC<ApiPageProps> = (props) => {
313344
name="url" />
314345
</ProForm.Group>
315346

316-
<ProFormTextArea
347+
{/* <ProFormTextArea
317348
label="接口脚本(Groovy脚本)"
318349
help={<a onClick={() => setReadmeVisible(true)}>脚本手册</a>}
319350
fieldProps={{
@@ -326,7 +357,14 @@ export const ApiPage: React.FC<ApiPageProps> = (props) => {
326357
},
327358
]}
328359
placeholder="请输入接口脚本"
329-
name="script" />
360+
name="script" /> */}
361+
362+
<Editor
363+
height="30vh"
364+
theme="vs-dark"
365+
defaultLanguage="javascript"
366+
onMount={handleEditorDidMount}
367+
/>
330368

331369
<ProFormSelect
332370
placeholder="请输入接口状态"

components-ui/yarn.lock

+19
Original file line numberDiff line numberDiff line change
@@ -1757,6 +1757,20 @@
17571757
"@jridgewell/resolve-uri" "^3.1.0"
17581758
"@jridgewell/sourcemap-codec" "^1.4.14"
17591759

1760+
"@monaco-editor/loader@^1.4.0":
1761+
version "1.4.0"
1762+
resolved "https://registry.npmmirror.com/@monaco-editor/loader/-/loader-1.4.0.tgz#f08227057331ec890fa1e903912a5b711a2ad558"
1763+
integrity sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==
1764+
dependencies:
1765+
state-local "^1.0.6"
1766+
1767+
"@monaco-editor/react@^4.6.0":
1768+
version "4.6.0"
1769+
resolved "https://registry.npmmirror.com/@monaco-editor/react/-/react-4.6.0.tgz#bcc68671e358a21c3814566b865a54b191e24119"
1770+
integrity sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==
1771+
dependencies:
1772+
"@monaco-editor/loader" "^1.4.0"
1773+
17601774
"@nodelib/fs.scandir@2.1.5":
17611775
version "2.1.5"
17621776
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -11936,6 +11950,11 @@ stackframe@^1.3.4:
1193611950
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
1193711951
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
1193811952

11953+
state-local@^1.0.6:
11954+
version "1.0.7"
11955+
resolved "https://registry.npmmirror.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5"
11956+
integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==
11957+
1193911958
static-eval@2.0.2:
1194011959
version "2.0.2"
1194111960
resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42"

0 commit comments

Comments
 (0)