@mwater/visualization 5.2.0 → 5.3.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 (254) hide show
  1. package/lib/ColorComponent.d.ts +10 -11
  2. package/lib/ColorComponent.js +78 -29
  3. package/lib/ColorSchemeFactory.d.ts +13 -2
  4. package/lib/ColorSchemeFactory.js +7 -5
  5. package/lib/CustomColorsContext.d.ts +6 -0
  6. package/lib/CustomColorsContext.js +6 -0
  7. package/lib/FiltersDesignerComponent.d.ts +1 -4
  8. package/lib/FiltersDesignerComponent.js +2 -3
  9. package/lib/LocaleContextInjector.d.ts +5 -11
  10. package/lib/LocaleContextInjector.js +4 -12
  11. package/lib/MWaterAddRelatedFormComponent.js +3 -3
  12. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
  13. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  14. package/lib/MWaterCompleteTableSelectComponent.d.ts +5 -16
  15. package/lib/MWaterCompleteTableSelectComponent.js +36 -36
  16. package/lib/MWaterContextComponent.d.ts +4 -6
  17. package/lib/MWaterContextComponent.js +4 -13
  18. package/lib/MWaterLoaderComponent.d.ts +5 -3
  19. package/lib/MWaterLoaderComponent.js +2 -1
  20. package/lib/MWaterTableSelectComponent.d.ts +1 -4
  21. package/lib/MWaterTableSelectComponent.js +10 -12
  22. package/lib/UIComponents.d.ts +2 -2
  23. package/lib/UIComponents.js +4 -12
  24. package/lib/axes/AxisBuilder.d.ts +7 -4
  25. package/lib/axes/AxisBuilder.js +3 -1
  26. package/lib/axes/AxisComponent.d.ts +2 -5
  27. package/lib/axes/AxisComponent.js +1 -2
  28. package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
  29. package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
  30. package/lib/dashboards/DashboardComponent.d.ts +4 -12
  31. package/lib/dashboards/DashboardComponent.js +18 -38
  32. package/lib/dashboards/DashboardDesign.d.ts +3 -3
  33. package/lib/dashboards/DashboardUpgrader.js +36 -1
  34. package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
  35. package/lib/dashboards/DashboardViewComponent.js +109 -132
  36. package/lib/dashboards/FontStyleEditor.d.ts +8 -0
  37. package/lib/dashboards/FontStyleEditor.js +130 -0
  38. package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
  39. package/lib/dashboards/LayoutOptionsComponent.js +211 -42
  40. package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
  41. package/lib/dashboards/ServerDashboardDataSource.js +52 -33
  42. package/lib/dashboards/WidgetComponent.d.ts +3 -3
  43. package/lib/dashboards/WidgetComponent.js +3 -6
  44. package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
  45. package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
  46. package/lib/dashboards/layoutOptions.d.ts +83 -0
  47. package/lib/dashboards/layoutOptions.js +436 -10
  48. package/lib/datagrids/DatagridDesign.d.ts +7 -6
  49. package/lib/datagrids/ServerDatagridDataSource.d.ts +7 -6
  50. package/lib/datagrids/ServerDatagridDataSource.js +87 -33
  51. package/lib/demo.js +3 -3
  52. package/lib/index.css +5 -0
  53. package/lib/index.d.ts +1 -1
  54. package/lib/index.js +0 -1
  55. package/lib/layouts/LayoutManager.d.ts +33 -29
  56. package/lib/layouts/LayoutManager.js +2 -8
  57. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -57
  58. package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
  59. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
  60. package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
  61. package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
  62. package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
  63. package/lib/mWaterLoader.d.ts +2 -0
  64. package/lib/mWaterLoader.js +2 -1
  65. package/lib/maps/AddLayerComponent.d.ts +6 -8
  66. package/lib/maps/AddLayerComponent.js +6 -6
  67. package/lib/maps/BingLayer.js +10 -20
  68. package/lib/maps/BufferLayer.js +2 -1
  69. package/lib/maps/ChoroplethLayer.js +2 -1
  70. package/lib/maps/DirectMapDataSource.d.ts +5 -2
  71. package/lib/maps/DirectMapDataSource.js +2 -1
  72. package/lib/maps/EditPopupComponent.js +2 -1
  73. package/lib/maps/MapComponent.d.ts +1 -4
  74. package/lib/maps/MapComponent.js +3 -3
  75. package/lib/maps/MarkersLayer.js +30 -25
  76. package/lib/maps/RasterMapViewComponent.d.ts +1 -4
  77. package/lib/maps/RasterMapViewComponent.js +3 -3
  78. package/lib/maps/ServerMapDataSource.d.ts +2 -3
  79. package/lib/maps/ServerMapDataSource.js +5 -5
  80. package/lib/maps/VectorMapViewComponent.js +2 -1
  81. package/lib/maps/mapSymbols.js +2 -0
  82. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  83. package/lib/maps/vectorMaps.js +61 -55
  84. package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
  85. package/lib/quickfilter/QuickfiltersComponent.js +3 -3
  86. package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
  87. package/lib/richtext/DropdownPaletteItem.js +82 -0
  88. package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
  89. package/lib/richtext/FontColorPaletteItem.js +32 -27
  90. package/lib/richtext/ItemsHtmlConverter.js +12 -3
  91. package/lib/richtext/RichTextComponent.d.ts +26 -52
  92. package/lib/richtext/RichTextComponent.js +166 -128
  93. package/lib/valueFormatter.js +6 -1
  94. package/lib/wellknown.d.ts +5 -0
  95. package/lib/wellknown.js +288 -0
  96. package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
  97. package/lib/widgets/DropdownWidgetComponent.js +48 -25
  98. package/lib/widgets/IFrameWidgetComponent.d.ts +1 -2
  99. package/lib/widgets/ImageWidgetComponent.d.ts +2 -3
  100. package/lib/widgets/MapWidget.d.ts +2 -0
  101. package/lib/widgets/MapWidget.js +2 -1
  102. package/lib/widgets/TOCWidget.js +2 -1
  103. package/lib/widgets/Widget.d.ts +2 -0
  104. package/lib/widgets/WidgetDataSource.d.ts +3 -1
  105. package/lib/widgets/charts/Chart.d.ts +0 -1
  106. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  107. package/lib/widgets/charts/ChartViewComponent.js +11 -3
  108. package/lib/widgets/charts/ChartWidget.d.ts +1 -62
  109. package/lib/widgets/charts/ChartWidget.js +4 -183
  110. package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
  111. package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
  112. package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
  113. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
  114. package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
  115. package/lib/widgets/charts/layered/LayeredChart.js +6 -7
  116. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
  117. package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
  118. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
  119. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +3 -0
  120. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
  121. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -2
  122. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
  123. package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
  124. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
  125. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -112
  126. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
  127. package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
  128. package/lib/widgets/charts/pivot/PivotChart.js +47 -17
  129. package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
  130. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +1 -1
  131. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
  132. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
  133. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
  134. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
  135. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
  136. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
  137. package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
  138. package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -28
  139. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
  140. package/lib/widgets/charts/table/TableChart.js +8 -4
  141. package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
  142. package/lib/widgets/charts/table/TableChartViewComponent.js +11 -11
  143. package/lib/widgets/text/TextComponent.d.ts +5 -12
  144. package/lib/widgets/text/TextComponent.js +19 -39
  145. package/lib/widgets/text/TextWidget.d.ts +2 -1
  146. package/lib/widgets/text/TextWidget.js +5 -1
  147. package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
  148. package/lib/widgets/text/TextWidgetComponent.js +76 -19
  149. package/lib/widgets/text/TextWidgetDesign.d.ts +13 -1
  150. package/lib/widgets/text/TextWidgetDesign.js +6 -0
  151. package/package.json +4 -4
  152. package/src/ColorComponent.tsx +177 -0
  153. package/src/ColorSchemeFactory.ts +12 -6
  154. package/src/CustomColorsContext.tsx +9 -0
  155. package/src/FiltersDesignerComponent.ts +3 -4
  156. package/src/LocaleContextInjector.tsx +14 -13
  157. package/src/MWaterAddRelatedFormComponent.ts +3 -3
  158. package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
  159. package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
  160. package/src/MWaterContextComponent.tsx +8 -17
  161. package/src/MWaterLoaderComponent.ts +6 -3
  162. package/src/MWaterTableSelectComponent.tsx +11 -12
  163. package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
  164. package/src/axes/AxisBuilder.ts +7 -5
  165. package/src/axes/AxisComponent.ts +3 -4
  166. package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
  167. package/src/dashboards/DashboardComponent.tsx +71 -107
  168. package/src/dashboards/DashboardDesign.ts +3 -3
  169. package/src/dashboards/DashboardUpgrader.ts +41 -1
  170. package/src/dashboards/DashboardViewComponent.tsx +313 -0
  171. package/src/dashboards/FontStyleEditor.tsx +166 -0
  172. package/src/dashboards/LayoutOptionsComponent.tsx +380 -75
  173. package/src/dashboards/ServerDashboardDataSource.ts +52 -33
  174. package/src/dashboards/WidgetComponent.tsx +6 -12
  175. package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
  176. package/src/dashboards/layoutOptions.tsx +581 -0
  177. package/src/datagrids/DatagridDesign.ts +8 -3
  178. package/src/datagrids/ServerDatagridDataSource.ts +106 -43
  179. package/src/demo.ts +3 -3
  180. package/src/index.css +5 -0
  181. package/src/index.ts +1 -1
  182. package/src/layouts/LayoutManager.ts +44 -42
  183. package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
  184. package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
  185. package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
  186. package/src/mWaterLoader.ts +4 -1
  187. package/src/maps/AddLayerComponent.ts +9 -9
  188. package/src/maps/BingLayer.ts +16 -26
  189. package/src/maps/BufferLayer.ts +2 -1
  190. package/src/maps/ChoroplethLayer.ts +2 -1
  191. package/src/maps/DirectMapDataSource.ts +12 -3
  192. package/src/maps/EditPopupComponent.ts +2 -1
  193. package/src/maps/MapComponent.ts +3 -3
  194. package/src/maps/MarkersLayer.ts +38 -41
  195. package/src/maps/RasterMapViewComponent.ts +3 -3
  196. package/src/maps/ServerMapDataSource.ts +7 -7
  197. package/src/maps/VectorMapViewComponent.tsx +2 -1
  198. package/src/maps/mapSymbols.ts +2 -0
  199. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  200. package/src/maps/vectorMaps.tsx +79 -74
  201. package/src/quickfilter/QuickfiltersComponent.ts +3 -3
  202. package/src/richtext/DropdownPaletteItem.tsx +144 -0
  203. package/src/richtext/FontColorPaletteItem.tsx +160 -0
  204. package/src/richtext/ItemsHtmlConverter.ts +15 -5
  205. package/src/richtext/RichTextComponent.tsx +274 -232
  206. package/src/valueFormatter.ts +5 -1
  207. package/src/wellknown.ts +286 -0
  208. package/src/widgets/DropdownWidgetComponent.tsx +75 -0
  209. package/src/widgets/MapWidget.ts +5 -2
  210. package/src/widgets/TOCWidget.ts +2 -1
  211. package/src/widgets/Widget.ts +3 -0
  212. package/src/widgets/WidgetDataSource.ts +3 -1
  213. package/src/widgets/charts/Chart.ts +1 -1
  214. package/src/widgets/charts/ChartViewComponent.ts +16 -3
  215. package/src/widgets/charts/ChartWidget.ts +3 -275
  216. package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
  217. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
  218. package/src/widgets/charts/layered/LayeredChart.ts +4 -6
  219. package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
  220. package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
  221. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
  222. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
  223. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
  224. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
  225. package/src/widgets/charts/pivot/PivotChart.ts +56 -18
  226. package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
  227. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
  228. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
  229. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
  230. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
  231. package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
  232. package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
  233. package/src/widgets/charts/table/TableChart.ts +8 -4
  234. package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
  235. package/src/widgets/charts/table/TableChartViewComponent.ts +13 -14
  236. package/src/widgets/text/TextComponent.tsx +47 -49
  237. package/src/widgets/text/TextWidget.ts +8 -3
  238. package/src/widgets/text/TextWidgetComponent.tsx +249 -0
  239. package/src/widgets/text/TextWidgetDesign.ts +22 -1
  240. package/src/ColorComponent.ts +0 -117
  241. package/src/dashboards/DashboardViewComponent.ts +0 -303
  242. package/src/dashboards/layoutOptions.ts +0 -40
  243. package/src/layout-styles.css +0 -263
  244. package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
  245. package/src/layouts/grid/GridLayoutComponent.ts +0 -67
  246. package/src/layouts/grid/GridLayoutManager.ts +0 -185
  247. package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
  248. package/src/layouts/grid/PaletteItemComponent.ts +0 -28
  249. package/src/layouts/grid/README.md +0 -14
  250. package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
  251. package/src/richtext/FontColorPaletteItem.ts +0 -172
  252. package/src/richtext/FontSizePaletteItem.ts +0 -110
  253. package/src/widgets/DropdownWidgetComponent.ts +0 -78
  254. package/src/widgets/text/TextWidgetComponent.ts +0 -120
@@ -1,7 +1,5 @@
1
- import PropTypes from "prop-types"
2
1
  import _ from "lodash"
3
2
  import React from "react"
4
- import ReactDOM from "react-dom"
5
3
  const R = React.createElement
6
4
 
7
5
  import { DataSource, ExprUtils, Schema } from "@mwater/expressions"
@@ -9,8 +7,10 @@ import LayeredChartCompiler from "./LayeredChartCompiler"
9
7
  import TextComponent from "../../text/TextComponent"
10
8
  import * as d3 from "d3"
11
9
  import { LayeredChartDesign } from "./LayeredChartDesign"
12
- import c3 from 'billboard.js'
10
+ import c3 from "billboard.js"
13
11
  import { WidgetScope } from "../../../WidgetScope"
12
+ import { LocaleContext } from "@mwater/expressions-ui/lib/contexts"
13
+ import { isEmptyTextWidgetDesign } from "../../text/TextWidgetDesign"
14
14
 
15
15
  export interface LayeredChartViewComponentProps {
16
16
  schema: Schema
@@ -36,7 +36,7 @@ export default class LayeredChartViewComponent extends React.Component<
36
36
  LayeredChartViewComponentProps,
37
37
  LayeredChartViewComponentState
38
38
  > {
39
- static contextTypes = { locale: PropTypes.string }
39
+ static contextType = LocaleContext
40
40
  header: HTMLElement | null
41
41
  footer: HTMLElement | null
42
42
 
@@ -60,9 +60,9 @@ export default class LayeredChartViewComponent extends React.Component<
60
60
  this.props.height != prevProps.height ||
61
61
  this.props.width != prevProps.width
62
62
  ) {
63
- console.log(
64
- `componentDidUpdate: ${this.props.height} vs ${prevProps.height} and ${this.props.width} vs ${prevProps.width}`
65
- )
63
+ // console.log(
64
+ // `componentDidUpdate: ${this.props.height} vs ${prevProps.height} and ${this.props.width} vs ${prevProps.width}`
65
+ // )
66
66
  this.updateHeights()
67
67
  }
68
68
  }
@@ -70,15 +70,15 @@ export default class LayeredChartViewComponent extends React.Component<
70
70
  updateHeights() {
71
71
  // Calculate header and footer heights
72
72
  if (this.header && this.state.headerHeight !== this.header.offsetHeight) {
73
- console.log(
74
- `headerHeight: ${this.state.headerHeight} vs ${this.header.offsetHeight} => ${this.header.offsetHeight}`
75
- )
73
+ // console.log(
74
+ // `headerHeight: ${this.state.headerHeight} vs ${this.header.offsetHeight} => ${this.header.offsetHeight}`
75
+ // )
76
76
  this.setState({ headerHeight: this.header.offsetHeight })
77
77
  }
78
78
  if (this.footer && this.state.footerHeight !== this.footer.offsetHeight) {
79
- console.log(
80
- `footerHeight: ${this.state.footerHeight} vs ${this.footer.offsetHeight} => ${this.footer.offsetHeight}`
81
- )
79
+ // console.log(
80
+ // `footerHeight: ${this.state.footerHeight} vs ${this.footer.offsetHeight} => ${this.footer.offsetHeight}`
81
+ // )
82
82
  this.setState({ footerHeight: this.footer.offsetHeight })
83
83
  }
84
84
  }
@@ -95,7 +95,7 @@ export default class LayeredChartViewComponent extends React.Component<
95
95
  return R(
96
96
  "div",
97
97
  {
98
- ref: (c) => {
98
+ ref: c => {
99
99
  return (this.header = c)
100
100
  }
101
101
  },
@@ -114,11 +114,12 @@ export default class LayeredChartViewComponent extends React.Component<
114
114
  return R(
115
115
  "div",
116
116
  {
117
- ref: (c) => {
117
+ ref: c => {
118
118
  return (this.footer = c)
119
119
  }
120
120
  },
121
- R(TextComponent, {
121
+ // Don't render footer if it's empty and no onDesignChange
122
+ isEmptyTextWidgetDesign(this.props.design.footer) && this.props.onDesignChange == null ? null : R(TextComponent, {
122
123
  design: this.props.design.footer!,
123
124
  onDesignChange: this.props.onDesignChange ? this.handleFooterChange : undefined,
124
125
  schema: this.props.schema,
@@ -144,7 +145,7 @@ export default class LayeredChartViewComponent extends React.Component<
144
145
  height: this.props.height - this.state.headerHeight - this.state.footerHeight,
145
146
  scope: this.props.scope,
146
147
  onScopeChange: this.props.onScopeChange,
147
- locale: this.context.locale
148
+ locale: this.context
148
149
  })
149
150
  : undefined,
150
151
  this.renderFooter()
@@ -206,14 +207,37 @@ class C3ChartComponent extends React.Component<C3ChartComponentProps> {
206
207
  // const c3 = require("c3")
207
208
  // console.log(chartOptions)
208
209
  try {
209
- this.chart = c3.generate(chartOptions)
210
+ this.chart = c3.generate(chartOptions)
210
211
  } catch (error) {
211
-
212
- throw(error)
212
+ throw error
213
+ }
214
+
215
+ const el = this.chartDiv
216
+ // https://github.com/mWater/monorepo/issues/8
217
+ if (props.design.type === "bar" && props.design.stacked && props.design.transpose) {
218
+ d3.select(el)
219
+ .selectAll(".bb-chart-text .bb-text")
220
+ .each(function (t: any, i: number) {
221
+ const bar = d3
222
+ .select(el)
223
+ .selectAll(".bb-chart-bar .bb-bar")
224
+ .filter((d: any) => {
225
+ return d.id === t.id && t.index === d.index
226
+ })
227
+ .nodes()[0] as SVGAElement
228
+
229
+ const text = d3.select(this)
230
+ const barBox = bar.getBBox()
231
+ const textBox = (text.nodes()[0]! as SVGAElement).getBBox()
232
+
233
+ if (barBox.width > textBox.width + 10) {
234
+ text.attr("x", barBox.x + (barBox.width - textBox.width) / 2)
235
+ } else {
236
+ text.style("opacity", 0)
237
+ }
238
+ })
213
239
  }
214
-
215
240
 
216
- console.log(this.chartDiv)
217
241
  // Remove listener for window focus (https://github.com/c3js/c3/issues/2742)
218
242
  window.removeEventListener("focus", this.chart.internal.windowFocusHandler)
219
243
  this.chart.internal.windowFocusHandler = () => {}
@@ -275,90 +299,108 @@ class C3ChartComponent extends React.Component<C3ChartComponentProps> {
275
299
  const compiler = new LayeredChartCompiler({ schema: this.props.schema })
276
300
  const el = this.chartDiv
277
301
 
278
- if(!this.props.design.transpose && this.props.design.popoutSmallValues) {
302
+ if (!this.props.design.transpose && this.props.design.popoutSmallValues) {
279
303
  const stacked = this.props.design.stacked
280
-
304
+
281
305
  let barWidth = 20
282
306
  const smalls: any[] = []
283
307
  const map = new Map()
284
308
  let _id = 0
285
309
  d3.select(el)
286
- .selectAll(".bb-chart-bar .bb-bar")
287
- .each(function (p: any, i){
288
- if(!map.has(p.id)) {
289
- map.set(p.id, _id++)
290
- }
291
-
292
- const box = (d3.select(this).nodes()[0]! as SVGAElement).getBBox()
293
- barWidth = box.width
294
-
295
- if(box.height < 12) {
296
-
297
- d3.select(el)
298
- .selectAll(".bb-chart-text .bb-text")
299
- .filter(function(p, j){ return i === j })
300
- .each(function(_p: any){
301
- smalls.push({
302
- origin_x: box.x,// + box.width,
303
- origin_y: box.y,
304
- series: map.get(p.id),
305
- textY: box.y - (12 * map.get(p.id)) - 10,
306
- textX: box.x + 25,
307
- })
308
- ;(d3.select(this).node()as SVGAElement).classList.add("needs_adjustment")
309
- })
310
- .attr('data-boxX', box.x)
311
- .attr('y', function(){
312
- return box.y - (12 * map.get(p.id)) - 10
313
- // return Number(d3.select(this).attr('y')) - 7
314
- })
315
- }
316
- })
317
-
318
- if(smalls.length > 0) {
310
+ .selectAll(".bb-chart-bar .bb-bar")
311
+ .each(function (p: any, i) {
312
+ if (!map.has(p.id)) {
313
+ map.set(p.id, _id++)
314
+ }
315
+
316
+ const box = (d3.select(this).nodes()[0]! as SVGAElement).getBBox()
317
+ barWidth = box.width
318
+
319
+ if (box.height < 12) {
320
+ d3.select(el)
321
+ .selectAll(".bb-chart-text .bb-text")
322
+ .filter(function (p, j) {
323
+ return i === j
324
+ })
325
+ .each(function (_p: any) {
326
+ smalls.push({
327
+ origin_x: box.x, // + box.width,
328
+ origin_y: box.y,
329
+ series: map.get(p.id),
330
+ textY: box.y - 12 * map.get(p.id) - 10,
331
+ textX: box.x + 25
332
+ })
333
+ ;(d3.select(this).node() as SVGAElement).classList.add("needs_adjustment")
334
+ })
335
+ .attr("data-boxX", box.x)
336
+ .attr("y", function () {
337
+ return box.y - 12 * map.get(p.id) - 10
338
+ // return Number(d3.select(this).attr('y')) - 7
339
+ })
340
+ }
341
+ })
342
+
343
+ if (smalls.length > 0) {
319
344
  const sliceWidth = 4
320
345
 
321
- const seriesToBeDrawn = _.uniq(smalls.map((s) => s.series)).length
346
+ const seriesToBeDrawn = _.uniq(smalls.map(s => s.series)).length
322
347
 
323
348
  d3.select(el)
324
349
  .selectAll(".needs_adjustment")
325
- .attr('x', function() {
350
+ .attr("x", function () {
326
351
  const self = d3.select(this)
327
- return Number(self.attr('data-boxX')) + ((seriesToBeDrawn) * sliceWidth) + 10
352
+ return Number(self.attr("data-boxX")) + seriesToBeDrawn * sliceWidth + 10
328
353
  })
329
- .attr('text-anchor', 'left')
354
+ .attr("text-anchor", "left")
330
355
 
331
- const hackGroup = d3.select(el)
332
- .selectAll(".bb-chart")
333
- .selectAll(".popout_labels")
334
- .data(["1"])
335
- .enter()
336
- .append('g')
337
- .attr('class', 'popout_labels')
356
+ const hackGroup = d3
357
+ .select(el)
358
+ .selectAll(".bb-chart")
359
+ .selectAll(".popout_labels")
360
+ .data(["1"])
361
+ .enter()
362
+ .append("g")
363
+ .attr("class", "popout_labels")
338
364
 
339
365
  hackGroup
340
- .selectAll('line')
366
+ .selectAll("line")
341
367
  .data(smalls)
342
368
  .enter()
343
- .append('line')
344
- .attr('x1', function(d) {return stacked ? d.origin_x + (sliceWidth*(seriesToBeDrawn - d.series)) : d.origin_x+5})
345
- .attr('y1', function(d) {return d.origin_y})
346
- .attr('x2', function(d) {return stacked ? d.origin_x + (sliceWidth*(seriesToBeDrawn - d.series)) : d.origin_x+5})
347
- .attr('y2', function(d) {return d.textY + 3})
348
- .attr('shape-rendering', 'crispEdges')
349
- .style("stroke", "black")
350
- .style("stroke-width", 0.5)
369
+ .append("line")
370
+ .attr("x1", function (d) {
371
+ return stacked ? d.origin_x + sliceWidth * (seriesToBeDrawn - d.series) : d.origin_x + 5
372
+ })
373
+ .attr("y1", function (d) {
374
+ return d.origin_y
375
+ })
376
+ .attr("x2", function (d) {
377
+ return stacked ? d.origin_x + sliceWidth * (seriesToBeDrawn - d.series) : d.origin_x + 5
378
+ })
379
+ .attr("y2", function (d) {
380
+ return d.textY + 3
381
+ })
382
+ .attr("shape-rendering", "crispEdges")
383
+ .style("stroke", "black")
384
+ .style("stroke-width", 0.5)
351
385
  .exit()
352
386
  .data(smalls)
353
387
  .enter()
354
- .append('line')
355
- .attr('x1', function(d) {return stacked ? d.origin_x + (sliceWidth*(seriesToBeDrawn - d.series)) : d.origin_x+5})
356
- .attr('y1', function(d) {return d.textY + 3} )
357
- .attr('x2', function(d) {return d.origin_x + ((seriesToBeDrawn) * sliceWidth) + 8})
358
- .attr('y2', function(d) {return d.textY} )
359
- .attr('shape-rendering', 'crispEdges')
360
- .style("stroke", "black")
361
- .style("stroke-width", 0.5)
388
+ .append("line")
389
+ .attr("x1", function (d) {
390
+ return stacked ? d.origin_x + sliceWidth * (seriesToBeDrawn - d.series) : d.origin_x + 5
391
+ })
392
+ .attr("y1", function (d) {
393
+ return d.textY + 3
394
+ })
395
+ .attr("x2", function (d) {
396
+ return d.origin_x + seriesToBeDrawn * sliceWidth + 8
397
+ })
398
+ .attr("y2", function (d) {
399
+ return d.textY
400
+ })
401
+ .attr("shape-rendering", "crispEdges")
402
+ .style("stroke", "black")
403
+ .style("stroke-width", 0.5)
362
404
  .exit()
363
405
  }
364
406
  }
@@ -399,7 +441,12 @@ class C3ChartComponent extends React.Component<C3ChartComponentProps> {
399
441
  let scope
400
442
  const dataPoint = this.lookupDataPoint(dataMap, d)
401
443
  if (dataPoint) {
402
- scope = compiler.createScope(this.props.design, dataPoint.layerIndex, dataPoint.row, this.props.locale || "en")
444
+ scope = compiler.createScope(
445
+ this.props.design,
446
+ dataPoint.layerIndex,
447
+ dataPoint.row,
448
+ this.props.locale || "en"
449
+ )
403
450
  }
404
451
 
405
452
  // Determine if scoped
@@ -452,7 +499,12 @@ class C3ChartComponent extends React.Component<C3ChartComponentProps> {
452
499
 
453
500
  // Create scope
454
501
  const compiler = new LayeredChartCompiler({ schema: this.props.schema })
455
- const scope = compiler.createScope(this.props.design, dataPoint.layerIndex, dataPoint.row, this.props.locale || "en")
502
+ const scope = compiler.createScope(
503
+ this.props.design,
504
+ dataPoint.layerIndex,
505
+ dataPoint.row,
506
+ this.props.locale || "en"
507
+ )
456
508
 
457
509
  // If same scope data, remove scope
458
510
  if (this.props.scope && _.isEqual(scope.data, this.props.scope.data)) {
@@ -478,7 +530,7 @@ class C3ChartComponent extends React.Component<C3ChartComponentProps> {
478
530
  // css += ".c3-title { font-size: #{scale * 14}px; }\n"
479
531
 
480
532
  return R("div", {
481
- ref: (c) => {
533
+ ref: c => {
482
534
  return (this.chartDiv = c)
483
535
  }
484
536
  })