Merge pull request #4032 from gustavderdrache/master

Add generics to d3.d.ts
This commit is contained in:
Masahiro Wakame
2015-05-31 10:06:54 -07:00
9 changed files with 3698 additions and 3884 deletions
+2 -2
View File
@@ -10,7 +10,7 @@
}
var fill = d3.scale.category20();
var fill = d3.scale.category20<number>();
d3.layout.cloud().size([300, 300])
.words([
"Hello", "world", "normally", "you", "want", "more", "words",
@@ -40,4 +40,4 @@
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
})
.text(function(d:ICompTextSize) { return d.text; });
}
}
+69 -33
View File
@@ -5,41 +5,77 @@
/// <reference path="../d3/d3.d.ts" />
declare module D3 {
export module Layout {
export interface IRotate {
(number:number) : CloudLayout;
(number:()=>number) : CloudLayout;
declare module d3 {
module layout {
export function cloud(): Cloud<cloud.Word>;
export function cloud<T extends cloud.Word>(): Cloud<T>;
module cloud {
interface Word {
text?: string;
font?: string;
style?: string;
weight?: string | number;
rotate?: number;
size?: number;
padding?: number;
x?: number;
y?: number;
}
}
interface Cloud<T extends cloud.Word> {
start(): Cloud<T>;
stop(): Cloud<T>;
timeInterval(): number;
timeInterval(interval: number): Cloud<T>;
export interface CloudLayout {
(layers: any[], index?: number): any[];
values(accessor?: (d: any) => any): CloudLayout;
offset(offset: string): CloudLayout;
size: {
/**
* Gets the available layout size
*/
(): Array<number>;
/**
* Sets the available layout size
*/
(size: Array<number>): CloudLayout;
};
words: (inputArray: Array<any>) => CloudLayout;
rotate:IRotate;
padding: (number:number) => CloudLayout;
font: (string:string) => CloudLayout;
fontSize(fctn: (d: any) => number): CloudLayout;
on: (eventname: string, callee: (words: any[]) => void) => CloudLayout;
start: () => CloudLayout;
words(): T[];
words(words: T[]): Cloud<T>;
size(): [number, number];
size(size: [number, number]): Cloud<T>;
font(): (datum: T, index: number) => string;
font(font: string): Cloud<T>;
font(font: (datum: T, index: number) => string): Cloud<T>;
fontStyle(): (datum: T, index: number) => string;
fontStyle(style: string): Cloud<T>;
fontStyle(style: (datum: T, index: number) => string): Cloud<T>;
fontWeight(): (datum: T, index: number) => string | number;
fontWeight(weight: string | number): Cloud<T>;
fontWeight(weight: (datum: T, index: number) => string | number): Cloud<T>;
rotate(): (datum: T, index: number) => number;
rotate(rotate: number): Cloud<T>;
rotate(rotate: (datum: T, index: number) => number): Cloud<T>;
text(): (datum: T, index: number) => string;
text(text: string): Cloud<T>;
text(text: (datum: T, index: number) => string): Cloud<T>;
spiral(): (size: number) => (t: number) => [number, number];
spiral(name: string): Cloud<T>;
spiral(spiral: (size: number) => (t: number) => [number, number]): Cloud<T>;
fontSize(): (datum: T, index: number) => number;
fontSize(size: number): Cloud<T>;
fontSize(size: (datum: T, index: number) => number): Cloud<T>;
padding(): (datum: T, index: number) => number;
padding(padding: number): Cloud<T>;
padding(padding: (datum: T, index: number) => number): Cloud<T>;
on(type: "word", listener: (word: T) => void): Cloud<T>;
on(type: "end", listener: (tags: T[], bounds: { x: number; y: number }[]) => void): Cloud<T>;
on(type: string, listener: (...args: any[]) => void): Cloud<T>;
on(type: "word"): (word: T) => void;
on(type: "end"): (tags: T[], bounds: { x: number; y: number }[]) => void;
on(type: string): (...args: any[]) => void;
}
}
export interface Layout {
cloud(): CloudLayout;
}
}
}
}
+386 -392
View File
File diff suppressed because it is too large Load Diff
Vendored
+3173 -3398
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -12,7 +12,7 @@ function superformula() {
.attr("width", 960)
.attr("height", 500);
var small = d3.superformula()
var small = d3.superformula<string>()
.type(function (d) { return d; } )
.size(size);
@@ -37,4 +37,4 @@ function superformula() {
.attr("class", "big")
.attr("transform", "translate(450,250)")
.attr("d", big);
}
}
+28 -29
View File
@@ -1,38 +1,37 @@
/// <reference path="../d3.d.ts" />
declare module d3 {
export function superformula<T>(): Superformula<T>;
declare module D3 {
interface SuperformulaPath
{
superformulaPath(params: number[], n: number, diameter: number): Superformula;
module superformula {
interface Type {
m: number;
n1: number;
n2: number;
n3: number;
a: number;
b: number;
}
}
interface Superformula<T> {
(datum: T, index: number): string;
interface SuperformulaType
{
(any: any): any;//hans
m: number;
n1: number;
n2: number;
n3: number;
a: number;
b: number;
type(): (datum: T, index: number) => string;
type(type: string): Superformula<T>;
type(type: (datum: T, index: number) => string): Superformula<T>;
size(): (datum: T, index: number) => number;
size(size: number): Superformula<T>;
size(size: (datum: T, index: number) => number): Superformula<T>;
segments(): (datum: T, index: number) => number;
segments(segments: number): Superformula<T>;
segments(segments: (datum: T, index: number) => number): Superformula<T>;
param(name: string): number;
param(name: string, value: number): Superformula<T>;
}
interface Superformula
{
(): any;
type(any: any): any;
param(name: string, value: number): Superformula;
size(x: number): Superformula;
segments(x: number): Superformula;
}
interface Base extends Selectors
{
superformula: Superformula;
superformulaPath: SuperformulaPath;
superformulaTypes: SuperformulaType[];
}
export var superformulaTypes: string[];
}
+1 -1
View File
@@ -24,7 +24,7 @@ declare module Dagre {
interface Render {
new (): Render;
(selection: D3.Selection, g: Dagre.Graph): void;
(selection: d3.Selection<any>, g: Dagre.Graph): void;
}
}
+4 -4
View File
@@ -47,8 +47,8 @@ export interface ILegendwidget {
legend: (l:ILegendwidget) => T;
chartID: () => number;
options: (o:Object)=>void ;
select: (selector: D3.Selection) => D3.Selection;
selectAll: (selector: D3.Selection) => D3.Selection;
select: (selector: d3.Selection<any>) => d3.Selection<any>;
selectAll: (selector: d3.Selection<any>) => d3.Selection<any>;
}
export interface IEvents {
@@ -85,8 +85,8 @@ export interface ILegendwidget {
x: IGetSet<any, T>;
y: IGetSet<any, T>;
elasticY: IGetSet<boolean, T>;
xAxis: IGetSet<D3.Svg.Axis, T>;
yAxis: IGetSet<D3.Svg.Axis, T>;
xAxis: IGetSet<d3.svg.Axis, T>;
yAxis: IGetSet<d3.svg.Axis, T>;
yAxisPadding: IGetSet<number, T>;
xAxisPadding: IGetSet<number, T>;
renderHorizontalGridLines: IGetSet<boolean, T>;
+33 -23
View File
@@ -20,6 +20,16 @@ declare module DC {
(t: T, r?: R): V;
}
export interface Scale<T> {
(x: any): T;
domain(values: any[]): Scale<T>;
domain(): any[];
range(values: T[]): Scale<T>;
range(): T[];
}
export interface Accessor<T, V> {
(datum: T, index?: number): V;
}
@@ -86,7 +96,7 @@ declare module DC {
clamp(n: number, min: number, max: number): number;
uniqueId(): number;
nameToId(name: string): string;
appendOrSelect(parent: D3.Selection, selector: string, tag: any): D3.Selection;
appendOrSelect(parent: d3.Selection<any>, selector: string, tag: any): d3.Selection<any>;
safeNumber(n: any): number;
}
@@ -112,11 +122,11 @@ declare module DC {
group: IGetSet<any, T>;
ordering: IGetSet<Accessor<any, any>, T>;
filterAll(): void;
select(selector: D3.Selection|string): D3.Selection;
selectAll(selector: D3.Selection|string): D3.Selection;
anchor(anchor: BaseMixin<any>|D3.Selection|string, chartGroup?: string): D3.Selection;
select(selector: d3.Selection<any>|string): d3.Selection<any>;
selectAll(selector: d3.Selection<any>|string): d3.Selection<any>;
anchor(anchor: BaseMixin<any>|d3.Selection<any>|string, chartGroup?: string): d3.Selection<any>;
anchorName(): string;
svg: IGetSet<D3.Selection, D3.Selection>;
svg: IGetSet<d3.Selection<any>, d3.Selection<any>>;
resetSvg(): void;
filterPrinter: IGetSet<(filters: Array<any>) => string, T>;
turnOnControls(): void;
@@ -160,9 +170,9 @@ declare module DC {
}
export interface ColorMixin<T> {
colors: IGetSet<D3.Scale.GenericScale<any>|Array<string>, T>;
colors: IGetSet<Array<string> | Scale<string | d3.Color>, T>;
ordinalColors(r: Array<string>): void;
linearColors(r: Array<number>): void;
linearColors(r: Array<string>): void;
colorAccessor: IGetSet<Accessor<any, string>, T>;
colorDomain: IGetSet<Array<any>, T>;
calculateColorDomain(): void;
@@ -174,12 +184,12 @@ declare module DC {
rangeChart: IGetSet<BaseMixin<any>, T>;
zoomScale: IGetSet<Array<any>, T>;
zoomOutRestrict: IGetSet<boolean, T>;
g: IGetSet<D3.Selection, T>;
g: IGetSet<d3.Selection<any>, T>;
mouseZoomable: IGetSet<boolean, T>;
chartBodyG(): D3.Selection;
x: IGetSet<D3.Scale.GenericScale<any>, T>;
chartBodyG(): d3.Selection<any>;
x: IGetSet<(n: any) => any, T>;
xUnits: IGetSet<UnitFunction, T>;
xAxis: IGetSet<D3.Svg.Axis, T>;
xAxis: IGetSet<d3.svg.Axis, T>;
elasticX: IGetSet<boolean, T>;
xAxisPadding: IGetSet<number, T>;
xUnitCount(): number;
@@ -187,8 +197,8 @@ declare module DC {
isOrdinal(): boolean;
xAxisLabel: IBiGetSet<string, number, T>;
yAxisLabel: IBiGetSet<string, number, T>;
y: IGetSet<D3.Scale.GenericQuantitativeScale<any>, T>;
yAxis: IGetSet<D3.Svg.Axis, T>;
y: IGetSet<Scale<number>, T>;
yAxis: IGetSet<d3.svg.Axis, T>;
elasticY: IGetSet<boolean, T>;
renderHorizontalGridLines: IGetSet<boolean, T>;
renderVerticalGridLines: IGetSet<boolean, T>;
@@ -209,7 +219,7 @@ declare module DC {
hideStack(name: string): void;
showStack(name: string): void;
// title(stackName: string, titleFn: Accessor<any, T>);
stackLayout: IGetSet<D3.Layout.StackLayout, T>;
stackLayout: IGetSet<d3.layout.Stack<any[], any>, T>;
}
export interface CapMixin<T> {
@@ -219,7 +229,7 @@ declare module DC {
}
export interface BubbleMixin<T> extends ColorMixin<T> {
r: IGetSet<D3.Scale.GenericQuantitativeScale<any>, T>;
r: IGetSet<Scale<number>, T>;
radiusValueAccessor: IGetSet<Accessor<any, number>, T>;
minRadiusWithLabel: IGetSet<number, T>;
maxBubbleRelativeSize: IGetSet<number, T>;
@@ -295,8 +305,8 @@ declare module DC {
children(): Array<BaseMixin<any>>;
shareColors: IGetSet<boolean, CompositeChart>;
shareTitle: IGetSet<boolean, CompositeChart>;
rightY: IGetSet<D3.Scale.GenericQuantitativeScale<any>, CompositeChart>;
rightYAxis: IGetSet<D3.Svg.Axis, CompositeChart>;
rightY: IGetSet<(n: any) => any, CompositeChart>;
rightYAxis: IGetSet<d3.svg.Axis, CompositeChart>;
}
export interface SeriesChart extends CompositeChart {
@@ -314,9 +324,9 @@ declare module DC {
export interface GeoChoroplethChart extends ColorMixin<GeoChoroplethChart>, BaseMixin<GeoChoroplethChart> {
overlayGeoJson(json: any, name: string, keyAccessor: Accessor<any, any>): void;
projection: IGetSet<D3.Geo.Projection, GeoChoroplethChart>;
projection: IGetSet<d3.geo.Projection, GeoChoroplethChart>;
geoJsons(): Array<GeoChoroplethLayer>;
geoPath(): D3.Geo.Path;
geoPath(): d3.geo.Path;
removeGeoJson(name: string): void;
}
@@ -325,9 +335,9 @@ declare module DC {
}
export interface RowChart extends CapMixin<RowChart>, MarginMixin<RowChart>, ColorMixin<RowChart>, BaseMixin<RowChart> {
x: IGetSet<D3.Scale.GenericQuantitativeScale<any>, RowChart>;
x: IGetSet<Scale<number>, RowChart>;
renderTitleLabel: IGetSet<boolean, RowChart>;
xAxis: IGetSet<D3.Svg.Axis, RowChart>;
xAxis: IGetSet<d3.svg.Axis, RowChart>;
fixedBarHeight: IGetSet<number, RowChart>;
gap: IGetSet<number, RowChart>;
elasticX: IGetSet<boolean, RowChart>;
@@ -338,7 +348,7 @@ declare module DC {
export interface ScatterPlot extends CoordinateGridMixin<ScatterPlot> {
existenceAccessor: IGetSet<Accessor<any, boolean>, ScatterPlot>;
symbol: IGetSet<D3.Svg.Symbol, ScatterPlot>;
symbol: IGetSet<d3.svg.Symbol<any>, ScatterPlot>;
symbolSize: IGetSet<number, ScatterPlot>;
highlightedSize: IGetSet<number, ScatterPlot>;
hiddenSize: IGetSet<number, ScatterPlot>;
@@ -392,7 +402,7 @@ declare module DC {
renderAll(group?: string): void;
redrawAll(group?: string): void;
disableTransitions: boolean;
transition(selections: D3.Selection, duration: number, callback: (s: D3.Selection) => void): void;
transition(selections: d3.Selection<any>, duration: number, callback: (s: d3.Selection<any>) => void): void;
units: Units;
events: Events;