11var lineLength = 50 ;
2+ var titleIndent = { x :120 , y :20 } ;
3+ var fontSize = 16 ;
4+ var titleFontSize = 12 ;
5+
26function draw ( data ) {
37 var numberOfLines = Math . max . apply ( null , data . sequences . map ( function ( seq ) {
48 return seq . sequence . length ;
@@ -23,9 +27,7 @@ function drawLine(data, lineIndex, lineLength, numberOfLines) {
2327 var from = lineIndex * lineLength ;
2428 var to = lineIndex * lineLength + lineLength ;
2529 var rootGroup = svg . append ( "svg" ) ;
26- var titleIndent = { x :120 , y :20 } ;
27- var fontSize = 16 ;
28- var titleFontSize = 12 ;
30+
2931
3032 rootGroup . selectAll ( "g.title" )
3133 . data ( data )
@@ -229,36 +231,36 @@ function drawAnnotation(startCharIndex, length, label) {
229231}
230232
231233function drawAnnotationInSVG ( sequenceLineSVG , startCharIndex , length , label ) {
232- var firstSequence = sequenceLineSVG . selectAll ( "text .rna-seq" ) . node ( ) ;
234+ var firstSequence = sequenceLineSVG . selectAll ( "g .rna-seq" ) . node ( ) ;
233235 var firstSequenceFrame = firstSequence . getBBox ( ) ;
234- var lastSequenceFrame = sequenceLineSVG . selectAll ( "text .rna-seq" ) [ 0 ] . pop ( ) . getBBox ( ) ;
236+ var lastSequenceFrame = sequenceLineSVG . selectAll ( "g .rna-seq" ) [ 0 ] . pop ( ) . getBBox ( ) ;
235237 var letterRectWidth = firstSequenceFrame . width / firstSequence . textContent . length ;
238+ var sequenceNum = sequenceLineSVG . selectAll ( "g.rna-seq" ) . size ( ) ;
239+ var sequenceLineSvgY = parseInt ( sequenceLineSVG . node ( ) . getAttribute ( "y" ) ) ;
240+ var frameX = titleIndent . x + startCharIndex * letterRectWidth ;
241+ var frameY = sequenceLineSvgY + titleIndent . y ;
236242
237243 function drawSurroundingFrame ( ) {
238244 var annotationVMargin = 4 ;
239245
240- var sequenceNum = data . length - 1 ;
241-
242- sequenceLineSVG . append ( 'rect' )
246+ svg . append ( 'rect' )
243247 . attr ( "class" , "annotation-rect" )
244- . attr ( "x" , titleIndent . x + firstSequenceFrame . x + startCharIndex * letterRectWidth )
248+ . attr ( "x" , frameX )
245249 . attr ( "width" , letterRectWidth * length )
246- . attr ( "y" , titleIndent . y + firstSequenceFrame . y - annotationVMargin )
247- . attr ( "height" , lastSequenceFrame . y + lastSequenceFrame . height - firstSequenceFrame . y + fontSize * sequenceNum + 2 * annotationVMargin )
250+ . attr ( "y" , frameY - annotationVMargin )
251+ . attr ( "height" , sequenceNum * fontSize + 2 * annotationVMargin )
248252 . attr ( "fill-opacity" , "0.0" )
249253 . attr ( "stroke-width" , "3" )
250254 . attr ( "stroke" , "#000" ) ;
251255 } ;
252256
253257 function drawLabel ( ) {
254- var labelVOffset = 10 ;
255- var frameX = firstSequenceFrame . x + startCharIndex * letterRectWidth ;
256- var frameY = firstSequenceFrame . y - labelVOffset ;
257- sequenceLineSVG . append ( "g" )
258- . attr ( "transform" , "translate(" + ( titleIndent . x + frameX ) + "," + ( titleIndent . y + frameY ) + ")" )
258+ var labelVOffset = 8 ;
259+ svg . append ( "g" )
260+ . attr ( "transform" , "translate(" + frameX + "," + ( frameY - labelVOffset ) + ")" )
259261 . append ( "text" )
260262 . attr ( "class" , "annotation-label" )
261- . text ( labelCounter ) ;
263+ . text ( label ) ;
262264 } ;
263265 drawSurroundingFrame ( ) ;
264266 drawLabel ( ) ;
0 commit comments