All files / src/form/gantt GanttTooltip.tsx

100% Statements 10/10
100% Branches 2/2
100% Functions 3/3
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57                          1x       4x 1x   3x 3x       3x         6x     5x 5x                 5x                          
import React from "react";
import { Card, FormInstance, Space } from "antd";
import { GanttTask } from "./GanttComponentTypes";
import "./GanttTooltip.less";
import { getDisplayRenderFunction } from "@kernel/DisplayComponentsMapping";
import { sortByDisplaySequence } from "@utils/ColumnsUtils";
 
export interface GanttTooltipProps {
  zIndex: number;
  task: GanttTask;
}
 
export const GanttTooltip: React.FC<GanttTooltipProps> =
  ({
     zIndex,
     task,
   }) => {
    if (task.isCombined) {
      return <></>;
    }
    const { rawData, name } = task;
    const domainMetaRecord = rawData.getTooltipFieldMetas();
    // console.log("GanttTooltip", renderColumns);
    // 将 zIndex 设置为 zIndex + 2 以避免被 GanttChart 左边的表格的操作列的图标遮挡
    // top: 36px 能够正好让 Popover 不遮挡 task 显示
    return <div key={task.domainKey} style={{ zIndex: zIndex + 2, position: "absolute", top: "36px" }}>
      <Card title={name} className="gantt-tooltip-content">
        <Space direction="vertical" size="small">
          {Object
            .values(domainMetaRecord)
            .filter((columnMeta) => columnMeta.display !== false)
            .sort(sortByDisplaySequence)
            .map((columnMeta) => {
              const { key, title } = columnMeta;
              const readOnlyRenderFunc = getDisplayRenderFunction({
                column: columnMeta,
                enumValues: {},
                objectValues: {},
                domainName: task.domainName,
                page: "INLINE_DISPLAY",
                zIndex,
                form: {} as FormInstance,
              });
              return (<Space direction="horizontal" size="small" key={key}>
              <span key={`key-${key}`} className="gantt-tooltip-label">
                {title}
              </span>
                <span key={`value-${key}`} className="gantt-tooltip-value">
                {readOnlyRenderFunc?.(rawData[key], rawData)}
              </span>
              </Space>);
            })}
        </Space>
      </Card>
    </div>;
  };