@jupytergis/base 0.4.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/lib/annotations/components/Annotation.d.ts +2 -2
  2. package/lib/annotations/components/Annotation.js +3 -3
  3. package/lib/annotations/components/AnnotationFloater.d.ts +1 -1
  4. package/lib/annotations/components/AnnotationFloater.js +2 -2
  5. package/lib/annotations/components/Message.d.ts +2 -1
  6. package/lib/annotations/components/Message.js +3 -3
  7. package/lib/annotations/model.js +5 -5
  8. package/lib/commands/BaseCommandIDs.d.ts +32 -0
  9. package/lib/commands/BaseCommandIDs.js +43 -0
  10. package/lib/{commands.d.ts → commands/index.d.ts} +1 -1
  11. package/lib/{commands.js → commands/index.js} +76 -319
  12. package/lib/console/consoleview.d.ts +3 -3
  13. package/lib/console/consoleview.js +5 -5
  14. package/lib/constants.d.ts +2 -51
  15. package/lib/constants.js +6 -65
  16. package/lib/dialogs/ProcessingFormDialog.d.ts +4 -4
  17. package/lib/dialogs/ProcessingFormDialog.js +9 -11
  18. package/lib/dialogs/layerBrowserDialog.d.ts +1 -1
  19. package/lib/dialogs/layerBrowserDialog.js +7 -7
  20. package/lib/dialogs/layerCreationFormDialog.d.ts +4 -4
  21. package/lib/dialogs/layerCreationFormDialog.js +6 -6
  22. package/lib/dialogs/symbology/components/color_ramp/CanvasSelectComponent.d.ts +1 -1
  23. package/lib/dialogs/symbology/components/color_ramp/CanvasSelectComponent.js +3 -3
  24. package/lib/dialogs/symbology/components/color_ramp/ColorRamp.d.ts +3 -2
  25. package/lib/dialogs/symbology/components/color_ramp/ColorRamp.js +6 -7
  26. package/lib/dialogs/symbology/components/color_ramp/ColorRampEntry.d.ts +1 -1
  27. package/lib/dialogs/symbology/components/color_ramp/ColorRampEntry.js +1 -1
  28. package/lib/dialogs/symbology/components/color_ramp/ModeSelectRow.d.ts +1 -1
  29. package/lib/dialogs/symbology/components/color_ramp/ModeSelectRow.js +1 -1
  30. package/lib/dialogs/symbology/components/color_stops/StopContainer.d.ts +2 -2
  31. package/lib/dialogs/symbology/components/color_stops/StopContainer.js +4 -4
  32. package/lib/dialogs/symbology/components/color_stops/StopRow.d.ts +3 -3
  33. package/lib/dialogs/symbology/components/color_stops/StopRow.js +2 -2
  34. package/lib/dialogs/symbology/hooks/useGetBandInfo.js +5 -5
  35. package/lib/dialogs/symbology/hooks/useGetProperties.d.ts +1 -1
  36. package/lib/dialogs/symbology/hooks/useGetProperties.js +4 -4
  37. package/lib/dialogs/symbology/symbologyDialog.d.ts +8 -0
  38. package/lib/dialogs/symbology/symbologyDialog.js +1 -1
  39. package/lib/dialogs/symbology/symbologyUtils.js +38 -31
  40. package/lib/dialogs/symbology/tiff_layer/TiffRendering.d.ts +2 -2
  41. package/lib/dialogs/symbology/tiff_layer/TiffRendering.js +2 -2
  42. package/lib/dialogs/symbology/tiff_layer/components/BandRow.d.ts +2 -2
  43. package/lib/dialogs/symbology/tiff_layer/components/BandRow.js +4 -4
  44. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.d.ts +2 -2
  45. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +30 -20
  46. package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.d.ts +2 -2
  47. package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +23 -21
  48. package/lib/dialogs/symbology/vector_layer/VectorRendering.d.ts +2 -2
  49. package/lib/dialogs/symbology/vector_layer/VectorRendering.js +81 -39
  50. package/lib/dialogs/symbology/vector_layer/components/ValueSelect.d.ts +1 -1
  51. package/lib/dialogs/symbology/vector_layer/components/ValueSelect.js +1 -1
  52. package/lib/dialogs/symbology/vector_layer/types/Canonical.d.ts +4 -0
  53. package/lib/dialogs/symbology/vector_layer/types/Canonical.js +66 -0
  54. package/lib/dialogs/symbology/vector_layer/types/Categorized.d.ts +2 -2
  55. package/lib/dialogs/symbology/vector_layer/types/Categorized.js +142 -47
  56. package/lib/dialogs/symbology/vector_layer/types/Graduated.d.ts +2 -2
  57. package/lib/dialogs/symbology/vector_layer/types/Graduated.js +193 -99
  58. package/lib/dialogs/symbology/vector_layer/types/Heatmap.d.ts +2 -2
  59. package/lib/dialogs/symbology/vector_layer/types/Heatmap.js +7 -6
  60. package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.d.ts +2 -2
  61. package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.js +33 -30
  62. package/lib/formbuilder/creationform.js +3 -3
  63. package/lib/formbuilder/editform.js +3 -3
  64. package/lib/formbuilder/formselectors.d.ts +1 -1
  65. package/lib/formbuilder/formselectors.js +2 -2
  66. package/lib/formbuilder/objectform/baseform.d.ts +5 -4
  67. package/lib/formbuilder/objectform/baseform.js +16 -14
  68. package/lib/formbuilder/objectform/fileselectorwidget.d.ts +1 -1
  69. package/lib/formbuilder/objectform/fileselectorwidget.js +5 -5
  70. package/lib/formbuilder/objectform/layer/heatmapLayerForm.js +2 -2
  71. package/lib/formbuilder/objectform/layer/hillshadeLayerForm.js +1 -1
  72. package/lib/formbuilder/objectform/layer/layerform.d.ts +1 -1
  73. package/lib/formbuilder/objectform/layer/layerform.js +3 -2
  74. package/lib/formbuilder/objectform/process/dissolveProcessForm.d.ts +1 -1
  75. package/lib/formbuilder/objectform/process/dissolveProcessForm.js +5 -5
  76. package/lib/formbuilder/objectform/source/geojsonsource.js +4 -4
  77. package/lib/formbuilder/objectform/source/geotiffsource.js +4 -4
  78. package/lib/formbuilder/objectform/source/pathbasedsource.js +6 -6
  79. package/lib/formbuilder/objectform/source/sourceform.d.ts +1 -1
  80. package/lib/formbuilder/objectform/source/sourceform.js +1 -1
  81. package/lib/formbuilder/objectform/source/tilesourceform.js +3 -3
  82. package/lib/gdal.js +2 -2
  83. package/lib/icons.js +29 -29
  84. package/lib/index.d.ts +4 -2
  85. package/lib/index.js +4 -2
  86. package/lib/mainview/CollaboratorPointers.d.ts +1 -1
  87. package/lib/mainview/CollaboratorPointers.js +5 -5
  88. package/lib/mainview/FollowIndicator.d.ts +2 -2
  89. package/lib/mainview/FollowIndicator.js +3 -3
  90. package/lib/mainview/TemporalSlider.d.ts +1 -1
  91. package/lib/mainview/TemporalSlider.js +7 -7
  92. package/lib/mainview/mainView.d.ts +4 -2
  93. package/lib/mainview/mainView.js +232 -137
  94. package/lib/menus.d.ts +4 -0
  95. package/lib/menus.js +45 -0
  96. package/lib/panelview/annotationPanel.d.ts +2 -2
  97. package/lib/panelview/annotationPanel.js +1 -1
  98. package/lib/panelview/components/filter-panel/Filter.d.ts +2 -2
  99. package/lib/panelview/components/filter-panel/Filter.js +5 -5
  100. package/lib/panelview/components/filter-panel/FilterRow.d.ts +2 -2
  101. package/lib/panelview/components/identify-panel/IdentifyPanel.d.ts +1 -1
  102. package/lib/panelview/components/identify-panel/IdentifyPanel.js +5 -5
  103. package/lib/panelview/components/layers.d.ts +1 -1
  104. package/lib/panelview/components/layers.js +12 -12
  105. package/lib/panelview/leftpanel.d.ts +4 -2
  106. package/lib/panelview/leftpanel.js +24 -14
  107. package/lib/panelview/model.d.ts +1 -1
  108. package/lib/panelview/objectproperties.d.ts +1 -1
  109. package/lib/panelview/objectproperties.js +3 -3
  110. package/lib/panelview/rightpanel.d.ts +2 -1
  111. package/lib/panelview/rightpanel.js +13 -5
  112. package/lib/{processing.d.ts → processing/index.d.ts} +4 -4
  113. package/lib/{processing.js → processing/index.js} +19 -24
  114. package/lib/processing/processingCommands.d.ts +6 -0
  115. package/lib/processing/processingCommands.js +47 -0
  116. package/lib/processing/processingFormToParam.d.ts +2 -0
  117. package/lib/processing/processingFormToParam.js +15 -0
  118. package/lib/shared/components/Badge.d.ts +7 -0
  119. package/lib/shared/components/Badge.js +19 -0
  120. package/lib/shared/components/Button.d.ts +9 -0
  121. package/lib/shared/components/Button.js +20 -0
  122. package/lib/shared/components/Calendar.d.ts +47 -0
  123. package/lib/shared/components/Calendar.js +184 -0
  124. package/lib/shared/components/Checkbox.d.ts +4 -0
  125. package/lib/shared/components/Checkbox.js +25 -0
  126. package/lib/shared/components/DropdownMenu.d.ts +27 -0
  127. package/lib/shared/components/DropdownMenu.js +92 -0
  128. package/lib/shared/components/Pagination.d.ts +25 -0
  129. package/lib/shared/components/Pagination.js +68 -0
  130. package/lib/shared/components/Popover.d.ts +7 -0
  131. package/lib/shared/components/Popover.js +32 -0
  132. package/lib/shared/components/Tabs.d.ts +7 -0
  133. package/lib/shared/components/Tabs.js +31 -0
  134. package/lib/shared/components/ToggleGroup.d.ts +12 -0
  135. package/lib/shared/components/ToggleGroup.js +52 -0
  136. package/lib/shared/components/loading.d.ts +12 -0
  137. package/lib/shared/components/loading.js +6 -0
  138. package/lib/shared/components/utils.d.ts +2 -0
  139. package/lib/shared/components/utils.js +4 -0
  140. package/lib/shared/hooks/useIsFirstRender.d.ts +2 -0
  141. package/lib/shared/hooks/useIsFirstRender.js +10 -0
  142. package/lib/stacBrowser/StacBrowser.d.ts +7 -0
  143. package/lib/stacBrowser/StacBrowser.js +16 -0
  144. package/lib/stacBrowser/StacPanel.d.ts +14 -0
  145. package/lib/stacBrowser/StacPanel.js +16 -0
  146. package/lib/stacBrowser/components/StacFilterSection.d.ts +23 -0
  147. package/lib/stacBrowser/components/StacFilterSection.js +49 -0
  148. package/lib/stacBrowser/components/StacPanelFilters.d.ts +14 -0
  149. package/lib/stacBrowser/components/StacPanelFilters.js +65 -0
  150. package/lib/stacBrowser/components/StacPanelResults.d.ts +13 -0
  151. package/lib/stacBrowser/components/StacPanelResults.js +48 -0
  152. package/lib/stacBrowser/components/StacPanelView.d.ts +7 -0
  153. package/lib/stacBrowser/components/StacPanelView.js +20 -0
  154. package/lib/stacBrowser/constants.d.ts +25 -0
  155. package/lib/stacBrowser/constants.js +197 -0
  156. package/lib/stacBrowser/hooks/useStacSearch.d.ts +30 -0
  157. package/lib/stacBrowser/hooks/useStacSearch.js +221 -0
  158. package/lib/stacBrowser/index.d.ts +1 -0
  159. package/lib/stacBrowser/index.js +1 -0
  160. package/lib/stacBrowser/types/types.d.ts +124 -0
  161. package/lib/stacBrowser/types/types.js +1 -0
  162. package/lib/statusbar/StatusBar.d.ts +1 -1
  163. package/lib/statusbar/StatusBar.js +3 -3
  164. package/lib/toolbar/index.d.ts +0 -1
  165. package/lib/toolbar/index.js +0 -1
  166. package/lib/toolbar/widget.js +28 -64
  167. package/lib/tools.d.ts +30 -5
  168. package/lib/tools.js +82 -69
  169. package/lib/types.d.ts +2 -0
  170. package/lib/widget.d.ts +2 -1
  171. package/lib/widget.js +8 -5
  172. package/package.json +22 -8
  173. package/style/base.css +26 -0
  174. package/style/layerBrowser.css +10 -0
  175. package/style/leftPanel.css +0 -1
  176. package/style/shared/badge.css +61 -0
  177. package/style/shared/button.css +164 -0
  178. package/style/shared/calendar.css +274 -0
  179. package/style/shared/checkbox.css +28 -0
  180. package/style/shared/dropdownMenu.css +240 -0
  181. package/style/shared/pagination.css +167 -0
  182. package/style/shared/popover.css +53 -0
  183. package/style/shared/tabs.css +57 -0
  184. package/style/shared/toggle.css +85 -0
  185. package/style/stacBrowser.css +74 -0
  186. package/style/symbologyDialog.css +0 -7
  187. package/lib/mainview/spinner.d.ts +0 -6
  188. package/lib/mainview/spinner.js +0 -5
  189. package/lib/panelview/components/sources.d.ts +0 -10
  190. package/lib/panelview/components/sources.js +0 -147
  191. package/lib/toolbar/usertoolbaritem.d.ts +0 -19
  192. package/lib/toolbar/usertoolbaritem.js +0 -59
@@ -0,0 +1,66 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import ValueSelect from "../components/ValueSelect";
3
+ const Canonical = ({ model, state, okSignalPromise, cancel, layerId, selectableAttributesAndValues, }) => {
4
+ const selectedValueRef = useRef();
5
+ const [selectedValue, setSelectedValue] = useState('');
6
+ if (!layerId) {
7
+ return;
8
+ }
9
+ const layer = model.getLayer(layerId);
10
+ if (!(layer === null || layer === void 0 ? void 0 : layer.parameters)) {
11
+ return;
12
+ }
13
+ useEffect(() => {
14
+ okSignalPromise.promise.then(okSignal => {
15
+ okSignal.connect(handleOk, this);
16
+ });
17
+ return () => {
18
+ okSignalPromise.promise.then(okSignal => {
19
+ okSignal.disconnect(handleOk, this);
20
+ });
21
+ };
22
+ }, [selectedValue]);
23
+ useEffect(() => {
24
+ var _a, _b;
25
+ const layerParams = layer.parameters;
26
+ const value = (_b = (_a = layerParams.symbologyState) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : Object.keys(selectableAttributesAndValues)[0];
27
+ setSelectedValue(value);
28
+ }, [selectableAttributesAndValues]);
29
+ useEffect(() => {
30
+ selectedValueRef.current = selectedValue;
31
+ }, [selectedValue]);
32
+ const handleOk = () => {
33
+ if (!layer.parameters) {
34
+ return;
35
+ }
36
+ const colorExpr = ['get', selectedValue];
37
+ const newStyle = Object.assign({}, layer.parameters.color);
38
+ newStyle['fill-color'] = colorExpr;
39
+ newStyle['stroke-color'] = colorExpr;
40
+ newStyle['circle-fill-color'] = colorExpr;
41
+ const symbologyState = {
42
+ renderType: 'Canonical',
43
+ value: selectedValueRef.current,
44
+ };
45
+ layer.parameters.symbologyState = symbologyState;
46
+ layer.parameters.color = newStyle;
47
+ if (layer.type === 'HeatmapLayer') {
48
+ layer.type = 'VectorLayer';
49
+ }
50
+ model.sharedModel.updateLayer(layerId, layer);
51
+ cancel();
52
+ };
53
+ const body = (() => {
54
+ var _a;
55
+ if (((_a = Object.keys(selectableAttributesAndValues)) === null || _a === void 0 ? void 0 : _a.length) === 0) {
56
+ return (React.createElement("p", { className: "errors" }, "This symbology type is not available; no attributes contain a hex color code."));
57
+ }
58
+ else {
59
+ return (React.createElement(ValueSelect, { featureProperties: selectableAttributesAndValues, selectedValue: selectedValue, setSelectedValue: setSelectedValue }));
60
+ }
61
+ })();
62
+ return (React.createElement("div", { className: "jp-gis-layer-symbology-container" },
63
+ React.createElement("p", null, "Color features based on an attribute containing a hex color code."),
64
+ body));
65
+ };
66
+ export default Canonical;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { ISymbologyDialogProps } from '../../symbologyDialog';
3
- declare const Categorized: ({ model, state, okSignalPromise, cancel, layerId }: ISymbologyDialogProps) => React.JSX.Element | undefined;
2
+ import { ISymbologyTabbedDialogWithAttributesProps } from "../../symbologyDialog";
3
+ declare const Categorized: React.FC<ISymbologyTabbedDialogWithAttributesProps>;
4
4
  export default Categorized;
@@ -1,18 +1,22 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
- import { getNumericFeatureAttributes } from '../../../../tools';
3
- import ColorRamp from '../../components/color_ramp/ColorRamp';
4
- import StopContainer from '../../components/color_stops/StopContainer';
5
- import { useGetProperties } from '../../hooks/useGetProperties';
6
- import { Utils, VectorUtils } from '../../symbologyUtils';
7
- import ValueSelect from '../components/ValueSelect';
8
- const Categorized = ({ model, state, okSignalPromise, cancel, layerId }) => {
9
- const selectedValueRef = useRef();
2
+ import ColorRamp from "../../components/color_ramp/ColorRamp";
3
+ import StopContainer from "../../components/color_stops/StopContainer";
4
+ import { Utils, VectorUtils } from "../../symbologyUtils";
5
+ import ValueSelect from "../components/ValueSelect";
6
+ const Categorized = ({ model, state, okSignalPromise, cancel, layerId, symbologyTab, selectableAttributesAndValues, }) => {
7
+ const selectedAttributeRef = useRef();
10
8
  const stopRowsRef = useRef();
11
9
  const colorRampOptionsRef = useRef();
12
- const [selectedValue, setSelectedValue] = useState('');
10
+ const [selectedAttribute, setSelectedAttribute] = useState('');
13
11
  const [stopRows, setStopRows] = useState([]);
14
12
  const [colorRampOptions, setColorRampOptions] = useState();
15
- const [features, setFeatures] = useState({});
13
+ const [manualStyle, setManualStyle] = useState({
14
+ fillColor: '#3399CC',
15
+ strokeColor: '#3399CC',
16
+ strokeWidth: 1.25,
17
+ radius: 5,
18
+ });
19
+ const manualStyleRef = useRef(manualStyle);
16
20
  if (!layerId) {
17
21
  return;
18
22
  }
@@ -20,10 +24,6 @@ const Categorized = ({ model, state, okSignalPromise, cancel, layerId }) => {
20
24
  if (!(layer === null || layer === void 0 ? void 0 : layer.parameters)) {
21
25
  return;
22
26
  }
23
- const { featureProperties } = useGetProperties({
24
- layerId,
25
- model: model
26
- });
27
27
  useEffect(() => {
28
28
  const valueColorPairs = VectorUtils.buildColorInfo(layer);
29
29
  setStopRows(valueColorPairs);
@@ -36,70 +36,165 @@ const Categorized = ({ model, state, okSignalPromise, cancel, layerId }) => {
36
36
  });
37
37
  };
38
38
  }, []);
39
+ useEffect(() => {
40
+ var _a;
41
+ if ((_a = layer === null || layer === void 0 ? void 0 : layer.parameters) === null || _a === void 0 ? void 0 : _a.color) {
42
+ const fillColor = layer.parameters.color['fill-color'];
43
+ const circleFillColor = layer.parameters.color['circle-fill-color'];
44
+ const strokeColor = layer.parameters.color['stroke-color'];
45
+ const circleStrokeColor = layer.parameters.color['circle-stroke-color'];
46
+ const isSimpleColor = (val) => typeof val === 'string' && /^#?[0-9A-Fa-f]{3,8}$/.test(val);
47
+ setManualStyle({
48
+ fillColor: isSimpleColor(fillColor)
49
+ ? fillColor
50
+ : isSimpleColor(circleFillColor)
51
+ ? circleFillColor
52
+ : '#3399CC',
53
+ strokeColor: isSimpleColor(strokeColor)
54
+ ? strokeColor
55
+ : isSimpleColor(circleStrokeColor)
56
+ ? circleStrokeColor
57
+ : '#3399CC',
58
+ strokeWidth: layer.parameters.color['stroke-width'] ||
59
+ layer.parameters.color['circle-stroke-width'] ||
60
+ 1.25,
61
+ radius: layer.parameters.color['circle-radius'] || 5,
62
+ });
63
+ }
64
+ }, [layerId]);
65
+ useEffect(() => {
66
+ manualStyleRef.current = manualStyle;
67
+ }, [manualStyle]);
39
68
  useEffect(() => {
40
69
  var _a, _b;
41
70
  // We only want number values here
42
- const numericFeatures = getNumericFeatureAttributes(featureProperties);
43
- setFeatures(numericFeatures);
44
71
  const layerParams = layer.parameters;
45
- const value = (_b = (_a = layerParams.symbologyState) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : Object.keys(numericFeatures)[0];
46
- setSelectedValue(value);
47
- }, [featureProperties]);
72
+ const attribute = (_b = (_a = layerParams.symbologyState) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : Object.keys(selectableAttributesAndValues)[0];
73
+ setSelectedAttribute(attribute);
74
+ }, [selectableAttributesAndValues]);
48
75
  useEffect(() => {
49
- selectedValueRef.current = selectedValue;
76
+ selectedAttributeRef.current = selectedAttribute;
50
77
  stopRowsRef.current = stopRows;
51
78
  colorRampOptionsRef.current = colorRampOptions;
52
- }, [selectedValue, stopRows, colorRampOptions]);
79
+ }, [selectedAttribute, stopRows, colorRampOptions]);
53
80
  const buildColorInfoFromClassification = (selectedMode, numberOfShades, selectedRamp, setIsLoading) => {
54
81
  setColorRampOptions({
55
82
  selectedFunction: '',
56
83
  selectedRamp,
57
84
  numberOfShades: '',
58
- selectedMode: ''
85
+ selectedMode: '',
59
86
  });
60
- const stops = Array.from(features[selectedValue]).sort((a, b) => a - b);
87
+ const stops = Array.from(selectableAttributesAndValues[selectedAttribute]).sort((a, b) => a - b);
61
88
  const valueColorPairs = Utils.getValueColorPairs(stops, selectedRamp, stops.length);
62
89
  setStopRows(valueColorPairs);
63
90
  };
64
91
  const handleOk = () => {
65
- var _a, _b, _c, _d;
92
+ var _a, _b, _c;
66
93
  if (!layer.parameters) {
67
94
  return;
68
95
  }
69
- const colorExpr = [];
70
- colorExpr.push('case');
71
- (_a = stopRowsRef.current) === null || _a === void 0 ? void 0 : _a.map(stop => {
72
- colorExpr.push(['==', ['get', selectedValueRef.current], stop.stop]);
73
- colorExpr.push(stop.output);
74
- });
75
- // fallback value
76
- colorExpr.push([0, 0, 0, 0.0]);
77
96
  const newStyle = Object.assign({}, layer.parameters.color);
78
- if (layer.parameters.type === 'fill') {
79
- newStyle['fill-color'] = colorExpr;
80
- }
81
- if (layer.parameters.type === 'line') {
82
- newStyle['stroke-color'] = colorExpr;
97
+ if (stopRowsRef.current && stopRowsRef.current.length > 0) {
98
+ // Classification applied (for color)
99
+ const expr = ['case'];
100
+ stopRowsRef.current.forEach(stop => {
101
+ expr.push(['==', ['get', selectedAttributeRef.current], stop.stop]);
102
+ expr.push(stop.output);
103
+ });
104
+ if (symbologyTab === 'color') {
105
+ expr.push([0, 0, 0, 0.0]); // fallback color
106
+ newStyle['fill-color'] = expr;
107
+ newStyle['circle-fill-color'] = expr;
108
+ newStyle['stroke-color'] = expr;
109
+ newStyle['circle-stroke-color'] = expr;
110
+ }
83
111
  }
84
- if (layer.parameters.type === 'circle') {
85
- newStyle['circle-fill-color'] = colorExpr;
112
+ else {
113
+ newStyle['fill-color'] = manualStyleRef.current.fillColor;
114
+ newStyle['circle-fill-color'] = manualStyleRef.current.fillColor;
86
115
  }
116
+ newStyle['stroke-width'] = manualStyleRef.current.strokeWidth;
117
+ newStyle['circle-stroke-width'] = manualStyleRef.current.strokeWidth;
118
+ newStyle['circle-radius'] = manualStyleRef.current.radius;
119
+ newStyle['circle-stroke-color'] = manualStyleRef.current.strokeColor;
87
120
  const symbologyState = {
88
121
  renderType: 'Categorized',
89
- value: selectedValueRef.current,
90
- colorRamp: (_b = colorRampOptionsRef.current) === null || _b === void 0 ? void 0 : _b.selectedRamp,
91
- nClasses: (_c = colorRampOptionsRef.current) === null || _c === void 0 ? void 0 : _c.numberOfShades,
92
- mode: (_d = colorRampOptionsRef.current) === null || _d === void 0 ? void 0 : _d.selectedMode
122
+ value: selectedAttributeRef.current,
123
+ colorRamp: (_a = colorRampOptionsRef.current) === null || _a === void 0 ? void 0 : _a.selectedRamp,
124
+ nClasses: (_b = colorRampOptionsRef.current) === null || _b === void 0 ? void 0 : _b.numberOfShades,
125
+ mode: (_c = colorRampOptionsRef.current) === null || _c === void 0 ? void 0 : _c.selectedMode,
126
+ symbologyTab,
93
127
  };
94
128
  layer.parameters.symbologyState = symbologyState;
95
129
  layer.parameters.color = newStyle;
96
- layer.type = 'VectorLayer';
130
+ if (layer.type === 'HeatmapLayer') {
131
+ layer.type = 'VectorLayer';
132
+ }
97
133
  model.sharedModel.updateLayer(layerId, layer);
98
134
  cancel();
99
135
  };
136
+ const handleReset = (method) => {
137
+ if (!(layer === null || layer === void 0 ? void 0 : layer.parameters)) {
138
+ return;
139
+ }
140
+ const newStyle = Object.assign({}, layer.parameters.color);
141
+ if (method === 'color') {
142
+ console.log('delecol');
143
+ delete newStyle['fill-color'];
144
+ delete newStyle['stroke-color'];
145
+ delete newStyle['circle-fill-color'];
146
+ delete newStyle['circle-stroke-color'];
147
+ setStopRows([]);
148
+ // Reset color classification options
149
+ if (layer.parameters.symbologyState) {
150
+ layer.parameters.symbologyState.colorRamp = undefined;
151
+ layer.parameters.symbologyState.nClasses = undefined;
152
+ layer.parameters.symbologyState.mode = undefined;
153
+ }
154
+ }
155
+ if (method === 'radius') {
156
+ delete newStyle['circle-radius'];
157
+ }
158
+ layer.parameters.color = newStyle;
159
+ model.sharedModel.updateLayer(layerId, layer);
160
+ };
161
+ const body = (() => {
162
+ if (Object.keys(selectableAttributesAndValues).length === 0) {
163
+ return (React.createElement("p", { className: "errors" }, "This symbology type is not available; no attributes contain numeric values."));
164
+ }
165
+ else {
166
+ return (React.createElement(React.Fragment, null,
167
+ React.createElement(ValueSelect, { featureProperties: selectableAttributesAndValues, selectedValue: selectedAttribute, setSelectedValue: setSelectedAttribute }),
168
+ React.createElement("div", { className: "jp-gis-layer-symbology-container" },
169
+ symbologyTab === 'color' && (React.createElement(React.Fragment, null,
170
+ React.createElement("div", { className: "jp-gis-symbology-row" },
171
+ React.createElement("label", null, "Fill Color:"),
172
+ React.createElement("input", { type: "color", className: "jp-mod-styled", value: manualStyle.fillColor, onChange: e => {
173
+ handleReset('color');
174
+ setManualStyle(prev => (Object.assign(Object.assign({}, prev), { fillColor: e.target.value })));
175
+ } })),
176
+ React.createElement("div", { className: "jp-gis-symbology-row" },
177
+ React.createElement("label", null, "Stroke Color:"),
178
+ React.createElement("input", { type: "color", className: "jp-mod-styled", value: manualStyle.strokeColor, onChange: e => {
179
+ setManualStyle(prev => (Object.assign(Object.assign({}, prev), { strokeColor: e.target.value })));
180
+ } })),
181
+ React.createElement("div", { className: "jp-gis-symbology-row" },
182
+ React.createElement("label", null, "Stroke Width:"),
183
+ React.createElement("input", { type: "number", className: "jp-mod-styled", value: manualStyle.strokeWidth, onChange: e => {
184
+ setManualStyle(prev => (Object.assign(Object.assign({}, prev), { strokeWidth: +e.target.value })));
185
+ } })))),
186
+ symbologyTab === 'radius' && (React.createElement("div", { className: "jp-gis-symbology-row" },
187
+ React.createElement("label", null, "Circle Radius:"),
188
+ React.createElement("input", { type: "number", className: "jp-mod-styled", value: manualStyle.radius, onChange: e => {
189
+ setManualStyle(prev => (Object.assign(Object.assign({}, prev), { radius: +e.target.value })));
190
+ } })))),
191
+ React.createElement("div", { className: "jp-gis-layer-symbology-container" },
192
+ React.createElement(ColorRamp, { layerParams: layer.parameters, modeOptions: [], classifyFunc: buildColorInfoFromClassification, showModeRow: false, showRampSelector: symbologyTab === 'color' }),
193
+ React.createElement(StopContainer, { selectedMethod: '', stopRows: stopRows, setStopRows: setStopRows }))));
194
+ }
195
+ })();
100
196
  return (React.createElement("div", { className: "jp-gis-layer-symbology-container" },
101
- React.createElement(ValueSelect, { featureProperties: features, selectedValue: selectedValue, setSelectedValue: setSelectedValue }),
102
- React.createElement(ColorRamp, { layerParams: layer.parameters, modeOptions: [], classifyFunc: buildColorInfoFromClassification, showModeRow: false }),
103
- React.createElement(StopContainer, { selectedMethod: '', stopRows: stopRows, setStopRows: setStopRows })));
197
+ React.createElement("p", null, "Color features based on an attribute containing unique values."),
198
+ body));
104
199
  };
105
200
  export default Categorized;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { ISymbologyDialogProps } from '../../symbologyDialog';
3
- declare const Graduated: ({ model, state, okSignalPromise, cancel, layerId }: ISymbologyDialogProps) => React.JSX.Element | undefined;
2
+ import { ISymbologyTabbedDialogWithAttributesProps } from "../../symbologyDialog";
3
+ declare const Graduated: React.FC<ISymbologyTabbedDialogWithAttributesProps>;
4
4
  export default Graduated;