package fr.lteconsulting.hexa.client.ui.chart;
import java.util.ArrayList;
import fr.lteconsulting.hexa.client.ui.chart.raphael.PathBuilder;
import fr.lteconsulting.hexa.client.ui.chart.raphael.Raphael.Path;
public class Grid
{
Layer layer = null;
Referential ref = null;
boolean fVertical;
String stroke = "#d0d0d0";
String strokeDashArray = "-";
PathBuilder pathBuilder = new PathBuilder();
Path path = null;
public void init( Layer layer, Referential ref, boolean fVertical )
{
this.layer = layer;
this.ref = ref;
this.fVertical = fVertical;
}
public void update( ArrayList<Float> valuesToDraw )
{
preparePathBuilder( valuesToDraw );
// create or update the object
if( path != null )
path.attr( "path", pathBuilder.toString() );
else
path = layer.addPath( pathBuilder );
path.attr( "stroke-dasharray", strokeDashArray );
path.attr( "stroke", stroke );
path.attr( "stroke-width", "1" );
path.attr( "fill", "none" );
path.attr( "opacity", "1" );
}
private void preparePathBuilder( ArrayList<Float> valuesToDraw )
{
pathBuilder = new PathBuilder();
// pathBuilder.clear();
if( fVertical )
{
float realMinY = ref.getRealY( ref.getMinY() );
float realMaxY = ref.getRealY( ref.getMaxY() );
for( Float value : valuesToDraw )
{
float x = ref.getRealX( value );
pathBuilder.M( x, realMinY );
pathBuilder.L( x, realMaxY );
}
}
else
{
float realMinX = ref.getRealX( ref.getMinX() );
float realMaxX = ref.getRealX( ref.getMaxX() );
for( Float value : valuesToDraw )
{
float y = ref.getRealY( value );
pathBuilder.M( realMinX, y );
pathBuilder.L( realMaxX, y );
}
}
}
}