mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
[improvement][semantic-fe] Fixing the abnormal state of the popup when creating a model. (#452)
* [improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab. [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. * [improvement][semantic-fe] Add time granularity setting in the data source configuration. * [improvement][semantic-fe] Dictionary import for dimension values supported in Q&A visibility * [improvement][semantic-fe] Modification of data source creation prompt wording" * [improvement][semantic-fe] metric market experience optimization * [improvement][semantic-fe] enhance the analysis of metric trends * [improvement][semantic-fe] optimize the presentation of metric trend permissions * [improvement][semantic-fe] add metric trend download functionality * [improvement][semantic-fe] fix the dimension initialization issue in metric correlation * [improvement][semantic-fe] Fix the issue of database changes not taking effect when creating based on an SQL data source. * [improvement][semantic-fe] Optimizing pagination logic and some CSS styles * [improvement][semantic-fe] Fixing the API for the indicator list by changing "current" to "pageNum" * [improvement][semantic-fe] Fixing the default value setting for the indicator list * [improvement][semantic-fe] Adding batch operations for indicators/dimensions/models * [improvement][semantic-fe] Replacing the single status update API for indicators/dimensions with a batch update API * [improvement][semantic-fe] Redesigning the indicator homepage to incorporate trend charts and table functionality for indicators * [improvement][semantic-fe] Optimizing the logic for setting dimension values and editing data sources, and adding system settings functionality * [improvement][semantic-fe] Upgrading antd version to 5.x, extracting the batch operation button component, optimizing the interaction for system settings, and expanding the configuration generation types for list-to-select component. * [improvement][semantic-fe] Adding the ability to filter dimensions based on whether they are tags or not. * [improvement][semantic-fe] Adding the ability to edit relationships between models in the canvas. * [improvement][semantic-fe] Updating the datePicker component to use dayjs instead. * [improvement][semantic-fe] Fixing the issue with passing the model ID for dimensions in the indicator market. * [improvement][semantic-fe] Fixing the abnormal state of the popup when creating a model.
This commit is contained in:
@@ -58,7 +58,7 @@
|
|||||||
"@ant-design/pro-layout": "^7.17.15",
|
"@ant-design/pro-layout": "^7.17.15",
|
||||||
"@ant-design/pro-table": "^3.13.9",
|
"@ant-design/pro-table": "^3.13.9",
|
||||||
"@antv/dom-util": "^2.0.4",
|
"@antv/dom-util": "^2.0.4",
|
||||||
"@antv/g6": "^4.8.14",
|
"@antv/g6": "^4.8.23",
|
||||||
"@antv/g6-core": "^0.8.23",
|
"@antv/g6-core": "^0.8.23",
|
||||||
"@antv/layout": "^0.3.20",
|
"@antv/layout": "^0.3.20",
|
||||||
"@antv/xflow": "^1.0.55",
|
"@antv/xflow": "^1.0.55",
|
||||||
|
|||||||
@@ -432,7 +432,9 @@ const DataSourceCreateForm: React.FC<CreateFormProps> = ({
|
|||||||
maskClosable={false}
|
maskClosable={false}
|
||||||
open={createModalVisible}
|
open={createModalVisible}
|
||||||
footer={renderFooter()}
|
footer={renderFooter()}
|
||||||
onCancel={onCancel}
|
onCancel={() => {
|
||||||
|
onCancel?.();
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Steps style={{ marginBottom: 28 }} size="small" current={currentStep}>
|
<Steps style={{ marginBottom: 28 }} size="small" current={currentStep}>
|
||||||
<Step title="基本信息" />
|
<Step title="基本信息" />
|
||||||
|
|||||||
@@ -142,6 +142,9 @@ const MetricTrendSection: React.FC<Props> = ({ metircData }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const queryDimensionList = async (ids: number[]) => {
|
const queryDimensionList = async (ids: number[]) => {
|
||||||
|
if (!(Array.isArray(ids) && ids.length > 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const { code, data, msg } = await getDimensionList({ ids });
|
const { code, data, msg } = await getDimensionList({ ids });
|
||||||
if (code === 200 && Array.isArray(data?.list)) {
|
if (code === 200 && Array.isArray(data?.list)) {
|
||||||
setDimensionList(data.list);
|
setDimensionList(data.list);
|
||||||
@@ -162,6 +165,9 @@ const MetricTrendSection: React.FC<Props> = ({ metircData }) => {
|
|||||||
const ids = data.map((item) => item.dimensionId);
|
const ids = data.map((item) => item.dimensionId);
|
||||||
queryDimensionList(ids);
|
queryDimensionList(ids);
|
||||||
return data;
|
return data;
|
||||||
|
} else {
|
||||||
|
setDimensionList([]);
|
||||||
|
setRelationDimensionOptions([]);
|
||||||
}
|
}
|
||||||
if (code !== 200) {
|
if (code !== 200) {
|
||||||
message.error(msg);
|
message.error(msg);
|
||||||
|
|||||||
@@ -1070,7 +1070,8 @@ const DomainManger: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{
|
|
||||||
|
{createDataSourceModalOpen && (
|
||||||
<ClassDataSourceTypeModal
|
<ClassDataSourceTypeModal
|
||||||
open={createDataSourceModalOpen}
|
open={createDataSourceModalOpen}
|
||||||
onCancel={() => {
|
onCancel={() => {
|
||||||
@@ -1082,7 +1083,7 @@ const DomainManger: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
updateGraphData();
|
updateGraphData();
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
{
|
{
|
||||||
<DeleteConfirmModal
|
<DeleteConfirmModal
|
||||||
open={confirmModalOpenState}
|
open={confirmModalOpenState}
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ const ClassDataSourceTypeModal: React.FC<Props> = ({
|
|||||||
const [scriptColumns, setScriptColumns] = useState<any[]>([]);
|
const [scriptColumns, setScriptColumns] = useState<any[]>([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!dataSourceItem || !open) {
|
if (!dataSourceItem?.id || !open) {
|
||||||
setCreateDataSourceModalOpen(open);
|
setCreateDataSourceModalOpen(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (dataSourceItem?.modelDetail?.queryType === 'table_query') {
|
if (dataSourceItem?.modelDetail?.queryType === 'table_query') {
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ const DimensionAndMetricRelationModal: React.FC<Props> = ({
|
|||||||
};
|
};
|
||||||
const { code, msg } = await updateExprMetric(queryParams);
|
const { code, msg } = await updateExprMetric(queryParams);
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
// message.success('编辑指标成功');
|
onSubmit(relationList);
|
||||||
// onSubmit?.(queryParams);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
message.error(msg);
|
message.error(msg);
|
||||||
@@ -46,7 +45,6 @@ const DimensionAndMetricRelationModal: React.FC<Props> = ({
|
|||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
onSubmit(relationList);
|
|
||||||
saveMetric(relationList);
|
saveMetric(relationList);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ import type { StateType } from '../model';
|
|||||||
import { deleteModel, updateModel } from '../service';
|
import { deleteModel, updateModel } from '../service';
|
||||||
import ClassDataSourceTypeModal from './ClassDataSourceTypeModal';
|
import ClassDataSourceTypeModal from './ClassDataSourceTypeModal';
|
||||||
|
|
||||||
import ModelCreateFormModal from './ModelCreateFormModal';
|
|
||||||
|
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import styles from './style.less';
|
import styles from './style.less';
|
||||||
import { ISemantic } from '../data';
|
import { ISemantic } from '../data';
|
||||||
@@ -23,15 +21,7 @@ type Props = {
|
|||||||
domainManger: StateType;
|
domainManger: StateType;
|
||||||
};
|
};
|
||||||
|
|
||||||
const ModelTable: React.FC<Props> = ({
|
const ModelTable: React.FC<Props> = ({ modelList, disabledEdit = false, onModelChange }) => {
|
||||||
modelList,
|
|
||||||
domainManger,
|
|
||||||
disabledEdit = false,
|
|
||||||
onModelChange,
|
|
||||||
dispatch,
|
|
||||||
}) => {
|
|
||||||
const { selectModelId: modelId, selectDomainId } = domainManger;
|
|
||||||
const [modelCreateFormModalVisible, setModelCreateFormModalVisible] = useState<boolean>(false);
|
|
||||||
const [modelItem, setModelItem] = useState<ISemantic.IModelItem>();
|
const [modelItem, setModelItem] = useState<ISemantic.IModelItem>();
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
const [createDataSourceModalOpen, setCreateDataSourceModalOpen] = useState(false);
|
const [createDataSourceModalOpen, setCreateDataSourceModalOpen] = useState(false);
|
||||||
@@ -143,7 +133,6 @@ const ModelTable: React.FC<Props> = ({
|
|||||||
key="metricEditBtn"
|
key="metricEditBtn"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setModelItem(record);
|
setModelItem(record);
|
||||||
// setModelCreateFormModalVisible(true);
|
|
||||||
setCreateDataSourceModalOpen(true);
|
setCreateDataSourceModalOpen(true);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -220,8 +209,6 @@ const ModelTable: React.FC<Props> = ({
|
|||||||
type="primary"
|
type="primary"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setModelItem(undefined);
|
setModelItem(undefined);
|
||||||
// setModelCreateFormModalVisible(true);
|
|
||||||
|
|
||||||
setCreateDataSourceModalOpen(true);
|
setCreateDataSourceModalOpen(true);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -235,28 +222,14 @@ const ModelTable: React.FC<Props> = ({
|
|||||||
open={createDataSourceModalOpen}
|
open={createDataSourceModalOpen}
|
||||||
dataSourceItem={modelItem}
|
dataSourceItem={modelItem}
|
||||||
onSubmit={() => {
|
onSubmit={() => {
|
||||||
// actionRef.current?.reload();
|
|
||||||
// setCreateDataSourceModalOpen(false);
|
|
||||||
onModelChange?.();
|
onModelChange?.();
|
||||||
|
setCreateDataSourceModalOpen(false);
|
||||||
}}
|
}}
|
||||||
onCancel={() => {
|
onCancel={() => {
|
||||||
setCreateDataSourceModalOpen(false);
|
setCreateDataSourceModalOpen(false);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{modelCreateFormModalVisible && (
|
|
||||||
<ModelCreateFormModal
|
|
||||||
domainId={selectDomainId}
|
|
||||||
basicInfo={modelItem}
|
|
||||||
onSubmit={() => {
|
|
||||||
setModelCreateFormModalVisible(false);
|
|
||||||
onModelChange?.();
|
|
||||||
}}
|
|
||||||
onCancel={() => {
|
|
||||||
setModelCreateFormModalVisible(false);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -374,6 +374,10 @@
|
|||||||
:global {
|
:global {
|
||||||
.ant-breadcrumb-link {
|
.ant-breadcrumb-link {
|
||||||
height: 28px;
|
height: 28px;
|
||||||
|
color: #709bf1;
|
||||||
|
&:hover{
|
||||||
|
color: #296df3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.anticon {
|
.anticon {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|||||||
Reference in New Issue
Block a user