referenceClass.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. export function createReferenceClass(options) {
  2. let x, y;
  3. let referenceClassGroup;
  4. let textGroup;
  5. let labels;
  6. let lang;
  7. let colours;
  8. let font;
  9. function referenceClass(selection) {
  10. referenceClassGroup = selection
  11. .append('g')
  12. .attr('transform', 'translate(' + x + ',' + y + ')')
  13. .attr('class', 'reference-class');
  14. referenceClassGroup
  15. .append('rect')
  16. .attr('class', 'reference-class-background')
  17. .attr('transform', 'translate(' + (-5 * font.ratio.large) + ', ' + (-15 * font.ratio.large) + ')')
  18. .attr('width', font.ratio.large * 10.5 + 'em')
  19. .attr('height', 2 * font.ratio.large + 'em')
  20. .attr('fill', colours.bright);
  21. textGroup = referenceClassGroup.append('text');
  22. // referenceClassGroup
  23. textGroup
  24. .attr('fill', colours.text);
  25. textGroup.append('tspan')
  26. .attr('attr', 'reference-class-size')
  27. .attr('font-size', font.ratio.large + 'em')
  28. .text(labels.per[lang] + String.fromCharCode(options.common.spaceFormat) + labels.referenceGroup.size);
  29. }
  30. referenceClass.x = function(val) {
  31. if(!arguments.length) {
  32. return x;
  33. }
  34. x = val;
  35. return referenceClass;
  36. };
  37. referenceClass.font = function(val) {
  38. if(!arguments.length) {
  39. return font;
  40. }
  41. font = val;
  42. return referenceClass;
  43. };
  44. referenceClass.y = function(val) {
  45. if(!arguments.length) {
  46. return y;
  47. }
  48. y = val;
  49. return referenceClass;
  50. };
  51. referenceClass.labels = function(val) {
  52. if(!arguments.length) {
  53. return labels;
  54. }
  55. labels = val;
  56. return referenceClass;
  57. };
  58. referenceClass.lang = function(val) {
  59. if(!arguments.length) {
  60. return lang;
  61. }
  62. lang = val;
  63. return referenceClass;
  64. };
  65. referenceClass.colours = function(val) {
  66. if(!arguments.length) {
  67. return colours;
  68. }
  69. colours = val;
  70. return referenceClass;
  71. };
  72. referenceClass.colours(options.common.colours);
  73. referenceClass.labels(options.common.labels);
  74. referenceClass.lang(options.common.lang);
  75. referenceClass.font(options.common.font);
  76. referenceClass.x(options.x);
  77. referenceClass.y(options.y);
  78. return referenceClass;
  79. }