Commit 8c575dd9 authored by coderTomato's avatar coderTomato

sql编辑页面自动保存

parent e9526e8d
...@@ -99,7 +99,8 @@ const FlinkSqlEditor = (props:any) => { ...@@ -99,7 +99,8 @@ const FlinkSqlEditor = (props:any) => {
type: "Studio/saveSqlMetaData", type: "Studio/saveSqlMetaData",
payload: { payload: {
activeKey:tabs.panes[tabIndex].key, activeKey:tabs.panes[tabIndex].key,
sqlMetaData sqlMetaData,
isModified: true,
}, },
}); });
onChange(val,event); onChange(val,event);
......
...@@ -3,6 +3,21 @@ import FlinkSQL from "./FlinkSQL"; ...@@ -3,6 +3,21 @@ import FlinkSQL from "./FlinkSQL";
import {SessionType} from "@/pages/FlinkSqlStudio/model"; import {SessionType} from "@/pages/FlinkSqlStudio/model";
import {Modal,message} from "antd"; import {Modal,message} from "antd";
import {addOrUpdateData, getData, handleRemove} from "@/components/Common/crud"; import {addOrUpdateData, getData, handleRemove} from "@/components/Common/crud";
/*--- 保存sql ---*/
export function saveTask(current:any,dispatch: any){
if (current.task) {
let task = {
...current.task,
statement: current.value,
};
dispatch && dispatch({
type: "Studio/saveTask",
payload: task,
});
}
}
/*--- 创建会话 ---*/ /*--- 创建会话 ---*/
export function createSession(session: SessionType,dispatch: any) { export function createSession(session: SessionType,dispatch: any) {
const res = addOrUpdateData("api/studio/createSession",session) const res = addOrUpdateData("api/studio/createSession",session)
......
...@@ -15,8 +15,8 @@ import {handleAddOrUpdate, postDataArray} from "@/components/Common/crud"; ...@@ -15,8 +15,8 @@ import {handleAddOrUpdate, postDataArray} from "@/components/Common/crud";
import {executeSql, explainSql, getStreamGraph} from "@/pages/FlinkSqlStudio/service"; import {executeSql, explainSql, getStreamGraph} from "@/pages/FlinkSqlStudio/service";
import StudioHelp from "./StudioHelp"; import StudioHelp from "./StudioHelp";
import StudioGraph from "./StudioGraph"; import StudioGraph from "./StudioGraph";
import {showCluster, showTables} from "@/components/Studio/StudioEvent/DDL"; import {showCluster, showTables, saveTask} from "@/components/Studio/StudioEvent/DDL";
import {useState} from "react"; import {useEffect, useState} from "react";
import StudioExplain from "../StudioConsole/StudioExplain"; import StudioExplain from "../StudioConsole/StudioExplain";
const menu = ( const menu = (
...@@ -236,21 +236,8 @@ const StudioMenu = (props: any) => { ...@@ -236,21 +236,8 @@ const StudioMenu = (props: any) => {
return data; return data;
}; };
const saveSqlAndSettingToTask = async () => { const saveSqlAndSettingToTask = () => {
const fieldsValue = await form.validateFields(); saveTask(current,dispatch);
if (current.task) {
let task = {
...current.task,
statement: current.value,
...fieldsValue
};
dispatch && dispatch({
type: "Studio/saveTask",
payload: task,
});
} else {
}
}; };
const runMenu = ( const runMenu = (
......
...@@ -4,7 +4,7 @@ import {connect} from "umi"; ...@@ -4,7 +4,7 @@ import {connect} from "umi";
import {StateType} from "@/pages/FlinkSqlStudio/model"; import {StateType} from "@/pages/FlinkSqlStudio/model";
import styles from './index.less'; import styles from './index.less';
import StudioEdit from '../StudioEdit'; import StudioEdit from '../StudioEdit';
import {saveTask} from "@/components/Studio/StudioEvent/DDL";
const { TabPane } = Tabs; const { TabPane } = Tabs;
const EditorTabs = (props: any) => { const EditorTabs = (props: any) => {
...@@ -21,6 +21,9 @@ const EditorTabs = (props: any) => { ...@@ -21,6 +21,9 @@ const EditorTabs = (props: any) => {
if(action=='add'){ if(action=='add'){
add(); add();
}else if(action=='remove'){ }else if(action=='remove'){
if(current.isModified){
saveTask(current,dispatch);
}
remove(targetKey); remove(targetKey);
} }
}; };
......
...@@ -93,6 +93,7 @@ export type TabsItemType = { ...@@ -93,6 +93,7 @@ export type TabsItemType = {
task?: TaskType; task?: TaskType;
console: ConsoleType; console: ConsoleType;
monaco?: any; monaco?: any;
isModified:boolean;
sqlMetaData?:SqlMetaData; sqlMetaData?:SqlMetaData;
} }
...@@ -180,6 +181,7 @@ const Model: ModelType = { ...@@ -180,6 +181,7 @@ const Model: ModelType = {
value: '', value: '',
closable: false, closable: false,
path: ['草稿'], path: ['草稿'],
isModified: false,
task: { task: {
jobName: '草稿', jobName: '草稿',
// type: 'standalone', // type: 'standalone',
...@@ -217,6 +219,7 @@ const Model: ModelType = { ...@@ -217,6 +219,7 @@ const Model: ModelType = {
key: 0, key: 0,
value: '', value: '',
closable: false, closable: false,
isModified: false,
path: ['草稿'], path: ['草稿'],
task: { task: {
jobName: '草稿', jobName: '草稿',
...@@ -304,10 +307,12 @@ const Model: ModelType = { ...@@ -304,10 +307,12 @@ const Model: ModelType = {
let newTabs = state.tabs; let newTabs = state.tabs;
if(newCurrent.key == payload.activeKey){ if(newCurrent.key == payload.activeKey){
newCurrent.sqlMetaData = payload.sqlMetaData; newCurrent.sqlMetaData = payload.sqlMetaData;
newCurrent.isModified = payload.isModified;
} }
for (let i = 0; i < newTabs.panes.length; i++) { for (let i = 0; i < newTabs.panes.length; i++) {
if (newTabs.panes[i].key == payload.activeKey) { if (newTabs.panes[i].key == payload.activeKey) {
newTabs.panes[i].sqlMetaData = payload.sqlMetaData; newTabs.panes[i].sqlMetaData = payload.sqlMetaData;
newTabs.panes[i].isModified = payload.isModified;
break; break;
} }
} }
...@@ -328,6 +333,7 @@ const Model: ModelType = { ...@@ -328,6 +333,7 @@ const Model: ModelType = {
...state, ...state,
current: { current: {
...newCurrent, ...newCurrent,
isModified:false,
}, },
tabs: { tabs: {
...payload, ...payload,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment