diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx index 287a87bb6..7d9e68fe6 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx @@ -514,6 +514,7 @@ const MetricInfoCreateForm: React.FC = ({ typeParams={exprTypeParamsState[METRIC_DEFINE_TYPE.MEASURE]} measuresList={classMeasureList} onFieldChange={(measures: ISemantic.IMeasure[]) => { + // setClassMeasureList(measures); setExprTypeParamsState((prevState) => { return { ...prevState, diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricMeasuresFormTable.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricMeasuresFormTable.tsx index 2b0f88ad4..ce12c2a3b 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricMeasuresFormTable.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricMeasuresFormTable.tsx @@ -43,19 +43,41 @@ const MetricMeasuresFormTable: React.FC = ({ }); const [selectedKeysMap, setSelectedKeysMap] = useState>(() => { + if (!Array.isArray(measuresParams?.measures)) { + return {}; + } return measuresParams.measures.reduce((keyMap: any, item: ISemantic.IMeasure) => { keyMap[item.bizName] = true; return keyMap; }, {}); }); - useEffect(() => { + const getTableData = () => { const datasource = datasourceId && Array.isArray(measuresList) ? measuresList.filter((item) => item.datasourceId === datasourceId) : measuresList; - setTableData(datasource); - }, [measuresList]); + const { measures } = measuresParams; + if (!Array.isArray(measures)) { + return datasource; + } + const tableData = datasource.map((item) => { + const { bizName } = item; + const target = measures.find((measureItem) => measureItem.bizName === bizName); + if (target) { + return { + ...item, + constraint: target.constraint, + }; + } + return item; + }); + return tableData; + }; + + useEffect(() => { + setTableData(getTableData()); + }, [measuresList, measuresParams]); useEffect(() => { setMeasuresParams({ ...typeParams }); @@ -76,24 +98,29 @@ const MetricMeasuresFormTable: React.FC = ({ tooltip: '该限定条件用于在计算指标时限定口径,作用于度量,所用于过滤的维度必须在创建模型的时候被标记为日期或者维度,不需要加where关键字。比如:维度A="值1" and 维度B="值2"', render: (_: any, record: any) => { - const { constraint, name } = record; - const { measures } = measuresParams; + const { constraint, bizName } = record; return (