@mwater/visualization 5.3.2 → 5.4.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 +1 -1
- package/lib/ColorComponent.js +2 -2
- package/lib/CustomColorsContext.d.ts +0 -1
- package/lib/DateRangeComponent.js +10 -10
- package/lib/LocaleContextInjector.js +2 -2
- package/lib/MWaterAddRelatedFormComponent.js +8 -8
- package/lib/MWaterAddRelatedIndicatorComponent.d.ts +0 -1
- package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
- package/lib/MWaterAssetSystemsListComponent.d.ts +3 -3
- package/lib/MWaterAssetSystemsListComponent.js +4 -3
- package/lib/MWaterCompleteTableSelectComponent.d.ts +33 -34
- package/lib/MWaterCompleteTableSelectComponent.js +39 -38
- package/lib/MWaterCustomTablesetListComponent.d.ts +3 -3
- package/lib/MWaterCustomTablesetListComponent.js +5 -4
- package/lib/MWaterGlobalFiltersComponent.js +4 -4
- package/lib/MWaterLoaderComponent.d.ts +5 -5
- package/lib/MWaterLoaderComponent.js +1 -1
- package/lib/MWaterMetricsTableListComponent.d.ts +3 -3
- package/lib/MWaterMetricsTableListComponent.js +4 -3
- package/lib/MWaterResponsesFilterComponent.js +4 -4
- package/lib/MWaterTableSelectComponent.d.ts +1 -1
- package/lib/MWaterTableSelectComponent.js +5 -5
- package/lib/PopoverComponent.d.ts +4 -4
- package/lib/UIComponents.d.ts +5 -2
- package/lib/axes/AxisBuilder.js +42 -43
- package/lib/axes/AxisColorEditorComponent.d.ts +4 -4
- package/lib/axes/AxisColorEditorComponent.js +25 -60
- package/lib/axes/AxisComponent.d.ts +2 -3
- package/lib/axes/AxisComponent.js +20 -20
- package/lib/axes/BinsComponent.js +6 -6
- package/lib/axes/CategoryMapComponent.d.ts +2 -1
- package/lib/axes/CategoryMapComponent.js +7 -5
- package/lib/axes/ColorPaletteCollectionComponent.js +3 -3
- package/lib/axes/RangesComponent.js +12 -12
- package/lib/compressJson.js +1 -1
- package/lib/dashboards/DashboardComponent.d.ts +2 -0
- package/lib/dashboards/DashboardComponent.js +15 -8
- package/lib/dashboards/DashboardUtils.js +2 -3
- package/lib/dashboards/DashboardViewComponent.js +4 -4
- package/lib/dashboards/FontStyleEditor.js +8 -8
- package/lib/dashboards/LayoutOptionsComponent.js +101 -74
- package/lib/dashboards/SettingsModalComponent.d.ts +3 -4
- package/lib/dashboards/SettingsModalComponent.js +54 -40
- package/lib/dashboards/WidgetComponent.d.ts +0 -1
- package/lib/dashboards/WidgetComponent.js +1 -2
- package/lib/dashboards/layoutOptions.js +11 -7
- package/lib/datagrids/DatagridComponent.d.ts +1 -8
- package/lib/datagrids/DatagridComponent.js +14 -13
- package/lib/datagrids/DatagridDesignerComponent.js +18 -18
- package/lib/datagrids/DatagridQueryBuilder.d.ts +4 -4
- package/lib/datagrids/DatagridUtils.js +2 -2
- package/lib/datagrids/DatagridViewComponent.js +4 -4
- package/lib/datagrids/ExprCellComponent.js +1 -1
- package/lib/datagrids/FindReplaceModalComponent.js +17 -17
- package/lib/datagrids/OrderBysDesignerComponent.js +2 -2
- package/lib/languages.js +2 -2
- package/lib/layouts/DecoratedBlockComponent.js +2 -2
- package/lib/layouts/blocks/BlocksDisplayComponent.js +13 -13
- package/lib/layouts/blocks/BlocksLayoutManager.d.ts +2 -1
- package/lib/layouts/blocks/ClipboardPaletteItemComponent.js +3 -3
- package/lib/layouts/blocks/HorizontalBlockComponent.js +3 -3
- package/lib/layouts/blocks/blockUtils.js +4 -5
- package/lib/mWaterLoader.js +1 -1
- package/lib/maps/AddLayerComponent.js +13 -13
- package/lib/maps/AdminScopeAndDetailLevelComponent.js +5 -5
- package/lib/maps/BaseLayerDesignerComponent.js +2 -2
- package/lib/maps/BufferLayer.js +7 -7
- package/lib/maps/BufferLayerDesignerComponent.js +8 -8
- package/lib/maps/ChoroplethLayer.js +6 -6
- package/lib/maps/ChoroplethLayerDesigner.js +16 -16
- package/lib/maps/ClusterLayer.js +3 -3
- package/lib/maps/ClusterLayerDesignerComponent.js +5 -5
- package/lib/maps/DetailLevelSelectComponent.d.ts +11 -1
- package/lib/maps/DetailLevelSelectComponent.js +3 -3
- package/lib/maps/DirectMapDataSource.js +1 -2
- package/lib/maps/EditHoverOver.js +7 -5
- package/lib/maps/EditPopupComponent.js +2 -2
- package/lib/maps/GridLayer.js +5 -5
- package/lib/maps/GridLayerDesigner.js +15 -15
- package/lib/maps/LayerSwitcherComponent.js +1 -2
- package/lib/maps/LeafletMapComponent.d.ts +1 -1
- package/lib/maps/LeafletMapComponent.js +1 -1
- package/lib/maps/LegendComponent.js +1 -1
- package/lib/maps/MWaterServerLayer.d.ts +0 -1
- package/lib/maps/MWaterServerLayer.js +1 -1
- package/lib/maps/MapComponent.js +8 -8
- package/lib/maps/MapControlComponent.js +1 -1
- package/lib/maps/MapDesignerComponent.js +16 -16
- package/lib/maps/MapFiltersDesignerComponent.js +2 -2
- package/lib/maps/MapLayerViewDesignerComponent.js +8 -8
- package/lib/maps/MapUtils.js +6 -7
- package/lib/maps/MapViewComponent.js +1 -2
- package/lib/maps/MarkerSymbolSelectComponent.js +3 -3
- package/lib/maps/MarkersLayer.js +6 -7
- package/lib/maps/MarkersLayerDesignerComponent.js +22 -22
- package/lib/maps/PopupFilterJoinsEditComponent.js +4 -4
- package/lib/maps/PopupFilterJoinsUtils.js +2 -3
- package/lib/maps/RasterMapViewComponent.d.ts +3 -3
- package/lib/maps/RasterMapViewComponent.js +4 -4
- package/lib/maps/RegionSelectComponent.d.ts +1 -3
- package/lib/maps/RegionSelectComponent.js +1 -2
- package/lib/maps/ScopeAndDetailLevelComponent.js +3 -3
- package/lib/maps/TileUrlLayer.d.ts +1 -1
- package/lib/maps/TileUrlLayer.js +3 -3
- package/lib/maps/VectorMapViewComponent.js +6 -7
- package/lib/maps/ZoomLevelsComponent.js +5 -5
- package/lib/maps/mapSymbols.d.ts +1 -1
- package/lib/maps/mapSymbols.js +51 -50
- package/lib/maps/mapboxUtils.js +2 -3
- package/lib/maps/maps.d.ts +0 -1
- package/lib/maps/vectorMaps.js +14 -15
- package/lib/memoizedDebounce.js +1 -2
- package/lib/quickfilter/DateExprComponent.d.ts +4 -0
- package/lib/quickfilter/DateExprComponent.js +17 -16
- package/lib/quickfilter/IdArrayQuickfilterComponent.js +1 -1
- package/lib/quickfilter/QuickfilterUtils.js +1 -2
- package/lib/quickfilter/QuickfiltersComponent.d.ts +23 -2
- package/lib/quickfilter/QuickfiltersComponent.js +2 -2
- package/lib/quickfilter/QuickfiltersDesignComponent.js +8 -8
- package/lib/quickfilter/TextLiteralComponent.d.ts +35 -2
- package/lib/quickfilter/TextLiteralComponent.js +6 -6
- package/lib/richtext/DropdownPaletteItem.js +1 -1
- package/lib/richtext/ExprItemsHtmlConverter.js +8 -10
- package/lib/richtext/FontColorPaletteItem.js +7 -7
- package/lib/richtext/ItemsHtmlConverter.js +0 -1
- package/lib/richtext/RichTextComponent.d.ts +1 -0
- package/lib/richtext/RichTextComponent.js +33 -29
- package/lib/valueFormatter.js +18 -19
- package/lib/wellknown.js +2 -3
- package/lib/widgets/IFrameWidgetComponent.d.ts +9 -1
- package/lib/widgets/IFrameWidgetComponent.js +3 -3
- package/lib/widgets/ImageUploaderComponent.js +5 -5
- package/lib/widgets/ImageWidget.js +2 -2
- package/lib/widgets/ImageWidgetComponent.d.ts +9 -1
- package/lib/widgets/ImageWidgetComponent.js +20 -20
- package/lib/widgets/ImagelistCarouselComponent.js +1 -1
- package/lib/widgets/MapWidget.js +2 -2
- package/lib/widgets/MarkdownWidget.d.ts +1 -1
- package/lib/widgets/MarkdownWidget.js +1 -1
- package/lib/widgets/TOCWidget.js +11 -12
- package/lib/widgets/WidgetScopesViewComponent.js +1 -1
- package/lib/widgets/charts/Chart.js +1 -1
- package/lib/widgets/charts/ChartViewComponent.js +9 -9
- package/lib/widgets/charts/ChartWidgetComponent.js +4 -4
- package/lib/widgets/charts/calendar/CalendarChart.js +4 -4
- package/lib/widgets/charts/calendar/CalendarChartDesignerComponent.js +7 -7
- package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +3 -3
- package/lib/widgets/charts/imagemosaic/ImageMosaicChart.d.ts +18 -5
- package/lib/widgets/charts/imagemosaic/ImageMosaicChart.js +3 -4
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.js +5 -5
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.d.ts +5 -19
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.js +66 -70
- package/lib/widgets/charts/imagemosaic/ImagePopupComponent.js +1 -1
- package/lib/widgets/charts/layered/LayeredChart.d.ts +1 -1
- package/lib/widgets/charts/layered/LayeredChart.js +9 -9
- package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +8 -8
- package/lib/widgets/charts/layered/LayeredChartCompiler.js +15 -15
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +33 -33
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +16 -16
- package/lib/widgets/charts/layered/LayeredChartUtils.js +1 -2
- package/lib/widgets/charts/layered/LayeredChartViewComponent.js +4 -4
- package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +18 -17
- package/lib/widgets/charts/pivot/PivotChart.d.ts +1 -1
- package/lib/widgets/charts/pivot/PivotChart.js +12 -4
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +5 -5
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +10 -10
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +5 -5
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +1 -1
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +5 -6
- package/lib/widgets/charts/pivot/PivotChartUtils.js +11 -12
- package/lib/widgets/charts/pivot/PivotChartViewComponent.js +9 -9
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +30 -30
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +28 -26
- package/lib/widgets/charts/table/OrderingsComponent.js +2 -2
- package/lib/widgets/charts/table/TableChart.js +3 -3
- package/lib/widgets/charts/table/TableChartDesignerComponent.js +17 -17
- package/lib/widgets/charts/table/TableChartViewComponent.js +3 -3
- package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -3
- package/lib/widgets/text/ExprInsertModalComponent.js +2 -14
- package/lib/widgets/text/ExprItemEditorComponent.js +4 -4
- package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -3
- package/lib/widgets/text/ExprUpdateModalComponent.js +3 -15
- package/lib/widgets/text/TextComponent.js +3 -3
- package/lib/widgets/text/TextWidget.d.ts +1 -1
- package/lib/widgets/text/TextWidgetComponent.js +11 -11
- package/lib/widgets/text/TextWidgetDesign.d.ts +2 -1
- package/lib/widgets/text/TextWidgetDesign.js +1 -2
- package/package.json +3 -3
- package/src/ColorComponent.tsx +2 -2
- package/src/DateRangeComponent.ts +10 -10
- package/src/LocaleContextInjector.tsx +1 -1
- package/src/MWaterAddRelatedFormComponent.ts +7 -7
- package/src/MWaterAddRelatedIndicatorComponent.ts +5 -5
- package/src/MWaterAssetSystemsListComponent.tsx +3 -3
- package/src/MWaterCompleteTableSelectComponent.tsx +36 -35
- package/src/MWaterCustomTablesetListComponent.tsx +4 -4
- package/src/MWaterGlobalFiltersComponent.ts +4 -4
- package/src/MWaterLoaderComponent.ts +1 -1
- package/src/MWaterMetricsTableListComponent.tsx +3 -3
- package/src/MWaterResponsesFilterComponent.ts +6 -6
- package/src/MWaterTableSelectComponent.tsx +6 -7
- package/src/axes/AxisBuilder.ts +42 -44
- package/src/axes/AxisColorEditorComponent.tsx +178 -0
- package/src/axes/AxisComponent.ts +20 -20
- package/src/axes/BinsComponent.tsx +6 -6
- package/src/axes/CategoryMapComponent.ts +10 -10
- package/src/axes/ColorPaletteCollectionComponent.tsx +3 -3
- package/src/axes/RangesComponent.ts +14 -14
- package/src/dashboards/DashboardComponent.tsx +21 -9
- package/src/dashboards/DashboardViewComponent.tsx +3 -3
- package/src/dashboards/FontStyleEditor.tsx +8 -8
- package/src/dashboards/LayoutOptionsComponent.tsx +74 -74
- package/src/dashboards/SettingsModalComponent.tsx +134 -107
- package/src/dashboards/layoutOptions.tsx +5 -1
- package/src/datagrids/DatagridComponent.ts +65 -62
- package/src/datagrids/DatagridDesignerComponent.tsx +17 -17
- package/src/datagrids/DatagridUtils.ts +2 -2
- package/src/datagrids/DatagridViewComponent.ts +3 -3
- package/src/datagrids/ExprCellComponent.ts +1 -1
- package/src/datagrids/FindReplaceModalComponent.ts +13 -13
- package/src/datagrids/OrderBysDesignerComponent.tsx +2 -2
- package/src/globals.d.ts +7 -1
- package/src/languages.ts +2 -2
- package/src/layouts/blocks/BlocksDisplayComponent.tsx +13 -13
- package/src/layouts/blocks/BlocksLayoutManager.ts +3 -2
- package/src/layouts/blocks/ClipboardPaletteItemComponent.ts +3 -3
- package/src/maps/AddLayerComponent.ts +13 -13
- package/src/maps/AdminScopeAndDetailLevelComponent.ts +5 -5
- package/src/maps/BaseLayerDesignerComponent.ts +8 -8
- package/src/maps/BufferLayer.ts +5 -5
- package/src/maps/BufferLayerDesignerComponent.ts +8 -8
- package/src/maps/ChoroplethLayer.ts +3 -3
- package/src/maps/ChoroplethLayerDesigner.tsx +16 -16
- package/src/maps/ClusterLayer.ts +3 -3
- package/src/maps/ClusterLayerDesignerComponent.ts +5 -5
- package/src/maps/DetailLevelSelectComponent.ts +3 -3
- package/src/maps/EditHoverOver.tsx +5 -5
- package/src/maps/EditPopupComponent.ts +2 -2
- package/src/maps/GridLayer.ts +5 -5
- package/src/maps/GridLayerDesigner.tsx +15 -16
- package/src/maps/MWaterServerLayer.ts +1 -1
- package/src/maps/MapComponent.ts +6 -6
- package/src/maps/MapControlComponent.ts +1 -1
- package/src/maps/MapDesignerComponent.tsx +20 -20
- package/src/maps/MapFiltersDesignerComponent.tsx +3 -3
- package/src/maps/MapLayerViewDesignerComponent.ts +9 -9
- package/src/maps/MarkerSymbolSelectComponent.ts +4 -5
- package/src/maps/MarkersLayerDesignerComponent.ts +22 -22
- package/src/maps/PopupFilterJoinsEditComponent.ts +4 -4
- package/src/maps/RasterMapViewComponent.ts +2 -2
- package/src/maps/RegionSelectComponent.ts +1 -2
- package/src/maps/ScopeAndDetailLevelComponent.ts +3 -3
- package/src/maps/TileUrlLayer.tsx +3 -3
- package/src/maps/VectorMapViewComponent.tsx +5 -5
- package/src/maps/ZoomLevelsComponent.ts +6 -6
- package/src/maps/mapSymbols.ts +49 -49
- package/src/maps/vectorMaps.tsx +2 -2
- package/src/quickfilter/DateExprComponent.ts +19 -18
- package/src/quickfilter/IdArrayQuickfilterComponent.ts +1 -1
- package/src/quickfilter/QuickfiltersComponent.ts +1 -1
- package/src/quickfilter/QuickfiltersDesignComponent.tsx +9 -9
- package/src/quickfilter/TextLiteralComponent.ts +4 -4
- package/src/richtext/DropdownPaletteItem.tsx +1 -1
- package/src/richtext/ExprItemsHtmlConverter.ts +8 -10
- package/src/richtext/ItemsHtmlConverter.ts +0 -1
- package/src/richtext/RichTextComponent.tsx +31 -31
- package/src/valueFormatter.ts +14 -14
- package/src/widgets/IFrameWidgetComponent.ts +3 -3
- package/src/widgets/ImageUploaderComponent.tsx +5 -5
- package/src/widgets/ImageWidget.ts +2 -2
- package/src/widgets/ImageWidgetComponent.ts +26 -26
- package/src/widgets/ImagelistCarouselComponent.ts +2 -2
- package/src/widgets/MapWidget.ts +1 -1
- package/src/widgets/MarkdownWidget.ts +1 -1
- package/src/widgets/TOCWidget.ts +13 -14
- package/src/widgets/WidgetScopesViewComponent.ts +1 -1
- package/src/widgets/charts/Chart.ts +1 -1
- package/src/widgets/charts/ChartViewComponent.ts +4 -4
- package/src/widgets/charts/ChartWidgetComponent.tsx +3 -3
- package/src/widgets/charts/calendar/CalendarChart.ts +4 -4
- package/src/widgets/charts/calendar/CalendarChartDesignerComponent.ts +7 -7
- package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +2 -2
- package/src/widgets/charts/imagemosaic/ImageMosaicChart.ts +25 -8
- package/src/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.ts +5 -5
- package/src/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.tsx +128 -0
- package/src/widgets/charts/layered/LayeredChart.ts +9 -9
- package/src/widgets/charts/layered/LayeredChartCompiler.ts +45 -45
- package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +39 -39
- package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +18 -19
- package/src/widgets/charts/layered/LayeredChartViewComponent.ts +1 -1
- package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +22 -23
- package/src/widgets/charts/pivot/PivotChart.ts +15 -5
- package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +12 -12
- package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +5 -5
- package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +7 -8
- package/src/widgets/charts/pivot/PivotChartViewComponent.tsx +6 -6
- package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +30 -30
- package/src/widgets/charts/table/OrderingsComponent.tsx +2 -2
- package/src/widgets/charts/table/TableChart.ts +3 -3
- package/src/widgets/charts/table/TableChartDesignerComponent.ts +16 -16
- package/src/widgets/charts/table/TableChartViewComponent.ts +2 -2
- package/src/widgets/text/{ExprInsertModalComponent.ts → ExprInsertModalComponent.tsx} +18 -20
- package/src/widgets/text/ExprItemEditorComponent.tsx +4 -4
- package/src/widgets/text/{ExprUpdateModalComponent.ts → ExprUpdateModalComponent.tsx} +18 -20
- package/src/widgets/text/TextComponent.tsx +2 -2
- package/src/widgets/text/TextWidgetComponent.tsx +10 -10
- package/src/widgets/text/TextWidgetDesign.ts +3 -1
- package/src/axes/AxisColorEditorComponent.ts +0 -210
- package/src/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.ts +0 -117
|
@@ -67,7 +67,7 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
67
67
|
this.updateDesign({ cellColor });
|
|
68
68
|
};
|
|
69
69
|
renderTable() {
|
|
70
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ",
|
|
70
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ", T `Data Source`), ": ", R(expressions_ui_2.TableSelectComponent, {
|
|
71
71
|
schema: this.props.schema,
|
|
72
72
|
value: this.props.design.table,
|
|
73
73
|
onChange: this.handleTableChange,
|
|
@@ -76,12 +76,12 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
76
76
|
}));
|
|
77
77
|
}
|
|
78
78
|
renderTitle() {
|
|
79
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" },
|
|
79
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Title`), R("input", {
|
|
80
80
|
type: "text",
|
|
81
81
|
className: "form-control form-control-sm",
|
|
82
82
|
value: this.props.design.titleText,
|
|
83
83
|
onChange: this.handleTitleTextChange,
|
|
84
|
-
placeholder:
|
|
84
|
+
placeholder: T `Untitled`
|
|
85
85
|
}));
|
|
86
86
|
}
|
|
87
87
|
renderFilter() {
|
|
@@ -89,7 +89,7 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
89
89
|
if (!this.props.design.table) {
|
|
90
90
|
return null;
|
|
91
91
|
}
|
|
92
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), " ",
|
|
92
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), " ", T `Filters`), R("div", { style: { marginLeft: 8 } }, react_1.default.createElement(expressions_ui_1.FilterExprComponent, {
|
|
93
93
|
schema: this.props.schema,
|
|
94
94
|
dataSource: this.props.dataSource,
|
|
95
95
|
onChange: this.handleFilterChange,
|
|
@@ -101,7 +101,7 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
101
101
|
if (!this.props.design.table) {
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
-
return R(ui.SectionComponent, { label:
|
|
104
|
+
return R(ui.SectionComponent, { label: T `Date Axis` }, R(AxisComponent_1.default, {
|
|
105
105
|
schema: this.props.schema,
|
|
106
106
|
dataSource: this.props.dataSource,
|
|
107
107
|
table: this.props.design.table,
|
|
@@ -117,7 +117,7 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
117
117
|
if (!this.props.design.table || !this.props.design.dateAxis) {
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
|
-
return R(ui.SectionComponent, { label:
|
|
120
|
+
return R(ui.SectionComponent, { label: T `Value Axis` }, R(AxisComponent_1.default, {
|
|
121
121
|
schema: this.props.schema,
|
|
122
122
|
dataSource: this.props.dataSource,
|
|
123
123
|
table: this.props.design.table,
|
|
@@ -130,7 +130,7 @@ class CalendarChartDesignerComponent extends react_1.default.Component {
|
|
|
130
130
|
}));
|
|
131
131
|
}
|
|
132
132
|
renderCellColor() {
|
|
133
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }),
|
|
133
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }), T `Cell Color`), R("div", null, R(ColorComponent_1.default, {
|
|
134
134
|
color: this.props.design.cellColor || "#FDAE61",
|
|
135
135
|
onChange: this.handleCellColorChange
|
|
136
136
|
})));
|
|
@@ -33,7 +33,7 @@ const R = react_1.default.createElement;
|
|
|
33
33
|
const moment_1 = __importDefault(require("moment"));
|
|
34
34
|
const AxisBuilder_1 = __importDefault(require("../../../axes/AxisBuilder"));
|
|
35
35
|
const d3 = __importStar(require("d3"));
|
|
36
|
-
const
|
|
36
|
+
const expressions_ui_1 = require("@mwater/expressions-ui");
|
|
37
37
|
// Require d3-tip to use it
|
|
38
38
|
const d3_tip_1 = __importDefault(require("d3-tip"));
|
|
39
39
|
// creates a d3 calendar visualization
|
|
@@ -43,7 +43,7 @@ class CalendarChartViewComponent extends react_1.default.Component {
|
|
|
43
43
|
monthsStrokeWidth: 1,
|
|
44
44
|
highlightCellFillColor: "#000000"
|
|
45
45
|
};
|
|
46
|
-
static contextType =
|
|
46
|
+
static contextType = expressions_ui_1.LocaleContext;
|
|
47
47
|
axisBuilder;
|
|
48
48
|
reloading;
|
|
49
49
|
chart_container;
|
|
@@ -92,7 +92,7 @@ class CalendarChartViewComponent extends react_1.default.Component {
|
|
|
92
92
|
}
|
|
93
93
|
const scopeData = {
|
|
94
94
|
name: this.axisBuilder.summarizeAxis(this.props.design.dateAxis, this.context) +
|
|
95
|
-
|
|
95
|
+
T ` is ` +
|
|
96
96
|
this.axisBuilder.formatValue(this.props.design.dateAxis, data, this.context),
|
|
97
97
|
filter: {
|
|
98
98
|
jsonql: this.axisBuilder.createValueFilter(this.props.design.dateAxis, data),
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { DataSource, Schema } from "@mwater/expressions";
|
|
2
|
+
import { DataSource, Expr, Schema } from "@mwater/expressions";
|
|
3
3
|
import Chart, { ChartCreateViewElementOptions } from "../Chart";
|
|
4
4
|
import { JsonQLFilter } from "../../..";
|
|
5
|
+
import { Axis } from "../../../axes/Axis";
|
|
6
|
+
export interface ImageMosaicChartDesign {
|
|
7
|
+
/** Version of design */
|
|
8
|
+
version?: number;
|
|
9
|
+
/** Table to use */
|
|
10
|
+
table: string;
|
|
11
|
+
/** Title text */
|
|
12
|
+
titleText: string;
|
|
13
|
+
/** Image axis */
|
|
14
|
+
imageAxis: Axis;
|
|
15
|
+
/** Optional filter */
|
|
16
|
+
filter: Expr;
|
|
17
|
+
}
|
|
5
18
|
export default class ImageMosaicChart extends Chart {
|
|
6
|
-
cleanDesign(design:
|
|
7
|
-
validateDesign(design:
|
|
8
|
-
isEmpty(design:
|
|
19
|
+
cleanDesign(design: ImageMosaicChartDesign, schema: Schema): ImageMosaicChartDesign;
|
|
20
|
+
validateDesign(design: ImageMosaicChartDesign, schema: Schema): string | null;
|
|
21
|
+
isEmpty(design: ImageMosaicChartDesign): boolean;
|
|
9
22
|
createDesignerElement(options: any): React.FunctionComponentElement<{
|
|
10
23
|
schema: any;
|
|
11
|
-
design:
|
|
24
|
+
design: ImageMosaicChartDesign;
|
|
12
25
|
dataSource: any;
|
|
13
26
|
filters: any;
|
|
14
27
|
onDesignChange: (design: any) => any;
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const R = react_1.default.createElement;
|
|
9
8
|
const immer_1 = __importDefault(require("immer"));
|
|
10
9
|
const expressions_1 = require("@mwater/expressions");
|
|
11
10
|
const Chart_1 = __importDefault(require("../Chart"));
|
|
@@ -44,12 +43,12 @@ class ImageMosaicChart extends Chart_1.default {
|
|
|
44
43
|
const axisBuilder = new AxisBuilder_1.default({ schema });
|
|
45
44
|
// Check that has table
|
|
46
45
|
if (!design.table) {
|
|
47
|
-
return
|
|
46
|
+
return T `Missing data source`;
|
|
48
47
|
}
|
|
49
48
|
// Check that has axes
|
|
50
49
|
let error = null;
|
|
51
50
|
if (!design.imageAxis) {
|
|
52
|
-
error = error ||
|
|
51
|
+
error = error || T `Missing image`;
|
|
53
52
|
}
|
|
54
53
|
error = error || axisBuilder.validateAxis({ axis: design.imageAxis });
|
|
55
54
|
return error;
|
|
@@ -156,7 +155,7 @@ class ImageMosaicChart extends Chart_1.default {
|
|
|
156
155
|
return react_1.default.createElement(ImageMosaicChartViewComponent, props);
|
|
157
156
|
}
|
|
158
157
|
createDataTable(design, schema, dataSource, data) {
|
|
159
|
-
alert(
|
|
158
|
+
alert(T `Not available for Image Mosaics`);
|
|
160
159
|
return [];
|
|
161
160
|
}
|
|
162
161
|
// TODO
|
|
@@ -52,7 +52,7 @@ class ImageMosaicChartDesignerComponent extends react_1.default.Component {
|
|
|
52
52
|
return this.updateDesign({ imageAxis });
|
|
53
53
|
};
|
|
54
54
|
renderTable() {
|
|
55
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ",
|
|
55
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ", T `Data Source`), ": ", R(expressions_ui_2.TableSelectComponent, {
|
|
56
56
|
schema: this.props.schema,
|
|
57
57
|
value: this.props.design.table,
|
|
58
58
|
onChange: this.handleTableChange,
|
|
@@ -61,12 +61,12 @@ class ImageMosaicChartDesignerComponent extends react_1.default.Component {
|
|
|
61
61
|
}));
|
|
62
62
|
}
|
|
63
63
|
renderTitle() {
|
|
64
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" },
|
|
64
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Title`), R("input", {
|
|
65
65
|
type: "text",
|
|
66
66
|
className: "form-control form-control-sm",
|
|
67
67
|
value: this.props.design.titleText,
|
|
68
68
|
onChange: this.handleTitleTextChange,
|
|
69
|
-
placeholder:
|
|
69
|
+
placeholder: T `Untitled`
|
|
70
70
|
}));
|
|
71
71
|
}
|
|
72
72
|
renderFilter() {
|
|
@@ -74,7 +74,7 @@ class ImageMosaicChartDesignerComponent extends react_1.default.Component {
|
|
|
74
74
|
if (!this.props.design.table) {
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
|
-
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), " ",
|
|
77
|
+
return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), " ", T `Filters`), R("div", { style: { marginLeft: 8 } }, react_1.default.createElement(expressions_ui_1.FilterExprComponent, {
|
|
78
78
|
schema: this.props.schema,
|
|
79
79
|
dataSource: this.props.dataSource,
|
|
80
80
|
onChange: this.handleFilterChange,
|
|
@@ -86,7 +86,7 @@ class ImageMosaicChartDesignerComponent extends react_1.default.Component {
|
|
|
86
86
|
if (!this.props.design.table) {
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
|
-
return R(ui.SectionComponent, { label:
|
|
89
|
+
return R(ui.SectionComponent, { label: T `Image Axis` }, R(AxisComponent_1.default, {
|
|
90
90
|
schema: this.props.schema,
|
|
91
91
|
dataSource: this.props.dataSource,
|
|
92
92
|
table: this.props.design.table,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import ImagePopupComponent from "./ImagePopupComponent";
|
|
3
2
|
import { DataSource } from "@mwater/expressions";
|
|
3
|
+
import { ImageMosaicChartDesign } from "./ImageMosaicChart";
|
|
4
4
|
export interface ImageMosaicChartViewComponentProps {
|
|
5
5
|
/** Design of chart */
|
|
6
|
-
design:
|
|
6
|
+
design: ImageMosaicChartDesign;
|
|
7
7
|
/** Data that the chart has requested. In format [image: {image data or imagelist data}] */
|
|
8
8
|
data: any;
|
|
9
9
|
/** Data source to use */
|
|
@@ -12,20 +12,6 @@ export interface ImageMosaicChartViewComponentProps {
|
|
|
12
12
|
height?: number;
|
|
13
13
|
onRowClick?: any;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
shouldComponentUpdate(prevProps: any): boolean;
|
|
19
|
-
handleClick: (primaryKey: any, image: any) => any;
|
|
20
|
-
renderImage: (primaryKey: any, image: any, imageManager: any) => React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
21
|
-
renderImages(imageManager: any): (React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> | React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>[])[];
|
|
22
|
-
render(): React.ReactElement<{
|
|
23
|
-
style: {
|
|
24
|
-
width: number | undefined;
|
|
25
|
-
height: number | undefined;
|
|
26
|
-
position: string;
|
|
27
|
-
overflowY: string;
|
|
28
|
-
};
|
|
29
|
-
className: string;
|
|
30
|
-
}, string | React.JSXElementConstructor<any>>;
|
|
31
|
-
}
|
|
15
|
+
/** Creates an image mosaic chart */
|
|
16
|
+
declare function ImageMosaicChartViewComponent(props: ImageMosaicChartViewComponentProps): React.JSX.Element;
|
|
17
|
+
export default ImageMosaicChartViewComponent;
|
|
@@ -3,85 +3,81 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
7
6
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const react_2 = require("react");
|
|
9
9
|
const react_lazy_load_image_component_1 = require("react-lazy-load-image-component");
|
|
10
10
|
const RotationAwareImageComponent_1 = __importDefault(require("@mwater/forms/lib/RotationAwareImageComponent"));
|
|
11
11
|
const ImagePopupComponent_1 = __importDefault(require("./ImagePopupComponent"));
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
/** Creates an image mosaic chart */
|
|
13
|
+
function ImageMosaicChartViewComponent(props) {
|
|
14
|
+
const { design, data, dataSource, width, height, onRowClick } = props;
|
|
15
|
+
const imagePopupRef = (0, react_2.useRef)(null);
|
|
16
|
+
const [isPrinting, setIsPrinting] = (0, react_2.useState)(false);
|
|
17
|
+
(0, react_2.useEffect)(() => {
|
|
18
|
+
const mediaQueryList = window.matchMedia('print');
|
|
19
|
+
const handlePrintChange = (mql) => {
|
|
20
|
+
setIsPrinting(mql.matches);
|
|
21
|
+
};
|
|
22
|
+
mediaQueryList.addEventListener('change', handlePrintChange);
|
|
23
|
+
return () => {
|
|
24
|
+
mediaQueryList.removeEventListener('change', handlePrintChange);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
const handleClick = (0, react_2.useCallback)((primaryKey, image) => {
|
|
28
|
+
if (onRowClick) {
|
|
29
|
+
return onRowClick(design.table, primaryKey);
|
|
21
30
|
}
|
|
22
31
|
else {
|
|
23
|
-
return
|
|
32
|
+
return imagePopupRef.current?.show(image);
|
|
24
33
|
}
|
|
25
|
-
};
|
|
34
|
+
}, [onRowClick, design.table]);
|
|
26
35
|
// Render a single image
|
|
27
|
-
renderImage = (primaryKey, image, imageManager) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
height: 120,
|
|
33
|
-
width: 80,
|
|
34
|
-
onClick: () => this.handleClick(primaryKey, image)
|
|
35
|
-
}));
|
|
36
|
-
};
|
|
36
|
+
const renderImage = (0, react_2.useCallback)((primaryKey, image, imageManager) => {
|
|
37
|
+
const imageComponent = (react_1.default.createElement(RotationAwareImageComponent_1.default, { imageManager: imageManager, image: image, thumbnail: true, height: 120, width: 80, onClick: () => handleClick(primaryKey, image) }));
|
|
38
|
+
// DISABLED PRINTING AS WAS CRASHING CHROME
|
|
39
|
+
return isPrinting && false ? (react_1.default.createElement("div", { style: { display: "inline-block", minWidth: "50px" }, key: image.id }, imageComponent)) : (react_1.default.createElement(react_lazy_load_image_component_1.LazyLoadComponent, { key: image.id }, imageComponent));
|
|
40
|
+
}, [handleClick, isPrinting]);
|
|
37
41
|
// Render images
|
|
38
|
-
renderImages(imageManager) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// Ignore nulls (https://github.com/mWater/mwater-server/issues/202)
|
|
46
|
-
if (!imageObj) {
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
if (lodash_1.default.isString(imageObj)) {
|
|
50
|
-
imageObj = JSON.parse(imageObj);
|
|
51
|
-
}
|
|
52
|
-
if (lodash_1.default.isArray(imageObj)) {
|
|
53
|
-
result.push(imageObj.map((image) => this.renderImage(row.id, image, imageManager)));
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
result.push(this.renderImage(row.id, imageObj, imageManager));
|
|
57
|
-
}
|
|
42
|
+
const renderImages = (0, react_2.useCallback)((imageManager) => {
|
|
43
|
+
const result = [];
|
|
44
|
+
for (let row of data) {
|
|
45
|
+
let imageObj = row.image;
|
|
46
|
+
// Ignore nulls (https://github.com/mWater/mwater-server/issues/202)
|
|
47
|
+
if (!imageObj) {
|
|
48
|
+
continue;
|
|
58
49
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
50
|
+
if (lodash_1.default.isString(imageObj)) {
|
|
51
|
+
imageObj = JSON.parse(imageObj);
|
|
52
|
+
}
|
|
53
|
+
if (lodash_1.default.isArray(imageObj)) {
|
|
54
|
+
result.push(imageObj.map((image) => renderImage(row.id, image, imageManager)));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result.push(renderImage(row.id, imageObj, imageManager));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}, [data, renderImage]);
|
|
62
|
+
const titleStyle = {
|
|
63
|
+
textAlign: "center",
|
|
64
|
+
fontSize: "14px",
|
|
65
|
+
fontWeight: "bold"
|
|
66
|
+
};
|
|
67
|
+
const style = {
|
|
68
|
+
width,
|
|
69
|
+
height,
|
|
70
|
+
position: "relative",
|
|
71
|
+
overflowY: "auto"
|
|
72
|
+
};
|
|
73
|
+
const title = design.titleText;
|
|
74
|
+
const imageManager = {
|
|
75
|
+
getImageThumbnailUrl: (id, success, error) => success(dataSource.getImageUrl(id, 100)),
|
|
76
|
+
getImageUrl: (id, success, error) => success(dataSource.getImageUrl(id))
|
|
77
|
+
};
|
|
78
|
+
return (react_1.default.createElement("div", { style: style, className: "image-mosaic" },
|
|
79
|
+
title && react_1.default.createElement("p", { style: titleStyle }, title),
|
|
80
|
+
react_1.default.createElement(ImagePopupComponent_1.default, { ref: imagePopupRef, imageManager: imageManager }),
|
|
81
|
+
react_1.default.createElement("div", null, renderImages(imageManager))));
|
|
86
82
|
}
|
|
87
83
|
exports.default = ImageMosaicChartViewComponent;
|
|
@@ -11,7 +11,7 @@ export default class LayeredChart extends Chart {
|
|
|
11
11
|
validateDesign(design: LayeredChartDesign, schema: Schema): string | null | undefined;
|
|
12
12
|
isEmpty(design: any): boolean;
|
|
13
13
|
createDesignerElement(options: any): React.CElement<import("./LayeredChartDesignerComponent").LayeredChartDesignerComponentProps, LayeredChartDesignerComponent>;
|
|
14
|
-
getData(design: any, schema: Schema, dataSource: DataSource, filters: JsonQLFilter[], callback: any):
|
|
14
|
+
getData(design: any, schema: Schema, dataSource: DataSource, filters: JsonQLFilter[], callback: any): any;
|
|
15
15
|
createViewElement(options: ChartCreateViewElementOptions): React.CElement<any, LayeredChartViewComponent>;
|
|
16
16
|
createDropdownItems(design: any, schema: Schema, widgetDataSource: WidgetDataSource, filters: any): {
|
|
17
17
|
label: string;
|
|
@@ -114,23 +114,23 @@ class LayeredChart extends Chart_1.default {
|
|
|
114
114
|
return axisBuilder.getAxisType(l.axes.x);
|
|
115
115
|
}));
|
|
116
116
|
if (xAxisTypes.length > 1) {
|
|
117
|
-
return
|
|
117
|
+
return T `All x axes must be of same type`;
|
|
118
118
|
}
|
|
119
119
|
for (let layerId = 0, end = design.layers.length, asc = 0 <= end; asc ? layerId < end : layerId > end; asc ? layerId++ : layerId--) {
|
|
120
120
|
const layer = design.layers[layerId];
|
|
121
121
|
// Check that has table
|
|
122
122
|
if (!layer.table) {
|
|
123
|
-
return
|
|
123
|
+
return T `Missing data source`;
|
|
124
124
|
}
|
|
125
125
|
// Check that has y axis
|
|
126
126
|
if (!layer.axes.y) {
|
|
127
|
-
return
|
|
127
|
+
return T `Missing Y Axis`;
|
|
128
128
|
}
|
|
129
129
|
if (!layer.axes.x && compiler.isXAxisRequired(design, layerId)) {
|
|
130
|
-
return
|
|
130
|
+
return T `Missing X Axis`;
|
|
131
131
|
}
|
|
132
132
|
if (!layer.axes.color && compiler.isColorAxisRequired(design, layerId)) {
|
|
133
|
-
return
|
|
133
|
+
return T `Missing Color Axis`;
|
|
134
134
|
}
|
|
135
135
|
error = null;
|
|
136
136
|
// Validate axes
|
|
@@ -232,7 +232,7 @@ class LayeredChart extends Chart_1.default {
|
|
|
232
232
|
design = this.cleanDesign(design, schema);
|
|
233
233
|
return widgetDataSource.getData(design, filters, (err, data) => {
|
|
234
234
|
if (err) {
|
|
235
|
-
return alert(
|
|
235
|
+
return alert(T `Unable to load data`);
|
|
236
236
|
}
|
|
237
237
|
else {
|
|
238
238
|
return LayeredChartSvgFileSaver_1.default.save(design, data, schema, format);
|
|
@@ -244,8 +244,8 @@ class LayeredChart extends Chart_1.default {
|
|
|
244
244
|
return [];
|
|
245
245
|
}
|
|
246
246
|
return [
|
|
247
|
-
{ label:
|
|
248
|
-
{ label:
|
|
247
|
+
{ label: T `Save as SVG`, onClick: save.bind(null, "svg") },
|
|
248
|
+
{ label: T `Save as PNG`, onClick: save.bind(null, "png") }
|
|
249
249
|
];
|
|
250
250
|
}
|
|
251
251
|
createDataTable(design, schema, dataSource, data, locale) {
|
|
@@ -254,7 +254,7 @@ class LayeredChart extends Chart_1.default {
|
|
|
254
254
|
const headers = [];
|
|
255
255
|
// Only allow if either all layers have x axis or one layer
|
|
256
256
|
if (!design.layers.every((layer) => layer.axes.x != null) && design.layers.length > 1) {
|
|
257
|
-
throw new Error(
|
|
257
|
+
throw new Error(T `Cannot export multi-layer charts without x axis`);
|
|
258
258
|
}
|
|
259
259
|
for (let layerNum = 0; layerNum < design.layers.length; layerNum++) {
|
|
260
260
|
const layer = design.layers[layerNum];
|
|
@@ -97,14 +97,14 @@ export default class LayeredChartCompiler {
|
|
|
97
97
|
flattenRowData(rows: any): any[];
|
|
98
98
|
compileDataCategorical(design: LayeredChartDesign, data: C3ChartData, locale?: string): C3Data;
|
|
99
99
|
compileExpr(expr: any): JsonQLExpr;
|
|
100
|
-
getLayerType(design:
|
|
101
|
-
getLayerTypeString(design:
|
|
102
|
-
doesLayerNeedGrouping(design:
|
|
103
|
-
canLayerUseXExpr(design:
|
|
104
|
-
isXAxisRequired(design:
|
|
105
|
-
isColorAxisRequired(design:
|
|
106
|
-
compileDefaultTitleText(design:
|
|
107
|
-
compileDefaultYAxisLabelText(design:
|
|
100
|
+
getLayerType(design: LayeredChartDesign, layerIndex: number): "area" | "line" | "bar" | "spline" | "scatter" | "pie" | "donut";
|
|
101
|
+
getLayerTypeString(design: LayeredChartDesign, layerIndex: number): "area" | "line" | "bar" | "spline" | "scatter" | "pie" | "donut";
|
|
102
|
+
doesLayerNeedGrouping(design: LayeredChartDesign, layerIndex: number): boolean;
|
|
103
|
+
canLayerUseXExpr(design: LayeredChartDesign, layerIndex: number): boolean;
|
|
104
|
+
isXAxisRequired(design: LayeredChartDesign): boolean;
|
|
105
|
+
isColorAxisRequired(design: LayeredChartDesign, layerIndex: number): boolean;
|
|
106
|
+
compileDefaultTitleText(design: LayeredChartDesign, locale?: string): string;
|
|
107
|
+
compileDefaultYAxisLabelText(design: LayeredChartDesign, locale?: string): string;
|
|
108
108
|
compileDefaultXAxisLabelText(design: any, locale?: string): string;
|
|
109
109
|
compileTitleText(design: any, locale?: string): any;
|
|
110
110
|
compileYAxisLabelText(design: any, locale?: string): any;
|
|
@@ -246,7 +246,7 @@ class LayeredChartCompiler {
|
|
|
246
246
|
? true
|
|
247
247
|
: c3Data.legendHide
|
|
248
248
|
},
|
|
249
|
-
grid: { focus: { show: false } },
|
|
249
|
+
grid: { focus: { show: false } }, // Don't display hover grid
|
|
250
250
|
axis: {
|
|
251
251
|
x: {
|
|
252
252
|
type: c3Data.xAxisType,
|
|
@@ -308,7 +308,7 @@ class LayeredChartCompiler {
|
|
|
308
308
|
// same color values gets hidden!! https://github.com/naver/billboard.js/issues/871
|
|
309
309
|
chartDesign.data.labels = {
|
|
310
310
|
colors: chartDesign.data.columns.reduce((a, c) => {
|
|
311
|
-
a[c[0]] = "
|
|
311
|
+
a[c[0]] = "var(--chart-text-color)";
|
|
312
312
|
return a;
|
|
313
313
|
}, {})
|
|
314
314
|
};
|
|
@@ -360,7 +360,7 @@ class LayeredChartCompiler {
|
|
|
360
360
|
// # If x axis is year only, display year in ticks
|
|
361
361
|
// if options.design.layers[0]?.axes.x?.xform?.type == "year"
|
|
362
362
|
// chartDesign.axis.x.tick.format = (x) -> if _.isDate(x) then x.getFullYear() else x
|
|
363
|
-
console.log(chartDesign)
|
|
363
|
+
// console.log(chartDesign)
|
|
364
364
|
return chartDesign;
|
|
365
365
|
}
|
|
366
366
|
isCategoricalX(design) {
|
|
@@ -440,7 +440,7 @@ class LayeredChartCompiler {
|
|
|
440
440
|
columns.push([series, row.y]);
|
|
441
441
|
types[series] = this.getLayerType(design, layerIndex);
|
|
442
442
|
// Name is name of entire layer
|
|
443
|
-
names[series] = layer.name || (design.layers.length === 1 ?
|
|
443
|
+
names[series] = layer.name || (design.layers.length === 1 ? T `Value` : T `Series ${layerIndex + 1}`);
|
|
444
444
|
dataMap[series] = { layerIndex, row };
|
|
445
445
|
format[series] = (value) => value != null ? this.axisBuilder.formatValue(layer.axes.y, value, locale, true) : "";
|
|
446
446
|
// Set color if present
|
|
@@ -469,7 +469,7 @@ class LayeredChartCompiler {
|
|
|
469
469
|
names,
|
|
470
470
|
dataMap,
|
|
471
471
|
colors,
|
|
472
|
-
xAxisType: "category",
|
|
472
|
+
xAxisType: "category", // Polar charts are always category x-axis
|
|
473
473
|
titleText: this.compileTitleText(design, locale),
|
|
474
474
|
order,
|
|
475
475
|
format
|
|
@@ -545,7 +545,7 @@ class LayeredChartCompiler {
|
|
|
545
545
|
columns.push([seriesY].concat(yValues));
|
|
546
546
|
columns.push([seriesX].concat(xValues));
|
|
547
547
|
types[seriesY] = this.getLayerType(design, layerIndex);
|
|
548
|
-
names[seriesY] = layer.name || (design.layers.length === 1 ?
|
|
548
|
+
names[seriesY] = layer.name || (design.layers.length === 1 ? T `Value` : T `Series ${layerIndex + 1}`);
|
|
549
549
|
xs[seriesY] = seriesX;
|
|
550
550
|
colors[seriesY] = layer.color || defaultColors[layerIndex];
|
|
551
551
|
format[seriesY] = (value) => value != null ? this.axisBuilder.formatValue(layer.axes.y, value, locale, true) : "";
|
|
@@ -558,7 +558,7 @@ class LayeredChartCompiler {
|
|
|
558
558
|
const trendlineSeries = seriesY + ":trendline";
|
|
559
559
|
columns.push([trendlineSeries].concat(calculateLinearRegression(yValues, xValues)));
|
|
560
560
|
types[trendlineSeries] = (0, billboard_js_1.line)();
|
|
561
|
-
names[trendlineSeries] = names[seriesY] +
|
|
561
|
+
names[trendlineSeries] = names[seriesY] + T ` Trendline`;
|
|
562
562
|
xs[trendlineSeries] = seriesX;
|
|
563
563
|
colors[trendlineSeries] = layer.color || defaultColors[layerIndex];
|
|
564
564
|
legendHide.push(trendlineSeries); // Hide in legend
|
|
@@ -583,11 +583,11 @@ class LayeredChartCompiler {
|
|
|
583
583
|
legendHide,
|
|
584
584
|
classes,
|
|
585
585
|
xAxisType: ["date"].includes(xType || "") ? "timeseries" : "indexed",
|
|
586
|
-
xAxisTickFit: false,
|
|
586
|
+
xAxisTickFit: false, // Don't put a tick for each point
|
|
587
587
|
xAxisLabelText: this.compileXAxisLabelText(design, locale),
|
|
588
588
|
yAxisLabelText: this.compileYAxisLabelText(design, locale),
|
|
589
589
|
titleText: this.compileTitleText(design, locale),
|
|
590
|
-
order: undefined,
|
|
590
|
+
order: undefined, // Use order of data for stacking
|
|
591
591
|
format
|
|
592
592
|
};
|
|
593
593
|
}
|
|
@@ -871,12 +871,12 @@ class LayeredChartCompiler {
|
|
|
871
871
|
legendHide,
|
|
872
872
|
classes,
|
|
873
873
|
xAxisType: "category",
|
|
874
|
-
xAxisTickFit: xType !== "date",
|
|
874
|
+
xAxisTickFit: xType !== "date" || xAxis.xform?.type != "date", // Put a tick for each point since categorical unless untransformed date which has too many ticks
|
|
875
875
|
xAxisTickMultiline: design.xAxisTickMultiline,
|
|
876
876
|
xAxisLabelText: this.compileXAxisLabelText(design, locale),
|
|
877
877
|
yAxisLabelText: this.compileYAxisLabelText(design, locale),
|
|
878
878
|
titleText: this.compileTitleText(design, locale),
|
|
879
|
-
order: null,
|
|
879
|
+
order: null, // Use order of data for stacking
|
|
880
880
|
format,
|
|
881
881
|
color: (color, d) => {
|
|
882
882
|
// Handle overall series color which calls with a non-object for d
|
|
@@ -926,7 +926,7 @@ class LayeredChartCompiler {
|
|
|
926
926
|
let needle;
|
|
927
927
|
return (needle = this.getLayerTypeString(design, layerIndex)), !["pie", "donut"].includes(needle);
|
|
928
928
|
}
|
|
929
|
-
isXAxisRequired(design
|
|
929
|
+
isXAxisRequired(design) {
|
|
930
930
|
let needle;
|
|
931
931
|
return lodash_1.default.any(design.layers, (layer, i) => ((needle = this.getLayerTypeString(design, i)), !["pie", "donut"].includes(needle)));
|
|
932
932
|
}
|
|
@@ -1000,7 +1000,7 @@ class LayeredChartCompiler {
|
|
|
1000
1000
|
]
|
|
1001
1001
|
});
|
|
1002
1002
|
names.push(this.axisBuilder.summarizeAxis(layer.axes.x, locale) +
|
|
1003
|
-
|
|
1003
|
+
` ${T `includes`} ` +
|
|
1004
1004
|
this.exprUtils.stringifyExprLiteral(layer.axes.x.expr, [row.x], locale));
|
|
1005
1005
|
data.x = row.x;
|
|
1006
1006
|
}
|
|
@@ -1017,7 +1017,7 @@ class LayeredChartCompiler {
|
|
|
1017
1017
|
filters.push(this.axisBuilder.createValueFilter(layer.axes.color, row.color));
|
|
1018
1018
|
filterExprs.push(this.axisBuilder.createValueFilterExpr(layer.axes.color, row.color));
|
|
1019
1019
|
names.push(this.axisBuilder.summarizeAxis(layer.axes.color, locale) +
|
|
1020
|
-
|
|
1020
|
+
` ${T `is`} ` +
|
|
1021
1021
|
this.axisBuilder.formatValue(layer.axes.color, row.color, locale, true));
|
|
1022
1022
|
data.color = row.color;
|
|
1023
1023
|
}
|
|
@@ -1045,7 +1045,7 @@ class LayeredChartCompiler {
|
|
|
1045
1045
|
filterExpr = filterExprs[0];
|
|
1046
1046
|
}
|
|
1047
1047
|
const scope = {
|
|
1048
|
-
name: expressions_2.ExprUtils.localizeString(this.schema.getTable(layer.table).name, locale) + " " + names.join(
|
|
1048
|
+
name: expressions_2.ExprUtils.localizeString(this.schema.getTable(layer.table).name, locale) + " " + names.join(` ${T `and`} `),
|
|
1049
1049
|
filter,
|
|
1050
1050
|
filterExpr,
|
|
1051
1051
|
data
|