mirror of https://github.com/CIRCL/AIL-framework
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
|
const sparkline = (container_id, data, options) => {
|
||
|
|
||
|
const defaults = {
|
||
|
style: {
|
||
|
stroke: "rgb(0, 0, 0)",
|
||
|
strokeWidth: 2
|
||
|
},
|
||
|
margin: {top:3, right:3, bottom:3, left:3},
|
||
|
width: 100,
|
||
|
height: 60
|
||
|
};
|
||
|
|
||
|
options = $.extend(true, defaults, options);
|
||
|
|
||
|
|
||
|
let width_spark = options.width - options.margin.left - options.margin.right;
|
||
|
let height_spark = options.height - options.margin.top - options.margin.bottom;
|
||
|
|
||
|
let maxX = data.length;
|
||
|
let maxY = d3.max(data, function(d) { return d } );
|
||
|
|
||
|
let x = d3.scaleLinear()
|
||
|
.range([0, width_spark])
|
||
|
.domain([0,maxX]);
|
||
|
|
||
|
let y = d3.scaleLinear()
|
||
|
.range([height_spark, 0])
|
||
|
.domain([0,maxY]);
|
||
|
|
||
|
let line = d3.line()
|
||
|
.x(function(d, i) {return x(i)})
|
||
|
.y(function(d) {return y(d)});
|
||
|
|
||
|
let res = d3.select( "#"+container_id ).append('svg')
|
||
|
.attr('width', options.width)
|
||
|
.attr('height', options.height)
|
||
|
.append('g')
|
||
|
.attr("transform", "translate("+options.margin.left+","+options.margin.top+")")
|
||
|
.append('path')
|
||
|
.datum(data)
|
||
|
.attr('d', line)
|
||
|
.style("fill", "none")
|
||
|
.style("stroke", options.style.stroke)
|
||
|
.style("stroke-width", options.style.strokeWidth);
|
||
|
|
||
|
return res
|
||
|
|
||
|
}
|