@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.
- package/lib/ColorComponent.d.ts +10 -11
- package/lib/ColorComponent.js +78 -29
- package/lib/ColorSchemeFactory.d.ts +13 -2
- package/lib/ColorSchemeFactory.js +7 -5
- package/lib/CustomColorsContext.d.ts +6 -0
- package/lib/CustomColorsContext.js +6 -0
- package/lib/FiltersDesignerComponent.d.ts +1 -4
- package/lib/FiltersDesignerComponent.js +2 -3
- package/lib/LocaleContextInjector.d.ts +5 -11
- package/lib/LocaleContextInjector.js +4 -12
- package/lib/MWaterAddRelatedFormComponent.js +3 -3
- package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
- package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
- package/lib/MWaterCompleteTableSelectComponent.d.ts +5 -16
- package/lib/MWaterCompleteTableSelectComponent.js +36 -36
- package/lib/MWaterContextComponent.d.ts +4 -6
- package/lib/MWaterContextComponent.js +4 -13
- package/lib/MWaterLoaderComponent.d.ts +5 -3
- package/lib/MWaterLoaderComponent.js +2 -1
- package/lib/MWaterTableSelectComponent.d.ts +1 -4
- package/lib/MWaterTableSelectComponent.js +10 -12
- package/lib/UIComponents.d.ts +2 -2
- package/lib/UIComponents.js +4 -12
- package/lib/axes/AxisBuilder.d.ts +7 -4
- package/lib/axes/AxisBuilder.js +3 -1
- package/lib/axes/AxisComponent.d.ts +2 -5
- package/lib/axes/AxisComponent.js +1 -2
- package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
- package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
- package/lib/dashboards/DashboardComponent.d.ts +4 -12
- package/lib/dashboards/DashboardComponent.js +18 -38
- package/lib/dashboards/DashboardDesign.d.ts +3 -3
- package/lib/dashboards/DashboardUpgrader.js +36 -1
- package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
- package/lib/dashboards/DashboardViewComponent.js +109 -132
- package/lib/dashboards/FontStyleEditor.d.ts +8 -0
- package/lib/dashboards/FontStyleEditor.js +130 -0
- package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
- package/lib/dashboards/LayoutOptionsComponent.js +211 -42
- package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
- package/lib/dashboards/ServerDashboardDataSource.js +52 -33
- package/lib/dashboards/WidgetComponent.d.ts +3 -3
- package/lib/dashboards/WidgetComponent.js +3 -6
- package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
- package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
- package/lib/dashboards/layoutOptions.d.ts +83 -0
- package/lib/dashboards/layoutOptions.js +436 -10
- package/lib/datagrids/DatagridDesign.d.ts +7 -6
- package/lib/datagrids/ServerDatagridDataSource.d.ts +7 -6
- package/lib/datagrids/ServerDatagridDataSource.js +87 -33
- package/lib/demo.js +3 -3
- package/lib/index.css +5 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +0 -1
- package/lib/layouts/LayoutManager.d.ts +33 -29
- package/lib/layouts/LayoutManager.js +2 -8
- package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -57
- package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
- package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
- package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
- package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
- package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
- package/lib/mWaterLoader.d.ts +2 -0
- package/lib/mWaterLoader.js +2 -1
- package/lib/maps/AddLayerComponent.d.ts +6 -8
- package/lib/maps/AddLayerComponent.js +6 -6
- package/lib/maps/BingLayer.js +10 -20
- package/lib/maps/BufferLayer.js +2 -1
- package/lib/maps/ChoroplethLayer.js +2 -1
- package/lib/maps/DirectMapDataSource.d.ts +5 -2
- package/lib/maps/DirectMapDataSource.js +2 -1
- package/lib/maps/EditPopupComponent.js +2 -1
- package/lib/maps/MapComponent.d.ts +1 -4
- package/lib/maps/MapComponent.js +3 -3
- package/lib/maps/MarkersLayer.js +30 -25
- package/lib/maps/RasterMapViewComponent.d.ts +1 -4
- package/lib/maps/RasterMapViewComponent.js +3 -3
- package/lib/maps/ServerMapDataSource.d.ts +2 -3
- package/lib/maps/ServerMapDataSource.js +5 -5
- package/lib/maps/VectorMapViewComponent.js +2 -1
- package/lib/maps/mapSymbols.js +2 -0
- package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
- package/lib/maps/vectorMaps.js +61 -55
- package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
- package/lib/quickfilter/QuickfiltersComponent.js +3 -3
- package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
- package/lib/richtext/DropdownPaletteItem.js +82 -0
- package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
- package/lib/richtext/FontColorPaletteItem.js +32 -27
- package/lib/richtext/ItemsHtmlConverter.js +12 -3
- package/lib/richtext/RichTextComponent.d.ts +26 -52
- package/lib/richtext/RichTextComponent.js +166 -128
- package/lib/valueFormatter.js +6 -1
- package/lib/wellknown.d.ts +5 -0
- package/lib/wellknown.js +288 -0
- package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
- package/lib/widgets/DropdownWidgetComponent.js +48 -25
- package/lib/widgets/IFrameWidgetComponent.d.ts +1 -2
- package/lib/widgets/ImageWidgetComponent.d.ts +2 -3
- package/lib/widgets/MapWidget.d.ts +2 -0
- package/lib/widgets/MapWidget.js +2 -1
- package/lib/widgets/TOCWidget.js +2 -1
- package/lib/widgets/Widget.d.ts +2 -0
- package/lib/widgets/WidgetDataSource.d.ts +3 -1
- package/lib/widgets/charts/Chart.d.ts +0 -1
- package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
- package/lib/widgets/charts/ChartViewComponent.js +11 -3
- package/lib/widgets/charts/ChartWidget.d.ts +1 -62
- package/lib/widgets/charts/ChartWidget.js +4 -183
- package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
- package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
- package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
- package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
- package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
- package/lib/widgets/charts/layered/LayeredChart.js +6 -7
- package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
- package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
- package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +3 -0
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -2
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
- package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
- package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
- package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -112
- package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
- package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
- package/lib/widgets/charts/pivot/PivotChart.js +47 -17
- package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +1 -1
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
- package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
- package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -28
- package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
- package/lib/widgets/charts/table/TableChart.js +8 -4
- package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
- package/lib/widgets/charts/table/TableChartViewComponent.js +11 -11
- package/lib/widgets/text/TextComponent.d.ts +5 -12
- package/lib/widgets/text/TextComponent.js +19 -39
- package/lib/widgets/text/TextWidget.d.ts +2 -1
- package/lib/widgets/text/TextWidget.js +5 -1
- package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
- package/lib/widgets/text/TextWidgetComponent.js +76 -19
- package/lib/widgets/text/TextWidgetDesign.d.ts +13 -1
- package/lib/widgets/text/TextWidgetDesign.js +6 -0
- package/package.json +4 -4
- package/src/ColorComponent.tsx +177 -0
- package/src/ColorSchemeFactory.ts +12 -6
- package/src/CustomColorsContext.tsx +8 -0
- package/src/FiltersDesignerComponent.ts +3 -4
- package/src/LocaleContextInjector.tsx +14 -13
- package/src/MWaterAddRelatedFormComponent.ts +3 -3
- package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
- package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
- package/src/MWaterContextComponent.tsx +8 -17
- package/src/MWaterLoaderComponent.ts +6 -3
- package/src/MWaterTableSelectComponent.tsx +11 -12
- package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
- package/src/axes/AxisBuilder.ts +7 -5
- package/src/axes/AxisComponent.ts +3 -4
- package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
- package/src/dashboards/DashboardComponent.tsx +71 -107
- package/src/dashboards/DashboardDesign.ts +3 -3
- package/src/dashboards/DashboardUpgrader.ts +41 -1
- package/src/dashboards/DashboardViewComponent.tsx +313 -0
- package/src/dashboards/FontStyleEditor.tsx +166 -0
- package/src/dashboards/LayoutOptionsComponent.tsx +379 -75
- package/src/dashboards/ServerDashboardDataSource.ts +52 -33
- package/src/dashboards/WidgetComponent.tsx +6 -12
- package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
- package/src/dashboards/layoutOptions.tsx +581 -0
- package/src/datagrids/DatagridDesign.ts +8 -3
- package/src/datagrids/ServerDatagridDataSource.ts +106 -43
- package/src/demo.ts +3 -3
- package/src/index.css +5 -0
- package/src/index.ts +1 -1
- package/src/layouts/LayoutManager.ts +44 -42
- package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
- package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
- package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
- package/src/mWaterLoader.ts +4 -1
- package/src/maps/AddLayerComponent.ts +9 -9
- package/src/maps/BingLayer.ts +16 -26
- package/src/maps/BufferLayer.ts +2 -1
- package/src/maps/ChoroplethLayer.ts +2 -1
- package/src/maps/DirectMapDataSource.ts +12 -3
- package/src/maps/EditPopupComponent.ts +2 -1
- package/src/maps/MapComponent.ts +3 -3
- package/src/maps/MarkersLayer.ts +38 -41
- package/src/maps/RasterMapViewComponent.ts +3 -3
- package/src/maps/ServerMapDataSource.ts +7 -7
- package/src/maps/VectorMapViewComponent.tsx +2 -1
- package/src/maps/mapSymbols.ts +2 -0
- package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
- package/src/maps/vectorMaps.tsx +79 -74
- package/src/quickfilter/QuickfiltersComponent.ts +3 -3
- package/src/richtext/DropdownPaletteItem.tsx +144 -0
- package/src/richtext/FontColorPaletteItem.tsx +160 -0
- package/src/richtext/ItemsHtmlConverter.ts +15 -5
- package/src/richtext/RichTextComponent.tsx +274 -232
- package/src/valueFormatter.ts +5 -1
- package/src/wellknown.ts +286 -0
- package/src/widgets/DropdownWidgetComponent.tsx +75 -0
- package/src/widgets/MapWidget.ts +5 -2
- package/src/widgets/TOCWidget.ts +2 -1
- package/src/widgets/Widget.ts +3 -0
- package/src/widgets/WidgetDataSource.ts +3 -1
- package/src/widgets/charts/Chart.ts +1 -1
- package/src/widgets/charts/ChartViewComponent.ts +16 -3
- package/src/widgets/charts/ChartWidget.ts +3 -275
- package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
- package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
- package/src/widgets/charts/layered/LayeredChart.ts +4 -6
- package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
- package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
- package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
- package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
- package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
- package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
- package/src/widgets/charts/pivot/PivotChart.ts +56 -18
- package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
- package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
- package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
- package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
- package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
- package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
- package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
- package/src/widgets/charts/table/TableChart.ts +8 -4
- package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
- package/src/widgets/charts/table/TableChartViewComponent.ts +13 -14
- package/src/widgets/text/TextComponent.tsx +47 -49
- package/src/widgets/text/TextWidget.ts +8 -3
- package/src/widgets/text/TextWidgetComponent.tsx +249 -0
- package/src/widgets/text/TextWidgetDesign.ts +22 -1
- package/src/ColorComponent.ts +0 -117
- package/src/dashboards/DashboardViewComponent.ts +0 -303
- package/src/dashboards/layoutOptions.ts +0 -40
- package/src/layout-styles.css +0 -263
- package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
- package/src/layouts/grid/GridLayoutComponent.ts +0 -67
- package/src/layouts/grid/GridLayoutManager.ts +0 -185
- package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
- package/src/layouts/grid/PaletteItemComponent.ts +0 -28
- package/src/layouts/grid/README.md +0 -14
- package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
- package/src/richtext/FontColorPaletteItem.ts +0 -172
- package/src/richtext/FontSizePaletteItem.ts +0 -110
- package/src/widgets/DropdownWidgetComponent.ts +0 -78
- package/src/widgets/text/TextWidgetComponent.ts +0 -120
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import $ from "jquery"
|
|
2
|
-
import querystring from "querystring"
|
|
3
1
|
import DatagridDataSource from "./DatagridDataSource"
|
|
4
2
|
import compressJson from "../compressJson"
|
|
5
|
-
import
|
|
3
|
+
import querystring from "querystring"
|
|
4
|
+
import { DatagridDesign, JsonQLFilter } from ".."
|
|
5
|
+
import { QuickfiltersDataSource } from "../quickfilter/QuickfiltersDataSource"
|
|
6
|
+
import { Expr, Row } from "@mwater/expressions"
|
|
6
7
|
|
|
7
8
|
export interface ServerDatagridDataSourceOptions {
|
|
8
9
|
/** API url to use for talking to mWater server */
|
|
@@ -38,42 +39,86 @@ export default class ServerDatagridDataSource implements DatagridDataSource {
|
|
|
38
39
|
// Get the data that the widget needs. The widget should implement getData method (see above) to get the data from the server
|
|
39
40
|
// design: design of the widget. Ignored in the case of server-side rendering
|
|
40
41
|
// filters: array of filters to apply. Each is { table: table id, jsonql: jsonql condition with {alias} for tableAlias. Use injectAlias to correct
|
|
41
|
-
getRows(
|
|
42
|
-
|
|
42
|
+
async getRows(
|
|
43
|
+
design: DatagridDesign,
|
|
44
|
+
offset: number,
|
|
45
|
+
limit: number,
|
|
46
|
+
filters: JsonQLFilter[] | undefined,
|
|
47
|
+
callback: (error: any, rows?: Row[]) => void
|
|
48
|
+
) {
|
|
49
|
+
const query: Record<string, any> = {
|
|
43
50
|
client: this.options.client,
|
|
44
51
|
share: this.options.share,
|
|
45
|
-
filters: compressJson(filters),
|
|
46
52
|
rev: this.options.rev,
|
|
47
53
|
offset,
|
|
48
54
|
limit
|
|
49
55
|
}
|
|
50
56
|
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
const filtersJson = JSON.stringify(filters)
|
|
58
|
+
const baseUrl = this.options.apiUrl + `datagrids/${this.options.datagridId}/data`
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
let response: Response
|
|
62
|
+
|
|
63
|
+
// If the filters are too large, we need to send them in the body
|
|
64
|
+
if (filtersJson.length > 5000) {
|
|
65
|
+
response = await fetch(baseUrl + '?' + querystring.stringify(query), {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: { 'Content-Type': 'application/json' },
|
|
68
|
+
body: JSON.stringify({ filters: compressJson(filters) }),
|
|
69
|
+
})
|
|
70
|
+
} else {
|
|
71
|
+
query.filters = compressJson(filters)
|
|
72
|
+
const url = baseUrl + '?' + querystring.stringify(query)
|
|
73
|
+
response = await fetch(url)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
throw new Error(`HTTP error! status: ${response.status}`)
|
|
78
|
+
}
|
|
79
|
+
const data = await response.json()
|
|
80
|
+
callback(null, data)
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.error(error)
|
|
83
|
+
callback(error)
|
|
84
|
+
}
|
|
59
85
|
}
|
|
60
86
|
|
|
61
|
-
countRows(design: DatagridDesign, filters: any, callback: any) {
|
|
62
|
-
const query = {
|
|
87
|
+
async countRows(design: DatagridDesign, filters: any, callback: any) {
|
|
88
|
+
const query: Record<string, any> = {
|
|
63
89
|
client: this.options.client,
|
|
64
90
|
share: this.options.share,
|
|
65
|
-
|
|
66
|
-
rev: this.options.rev,
|
|
91
|
+
rev: this.options.rev
|
|
67
92
|
}
|
|
68
93
|
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
94
|
+
const filtersJson = JSON.stringify(filters)
|
|
95
|
+
const baseUrl = this.options.apiUrl + `datagrids/${this.options.datagridId}/summary`
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
let response: Response
|
|
99
|
+
|
|
100
|
+
// If the filters are too large, we need to send them in the body
|
|
101
|
+
if (filtersJson.length > 5000) {
|
|
102
|
+
response = await fetch(baseUrl + '?' + querystring.stringify(query), {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
headers: { 'Content-Type': 'application/json' },
|
|
105
|
+
body: JSON.stringify({ filters: compressJson(filters) }),
|
|
106
|
+
})
|
|
107
|
+
} else {
|
|
108
|
+
query.filters = compressJson(filters)
|
|
109
|
+
const url = baseUrl + '?' + querystring.stringify(query)
|
|
110
|
+
response = await fetch(url)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
throw new Error(`HTTP error! status: ${response.status}`)
|
|
115
|
+
}
|
|
116
|
+
const data = await response.json()
|
|
117
|
+
callback(null, data?.[0]?.cnt)
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error(error)
|
|
120
|
+
callback(error)
|
|
121
|
+
}
|
|
77
122
|
}
|
|
78
123
|
|
|
79
124
|
getQuickfiltersDataSource() {
|
|
@@ -98,7 +143,7 @@ interface ServerQuickfilterDataSourceOptions {
|
|
|
98
143
|
rev?: number
|
|
99
144
|
}
|
|
100
145
|
|
|
101
|
-
class ServerQuickfilterDataSource {
|
|
146
|
+
class ServerQuickfilterDataSource implements QuickfiltersDataSource {
|
|
102
147
|
options: ServerQuickfilterDataSourceOptions
|
|
103
148
|
// options:
|
|
104
149
|
// apiUrl: API url to use for talking to mWater server
|
|
@@ -111,26 +156,44 @@ class ServerQuickfilterDataSource {
|
|
|
111
156
|
}
|
|
112
157
|
|
|
113
158
|
// Gets the values of the quickfilter at index
|
|
114
|
-
getValues(index:
|
|
115
|
-
const query = {
|
|
159
|
+
async getValues(index: number, expr: Expr, filters: JsonQLFilter[], offset: number | null, limit: number, callback: (error: any, values?: any[]) => void) {
|
|
160
|
+
const query: Record<string, any> = {
|
|
116
161
|
client: this.options.client,
|
|
117
162
|
share: this.options.share,
|
|
118
|
-
|
|
119
|
-
offset,
|
|
163
|
+
offset: offset ?? 0,
|
|
120
164
|
limit,
|
|
121
165
|
rev: this.options.rev
|
|
122
166
|
}
|
|
123
167
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
168
|
+
try {
|
|
169
|
+
let response: Response
|
|
170
|
+
|
|
171
|
+
const url = this.options.apiUrl + `datagrids/${this.options.datagridId}/quickfilters/${index}/values`
|
|
172
|
+
|
|
173
|
+
const filtersJson = JSON.stringify(filters)
|
|
174
|
+
|
|
175
|
+
// If the filters are too large, we need to send them in the body
|
|
176
|
+
if (filtersJson.length > 5000) {
|
|
177
|
+
query.filters = compressJson(filters)
|
|
178
|
+
response = await fetch(url + '?' + querystring.stringify(query), {
|
|
179
|
+
method: 'POST',
|
|
180
|
+
headers: { 'Content-Type': 'application/json' },
|
|
181
|
+
body: JSON.stringify({ filters: compressJson(filters) }),
|
|
182
|
+
})
|
|
183
|
+
} else {
|
|
184
|
+
query.filters = filtersJson
|
|
185
|
+
response = await fetch(url + '?' + querystring.stringify(query))
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (!response.ok) {
|
|
189
|
+
throw new Error(`HTTP error! status: ${response.status}`)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const data = await response.json()
|
|
193
|
+
callback(null, data)
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.error(error)
|
|
196
|
+
callback(error)
|
|
197
|
+
}
|
|
135
198
|
}
|
|
136
|
-
}
|
|
199
|
+
}
|
package/src/demo.ts
CHANGED
|
@@ -42,14 +42,14 @@ $(function () {
|
|
|
42
42
|
"div",
|
|
43
43
|
{ className: "container-fluid", style: { height: "100%", paddingLeft: 0, paddingRight: 0 } },
|
|
44
44
|
R("style", null, "html, body, #main { height: 100% }"),
|
|
45
|
-
R(
|
|
45
|
+
R(MWaterDirectDashboardPane, { apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1) })
|
|
46
|
+
//R(MWaterDashboardPane, {apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1), dashboardId: "38d803820a7a4bf5a1d5ef19cf8c64f3"})
|
|
47
|
+
// R(MWaterDirectMapPane, { apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1) })
|
|
46
48
|
// R(RichTextPane)
|
|
47
49
|
// R(MWaterMapPane, {apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1)})
|
|
48
50
|
// R(TestPane, apiUrl: "https://api.mwater.co/v3/")
|
|
49
51
|
// R(MWaterDashboardPane, apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1), dashboardId: "a855eb0587d845d3ac27aed03c463976", share: "817c76088c7649ec8cc0b8193e547a09")
|
|
50
52
|
// R(MWaterDashboardPane, {apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1), dashboardId: "f99f206ddd4442a981761b8342c58058"})
|
|
51
|
-
// R(MWaterDashboardPane, {apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1), dashboardId: "38d803820a7a4bf5a1d5ef19cf8c64f3"})
|
|
52
|
-
// R(MWaterDirectDashboardPane, { apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1) })
|
|
53
53
|
//R(MWaterDirectDashboardPane, { apiUrl: "http://localhost:1234/v3/", client: window.location.hash.substr(1) })
|
|
54
54
|
//R(MWaterDatagridPane, { apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1) })
|
|
55
55
|
// R(MWaterDirectMapPane, { apiUrl: "https://api.mwater.co/v3/", client: window.location.hash.substr(1) })
|
package/src/index.css
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Lato, Lora, Inter, Merriweather, Roboto
|
|
3
|
+
*/
|
|
4
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&family=Lora:ital,wght@0,400..700;1,400..700&family=Merriweather:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
|
|
5
|
+
|
|
1
6
|
/** Plain link with cursor pointer. Can be span or a */
|
|
2
7
|
.link-plain {
|
|
3
8
|
color: var(--bs-primary);
|
package/src/index.ts
CHANGED
|
@@ -41,6 +41,7 @@ export { default as MWaterContextComponent } from "./MWaterContextComponent"
|
|
|
41
41
|
|
|
42
42
|
export { default as mWaterLoader } from "./mWaterLoader"
|
|
43
43
|
|
|
44
|
+
export { WidgetDataSource } from "./widgets/WidgetDataSource"
|
|
44
45
|
export { default as DirectWidgetDataSource } from "./widgets/DirectWidgetDataSource"
|
|
45
46
|
|
|
46
47
|
import "leaflet/dist/leaflet.css"
|
|
@@ -50,7 +51,6 @@ import "./layouts/decorated-block.css"
|
|
|
50
51
|
import "react-datepicker/dist/react-datepicker.css"
|
|
51
52
|
import "billboard.js/dist/billboard.css"
|
|
52
53
|
import "./index.css"
|
|
53
|
-
import "./layout-styles.css"
|
|
54
54
|
|
|
55
55
|
export { setMapTilerApiKey } from "./maps/vectorMaps"
|
|
56
56
|
|
|
@@ -1,47 +1,56 @@
|
|
|
1
1
|
import { ReactElement, ReactNode } from "react"
|
|
2
|
-
import { BlocksLayoutOptions } from "../dashboards/layoutOptions"
|
|
2
|
+
import { BlocksLayoutOptions, DashboardTheme } from "../dashboards/layoutOptions"
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
/** Options for rendering a widget */
|
|
5
|
+
export interface RenderWidgetOptions {
|
|
6
|
+
id: string
|
|
7
|
+
type: string
|
|
8
|
+
|
|
9
|
+
design: any
|
|
10
|
+
onDesignChange?: (design: any) => void
|
|
11
|
+
|
|
12
|
+
width: number
|
|
13
|
+
|
|
14
|
+
/** height of widget. If not specified, is auto height */
|
|
15
|
+
height?: number
|
|
16
|
+
|
|
17
|
+
/** Priority of widget. Higher priority widgets are rendered first */
|
|
18
|
+
priority?: number
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RenderLayoutOptions {
|
|
22
|
+
/** width of layout */
|
|
23
|
+
width?: number
|
|
10
24
|
|
|
11
|
-
|
|
12
|
-
|
|
25
|
+
/** opaque items object that layout manager understands */
|
|
26
|
+
items: any
|
|
13
27
|
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
/** Called when items changes */
|
|
29
|
+
onItemsChange?: (items: any) => void
|
|
16
30
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
id: string
|
|
20
|
-
type: string
|
|
21
|
-
design: any
|
|
22
|
-
onDesignChange: (design: any) => void
|
|
23
|
-
width: number
|
|
24
|
-
height: number
|
|
25
|
-
}) => ReactElement
|
|
31
|
+
/** called with ({ id:, type:, design:, onDesignChange:, width:, height: }) */
|
|
32
|
+
renderWidget: (options: RenderWidgetOptions) => ReactElement
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
/** layout options to use */
|
|
35
|
+
layoutOptions: BlocksLayoutOptions
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
/** true to disable maps */
|
|
38
|
+
disableMaps?: boolean
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
/** clipboard contents */
|
|
41
|
+
clipboard?: any
|
|
35
42
|
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
/** called when clipboard is changed */
|
|
44
|
+
onClipboardChange?: (clipboard: any) => void
|
|
38
45
|
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
/** message to display if clipboard can't be pasted into current dashboard */
|
|
47
|
+
cantPasteMessage?: string
|
|
48
|
+
}
|
|
41
49
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
/** Responsible for laying out items, rendering widgets and holding them in a data structure that is layout manager specific */
|
|
51
|
+
export default class LayoutManager {
|
|
52
|
+
/** Renders the layout as a react element */
|
|
53
|
+
renderLayout(options: RenderLayoutOptions): ReactNode {
|
|
45
54
|
return null
|
|
46
55
|
}
|
|
47
56
|
|
|
@@ -61,19 +70,12 @@ export default class LayoutManager {
|
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
static createLayoutManager(type: string): LayoutManager {
|
|
64
|
-
|
|
65
|
-
type = type || "grid"
|
|
73
|
+
type = type || "blocks"
|
|
66
74
|
|
|
67
75
|
switch (type) {
|
|
68
|
-
case "
|
|
69
|
-
var GridLayoutManager = require("./grid/GridLayoutManager").default
|
|
70
|
-
return new GridLayoutManager()
|
|
71
|
-
break
|
|
72
|
-
|
|
73
|
-
case "blocks": // New one
|
|
76
|
+
case "blocks":
|
|
74
77
|
var BlocksLayoutManager = require("./blocks/BlocksLayoutManager").default
|
|
75
78
|
return new BlocksLayoutManager()
|
|
76
|
-
break
|
|
77
79
|
|
|
78
80
|
default:
|
|
79
81
|
throw new Error(`Unknown layout manager type ${type}`)
|