@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.
- 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/GlobalFilter.d.ts +13 -0
- package/lib/GlobalFilter.js +2 -0
- 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 +7 -25
- package/lib/MWaterCompleteTableSelectComponent.js +36 -36
- package/lib/MWaterContextComponent.d.ts +19 -9
- package/lib/MWaterContextComponent.js +38 -22
- package/lib/MWaterCustomTablesetListComponent.js +9 -3
- package/lib/MWaterGlobalFiltersComponent.d.ts +6 -5
- package/lib/MWaterGlobalFiltersComponent.js +4 -4
- package/lib/MWaterLoaderComponent.d.ts +15 -3
- package/lib/MWaterLoaderComponent.js +11 -2
- 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/Axis.d.ts +20 -25
- package/lib/axes/AxisBuilder.d.ts +7 -4
- package/lib/axes/AxisBuilder.js +12 -8
- package/lib/axes/AxisComponent.d.ts +6 -9
- 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 -17
- package/lib/dashboards/DashboardComponent.js +20 -67
- package/lib/dashboards/DashboardDesign.d.ts +5 -20
- package/lib/dashboards/DashboardUpgrader.js +36 -1
- package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
- package/lib/dashboards/DashboardViewComponent.js +112 -136
- 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 +209 -39
- package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
- package/lib/dashboards/ServerDashboardDataSource.js +52 -33
- package/lib/dashboards/SettingsModalComponent.d.ts +4 -15
- package/lib/dashboards/SettingsModalComponent.js +24 -38
- 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/DatagridComponent.d.ts +2 -9
- package/lib/datagrids/DatagridDataSource.d.ts +3 -3
- package/lib/datagrids/DatagridDataSource.js +0 -14
- package/lib/datagrids/DatagridDesign.d.ts +7 -6
- package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -93
- package/lib/datagrids/DatagridDesignerComponent.js +8 -6
- package/lib/datagrids/DatagridViewComponent.js +1 -1
- package/lib/datagrids/FindReplaceModalComponent.d.ts +4 -20
- package/lib/datagrids/FindReplaceModalComponent.js +27 -13
- package/lib/datagrids/ServerDatagridDataSource.d.ts +8 -7
- package/lib/datagrids/ServerDatagridDataSource.js +88 -36
- package/lib/demo.js +4 -4
- package/lib/index.css +5 -0
- package/lib/index.d.ts +2 -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 -56
- 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/layouts/grid/GridLayoutManager.d.ts +2 -1
- 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 +5 -2
- package/lib/maps/ChoroplethLayer.js +2 -1
- package/lib/maps/ClusterLayer.js +3 -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/GridLayer.js +5 -3
- package/lib/maps/GridLayerDesigner.js +0 -1
- package/lib/maps/LayerSwitcherComponent.js +1 -1
- package/lib/maps/MapComponent.d.ts +3 -11
- package/lib/maps/MapComponent.js +3 -3
- package/lib/maps/MapDesign.d.ts +2 -13
- package/lib/maps/MapFiltersDesignerComponent.d.ts +0 -4
- package/lib/maps/MapFiltersDesignerComponent.js +4 -5
- package/lib/maps/MarkersLayer.js +30 -25
- package/lib/maps/RasterMapViewComponent.d.ts +3 -13
- package/lib/maps/RasterMapViewComponent.js +3 -3
- package/lib/maps/RegionSelectComponent.d.ts +2 -1
- package/lib/maps/ServerMapDataSource.d.ts +3 -4
- 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.d.ts +1 -0
- package/lib/maps/vectorMaps.js +70 -56
- package/lib/quickfilter/QuickfilterCompiler.d.ts +1 -1
- 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 +3 -11
- package/lib/widgets/ImageWidgetComponent.d.ts +8 -27
- package/lib/widgets/MapWidget.d.ts +4 -7
- package/lib/widgets/MapWidget.js +2 -1
- package/lib/widgets/MarkdownWidget.d.ts +2 -7
- package/lib/widgets/TOCWidget.d.ts +2 -9
- 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 -74
- 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/imagemosaic/ImagePopupComponent.d.ts +2 -7
- 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 +5 -31
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -7
- 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 -105
- 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 +11 -7
- 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 -47
- package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +55 -58
- 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 +30 -16
- package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -13
- package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -13
- 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 +16 -2
- 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/GlobalFilter.ts +17 -0
- 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 +42 -33
- package/src/MWaterCustomTablesetListComponent.tsx +21 -3
- package/src/MWaterGlobalFiltersComponent.ts +8 -8
- package/src/MWaterLoaderComponent.ts +14 -4
- package/src/MWaterTableSelectComponent.tsx +11 -12
- package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
- package/src/axes/Axis.ts +24 -25
- package/src/axes/AxisBuilder.ts +16 -13
- package/src/axes/AxisComponent.ts +3 -4
- package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
- package/src/dashboards/DashboardComponent.tsx +73 -147
- package/src/dashboards/DashboardDesign.ts +5 -25
- 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 +377 -71
- package/src/dashboards/ServerDashboardDataSource.ts +52 -33
- package/src/dashboards/SettingsModalComponent.tsx +170 -0
- package/src/dashboards/WidgetComponent.tsx +6 -12
- package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
- package/src/dashboards/layoutOptions.tsx +581 -0
- package/src/datagrids/DatagridDataSource.ts +6 -12
- package/src/datagrids/DatagridDesign.ts +8 -3
- package/src/datagrids/DatagridDesignerComponent.tsx +22 -18
- package/src/datagrids/DatagridViewComponent.ts +3 -3
- package/src/datagrids/ExprCellComponent.ts +0 -1
- package/src/datagrids/FindReplaceModalComponent.ts +39 -22
- package/src/datagrids/ServerDatagridDataSource.ts +107 -45
- package/src/demo.ts +4 -4
- package/src/index.css +5 -0
- package/src/index.ts +2 -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 +5 -2
- package/src/maps/ChoroplethLayer.ts +2 -1
- package/src/maps/ClusterLayer.ts +3 -1
- package/src/maps/DirectMapDataSource.ts +12 -3
- package/src/maps/EditPopupComponent.ts +2 -1
- package/src/maps/GridLayer.ts +5 -3
- package/src/maps/GridLayerDesigner.tsx +0 -1
- package/src/maps/LayerSwitcherComponent.tsx +1 -1
- package/src/maps/MapComponent.ts +3 -3
- package/src/maps/MapDesign.ts +2 -17
- package/src/maps/{MapFiltersDesignerComponent.ts → MapFiltersDesignerComponent.tsx} +25 -25
- package/src/maps/MarkersLayer.ts +38 -41
- package/src/maps/RasterMapViewComponent.ts +3 -3
- package/src/maps/ServerMapDataSource.ts +8 -8
- package/src/maps/VectorMapViewComponent.tsx +2 -2
- package/src/maps/mapSymbols.ts +2 -0
- package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
- package/src/maps/vectorMaps.tsx +88 -74
- package/src/quickfilter/QuickfilterCompiler.ts +1 -1
- 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 +32 -19
- 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 +26 -2
- package/src/ColorComponent.ts +0 -117
- package/src/dashboards/DashboardViewComponent.ts +0 -304
- package/src/dashboards/SettingsModalComponent.ts +0 -169
- 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
|
@@ -4,23 +4,18 @@ import { DataSource, Schema } from "@mwater/expressions";
|
|
|
4
4
|
import { LayeredChartDesign } from "./LayeredChartDesign";
|
|
5
5
|
import { WidgetDataSource } from "../../WidgetDataSource";
|
|
6
6
|
import { JsonQLFilter } from "../../..";
|
|
7
|
+
import LayeredChartViewComponent from "./LayeredChartViewComponent";
|
|
8
|
+
import LayeredChartDesignerComponent from "./LayeredChartDesignerComponent";
|
|
7
9
|
export default class LayeredChart extends Chart {
|
|
8
10
|
cleanDesign(design: LayeredChartDesign, schema: Schema): LayeredChartDesign;
|
|
9
11
|
validateDesign(design: LayeredChartDesign, schema: Schema): string | null | undefined;
|
|
10
12
|
isEmpty(design: any): boolean;
|
|
11
|
-
createDesignerElement(options: any): React.
|
|
12
|
-
schema: any;
|
|
13
|
-
dataSource: any;
|
|
14
|
-
design: LayeredChartDesign;
|
|
15
|
-
filters: any;
|
|
16
|
-
onDesignChange: (design: any) => any;
|
|
17
|
-
}>;
|
|
13
|
+
createDesignerElement(options: any): React.CElement<import("./LayeredChartDesignerComponent").LayeredChartDesignerComponentProps, LayeredChartDesignerComponent>;
|
|
18
14
|
getData(design: any, schema: Schema, dataSource: DataSource, filters: JsonQLFilter[], callback: any): void;
|
|
19
|
-
createViewElement(options: ChartCreateViewElementOptions): React.
|
|
15
|
+
createViewElement(options: ChartCreateViewElementOptions): React.CElement<any, LayeredChartViewComponent>;
|
|
20
16
|
createDropdownItems(design: any, schema: Schema, widgetDataSource: WidgetDataSource, filters: any): {
|
|
21
17
|
label: string;
|
|
22
|
-
|
|
23
|
-
onClick: () => void;
|
|
18
|
+
onClick: () => void | AbortController | undefined;
|
|
24
19
|
}[];
|
|
25
20
|
createDataTable(design: LayeredChartDesign, schema: Schema, dataSource: DataSource, data: any, locale: string): any[][];
|
|
26
21
|
getFilterableTables(design: LayeredChartDesign, schema: Schema): string[];
|
|
@@ -28,7 +28,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const lodash_1 = __importDefault(require("lodash"));
|
|
30
30
|
const react_1 = __importDefault(require("react"));
|
|
31
|
-
const R = react_1.default.createElement;
|
|
32
31
|
const async_1 = __importDefault(require("async"));
|
|
33
32
|
const immer_1 = __importDefault(require("immer"));
|
|
34
33
|
const immer_2 = require("immer");
|
|
@@ -39,6 +38,8 @@ const AxisBuilder_1 = __importDefault(require("../../../axes/AxisBuilder"));
|
|
|
39
38
|
const LayeredChartSvgFileSaver_1 = __importDefault(require("./LayeredChartSvgFileSaver"));
|
|
40
39
|
const LayeredChartUtils = __importStar(require("./LayeredChartUtils"));
|
|
41
40
|
const TextWidget_1 = __importDefault(require("../../text/TextWidget"));
|
|
41
|
+
const LayeredChartViewComponent_1 = __importDefault(require("./LayeredChartViewComponent"));
|
|
42
|
+
const LayeredChartDesignerComponent_1 = __importDefault(require("./LayeredChartDesignerComponent"));
|
|
42
43
|
// See LayeredChart Design.md for the design
|
|
43
44
|
class LayeredChart extends Chart_1.default {
|
|
44
45
|
cleanDesign(design, schema) {
|
|
@@ -151,7 +152,6 @@ class LayeredChart extends Chart_1.default {
|
|
|
151
152
|
// filters: array of filters
|
|
152
153
|
createDesignerElement(options) {
|
|
153
154
|
// Require here to prevent server require problems
|
|
154
|
-
const LayeredChartDesignerComponent = require("./LayeredChartDesignerComponent").default;
|
|
155
155
|
const props = {
|
|
156
156
|
schema: options.schema,
|
|
157
157
|
dataSource: options.dataSource,
|
|
@@ -163,7 +163,7 @@ class LayeredChart extends Chart_1.default {
|
|
|
163
163
|
return options.onDesignChange(design);
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
|
-
return react_1.default.createElement(
|
|
166
|
+
return react_1.default.createElement(LayeredChartDesignerComponent_1.default, props);
|
|
167
167
|
}
|
|
168
168
|
// Get data for the chart asynchronously
|
|
169
169
|
// design: design of the chart
|
|
@@ -212,7 +212,6 @@ class LayeredChart extends Chart_1.default {
|
|
|
212
212
|
// scope: current scope of the view element
|
|
213
213
|
// onScopeChange: called when scope changes with new scope
|
|
214
214
|
createViewElement(options) {
|
|
215
|
-
const LayeredChartViewComponent = require("./LayeredChartViewComponent").default;
|
|
216
215
|
// Create chart
|
|
217
216
|
const props = {
|
|
218
217
|
schema: options.schema,
|
|
@@ -225,7 +224,7 @@ class LayeredChart extends Chart_1.default {
|
|
|
225
224
|
scope: options.scope,
|
|
226
225
|
onScopeChange: options.onScopeChange
|
|
227
226
|
};
|
|
228
|
-
return react_1.default.createElement(
|
|
227
|
+
return react_1.default.createElement(LayeredChartViewComponent_1.default, props);
|
|
229
228
|
}
|
|
230
229
|
createDropdownItems(design, schema, widgetDataSource, filters) {
|
|
231
230
|
// TODO validate design before allowing save
|
|
@@ -245,8 +244,8 @@ class LayeredChart extends Chart_1.default {
|
|
|
245
244
|
return [];
|
|
246
245
|
}
|
|
247
246
|
return [
|
|
248
|
-
{ label: "Save as SVG",
|
|
249
|
-
{ label: "Save as PNG",
|
|
247
|
+
{ label: "Save as SVG", onClick: save.bind(null, "svg") },
|
|
248
|
+
{ label: "Save as PNG", onClick: save.bind(null, "png") }
|
|
250
249
|
];
|
|
251
250
|
}
|
|
252
251
|
createDataTable(design, schema, dataSource, data, locale) {
|
|
@@ -17,6 +17,8 @@ interface C3Data {
|
|
|
17
17
|
columns: PrimitiveArray[];
|
|
18
18
|
xAxisType?: "category" | "indexed" | "log" | "timeseries";
|
|
19
19
|
xAxisTickFit?: boolean;
|
|
20
|
+
/** Whether to allow multiline x axis tick labels (default true) */
|
|
21
|
+
xAxisTickMultiline?: boolean;
|
|
20
22
|
xs?: {
|
|
21
23
|
[key: string]: string;
|
|
22
24
|
};
|
|
@@ -35,8 +37,8 @@ interface C3Data {
|
|
|
35
37
|
titleText?: string;
|
|
36
38
|
legendHide?: boolean;
|
|
37
39
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
* Set custom data name.
|
|
41
|
+
*/
|
|
40
42
|
names?: {
|
|
41
43
|
[key: string]: string;
|
|
42
44
|
};
|
|
@@ -41,13 +41,13 @@ const chartTypes = {
|
|
|
41
41
|
scatter: billboard_js_1.scatter,
|
|
42
42
|
area: billboard_js_1.area,
|
|
43
43
|
pie: billboard_js_1.pie,
|
|
44
|
-
donut: billboard_js_1.donut
|
|
44
|
+
donut: billboard_js_1.donut
|
|
45
45
|
};
|
|
46
46
|
const commaFormatter = d3Format.format(",");
|
|
47
47
|
const compactFormatter = (d) => {
|
|
48
48
|
// Only if large, otherwise use standard formatting
|
|
49
49
|
if (Math.abs(d) > 999) {
|
|
50
|
-
return d3Format.format("~s")(d).replace(
|
|
50
|
+
return d3Format.format("~s")(d).replace("G", "B");
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
53
53
|
return commaFormatter(d);
|
|
@@ -240,7 +240,11 @@ class LayeredChartCompiler {
|
|
|
240
240
|
},
|
|
241
241
|
// Hide if one layer with no color axis
|
|
242
242
|
legend: {
|
|
243
|
-
hide: options.design.layers.length === 1 && !options.design.layers[0].axes.color
|
|
243
|
+
hide: options.design.layers.length === 1 && !options.design.layers[0].axes.color
|
|
244
|
+
? true
|
|
245
|
+
: options.design.hideLegend === true
|
|
246
|
+
? true
|
|
247
|
+
: c3Data.legendHide
|
|
244
248
|
},
|
|
245
249
|
grid: { focus: { show: false } },
|
|
246
250
|
axis: {
|
|
@@ -250,7 +254,12 @@ class LayeredChartCompiler {
|
|
|
250
254
|
text: cleanString(c3Data.xAxisLabelText),
|
|
251
255
|
position: options.design.transpose ? "outer-middle" : "outer-center"
|
|
252
256
|
},
|
|
253
|
-
tick: {
|
|
257
|
+
tick: {
|
|
258
|
+
multiline: options.design.xAxisTickMultiline,
|
|
259
|
+
culling: false,
|
|
260
|
+
fit: c3Data.xAxisTickFit
|
|
261
|
+
},
|
|
262
|
+
clipPath: false
|
|
254
263
|
},
|
|
255
264
|
y: {
|
|
256
265
|
label: {
|
|
@@ -291,14 +300,15 @@ class LayeredChartCompiler {
|
|
|
291
300
|
},
|
|
292
301
|
expand: false // Don't expand/contract
|
|
293
302
|
},
|
|
294
|
-
transition: { duration: 0 } // Transitions interfere with scoping
|
|
303
|
+
transition: { duration: 0 }, // Transitions interfere with scoping
|
|
304
|
+
// padding: !isPolar ? { mode: "fit" } : undefined
|
|
295
305
|
};
|
|
296
306
|
// && (options.design.type === "pie" || options.design.type === "donut")
|
|
297
307
|
if (options.design.labels) {
|
|
298
308
|
// same color values gets hidden!! https://github.com/naver/billboard.js/issues/871
|
|
299
309
|
chartDesign.data.labels = {
|
|
300
310
|
colors: chartDesign.data.columns.reduce((a, c) => {
|
|
301
|
-
a[c[0]] =
|
|
311
|
+
a[c[0]] = "#000";
|
|
302
312
|
return a;
|
|
303
313
|
}, {})
|
|
304
314
|
};
|
|
@@ -307,7 +317,7 @@ class LayeredChartCompiler {
|
|
|
307
317
|
...chartDesign.data.labels,
|
|
308
318
|
position: {
|
|
309
319
|
y: 15
|
|
310
|
-
}
|
|
320
|
+
} // TODO why does this not type correctly?
|
|
311
321
|
};
|
|
312
322
|
}
|
|
313
323
|
}
|
|
@@ -340,7 +350,7 @@ class LayeredChartCompiler {
|
|
|
340
350
|
}
|
|
341
351
|
if (options.design.yThresholds) {
|
|
342
352
|
chartDesign.grid.y = {
|
|
343
|
-
lines: lodash_1.default.map(options.design.yThresholds,
|
|
353
|
+
lines: lodash_1.default.map(options.design.yThresholds, t => ({
|
|
344
354
|
value: t.value,
|
|
345
355
|
text: t.label
|
|
346
356
|
}))
|
|
@@ -355,7 +365,7 @@ class LayeredChartCompiler {
|
|
|
355
365
|
}
|
|
356
366
|
isCategoricalX(design) {
|
|
357
367
|
// Check if categorical x axis (bar charts always are)
|
|
358
|
-
let categoricalX = design.type === "bar" || lodash_1.default.any(design.layers,
|
|
368
|
+
let categoricalX = design.type === "bar" || lodash_1.default.any(design.layers, l => l.type === "bar");
|
|
359
369
|
// Check if x axis is categorical type
|
|
360
370
|
const xType = this.axisBuilder.getAxisType(design.layers[0].axes.x);
|
|
361
371
|
if (["enum", "text", "boolean"].includes(xType || "")) {
|
|
@@ -371,7 +381,7 @@ class LayeredChartCompiler {
|
|
|
371
381
|
// Outputs: columns, types, names, colors. Also dataMap which is a map of "layername:index" to { layerIndex, row }
|
|
372
382
|
compileData(design, data, locale) {
|
|
373
383
|
// If polar chart (no x axis)
|
|
374
|
-
if (["pie", "donut"].includes(design.type) || lodash_1.default.any(design.layers,
|
|
384
|
+
if (["pie", "donut"].includes(design.type) || lodash_1.default.any(design.layers, l => ["pie", "donut"].includes(l.type))) {
|
|
375
385
|
return this.compileDataPolar(design, data, locale);
|
|
376
386
|
}
|
|
377
387
|
if (this.isCategoricalX(design)) {
|
|
@@ -400,7 +410,7 @@ class LayeredChartCompiler {
|
|
|
400
410
|
// Get indexed ordering of categories (lookup from value to index) without removing excluded values
|
|
401
411
|
const categoryOrder = lodash_1.default.zipObject(lodash_1.default.map(categories, (c, i) => [c.value, i]));
|
|
402
412
|
// Sort by category order
|
|
403
|
-
layerData = lodash_1.default.sortBy(layerData,
|
|
413
|
+
layerData = lodash_1.default.sortBy(layerData, row => categoryOrder[row.color]);
|
|
404
414
|
// Create a series for each row
|
|
405
415
|
lodash_1.default.each(layerData, (row, rowIndex) => {
|
|
406
416
|
// Skip if value excluded
|
|
@@ -487,7 +497,7 @@ class LayeredChartCompiler {
|
|
|
487
497
|
layerData = this.makeRowsCumulative(layerData);
|
|
488
498
|
}
|
|
489
499
|
// Remove excluded values
|
|
490
|
-
layerData = lodash_1.default.filter(layerData,
|
|
500
|
+
layerData = lodash_1.default.filter(layerData, row => !lodash_1.default.includes(layer.axes.x.excludedValues || [], row.x));
|
|
491
501
|
// If has color axis
|
|
492
502
|
if (layer.axes.color) {
|
|
493
503
|
// Create a series for each color value
|
|
@@ -498,11 +508,11 @@ class LayeredChartCompiler {
|
|
|
498
508
|
// Get indexed ordering of categories (lookup from value to index) without removing excluded values
|
|
499
509
|
const categoryOrder = lodash_1.default.zipObject(lodash_1.default.map(categories, (c, i) => [c.value, i]));
|
|
500
510
|
// Sort
|
|
501
|
-
colorValues = lodash_1.default.sortBy(colorValues,
|
|
511
|
+
colorValues = lodash_1.default.sortBy(colorValues, v => categoryOrder[v]);
|
|
502
512
|
// Exclude excluded ones
|
|
503
513
|
colorValues = lodash_1.default.difference(colorValues, layer.axes.color.excludedValues || []);
|
|
504
514
|
// For each color value
|
|
505
|
-
lodash_1.default.each(colorValues,
|
|
515
|
+
lodash_1.default.each(colorValues, colorValue => {
|
|
506
516
|
// One series for x values, one for y
|
|
507
517
|
const seriesX = `${layerIndex}:${colorValue}:x`;
|
|
508
518
|
const seriesY = `${layerIndex}:${colorValue}:y`;
|
|
@@ -614,7 +624,7 @@ class LayeredChartCompiler {
|
|
|
614
624
|
}
|
|
615
625
|
for (var x of xs) {
|
|
616
626
|
// Find existing row
|
|
617
|
-
const existingRow = lodash_1.default.find(flatRows,
|
|
627
|
+
const existingRow = lodash_1.default.find(flatRows, r => r.x === x && r.color === row.color);
|
|
618
628
|
if (existingRow) {
|
|
619
629
|
existingRow.y += row.y;
|
|
620
630
|
}
|
|
@@ -651,11 +661,14 @@ class LayeredChartCompiler {
|
|
|
651
661
|
return (xValues = lodash_1.default.union(xValues, lodash_1.default.uniq(lodash_1.default.pluck(layerData, "x"))));
|
|
652
662
|
});
|
|
653
663
|
// Categories will be in form [{ value, label }]
|
|
654
|
-
let categories = this.axisBuilder.getCategories(xAxis, xValues, {
|
|
664
|
+
let categories = this.axisBuilder.getCategories(xAxis, xValues, {
|
|
665
|
+
locale,
|
|
666
|
+
onlyValuesPresent: design.layers[0].xAxisOnlyValuesPresent
|
|
667
|
+
});
|
|
655
668
|
// Get indexed ordering of categories (lookup from value to index) without removing excluded values
|
|
656
669
|
const categoryOrder = lodash_1.default.zipObject(lodash_1.default.map(categories, (c, i) => [c.value, i]));
|
|
657
670
|
// Exclude excluded values
|
|
658
|
-
categories = lodash_1.default.filter(categories,
|
|
671
|
+
categories = lodash_1.default.filter(categories, category => !lodash_1.default.includes(xAxis.excludedValues || [], category.value));
|
|
659
672
|
// Limit categories to prevent crashes in C3 (https://github.com/mWater/mwater-visualization/issues/272)
|
|
660
673
|
if (xType !== "enumset") {
|
|
661
674
|
// Take last ones to make dates prettier (enough to show all weeks)
|
|
@@ -665,7 +678,7 @@ class LayeredChartCompiler {
|
|
|
665
678
|
// Create map of category value to index
|
|
666
679
|
const categoryMap = lodash_1.default.object(lodash_1.default.map(categories, (c, i) => [c.value, i]));
|
|
667
680
|
// Create common x series
|
|
668
|
-
columns.push(["x"].concat(lodash_1.default.map(categories,
|
|
681
|
+
columns.push(["x"].concat(lodash_1.default.map(categories, category => this.axisBuilder.formatCategory(xAxis, category))));
|
|
669
682
|
// For each layer
|
|
670
683
|
lodash_1.default.each(design.layers, (layer, layerIndex) => {
|
|
671
684
|
// Get data of layer
|
|
@@ -678,14 +691,14 @@ class LayeredChartCompiler {
|
|
|
678
691
|
layerData = this.flattenRowData(layerData);
|
|
679
692
|
}
|
|
680
693
|
// Reorder to category order for x-axis
|
|
681
|
-
layerData = lodash_1.default.sortBy(layerData,
|
|
694
|
+
layerData = lodash_1.default.sortBy(layerData, row => categoryOrder[row.x]);
|
|
682
695
|
// Make rows cumulative
|
|
683
696
|
if (layer.cumulative) {
|
|
684
697
|
layerData = this.makeRowsCumulative(layerData);
|
|
685
698
|
}
|
|
686
699
|
// Filter out categories that were removed
|
|
687
700
|
if (xType !== "enumset") {
|
|
688
|
-
layerData = lodash_1.default.filter(layerData,
|
|
701
|
+
layerData = lodash_1.default.filter(layerData, row => categoryXs[row.x] != null);
|
|
689
702
|
}
|
|
690
703
|
// If has color axis
|
|
691
704
|
if (layer.axes.color) {
|
|
@@ -697,11 +710,11 @@ class LayeredChartCompiler {
|
|
|
697
710
|
// Get indexed ordering of categories (lookup from value to index) without removing excluded values
|
|
698
711
|
const colorCategoryOrder = lodash_1.default.zipObject(lodash_1.default.map(colorCategories, (c, i) => [c.value, i]));
|
|
699
712
|
// Sort
|
|
700
|
-
colorValues = lodash_1.default.sortBy(colorValues,
|
|
713
|
+
colorValues = lodash_1.default.sortBy(colorValues, v => colorCategoryOrder[v]);
|
|
701
714
|
// Exclude excluded ones
|
|
702
715
|
colorValues = lodash_1.default.difference(colorValues, layer.axes.color.excludedValues || []);
|
|
703
716
|
if (colorValues.length > 0) {
|
|
704
|
-
lodash_1.default.each(colorValues,
|
|
717
|
+
lodash_1.default.each(colorValues, colorValue => {
|
|
705
718
|
// One series for y values
|
|
706
719
|
const series = `${layerIndex}:${colorValue}`;
|
|
707
720
|
// Get specific color if present
|
|
@@ -713,9 +726,9 @@ class LayeredChartCompiler {
|
|
|
713
726
|
// Get rows for this series
|
|
714
727
|
const rows = lodash_1.default.where(layerData, { color: colorValue });
|
|
715
728
|
// Create empty series
|
|
716
|
-
const column = lodash_1.default.map(categories,
|
|
729
|
+
const column = lodash_1.default.map(categories, c => null);
|
|
717
730
|
// Set rows
|
|
718
|
-
lodash_1.default.each(rows,
|
|
731
|
+
lodash_1.default.each(rows, row => {
|
|
719
732
|
// Get index
|
|
720
733
|
const index = categoryMap[row.x];
|
|
721
734
|
if (index != null) {
|
|
@@ -742,7 +755,7 @@ class LayeredChartCompiler {
|
|
|
742
755
|
else {
|
|
743
756
|
//c3 acts funny when there is a split axis but no data
|
|
744
757
|
series = `${layerIndex}:dumm`;
|
|
745
|
-
column = lodash_1.default.map(categories,
|
|
758
|
+
column = lodash_1.default.map(categories, c => null);
|
|
746
759
|
columns.push([series].concat(column));
|
|
747
760
|
types[series] = this.getLayerType(design, layerIndex);
|
|
748
761
|
names[series] = this.axisBuilder.formatValue(layer.axes.color, null, locale, true);
|
|
@@ -754,9 +767,9 @@ class LayeredChartCompiler {
|
|
|
754
767
|
// One series for y
|
|
755
768
|
series = `${layerIndex}`;
|
|
756
769
|
// Create empty series
|
|
757
|
-
column = lodash_1.default.map(categories,
|
|
770
|
+
column = lodash_1.default.map(categories, c => null);
|
|
758
771
|
// Set rows
|
|
759
|
-
lodash_1.default.each(layerData,
|
|
772
|
+
lodash_1.default.each(layerData, row => {
|
|
760
773
|
// Skip if value excluded
|
|
761
774
|
if (lodash_1.default.includes(layer.axes.x.excludedValues || [], row.x)) {
|
|
762
775
|
return;
|
|
@@ -813,11 +826,11 @@ class LayeredChartCompiler {
|
|
|
813
826
|
const defaultStacked = layer.axes.color != null;
|
|
814
827
|
const stacked = layer.stacked != null ? layer.stacked : defaultStacked;
|
|
815
828
|
if (stacked) {
|
|
816
|
-
groups.push(lodash_1.default.filter(lodash_1.default.keys(names),
|
|
829
|
+
groups.push(lodash_1.default.filter(lodash_1.default.keys(names), series => series.split(":")[0] === `${layerIndex}`));
|
|
817
830
|
}
|
|
818
831
|
}
|
|
819
832
|
// Remove empty groups
|
|
820
|
-
groups = lodash_1.default.filter(groups,
|
|
833
|
+
groups = lodash_1.default.filter(groups, g => g.length > 1);
|
|
821
834
|
}
|
|
822
835
|
// If proportional
|
|
823
836
|
if (design.proportional) {
|
|
@@ -859,6 +872,7 @@ class LayeredChartCompiler {
|
|
|
859
872
|
classes,
|
|
860
873
|
xAxisType: "category",
|
|
861
874
|
xAxisTickFit: xType !== "date",
|
|
875
|
+
xAxisTickMultiline: design.xAxisTickMultiline,
|
|
862
876
|
xAxisLabelText: this.compileXAxisLabelText(design, locale),
|
|
863
877
|
yAxisLabelText: this.compileYAxisLabelText(design, locale),
|
|
864
878
|
titleText: this.compileTitleText(design, locale),
|
|
@@ -1072,14 +1086,14 @@ function cleanString(str) {
|
|
|
1072
1086
|
function calculateLinearRegression(ys, xs) {
|
|
1073
1087
|
// If xs are dates, convert to numbers
|
|
1074
1088
|
if (lodash_1.default.isString(xs[0])) {
|
|
1075
|
-
xs = lodash_1.default.map(xs,
|
|
1089
|
+
xs = lodash_1.default.map(xs, x => Date.parse(x));
|
|
1076
1090
|
}
|
|
1077
1091
|
// Remove null ys
|
|
1078
1092
|
const nonNullxs = lodash_1.default.filter(xs, (x, index) => ys[index] !== null);
|
|
1079
1093
|
const nonNullys = lodash_1.default.filter(ys, (y, index) => ys[index] !== null);
|
|
1080
1094
|
const n = nonNullys.length;
|
|
1081
1095
|
const sumXY = lodash_1.default.sum(lodash_1.default.map(nonNullxs, (x, i) => x * nonNullys[i]));
|
|
1082
|
-
const sumXX = lodash_1.default.sum(lodash_1.default.map(nonNullxs,
|
|
1096
|
+
const sumXX = lodash_1.default.sum(lodash_1.default.map(nonNullxs, x => x * x));
|
|
1083
1097
|
const sumX = lodash_1.default.sum(nonNullxs);
|
|
1084
1098
|
const sumY = lodash_1.default.sum(nonNullys);
|
|
1085
1099
|
// Calculate denominator
|
|
@@ -1088,5 +1102,5 @@ function calculateLinearRegression(ys, xs) {
|
|
|
1088
1102
|
const slope = (n * sumXY - sumX * sumY) / den;
|
|
1089
1103
|
// Calculate intercept
|
|
1090
1104
|
const intercept = (sumY * sumXX - sumX * sumXY) / den;
|
|
1091
|
-
return lodash_1.default.map(xs,
|
|
1105
|
+
return lodash_1.default.map(xs, x => x * slope + intercept);
|
|
1092
1106
|
}
|
|
@@ -38,6 +38,10 @@ export interface LayeredChartDesign {
|
|
|
38
38
|
yMin?: number;
|
|
39
39
|
/** true to show popout lines for small values */
|
|
40
40
|
popoutSmallValues?: boolean;
|
|
41
|
+
/** true to hide the legend */
|
|
42
|
+
hideLegend?: boolean;
|
|
43
|
+
/** Whether to allow multiline x axis tick labels (default true) */
|
|
44
|
+
xAxisTickMultiline?: boolean;
|
|
41
45
|
}
|
|
42
46
|
export interface LayeredChartDesignLayer {
|
|
43
47
|
/** bar/line/spline/scatter/area/pie/donut (overrides main one) */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import TabbedComponent from "@mwater/react-library/lib/TabbedComponent";
|
|
2
3
|
import * as uiComponents from "../../../UIComponents";
|
|
3
4
|
import { DataSource, Schema } from "@mwater/expressions";
|
|
4
5
|
import { LayeredChartDesign } from "./LayeredChartDesign";
|
|
@@ -15,6 +16,7 @@ export default class LayeredChartDesignerComponent extends React.Component<Layer
|
|
|
15
16
|
updateDesign(changes: any): void;
|
|
16
17
|
handleTypeChange: (type: any) => void;
|
|
17
18
|
handleTransposeChange: (value: any) => void;
|
|
19
|
+
handleHideLegendChange: (value: any) => void;
|
|
18
20
|
handleStackedChange: (value: any) => void;
|
|
19
21
|
handleProportionalChange: (value: any) => void;
|
|
20
22
|
handleLabelsChange: (value: any) => void;
|
|
@@ -31,7 +33,9 @@ export default class LayeredChartDesignerComponent extends React.Component<Layer
|
|
|
31
33
|
handleToggleYAxisLabelClick: (ev: any) => void;
|
|
32
34
|
handleYMinChange: (yMin: any) => void;
|
|
33
35
|
handleYMaxChange: (yMax: any) => void;
|
|
36
|
+
handleXAxisTickMultilineChange: (value: boolean) => void;
|
|
34
37
|
renderLabels(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement> | undefined;
|
|
38
|
+
renderChartOptions(): React.JSX.Element;
|
|
35
39
|
renderType(): React.CElement<uiComponents.SectionComponentProps, uiComponents.SectionComponent>;
|
|
36
40
|
renderLayer: (index: any) => React.DetailedReactHTMLElement<{
|
|
37
41
|
style: {
|
|
@@ -46,35 +50,5 @@ export default class LayeredChartDesignerComponent extends React.Component<Layer
|
|
|
46
50
|
}, HTMLElement> | undefined;
|
|
47
51
|
renderThresholds(): React.CElement<uiComponents.SectionComponentProps, uiComponents.SectionComponent> | null;
|
|
48
52
|
renderYRange(): React.CElement<uiComponents.SectionComponentProps, uiComponents.SectionComponent> | null;
|
|
49
|
-
render(): React.CElement<
|
|
50
|
-
initialTabId: string;
|
|
51
|
-
tabs: ({
|
|
52
|
-
id: string;
|
|
53
|
-
label: string;
|
|
54
|
-
elem: React.DetailedReactHTMLElement<{
|
|
55
|
-
style: {
|
|
56
|
-
paddingBottom: number;
|
|
57
|
-
};
|
|
58
|
-
}, HTMLElement>;
|
|
59
|
-
} | {
|
|
60
|
-
id: string;
|
|
61
|
-
label: string;
|
|
62
|
-
elem: React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
63
|
-
})[];
|
|
64
|
-
}, React.Component<{
|
|
65
|
-
initialTabId: string;
|
|
66
|
-
tabs: ({
|
|
67
|
-
id: string;
|
|
68
|
-
label: string;
|
|
69
|
-
elem: React.DetailedReactHTMLElement<{
|
|
70
|
-
style: {
|
|
71
|
-
paddingBottom: number;
|
|
72
|
-
};
|
|
73
|
-
}, HTMLElement>;
|
|
74
|
-
} | {
|
|
75
|
-
id: string;
|
|
76
|
-
label: string;
|
|
77
|
-
elem: React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
78
|
-
})[];
|
|
79
|
-
}, any, any>>;
|
|
53
|
+
render(): React.CElement<any, TabbedComponent>;
|
|
80
54
|
}
|
|
@@ -52,6 +52,9 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
52
52
|
handleTransposeChange = (value) => {
|
|
53
53
|
return this.updateDesign({ transpose: value });
|
|
54
54
|
};
|
|
55
|
+
handleHideLegendChange = (value) => {
|
|
56
|
+
return this.updateDesign({ hideLegend: value });
|
|
57
|
+
};
|
|
55
58
|
handleStackedChange = (value) => {
|
|
56
59
|
return this.updateDesign({ stacked: value });
|
|
57
60
|
};
|
|
@@ -106,6 +109,9 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
106
109
|
handleYMaxChange = (yMax) => {
|
|
107
110
|
return this.updateDesign({ yMax });
|
|
108
111
|
};
|
|
112
|
+
handleXAxisTickMultilineChange = (value) => {
|
|
113
|
+
this.updateDesign({ xAxisTickMultiline: value });
|
|
114
|
+
};
|
|
109
115
|
renderLabels() {
|
|
110
116
|
if (!this.props.design.type) {
|
|
111
117
|
return;
|
|
@@ -133,6 +139,11 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
133
139
|
: undefined)
|
|
134
140
|
: undefined);
|
|
135
141
|
}
|
|
142
|
+
renderChartOptions() {
|
|
143
|
+
return (react_1.default.createElement("div", null,
|
|
144
|
+
react_1.default.createElement(bootstrap_1.Checkbox, { key: "hideLegend", value: this.props.design.hideLegend, onChange: this.handleHideLegendChange }, "Hide legend"),
|
|
145
|
+
react_1.default.createElement(bootstrap_1.Checkbox, { key: "xAxisTickMultiline", value: this.props.design.xAxisTickMultiline ?? true, onChange: this.handleXAxisTickMultilineChange }, "Multiline X-Axis Labels")));
|
|
146
|
+
}
|
|
136
147
|
renderType() {
|
|
137
148
|
const chartTypes = [
|
|
138
149
|
{ id: "bar", name: "Bar", desc: "Best for most charts" },
|
|
@@ -150,7 +161,7 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
150
161
|
editor: (onClose) => {
|
|
151
162
|
return R(uiComponents.OptionListComponent, {
|
|
152
163
|
hint: "Select a Chart Type",
|
|
153
|
-
items: lodash_1.default.map(chartTypes,
|
|
164
|
+
items: lodash_1.default.map(chartTypes, ct => ({
|
|
154
165
|
name: ct.name,
|
|
155
166
|
desc: ct.desc,
|
|
156
167
|
onClick: () => {
|
|
@@ -208,7 +219,9 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
208
219
|
{ value: "natural", label: "Natural Order" }
|
|
209
220
|
], inline: true })
|
|
210
221
|
]
|
|
211
|
-
: undefined,
|
|
222
|
+
: undefined, design.labels && design.type === "bar" && !design.transpose
|
|
223
|
+
? R("div", null, react_1.default.createElement(bootstrap_1.Checkbox, { inline: true, key: "labels", value: design.popoutSmallValues || false, onChange: this.handleLabelsPopoutChange }, "Show Popout labels for small values"))
|
|
224
|
+
: undefined);
|
|
212
225
|
}
|
|
213
226
|
renderThresholds() {
|
|
214
227
|
// Doesn't apply to polar
|
|
@@ -256,6 +269,11 @@ class LayeredChartDesignerComponent extends react_1.default.Component {
|
|
|
256
269
|
elem: R("div", null, R("br"), this.renderLabels())
|
|
257
270
|
});
|
|
258
271
|
}
|
|
272
|
+
tabs.push({
|
|
273
|
+
id: "options",
|
|
274
|
+
label: "Options",
|
|
275
|
+
elem: R("div", null, R("br"), this.renderChartOptions())
|
|
276
|
+
});
|
|
259
277
|
return R(TabbedComponent_1.default, {
|
|
260
278
|
initialTabId: "design",
|
|
261
279
|
tabs
|
|
@@ -298,7 +316,7 @@ class ThresholdComponent extends react_1.default.Component {
|
|
|
298
316
|
style: { display: "inline-block" },
|
|
299
317
|
size: "sm",
|
|
300
318
|
value: this.props.threshold.value,
|
|
301
|
-
onChange:
|
|
319
|
+
onChange: v => this.props.onThresholdChange(lodash_1.default.extend({}, this.props.threshold, { value: v }))
|
|
302
320
|
})), " ", R(LabeledInlineComponent, { key: "label", label: "Label:" }, R(ui.TextInput, {
|
|
303
321
|
style: { display: "inline-block", width: "8em" },
|
|
304
322
|
size: "sm",
|
|
@@ -46,13 +46,7 @@ export default class LayeredChartLayerDesignerComponent extends React.Component<
|
|
|
46
46
|
}, HTMLElement> | null;
|
|
47
47
|
renderTable(): React.CElement<uiComponents.SectionComponentProps, uiComponents.SectionComponent>;
|
|
48
48
|
handlexAxisOnlyValuesPresentChange: (xAxisOnlyValuesPresent: boolean) => void;
|
|
49
|
-
renderXAxis(): (React.
|
|
50
|
-
value: any;
|
|
51
|
-
onChange: (xAxisOnlyValuesPresent: boolean) => void;
|
|
52
|
-
}, React.Component<{
|
|
53
|
-
value: any;
|
|
54
|
-
onChange: (xAxisOnlyValuesPresent: boolean) => void;
|
|
55
|
-
}, any, any>> | undefined)[] | undefined;
|
|
49
|
+
renderXAxis(): (React.JSX.Element | null)[] | undefined;
|
|
56
50
|
renderColorAxis(): React.DetailedReactHTMLElement<{
|
|
57
51
|
className: string;
|
|
58
52
|
}, HTMLElement> | undefined;
|
|
@@ -214,7 +214,8 @@ class LayeredChartLayerDesignerComponent extends react_1.default.Component {
|
|
|
214
214
|
categoricalX ? R(ui.Checkbox, {
|
|
215
215
|
value: layer.xAxisOnlyValuesPresent,
|
|
216
216
|
onChange: this.handlexAxisOnlyValuesPresentChange
|
|
217
|
-
}, "Only show values actually present", R(PopoverHelpComponent_1.default, { placement: 'bottom' }, "Limits values to those that are present in the data, as opposed to all choices or all dates within range")) :
|
|
217
|
+
}, "Only show values actually present ", R(PopoverHelpComponent_1.default, { placement: 'bottom' }, "Limits values to those that are present in the data, as opposed to all choices or all dates within range")) : null,
|
|
218
|
+
react_1.default.createElement("br", null)
|
|
218
219
|
];
|
|
219
220
|
}
|
|
220
221
|
renderColorAxis() {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import PropTypes from "prop-types";
|
|
2
1
|
import React from "react";
|
|
3
2
|
import { DataSource, Schema } from "@mwater/expressions";
|
|
4
3
|
import { LayeredChartDesign } from "./LayeredChartDesign";
|
|
@@ -21,9 +20,7 @@ interface LayeredChartViewComponentState {
|
|
|
21
20
|
footerHeight: any;
|
|
22
21
|
}
|
|
23
22
|
export default class LayeredChartViewComponent extends React.Component<LayeredChartViewComponentProps, LayeredChartViewComponentState> {
|
|
24
|
-
static
|
|
25
|
-
locale: PropTypes.Requireable<string>;
|
|
26
|
-
};
|
|
23
|
+
static contextType: React.Context<string>;
|
|
27
24
|
header: HTMLElement | null;
|
|
28
25
|
footer: HTMLElement | null;
|
|
29
26
|
constructor(props: any);
|