mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
[improvement][semantic-fe] Optimizing pagination logic and some CSS styles (#294)
* [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
This commit is contained in:
@@ -11,9 +11,9 @@
|
|||||||
"build:inner": "cross-env REACT_APP_ENV=prod APP_TARGET=inner umi build",
|
"build:inner": "cross-env REACT_APP_ENV=prod APP_TARGET=inner umi build",
|
||||||
"build:test": "cross-env REACT_APP_ENV=test umi build",
|
"build:test": "cross-env REACT_APP_ENV=test umi build",
|
||||||
"deploy": "npm run site && npm run gh-pages",
|
"deploy": "npm run site && npm run gh-pages",
|
||||||
"dev": "npm run start:osdev",
|
"dev": "NODE_OPTIONS=--openssl-legacy-provider npm run start:osdev",
|
||||||
"dev:os": "npm run start:osdev",
|
"dev:os": "NODE_OPTIONS=--openssl-legacy-provider npm run start:osdev",
|
||||||
"dev:inner": "npm run start:dev",
|
"dev:inner": "NODE_OPTIONS=--openssl-legacy-provider npm run start:dev",
|
||||||
"gh-pages": "gh-pages -d dist",
|
"gh-pages": "gh-pages -d dist",
|
||||||
"i18n-remove": "pro i18n-remove --locale=zh-CN --write",
|
"i18n-remove": "pro i18n-remove --locale=zh-CN --write",
|
||||||
"postinstall": "umi g tmp",
|
"postinstall": "umi g tmp",
|
||||||
|
|||||||
@@ -64,17 +64,21 @@ const ClassMetricTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
...pagination,
|
...pagination,
|
||||||
...params,
|
...params,
|
||||||
createdBy: params.onlyShowMe ? currentUser.name : null,
|
createdBy: params.onlyShowMe ? currentUser.name : null,
|
||||||
pageSize: params.showType ? 100 : defaultPagination.pageSize,
|
pageSize: params.showType ? 100 : params.pageSize || pagination.pageSize,
|
||||||
});
|
});
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
const { list, pageSize, current, total } = data || {};
|
const { list, pageSize, total } = data || {};
|
||||||
let resData: any = {};
|
let resData: any = {};
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
setPagination({
|
if (!params.showType) {
|
||||||
pageSize: Math.min(pageSize, 100),
|
setPagination({
|
||||||
current,
|
...pagination,
|
||||||
total,
|
pageSize: Math.min(pageSize, 100),
|
||||||
});
|
// current,
|
||||||
|
total,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
setDataSource(list);
|
setDataSource(list);
|
||||||
resData = {
|
resData = {
|
||||||
data: list || [],
|
data: list || [],
|
||||||
@@ -128,15 +132,6 @@ const ClassMetricTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// dataIndex: 'alias',
|
|
||||||
// title: '别名',
|
|
||||||
// search: false,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// dataIndex: 'bizName',
|
|
||||||
// title: '字段名称',
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
dataIndex: 'modelName',
|
dataIndex: 'modelName',
|
||||||
title: '所属模型',
|
title: '所属模型',
|
||||||
|
|||||||
@@ -42,12 +42,12 @@ const ClassDimensionTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
...pagination,
|
...pagination,
|
||||||
modelId,
|
modelId,
|
||||||
});
|
});
|
||||||
const { list, pageSize, current, total } = data || {};
|
const { list, pageSize, total } = data || {};
|
||||||
let resData: any = {};
|
let resData: any = {};
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
setPagination({
|
setPagination({
|
||||||
|
...pagination,
|
||||||
pageSize: Math.min(pageSize, 100),
|
pageSize: Math.min(pageSize, 100),
|
||||||
current,
|
|
||||||
total,
|
total,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ const ClassDimensionTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
{
|
{
|
||||||
dataIndex: 'alias',
|
dataIndex: 'alias',
|
||||||
title: '别名',
|
title: '别名',
|
||||||
width: 300,
|
width: 150,
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
search: false,
|
search: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { ActionType, ProColumns } from '@ant-design/pro-table';
|
import type { ActionType, ProColumns } from '@ant-design/pro-table';
|
||||||
import ProTable from '@ant-design/pro-table';
|
import ProTable from '@ant-design/pro-table';
|
||||||
import { message, Button, Space, Popconfirm, Input, Tag } from 'antd';
|
import { message, Button, Space, Popconfirm, Input, Tag } from 'antd';
|
||||||
import React, { useRef, useState } from 'react';
|
import React, { useRef, useState, useEffect } from 'react';
|
||||||
import type { Dispatch } from 'umi';
|
import type { Dispatch } from 'umi';
|
||||||
import { connect } from 'umi';
|
import { connect } from 'umi';
|
||||||
import type { StateType } from '../model';
|
import type { StateType } from '../model';
|
||||||
@@ -25,7 +25,7 @@ const ClassMetricTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
const [metricItem, setMetricItem] = useState<ISemantic.IMetricItem>();
|
const [metricItem, setMetricItem] = useState<ISemantic.IMetricItem>();
|
||||||
const [pagination, setPagination] = useState({
|
const [pagination, setPagination] = useState({
|
||||||
current: 1,
|
current: 1,
|
||||||
pageSize: 20,
|
pageSize: 2,
|
||||||
total: 0,
|
total: 0,
|
||||||
});
|
});
|
||||||
const actionRef = useRef<ActionType>();
|
const actionRef = useRef<ActionType>();
|
||||||
@@ -36,12 +36,12 @@ const ClassMetricTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
...pagination,
|
...pagination,
|
||||||
modelId,
|
modelId,
|
||||||
});
|
});
|
||||||
const { list, pageSize, current, total } = data || {};
|
const { list, pageSize, total } = data || {};
|
||||||
let resData: any = {};
|
let resData: any = {};
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
setPagination({
|
setPagination({
|
||||||
|
...pagination,
|
||||||
pageSize: Math.min(pageSize, 100),
|
pageSize: Math.min(pageSize, 100),
|
||||||
current,
|
|
||||||
total,
|
total,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ const ClassMetricTable: React.FC<Props> = ({ domainManger, dispatch }) => {
|
|||||||
{
|
{
|
||||||
dataIndex: 'alias',
|
dataIndex: 'alias',
|
||||||
title: '别名',
|
title: '别名',
|
||||||
width: 300,
|
width: 150,
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
search: false,
|
search: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ type Props = {
|
|||||||
titles?: string[];
|
titles?: string[];
|
||||||
onKnowledgeInfosMapChange?: (knowledgeInfosMap: IChatConfig.IKnowledgeInfosItemMap) => void;
|
onKnowledgeInfosMapChange?: (knowledgeInfosMap: IChatConfig.IKnowledgeInfosItemMap) => void;
|
||||||
onChange?: (params?: any) => void;
|
onChange?: (params?: any) => void;
|
||||||
transferProps?: Record<string, any>;
|
// transferProps?: Record<string, any>;
|
||||||
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
const DimensionMetricVisibleTransfer: React.FC<Props> = ({
|
const DimensionMetricVisibleTransfer: React.FC<Props> = ({
|
||||||
@@ -24,8 +25,8 @@ const DimensionMetricVisibleTransfer: React.FC<Props> = ({
|
|||||||
sourceList = [],
|
sourceList = [],
|
||||||
targetList = [],
|
targetList = [],
|
||||||
titles,
|
titles,
|
||||||
transferProps = {},
|
|
||||||
onChange,
|
onChange,
|
||||||
|
...rest
|
||||||
}) => {
|
}) => {
|
||||||
const [transferData, setTransferData] = useState<RecordType[]>([]);
|
const [transferData, setTransferData] = useState<RecordType[]>([]);
|
||||||
const [targetKeys, setTargetKeys] = useState<string[]>(targetList);
|
const [targetKeys, setTargetKeys] = useState<string[]>(targetList);
|
||||||
@@ -74,7 +75,7 @@ const DimensionMetricVisibleTransfer: React.FC<Props> = ({
|
|||||||
}}
|
}}
|
||||||
targetKeys={targetKeys}
|
targetKeys={targetKeys}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
{...transferProps}
|
{...rest}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ const MetricInfoCreateForm: React.FC<CreateFormProps> = ({
|
|||||||
label={
|
label={
|
||||||
<FormItemTitle
|
<FormItemTitle
|
||||||
title={'小数位数'}
|
title={'小数位数'}
|
||||||
subTitle={`对小数位数进行设置,如保留两位,0.021252 -> 2.12${
|
subTitle={`对小数位数进行设置,如保留两位,0.021252 -> 0.02${
|
||||||
isPercentState ? '%' : ''
|
isPercentState ? '%' : ''
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -45,33 +45,6 @@ const MetricMeasuresFormTable: React.FC<Props> = ({
|
|||||||
dataIndex: 'bizName',
|
dataIndex: 'bizName',
|
||||||
title: '度量名称',
|
title: '度量名称',
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// dataIndex: 'alias',
|
|
||||||
// title: '别名',
|
|
||||||
// render: (_: any, record: any) => {
|
|
||||||
// const { alias, name } = record;
|
|
||||||
// const { measures } = measuresParams;
|
|
||||||
// return (
|
|
||||||
// <Input
|
|
||||||
// placeholder="请输入别名"
|
|
||||||
// value={alias}
|
|
||||||
// onChange={(event) => {
|
|
||||||
// const { value } = event.target;
|
|
||||||
// const list = measures.map((item: any) => {
|
|
||||||
// if (item.name === name) {
|
|
||||||
// return {
|
|
||||||
// ...item,
|
|
||||||
// alias: value,
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
// return item;
|
|
||||||
// });
|
|
||||||
// onFieldChange?.(list);
|
|
||||||
// }}
|
|
||||||
// />
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
dataIndex: 'constraint',
|
dataIndex: 'constraint',
|
||||||
title: '限定条件',
|
title: '限定条件',
|
||||||
|
|||||||
@@ -140,6 +140,10 @@ const PermissionCreateDrawer: React.FC<Props> = ({
|
|||||||
<ProCard title="列权限" bordered tooltip="仅对敏感度为高的指标/维度进行授权">
|
<ProCard title="列权限" bordered tooltip="仅对敏感度为高的指标/维度进行授权">
|
||||||
<DimensionMetricVisibleTransfer
|
<DimensionMetricVisibleTransfer
|
||||||
titles={['未授权维度/指标', '已授权维度/指标']}
|
titles={['未授权维度/指标', '已授权维度/指标']}
|
||||||
|
listStyle={{
|
||||||
|
width: 520,
|
||||||
|
height: 600,
|
||||||
|
}}
|
||||||
sourceList={[
|
sourceList={[
|
||||||
...dimensionList
|
...dimensionList
|
||||||
.map((item) => {
|
.map((item) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user