@mathstack/viz 2.0.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/fesm2022/mathstack-viz.mjs +11024 -0
  2. package/fesm2022/mathstack-viz.mjs.map +1 -0
  3. package/package.json +14 -5
  4. package/types/mathstack-viz.d.ts +5830 -0
  5. package/CHANGELOG.md +0 -0
  6. package/cypress/fixtures/example.json +0 -5
  7. package/cypress/fixtures/usMap.json +0 -13511
  8. package/cypress/support/commands.ts +0 -104
  9. package/cypress/support/component-index.html +0 -12
  10. package/cypress/support/component.ts +0 -33
  11. package/cypress.config.ts +0 -9
  12. package/karma.conf.js +0 -62
  13. package/ng-package.json +0 -8
  14. package/project.json +0 -97
  15. package/src/.eslintrc.json +0 -35
  16. package/src/.prettierrc +0 -31
  17. package/src/lib/axes/base/config/xy-axis-builder.ts +0 -68
  18. package/src/lib/axes/base/config/xy-axis-config.ts +0 -35
  19. package/src/lib/axes/base/config/xy-axis-options.ts +0 -11
  20. package/src/lib/axes/base/xy-axis-base.spec.ts +0 -114
  21. package/src/lib/axes/base/xy-axis-base.ts +0 -300
  22. package/src/lib/axes/base/xy-axis-domain-lines.cy.ts +0 -511
  23. package/src/lib/axes/baseline/axis-baseline-builder.ts +0 -77
  24. package/src/lib/axes/baseline/axis-baseline-options.ts +0 -4
  25. package/src/lib/axes/baseline/axis-baseline.ts +0 -11
  26. package/src/lib/axes/grid/grid-builder.ts +0 -74
  27. package/src/lib/axes/grid/grid-config.ts +0 -13
  28. package/src/lib/axes/grid/grid-options.ts +0 -7
  29. package/src/lib/axes/index.ts +0 -40
  30. package/src/lib/axes/label/axis-label-builder.ts +0 -140
  31. package/src/lib/axes/label/axis-label-options.ts +0 -12
  32. package/src/lib/axes/label/axis-label.ts +0 -18
  33. package/src/lib/axes/label/axis-labels.cy.ts +0 -303
  34. package/src/lib/axes/ordinal/ordinal-axis-config.ts +0 -31
  35. package/src/lib/axes/ordinal/ordinal-axis.spec.ts +0 -30
  36. package/src/lib/axes/ordinal/ordinal-axis.ts +0 -26
  37. package/src/lib/axes/quantitative/quantitative-axis-config.ts +0 -39
  38. package/src/lib/axes/quantitative/quantitative-axis-ticks.cy.ts +0 -748
  39. package/src/lib/axes/quantitative/quantitative-axis.spec.ts +0 -537
  40. package/src/lib/axes/quantitative/quantitative-axis.ts +0 -191
  41. package/src/lib/axes/ticks/tick-wrap/tick-wrap-builder.ts +0 -141
  42. package/src/lib/axes/ticks/tick-wrap/tick-wrap-options.ts +0 -11
  43. package/src/lib/axes/ticks/tick-wrap/tick-wrap.cy.ts +0 -360
  44. package/src/lib/axes/ticks/tick-wrap/tick-wrap.ts +0 -21
  45. package/src/lib/axes/ticks/ticks-builder.ts +0 -370
  46. package/src/lib/axes/ticks/ticks-options.ts +0 -24
  47. package/src/lib/axes/ticks/ticks.ts +0 -33
  48. package/src/lib/axes/x/x-axis-config.ts +0 -48
  49. package/src/lib/axes/x/x-axis.spec.ts +0 -90
  50. package/src/lib/axes/x/x-axis.ts +0 -109
  51. package/src/lib/axes/x-ordinal/x-ordinal-axis-builder.ts +0 -75
  52. package/src/lib/axes/x-ordinal/x-ordinal-axis-config.ts +0 -27
  53. package/src/lib/axes/x-ordinal/x-ordinal-axis.component.ts +0 -33
  54. package/src/lib/axes/x-quantitative/x-quantitative-axis-builder.ts +0 -74
  55. package/src/lib/axes/x-quantitative/x-quantitative-axis-config.ts +0 -32
  56. package/src/lib/axes/x-quantitative/x-quantitative-axis.component.ts +0 -40
  57. package/src/lib/axes/xy-axis.module.ts +0 -20
  58. package/src/lib/axes/y/y-axis-config.ts +0 -47
  59. package/src/lib/axes/y/y-axis.spec.ts +0 -92
  60. package/src/lib/axes/y/y-axis.ts +0 -161
  61. package/src/lib/axes/y-ordinal/y-ordinal-axis-builder.ts +0 -76
  62. package/src/lib/axes/y-ordinal/y-ordinal-axis-config.ts +0 -29
  63. package/src/lib/axes/y-ordinal/y-ordinal-axis.component.ts +0 -33
  64. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-builder.ts +0 -74
  65. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-config.ts +0 -34
  66. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis.component.ts +0 -40
  67. package/src/lib/bars/bars.component.scss +0 -0
  68. package/src/lib/bars/bars.component.spec.ts +0 -1470
  69. package/src/lib/bars/bars.component.ts +0 -717
  70. package/src/lib/bars/bars.cy.ts +0 -829
  71. package/src/lib/bars/bars.module.ts +0 -9
  72. package/src/lib/bars/config/backgrounds/bars-backgrounds-builder.ts +0 -51
  73. package/src/lib/bars/config/backgrounds/bars-backgrounds-options.ts +0 -4
  74. package/src/lib/bars/config/backgrounds/bars-backgrounds.ts +0 -11
  75. package/src/lib/bars/config/bars-builder.ts +0 -340
  76. package/src/lib/bars/config/bars-config.spec.ts +0 -132
  77. package/src/lib/bars/config/bars-config.ts +0 -70
  78. package/src/lib/bars/config/bars-dimensions.ts +0 -29
  79. package/src/lib/bars/config/bars-options.ts +0 -20
  80. package/src/lib/bars/config/labels/bars-labels-builder.ts +0 -89
  81. package/src/lib/bars/config/labels/bars-labels-options.ts +0 -6
  82. package/src/lib/bars/config/labels/bars-labels.cy.ts +0 -781
  83. package/src/lib/bars/config/labels/bars-labels.ts +0 -13
  84. package/src/lib/bars/events/actions/bars-click-actions.ts +0 -23
  85. package/src/lib/bars/events/actions/bars-hover-actions.ts +0 -43
  86. package/src/lib/bars/events/actions/bars-hover-move-actions.ts +0 -21
  87. package/src/lib/bars/events/bars-events.directive.spec.ts +0 -186
  88. package/src/lib/bars/events/bars-events.directive.ts +0 -235
  89. package/src/lib/bars/events/bars-interaction-output.ts +0 -17
  90. package/src/lib/bars/events/bars-tooltip-positioner.ts +0 -24
  91. package/src/lib/bars/index.ts +0 -18
  92. package/src/lib/charts/chart/chart-scaling.cy.ts +0 -323
  93. package/src/lib/charts/chart/chart.component.html +0 -45
  94. package/src/lib/charts/chart/chart.component.scss +0 -37
  95. package/src/lib/charts/chart/chart.component.ts +0 -243
  96. package/src/lib/charts/chart/chart.token.ts +0 -4
  97. package/src/lib/charts/chart/chart.ts +0 -5
  98. package/src/lib/charts/chart/config/chart-builder.ts +0 -194
  99. package/src/lib/charts/chart/config/chart-config.ts +0 -21
  100. package/src/lib/charts/chart/config/chart-options.ts +0 -11
  101. package/src/lib/charts/chart.module.ts +0 -10
  102. package/src/lib/charts/index.ts +0 -9
  103. package/src/lib/charts/map-chart/map-chart.component.scss +0 -0
  104. package/src/lib/charts/map-chart/map-chart.component.spec.ts +0 -35
  105. package/src/lib/charts/map-chart/map-chart.component.ts +0 -61
  106. package/src/lib/charts/xy-chart/xy-chart.component.spec.ts +0 -34
  107. package/src/lib/charts/xy-chart/xy-chart.component.ts +0 -65
  108. package/src/lib/core/common-behaviors/constructor.ts +0 -7
  109. package/src/lib/core/index.ts +0 -11
  110. package/src/lib/core/pipes/resize-chart-height.pipe.spec.ts +0 -23
  111. package/src/lib/core/pipes/resize-chart-height.pipe.ts +0 -20
  112. package/src/lib/core/styles/_spacing.scss +0 -4
  113. package/src/lib/core/types/layout.ts +0 -28
  114. package/src/lib/core/types/scale.ts +0 -6
  115. package/src/lib/core/types/utility.ts +0 -11
  116. package/src/lib/core/types/values.ts +0 -10
  117. package/src/lib/core/utilities/colors.spec.ts +0 -57
  118. package/src/lib/core/utilities/colors.ts +0 -42
  119. package/src/lib/core/utilities/fill-utilities.spec.ts +0 -25
  120. package/src/lib/core/utilities/fill-utilities.ts +0 -21
  121. package/src/lib/core/utilities/type-guards.spec.ts +0 -55
  122. package/src/lib/core/utilities/type-guards.ts +0 -33
  123. package/src/lib/core/utilities/value-format.ts +0 -21
  124. package/src/lib/core/utilities/values.spec.ts +0 -954
  125. package/src/lib/core/utilities/values.ts +0 -189
  126. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-builder.ts +0 -105
  127. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-options.ts +0 -24
  128. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.spec.ts +0 -66
  129. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.ts +0 -72
  130. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/concrete-domain-padding.ts +0 -10
  131. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-padding.ts +0 -76
  132. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-test-utility.ts +0 -130
  133. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over-options.ts +0 -3
  134. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over.ts +0 -37
  135. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel-options.ts +0 -3
  136. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel.ts +0 -73
  137. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/quantitative-domain-padding.cy.ts +0 -978
  138. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval-options.ts +0 -3
  139. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval.ts +0 -27
  140. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig-options.ts +0 -3
  141. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig.ts +0 -30
  142. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-builder.ts +0 -183
  143. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-options.ts +0 -8
  144. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.spec.ts +0 -28
  145. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.ts +0 -62
  146. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension-options.ts +0 -15
  147. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.spec.ts +0 -155
  148. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.ts +0 -57
  149. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-builder.ts +0 -166
  150. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-options.ts +0 -10
  151. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.spec.ts +0 -34
  152. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.ts +0 -57
  153. package/src/lib/data-dimensions/dimension-builder.ts +0 -45
  154. package/src/lib/data-dimensions/dimension-options.ts +0 -12
  155. package/src/lib/data-dimensions/dimension.ts +0 -30
  156. package/src/lib/data-dimensions/index.ts +0 -31
  157. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-builder.ts +0 -122
  158. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-options.ts +0 -12
  159. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.spec.ts +0 -83
  160. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.ts +0 -101
  161. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-builder.ts +0 -108
  162. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-options.ts +0 -12
  163. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.cy.ts +0 -384
  164. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.spec.ts +0 -63
  165. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.ts +0 -79
  166. package/src/lib/data-export/data-export-config.ts +0 -98
  167. package/src/lib/data-export/data-export.spec.ts +0 -33
  168. package/src/lib/data-export/data-export.ts +0 -87
  169. package/src/lib/data-export/index.ts +0 -2
  170. package/src/lib/dots/config/dots-builder.ts +0 -442
  171. package/src/lib/dots/config/dots-config.spec.ts +0 -123
  172. package/src/lib/dots/config/dots-config.ts +0 -81
  173. package/src/lib/dots/config/dots-options.ts +0 -32
  174. package/src/lib/dots/dots.component.scss +0 -0
  175. package/src/lib/dots/dots.component.spec.ts +0 -143
  176. package/src/lib/dots/dots.component.ts +0 -291
  177. package/src/lib/dots/dots.cy.ts +0 -594
  178. package/src/lib/dots/dots.module.ts +0 -9
  179. package/src/lib/dots/events/actions/dots-hover-actions.ts +0 -19
  180. package/src/lib/dots/events/actions/dots-hover-move-actions.ts +0 -38
  181. package/src/lib/dots/events/dots-events.directive.ts +0 -214
  182. package/src/lib/dots/events/dots-interaction-output.ts +0 -15
  183. package/src/lib/dots/events/dots-tooltip-positioner.ts +0 -24
  184. package/src/lib/dots/index.ts +0 -10
  185. package/src/lib/events/events.directive.ts +0 -184
  186. package/src/lib/events/events.types.ts +0 -57
  187. package/src/lib/events/index.ts +0 -4
  188. package/src/lib/events/interaction-output.ts +0 -34
  189. package/src/lib/events/tooltip-positioner.ts +0 -15
  190. package/src/lib/fill-definitions/fill-definitions.ts +0 -4
  191. package/src/lib/fill-definitions/index.ts +0 -1
  192. package/src/lib/geographies/config/geographies-builder.ts +0 -224
  193. package/src/lib/geographies/config/geographies-config.spec.ts +0 -100
  194. package/src/lib/geographies/config/geographies-config.ts +0 -81
  195. package/src/lib/geographies/config/geographies-options.ts +0 -37
  196. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-builder.ts +0 -212
  197. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-options.ts +0 -26
  198. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.spec.ts +0 -119
  199. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.ts +0 -148
  200. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-builder.ts +0 -65
  201. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-options.ts +0 -15
  202. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension.ts +0 -32
  203. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-enums.ts +0 -10
  204. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-types.ts +0 -15
  205. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-builder.ts +0 -18
  206. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-options.ts +0 -8
  207. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.spec.ts +0 -60
  208. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.ts +0 -34
  209. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-builder.ts +0 -46
  210. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-options.ts +0 -8
  211. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.cy.ts +0 -437
  212. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.spec.ts +0 -105
  213. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.ts +0 -54
  214. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-builder.ts +0 -65
  215. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-options.ts +0 -9
  216. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.spec.ts +0 -82
  217. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.ts +0 -81
  218. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks.cy.ts +0 -378
  219. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-builder.ts +0 -50
  220. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-options.ts +0 -8
  221. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.cy.ts +0 -362
  222. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.spec.ts +0 -72
  223. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.ts +0 -56
  224. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-builder.ts +0 -60
  225. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-options.ts +0 -9
  226. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.cy.ts +0 -307
  227. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.spec.ts +0 -104
  228. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.ts +0 -89
  229. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-builder.ts +0 -62
  230. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-options.ts +0 -8
  231. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.cy.ts +0 -265
  232. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.spec.ts +0 -42
  233. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.ts +0 -42
  234. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-builder.ts +0 -116
  235. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-options.ts +0 -20
  236. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer.ts +0 -104
  237. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-builder.ts +0 -111
  238. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-options.ts +0 -19
  239. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.spec.ts +0 -41
  240. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.ts +0 -67
  241. package/src/lib/geographies/config/layers/labels/geographies-labels-builder.ts +0 -269
  242. package/src/lib/geographies/config/layers/labels/geographies-labels-options.ts +0 -45
  243. package/src/lib/geographies/config/layers/labels/geographies-labels.ts +0 -38
  244. package/src/lib/geographies/events/actions/geographies-click-actions.ts +0 -21
  245. package/src/lib/geographies/events/actions/geographies-hover-actions.ts +0 -17
  246. package/src/lib/geographies/events/actions/geographies-hover-move-actions.ts +0 -19
  247. package/src/lib/geographies/events/geographies-events.directive.spec.ts +0 -225
  248. package/src/lib/geographies/events/geographies-events.directive.ts +0 -235
  249. package/src/lib/geographies/events/geographies-interaction-output.ts +0 -17
  250. package/src/lib/geographies/events/geographies-tooltip-positioner.ts +0 -23
  251. package/src/lib/geographies/geographies-feature.ts +0 -16
  252. package/src/lib/geographies/geographies.component.html +0 -1
  253. package/src/lib/geographies/geographies.component.scss +0 -0
  254. package/src/lib/geographies/geographies.component.spec.ts +0 -148
  255. package/src/lib/geographies/geographies.component.ts +0 -318
  256. package/src/lib/geographies/geographies.cy.ts +0 -640
  257. package/src/lib/geographies/geographies.module.ts +0 -9
  258. package/src/lib/geographies/index.ts +0 -32
  259. package/src/lib/grouped-bars/config/grouped-bars-builder.ts +0 -66
  260. package/src/lib/grouped-bars/config/grouped-bars-config.ts +0 -41
  261. package/src/lib/grouped-bars/config/grouped-bars-options.ts +0 -9
  262. package/src/lib/grouped-bars/events/grouped-bars-events.directive.ts +0 -221
  263. package/src/lib/grouped-bars/grouped-bars.component.scss +0 -0
  264. package/src/lib/grouped-bars/grouped-bars.component.spec.ts +0 -25
  265. package/src/lib/grouped-bars/grouped-bars.component.ts +0 -94
  266. package/src/lib/grouped-bars/grouped-bars.module.ts +0 -9
  267. package/src/lib/grouped-bars/index.ts +0 -10
  268. package/src/lib/image-download/image-download-config.ts +0 -57
  269. package/src/lib/image-download/image-download-enums.ts +0 -7
  270. package/src/lib/image-download/image-download-options.ts +0 -14
  271. package/src/lib/image-download/image-download.service.ts +0 -70
  272. package/src/lib/image-download/index.ts +0 -4
  273. package/src/lib/lines/config/area-fills/area-fills-builder.ts +0 -87
  274. package/src/lib/lines/config/area-fills/area-fills-options.ts +0 -8
  275. package/src/lib/lines/config/area-fills/area-fills.ts +0 -14
  276. package/src/lib/lines/config/lines-builder.ts +0 -242
  277. package/src/lib/lines/config/lines-config.spec.ts +0 -52
  278. package/src/lib/lines/config/lines-config.ts +0 -96
  279. package/src/lib/lines/config/lines-options.ts +0 -19
  280. package/src/lib/lines/config/stroke/lines-stroke-builder.ts +0 -135
  281. package/src/lib/lines/config/stroke/lines-stroke-options.ts +0 -6
  282. package/src/lib/lines/config/stroke/lines-stroke.ts +0 -15
  283. package/src/lib/lines/events/actions/lines-click-actions.ts +0 -17
  284. package/src/lib/lines/events/actions/lines-hover-move-actions.ts +0 -113
  285. package/src/lib/lines/events/actions/lines-marker-click-actions.ts +0 -29
  286. package/src/lib/lines/events/lines-events.directive.spec.ts +0 -152
  287. package/src/lib/lines/events/lines-events.directive.ts +0 -310
  288. package/src/lib/lines/events/lines-interaction-output.ts +0 -17
  289. package/src/lib/lines/events/lines-tooltip-positioner.ts +0 -24
  290. package/src/lib/lines/index.ts +0 -17
  291. package/src/lib/lines/lines.component.scss +0 -0
  292. package/src/lib/lines/lines.component.spec.ts +0 -95
  293. package/src/lib/lines/lines.component.ts +0 -425
  294. package/src/lib/lines/lines.cy.ts +0 -738
  295. package/src/lib/lines/lines.module.ts +0 -9
  296. package/src/lib/map-legend/continuous-legend/continuous-legend.component.html +0 -28
  297. package/src/lib/map-legend/continuous-legend/continuous-legend.component.scss +0 -76
  298. package/src/lib/map-legend/continuous-legend/continuous-legend.component.spec.ts +0 -61
  299. package/src/lib/map-legend/continuous-legend/continuous-legend.component.ts +0 -82
  300. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.html +0 -40
  301. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.scss +0 -141
  302. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.spec.ts +0 -75
  303. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.ts +0 -57
  304. package/src/lib/map-legend/index.ts +0 -2
  305. package/src/lib/map-legend/map-legend-base.spec.ts +0 -190
  306. package/src/lib/map-legend/map-legend-base.ts +0 -99
  307. package/src/lib/map-legend/map-legend.component.html +0 -24
  308. package/src/lib/map-legend/map-legend.component.scss +0 -0
  309. package/src/lib/map-legend/map-legend.component.spec.ts +0 -125
  310. package/src/lib/map-legend/map-legend.component.ts +0 -80
  311. package/src/lib/map-legend/map-legend.module.ts +0 -8
  312. package/src/lib/marks/aux-marks/aux-marks.ts +0 -18
  313. package/src/lib/marks/aux-marks/config/aux-marks-builder.ts +0 -25
  314. package/src/lib/marks/aux-marks/config/aux-marks-config.ts +0 -6
  315. package/src/lib/marks/config/marks-config.ts +0 -14
  316. package/src/lib/marks/config/marks-options.ts +0 -9
  317. package/src/lib/marks/index.ts +0 -15
  318. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.spec.ts +0 -74
  319. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.ts +0 -40
  320. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.spec.ts +0 -79
  321. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.ts +0 -63
  322. package/src/lib/marks/marks.ts +0 -39
  323. package/src/lib/marks/primary-marks/config/primary-marks-builder.ts +0 -75
  324. package/src/lib/marks/primary-marks/config/primary-marks-config.ts +0 -9
  325. package/src/lib/marks/primary-marks/primary-marks-base.spec.ts +0 -58
  326. package/src/lib/marks/primary-marks/primary-marks.ts +0 -43
  327. package/src/lib/marks/xy-marks/xy-aux-marks/xy-aux-marks.ts +0 -40
  328. package/src/lib/marks/xy-marks/xy-marks-config.ts +0 -5
  329. package/src/lib/marks/xy-marks/xy-marks.ts +0 -10
  330. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks-config.ts +0 -7
  331. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.spec.ts +0 -186
  332. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.ts +0 -72
  333. package/src/lib/point-markers/index.ts +0 -3
  334. package/src/lib/point-markers/point-markers-builder.ts +0 -93
  335. package/src/lib/point-markers/point-markers-options.ts +0 -6
  336. package/src/lib/point-markers/point-markers.ts +0 -13
  337. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-builder.ts +0 -162
  338. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-options.ts +0 -17
  339. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels.ts +0 -26
  340. package/src/lib/quantitative-rules/config/quantitative-rules-builder.ts +0 -134
  341. package/src/lib/quantitative-rules/config/quantitative-rules-config.ts +0 -21
  342. package/src/lib/quantitative-rules/config/quantitative-rules-dimensions.ts +0 -20
  343. package/src/lib/quantitative-rules/config/quantitative-rules-options.ts +0 -13
  344. package/src/lib/quantitative-rules/index.ts +0 -6
  345. package/src/lib/quantitative-rules/quantitative-rules.component.scss +0 -3
  346. package/src/lib/quantitative-rules/quantitative-rules.component.spec.ts +0 -50
  347. package/src/lib/quantitative-rules/quantitative-rules.component.ts +0 -224
  348. package/src/lib/quantitative-rules/quantitative-rules.cy.ts +0 -549
  349. package/src/lib/quantitative-rules/quantitative-rules.module.ts +0 -8
  350. package/src/lib/stacked-area/config/stacked-area-builder.ts +0 -264
  351. package/src/lib/stacked-area/config/stacked-area-config.spec.ts +0 -107
  352. package/src/lib/stacked-area/config/stacked-area-config.ts +0 -109
  353. package/src/lib/stacked-area/config/stacked-area-options.ts +0 -28
  354. package/src/lib/stacked-area/events/actions/stacked-area-hover-move-actions.ts +0 -17
  355. package/src/lib/stacked-area/events/stacked-area-events.directive.spec.ts +0 -168
  356. package/src/lib/stacked-area/events/stacked-area-events.directive.ts +0 -272
  357. package/src/lib/stacked-area/events/stacked-area-interaction-output.ts +0 -33
  358. package/src/lib/stacked-area/events/stacked-area-tooltip-positioner.ts +0 -37
  359. package/src/lib/stacked-area/index.ts +0 -7
  360. package/src/lib/stacked-area/stacked-area.component.scss +0 -0
  361. package/src/lib/stacked-area/stacked-area.component.spec.ts +0 -41
  362. package/src/lib/stacked-area/stacked-area.component.ts +0 -241
  363. package/src/lib/stacked-area/stacked-area.module.ts +0 -9
  364. package/src/lib/stacked-bars/config/stacked-bars-builder.ts +0 -109
  365. package/src/lib/stacked-bars/config/stacked-bars-config.spec.ts +0 -122
  366. package/src/lib/stacked-bars/config/stacked-bars-config.ts +0 -79
  367. package/src/lib/stacked-bars/config/stacked-bars-options.ts +0 -16
  368. package/src/lib/stacked-bars/events/actions/stacked-bars-click-actions.ts +0 -23
  369. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-actions.ts +0 -22
  370. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-move-actions.ts +0 -21
  371. package/src/lib/stacked-bars/events/stacked-bars-events.directive.spec.ts +0 -266
  372. package/src/lib/stacked-bars/events/stacked-bars-events.directive.ts +0 -240
  373. package/src/lib/stacked-bars/index.ts +0 -10
  374. package/src/lib/stacked-bars/stacked-bars.component.scss +0 -0
  375. package/src/lib/stacked-bars/stacked-bars.component.spec.ts +0 -25
  376. package/src/lib/stacked-bars/stacked-bars.component.ts +0 -158
  377. package/src/lib/stacked-bars/stacked-bars.module.ts +0 -9
  378. package/src/lib/stroke/base/stroke-base-options.ts +0 -7
  379. package/src/lib/stroke/base/stroke-base.ts +0 -9
  380. package/src/lib/stroke/index.ts +0 -5
  381. package/src/lib/stroke/stroke-builder.ts +0 -103
  382. package/src/lib/stroke/stroke-options.ts +0 -5
  383. package/src/lib/stroke/stroke.ts +0 -12
  384. package/src/lib/svg-text-wrap/index.ts +0 -3
  385. package/src/lib/svg-text-wrap/svg-text-wrap-builder.ts +0 -105
  386. package/src/lib/svg-text-wrap/svg-text-wrap-options.ts +0 -8
  387. package/src/lib/svg-text-wrap/svg-text-wrap.ts +0 -137
  388. package/src/lib/testing/data/continent-population-year-data.ts +0 -126
  389. package/src/lib/testing/data/country-area-continent.ts +0 -59
  390. package/src/lib/testing/data/state-population-income-year-data.ts +0 -123
  391. package/src/lib/testing/stubs/bars.component.stub.ts +0 -12
  392. package/src/lib/testing/stubs/chart.component.stub.ts +0 -6
  393. package/src/lib/testing/stubs/click.directive.stub.ts +0 -15
  394. package/src/lib/testing/stubs/core/destroy-ref.stub.ts +0 -9
  395. package/src/lib/testing/stubs/core/overlay-ref.stub.ts +0 -13
  396. package/src/lib/testing/stubs/core/overlay.stub.ts +0 -8
  397. package/src/lib/testing/stubs/event.directive.stub.ts +0 -10
  398. package/src/lib/testing/stubs/hover-move.directive.stub.ts +0 -17
  399. package/src/lib/testing/stubs/hover.directive.stub.ts +0 -14
  400. package/src/lib/testing/stubs/input-event.directive.stub.ts +0 -9
  401. package/src/lib/testing/stubs/lines.component.stub.ts +0 -13
  402. package/src/lib/testing/stubs/map-aux-marks.stub.ts +0 -10
  403. package/src/lib/testing/stubs/map-chart.component.stub.ts +0 -3
  404. package/src/lib/testing/stubs/map-legend-content.stub.ts +0 -16
  405. package/src/lib/testing/stubs/map-legend.component.stub.ts +0 -10
  406. package/src/lib/testing/stubs/map-primary-marks.stub.ts +0 -16
  407. package/src/lib/testing/stubs/ordinal-axis.stub.ts +0 -18
  408. package/src/lib/testing/stubs/primary-marks.stub.ts +0 -18
  409. package/src/lib/testing/stubs/quantitative-axis.stub.ts +0 -18
  410. package/src/lib/testing/stubs/services/main.service.stub.ts +0 -5
  411. package/src/lib/testing/stubs/services/utilities.service.stub.ts +0 -7
  412. package/src/lib/testing/stubs/stacked-area.component.stub.ts +0 -13
  413. package/src/lib/testing/stubs/x-axis.stub.ts +0 -10
  414. package/src/lib/testing/stubs/xy-axis.class.stub.ts +0 -20
  415. package/src/lib/testing/stubs/xy-axis.stub.ts +0 -44
  416. package/src/lib/testing/stubs/xy-chart.component.stub.ts +0 -5
  417. package/src/lib/testing/stubs/xy-data-marks.stub.ts +0 -15
  418. package/src/lib/testing/stubs/y-axis.stub.ts +0 -15
  419. package/src/lib/tooltips/config/tooltip.ts +0 -11
  420. package/src/lib/tooltips/html-tooltip/config/html-tooltip-builder.ts +0 -134
  421. package/src/lib/tooltips/html-tooltip/config/html-tooltip-config.ts +0 -21
  422. package/src/lib/tooltips/html-tooltip/config/html-tooltip-options.ts +0 -12
  423. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position-builder.ts +0 -191
  424. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position.ts +0 -42
  425. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-builder.ts +0 -75
  426. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-options.ts +0 -8
  427. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size.ts +0 -15
  428. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.spec.ts +0 -537
  429. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.ts +0 -210
  430. package/src/lib/tooltips/html-tooltip/html-tooltip.module.ts +0 -16
  431. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.html +0 -41
  432. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.scss +0 -63
  433. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.ts +0 -19
  434. package/src/lib/tooltips/index.ts +0 -11
  435. package/src/lib/tooltips/svg-tooltip/config/svg-tooltip.ts +0 -5
  436. package/src/lib/xy-background/index.ts +0 -2
  437. package/src/lib/xy-background/xy-background.component.html +0 -10
  438. package/src/lib/xy-background/xy-background.component.scss +0 -0
  439. package/src/lib/xy-background/xy-background.component.spec.ts +0 -24
  440. package/src/lib/xy-background/xy-background.component.ts +0 -19
  441. package/src/lib/xy-background/xy-background.module.ts +0 -8
  442. package/src/public-api.ts +0 -26
  443. package/src/test.ts +0 -15
  444. package/tsconfig.doc.json +0 -4
  445. package/tsconfig.json +0 -20
  446. package/tsconfig.lib.json +0 -23
  447. package/tsconfig.lib.prod.json +0 -10
  448. package/tsconfig.spec.json +0 -10
@@ -1,781 +0,0 @@
1
- /* eslint-disable @angular-eslint/prefer-standalone */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { Component, Input } from '@angular/core';
4
- import {
5
- BarsConfig,
6
- ChartConfig,
7
- VicBarsConfigBuilder,
8
- VicBarsModule,
9
- VicChartConfigBuilder,
10
- VicChartModule,
11
- VicXOrdinalAxisConfig,
12
- VicXOrdinalAxisConfigBuilder,
13
- VicXQuantitativeAxisConfig,
14
- VicXQuantitativeAxisConfigBuilder,
15
- VicXyAxisModule,
16
- VicYOrdinalAxisConfig,
17
- VicYOrdinalAxisConfigBuilder,
18
- VicYQuantitativeAxisConfig,
19
- VicYQuantitativeAxisConfigBuilder,
20
- } from '@mathstack/viz';
21
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
22
-
23
- type Datum = { state: string; value: number };
24
-
25
- const dataWithAllValueTypes = [
26
- { state: 'Alabama', value: -10 },
27
- { state: 'Alaska', value: -5 },
28
- { state: 'Arizona', value: 10 },
29
- { state: 'Arkansas', value: 5 },
30
- { state: 'California', value: null },
31
- { state: 'Colorado', value: 0 },
32
- ];
33
- const dataWithNegativeZeroAndNonnumericValues = [
34
- { state: 'Alabama', value: -10 },
35
- { state: 'Alaska', value: -5 },
36
- { state: 'Arizona', value: null },
37
- { state: 'Arkansas', value: 0 },
38
- ];
39
- const dataWithPositiveZeroAndNonnumericValues = [
40
- { state: 'Alabama', value: 10 },
41
- { state: 'Alaska', value: 5 },
42
- { state: 'Arizona', value: null },
43
- { state: 'Arkansas', value: 0 },
44
- ];
45
- const dataWithNonnumericValues = [
46
- { state: 'Alabama', value: null },
47
- { state: 'Alaska', value: null },
48
- { state: 'California', value: null },
49
- ];
50
- const dataWithZeroAndNonnumericValues = [
51
- { state: 'Alabama', value: null },
52
- { state: 'Alaska', value: 0 },
53
- { state: 'California', value: null },
54
- ];
55
- const dataWithZeroValues = [
56
- { state: 'Alabama', value: 0 },
57
- { state: 'Alaska', value: 0 },
58
- { state: 'California', value: 0 },
59
- ];
60
- const labelOffset = 4;
61
- const elementPositionDelta = 0.5;
62
- const defaultTextColorRgb = 'rgb(0, 0, 0)';
63
- const alternativeTextColorRgb = 'rgb(255, 255, 255)';
64
-
65
- const barSelector = '.vic-bars-bar';
66
- const labelSelector = '.vic-bars-label';
67
-
68
- const assertPositionOfBarAndDataLabel = (
69
- index: number,
70
- assertions: (barPosition: DOMRect, labelPosition: DOMRect) => void
71
- ): void => {
72
- const assertionFn = () => {
73
- cy.get(barSelector)
74
- .eq(index)
75
- .then(($bar) => {
76
- cy.get(labelSelector)
77
- .eq(index)
78
- .then(($label) => {
79
- const barPosition = $bar[0].getBoundingClientRect();
80
- const labelPosition = $label[0].getBoundingClientRect();
81
- assertions(barPosition, labelPosition);
82
- });
83
- });
84
- };
85
- checkPositionBeforeAndAfterWindowResize(assertionFn);
86
- };
87
-
88
- const assertPositionOfTickForZeroAndDataLabel = (
89
- axis: 'x' | 'y',
90
- assertions: (tickPosition: DOMRect, labelPosition: DOMRect) => void,
91
- indices?: number[]
92
- ): void => {
93
- const assertionFn = () => {
94
- cy.get(`.vic-axis-${axis}-quantitative .tick text`)
95
- .contains(/^0$/)
96
- .siblings()
97
- .then(($tick) => {
98
- cy.get(labelSelector).each(($label, i) => {
99
- if (indices === undefined || indices.includes(i)) {
100
- const tickPosition = $tick[0].getBoundingClientRect();
101
- const labelPosition = $label[0].getBoundingClientRect();
102
- assertions(tickPosition, labelPosition);
103
- }
104
- });
105
- });
106
- };
107
- checkPositionBeforeAndAfterWindowResize(assertionFn);
108
- };
109
-
110
- const checkPositionBeforeAndAfterWindowResize = (assertions: () => void) => {
111
- assertions();
112
-
113
- // Resize window to check that label positioning is maintained
114
- cy.viewport(300, 300);
115
- cy.wait(2000);
116
- assertions();
117
- };
118
-
119
- const distanceBetweenElementAndDataLabelIsOffset = (distance: number) => {
120
- expect(distance).to.be.closeTo(labelOffset, elementPositionDelta);
121
- };
122
-
123
- const barLabelColorMatchesExpectedRgb = (
124
- rgb: string,
125
- indices?: number[]
126
- ): void => {
127
- cy.get(labelSelector).each(($label, i) => {
128
- if (indices === undefined || indices.includes(i)) {
129
- cy.wrap($label)
130
- .should('have.attr', 'style')
131
- .and('includes', `fill: ${rgb}`);
132
- }
133
- });
134
- };
135
-
136
- // ***********************************************************
137
- // Vertical bars chart component set up
138
- // ***********************************************************
139
- @Component({
140
- // eslint-disable-next-line @angular-eslint/component-selector
141
- selector: 'app-test-vertical-bar-with-labels',
142
- template: `
143
- <vic-xy-chart [config]="chartConfig">
144
- <ng-container svg-elements>
145
- <svg:g vic-x-ordinal-axis [config]="xOrdinalAxisConfig"></svg:g>
146
- <svg:g
147
- vic-y-quantitative-axis
148
- [config]="yQuantitativeAxisConfig"
149
- ></svg:g>
150
- <svg:g vic-primary-marks-bars [config]="barsConfig"></svg:g>
151
- </ng-container>
152
- </vic-xy-chart>
153
- `,
154
- styles: [],
155
- imports: [VicChartModule, VicBarsModule, VicXyAxisModule],
156
- })
157
- class TestVerticalBarsWithLabelsComponent {
158
- @Input() barsConfig: BarsConfig<Datum, string>;
159
- @Input() xOrdinalAxisConfig: VicXOrdinalAxisConfig<string>;
160
- @Input() yQuantitativeAxisConfig: VicYQuantitativeAxisConfig<number>;
161
- chartConfig: ChartConfig = new VicChartConfigBuilder()
162
- .maxHeight(400)
163
- .margin({ top: 20, right: 20, bottom: 0, left: 40 })
164
- .scalingStrategy('responsive-width')
165
- .getConfig();
166
- }
167
-
168
- const mountVerticalBarsComponent = (
169
- barsConfig: BarsConfig<Datum, string>
170
- ): void => {
171
- const xAxisConfig = new VicXOrdinalAxisConfigBuilder().getConfig();
172
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder()
173
- .ticks((ticks) => ticks.format('.0f'))
174
- .getConfig();
175
-
176
- cy.mount(TestVerticalBarsWithLabelsComponent, {
177
- componentProperties: {
178
- barsConfig: barsConfig,
179
- xOrdinalAxisConfig: xAxisConfig,
180
- yQuantitativeAxisConfig: yAxisConfig,
181
- },
182
- });
183
- };
184
-
185
- describe('it correctly positions the vertical bar chart data labels', () => {
186
- let barsConfig: BarsConfig<Datum, string>;
187
- describe('for bar data that has positive, negative, zero, and non-numeric values', () => {
188
- beforeEach(() => {
189
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
190
- .data(dataWithAllValueTypes)
191
- .vertical((bars) =>
192
- bars
193
- .x((dimension) => dimension.valueAccessor((d) => d.state))
194
- .y((dimension) =>
195
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
196
- )
197
- )
198
- .color((dimension) =>
199
- dimension.valueAccessor(() => '').range(['#000080'])
200
- )
201
- .labels((labels) => labels.display(true).offset(labelOffset))
202
- .getConfig();
203
- mountVerticalBarsComponent(barsConfig);
204
- });
205
- it('centers all data labels with respect to their x-axis tick', () => {
206
- checkPositionBeforeAndAfterWindowResize(() =>
207
- cy.get('.vic-axis-x-ordinal .tick line').then((ticks) => {
208
- ticks.each((i, $tick) => {
209
- cy.get(labelSelector)
210
- .eq(i)
211
- .then(($label) => {
212
- const labelPosition = $label[0].getBoundingClientRect();
213
- const tickPosition = $tick.getBoundingClientRect();
214
- expect(
215
- labelPosition.width / 2 + labelPosition.left
216
- ).to.be.closeTo(
217
- tickPosition.width / 2 + tickPosition.left,
218
- elementPositionDelta
219
- );
220
- });
221
- });
222
- })
223
- );
224
- });
225
- describe('when there is not enough vertical space between the bar and chart edge', () => {
226
- it('places data label for negative value completely inside the bar at the bottom', () => {
227
- assertPositionOfBarAndDataLabel(
228
- 0,
229
- (barPosition: DOMRect, labelPosition: DOMRect) => {
230
- expect(labelPosition.top).to.be.greaterThan(barPosition.top);
231
- expect(labelPosition.bottom).to.be.lessThan(barPosition.bottom);
232
- distanceBetweenElementAndDataLabelIsOffset(
233
- barPosition.bottom - labelPosition.bottom
234
- );
235
- }
236
- );
237
- });
238
- it('places data label for positive value completely inside the bar at the top', () => {
239
- assertPositionOfBarAndDataLabel(
240
- 2,
241
- (barPosition: DOMRect, labelPosition: DOMRect) => {
242
- expect(labelPosition.top).to.be.greaterThan(barPosition.top);
243
- expect(labelPosition.bottom).to.be.lessThan(barPosition.bottom);
244
- distanceBetweenElementAndDataLabelIsOffset(
245
- labelPosition.top - barPosition.top
246
- );
247
- }
248
- );
249
- });
250
- it('uses the alternative text color (white) for the data labels color', () => {
251
- barLabelColorMatchesExpectedRgb(alternativeTextColorRgb, [0, 2]);
252
- });
253
- });
254
-
255
- describe('when there is ample vertical space between the bar and the chart edge', () => {
256
- it('places data label for negative value in between bar and the bottom chart edge', () => {
257
- assertPositionOfBarAndDataLabel(
258
- 1,
259
- (barPosition: DOMRect, labelPosition: DOMRect) => {
260
- expect(labelPosition.top).to.be.greaterThan(barPosition.bottom);
261
- cy.get('.vic-axis-y-quantitative').then(($axis) => {
262
- const axisPosition = $axis[0].getBoundingClientRect();
263
- expect(labelPosition.bottom).to.be.lessThan(axisPosition.bottom);
264
- });
265
- distanceBetweenElementAndDataLabelIsOffset(
266
- labelPosition.top - barPosition.bottom
267
- );
268
- }
269
- );
270
- });
271
- it('places data label for positive value in between bar and the upper chart edge', () => {
272
- assertPositionOfBarAndDataLabel(
273
- 3,
274
- (barPosition: DOMRect, labelPosition: DOMRect) => {
275
- expect(labelPosition.bottom).to.be.lessThan(barPosition.top);
276
- cy.get('.vic-axis-y-quantitative').then(($axis) => {
277
- const axisPosition = $axis[0].getBoundingClientRect();
278
- expect(labelPosition.top).to.be.greaterThan(axisPosition.top);
279
- });
280
- distanceBetweenElementAndDataLabelIsOffset(
281
- barPosition.top - labelPosition.bottom
282
- );
283
- }
284
- );
285
- });
286
- it('uses the default text color (black) for the data labels color', () => {
287
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [1, 3]);
288
- });
289
- });
290
-
291
- describe('when the data label is for a zero or non-numeric value', () => {
292
- it('offsets data label above scales.y(0)', () => {
293
- assertPositionOfTickForZeroAndDataLabel(
294
- 'y',
295
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
296
- distanceBetweenElementAndDataLabelIsOffset(
297
- tickPosition.top - labelPosition.bottom
298
- );
299
- },
300
- [4, 5]
301
- );
302
- });
303
- it('uses the default text color (black) for the data label color', () => {
304
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [4, 5]);
305
- });
306
- });
307
- });
308
-
309
- describe('for bar data that has negative, zero, and non-numeric values', () => {
310
- beforeEach(() => {
311
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
312
- .data(dataWithNegativeZeroAndNonnumericValues)
313
- .vertical((bars) =>
314
- bars
315
- .x((dimension) => dimension.valueAccessor((d) => d.state))
316
- .y((dimension) =>
317
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
318
- )
319
- )
320
- .color((dimension) =>
321
- dimension.valueAccessor(() => '').range(['#000080'])
322
- )
323
- .labels((labels) => labels.display(true).offset(labelOffset))
324
- .getConfig();
325
- mountVerticalBarsComponent(barsConfig);
326
- });
327
- it('offsets data label for zero and non-numerics value below scales.y(0)', () => {
328
- assertPositionOfTickForZeroAndDataLabel(
329
- 'y',
330
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
331
- distanceBetweenElementAndDataLabelIsOffset(
332
- labelPosition.top - tickPosition.bottom
333
- );
334
- },
335
- [2, 3]
336
- );
337
- });
338
- it('uses the default text color (black) for the zero and non-numeric label color', () => {
339
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [2, 3]);
340
- });
341
- });
342
-
343
- describe('for bar data that has positive, zero, and non-numeric values', () => {
344
- beforeEach(() => {
345
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
346
- .data(dataWithPositiveZeroAndNonnumericValues)
347
- .vertical((bars) =>
348
- bars
349
- .x((dimension) => dimension.valueAccessor((d) => d.state))
350
- .y((dimension) =>
351
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
352
- )
353
- )
354
- .color((dimension) =>
355
- dimension.valueAccessor(() => '').range(['#000080'])
356
- )
357
- .labels((labels) => labels.display(true).offset(labelOffset))
358
- .getConfig();
359
- mountVerticalBarsComponent(barsConfig);
360
- });
361
- it('offsets data label for zero and non-numeric values above scales.y(0)', () => {
362
- assertPositionOfTickForZeroAndDataLabel(
363
- 'y',
364
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
365
- distanceBetweenElementAndDataLabelIsOffset(
366
- tickPosition.top - labelPosition.bottom
367
- );
368
- },
369
- [2, 3]
370
- );
371
- });
372
- it('uses the default text color (black) for the zero and non-numeric label color', () => {
373
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [2, 3]);
374
- });
375
- });
376
-
377
- [
378
- { data: dataWithNonnumericValues, valueType: 'non-numeric' },
379
- { data: dataWithZeroValues, valueType: 'zero' },
380
- {
381
- data: dataWithZeroAndNonnumericValues,
382
- valueType: 'non-numeric and zero',
383
- },
384
- ].forEach((item) => {
385
- describe(`for bar data that only has ${item.valueType} values`, () => {
386
- describe('when the domain maximum is greater than 0', () => {
387
- beforeEach(() => {
388
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
389
- .data(item.data)
390
- .vertical((bars) =>
391
- bars
392
- .x((dimension) => dimension.valueAccessor((d) => d.state))
393
- .y((dimension) =>
394
- dimension
395
- .valueAccessor((d) => d.value)
396
- .domain([0, 10])
397
- .domainPaddingPixels(-4)
398
- )
399
- )
400
- .color((dimension) =>
401
- dimension.valueAccessor(() => '').range(['#000080'])
402
- )
403
- .labels((labels) => labels.display(true).offset(labelOffset))
404
- .getConfig();
405
- mountVerticalBarsComponent(barsConfig);
406
- });
407
- it('offsets data label above scales.y(0)', () => {
408
- assertPositionOfTickForZeroAndDataLabel(
409
- 'y',
410
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
411
- distanceBetweenElementAndDataLabelIsOffset(
412
- tickPosition.top - labelPosition.bottom
413
- );
414
- }
415
- );
416
- });
417
- it('uses the default text color (black) for the data labels color', () => {
418
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb);
419
- });
420
- });
421
- describe('when the domain maximum is not greater than 0', () => {
422
- beforeEach(() => {
423
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
424
- .data(item.data)
425
- .vertical((bars) =>
426
- bars
427
- .x((dimension) => dimension.valueAccessor((d) => d.state))
428
- .y((dimension) =>
429
- dimension
430
- .valueAccessor((d) => d.value)
431
- .domain([-10, 0])
432
- .domainPaddingPixels(-4)
433
- )
434
- )
435
- .color((dimension) =>
436
- dimension.valueAccessor(() => '').range(['#000080'])
437
- )
438
- .labels((labels) => labels.display(true).offset(labelOffset))
439
- .getConfig();
440
- mountVerticalBarsComponent(barsConfig);
441
- });
442
- it('offsets data label below scales.y(0)', () => {
443
- assertPositionOfTickForZeroAndDataLabel(
444
- 'y',
445
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
446
- distanceBetweenElementAndDataLabelIsOffset(
447
- labelPosition.top - tickPosition.bottom
448
- );
449
- }
450
- );
451
- });
452
- it('uses the default text color (black) for the data labels color', () => {
453
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb);
454
- });
455
- });
456
- });
457
- });
458
- });
459
-
460
- // ***********************************************************
461
- // Horizontal bar chart component set up
462
- // ***********************************************************
463
- @Component({
464
- // eslint-disable-next-line @angular-eslint/component-selector
465
- selector: 'app-test-horizontal-bars-with-labels',
466
- template: `
467
- <vic-xy-chart [config]="chartConfig">
468
- <ng-container svg-elements>
469
- <svg:g
470
- vic-x-quantitative-axis
471
- [config]="xQuantitativeAxisConfig"
472
- ></svg:g>
473
- <svg:g vic-y-ordinal-axis [config]="yOrdinalAxisConfig"></svg:g>
474
- <svg:g vic-primary-marks-bars [config]="barsConfig"></svg:g>
475
- </ng-container>
476
- </vic-xy-chart>
477
- `,
478
- styles: [],
479
- imports: [VicChartModule, VicBarsModule, VicXyAxisModule],
480
- })
481
- class TestHorizontalBarsWithLabelsComponent {
482
- @Input() barsConfig: BarsConfig<Datum, string>;
483
- @Input() xQuantitativeAxisConfig: VicXQuantitativeAxisConfig<number>;
484
- @Input() yOrdinalAxisConfig: VicYOrdinalAxisConfig<string>;
485
- chartConfig: ChartConfig = new VicChartConfigBuilder()
486
- .maxHeight(200)
487
- .margin({ top: 20, right: 20, bottom: 20, left: 60 })
488
- .scalingStrategy('responsive-width')
489
- .getConfig();
490
- }
491
-
492
- const mountHorizontalBarsComponent = (
493
- barsConfig: BarsConfig<Datum, string>
494
- ): void => {
495
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder()
496
- .ticks((ticks) => ticks.format('.0f'))
497
- .getConfig();
498
- const yAxisConfig = new VicYOrdinalAxisConfigBuilder().getConfig();
499
-
500
- cy.mount(TestHorizontalBarsWithLabelsComponent, {
501
- componentProperties: {
502
- barsConfig: barsConfig,
503
- xQuantitativeAxisConfig: xAxisConfig,
504
- yOrdinalAxisConfig: yAxisConfig,
505
- },
506
- });
507
- };
508
-
509
- describe('it correctly positions the horizontal bar chart data labels', () => {
510
- let barsConfig: BarsConfig<Datum, string>;
511
- describe('for bar data that has positive, negative, zero, and non-numeric values', () => {
512
- beforeEach(() => {
513
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
514
- .data(dataWithAllValueTypes)
515
- .horizontal((bars) =>
516
- bars
517
- .x((dimension) => dimension.valueAccessor((d) => d.value))
518
- .y((dimension) => dimension.valueAccessor((d) => d.state))
519
- )
520
- .color((dimension) =>
521
- dimension.valueAccessor(() => '').range(['#000080'])
522
- )
523
- .labels((labels) => labels.display(true).offset(labelOffset))
524
- .getConfig();
525
- mountHorizontalBarsComponent(barsConfig);
526
- });
527
- it('centers all data labels with respect to their y-axis tick', () => {
528
- checkPositionBeforeAndAfterWindowResize(() =>
529
- cy.get('.vic-axis-y-ordinal .tick line').then((ticks) => {
530
- const reversedTicks = Array.from(ticks).reverse();
531
- reversedTicks.forEach((tick, i) => {
532
- cy.get(labelSelector)
533
- .eq(i)
534
- .then(($label) => {
535
- const labelPosition = $label[0].getBoundingClientRect();
536
- const tickPosition = tick.getBoundingClientRect();
537
- expect(
538
- labelPosition.height / 2 + labelPosition.top
539
- ).to.be.closeTo(
540
- tickPosition.height / 2 + tickPosition.top,
541
- elementPositionDelta
542
- );
543
- });
544
- });
545
- })
546
- );
547
- });
548
- describe('for values that result in insufficient space for the label between bar end and chart edge', () => {
549
- it('places data label for negative value completely inside the bar to the left', () => {
550
- assertPositionOfBarAndDataLabel(
551
- 0,
552
- (barPosition: DOMRect, labelPosition: DOMRect) => {
553
- expect(labelPosition.left).to.be.greaterThan(barPosition.left);
554
- expect(labelPosition.right).to.be.lessThan(barPosition.right);
555
- distanceBetweenElementAndDataLabelIsOffset(
556
- labelPosition.left - barPosition.left
557
- );
558
- }
559
- );
560
- });
561
- it('places data label for positive value completely inside the bar to the right', () => {
562
- assertPositionOfBarAndDataLabel(
563
- 2,
564
- (barPosition: DOMRect, labelPosition: DOMRect) => {
565
- expect(labelPosition.left).to.be.greaterThan(barPosition.left);
566
- expect(labelPosition.right).to.be.lessThan(barPosition.right);
567
- distanceBetweenElementAndDataLabelIsOffset(
568
- barPosition.right - labelPosition.right
569
- );
570
- }
571
- );
572
- });
573
- it('uses the alternative text color (white) for the data labels color', () => {
574
- barLabelColorMatchesExpectedRgb(alternativeTextColorRgb, [0, 2]);
575
- });
576
- });
577
-
578
- describe('for values that result in sufficient space for the label between bar end and chart edge', () => {
579
- it('places data label for negative value in between bar and the left chart edge', () => {
580
- assertPositionOfBarAndDataLabel(
581
- 1,
582
- (barPosition: DOMRect, labelPosition: DOMRect) => {
583
- expect(labelPosition.right).to.be.lessThan(barPosition.left);
584
- cy.get('.vic-axis-x-quantitative').then(($axis) => {
585
- const axisPosition = $axis[0].getBoundingClientRect();
586
- expect(labelPosition.left).to.be.greaterThan(axisPosition.left);
587
- });
588
- distanceBetweenElementAndDataLabelIsOffset(
589
- barPosition.left - labelPosition.right
590
- );
591
- }
592
- );
593
- });
594
- it('places data label for positive value in between bar and the right chart edge', () => {
595
- assertPositionOfBarAndDataLabel(
596
- 3,
597
- (barPosition: DOMRect, labelPosition: DOMRect) => {
598
- expect(labelPosition.left).to.be.greaterThan(barPosition.right);
599
- cy.get('.vic-axis-x-quantitative').then(($axis) => {
600
- const axisPosition = $axis[0].getBoundingClientRect();
601
- expect(labelPosition.right).to.be.lessThan(axisPosition.right);
602
- });
603
- distanceBetweenElementAndDataLabelIsOffset(
604
- labelPosition.left - barPosition.right
605
- );
606
- }
607
- );
608
- });
609
- it('uses the default text color (black) for the data labels color', () => {
610
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [1, 3]);
611
- });
612
- });
613
-
614
- describe('for zero or non-numeric values', () => {
615
- it('offsets data label to the right of scales.x(0)', () => {
616
- assertPositionOfTickForZeroAndDataLabel(
617
- 'x',
618
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
619
- distanceBetweenElementAndDataLabelIsOffset(
620
- labelPosition.left - tickPosition.right
621
- );
622
- },
623
- [4, 5]
624
- );
625
- });
626
- it('uses the default text color (black) for the data labels color', () => {
627
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [4]);
628
- });
629
- });
630
- });
631
-
632
- describe('for data that has negative, zero, and non-numeric values', () => {
633
- beforeEach(() => {
634
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
635
- .data(dataWithNegativeZeroAndNonnumericValues)
636
- .horizontal((bars) =>
637
- bars
638
- .x((dimension) =>
639
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(4)
640
- )
641
- .y((dimension) => dimension.valueAccessor((d) => d.state))
642
- )
643
- .color((dimension) =>
644
- dimension.valueAccessor(() => '').range(['#000080'])
645
- )
646
- .labels((labels) => labels.display(true).offset(labelOffset))
647
- .getConfig();
648
- mountHorizontalBarsComponent(barsConfig);
649
- });
650
- it('offsets data label for the non-numeric value to the left of scales.x(0)', () => {
651
- assertPositionOfTickForZeroAndDataLabel(
652
- 'x',
653
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
654
- distanceBetweenElementAndDataLabelIsOffset(
655
- tickPosition.left - labelPosition.right
656
- );
657
- },
658
- [2, 3]
659
- );
660
- });
661
- it('uses the default text color (black) for the zero and non-numeric labels color', () => {
662
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [2, 3]);
663
- });
664
- });
665
-
666
- describe('for bar data that has positive, zero, and non-numeric values', () => {
667
- beforeEach(() => {
668
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
669
- .data(dataWithPositiveZeroAndNonnumericValues)
670
- .horizontal((bars) =>
671
- bars
672
- .x((dimension) =>
673
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(4)
674
- )
675
- .y((dimension) => dimension.valueAccessor((d) => d.state))
676
- )
677
- .color((dimension) =>
678
- dimension.valueAccessor(() => '').range(['#000080'])
679
- )
680
- .labels((labels) => labels.display(true).offset(labelOffset))
681
- .getConfig();
682
- mountHorizontalBarsComponent(barsConfig);
683
- });
684
- it('offsets data label for the non-numeric value to the right of scales.x(0)', () => {
685
- assertPositionOfTickForZeroAndDataLabel(
686
- 'x',
687
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
688
- distanceBetweenElementAndDataLabelIsOffset(
689
- labelPosition.left - tickPosition.right
690
- );
691
- },
692
- [2, 3]
693
- );
694
- });
695
- it('uses the default text color (black) for the zero and non-numeric labels color', () => {
696
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb, [2, 3]);
697
- });
698
- });
699
-
700
- [
701
- { data: dataWithNonnumericValues, valueType: 'non-numeric' },
702
- { data: dataWithZeroValues, valueType: 'zero' },
703
- {
704
- data: dataWithZeroAndNonnumericValues,
705
- valueType: 'non-numeric and zero',
706
- },
707
- ].forEach((item) => {
708
- describe(`for bar data that only has ${item.valueType} values`, () => {
709
- describe('when the domain maximum value is positive', () => {
710
- beforeEach(() => {
711
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
712
- .data(item.data)
713
- .horizontal((bars) =>
714
- bars
715
- .x((dimension) =>
716
- dimension
717
- .valueAccessor((d) => d.value)
718
- .domain([-10, 10])
719
- .domainPaddingPixels(4)
720
- )
721
- .y((dimension) => dimension.valueAccessor((d) => d.state))
722
- )
723
- .color((dimension) =>
724
- dimension.valueAccessor(() => '').range(['#000080'])
725
- )
726
- .labels((labels) => labels.display(true).offset(labelOffset))
727
- .getConfig();
728
- mountHorizontalBarsComponent(barsConfig);
729
- });
730
- it('offsets data label to the right of scales.x(0)', () => {
731
- assertPositionOfTickForZeroAndDataLabel(
732
- 'x',
733
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
734
- distanceBetweenElementAndDataLabelIsOffset(
735
- labelPosition.left - tickPosition.right
736
- );
737
- }
738
- );
739
- });
740
- it('uses the default text color (black) for the data labels color', () => {
741
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb);
742
- });
743
- });
744
- describe('when the domain maximum value is not greater than 0', () => {
745
- beforeEach(() => {
746
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
747
- .data(item.data)
748
- .horizontal((bars) =>
749
- bars
750
- .x((dimension) =>
751
- dimension
752
- .valueAccessor((d) => d.value)
753
- .domain([-10, 0])
754
- .domainPaddingPixels(4)
755
- )
756
- .y((dimension) => dimension.valueAccessor((d) => d.state))
757
- )
758
- .color((dimension) =>
759
- dimension.valueAccessor(() => '').range(['#000080'])
760
- )
761
- .labels((labels) => labels.display(true).offset(labelOffset))
762
- .getConfig();
763
- mountHorizontalBarsComponent(barsConfig);
764
- });
765
- it('offsets data label to the left of scales.x(0)', () => {
766
- assertPositionOfTickForZeroAndDataLabel(
767
- 'x',
768
- (tickPosition: DOMRect, labelPosition: DOMRect) => {
769
- distanceBetweenElementAndDataLabelIsOffset(
770
- tickPosition.left - labelPosition.right
771
- );
772
- }
773
- );
774
- });
775
- it('uses the default text color (black) for the data labels color', () => {
776
- barLabelColorMatchesExpectedRgb(defaultTextColorRgb);
777
- });
778
- });
779
- });
780
- });
781
- });