/
RcsbD3LineManager.ts
41 lines (35 loc) · 1.41 KB
/
RcsbD3LineManager.ts
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
import {Selection} from "d3-selection";
import {Line} from "d3-shape";
import {RcsbD3Constants} from "../RcsbD3Constants";
import {RcsbFvTrackDataElementInterface} from "../../../RcsbDataManager/RcsbDataManager";
export interface PlotLineInterface {
points: RcsbFvTrackDataElementInterface[];
color: string;
trackG: Selection<SVGGElement,any,null,undefined>;
line:Line<RcsbFvTrackDataElementInterface>;
id:string;
}
export interface MoveLineInterface {
points: RcsbFvTrackDataElementInterface[];
trackG: Selection<SVGGElement,any,null,undefined>;
line:Line<RcsbFvTrackDataElementInterface>
id:string;
}
export class RcsbD3LineManager {
static plot(config: PlotLineInterface){
if(config.trackG.select(RcsbD3Constants.PATH + "#" + config.id).size() == 0)
config.trackG.append(RcsbD3Constants.PATH)
.attr(RcsbD3Constants.ID,config.id)
.style(RcsbD3Constants.STROKE, config.color)
.style(RcsbD3Constants.STROKE_WIDTH, 0.6)
.style(RcsbD3Constants.FILL, "none");
config.trackG.select(RcsbD3Constants.PATH+"#"+config.id)
.datum(config.points)
.attr(RcsbD3Constants.D, config.line)
}
static move(config:MoveLineInterface){
config.trackG.select(RcsbD3Constants.PATH+"#"+config.id)
.datum(config.points)
.attr(RcsbD3Constants.D, config.line);
}
}