import { GNode, GLink, DeepReadonly } from './appBase'; /** * 实体的标记位 */ export interface Flags { /**表示选中 */ select: boolean; /**高亮 */ hselect: boolean; /**表示是人为添加 */ isMan: boolean; /**目前感觉没什么用,表示是否为新添加的节点,但在后续处理中,也没有用到 */ isNew: boolean; /**处于锁定状态 */ lock: boolean; /**强调的状态 */ emphasis: boolean; } export declare enum GraphType { NORMAL = 1, DRAFT = 2, MERGED = 3 } /** * 节点的类型 * NORMAL = 0, MERGE = 1, 之前2.x还有一个2是虚拟节点,现在按照普通节点处理了 ARCHIVE = 5, */ export declare enum NodeType { /**普通节点 */ NORMAL = 0, /**合并节点 */ MERGE = 1, /**档案节点 */ ARCHIVE = 5 } /** * 关系的类型 * NORMAL = 0, DIRLL = 1, MERGE = 2, NORMAL2 = 3, */ export declare enum LinkType { /**普通边 */ NORMAL = 0, /**下钻边(间接关系边) */ DRILL = 1, /**合并边(至少一头连接了合并节点的边) */ MERGE = 2, /**档案边。没有对应的实体类型,只是在存储时使用 */ ARCHIVE = 5 } /** * 关系的方向 * ST = 0, TS = 1, NONE = 2, BOTH = 3, */ export declare enum LinkDirection { /** * source->target */ ST = 0, /** * target->source */ TS = 1, NONE = 2, BOTH = 3 } export declare type Point = { x: number; y: number; }; export declare type Transform = { readonly x: number; readonly y: number; readonly scale: number; }; /** * 下钻的信息 */ export declare type Drilldown = { /**包含的展示信息 */ labels: string[]; /**包含的边 */ linkDetails: Set; /**包含的节点 */ nodes: Set; indirectDetails?: []; indirectProps?: {}; }; export declare type AdjTable = Map>; export interface GLinkDetail { cnt: number; weight: number; d: LinkDirection; id: string; label: string; dataType: string; source: string; sourceType: string; stShixu: Array<{ id: string; value: string; }>; stXingwei: Array<{ id: string; value: string; }>; target: string; targetType: string; fromDrill: boolean; fromEvent: boolean; fromMain: boolean; drilledOut?: boolean; } export declare type HasId = { id: string; }; export declare type WideIds = string | HasId | Iterable | Iterable; export declare type ExpandMode = 'expand' | 'expandKeep' | 'noExpand'; /**迭代的选择器 */ declare type BaseQuery = { /** * 默认为noExpand */ expand?: ExpandMode; /**只迭代某些flag的元素 */ flags?: Array; /**作为迭代入口的元素 */ ids?: WideIds; /**异步任务的taskKey,默认为当前图的id */ taskKey?: null | string; /**是否强制展开。当expand为'expand'|'expandKeep'时有效。 默认档案节点是不会展开的。设置为true后,才会被展开*/ forceExpand?: boolean; }; export declare type NodeQuery = BaseQuery; export declare type LinkQuery = BaseQuery; /** * 拆分节点的模式 * `splitAndDelete`: 拆分已选并删除未选 * `splitOnly`: 仅拆分已选 * `deleteOnly`: 仅删除未选 */ export declare type SplitMode = 'splitAndDelete' | 'splitOnly' | 'deleteOnly'; /** * 可以进行各种图操作,不设计其他业务的纯js图 */ export interface PureGraph { adapter: any; extraData: any; readonly id: string; /** * 获取图的transform * 如果要修改,请调用setTransform接口 */ readonly transform: Readonly; /**获取邻接表 */ readonly adjTable: DeepReadonly; /** * 获取当前选中的节点个数 */ readonly selectedNodesCount: number; /** * 获取图中选中的节点。 * 如果要修改选中的节点,请调用setSelectedNodes */ readonly selectedNodes: ReadonlyArray; readonly selectedNodesAll: ReadonlyArray; /** * 获取当前选中的边个数 */ readonly selectedLinksCount: number; /** * 获取图中选中的边。 * 如果要修改选中的边,请调用setSelectedLinks * 如果只需要知道选中节点的个数,请使用selectedLinksCount */ readonly selectedLinks: ReadonlyArray; readonly selectedLinksAll: ReadonlyArray; /**获取全部的节点个数,可见的不可见的都算 */ readonly nodeCnt: number; /**获取全部的边个数,可见的不可见的都算 */ readonly linkCnt: number; /**设置图的缩放。只设置scale */ setTransform(scale: number): void; /**设置图的位移。只设置x和y */ setTransform(x: number, y: number): void; /**设置图的位移和缩放。*/ setTransform(x: number, y: number, scale: number): void; /**添加节点。如果需要添加后立即操作节点,请使用该方法的返回值。因为需要对节点进行代理 */ addNode(node: GNode): GNode; /**删除节点 */ delNodes(nodes: WideIds): void; /**根据id获取节点 */ getNodeById(id: string): GNode | undefined; /**节点迭代器 */ eachNode(nodeQuery: NodeQuery | true, callback: (node: GNode, nodeId: string, index: number) => void | boolean): Promise; /**添加边详情 */ addLinkDetail(detail: GLinkDetail): GLinkDetail; /**返回一个关系详情的迭代器 */ linkDetailIter(): IterableIterator; /**根据边详情id,获取边详情对象 */ getLinkDetailById(detailId: string): GLinkDetail | undefined; /**根据边的id,获取详情id集合 */ getLinkDetailIdsByLinkId(linkId: string): ReadonlySet | undefined; /**根据边的source target,获取详情id集合 */ getLinkDetailIdsByST(sourceNodeId: string, targetNodeId: string): ReadonlySet | undefined; /** * 添加边。如果需要添加后立即操作节点,请使用该方法的返回值。因为需要对边进行代理 * @param replace 如果设置为true,则表示使用新的边对象,替换原有对象 */ addLink(link: GLink, replace?: boolean): GLink; /**根据id获取边 */ getLinkById(linkId: string): GLink | undefined; /**根据source和target获取边。source和target的顺序无所谓。内部会自动排序 */ getLinkByST(sourceNodeId: string, targetNodeId: string): GLink | undefined; /**删除边 */ delLinks(links: WideIds): void; delLinkBySt(sourceNodeId: string, targetNodeId: string): void; delLinkById(linkId: string): void; /**删除linkDetail */ delLinkDetail(linkDetailIds: WideIds): void; /**对边进行迭代 */ eachLink(linkQuery: LinkQuery | true, callback: (link: GLink, linkId: string, index: number) => void | boolean): Promise; /**获取一个节点相邻的节点。不考虑展开等操作。只从邻接表里读取 */ getDirectedLinkedNodeIds(nodeId: string): ReadonlySet | undefined; /**获取一组节点内接和外接的边 */ getInAndOutLinks(nodes: WideIds): Promise<{ ins: Array; outs: Array; all: Array; }>; /**迭代边详情 */ linkDetailIter(): IterableIterator; /**迭代所有节点 */ nodeIter(): IterableIterator; /**迭代所有的边 */ linkIter(): IterableIterator; /**根据节点id获取节点的flag对象 */ getNodeFlag(nodeId: string): Flags; /**根据边id获取边的flag对象 */ getLinkFlag(linkId: string): Flags; /**根据边source target获取边的flag对象 */ getLinkFlag(sourceNodeId: string, targetNodeId: string): Flags; /** * 设置指定的flag状态为true * @param flagType flag类型 * @param nodes 节点 * @param links 边 * @param multi true表示合并,false表示覆盖 */ setFlags(flagType: keyof Flags, nodes: WideIds | null | undefined, links: WideIds | null | undefined, multi?: boolean): void; /** * 设置选中状态。 */ setSelected(nodes: WideIds | null | undefined, links: WideIds | null | undefined, multi?: boolean): void; /**清空节点的某个flag状态 */ clearAllNodesFlag(flagType: keyof Flags): void; /**清空边的某个flag状态 */ clearAllLinksFlag(flagType: keyof Flags): void; /**获取flag状态为true的节点id */ getNodesByFlag(flagType: keyof Flags): ReadonlySet; /**获取flag状态为true的边id */ getLinksByFlag(flagType: keyof Flags): ReadonlySet; /**在对图进行操作的过程中,显示地指定影响了某个边 */ effectLink(linkId: string): void; /**在对图进行操作的过程中,显示地指定影响了某个边 */ effectLink(source: string, target: string): void; /**在对图进行操作的过程中,显示地指定影响了某个边 */ effectLink(st: { source: string; target: string; }): void; /**在对图进行操作的过程中,显示地指定影响了某个节点 */ effectNode(nodeId: string): void; /**启用节点位置变化的动画捕捉 */ startAnimateTracker(): void; /**设置一组动画效果 */ setAnimateEffect(key: string, value: any, keep?: boolean): void; /**清除动画效果 */ clearAnimateEffect(): void; /**清空图 */ clear(): void; /**参考graph中这个方法的注释 */ preCommit(): Promise; } export {};