@mathstack/viz 2.1.0 → 2.2.1

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 (450) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +11 -11
  3. package/fesm2022/mathstack-viz.mjs +11024 -0
  4. package/fesm2022/mathstack-viz.mjs.map +1 -0
  5. package/package.json +18 -6
  6. package/types/mathstack-viz.d.ts +5830 -0
  7. package/CHANGELOG.md +0 -0
  8. package/cypress/fixtures/example.json +0 -5
  9. package/cypress/fixtures/usMap.json +0 -13511
  10. package/cypress/support/commands.ts +0 -104
  11. package/cypress/support/component-index.html +0 -12
  12. package/cypress/support/component.ts +0 -33
  13. package/cypress.config.ts +0 -9
  14. package/karma.conf.js +0 -62
  15. package/ng-package.json +0 -8
  16. package/project.json +0 -97
  17. package/src/.eslintrc.json +0 -35
  18. package/src/.prettierrc +0 -31
  19. package/src/lib/axes/base/config/xy-axis-builder.ts +0 -68
  20. package/src/lib/axes/base/config/xy-axis-config.ts +0 -35
  21. package/src/lib/axes/base/config/xy-axis-options.ts +0 -11
  22. package/src/lib/axes/base/xy-axis-base.spec.ts +0 -114
  23. package/src/lib/axes/base/xy-axis-base.ts +0 -305
  24. package/src/lib/axes/base/xy-axis-domain-lines.cy.ts +0 -511
  25. package/src/lib/axes/baseline/axis-baseline-builder.ts +0 -77
  26. package/src/lib/axes/baseline/axis-baseline-options.ts +0 -4
  27. package/src/lib/axes/baseline/axis-baseline.ts +0 -11
  28. package/src/lib/axes/grid/grid-builder.ts +0 -74
  29. package/src/lib/axes/grid/grid-config.ts +0 -13
  30. package/src/lib/axes/grid/grid-options.ts +0 -7
  31. package/src/lib/axes/index.ts +0 -40
  32. package/src/lib/axes/label/axis-label-builder.ts +0 -140
  33. package/src/lib/axes/label/axis-label-options.ts +0 -12
  34. package/src/lib/axes/label/axis-label.ts +0 -18
  35. package/src/lib/axes/label/axis-labels.cy.ts +0 -303
  36. package/src/lib/axes/ordinal/ordinal-axis-config.ts +0 -31
  37. package/src/lib/axes/ordinal/ordinal-axis.spec.ts +0 -30
  38. package/src/lib/axes/ordinal/ordinal-axis.ts +0 -26
  39. package/src/lib/axes/quantitative/quantitative-axis-config.ts +0 -39
  40. package/src/lib/axes/quantitative/quantitative-axis-ticks.cy.ts +0 -748
  41. package/src/lib/axes/quantitative/quantitative-axis.spec.ts +0 -537
  42. package/src/lib/axes/quantitative/quantitative-axis.ts +0 -191
  43. package/src/lib/axes/ticks/tick-wrap/tick-wrap-builder.ts +0 -141
  44. package/src/lib/axes/ticks/tick-wrap/tick-wrap-options.ts +0 -11
  45. package/src/lib/axes/ticks/tick-wrap/tick-wrap.cy.ts +0 -360
  46. package/src/lib/axes/ticks/tick-wrap/tick-wrap.ts +0 -21
  47. package/src/lib/axes/ticks/ticks-builder.ts +0 -370
  48. package/src/lib/axes/ticks/ticks-options.ts +0 -24
  49. package/src/lib/axes/ticks/ticks.ts +0 -33
  50. package/src/lib/axes/x/x-axis-config.ts +0 -48
  51. package/src/lib/axes/x/x-axis.spec.ts +0 -90
  52. package/src/lib/axes/x/x-axis.ts +0 -109
  53. package/src/lib/axes/x-ordinal/x-ordinal-axis-builder.ts +0 -75
  54. package/src/lib/axes/x-ordinal/x-ordinal-axis-config.ts +0 -27
  55. package/src/lib/axes/x-ordinal/x-ordinal-axis.component.ts +0 -33
  56. package/src/lib/axes/x-quantitative/x-quantitative-axis-builder.ts +0 -74
  57. package/src/lib/axes/x-quantitative/x-quantitative-axis-config.ts +0 -32
  58. package/src/lib/axes/x-quantitative/x-quantitative-axis.component.ts +0 -40
  59. package/src/lib/axes/xy-axis.module.ts +0 -20
  60. package/src/lib/axes/y/y-axis-config.ts +0 -47
  61. package/src/lib/axes/y/y-axis.spec.ts +0 -92
  62. package/src/lib/axes/y/y-axis.ts +0 -161
  63. package/src/lib/axes/y-ordinal/y-ordinal-axis-builder.ts +0 -76
  64. package/src/lib/axes/y-ordinal/y-ordinal-axis-config.ts +0 -29
  65. package/src/lib/axes/y-ordinal/y-ordinal-axis.component.ts +0 -33
  66. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-builder.ts +0 -74
  67. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-config.ts +0 -34
  68. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis.component.ts +0 -40
  69. package/src/lib/bars/bars.component.scss +0 -0
  70. package/src/lib/bars/bars.component.spec.ts +0 -1470
  71. package/src/lib/bars/bars.component.ts +0 -717
  72. package/src/lib/bars/bars.cy.ts +0 -829
  73. package/src/lib/bars/bars.module.ts +0 -9
  74. package/src/lib/bars/config/backgrounds/bars-backgrounds-builder.ts +0 -51
  75. package/src/lib/bars/config/backgrounds/bars-backgrounds-options.ts +0 -4
  76. package/src/lib/bars/config/backgrounds/bars-backgrounds.ts +0 -11
  77. package/src/lib/bars/config/bars-builder.ts +0 -340
  78. package/src/lib/bars/config/bars-config.spec.ts +0 -132
  79. package/src/lib/bars/config/bars-config.ts +0 -70
  80. package/src/lib/bars/config/bars-dimensions.ts +0 -29
  81. package/src/lib/bars/config/bars-options.ts +0 -20
  82. package/src/lib/bars/config/labels/bars-labels-builder.ts +0 -89
  83. package/src/lib/bars/config/labels/bars-labels-options.ts +0 -6
  84. package/src/lib/bars/config/labels/bars-labels.cy.ts +0 -781
  85. package/src/lib/bars/config/labels/bars-labels.ts +0 -13
  86. package/src/lib/bars/events/actions/bars-click-actions.ts +0 -23
  87. package/src/lib/bars/events/actions/bars-hover-actions.ts +0 -43
  88. package/src/lib/bars/events/actions/bars-hover-move-actions.ts +0 -21
  89. package/src/lib/bars/events/bars-events.directive.spec.ts +0 -186
  90. package/src/lib/bars/events/bars-events.directive.ts +0 -235
  91. package/src/lib/bars/events/bars-interaction-output.ts +0 -17
  92. package/src/lib/bars/events/bars-tooltip-positioner.ts +0 -24
  93. package/src/lib/bars/index.ts +0 -18
  94. package/src/lib/charts/chart/chart-scaling.cy.ts +0 -323
  95. package/src/lib/charts/chart/chart.component.html +0 -45
  96. package/src/lib/charts/chart/chart.component.scss +0 -37
  97. package/src/lib/charts/chart/chart.component.ts +0 -243
  98. package/src/lib/charts/chart/chart.token.ts +0 -4
  99. package/src/lib/charts/chart/chart.ts +0 -5
  100. package/src/lib/charts/chart/config/chart-builder.ts +0 -194
  101. package/src/lib/charts/chart/config/chart-config.ts +0 -21
  102. package/src/lib/charts/chart/config/chart-options.ts +0 -11
  103. package/src/lib/charts/chart.module.ts +0 -10
  104. package/src/lib/charts/index.ts +0 -9
  105. package/src/lib/charts/map-chart/map-chart.component.scss +0 -0
  106. package/src/lib/charts/map-chart/map-chart.component.spec.ts +0 -35
  107. package/src/lib/charts/map-chart/map-chart.component.ts +0 -61
  108. package/src/lib/charts/xy-chart/xy-chart.component.spec.ts +0 -34
  109. package/src/lib/charts/xy-chart/xy-chart.component.ts +0 -65
  110. package/src/lib/core/common-behaviors/constructor.ts +0 -7
  111. package/src/lib/core/index.ts +0 -11
  112. package/src/lib/core/pipes/resize-chart-height.pipe.spec.ts +0 -23
  113. package/src/lib/core/pipes/resize-chart-height.pipe.ts +0 -20
  114. package/src/lib/core/styles/_spacing.scss +0 -4
  115. package/src/lib/core/types/layout.ts +0 -28
  116. package/src/lib/core/types/scale.ts +0 -6
  117. package/src/lib/core/types/utility.ts +0 -11
  118. package/src/lib/core/types/values.ts +0 -10
  119. package/src/lib/core/utilities/colors.spec.ts +0 -57
  120. package/src/lib/core/utilities/colors.ts +0 -42
  121. package/src/lib/core/utilities/fill-utilities.spec.ts +0 -25
  122. package/src/lib/core/utilities/fill-utilities.ts +0 -21
  123. package/src/lib/core/utilities/type-guards.spec.ts +0 -55
  124. package/src/lib/core/utilities/type-guards.ts +0 -33
  125. package/src/lib/core/utilities/value-format.ts +0 -21
  126. package/src/lib/core/utilities/values.spec.ts +0 -954
  127. package/src/lib/core/utilities/values.ts +0 -189
  128. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-builder.ts +0 -105
  129. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-options.ts +0 -24
  130. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.spec.ts +0 -66
  131. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.ts +0 -72
  132. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/concrete-domain-padding.ts +0 -10
  133. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-padding.ts +0 -76
  134. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-test-utility.ts +0 -130
  135. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over-options.ts +0 -3
  136. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over.ts +0 -37
  137. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel-options.ts +0 -3
  138. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel.ts +0 -73
  139. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/quantitative-domain-padding.cy.ts +0 -978
  140. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval-options.ts +0 -3
  141. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval.ts +0 -27
  142. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig-options.ts +0 -3
  143. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig.ts +0 -30
  144. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-builder.ts +0 -183
  145. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-options.ts +0 -8
  146. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.spec.ts +0 -28
  147. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.ts +0 -62
  148. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension-options.ts +0 -15
  149. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.spec.ts +0 -155
  150. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.ts +0 -57
  151. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-builder.ts +0 -166
  152. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-options.ts +0 -10
  153. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.spec.ts +0 -34
  154. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.ts +0 -57
  155. package/src/lib/data-dimensions/dimension-builder.ts +0 -45
  156. package/src/lib/data-dimensions/dimension-options.ts +0 -12
  157. package/src/lib/data-dimensions/dimension.ts +0 -30
  158. package/src/lib/data-dimensions/index.ts +0 -31
  159. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-builder.ts +0 -122
  160. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-options.ts +0 -12
  161. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.spec.ts +0 -83
  162. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.ts +0 -101
  163. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-builder.ts +0 -108
  164. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-options.ts +0 -12
  165. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.cy.ts +0 -384
  166. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.spec.ts +0 -63
  167. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.ts +0 -79
  168. package/src/lib/data-export/data-export-config.ts +0 -98
  169. package/src/lib/data-export/data-export.spec.ts +0 -33
  170. package/src/lib/data-export/data-export.ts +0 -87
  171. package/src/lib/data-export/index.ts +0 -2
  172. package/src/lib/dots/config/dots-builder.ts +0 -442
  173. package/src/lib/dots/config/dots-config.spec.ts +0 -123
  174. package/src/lib/dots/config/dots-config.ts +0 -81
  175. package/src/lib/dots/config/dots-options.ts +0 -32
  176. package/src/lib/dots/dots.component.scss +0 -0
  177. package/src/lib/dots/dots.component.spec.ts +0 -143
  178. package/src/lib/dots/dots.component.ts +0 -291
  179. package/src/lib/dots/dots.cy.ts +0 -594
  180. package/src/lib/dots/dots.module.ts +0 -9
  181. package/src/lib/dots/events/actions/dots-hover-actions.ts +0 -19
  182. package/src/lib/dots/events/actions/dots-hover-move-actions.ts +0 -38
  183. package/src/lib/dots/events/dots-events.directive.ts +0 -214
  184. package/src/lib/dots/events/dots-interaction-output.ts +0 -15
  185. package/src/lib/dots/events/dots-tooltip-positioner.ts +0 -24
  186. package/src/lib/dots/index.ts +0 -10
  187. package/src/lib/events/events.directive.ts +0 -184
  188. package/src/lib/events/events.types.ts +0 -57
  189. package/src/lib/events/index.ts +0 -4
  190. package/src/lib/events/interaction-output.ts +0 -34
  191. package/src/lib/events/tooltip-positioner.ts +0 -15
  192. package/src/lib/fill-definitions/fill-definitions.ts +0 -4
  193. package/src/lib/fill-definitions/index.ts +0 -1
  194. package/src/lib/geographies/config/geographies-builder.ts +0 -224
  195. package/src/lib/geographies/config/geographies-config.spec.ts +0 -100
  196. package/src/lib/geographies/config/geographies-config.ts +0 -81
  197. package/src/lib/geographies/config/geographies-options.ts +0 -37
  198. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-builder.ts +0 -212
  199. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-options.ts +0 -26
  200. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.spec.ts +0 -119
  201. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.ts +0 -148
  202. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-builder.ts +0 -65
  203. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-options.ts +0 -15
  204. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension.ts +0 -32
  205. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-enums.ts +0 -10
  206. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-types.ts +0 -15
  207. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-builder.ts +0 -18
  208. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-options.ts +0 -8
  209. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.spec.ts +0 -60
  210. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.ts +0 -34
  211. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-builder.ts +0 -46
  212. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-options.ts +0 -8
  213. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.cy.ts +0 -437
  214. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.spec.ts +0 -105
  215. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.ts +0 -54
  216. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-builder.ts +0 -65
  217. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-options.ts +0 -9
  218. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.spec.ts +0 -82
  219. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.ts +0 -81
  220. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks.cy.ts +0 -378
  221. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-builder.ts +0 -50
  222. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-options.ts +0 -8
  223. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.cy.ts +0 -362
  224. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.spec.ts +0 -72
  225. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.ts +0 -56
  226. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-builder.ts +0 -60
  227. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-options.ts +0 -9
  228. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.cy.ts +0 -307
  229. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.spec.ts +0 -104
  230. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.ts +0 -89
  231. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-builder.ts +0 -62
  232. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-options.ts +0 -8
  233. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.cy.ts +0 -265
  234. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.spec.ts +0 -42
  235. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.ts +0 -42
  236. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-builder.ts +0 -116
  237. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-options.ts +0 -20
  238. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer.ts +0 -104
  239. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-builder.ts +0 -111
  240. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-options.ts +0 -19
  241. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.spec.ts +0 -41
  242. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.ts +0 -67
  243. package/src/lib/geographies/config/layers/labels/geographies-labels-builder.ts +0 -269
  244. package/src/lib/geographies/config/layers/labels/geographies-labels-options.ts +0 -45
  245. package/src/lib/geographies/config/layers/labels/geographies-labels.ts +0 -38
  246. package/src/lib/geographies/events/actions/geographies-click-actions.ts +0 -21
  247. package/src/lib/geographies/events/actions/geographies-hover-actions.ts +0 -17
  248. package/src/lib/geographies/events/actions/geographies-hover-move-actions.ts +0 -19
  249. package/src/lib/geographies/events/geographies-events.directive.spec.ts +0 -225
  250. package/src/lib/geographies/events/geographies-events.directive.ts +0 -235
  251. package/src/lib/geographies/events/geographies-interaction-output.ts +0 -17
  252. package/src/lib/geographies/events/geographies-tooltip-positioner.ts +0 -23
  253. package/src/lib/geographies/geographies-feature.ts +0 -16
  254. package/src/lib/geographies/geographies.component.html +0 -1
  255. package/src/lib/geographies/geographies.component.scss +0 -0
  256. package/src/lib/geographies/geographies.component.spec.ts +0 -148
  257. package/src/lib/geographies/geographies.component.ts +0 -318
  258. package/src/lib/geographies/geographies.cy.ts +0 -640
  259. package/src/lib/geographies/geographies.module.ts +0 -9
  260. package/src/lib/geographies/index.ts +0 -32
  261. package/src/lib/grouped-bars/config/grouped-bars-builder.ts +0 -66
  262. package/src/lib/grouped-bars/config/grouped-bars-config.ts +0 -41
  263. package/src/lib/grouped-bars/config/grouped-bars-options.ts +0 -9
  264. package/src/lib/grouped-bars/events/grouped-bars-events.directive.ts +0 -221
  265. package/src/lib/grouped-bars/grouped-bars.component.scss +0 -0
  266. package/src/lib/grouped-bars/grouped-bars.component.spec.ts +0 -25
  267. package/src/lib/grouped-bars/grouped-bars.component.ts +0 -94
  268. package/src/lib/grouped-bars/grouped-bars.module.ts +0 -9
  269. package/src/lib/grouped-bars/index.ts +0 -10
  270. package/src/lib/image-download/image-download-config.ts +0 -57
  271. package/src/lib/image-download/image-download-enums.ts +0 -7
  272. package/src/lib/image-download/image-download-options.ts +0 -14
  273. package/src/lib/image-download/image-download.service.ts +0 -70
  274. package/src/lib/image-download/index.ts +0 -4
  275. package/src/lib/lines/config/area-fills/area-fills-builder.ts +0 -87
  276. package/src/lib/lines/config/area-fills/area-fills-options.ts +0 -8
  277. package/src/lib/lines/config/area-fills/area-fills.ts +0 -14
  278. package/src/lib/lines/config/lines-builder.ts +0 -242
  279. package/src/lib/lines/config/lines-config.spec.ts +0 -52
  280. package/src/lib/lines/config/lines-config.ts +0 -96
  281. package/src/lib/lines/config/lines-options.ts +0 -19
  282. package/src/lib/lines/config/stroke/lines-stroke-builder.ts +0 -135
  283. package/src/lib/lines/config/stroke/lines-stroke-options.ts +0 -6
  284. package/src/lib/lines/config/stroke/lines-stroke.ts +0 -15
  285. package/src/lib/lines/events/actions/lines-click-actions.ts +0 -17
  286. package/src/lib/lines/events/actions/lines-hover-move-actions.ts +0 -113
  287. package/src/lib/lines/events/actions/lines-marker-click-actions.ts +0 -29
  288. package/src/lib/lines/events/lines-events.directive.spec.ts +0 -152
  289. package/src/lib/lines/events/lines-events.directive.ts +0 -310
  290. package/src/lib/lines/events/lines-interaction-output.ts +0 -17
  291. package/src/lib/lines/events/lines-tooltip-positioner.ts +0 -24
  292. package/src/lib/lines/index.ts +0 -17
  293. package/src/lib/lines/lines.component.scss +0 -0
  294. package/src/lib/lines/lines.component.spec.ts +0 -95
  295. package/src/lib/lines/lines.component.ts +0 -425
  296. package/src/lib/lines/lines.cy.ts +0 -738
  297. package/src/lib/lines/lines.module.ts +0 -9
  298. package/src/lib/map-legend/continuous-legend/continuous-legend.component.html +0 -28
  299. package/src/lib/map-legend/continuous-legend/continuous-legend.component.scss +0 -76
  300. package/src/lib/map-legend/continuous-legend/continuous-legend.component.spec.ts +0 -61
  301. package/src/lib/map-legend/continuous-legend/continuous-legend.component.ts +0 -82
  302. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.html +0 -40
  303. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.scss +0 -141
  304. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.spec.ts +0 -75
  305. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.ts +0 -57
  306. package/src/lib/map-legend/index.ts +0 -2
  307. package/src/lib/map-legend/map-legend-base.spec.ts +0 -190
  308. package/src/lib/map-legend/map-legend-base.ts +0 -99
  309. package/src/lib/map-legend/map-legend.component.html +0 -24
  310. package/src/lib/map-legend/map-legend.component.scss +0 -0
  311. package/src/lib/map-legend/map-legend.component.spec.ts +0 -125
  312. package/src/lib/map-legend/map-legend.component.ts +0 -80
  313. package/src/lib/map-legend/map-legend.module.ts +0 -8
  314. package/src/lib/marks/aux-marks/aux-marks.ts +0 -18
  315. package/src/lib/marks/aux-marks/config/aux-marks-builder.ts +0 -25
  316. package/src/lib/marks/aux-marks/config/aux-marks-config.ts +0 -6
  317. package/src/lib/marks/config/marks-config.ts +0 -14
  318. package/src/lib/marks/config/marks-options.ts +0 -9
  319. package/src/lib/marks/index.ts +0 -15
  320. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.spec.ts +0 -74
  321. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.ts +0 -40
  322. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.spec.ts +0 -79
  323. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.ts +0 -63
  324. package/src/lib/marks/marks.ts +0 -39
  325. package/src/lib/marks/primary-marks/config/primary-marks-builder.ts +0 -75
  326. package/src/lib/marks/primary-marks/config/primary-marks-config.ts +0 -9
  327. package/src/lib/marks/primary-marks/primary-marks-base.spec.ts +0 -58
  328. package/src/lib/marks/primary-marks/primary-marks.ts +0 -43
  329. package/src/lib/marks/xy-marks/xy-aux-marks/xy-aux-marks.ts +0 -40
  330. package/src/lib/marks/xy-marks/xy-marks-config.ts +0 -5
  331. package/src/lib/marks/xy-marks/xy-marks.ts +0 -10
  332. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks-config.ts +0 -7
  333. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.spec.ts +0 -186
  334. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.ts +0 -72
  335. package/src/lib/point-markers/index.ts +0 -3
  336. package/src/lib/point-markers/point-markers-builder.ts +0 -93
  337. package/src/lib/point-markers/point-markers-options.ts +0 -6
  338. package/src/lib/point-markers/point-markers.ts +0 -13
  339. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-builder.ts +0 -162
  340. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-options.ts +0 -17
  341. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels.ts +0 -26
  342. package/src/lib/quantitative-rules/config/quantitative-rules-builder.ts +0 -134
  343. package/src/lib/quantitative-rules/config/quantitative-rules-config.ts +0 -21
  344. package/src/lib/quantitative-rules/config/quantitative-rules-dimensions.ts +0 -20
  345. package/src/lib/quantitative-rules/config/quantitative-rules-options.ts +0 -13
  346. package/src/lib/quantitative-rules/index.ts +0 -6
  347. package/src/lib/quantitative-rules/quantitative-rules.component.scss +0 -3
  348. package/src/lib/quantitative-rules/quantitative-rules.component.spec.ts +0 -50
  349. package/src/lib/quantitative-rules/quantitative-rules.component.ts +0 -224
  350. package/src/lib/quantitative-rules/quantitative-rules.cy.ts +0 -549
  351. package/src/lib/quantitative-rules/quantitative-rules.module.ts +0 -8
  352. package/src/lib/stacked-area/config/stacked-area-builder.ts +0 -264
  353. package/src/lib/stacked-area/config/stacked-area-config.spec.ts +0 -107
  354. package/src/lib/stacked-area/config/stacked-area-config.ts +0 -109
  355. package/src/lib/stacked-area/config/stacked-area-options.ts +0 -28
  356. package/src/lib/stacked-area/events/actions/stacked-area-hover-move-actions.ts +0 -17
  357. package/src/lib/stacked-area/events/stacked-area-events.directive.spec.ts +0 -168
  358. package/src/lib/stacked-area/events/stacked-area-events.directive.ts +0 -272
  359. package/src/lib/stacked-area/events/stacked-area-interaction-output.ts +0 -33
  360. package/src/lib/stacked-area/events/stacked-area-tooltip-positioner.ts +0 -37
  361. package/src/lib/stacked-area/index.ts +0 -7
  362. package/src/lib/stacked-area/stacked-area.component.scss +0 -0
  363. package/src/lib/stacked-area/stacked-area.component.spec.ts +0 -41
  364. package/src/lib/stacked-area/stacked-area.component.ts +0 -241
  365. package/src/lib/stacked-area/stacked-area.module.ts +0 -9
  366. package/src/lib/stacked-bars/config/stacked-bars-builder.ts +0 -109
  367. package/src/lib/stacked-bars/config/stacked-bars-config.spec.ts +0 -122
  368. package/src/lib/stacked-bars/config/stacked-bars-config.ts +0 -79
  369. package/src/lib/stacked-bars/config/stacked-bars-options.ts +0 -16
  370. package/src/lib/stacked-bars/events/actions/stacked-bars-click-actions.ts +0 -23
  371. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-actions.ts +0 -22
  372. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-move-actions.ts +0 -21
  373. package/src/lib/stacked-bars/events/stacked-bars-events.directive.spec.ts +0 -266
  374. package/src/lib/stacked-bars/events/stacked-bars-events.directive.ts +0 -240
  375. package/src/lib/stacked-bars/index.ts +0 -10
  376. package/src/lib/stacked-bars/stacked-bars.component.scss +0 -0
  377. package/src/lib/stacked-bars/stacked-bars.component.spec.ts +0 -25
  378. package/src/lib/stacked-bars/stacked-bars.component.ts +0 -158
  379. package/src/lib/stacked-bars/stacked-bars.module.ts +0 -9
  380. package/src/lib/stroke/base/stroke-base-options.ts +0 -7
  381. package/src/lib/stroke/base/stroke-base.ts +0 -9
  382. package/src/lib/stroke/index.ts +0 -5
  383. package/src/lib/stroke/stroke-builder.ts +0 -103
  384. package/src/lib/stroke/stroke-options.ts +0 -5
  385. package/src/lib/stroke/stroke.ts +0 -12
  386. package/src/lib/svg-text-wrap/index.ts +0 -3
  387. package/src/lib/svg-text-wrap/svg-text-wrap-builder.ts +0 -105
  388. package/src/lib/svg-text-wrap/svg-text-wrap-options.ts +0 -8
  389. package/src/lib/svg-text-wrap/svg-text-wrap.ts +0 -137
  390. package/src/lib/testing/data/continent-population-year-data.ts +0 -126
  391. package/src/lib/testing/data/country-area-continent.ts +0 -59
  392. package/src/lib/testing/data/state-population-income-year-data.ts +0 -123
  393. package/src/lib/testing/stubs/bars.component.stub.ts +0 -12
  394. package/src/lib/testing/stubs/chart.component.stub.ts +0 -6
  395. package/src/lib/testing/stubs/click.directive.stub.ts +0 -15
  396. package/src/lib/testing/stubs/core/destroy-ref.stub.ts +0 -9
  397. package/src/lib/testing/stubs/core/overlay-ref.stub.ts +0 -13
  398. package/src/lib/testing/stubs/core/overlay.stub.ts +0 -8
  399. package/src/lib/testing/stubs/event.directive.stub.ts +0 -10
  400. package/src/lib/testing/stubs/hover-move.directive.stub.ts +0 -17
  401. package/src/lib/testing/stubs/hover.directive.stub.ts +0 -14
  402. package/src/lib/testing/stubs/input-event.directive.stub.ts +0 -9
  403. package/src/lib/testing/stubs/lines.component.stub.ts +0 -13
  404. package/src/lib/testing/stubs/map-aux-marks.stub.ts +0 -10
  405. package/src/lib/testing/stubs/map-chart.component.stub.ts +0 -3
  406. package/src/lib/testing/stubs/map-legend-content.stub.ts +0 -16
  407. package/src/lib/testing/stubs/map-legend.component.stub.ts +0 -10
  408. package/src/lib/testing/stubs/map-primary-marks.stub.ts +0 -16
  409. package/src/lib/testing/stubs/ordinal-axis.stub.ts +0 -18
  410. package/src/lib/testing/stubs/primary-marks.stub.ts +0 -18
  411. package/src/lib/testing/stubs/quantitative-axis.stub.ts +0 -18
  412. package/src/lib/testing/stubs/services/main.service.stub.ts +0 -5
  413. package/src/lib/testing/stubs/services/utilities.service.stub.ts +0 -7
  414. package/src/lib/testing/stubs/stacked-area.component.stub.ts +0 -13
  415. package/src/lib/testing/stubs/x-axis.stub.ts +0 -10
  416. package/src/lib/testing/stubs/xy-axis.class.stub.ts +0 -20
  417. package/src/lib/testing/stubs/xy-axis.stub.ts +0 -44
  418. package/src/lib/testing/stubs/xy-chart.component.stub.ts +0 -5
  419. package/src/lib/testing/stubs/xy-data-marks.stub.ts +0 -15
  420. package/src/lib/testing/stubs/y-axis.stub.ts +0 -15
  421. package/src/lib/tooltips/config/tooltip.ts +0 -11
  422. package/src/lib/tooltips/html-tooltip/config/html-tooltip-builder.ts +0 -134
  423. package/src/lib/tooltips/html-tooltip/config/html-tooltip-config.ts +0 -21
  424. package/src/lib/tooltips/html-tooltip/config/html-tooltip-options.ts +0 -12
  425. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position-builder.ts +0 -191
  426. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position.ts +0 -42
  427. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-builder.ts +0 -75
  428. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-options.ts +0 -8
  429. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size.ts +0 -15
  430. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.spec.ts +0 -537
  431. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.ts +0 -210
  432. package/src/lib/tooltips/html-tooltip/html-tooltip.module.ts +0 -16
  433. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.html +0 -41
  434. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.scss +0 -63
  435. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.ts +0 -19
  436. package/src/lib/tooltips/index.ts +0 -11
  437. package/src/lib/tooltips/svg-tooltip/config/svg-tooltip.ts +0 -5
  438. package/src/lib/xy-background/index.ts +0 -2
  439. package/src/lib/xy-background/xy-background.component.html +0 -10
  440. package/src/lib/xy-background/xy-background.component.scss +0 -0
  441. package/src/lib/xy-background/xy-background.component.spec.ts +0 -24
  442. package/src/lib/xy-background/xy-background.component.ts +0 -19
  443. package/src/lib/xy-background/xy-background.module.ts +0 -8
  444. package/src/public-api.ts +0 -26
  445. package/src/test.ts +0 -15
  446. package/tsconfig.doc.json +0 -4
  447. package/tsconfig.json +0 -20
  448. package/tsconfig.lib.json +0 -23
  449. package/tsconfig.lib.prod.json +0 -10
  450. 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
- });