@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,82 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { CustomBreaksBinsAttributeDataDimension } from './custom-breaks-bins';
3
- import { CustomBreaksBinsAttributeDataDimensionBuilder } from './custom-breaks-bins-builder';
4
-
5
- describe('VicCustomBreaksAttributeDataDimension', () => {
6
- let dimension: CustomBreaksBinsAttributeDataDimension<any>;
7
- beforeEach(() => {
8
- dimension = new CustomBreaksBinsAttributeDataDimensionBuilder<any>()
9
- .breakValues([0, 2, 5, 10, 50])
10
- .range(['red', 'blue', 'yellow', 'green'])
11
- .valueAccessor((d) => d)
12
- ._build();
13
- });
14
-
15
- describe('setPropertiesFromData', () => {
16
- beforeEach(() => {
17
- spyOn(dimension as any, 'setDomain');
18
- spyOn(dimension as any, 'setNumBins');
19
- spyOn(dimension as any, 'setRange');
20
- });
21
- it('calls setDomainAndBins once', () => {
22
- dimension.setPropertiesFromData();
23
- expect((dimension as any).setDomain).toHaveBeenCalledTimes(1);
24
- });
25
- it('calls setBins once', () => {
26
- dimension.setPropertiesFromData();
27
- expect((dimension as any).setNumBins).toHaveBeenCalledTimes(1);
28
- });
29
- it('calls setRange once', () => {
30
- dimension.setPropertiesFromData();
31
- expect((dimension as any).setRange).toHaveBeenCalledTimes(1);
32
- });
33
- });
34
-
35
- describe('setDomain', () => {
36
- beforeEach(() => {
37
- (dimension as any).breakValues = [0, 2, 5, 10, 50];
38
- (dimension as any).setDomain();
39
- });
40
- it('sets the domain to the correct value', () => {
41
- expect((dimension as any).calculatedDomain).toEqual([2, 5, 10, 50]);
42
- });
43
- });
44
-
45
- describe('setNumBins', () => {
46
- it('sets the numBins to the correct value', () => {
47
- (dimension as any).breakValues = [0, 2, 5, 10, 50];
48
- (dimension as any).setNumBins();
49
- expect((dimension as any).calculatedNumBins).toEqual(4);
50
- });
51
- });
52
-
53
- describe('integration: the scale generates the expected color for a value with the default scale (D3 scaleThreshold)', () => {
54
- type IceCream = { price: number; flavor: string; state: string };
55
- let dimension: CustomBreaksBinsAttributeDataDimension<IceCream>;
56
- const data: IceCream[] = [
57
- { price: 7.99, flavor: 'chocolate', state: 'AL' },
58
- { price: 5, flavor: 'chocolate', state: 'AK' },
59
- { price: 3.98, flavor: 'chocolate', state: 'AR' },
60
- { price: 8, flavor: 'vanilla', state: 'AZ' },
61
- { price: 11, flavor: 'vanilla', state: 'CA' },
62
- { price: 4.99, flavor: 'strawberry', state: 'CO' },
63
- { price: 4.5, flavor: 'strawberry', state: 'CT' },
64
- { price: 7, flavor: 'strawberry', state: 'DE' },
65
- ];
66
- it('using custom break values and one color per bin provided as range', () => {
67
- dimension = new CustomBreaksBinsAttributeDataDimensionBuilder<IceCream>()
68
- .valueAccessor((d) => d.price)
69
- .breakValues([2.5, 5, 7.5, 10, 12.5])
70
- .range(['red', 'blue', 'yellow', 'green'])
71
- .nullColor('black')
72
- ._build();
73
- dimension.setPropertiesFromData();
74
- const scale = dimension.getScale();
75
- expect(scale(data[0].price)).toEqual('yellow');
76
- expect(scale(data[1].price)).toEqual('blue');
77
- expect(scale(data[2].price)).toEqual('red');
78
- expect(scale(data[3].price)).toEqual('yellow');
79
- expect(scale(data[4].price)).toEqual('green');
80
- });
81
- });
82
- });
@@ -1,81 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { range, scaleLinear } from 'd3';
3
- import { BinStrategy } from '../attribute-data-bin-enums';
4
- import { AttributeDataDimension } from '../attribute-data/attribute-data-dimension';
5
- import { CustomBreaksBinsAttributeDataDimensionOptions } from './custom-breaks-bins-options';
6
-
7
- /**
8
- * Configuration object for attribute data that is quantitative and will be binned into custom breaks.
9
- *
10
- * For example, if the data is [0, 1, 2, 4, 60, 100] and breakValues is [0, 2, 5, 10, 50], the bin ranges will be [0, 2], [2, 5], [5, 10], [10, 50], [50, 100].
11
- *
12
- * The generic parameter is the type of the attribute data.
13
- */
14
- export class CustomBreaksBinsAttributeDataDimension<
15
- Datum,
16
- RangeValue extends string | number = string,
17
- >
18
- extends AttributeDataDimension<Datum, number, RangeValue>
19
- implements CustomBreaksBinsAttributeDataDimensionOptions<Datum, RangeValue>
20
- {
21
- override readonly binType: BinStrategy.customBreaks;
22
- readonly breakValues: number[];
23
- private calculatedNumBins: number;
24
- private calculatedDomain: number[];
25
- readonly formatSpecifier: string;
26
-
27
- constructor(
28
- options: CustomBreaksBinsAttributeDataDimensionOptions<Datum, RangeValue>
29
- ) {
30
- super('number');
31
- this.binType = BinStrategy.customBreaks;
32
- safeAssign(this, options);
33
- if (!this.valueAccessor) {
34
- console.error(
35
- 'Value accessor is required for CustomBreaksAttributeDataDimension'
36
- );
37
- }
38
- if (!this.breakValues) {
39
- console.error(
40
- 'breakValues are required for CustomBreaksAttributeDataDimension'
41
- );
42
- }
43
- if (this.breakValues.length < 2) {
44
- console.error(
45
- 'breakValues must have at least two values for CustomBreaksAttributeDataDimension'
46
- );
47
- }
48
- this.breakValues = this.breakValues.slice().sort((a, b) => a - b);
49
- }
50
-
51
- setPropertiesFromData(): void {
52
- this.setDomain();
53
- this.setNumBins();
54
- this.setRange();
55
- }
56
-
57
- protected setDomain(): void {
58
- this.calculatedDomain = this.breakValues.slice(1);
59
- }
60
-
61
- private setNumBins(): void {
62
- this.calculatedNumBins = this.breakValues.length - 1;
63
- }
64
-
65
- protected setRange(): void {
66
- if (this.range.length < this.calculatedNumBins) {
67
- const scale = scaleLinear<RangeValue>()
68
- .domain([0, this.calculatedNumBins - 1])
69
- .range(this.range);
70
- this.range = range(this.calculatedNumBins).map((i) => scale(i));
71
- }
72
- }
73
-
74
- getScale() {
75
- // the D3.ScaleThreshold domain is an array of naturally ordered values, which are typically numbers but could also be strings. Thus if scale is called with a string value here, it scale will return the first value of the range, not the nullColor. See https://d3js.org/d3-scale/threshold#threshold_domain.
76
- return this.scale()
77
- .domain(this.calculatedDomain)
78
- .range(this.range)
79
- .unknown(this.nullColor);
80
- }
81
- }
@@ -1,378 +0,0 @@
1
- /* eslint-disable @angular-eslint/prefer-standalone */
2
- import { Component, Input } from '@angular/core';
3
- import {
4
- ChartConfig,
5
- GeographiesConfig,
6
- VicChartConfigBuilder,
7
- VicChartModule,
8
- VicGeographiesConfigBuilder,
9
- VicGeographiesModule,
10
- } from '@mathstack/viz';
11
- import { geoMercator } from 'd3';
12
- import {
13
- FeatureCollection,
14
- GeoJsonProperties,
15
- MultiPolygon,
16
- Polygon,
17
- } from 'geojson';
18
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
19
- import * as topojson from 'topojson-client';
20
- import { GeometryCollection, Objects, Topology } from 'topojson-specification';
21
- import {
22
- StateIncomePopulationYearDatum,
23
- stateIncomePopulationYearData,
24
- } from '../../../../../../testing/data/state-population-income-year-data';
25
-
26
- const margin = { top: 36, right: 36, bottom: 36, left: 36 };
27
- const chartHeight = 400;
28
- const chartWidth = 600;
29
- const attributeData = stateIncomePopulationYearData
30
- .filter((x) => x.year === 2020)
31
- .filter((x) => x.state !== 'Puerto Rico');
32
-
33
- interface TestMapGeometryProperties extends GeoJsonProperties {
34
- name: string;
35
- id: string;
36
- }
37
-
38
- interface TestMapObjects extends Objects {
39
- country: GeometryCollection<TestMapGeometryProperties>;
40
- states: GeometryCollection<TestMapGeometryProperties>;
41
- }
42
-
43
- type TestUsMapTopology = Topology<TestMapObjects>;
44
-
45
- // ***********************************************************
46
- // Geographies component set up
47
- // ***********************************************************
48
- @Component({
49
- // eslint-disable-next-line @angular-eslint/component-selector
50
- selector: 'app-test-geographies',
51
- template: `
52
- <vic-map-chart [config]="chartConfig">
53
- <svg:g
54
- vic-primary-marks-geographies
55
- svg-elements
56
- [config]="geographiesConfig"
57
- [vicGeographiesHoverActions]="hoverActions"
58
- (vicGeographiesHoverOutput)="updateTooltipForNewOutput($event)"
59
- ></svg:g>
60
- </vic-map-chart>
61
- `,
62
- styles: [],
63
- imports: [VicChartModule, VicGeographiesModule],
64
- })
65
- class TestGeographiesComponent {
66
- @Input() geographiesConfig: GeographiesConfig<
67
- StateIncomePopulationYearDatum,
68
- TestMapGeometryProperties
69
- >;
70
- chartConfig: ChartConfig = new VicChartConfigBuilder()
71
- .margin(margin)
72
- .maxWidth(chartWidth)
73
- .maxHeight(chartHeight)
74
- .scalingStrategy('responsive-width')
75
- .getConfig();
76
- }
77
-
78
- const mountGeographiesComponent = (
79
- geographiesConfig: GeographiesConfig<
80
- StateIncomePopulationYearDatum,
81
- TestMapGeometryProperties
82
- >
83
- ): void => {
84
- cy.mount(TestGeographiesComponent, {
85
- componentProperties: {
86
- geographiesConfig: geographiesConfig,
87
- },
88
- });
89
- };
90
-
91
- // ***********************************************************
92
- // Test dimension
93
- // ***********************************************************
94
- describe('the Custom Breaks Attribute Data dimension', () => {
95
- let geographiesConfig: GeographiesConfig<
96
- StateIncomePopulationYearDatum,
97
- TestMapGeometryProperties
98
- >;
99
- beforeEach(() => {
100
- geographiesConfig = undefined;
101
- });
102
- it('User provides break values - it colors states according to break values', () => {
103
- const breakValues = [40000, 55000, 70000, 85000, 100000];
104
- const rangeValues = ['red', 'orange', 'yellow', 'green'];
105
- cy.fixture('usMap.json').then((response) => {
106
- const usMap: TestUsMapTopology = response;
107
- const usBoundary = topojson.feature(
108
- usMap,
109
- usMap.objects.country
110
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
111
- const states = topojson.feature(
112
- usMap,
113
- usMap.objects.states
114
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
115
- geographiesConfig = new VicGeographiesConfigBuilder<
116
- StateIncomePopulationYearDatum,
117
- TestMapGeometryProperties
118
- >()
119
- .boundary(usBoundary)
120
- .featureIndexAccessor((d) => d.properties.name)
121
- .attributeDataLayer((dimension) =>
122
- dimension
123
- .data(attributeData)
124
- .class((d) => d.name.split(' ').join('-'))
125
- .geographies(states.features)
126
- .geographyIndexAccessor((d) => d.state)
127
- .customBreaksBins((bins) =>
128
- bins
129
- .valueAccessor((d) => d.income)
130
- .breakValues(breakValues)
131
- .range(rangeValues)
132
- )
133
- )
134
- .getConfig();
135
- mountGeographiesComponent(geographiesConfig);
136
- rangeValues.forEach((color, i) => {
137
- const statesInAttributeData = attributeData
138
- .filter(
139
- (d) => d.income < breakValues[i + 1] && d.income >= breakValues[i]
140
- )
141
- .map((d) => d.state);
142
- statesInAttributeData.forEach((state) => {
143
- cy.get(
144
- `.vic-geographies-group.${state.split(' ').join('-')} path`
145
- ).then((path) => {
146
- expect(path.attr('fill')).to.eq(color);
147
- });
148
- });
149
- });
150
- });
151
- });
152
-
153
- it('User provides break values that do not cover full data range -- values below first value use first color, values above last value use last color', () => {
154
- const breakValues = [50000, 60000, 70000, 80000];
155
- const rangeValues = ['red', 'orange', 'yellow'];
156
- cy.fixture('usMap.json').then((response) => {
157
- const usMap: TestUsMapTopology = response;
158
- const usBoundary = topojson.feature(
159
- usMap,
160
- usMap.objects.country
161
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
162
- const states = topojson.feature(
163
- usMap,
164
- usMap.objects.states
165
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
166
- geographiesConfig = new VicGeographiesConfigBuilder<
167
- StateIncomePopulationYearDatum,
168
- TestMapGeometryProperties
169
- >()
170
- .boundary(usBoundary)
171
- .featureIndexAccessor((d) => d.properties.name)
172
- .attributeDataLayer((dimension) =>
173
- dimension
174
- .data(attributeData)
175
- .class((d) => d.name.split(' ').join('-'))
176
- .geographies(states.features)
177
- .geographyIndexAccessor((d) => d.state)
178
- .customBreaksBins((bins) =>
179
- bins
180
- .valueAccessor((d) => d.income)
181
- .breakValues(breakValues)
182
- .range(rangeValues)
183
- )
184
- )
185
- .getConfig();
186
- mountGeographiesComponent(geographiesConfig);
187
- const belowValues = attributeData
188
- .filter((d) => d.income < breakValues[0])
189
- .map((d) => d.state.replace(/\s/g, '-'));
190
- const aboveValues = attributeData
191
- .filter((d) => d.income >= breakValues[breakValues.length - 1])
192
- .map((d) => d.state.replace(/\s/g, '-'));
193
- [
194
- { data: belowValues, color: rangeValues[0] },
195
- { data: aboveValues, color: rangeValues[rangeValues.length - 1] },
196
- ].forEach((group) => {
197
- group.data.forEach((state) => {
198
- cy.get(
199
- `.vic-geographies-group.${state.split(' ').join('-')} path`
200
- ).then((path) => {
201
- expect(path.attr('fill')).to.eq(group.color);
202
- });
203
- });
204
- });
205
- });
206
- });
207
-
208
- it('User provides break values that are not in order - it colors states according to break values as though they were in ascending order', () => {
209
- const breakValues = [40000, 55000, 70000, 85000, 100000];
210
- const rangeValues = ['red', 'orange', 'yellow', 'green'];
211
- cy.fixture('usMap.json').then((response) => {
212
- const usMap: TestUsMapTopology = response;
213
- const usBoundary = topojson.feature(
214
- usMap,
215
- usMap.objects.country
216
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
217
- const states = topojson.feature(
218
- usMap,
219
- usMap.objects.states
220
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
221
- geographiesConfig = new VicGeographiesConfigBuilder<
222
- StateIncomePopulationYearDatum,
223
- TestMapGeometryProperties
224
- >()
225
- .boundary(usBoundary)
226
- .featureIndexAccessor((d) => d.properties.name)
227
- .attributeDataLayer((dimension) =>
228
- dimension
229
- .data(attributeData)
230
- .class((d) => d.name.split(' ').join('-'))
231
- .geographies(states.features)
232
- .geographyIndexAccessor((d) => d.state)
233
- .customBreaksBins((bins) =>
234
- bins
235
- .valueAccessor((d) => d.income)
236
- .breakValues([
237
- breakValues[1],
238
- breakValues[0],
239
- breakValues[2],
240
- breakValues[4],
241
- breakValues[3],
242
- ])
243
- .range(rangeValues)
244
- )
245
- )
246
- .getConfig();
247
- mountGeographiesComponent(geographiesConfig);
248
- rangeValues.forEach((color, i) => {
249
- const statesInAttributeData = attributeData
250
- .filter(
251
- (d) => d.income < breakValues[i + 1] && d.income >= breakValues[i]
252
- )
253
- .map((d) => d.state);
254
- statesInAttributeData.forEach((state) => {
255
- cy.get(
256
- `.vic-geographies-group.${state.split(' ').join('-')} path`
257
- ).then((path) => {
258
- expect(path.attr('fill')).to.eq(color);
259
- });
260
- });
261
- });
262
- });
263
- });
264
-
265
- it('it colors undefined, null, and non-quant values with null color', () => {
266
- const breakValues = [40000, 55000, 70000, 85000, 100000];
267
- const rangeValues = ['red', 'orange', 'yellow', 'green'];
268
- cy.fixture('usMap.json').then((response) => {
269
- const usMap: TestUsMapTopology = response;
270
- const usBoundary = topojson.feature(
271
- usMap,
272
- usMap.objects.country
273
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
274
- const states = topojson.feature(
275
- usMap,
276
- usMap.objects.states
277
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
278
- const dataWithFalsyValues = attributeData.map((d) => {
279
- if (d.state === 'Texas') {
280
- return { ...d, income: null };
281
- } else if (d.state === 'California') {
282
- return { ...d, income: undefined };
283
- } else if (d.state === 'Florida') {
284
- return { ...d, income: 'Not a number' as unknown as number };
285
- } else {
286
- return d;
287
- }
288
- });
289
- const nullColor = 'chartreuse';
290
- geographiesConfig = new VicGeographiesConfigBuilder<
291
- StateIncomePopulationYearDatum,
292
- TestMapGeometryProperties
293
- >()
294
- .boundary(usBoundary)
295
- .featureIndexAccessor((d) => d.properties.name)
296
- .attributeDataLayer((dimension) =>
297
- dimension
298
- .data(dataWithFalsyValues)
299
- .class((d) => d.name.split(' ').join('-'))
300
- .geographies(states.features)
301
- .geographyIndexAccessor((d) => d.state)
302
- .customBreaksBins((bins) =>
303
- bins
304
- .valueAccessor((d) => d.income)
305
- .breakValues(breakValues)
306
- .range(rangeValues)
307
- .nullColor(nullColor)
308
- )
309
- )
310
- .getConfig();
311
- mountGeographiesComponent(geographiesConfig);
312
- cy.get(`.vic-geographies-group.Florida path`).then((path) => {
313
- expect(path.attr('fill')).to.eq(rangeValues[0]);
314
- });
315
- cy.get(`.vic-geographies-group.Texas path`).then((path) => {
316
- expect(path.attr('fill')).to.eq(nullColor);
317
- });
318
- cy.get(`.vic-geographies-group.California path`).then((path) => {
319
- expect(path.attr('fill')).to.eq(nullColor);
320
- });
321
- });
322
- });
323
-
324
- it('it colors geographies not in attribute data with the null color', () => {
325
- // island territories like American Samoa, Guam, etc. are not in the attribute data but are in the geojson
326
- // they will be drawn with any projection but let's use geoMercator to make them a bit more visible-ish
327
- const breakValues = [40000, 55000, 70000, 85000, 100000];
328
- const rangeValues = ['red', 'orange', 'yellow', 'green'];
329
- cy.fixture('usMap.json').then((response) => {
330
- const usMap: TestUsMapTopology = response;
331
- const usBoundary = topojson.feature(
332
- usMap,
333
- usMap.objects.country
334
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
335
- const states = topojson.feature(
336
- usMap,
337
- usMap.objects.states
338
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
339
- const nullColor = 'chartreuse';
340
- geographiesConfig = new VicGeographiesConfigBuilder<
341
- StateIncomePopulationYearDatum,
342
- TestMapGeometryProperties
343
- >()
344
- .boundary(usBoundary)
345
- .projection(geoMercator())
346
- .featureIndexAccessor((d) => d.properties.name)
347
- .attributeDataLayer((dimension) =>
348
- dimension
349
- .data(attributeData)
350
- .class((d) => d.name.split(' ').join('-'))
351
- .geographies(states.features)
352
- .geographyIndexAccessor((d) => d.state)
353
- .customBreaksBins((bins) =>
354
- bins
355
- .valueAccessor((d) => d.income)
356
- .breakValues(breakValues)
357
- .range(rangeValues)
358
- .nullColor(nullColor)
359
- )
360
- )
361
- .getConfig();
362
- mountGeographiesComponent(geographiesConfig);
363
- const geographiesNotInAttributeData = states.features
364
- .filter(
365
- (x) =>
366
- attributeData.findIndex((d) => d.state === x.properties.name) === -1
367
- )
368
- .map((x) => x.properties.name);
369
- geographiesNotInAttributeData.forEach((state) => {
370
- cy.get(
371
- `.vic-geographies-group.${state.split(' ').join('-')} path`
372
- ).then((path) => {
373
- expect(path.attr('fill')).to.eq(nullColor);
374
- });
375
- });
376
- });
377
- });
378
- });
@@ -1,50 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { interpolateLab, scaleQuantile } from 'd3';
3
- import { CalculatedBinsAttributeDataDimensionBuilder } from '../calculated-bins/calculated-bins-builder';
4
- import { EqualFrequenciesAttributeDataDimension } from './equal-frequencies-bins';
5
-
6
- const DEFAULT = {
7
- _interpolator: interpolateLab,
8
- _nullColor: 'whitesmoke',
9
- _numBins: 4,
10
- _range: ['white', 'blue'],
11
- _scale: scaleQuantile,
12
- };
13
-
14
- export class EqualFrequenciesAttributeDataDimensionBuilder<
15
- Datum,
16
- RangeValue extends string | number = string,
17
- > extends CalculatedBinsAttributeDataDimensionBuilder<Datum, RangeValue> {
18
- private _numBins: number;
19
-
20
- constructor() {
21
- super();
22
- safeAssign(this, DEFAULT);
23
- }
24
-
25
- /**
26
- * OPTIONAL. The number of bins to create.
27
- *
28
- * @default 4
29
- */
30
- numBins(numBins: number): this {
31
- this._numBins = numBins;
32
- return this;
33
- }
34
-
35
- /**
36
- * @internal This method is not intended to be used by consumers of this library.
37
- */
38
- _build(): EqualFrequenciesAttributeDataDimension<Datum, RangeValue> {
39
- return new EqualFrequenciesAttributeDataDimension({
40
- formatFunction: this._formatFunction,
41
- formatSpecifier: this._formatSpecifier,
42
- interpolator: this._interpolator,
43
- nullColor: this._nullColor,
44
- numBins: this._numBins,
45
- range: this._range,
46
- scale: this._scale,
47
- valueAccessor: this._valueAccessor,
48
- });
49
- }
50
- }
@@ -1,8 +0,0 @@
1
- import { CalculatedBinsAttributeDataDimensionOptions } from '../calculated-bins/calculated-bins-options';
2
-
3
- export interface EqualFrequenciesAttributeDataDimensionOptions<
4
- Datum,
5
- RangeValue extends string | number = string,
6
- > extends CalculatedBinsAttributeDataDimensionOptions<Datum, RangeValue> {
7
- numBins: number;
8
- }