1- import { Upload , Checkbox , Banner } from "@douyinfe/semi-ui" ;
1+ import { Upload , Checkbox , Banner , Tabs , TabPane } from "@douyinfe/semi-ui" ;
22import { STATUS } from "../../../data/constants" ;
33import { useTranslation } from "react-i18next" ;
4+ import CodeEditor from "../../CodeEditor" ;
45
56export default function ImportSource ( {
67 importData,
@@ -12,45 +13,63 @@ export default function ImportSource({
1213
1314 return (
1415 < div >
15- < Upload
16- action = "#"
17- beforeUpload = { ( { file, fileList } ) => {
18- const f = fileList [ 0 ] . fileInstance ;
19- if ( ! f ) {
20- return ;
21- }
22- const reader = new FileReader ( ) ;
23- reader . onload = async ( e ) => {
24- setImportData ( ( prev ) => ( { ...prev , src : e . target . result } ) ) ;
25- } ;
26- reader . readAsText ( f ) ;
16+ < Tabs >
17+ < TabPane tab = { t ( "insert_sql" ) } itemKey = "text-import" >
18+ < CodeEditor
19+ className = "h-56"
20+ language = "sql"
21+ onChange = { ( value ) => {
22+ setImportData ( ( prev ) => ( { ...prev , src : value } ) ) ;
23+ setError ( {
24+ type : STATUS . NONE ,
25+ message : "" ,
26+ } ) ;
27+ } }
28+ />
29+ </ TabPane >
30+ < TabPane tab = { t ( "upload_file" ) } itemKey = "file-import" >
31+ < Upload
32+ action = "#"
33+ beforeUpload = { ( { file, fileList } ) => {
34+ const f = fileList [ 0 ] . fileInstance ;
35+ if ( ! f ) {
36+ return ;
37+ }
38+ const reader = new FileReader ( ) ;
39+ reader . onload = async ( e ) => {
40+ setImportData ( ( prev ) => ( { ...prev , src : e . target . result } ) ) ;
41+ } ;
42+ reader . readAsText ( f ) ;
43+
44+ return {
45+ autoRemove : false ,
46+ fileInstance : file . fileInstance ,
47+ status : "success" ,
48+ shouldUpload : false ,
49+ } ;
50+ } }
51+ draggable = { true }
52+ dragMainText = { t ( "drag_and_drop_files" ) }
53+ dragSubText = { t ( "upload_sql_to_generate_diagrams" ) }
54+ accept = ".sql"
55+ onRemove = { ( ) => {
56+ setError ( {
57+ type : STATUS . NONE ,
58+ message : "" ,
59+ } ) ;
60+ setImportData ( ( prev ) => ( { ...prev , src : "" } ) ) ;
61+ } }
62+ onFileChange = { ( ) =>
63+ setError ( {
64+ type : STATUS . NONE ,
65+ message : "" ,
66+ } )
67+ }
68+ limit = { 1 }
69+ />
70+ </ TabPane >
71+ </ Tabs >
2772
28- return {
29- autoRemove : false ,
30- fileInstance : file . fileInstance ,
31- status : "success" ,
32- shouldUpload : false ,
33- } ;
34- } }
35- draggable = { true }
36- dragMainText = { t ( "drag_and_drop_files" ) }
37- dragSubText = { t ( "upload_sql_to_generate_diagrams" ) }
38- accept = ".sql"
39- onRemove = { ( ) => {
40- setError ( {
41- type : STATUS . NONE ,
42- message : "" ,
43- } ) ;
44- setImportData ( ( prev ) => ( { ...prev , src : "" } ) ) ;
45- } }
46- onFileChange = { ( ) =>
47- setError ( {
48- type : STATUS . NONE ,
49- message : "" ,
50- } )
51- }
52- limit = { 1 }
53- />
5473 < div className = "mt-2" >
5574 < Checkbox
5675 aria-label = "overwrite checkbox"
0 commit comments