@mwater/visualization 5.2.0 → 5.3.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 (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 +8 -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 +379 -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,461 +0,0 @@
1
- // TODO: This file was created by bulk-decaffeinate.
2
- // Sanity-check the conversion and remove this comment.
3
- import PropTypes from "prop-types"
4
- import _ from "lodash"
5
- import React, { CSSProperties } from "react"
6
- const R = React.createElement
7
- import uuid from "uuid"
8
- import DraggableBlockComponent from "./DraggableBlockComponent"
9
- import DecoratedBlockComponent from "../DecoratedBlockComponent"
10
- import PaletteItemComponent from "./PaletteItemComponent"
11
- import ClipboardPaletteItemComponent from "./ClipboardPaletteItemComponent"
12
- import * as blockUtils from "./blockUtils"
13
- import AutoSizeComponent from "@mwater/react-library/lib/AutoSizeComponent"
14
- import HorizontalBlockComponent from "./HorizontalBlockComponent"
15
- import { getDefaultLayoutOptions } from "../../dashboards/layoutOptions"
16
- import { LayoutBlock } from "./blockUtils"
17
-
18
- export interface BlocksDisplayComponentProps {
19
- items: LayoutBlock
20
- onItemsChange?: (items: LayoutBlock) => void
21
- /** Stylesheet to use. null for default */
22
- style?: string
23
- /** layout options to use */
24
- layoutOptions?: any
25
- /** Renders a widget. Passed (options) */
26
- renderWidget: any
27
- /** True to prevent maps */
28
- disableMaps?: boolean
29
- /** Including onClipboardChange adds a clipboard palette item that can be used to copy and paste widgets */
30
- clipboard?: any
31
- onClipboardChange?: any
32
- cantPasteMessage?: string
33
- }
34
-
35
- /*
36
- Renders the complete layout of the blocks and also optionally a palette to the left
37
- that can be used to drag new items into the layout. Palette is only displayed if onItemsChange is not null
38
- */
39
- class BlocksDisplayComponent extends React.Component<BlocksDisplayComponentProps> {
40
- handleBlockDrop = (sourceBlock: any, targetBlock: any, side: "top" | "left" | "right" | "bottom") => {
41
- // Remove source from items
42
- let items = blockUtils.removeBlock(this.props.items, sourceBlock)!
43
-
44
- // Remove source from target also
45
- targetBlock = blockUtils.removeBlock(targetBlock, sourceBlock)
46
-
47
- items = blockUtils.dropBlock(items, sourceBlock, targetBlock, side)
48
- items = blockUtils.cleanBlock(items)
49
- return this.props.onItemsChange!(items)
50
- }
51
-
52
- handleBlockRemove = (block: any) => {
53
- let items = blockUtils.removeBlock(this.props.items, block)!
54
- items = blockUtils.cleanBlock(items)
55
- return this.props.onItemsChange!(items)
56
- }
57
-
58
- handleBlockUpdate = (block: any) => {
59
- let items = blockUtils.updateBlock(this.props.items, block)!
60
- items = blockUtils.cleanBlock(items)
61
- return this.props.onItemsChange!(items)
62
- }
63
-
64
- renderBlock = (block: any, collapseColumns = false) => {
65
- let elem = null
66
-
67
- switch (block.type) {
68
- case "root":
69
- return R(RootBlockComponent, {
70
- key: block.id,
71
- block,
72
- collapseColumns,
73
- renderBlock: this.renderBlock,
74
- onBlockDrop: this.props.onItemsChange != null ? this.handleBlockDrop : undefined,
75
- onBlockRemove: this.props.onItemsChange != null ? this.handleBlockRemove : undefined
76
- })
77
- break
78
-
79
- case "vertical":
80
- return R(VerticalBlockComponent, {
81
- key: block.id,
82
- block,
83
- collapseColumns,
84
- renderBlock: this.renderBlock,
85
- onBlockDrop: this.props.onItemsChange != null ? this.handleBlockDrop : undefined,
86
- onBlockRemove: this.props.onItemsChange != null ? this.handleBlockRemove : undefined
87
- })
88
- break
89
-
90
- case "horizontal":
91
- return R(HorizontalBlockComponent, {
92
- key: block.id,
93
- block,
94
- collapseColumns,
95
- renderBlock: this.renderBlock,
96
- onBlockDrop: this.props.onItemsChange != null ? this.handleBlockDrop : undefined,
97
- onBlockRemove: this.props.onItemsChange != null ? this.handleBlockRemove : undefined,
98
- onBlockUpdate: this.props.onItemsChange != null ? this.handleBlockUpdate : undefined
99
- })
100
- break
101
-
102
- case "spacer":
103
- elem = R(AutoSizeComponent, { injectWidth: true, key: block.id } as any, (size: any) => {
104
- return R("div", {
105
- id: block.id,
106
- style: {
107
- width: size.width,
108
- height: block.aspectRatio != null ? size.width / block.aspectRatio : undefined
109
- }
110
- })
111
- })
112
-
113
- if (this.props.onItemsChange) {
114
- elem = R(
115
- DraggableBlockComponent,
116
- {
117
- key: block.id,
118
- block,
119
- onBlockDrop: this.handleBlockDrop
120
- },
121
- R(
122
- DecoratedBlockComponent,
123
- {
124
- key: block.id,
125
- aspectRatio: block.aspectRatio,
126
- onAspectRatioChange:
127
- block.aspectRatio != null
128
- ? (aspectRatio: any) =>
129
- this.props.onItemsChange!(
130
- blockUtils.updateBlock(this.props.items, _.extend({}, block, { aspectRatio }))
131
- )
132
- : undefined,
133
- onBlockRemove: this.props.onItemsChange != null ? this.handleBlockDrop.bind(null, block) : undefined
134
- },
135
- elem
136
- )
137
- )
138
- }
139
- break
140
-
141
- case "widget":
142
- elem = R(AutoSizeComponent, { injectWidth: true, key: block.id } as any, (size: any) => {
143
- return this.props.renderWidget({
144
- id: block.id,
145
- type: block.widgetType,
146
- design: block.design,
147
- onDesignChange: this.props.onItemsChange
148
- ? (design: any) =>
149
- this.props.onItemsChange!(blockUtils.updateBlock(this.props.items, _.extend({}, block, { design })))
150
- : undefined,
151
- width: size.width,
152
- height: block.aspectRatio != null ? size.width / block.aspectRatio : undefined
153
- })
154
- })
155
-
156
- if (this.props.onItemsChange) {
157
- elem = R(
158
- DraggableBlockComponent,
159
- {
160
- key: block.id,
161
- block,
162
- onBlockDrop: this.handleBlockDrop
163
- },
164
- R(
165
- DecoratedBlockComponent,
166
- {
167
- key: block.id,
168
- aspectRatio: block.aspectRatio,
169
- onAspectRatioChange:
170
- block.aspectRatio != null
171
- ? (aspectRatio: any) =>
172
- this.props.onItemsChange!(
173
- blockUtils.updateBlock(this.props.items, _.extend({}, block, { aspectRatio }))
174
- )
175
- : undefined,
176
- onBlockRemove: this.props.onItemsChange != null ? this.handleBlockDrop.bind(null, block) : undefined
177
- },
178
- elem
179
- )
180
- )
181
- }
182
- break
183
- default:
184
- throw new Error(`Unknown block type ${block.type}`)
185
- }
186
-
187
- // Wrap block in padding
188
- return R(
189
- "div",
190
- { key: block.id, className: `mwater-visualization-block mwater-visualization-block-${block.type}` },
191
- elem
192
- )
193
- }
194
-
195
- createBlockItem(block: any) {
196
- // Add unique id
197
- return () => ({
198
- block: _.extend({}, block, { id: uuid() })
199
- })
200
- }
201
-
202
- renderPalette() {
203
- return R(
204
- "div",
205
- { key: "palette", style: { width: 141, height: "100%", position: "absolute", top: 0, left: 0 } },
206
- R(
207
- "div",
208
- { className: "mwater-visualization-palette", style: { height: "100%" } },
209
- R(PaletteItemComponent, {
210
- createItem: this.createBlockItem({ type: "widget", widgetType: "Text", design: { style: "title" } }),
211
- title: R("i", { className: "fa fa-font" }),
212
- subtitle: "Title"
213
- }),
214
- R(PaletteItemComponent, {
215
- createItem: this.createBlockItem({ type: "widget", widgetType: "Text", design: {} }),
216
- title: R("i", { className: "fa fa-align-left" }),
217
- subtitle: "Text"
218
- }),
219
- R(PaletteItemComponent, {
220
- createItem: this.createBlockItem({ type: "widget", aspectRatio: 1.4, widgetType: "Image", design: {} }),
221
- title: R("i", { className: "fa fa-picture-o" }),
222
- subtitle: "Image"
223
- }),
224
- R(PaletteItemComponent, {
225
- createItem: this.createBlockItem({
226
- type: "widget",
227
- aspectRatio: 1.4,
228
- widgetType: "LayeredChart",
229
- design: {}
230
- }),
231
- title: R("i", { className: "fa fa-bar-chart" }),
232
- subtitle: "Chart"
233
- }),
234
- !this.props.disableMaps
235
- ? R(PaletteItemComponent, {
236
- createItem: this.createBlockItem({
237
- type: "widget",
238
- aspectRatio: 2,
239
- widgetType: "Map",
240
- design: {
241
- baseLayer: "bing_road",
242
- layerViews: [],
243
- filters: {},
244
- bounds: { w: -40, n: 25, e: 40, s: -25 }
245
- }
246
- }),
247
- title: R("i", { className: "fa fa-map-o" }),
248
- subtitle: "Map"
249
- })
250
- : undefined,
251
- R(PaletteItemComponent, {
252
- createItem: this.createBlockItem({ type: "widget", aspectRatio: 1.4, widgetType: "TableChart", design: {} }),
253
- title: R("i", { className: "fa fa-table" }),
254
- subtitle: "Table"
255
- }),
256
- R(PaletteItemComponent, {
257
- createItem: this.createBlockItem({ type: "widget", widgetType: "PivotChart", design: {} }),
258
- title: R("img", {
259
- width: 24,
260
- height: 24,
261
- src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAb0lEQVRIx91VQQrAIAwzo/7/ydllG0MQS21EzMW2ICFtoyBZlLDn/LOgySPAG1xFDDmBtZI6efoMvODozkyL2IlTCOisfS2KrqG0RXus6fkEVBIw08khE62aQY0ogMdEswqwYouwvQ8s+4M576m4Ae/tET/u1taEAAAAAElFTkSuQmCC"
262
- }),
263
- subtitle: "Pivot"
264
- }),
265
- R(PaletteItemComponent, {
266
- createItem: this.createBlockItem({
267
- type: "widget",
268
- aspectRatio: 1.4,
269
- widgetType: "CalendarChart",
270
- design: {}
271
- }),
272
- title: R("i", { className: "fa fa-calendar" }),
273
- subtitle: "Calendar"
274
- }),
275
- R(PaletteItemComponent, {
276
- createItem: this.createBlockItem({
277
- type: "widget",
278
- aspectRatio: 1.4,
279
- widgetType: "ImageMosaicChart",
280
- design: {}
281
- }),
282
- title: R("i", { className: "fa fa-th" }),
283
- subtitle: "Mosaic"
284
- }),
285
- R(PaletteItemComponent, {
286
- createItem: this.createBlockItem({ type: "spacer", aspectRatio: 2 }),
287
- title: R("i", { className: "fa fa-square-o" }),
288
- subtitle: "Spacer"
289
- }),
290
- R(PaletteItemComponent, {
291
- createItem: this.createBlockItem({
292
- type: "widget",
293
- aspectRatio: 16.0 / 9.0,
294
- widgetType: "IFrame",
295
- design: {}
296
- }),
297
- title: R("i", { className: "fa fa-youtube-play" }),
298
- subtitle: "Video"
299
- }),
300
- R(PaletteItemComponent, {
301
- createItem: this.createBlockItem({
302
- type: "widget",
303
- widgetType: "TOC",
304
- design: { numbering: false, borderWeight: 2, header: "Contents" }
305
- }),
306
- title: R("i", { className: "fa fa-list-ol" }),
307
- subtitle: "TOC"
308
- }),
309
- this.props.onClipboardChange
310
- ? R(ClipboardPaletteItemComponent, {
311
- clipboard: this.props.clipboard,
312
- onClipboardChange: this.props.onClipboardChange,
313
- cantPasteMessage: this.props.cantPasteMessage
314
- })
315
- : undefined
316
- )
317
- )
318
- }
319
-
320
- render() {
321
- let innerParentStyle: CSSProperties
322
- const layoutOptions = this.props.layoutOptions || getDefaultLayoutOptions()
323
- if (this.props.onItemsChange) {
324
- innerParentStyle = {}
325
- innerParentStyle.maxWidth = layoutOptions.maximumWidth || undefined
326
-
327
- return R(
328
- "div",
329
- { style: { width: "100%", height: "100%", overflow: "hidden", position: "relative" } },
330
- this.renderPalette(),
331
- R(
332
- "div",
333
- {
334
- style: { position: "absolute", left: 141, top: 0, bottom: 0, right: 0, overflowX: "auto", overflowY: "scroll" },
335
- className: `mwater-visualization-block-parent-outer mwater-visualization-block-parent-outer-${
336
- this.props.style || "default"
337
- } mwater-visualization-block-editing`
338
- },
339
- R(
340
- "div",
341
- {
342
- key: "inner",
343
- className: `mwater-visualization-block-parent-inner mwater-visualization-block-parent-inner-${
344
- this.props.style || "default"
345
- }`,
346
- style: innerParentStyle
347
- },
348
- this.renderBlock(this.props.items)
349
- )
350
- )
351
- )
352
- } else {
353
- return R(AutoSizeComponent, { injectWidth: true, injectHeight: true } as any, (size: any) => {
354
- const outerParentStyle: CSSProperties = { width: "100%", height: "100%", overflowX: "auto", overflowY: "scroll" }
355
- innerParentStyle = {}
356
-
357
- // Remove padding if small
358
- if (size.width < 600) {
359
- innerParentStyle.padding = "0px"
360
- }
361
-
362
- // Scroll/scale
363
- innerParentStyle.maxWidth = layoutOptions.maximumWidth || undefined
364
-
365
- if (layoutOptions.belowMinimumWidth === "scroll") {
366
- innerParentStyle.minWidth = layoutOptions.minimumWidth || undefined
367
- } else {
368
- if (layoutOptions.minimumWidth != null && size.width < layoutOptions.minimumWidth) {
369
- const scale = size.width / layoutOptions.minimumWidth
370
- outerParentStyle.transform = `scale(${scale})`
371
- outerParentStyle.width = size.width / scale
372
- outerParentStyle.height = size.height / scale
373
- outerParentStyle.transformOrigin = "top left"
374
- }
375
- }
376
-
377
- return R(
378
- "div",
379
- {
380
- style: outerParentStyle,
381
- className: `mwater-visualization-block-parent-outer mwater-visualization-block-parent-outer-${
382
- this.props.style || "default"
383
- } mwater-visualization-block-viewing`
384
- },
385
- R(
386
- "div",
387
- {
388
- key: "inner",
389
- className: `mwater-visualization-block-parent-inner mwater-visualization-block-parent-inner-${
390
- this.props.style || "default"
391
- }`,
392
- style: innerParentStyle
393
- },
394
- this.renderBlock(
395
- this.props.items,
396
- layoutOptions.collapseColumnsWidth != null && size.width <= layoutOptions.collapseColumnsWidth
397
- )
398
- )
399
- )
400
- })
401
- }
402
- }
403
- }
404
- export default BlocksDisplayComponent
405
-
406
- interface RootBlockComponentProps {
407
- block: any
408
- collapseColumns?: boolean
409
- renderBlock: any
410
- /** Called with (sourceBlock, targetBlock, side) when block is dropped on it. side is top, left, bottom, right */
411
- onBlockDrop?: any
412
- onBlockRemove?: any
413
- }
414
-
415
- class RootBlockComponent extends React.Component<RootBlockComponentProps> {
416
- render() {
417
- const elem = R(
418
- "div",
419
- { key: "root" },
420
- _.map(this.props.block.blocks, (block) => {
421
- return this.props.renderBlock(block, this.props.collapseColumns)
422
- })
423
- )
424
-
425
- // If draggable
426
- if (this.props.onBlockDrop != null) {
427
- return R(
428
- DraggableBlockComponent,
429
- {
430
- block: this.props.block,
431
- onBlockDrop: this.props.onBlockDrop,
432
- style: { height: "100%" },
433
- onlyBottom: true
434
- },
435
- elem
436
- )
437
- } else {
438
- return elem
439
- }
440
- }
441
- }
442
- interface VerticalBlockComponentProps {
443
- block: any
444
- collapseColumns?: boolean
445
- renderBlock: any
446
- /** Called with (sourceBlock, targetBlock, side) when block is dropped on it. side is top, left, bottom, right */
447
- onBlockDrop?: any
448
- onBlockRemove?: any
449
- }
450
-
451
- class VerticalBlockComponent extends React.Component<VerticalBlockComponentProps> {
452
- render() {
453
- return R(
454
- "div",
455
- null,
456
- _.map(this.props.block.blocks, (block) => {
457
- return this.props.renderBlock(block, this.props.collapseColumns)
458
- })
459
- )
460
- }
461
- }
@@ -1,67 +0,0 @@
1
- import _ from "lodash"
2
- import React from "react"
3
- const R = React.createElement
4
-
5
- import WidgetContainerComponent from "./WidgetContainerComponent"
6
- import LegoLayoutEngine from "./LegoLayoutEngine"
7
-
8
- export interface GridLayoutComponentProps {
9
- width: number
10
- items?: any
11
- onItemsChange?: any
12
- renderWidget: any
13
- }
14
-
15
- export default class GridLayoutComponent extends React.Component<GridLayoutComponentProps> {
16
- renderPageBreaks(layoutEngine: any, layouts: any) {
17
- // Get height
18
- const height = layoutEngine.calculateHeight(layouts)
19
-
20
- // Page breaks are 8.5x11 with 0.5" margin
21
- const pageHeight = (this.props.width / 7.5) * 10
22
-
23
- const number = Math.floor(height / pageHeight)
24
-
25
- const elems = []
26
- if (number > 0) {
27
- for (let i = 1, end = number, asc = 1 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {
28
- elems.push(
29
- R("div", {
30
- className: "mwater-visualization-page-break",
31
- key: `page${i}`,
32
- style: { position: "absolute", top: i * pageHeight }
33
- })
34
- )
35
- }
36
- }
37
-
38
- return elems
39
- }
40
-
41
- render() {
42
- // Create layout engine
43
- const layoutEngine = new LegoLayoutEngine(this.props.width, 24)
44
-
45
- // Get layouts indexed by id
46
- const layouts = _.mapValues(this.props.items, "layout")
47
-
48
- const style = {
49
- height: "100%",
50
- position: "relative"
51
- }
52
-
53
- // Render widget container
54
- return R(
55
- "div",
56
- { style },
57
- R(WidgetContainerComponent, {
58
- layoutEngine,
59
- items: this.props.items,
60
- onItemsChange: this.props.onItemsChange,
61
- renderWidget: this.props.renderWidget,
62
- width: this.props.width
63
- }),
64
- this.renderPageBreaks(layoutEngine, layouts)
65
- )
66
- }
67
- }