userline.js 944 B

1234567891011121314151617181920212223242526272829303132
  1. import * as d3 from 'd3';
  2. import addLegendItem from './legend';
  3. // d3js module for module03: add painted user line
  4. export default (selection, scales, options) => {
  5. // get line coordinates
  6. const valueline = d3.line()
  7. .curve(d3.curveCardinal)
  8. .x(d => scales.xScale(d[options.xKey]))
  9. .y(d => scales.yScale(d[options.yKey]));
  10. const currClass = `mod${options.module}-line--user`;
  11. // append group for current line
  12. const group = selection
  13. .selectAll(`.${currClass}`)
  14. .data([ options.userEntries ])
  15. .enter()
  16. .append('g')
  17. .attr('class', `mod${options.module}-line ${currClass} ${options.isCurrent ? `mod${options.module}-line--active` : ''}`);
  18. // append line
  19. group.append('path')
  20. .attr('stroke', options.colors.graph)
  21. .attr('stroke-width', 2)
  22. .attr('fill', 'none')
  23. .attr('d', d => valueline(d));
  24. // add legend for current line
  25. addLegendItem(group, options, 'Ihre Schätzung');
  26. };