From 7aba50fef3c33232cf3f4c6d5ad0b19b412f90f6 Mon Sep 17 00:00:00 2001 From: exyi Date: Sat, 26 Sep 2020 16:40:36 +0000 Subject: [PATCH] Add types for sigma --- frontend/src/sigma.d.ts | 313 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 frontend/src/sigma.d.ts diff --git a/frontend/src/sigma.d.ts b/frontend/src/sigma.d.ts new file mode 100644 index 0000000..ee9a995 --- /dev/null +++ b/frontend/src/sigma.d.ts @@ -0,0 +1,313 @@ +// Type definitions for sigma.js v1.0.3 +// Project: https://github.com/jacomyal/sigma.js +// Definitions by: Qinfeng Chen +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace SigmaJs{ + interface Animation { + camera(camera: Camera, target: { [index: string]: any }, options: { [index: string]: any }): number; + } + + interface Camera { + angle: number; + cameraPosition(x: number, y:number): {x: number; y: number}; + goTo(settings: { [index: string]: any }): void; + graphPosition(x: number, y:number): {x: number; y: number}; + ratio: number; + readPrefix: string; + settings(setting: string) : any; + x: number; + y: number; + } + + interface Canvas { + edges: {[renderType: string]: (edge: Edge, source: Node, target: Node, ...a:any[]) => void}; + labels: {[renderType: string]: (node: Node, ...a:any[]) => void}; + nodes: {[renderType: string]: (node: Node, ...a:any[]) => void}; + } + + interface Classes { + configurable: Configurable; + graph: Graph; + } + + interface Configurable { + new(setting: Settings): Configurable; + new(settings: Settings[]): Configurable; + (key: string): string; + } + + interface CustomShapes { + init(sigma: Sigma): void; + } + + interface DragNodes { + (sigma: Sigma, renderer: Renderer): DragNodes; + } + + interface Edge { + [key : string] : any; + color?: string; + id: string; + size?: number; + source: string; + target: string; + } + + interface JsonParser { + (target: string, sigma: Sigma, callback: (graph: Sigma) => void): void; + } + + interface GexfParser { + (target: string, sigma: Sigma, callback: (graph: Sigma) => void): void; + } + + interface Graph { + addEdge(edge: Edge): Graph; + addNode(node: Node): Graph; + addMethod(name: string, method: (input: any) => any): void; + clear(): Graph; + degree(id: string): number; + degree(id: string, type: string): number; + degree(ids: string[]): number[]; + degree(ids: string[], type: string): number[]; + dropEdge(id: string): Graph; + dropNode(id: string): Graph; + edges(): Edge[]; + edges(id: string): Edge; + edges(ids: string[]): Edge[]; + kill(): Graph; + nodes(): Node[]; + nodes(id: string): Node; + nodes(ids: string[]): Node[]; + } + + interface GraphData { + edges: Edge[]; + nodes: Node[]; + } + + interface Image { + clip?: number; + scale?: number; + url?: string; + x?: number; + y?: number; + } + + interface Miscellaneous { + animation: Animation; + } + + interface Node { + [key : string] : any; + color?: string; + id: string; + image?: any; + label?: string; + size?: number; + type?: string; + x?: number; + y?: number; + } + + interface Parsers { + json: JsonParser; + gexf: GexfParser; + } + + interface Plugins { + dragNodes: DragNodes; + } + + interface Renderer { + container: HTMLElement; + refresh(): Sigma; + render(): Sigma; + resize(): Sigma; + settings(settings: Settings): void; + } + + interface RendererConfigs{ + container?: Element; + id?: string; + type?: string; + } + + interface ShapeLibrary { + enumerate(): any; + } + + interface Sigma { + addRenderer(): Renderer; + addRenderer(configs: RendererConfigs): Renderer; + bind(event: string, callback: (e: any) => void): void; + cameras: Camera[]; + graph: Graph; + killRenderer(renderer: string): Sigma; + killRenderer(renderer: Renderer): Sigma; + kill(): void; + refresh(): void; + renderers: Renderer[]; + settings(key: string): any; + settings(settings: Settings): void; + + // forceAtlas2 layout + configForceAtlas2(configs: { [key: string]: any }): void; + isForceAtlas2Running(): boolean; + killForceAtlas2(): void; + startForceAtlas2(): void; + startForceAtlas2(configs: { [key: string]: any }): void; + stopForceAtlas2(): void; + } + + interface SigmaConfigs { + container?: Element; + graph?: GraphData; + id?: string; + renderers?: Renderer[]; + settings?: { [index: string]: any }; + } + + interface SigmaFactory { + new(): Sigma; + new(container: string): Sigma; + new(container: Element): Sigma; + new(configuration: SigmaConfigs): Sigma; + canvas: Canvas; + classes:Classes; + misc: Miscellaneous; + parsers: Parsers; + plugins: Plugins; + svg: SVG; + } + + interface Settings { + // Graph settings + clone?: boolean; + immutable?: boolean; + verbose?: boolean; + + // Renderers settings + defaultNodeType?: string; + defaultEdgeType?: string; + defaultLabelColor?: string; + defaultEdgeColor?: string; + defaultNodeColor?: string; + defaultLabelSize?: string; + edgeColor?: string; + minArrowSize?: number; + font?: string; + fontStyle?: string; + labelAlignment?: string; + labelColor?: string; + labelSize?: string; + labelSizeRatio?: string; + labelThreshold?: number; + webglOversamplingRatio?: number; + + // hovered node customizations + borderSize?: number; + defaultNodeBorderColor?: string; + hoverFont?: number; + hoverFontStyle?: string; + labelHoverShadow?: string; + labelHoverShadowColor?: string; + nodeHoverColor?: string; + defaultNodeHoverColor?: string; + labelHoverBGColor?: string; + defaultHoverLabelBGColor?: string; + labelHoverColor?: string; + defaultLabelHoverColor?: string; + singleHover?: boolean; + + // hovered edge customizations + edgeHoverColor?: string; + edgeHoverSizeRatio?: number; + defaultEdgeHoverColor?: string; + edgeHoverExtremities?: boolean; + + // Draw settings for labels, edges, and nodes + drawLabels?: boolean; + drawEdges?: boolean; + drawNodes?: boolean; + + // Batch edge drawing + batchEdgesDrawing?: boolean; + hideEdgesOnMove?: boolean; + canvasEdgesBatchSize?: number; + webglEdgesBatchSize?: number; + + // Rescale settings + scalingMode?: string; + sideMargin?: number; + + // max/min node and edge size + minEdgeSize?: number; + maxEdgeSize?: number; + minNodeSize?: number; + maxNodeSize?: number; + + // Captor settings + touchEnabled?: boolean; + mouseEnabled?: boolean; + mouseWheelEnabled?: boolean; + doubleClickEnabled?: boolean; + eventsEnabled?: boolean; + zoomingRatio?: number; + doubleClickZoomingRatio?: number; + zoomMin?: number; + zoomMax?: number; + mouseZoomDuration?: number; + doubleClickZoomDuration?: number; + mouseInertiaDuration?: number; + mouseInertiaRatio?: number; + touchInertiaDuration?: number; + touchInertiaRatio?: number; + doubleClickTimeout?: number; + doubleTapTimeout?: number; + dragTimeout?: number; + + // Global settings + autoResize?: boolean; + autoRescale?: any; + enableCamera?: boolean; + enableHovering?: boolean; + enableEdgeHovering?: boolean; + edgeHoverPrecision?: number; + rescaleIgnoreSize?: boolean; + skipErrors?: boolean; + + // Camera settings + nodesPowRatio?: number; + edgesPowRatio?: number; + + // Animation settings + animationsTime?: number; + } + + interface SVG { + edges: { + labels: SVGEdgeLabels; + [renderType: string]: SVGObject | SVGEdgeLabels; + }; + labels: {[renderType: string]: SVGObject}; + nodes: {[renderType: string]: SVGObject}; + } + + interface SVGEdgeLabels { + [renderType: string]: SVGObject; + } + + interface SVGObject { + create: (object: T, ...a:any[]) => Element; + update: (object: T, ...a:any[]) => void; + } +} + +declare module 'sigma' { + declare var sigma: SigmaJs.SigmaFactory; + declare var CustomShapes: SigmaJs.CustomShapes; + declare var ShapeLibrary: SigmaJs.CustomShapes; +} +