linChart = {
const svg = d3.create('svg').attr('viewBox',[0, 0, layout.width, layout.height])
const g = svg.append('g')
.attr('transform',`translate(${layout.margin.left},${layout.margin.top})`)
let lineg = g.append('g')
.attr('id', 'chart-lines')
let line = d3.line()
.x(d=>scaleDateX(d['date']))
.y(d=>scaleValueY(d['value']))
.curve(d3.curveCardinal.tension(alpha));
lineg.selectAll('g')
.data(d3.group(data,d=>d['serise']))
.join('g')
.append('path')
.attr("fill", "none")
.attr('stroke-width', stroke_width)
.attr('stroke-linejoin', 'round')
.attr('stroke-linecap', 'round')
.attr("stroke", d => scaleColor(d[0]))
.attr('d',d=>line.defined(d => d.value !== null)(d[1]))
g.append('g')
.attr('id','x-axis-g')
.attr('transform',`translate(0,${layout.innerHeight})`)
.call(xAxis)
g.append('g')
.attr('id','y-axis-g')
.call(yAxis)
.call(g=>{
g.selectAll('.domain').remove()
g.selectAll(".tick:not(:first-of-type) line")
.clone()
.attr('x2', layout.innerWidth)
.attr('stroke','#f0f0f0')
})
lineg.raise()
return svg.node()
}