@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,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
- }