diff --git a/sigmajs/sigmajs-tests.ts b/sigmajs/sigmajs-tests.ts new file mode 100644 index 000000000..da4b100a8 --- /dev/null +++ b/sigmajs/sigmajs-tests.ts @@ -0,0 +1,44 @@ +/// +module SigmaJsTests { + var container = document.createElement("sigma"); + var settings = new sigma.classes.configurable({ + autoResize: true, + autoRescale: true + }) + var s = new sigma({ + settings: settings + }); + + s.addRenderer({ + type: 'canvas', + container: container + }); + + var N = 100; + var E = 500; + // Generate a random graph: + for (var i = 0; i < N; i++) { + s.graph.addNode({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + } + + for (var j = 0; j < E; j++) { + s.graph.addEdge({ + id: 'e' + j, + source: 'n' + Math.floor(Math.random() * N), + target: 'n' + Math.floor(Math.random() * N), + size: Math.random(), + color: '#ccc' + }); + } + + sigma.plugins.dragNodes(s, s.renderers[0]); + s.renderers[0].resize(); + s.refresh(); +} diff --git a/sigmajs/sigmajs.d.ts b/sigmajs/sigmajs.d.ts new file mode 100644 index 000000000..2d04deda0 --- /dev/null +++ b/sigmajs/sigmajs.d.ts @@ -0,0 +1,208 @@ +// Type definitions for sigma.js v1.0.3 +// Project: https://github.com/jacomyal/sigma.js +// Definitions by: Qinfeng Chen +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +declare module SigmaJs{ + interface Classes { + configurable: Configurable; + graph: Graph; + } + + interface Configurable { + new(setting: Settings): Configurable; + new(settings: Settings[]): Configurable; + (key: string): string; + } + + interface DragNodes { + (sigma: Sigma, renderer: Renderer): DragNodes; + } + + interface Edge { + color?: string; + id: string; + size?: number; + source: string; + target: string; + } + + interface Graph { + addEdge(edge: Edge): Graph; + addNode(node: Node): Graph; + 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 Node { + color?: string; + id: string; + label?: string; + size?: number; + x?: number; + y?: number; + } + + interface Plugins { + dragNodes: DragNodes; + } + + interface Renderer { + refresh(): Sigma; + render(): Sigma; + resize(): Sigma; + } + + interface RendererConfigs{ + container?: Element; + id?: string; + type?: string; + } + + interface Sigma { + addRenderer(): Renderer; + addRenderer(configs: RendererConfigs): Renderer; + graph: Graph; + killRenderer(renderer: string): Sigma; + killRenderer(renderer: Renderer): Sigma; + kill(): void; + refresh(): void; + renderers: Renderer[]; + } + + interface SigmaConfigs { + container?: Element; + graph?: Graph; + id?: string; + renderers?: Renderer[]; + settings?: Configurable; + + } + + interface SigmaFactory { + new(): Sigma; + new(container: string): Sigma; + new(container: Element): Sigma; + new(configuration: SigmaConfigs): Sigma; + classes:Classes; + plugins: Plugins; + } + + 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; + labelColor?: string; + labelSize?: string; + labelSizeRatio?: string; + labelThreshold?: string; + 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?: boolean; + enableCamera?: boolean; + enableHovering?: boolean; + enableEdgeHovering?: boolean; + edgeHoverPrecision?: number; + rescaleIgnoreSize?: boolean; + skipErrors?: boolean; + + // Camera settings + nodesPowRatio?: number; + edgesPowRatio?: number; + + // Animation settings + animationsTime?: number; + } +} + +declare var sigma: SigmaJs.SigmaFactory;