import React, { useState, useRef, useEffect } from 'react'; import { Button, Input, Space } from 'antd'; import ProTable from '@ant-design/pro-table'; import ProCard from '@ant-design/pro-card'; import SqlEditor from '@/components/SqlEditor'; import BindMeasuresTable from './BindMeasuresTable'; import FormLabelRequire from './FormLabelRequire'; import { ISemantic } from '../data'; type Props = { datasourceId?: number; typeParams: ISemantic.ITypeParams; measuresList: ISemantic.IMeasure[]; onFieldChange: (measures: ISemantic.IMeasure[]) => void; onSqlChange: (sql: string) => void; }; const { TextArea } = Input; const MetricMeasuresFormTable: React.FC = ({ datasourceId, typeParams, measuresList, onFieldChange, onSqlChange, }) => { const actionRef = useRef(); const [measuresModalVisible, setMeasuresModalVisible] = useState(false); const [measuresParams, setMeasuresParams] = useState( typeParams || { expr: '', measures: [], }, ); useEffect(() => { setMeasuresParams({ ...typeParams }); }, [typeParams]); const [exprString, setExprString] = useState(typeParams?.expr || ''); const columns = [ { dataIndex: 'bizName', title: '度量名称', }, { dataIndex: 'constraint', title: '限定条件', tooltip: '该限定条件用于在计算指标时限定口径,作用于度量,所用于过滤的维度必须在创建数据源的时候被标记为日期或者维度,不需要加where关键字。比如:维度A="值1" and 维度B="值2"', render: (_: any, record: any) => { const { constraint, name } = record; const { measures } = measuresParams; return (