@mwater/visualization 5.1.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 (305) 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/GlobalFilter.d.ts +13 -0
  10. package/lib/GlobalFilter.js +2 -0
  11. package/lib/LocaleContextInjector.d.ts +5 -11
  12. package/lib/LocaleContextInjector.js +4 -12
  13. package/lib/MWaterAddRelatedFormComponent.js +3 -3
  14. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
  15. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  16. package/lib/MWaterCompleteTableSelectComponent.d.ts +7 -25
  17. package/lib/MWaterCompleteTableSelectComponent.js +36 -36
  18. package/lib/MWaterContextComponent.d.ts +19 -9
  19. package/lib/MWaterContextComponent.js +38 -22
  20. package/lib/MWaterCustomTablesetListComponent.js +9 -3
  21. package/lib/MWaterGlobalFiltersComponent.d.ts +6 -5
  22. package/lib/MWaterGlobalFiltersComponent.js +4 -4
  23. package/lib/MWaterLoaderComponent.d.ts +15 -3
  24. package/lib/MWaterLoaderComponent.js +11 -2
  25. package/lib/MWaterTableSelectComponent.d.ts +1 -4
  26. package/lib/MWaterTableSelectComponent.js +10 -12
  27. package/lib/UIComponents.d.ts +2 -2
  28. package/lib/UIComponents.js +4 -12
  29. package/lib/axes/Axis.d.ts +20 -25
  30. package/lib/axes/AxisBuilder.d.ts +7 -4
  31. package/lib/axes/AxisBuilder.js +12 -8
  32. package/lib/axes/AxisComponent.d.ts +6 -9
  33. package/lib/axes/AxisComponent.js +1 -2
  34. package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
  35. package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
  36. package/lib/dashboards/DashboardComponent.d.ts +4 -17
  37. package/lib/dashboards/DashboardComponent.js +20 -67
  38. package/lib/dashboards/DashboardDesign.d.ts +5 -20
  39. package/lib/dashboards/DashboardUpgrader.js +36 -1
  40. package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
  41. package/lib/dashboards/DashboardViewComponent.js +112 -136
  42. package/lib/dashboards/FontStyleEditor.d.ts +8 -0
  43. package/lib/dashboards/FontStyleEditor.js +130 -0
  44. package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
  45. package/lib/dashboards/LayoutOptionsComponent.js +209 -39
  46. package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
  47. package/lib/dashboards/ServerDashboardDataSource.js +52 -33
  48. package/lib/dashboards/SettingsModalComponent.d.ts +4 -15
  49. package/lib/dashboards/SettingsModalComponent.js +24 -38
  50. package/lib/dashboards/WidgetComponent.d.ts +3 -3
  51. package/lib/dashboards/WidgetComponent.js +3 -6
  52. package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
  53. package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
  54. package/lib/dashboards/layoutOptions.d.ts +83 -0
  55. package/lib/dashboards/layoutOptions.js +436 -10
  56. package/lib/datagrids/DatagridComponent.d.ts +2 -9
  57. package/lib/datagrids/DatagridDataSource.d.ts +3 -3
  58. package/lib/datagrids/DatagridDataSource.js +0 -14
  59. package/lib/datagrids/DatagridDesign.d.ts +7 -6
  60. package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -93
  61. package/lib/datagrids/DatagridDesignerComponent.js +8 -6
  62. package/lib/datagrids/DatagridViewComponent.js +1 -1
  63. package/lib/datagrids/FindReplaceModalComponent.d.ts +4 -20
  64. package/lib/datagrids/FindReplaceModalComponent.js +27 -13
  65. package/lib/datagrids/ServerDatagridDataSource.d.ts +8 -7
  66. package/lib/datagrids/ServerDatagridDataSource.js +88 -36
  67. package/lib/demo.js +4 -4
  68. package/lib/index.css +5 -0
  69. package/lib/index.d.ts +2 -1
  70. package/lib/index.js +0 -1
  71. package/lib/layouts/LayoutManager.d.ts +33 -29
  72. package/lib/layouts/LayoutManager.js +2 -8
  73. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -56
  74. package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
  75. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
  76. package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
  77. package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
  78. package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
  79. package/lib/layouts/grid/GridLayoutManager.d.ts +2 -1
  80. package/lib/mWaterLoader.d.ts +2 -0
  81. package/lib/mWaterLoader.js +2 -1
  82. package/lib/maps/AddLayerComponent.d.ts +6 -8
  83. package/lib/maps/AddLayerComponent.js +6 -6
  84. package/lib/maps/BingLayer.js +10 -20
  85. package/lib/maps/BufferLayer.js +5 -2
  86. package/lib/maps/ChoroplethLayer.js +2 -1
  87. package/lib/maps/ClusterLayer.js +3 -1
  88. package/lib/maps/DirectMapDataSource.d.ts +5 -2
  89. package/lib/maps/DirectMapDataSource.js +2 -1
  90. package/lib/maps/EditPopupComponent.js +2 -1
  91. package/lib/maps/GridLayer.js +5 -3
  92. package/lib/maps/GridLayerDesigner.js +0 -1
  93. package/lib/maps/LayerSwitcherComponent.js +1 -1
  94. package/lib/maps/MapComponent.d.ts +3 -11
  95. package/lib/maps/MapComponent.js +3 -3
  96. package/lib/maps/MapDesign.d.ts +2 -13
  97. package/lib/maps/MapFiltersDesignerComponent.d.ts +0 -4
  98. package/lib/maps/MapFiltersDesignerComponent.js +4 -5
  99. package/lib/maps/MarkersLayer.js +30 -25
  100. package/lib/maps/RasterMapViewComponent.d.ts +3 -13
  101. package/lib/maps/RasterMapViewComponent.js +3 -3
  102. package/lib/maps/RegionSelectComponent.d.ts +2 -1
  103. package/lib/maps/ServerMapDataSource.d.ts +3 -4
  104. package/lib/maps/ServerMapDataSource.js +5 -5
  105. package/lib/maps/VectorMapViewComponent.js +2 -1
  106. package/lib/maps/mapSymbols.js +2 -0
  107. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  108. package/lib/maps/vectorMaps.d.ts +1 -0
  109. package/lib/maps/vectorMaps.js +70 -56
  110. package/lib/quickfilter/QuickfilterCompiler.d.ts +1 -1
  111. package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
  112. package/lib/quickfilter/QuickfiltersComponent.js +3 -3
  113. package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
  114. package/lib/richtext/DropdownPaletteItem.js +82 -0
  115. package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
  116. package/lib/richtext/FontColorPaletteItem.js +32 -27
  117. package/lib/richtext/ItemsHtmlConverter.js +12 -3
  118. package/lib/richtext/RichTextComponent.d.ts +26 -52
  119. package/lib/richtext/RichTextComponent.js +166 -128
  120. package/lib/valueFormatter.js +6 -1
  121. package/lib/wellknown.d.ts +5 -0
  122. package/lib/wellknown.js +288 -0
  123. package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
  124. package/lib/widgets/DropdownWidgetComponent.js +48 -25
  125. package/lib/widgets/IFrameWidgetComponent.d.ts +3 -11
  126. package/lib/widgets/ImageWidgetComponent.d.ts +8 -27
  127. package/lib/widgets/MapWidget.d.ts +4 -7
  128. package/lib/widgets/MapWidget.js +2 -1
  129. package/lib/widgets/MarkdownWidget.d.ts +2 -7
  130. package/lib/widgets/TOCWidget.d.ts +2 -9
  131. package/lib/widgets/TOCWidget.js +2 -1
  132. package/lib/widgets/Widget.d.ts +2 -0
  133. package/lib/widgets/WidgetDataSource.d.ts +3 -1
  134. package/lib/widgets/charts/Chart.d.ts +0 -1
  135. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  136. package/lib/widgets/charts/ChartViewComponent.js +11 -3
  137. package/lib/widgets/charts/ChartWidget.d.ts +1 -74
  138. package/lib/widgets/charts/ChartWidget.js +4 -183
  139. package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
  140. package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
  141. package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
  142. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
  143. package/lib/widgets/charts/imagemosaic/ImagePopupComponent.d.ts +2 -7
  144. package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
  145. package/lib/widgets/charts/layered/LayeredChart.js +6 -7
  146. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
  147. package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
  148. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
  149. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +5 -31
  150. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
  151. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -7
  152. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
  153. package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
  154. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
  155. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -105
  156. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
  157. package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
  158. package/lib/widgets/charts/pivot/PivotChart.js +47 -17
  159. package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
  160. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +11 -7
  161. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
  162. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
  163. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
  164. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
  165. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
  166. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
  167. package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
  168. package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -47
  169. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
  170. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +55 -58
  171. package/lib/widgets/charts/table/TableChart.js +8 -4
  172. package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
  173. package/lib/widgets/charts/table/TableChartViewComponent.js +30 -16
  174. package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -13
  175. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -13
  176. package/lib/widgets/text/TextComponent.d.ts +5 -12
  177. package/lib/widgets/text/TextComponent.js +19 -39
  178. package/lib/widgets/text/TextWidget.d.ts +2 -1
  179. package/lib/widgets/text/TextWidget.js +5 -1
  180. package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
  181. package/lib/widgets/text/TextWidgetComponent.js +76 -19
  182. package/lib/widgets/text/TextWidgetDesign.d.ts +16 -2
  183. package/lib/widgets/text/TextWidgetDesign.js +6 -0
  184. package/package.json +4 -4
  185. package/src/ColorComponent.tsx +177 -0
  186. package/src/ColorSchemeFactory.ts +12 -6
  187. package/src/CustomColorsContext.tsx +8 -0
  188. package/src/FiltersDesignerComponent.ts +3 -4
  189. package/src/GlobalFilter.ts +17 -0
  190. package/src/LocaleContextInjector.tsx +14 -13
  191. package/src/MWaterAddRelatedFormComponent.ts +3 -3
  192. package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
  193. package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
  194. package/src/MWaterContextComponent.tsx +42 -33
  195. package/src/MWaterCustomTablesetListComponent.tsx +21 -3
  196. package/src/MWaterGlobalFiltersComponent.ts +8 -8
  197. package/src/MWaterLoaderComponent.ts +14 -4
  198. package/src/MWaterTableSelectComponent.tsx +11 -12
  199. package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
  200. package/src/axes/Axis.ts +24 -25
  201. package/src/axes/AxisBuilder.ts +16 -13
  202. package/src/axes/AxisComponent.ts +3 -4
  203. package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
  204. package/src/dashboards/DashboardComponent.tsx +73 -147
  205. package/src/dashboards/DashboardDesign.ts +5 -25
  206. package/src/dashboards/DashboardUpgrader.ts +41 -1
  207. package/src/dashboards/DashboardViewComponent.tsx +313 -0
  208. package/src/dashboards/FontStyleEditor.tsx +166 -0
  209. package/src/dashboards/LayoutOptionsComponent.tsx +377 -71
  210. package/src/dashboards/ServerDashboardDataSource.ts +52 -33
  211. package/src/dashboards/SettingsModalComponent.tsx +170 -0
  212. package/src/dashboards/WidgetComponent.tsx +6 -12
  213. package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
  214. package/src/dashboards/layoutOptions.tsx +581 -0
  215. package/src/datagrids/DatagridDataSource.ts +6 -12
  216. package/src/datagrids/DatagridDesign.ts +8 -3
  217. package/src/datagrids/DatagridDesignerComponent.tsx +22 -18
  218. package/src/datagrids/DatagridViewComponent.ts +3 -3
  219. package/src/datagrids/ExprCellComponent.ts +0 -1
  220. package/src/datagrids/FindReplaceModalComponent.ts +39 -22
  221. package/src/datagrids/ServerDatagridDataSource.ts +107 -45
  222. package/src/demo.ts +4 -4
  223. package/src/index.css +5 -0
  224. package/src/index.ts +2 -1
  225. package/src/layouts/LayoutManager.ts +44 -42
  226. package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
  227. package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
  228. package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
  229. package/src/mWaterLoader.ts +4 -1
  230. package/src/maps/AddLayerComponent.ts +9 -9
  231. package/src/maps/BingLayer.ts +16 -26
  232. package/src/maps/BufferLayer.ts +5 -2
  233. package/src/maps/ChoroplethLayer.ts +2 -1
  234. package/src/maps/ClusterLayer.ts +3 -1
  235. package/src/maps/DirectMapDataSource.ts +12 -3
  236. package/src/maps/EditPopupComponent.ts +2 -1
  237. package/src/maps/GridLayer.ts +5 -3
  238. package/src/maps/GridLayerDesigner.tsx +0 -1
  239. package/src/maps/LayerSwitcherComponent.tsx +1 -1
  240. package/src/maps/MapComponent.ts +3 -3
  241. package/src/maps/MapDesign.ts +2 -17
  242. package/src/maps/{MapFiltersDesignerComponent.ts → MapFiltersDesignerComponent.tsx} +25 -25
  243. package/src/maps/MarkersLayer.ts +38 -41
  244. package/src/maps/RasterMapViewComponent.ts +3 -3
  245. package/src/maps/ServerMapDataSource.ts +8 -8
  246. package/src/maps/VectorMapViewComponent.tsx +2 -2
  247. package/src/maps/mapSymbols.ts +2 -0
  248. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  249. package/src/maps/vectorMaps.tsx +88 -74
  250. package/src/quickfilter/QuickfilterCompiler.ts +1 -1
  251. package/src/quickfilter/QuickfiltersComponent.ts +3 -3
  252. package/src/richtext/DropdownPaletteItem.tsx +144 -0
  253. package/src/richtext/FontColorPaletteItem.tsx +160 -0
  254. package/src/richtext/ItemsHtmlConverter.ts +15 -5
  255. package/src/richtext/RichTextComponent.tsx +274 -232
  256. package/src/valueFormatter.ts +5 -1
  257. package/src/wellknown.ts +286 -0
  258. package/src/widgets/DropdownWidgetComponent.tsx +75 -0
  259. package/src/widgets/MapWidget.ts +5 -2
  260. package/src/widgets/TOCWidget.ts +2 -1
  261. package/src/widgets/Widget.ts +3 -0
  262. package/src/widgets/WidgetDataSource.ts +3 -1
  263. package/src/widgets/charts/Chart.ts +1 -1
  264. package/src/widgets/charts/ChartViewComponent.ts +16 -3
  265. package/src/widgets/charts/ChartWidget.ts +3 -275
  266. package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
  267. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
  268. package/src/widgets/charts/layered/LayeredChart.ts +4 -6
  269. package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
  270. package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
  271. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
  272. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
  273. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
  274. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
  275. package/src/widgets/charts/pivot/PivotChart.ts +56 -18
  276. package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
  277. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
  278. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
  279. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
  280. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
  281. package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
  282. package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
  283. package/src/widgets/charts/table/TableChart.ts +8 -4
  284. package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
  285. package/src/widgets/charts/table/TableChartViewComponent.ts +32 -19
  286. package/src/widgets/text/TextComponent.tsx +47 -49
  287. package/src/widgets/text/TextWidget.ts +8 -3
  288. package/src/widgets/text/TextWidgetComponent.tsx +249 -0
  289. package/src/widgets/text/TextWidgetDesign.ts +26 -2
  290. package/src/ColorComponent.ts +0 -117
  291. package/src/dashboards/DashboardViewComponent.ts +0 -304
  292. package/src/dashboards/SettingsModalComponent.ts +0 -169
  293. package/src/dashboards/layoutOptions.ts +0 -40
  294. package/src/layout-styles.css +0 -263
  295. package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
  296. package/src/layouts/grid/GridLayoutComponent.ts +0 -67
  297. package/src/layouts/grid/GridLayoutManager.ts +0 -185
  298. package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
  299. package/src/layouts/grid/PaletteItemComponent.ts +0 -28
  300. package/src/layouts/grid/README.md +0 -14
  301. package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
  302. package/src/richtext/FontColorPaletteItem.ts +0 -172
  303. package/src/richtext/FontSizePaletteItem.ts +0 -110
  304. package/src/widgets/DropdownWidgetComponent.ts +0 -78
  305. 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
- }