[improvement][semantic-fe] Optimizing the logic for setting dimension values and editing data sources, and adding system settings functionality (#383)

* [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
This commit is contained in:
tristanliu
2023-11-14 06:01:23 -06:00
committed by GitHub
parent d4374f7074
commit 400d8b34fd
35 changed files with 1075 additions and 946 deletions

View File

@@ -1,17 +1,9 @@
import { CheckCard } from '@ant-design/pro-components';
import React, { useState } from 'react';
import { Button, Dropdown, message, Popconfirm } from 'antd';
import { PlusOutlined, EllipsisOutlined } from '@ant-design/icons';
import React from 'react';
import { ISemantic } from '../data';
import { connect } from 'umi';
import icon from '../../../assets/icon/cloudEditor.svg';
import type { Dispatch } from 'umi';
import type { StateType } from '../model';
import { formatNumber } from '../../../utils/utils';
import { deleteModel } from '../service';
import ModelCreateFormModal from './ModelCreateFormModal';
import ModelTable from './ModelTable';
import styles from './style.less';
type Props = {
disabledEdit?: boolean;
@@ -21,136 +13,10 @@ type Props = {
dispatch: Dispatch;
};
const OverView: React.FC<Props> = ({
modelList,
disabledEdit = false,
onModelChange,
domainManger,
}) => {
// const { selectDomainId, selectModelId } = domainManger;
// const [currentModel, setCurrentModel] = useState<any>({});
// const [modelCreateFormModalVisible, setModelCreateFormModalVisible] = useState<boolean>(false);
// const descNode = (model: ISemantic.IDomainItem) => {
// const { metricCnt, dimensionCnt } = model;
// return (
// <div className={styles.overviewExtraContainer}>
// <div className={styles.extraWrapper}>
// <div className={styles.extraStatistic}>
// <div className={styles.extraTitle}>维度数</div>
// <div className={styles.extraValue}>
// <span className="ant-statistic-content-value">{formatNumber(dimensionCnt || 0)}</span>
// </div>
// </div>
// </div>
// <div className={styles.extraWrapper}>
// <div className={styles.extraStatistic}>
// <div className={styles.extraTitle}>指标数</div>
// <div className={styles.extraValue}>
// <span className="ant-statistic-content-value">{formatNumber(metricCnt || 0)}</span>
// </div>
// </div>
// </div>
// </div>
// );
// };
// const extraNode = (model: ISemantic.IDomainItem) => {
// return (
// <Dropdown
// placement="top"
// menu={{
// onClick: ({ key, domEvent }) => {
// domEvent.stopPropagation();
// if (key === 'edit') {
// setCurrentModel(model);
// setModelCreateFormModalVisible(true);
// }
// },
// items: [
// {
// label: '编辑',
// key: 'edit',
// },
// {
// label: (
// <Popconfirm
// title="确认删除?"
// okText="是"
// cancelText="否"
// onConfirm={async () => {
// const { code, msg } = await deleteModel(model.id);
// if (code === 200) {
// onModelChange?.();
// } else {
// message.error(msg);
// }
// }}
// >
// <a key="modelDeleteBtn">删除</a>
// </Popconfirm>
// ),
// key: 'delete',
// },
// ],
// }}
// >
// <EllipsisOutlined
// style={{ fontSize: 22, color: 'rgba(0,0,0,0.5)' }}
// onClick={(e) => e.stopPropagation()}
// />
// </Dropdown>
// );
// };
const OverView: React.FC<Props> = ({ modelList, disabledEdit = false, onModelChange }) => {
return (
<div style={{ padding: '0px 20px 20px' }}>
<div style={{ padding: '20px' }}>
<ModelTable modelList={modelList} disabledEdit={disabledEdit} onModelChange={onModelChange} />
{/* {!disabledEdit && (
<div style={{ paddingBottom: '20px' }}>
<Button
onClick={() => {
setModelCreateFormModalVisible(true);
}}
type="primary"
>
<PlusOutlined />
新增模型
</Button>
</div>
)}
<CheckCard.Group value={selectModelId} defaultValue={selectModelId}>
{modelList &&
modelList.map((model: ISemantic.IDomainItem) => {
return (
<CheckCard
avatar={icon}
title={`${model.name}`}
key={model.id}
value={model.id}
description={descNode(model)}
extra={!disabledEdit && extraNode(model)}
onClick={() => {
onModelChange?.(model);
}}
/>
);
})}
</CheckCard.Group> */}
{/* {modelCreateFormModalVisible && (
<ModelCreateFormModal
domainId={selectDomainId}
basicInfo={currentModel}
onSubmit={() => {
setModelCreateFormModalVisible(false);
onModelChange?.();
}}
onCancel={() => {
setModelCreateFormModalVisible(false);
}}
/>
)} */}
</div>
);
};