mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-20 06:34:55 +00:00
[improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab. (#63)
[improvement][semantic-fe] Add permission control to the action buttons for the main domain; apply high sensitivity filtering to the authorization of metrics/dimensions. [improvement][semantic-fe] Optimize the editing mode in the dimension/metric/datasource components to use the modelId stored in the database for data, instead of relying on the data from the state manager.
This commit is contained in:
@@ -4,19 +4,21 @@ import DataSourceBasicForm from './DataSourceBasicForm';
|
||||
import FieldForm from './DataSourceFieldForm';
|
||||
import { formLayout } from '@/components/FormHelper/utils';
|
||||
import { EnumDataSourceType } from '../constants';
|
||||
import type { DataInstanceItem } from '../data';
|
||||
// import type { DataInstanceItem } from '../data';
|
||||
import styles from '../style.less';
|
||||
import { createDatasource, updateDatasource, getColumns } from '../../service';
|
||||
import type { Dispatch } from 'umi';
|
||||
import type { StateType } from '../../model';
|
||||
import { connect } from 'umi';
|
||||
import { IDataSource } from '../../data';
|
||||
|
||||
export type CreateFormProps = {
|
||||
domainManger: StateType;
|
||||
dispatch: Dispatch;
|
||||
createModalVisible: boolean;
|
||||
sql?: string;
|
||||
dataSourceItem: DataInstanceItem | any;
|
||||
databaseItem?: any;
|
||||
dataSourceItem: IDataSource.IDataSourceItem;
|
||||
onCancel?: () => void;
|
||||
onSubmit?: (dataSourceInfo: any) => void;
|
||||
scriptColumns?: any[] | undefined;
|
||||
@@ -39,6 +41,7 @@ const DataSourceCreateForm: React.FC<CreateFormProps> = ({
|
||||
sql = '',
|
||||
onSubmit,
|
||||
dataSourceItem,
|
||||
databaseItem,
|
||||
basicInfoFormMode,
|
||||
}) => {
|
||||
const isEdit = !!dataSourceItem?.id;
|
||||
@@ -160,10 +163,10 @@ const DataSourceCreateForm: React.FC<CreateFormProps> = ({
|
||||
const queryParams = {
|
||||
...submitForm,
|
||||
sqlQuery: sql,
|
||||
databaseId: dataSourceItem?.databaseId || formDatabaseId,
|
||||
databaseId: dataSourceItem?.databaseId || formDatabaseId || databaseItem?.key,
|
||||
queryType: basicInfoFormMode === 'fast' ? 'table_query' : 'sql_query',
|
||||
tableQuery: dbName && tableName ? `${dbName}.${tableName}` : '',
|
||||
modelId,
|
||||
modelId: isEdit ? dataSourceItem.modelId : modelId,
|
||||
};
|
||||
const queryDatasource = isEdit ? updateDatasource : createDatasource;
|
||||
const { code, msg, data } = await queryDatasource(queryParams);
|
||||
@@ -303,7 +306,7 @@ const DataSourceCreateForm: React.FC<CreateFormProps> = ({
|
||||
return (
|
||||
<>
|
||||
<div style={{ display: currentStep === 1 ? 'block' : 'none' }}>
|
||||
<FieldForm fields={fields} onFieldChange={handleFieldChange} />;
|
||||
<FieldForm fields={fields} onFieldChange={handleFieldChange} />
|
||||
</div>
|
||||
<div style={{ display: currentStep !== 1 ? 'block' : 'none' }}>
|
||||
<DataSourceBasicForm
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
import { isFunction } from 'lodash';
|
||||
import FullScreen from '@/components/FullScreen';
|
||||
import SqlEditor from '@/components/SqlEditor';
|
||||
import type { TaskResultItem, DataInstanceItem, TaskResultColumn } from '../data';
|
||||
import type { TaskResultItem, TaskResultColumn } from '../data';
|
||||
import { excuteSql } from '@/pages/SemanticModel/service';
|
||||
import DataSourceCreateForm from './DataSourceCreateForm';
|
||||
import type { Dispatch } from 'umi';
|
||||
@@ -36,7 +36,6 @@ type IProps = {
|
||||
onUpdateSql?: (sql: string) => void;
|
||||
sql?: string;
|
||||
onSubmitSuccess?: (dataSourceInfo: any) => void;
|
||||
onJdbcSourceChange?: (jdbcId: number) => void;
|
||||
};
|
||||
|
||||
type ResultTableItem = Record<string, any>;
|
||||
@@ -60,7 +59,6 @@ const SqlDetail: React.FC<IProps> = ({
|
||||
onSubmitSuccess,
|
||||
sql = '',
|
||||
onUpdateSql,
|
||||
onJdbcSourceChange,
|
||||
}) => {
|
||||
const { databaseConfigList, selectModelId: modelId } = domainManger;
|
||||
const [resultTable, setResultTable] = useState<ResultTableItem[]>([]);
|
||||
@@ -101,20 +99,6 @@ const SqlDetail: React.FC<IProps> = ({
|
||||
|
||||
const [scriptColumns, setScriptColumns] = useState<any[]>([]);
|
||||
|
||||
// useEffect(() => {
|
||||
// const list = databaseConfigList.map((item: ISemantic.IDatabaseItem) => {
|
||||
// return {
|
||||
// label: item.name,
|
||||
// key: item.id,
|
||||
// disabled: !item.hasUsePermission,
|
||||
// };
|
||||
// });
|
||||
// setJdbcSourceItems(list);
|
||||
// const config = list[0];
|
||||
// setCurrentJdbcSourceItem(config);
|
||||
// onJdbcSourceChange?.(config?.key && Number(config?.key));
|
||||
// }, [databaseConfigList]);
|
||||
|
||||
useEffect(() => {
|
||||
const list = databaseConfigList.map((item: ISemantic.IDatabaseItem) => {
|
||||
return {
|
||||
@@ -133,9 +117,12 @@ const SqlDetail: React.FC<IProps> = ({
|
||||
}
|
||||
}
|
||||
setCurrentJdbcSourceItem(targetDataBase);
|
||||
// onJdbcSourceChange?.(targetDataBase?.key && Number(targetDataBase?.key));
|
||||
}, [dataSourceItem, databaseConfigList]);
|
||||
|
||||
useEffect(() => {
|
||||
setRunState(undefined);
|
||||
}, [currentJdbcSourceItem]);
|
||||
|
||||
function creatCalcItem(key: string, data: string) {
|
||||
const line = document.createElement('div'); // 需要每条数据一行,这样避免数据换行的时候获得的宽度不准确
|
||||
const child = document.createElement('span');
|
||||
@@ -408,9 +395,7 @@ const SqlDetail: React.FC<IProps> = ({
|
||||
return item.key === Number(value);
|
||||
})[0];
|
||||
if (target) {
|
||||
// setJdbcSourceName(target.label);
|
||||
setCurrentJdbcSourceItem(target);
|
||||
onJdbcSourceChange?.(Number(value));
|
||||
}
|
||||
},
|
||||
}}
|
||||
@@ -520,6 +505,7 @@ const SqlDetail: React.FC<IProps> = ({
|
||||
{dataSourceModalVisible && (
|
||||
<DataSourceCreateForm
|
||||
sql={sql}
|
||||
databaseItem={currentJdbcSourceItem}
|
||||
dataSourceItem={dataSourceItem}
|
||||
scriptColumns={scriptColumns}
|
||||
onCancel={() => {
|
||||
|
||||
@@ -43,8 +43,6 @@ const SqlSide: React.FC<Props> = ({ initialValues, onSubmitSuccess }) => {
|
||||
const tableRef: TableRef = useRef();
|
||||
const panesRef = useRef<Panes[]>(defaultPanes);
|
||||
|
||||
const [dataSourceItem, setDataSourceItem] = useState<any>(initialValues || {});
|
||||
|
||||
const updatePane = (list: Panes[]) => {
|
||||
setPanes(list);
|
||||
panesRef.current = list;
|
||||
@@ -96,16 +94,10 @@ const SqlSide: React.FC<Props> = ({ initialValues, onSubmitSuccess }) => {
|
||||
>
|
||||
<SqlDetail
|
||||
onSubmitSuccess={onSubmitSuccess}
|
||||
dataSourceItem={dataSourceItem}
|
||||
dataSourceItem={initialValues}
|
||||
onUpdateSql={(sql: string) => {
|
||||
updateTabSql(sql, pane.key);
|
||||
}}
|
||||
onJdbcSourceChange={(databaseId) => {
|
||||
setDataSourceItem({
|
||||
...dataSourceItem,
|
||||
databaseId,
|
||||
});
|
||||
}}
|
||||
sql={pane.sql}
|
||||
/>
|
||||
</TabPane>
|
||||
|
||||
Reference in New Issue
Block a user