@webviz/subsurface-viewer 0.0.1-alpha.1 → 0.0.2-alpha.2

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 (177) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.js +0 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +5 -2
  5. package/package.json +6 -3
  6. package/dist/DashSubsurfaceViewer.d.ts +0 -56
  7. package/dist/DashSubsurfaceViewer.js +0 -160
  8. package/dist/DashSubsurfaceViewer.js.map +0 -1
  9. package/src/DashSubsurfaceViewer.tsx +0 -270
  10. package/src/SubsurfaceViewer.stories.tsx +0 -449
  11. package/src/SubsurfaceViewer.test.tsx +0 -98
  12. package/src/SubsurfaceViewer.tsx +0 -356
  13. package/src/__snapshots__/SubsurfaceViewer.test.tsx.snap +0 -178
  14. package/src/assets/glTF/north_arrow/scene.bin +0 -0
  15. package/src/assets/glTF/north_arrow/scene.gltf +0 -315
  16. package/src/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
  17. package/src/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
  18. package/src/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
  19. package/src/components/ColorLegend.test.tsx +0 -32
  20. package/src/components/ColorLegend.tsx +0 -80
  21. package/src/components/ColorLegends.test.tsx +0 -97
  22. package/src/components/ColorLegends.tsx +0 -46
  23. package/src/components/DistanceScale.stories.tsx +0 -28
  24. package/src/components/DistanceScale.test.tsx +0 -36
  25. package/src/components/DistanceScale.tsx +0 -84
  26. package/src/components/InfoCard.test.tsx +0 -110
  27. package/src/components/InfoCard.tsx +0 -263
  28. package/src/components/Map.test.tsx +0 -142
  29. package/src/components/Map.tsx +0 -1435
  30. package/src/components/StatusIndicator.test.tsx +0 -14
  31. package/src/components/StatusIndicator.tsx +0 -38
  32. package/src/components/ViewAnnotation.tsx +0 -16
  33. package/src/components/ViewFooter.test.tsx +0 -12
  34. package/src/components/ViewFooter.tsx +0 -30
  35. package/src/components/__snapshots__/ColorLegends.test.tsx.snap +0 -15
  36. package/src/components/__snapshots__/DistanceScale.test.tsx.snap +0 -33
  37. package/src/components/__snapshots__/InfoCard.test.tsx.snap +0 -561
  38. package/src/components/__snapshots__/Map.test.tsx.snap +0 -119
  39. package/src/components/__snapshots__/StatusIndicator.test.tsx.snap +0 -3
  40. package/src/components/__snapshots__/ViewFooter.test.tsx.snap +0 -7
  41. package/src/components/settings/DrawModeSelector.test.tsx +0 -45
  42. package/src/components/settings/DrawModeSelector.tsx +0 -58
  43. package/src/components/settings/DrawModeSelector_performance.test.tsx +0 -35
  44. package/src/components/settings/LayerProperty.test.tsx +0 -35
  45. package/src/components/settings/LayerProperty.tsx +0 -153
  46. package/src/components/settings/LayerProperty_performance.test.tsx +0 -39
  47. package/src/components/settings/LayerSettingsButton.test.tsx +0 -133
  48. package/src/components/settings/LayerSettingsButton.tsx +0 -95
  49. package/src/components/settings/LayersButton.test.tsx +0 -102
  50. package/src/components/settings/LayersButton.tsx +0 -97
  51. package/src/components/settings/NumericInput.test.tsx +0 -25
  52. package/src/components/settings/NumericInput.tsx +0 -67
  53. package/src/components/settings/Settings.tsx +0 -71
  54. package/src/components/settings/SliderInput.test.tsx +0 -28
  55. package/src/components/settings/SliderInput.tsx +0 -71
  56. package/src/components/settings/ToggleButton.test.tsx +0 -25
  57. package/src/components/settings/ToggleButton.tsx +0 -53
  58. package/src/components/settings/__snapshots__/DrawModeSelector.test.tsx.snap +0 -124
  59. package/src/components/settings/__snapshots__/LayerProperty.test.tsx.snap +0 -124
  60. package/src/components/settings/__snapshots__/LayerSettingsButton.test.tsx.snap +0 -36
  61. package/src/components/settings/__snapshots__/LayersButton.test.tsx.snap +0 -83
  62. package/src/components/settings/__snapshots__/NumericInput.test.tsx.snap +0 -123
  63. package/src/components/settings/__snapshots__/SliderInput.test.tsx.snap +0 -244
  64. package/src/components/settings/__snapshots__/ToggleButton.test.tsx.snap +0 -182
  65. package/src/custom.d.ts +0 -9
  66. package/src/index.ts +0 -5
  67. package/src/inputSchema/ColorTables.json +0 -51
  68. package/src/inputSchema/FaultPolygons.json +0 -80
  69. package/src/inputSchema/Grid.json +0 -39
  70. package/src/inputSchema/PieChart.json +0 -72
  71. package/src/inputSchema/WellLog.json +0 -126
  72. package/src/inputSchema/WellLogTemplate.json +0 -136
  73. package/src/inputSchema/WellLogs.json +0 -5
  74. package/src/inputSchema/Wells.json +0 -106
  75. package/src/inputSchema/schemaValidationUtil.tsx +0 -55
  76. package/src/inputSchema/validator.tsx +0 -72
  77. package/src/inputSchema/wellCompletions.json +0 -108
  78. package/src/layers/BoxSelectionLayer/boxSelectionLayer.stories.tsx +0 -172
  79. package/src/layers/BoxSelectionLayer/boxSelectionLayer.tsx +0 -136
  80. package/src/layers/axes/axes-fragment.glsl.ts +0 -15
  81. package/src/layers/axes/axesLayer.stories.tsx +0 -87
  82. package/src/layers/axes/axesLayer.ts +0 -692
  83. package/src/layers/axes/boxLayer.ts +0 -71
  84. package/src/layers/axes/grid-vertex.glsl.ts +0 -14
  85. package/src/layers/axes2d/axes2DLayer.stories.tsx +0 -150
  86. package/src/layers/axes2d/axes2DLayer.ts +0 -841
  87. package/src/layers/axes2d/font-atlas.png +0 -0
  88. package/src/layers/axes2d/label-fragment.glsl.js +0 -37
  89. package/src/layers/axes2d/label-vertex.glsl.js +0 -20
  90. package/src/layers/axes2d/line-fragment.glsl.js +0 -14
  91. package/src/layers/axes2d/line-vertex.glsl.js +0 -13
  92. package/src/layers/colormap/colormap.fs.glsl.ts +0 -42
  93. package/src/layers/colormap/colormapLayer.ts +0 -247
  94. package/src/layers/drawing/drawingLayer.tsx +0 -256
  95. package/src/layers/fault_polygons/faultPolygonsLayer.ts +0 -54
  96. package/src/layers/grid3d/fragment.fs.glsl.ts +0 -109
  97. package/src/layers/grid3d/fragment_lines.glsl.ts +0 -21
  98. package/src/layers/grid3d/grid3dLayer.stories.tsx +0 -172
  99. package/src/layers/grid3d/grid3dLayer.ts +0 -248
  100. package/src/layers/grid3d/privateLayer.ts +0 -292
  101. package/src/layers/grid3d/vertex.glsl.ts +0 -43
  102. package/src/layers/grid3d/vertex_lines.glsl.ts +0 -15
  103. package/src/layers/grid3d/webworker.ts +0 -173
  104. package/src/layers/hillshading2d/hillshading2d.fs.glsl.ts +0 -62
  105. package/src/layers/hillshading2d/hillshading2dLayer.ts +0 -172
  106. package/src/layers/index.ts +0 -35
  107. package/src/layers/intersection/intersectionView.stories.tsx +0 -294
  108. package/src/layers/intersection/unfoldedGeoJsonLayer.ts +0 -92
  109. package/src/layers/map/fragment.fs.glsl.ts +0 -127
  110. package/src/layers/map/fragment_lines.glsl.ts +0 -21
  111. package/src/layers/map/mapLayer.stories.tsx +0 -1369
  112. package/src/layers/map/mapLayer.ts +0 -470
  113. package/src/layers/map/privateMapLayer.ts +0 -317
  114. package/src/layers/map/vertex.glsl.ts +0 -45
  115. package/src/layers/map/vertex_lines.glsl.ts +0 -15
  116. package/src/layers/map/webworker.ts +0 -479
  117. package/src/layers/northarrow/northArrow.stories.tsx +0 -108
  118. package/src/layers/northarrow/northArrow3DLayer.ts +0 -204
  119. package/src/layers/northarrow/northarrow-fragment.glsl.js +0 -14
  120. package/src/layers/northarrow/northarrow-vertex.glsl.js +0 -13
  121. package/src/layers/piechart/fragment.glsl.js +0 -42
  122. package/src/layers/piechart/pieChartLayer.ts +0 -246
  123. package/src/layers/piechart/vertex.glsl.js +0 -42
  124. package/src/layers/points/pointsLayer.stories.tsx +0 -141
  125. package/src/layers/points/pointsLayer.ts +0 -143
  126. package/src/layers/polylines/polylinesLayer.stories.tsx +0 -144
  127. package/src/layers/polylines/polylinesLayer.ts +0 -263
  128. package/src/layers/selectable_geojson/selectableGeoJsonLayer.ts +0 -25
  129. package/src/layers/shader_modules/decoder.fs.glsl.ts +0 -41
  130. package/src/layers/shader_modules/decoder.ts +0 -46
  131. package/src/layers/shader_modules/index.ts +0 -1
  132. package/src/layers/terrain/map3DLayer.stories.tsx +0 -340
  133. package/src/layers/terrain/map3DLayer.ts +0 -556
  134. package/src/layers/terrain/terrainMapLayer.ts +0 -334
  135. package/src/layers/terrain/terrainmap.fs.glsl.ts +0 -134
  136. package/src/layers/triangle/fragment.fs.glsl.ts +0 -126
  137. package/src/layers/triangle/fragment_lines.glsl.ts +0 -21
  138. package/src/layers/triangle/privateTriangleLayer.ts +0 -203
  139. package/src/layers/triangle/test_data/surfacePoints.ts +0 -4344
  140. package/src/layers/triangle/test_data/surfaceTriangles.ts +0 -7392
  141. package/src/layers/triangle/triangleLayer.stories.tsx +0 -191
  142. package/src/layers/triangle/triangleLayer.ts +0 -273
  143. package/src/layers/triangle/vertex.glsl.ts +0 -35
  144. package/src/layers/triangle/vertex_lines.glsl.ts +0 -15
  145. package/src/layers/triangle/webworker.ts +0 -165
  146. package/src/layers/utils/glsl.d.ts +0 -4
  147. package/src/layers/utils/layerTools.ts +0 -182
  148. package/src/layers/utils/propertyMapTools.ts +0 -43
  149. package/src/layers/wells/utils/spline.ts +0 -318
  150. package/src/layers/wells/wellsLayer.stories.tsx +0 -625
  151. package/src/layers/wells/wellsLayer.ts +0 -1377
  152. package/src/redux/actions.ts +0 -8
  153. package/src/redux/reducer.ts +0 -43
  154. package/src/redux/store.ts +0 -15
  155. package/src/redux/types.ts +0 -114
  156. package/src/storybook/SubsurfaceViewer.stories.jsx +0 -644
  157. package/src/storybook/components/InfoCard.stories.jsx +0 -39
  158. package/src/storybook/components/colorLegends/ContinuousLegend.stories.jsx +0 -32
  159. package/src/storybook/components/colorLegends/DiscreteLegend.stories.jsx +0 -33
  160. package/src/storybook/components/colorLegends/IndividualScaleForMap.stories.jsx +0 -99
  161. package/src/storybook/components/colorLegends/SingleScaleForMap.stories.jsx +0 -120
  162. package/src/storybook/components/settings/LayerSettingsButton.stories.jsx +0 -34
  163. package/src/storybook/components/settings/NumericInput.stories.jsx +0 -17
  164. package/src/storybook/components/settings/ToggleButton.stories.jsx +0 -16
  165. package/src/storybook/schemaValidation/sampleData.js +0 -177
  166. package/src/storybook/schemaValidation/schemaValidation.stories.jsx +0 -91
  167. package/src/test/TestWrapper.tsx +0 -13
  168. package/src/utils/configuration.ts +0 -61
  169. package/src/utils/fit-bounds.js +0 -85
  170. package/src/utils/measurement.ts +0 -61
  171. package/src/utils/northArrow.ts +0 -4
  172. package/src/utils/specExtractor.ts +0 -36
  173. package/src/viewports/index.js +0 -1
  174. package/src/viewports/intersectionViewport.ts +0 -137
  175. package/src/views/index.js +0 -1
  176. package/src/views/intersectionView.ts +0 -38
  177. package/tsconfig.json +0 -7
@@ -1,136 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "name": { "type": "string" },
5
- "scale": {
6
- "type": "object",
7
- "properties": {
8
- "primary": { "type": "string" },
9
- "allowSecondary": { "type": "boolean" }
10
- },
11
- "required": ["primary"]
12
- },
13
- "tracks": {
14
- "type": "array",
15
- "items": { "$ref": "#/definitions/track" }
16
- },
17
- "styles": {
18
- "type": "array",
19
- "items": { "$ref": "#/definitions/style" }
20
- }
21
- },
22
- "required": ["tracks"],
23
- "definitions": {
24
- "domain": {
25
- "type": "array",
26
- "minItems": 2,
27
- "maxItems": 2,
28
- "items": { "type": "number" }
29
- },
30
- "css_color": {
31
- "type": "string",
32
- "description": "Any valid CSS color value (named colors, three-digit hex color, six-digit hex color, RGB colors)",
33
- "examples": [
34
- "green",
35
- "#ff8000",
36
- "rgb(128,33,23)",
37
- "rgba(128,33,23,0.6)"
38
- ]
39
- },
40
- "plot_type": {
41
- "enum": [
42
- "line",
43
- "linestep",
44
- "dot",
45
- "area",
46
- "differential",
47
- "gradientfill",
48
- "stacked"
49
- ],
50
- "default": "line"
51
- },
52
- "scale_type": {
53
- "enum": ["log", "linear"],
54
- "default": "linear"
55
- },
56
- "plot_prop": {
57
- "type": "object",
58
- "properties": {
59
- "scale": { "$ref": "#/definitions/scale_type" },
60
- "type": { "$ref": "#/definitions/plot_type" },
61
-
62
- "color": { "$ref": "#/definitions/css_color" },
63
- "inverseColor": { "$ref": "#/definitions/css_color" },
64
-
65
- "fill": { "$ref": "#/definitions/css_color" },
66
- "fillOpacity": {
67
- "type": "number",
68
- "minimum": 0.0,
69
- "maximum": 1.0,
70
- "default": 0.25,
71
- "description": "for 'area' and 'gradientfill' plots"
72
- },
73
-
74
- "colorTable": {
75
- "type": "string",
76
- "description": "table id (name) for 'gradientfill' plot"
77
- },
78
- "inverseColorTable": {
79
- "type": "string",
80
- "description": "table id (name) for 'gradientfill' plot"
81
- },
82
-
83
- "colorScale": {
84
- "$ref": "#/definitions/scale_type",
85
- "description": "table id (name) for 'gradientfill' plot"
86
- },
87
- "inverseColorScale": {
88
- "$ref": "#/definitions/scale_type",
89
- "description": "table id (name) for 'gradientfill' plot"
90
- },
91
-
92
- "color2": {
93
- "$ref": "#/definitions/css_color",
94
- "description": "for 'differetial' plot"
95
- },
96
- "fill2": {
97
- "$ref": "#/definitions/css_color",
98
- "description": "for 'differetial' plot"
99
- }
100
- }
101
- },
102
- "plot": {
103
- "allOf": [{ "$ref": "#/definitions/plot_prop" }],
104
- "type": "object",
105
- "properties": {
106
- "name": { "type": "string" },
107
- "style": { "type": "string" },
108
- "scale": { "$ref": "#/definitions/scale_type" },
109
- "name2": { "type": "string" }
110
- },
111
- "required": ["name"]
112
- },
113
- "style": {
114
- "allOf": [{ "$ref": "#/definitions/plot_prop" }],
115
- "type": "object",
116
- "properties": {
117
- "name": { "type": "string" }
118
- },
119
- "required": ["name"]
120
- },
121
- "track": {
122
- "type": "object",
123
- "properties": {
124
- "title": { "type": "string" },
125
- "required": { "type": "boolean" },
126
- "scale": { "$ref": "#/definitions/scale_type" },
127
- "domain": { "$ref": "#/definitions/domain" },
128
- "plots": {
129
- "type": "array",
130
- "items": { "$ref": "#/definitions/plot" }
131
- }
132
- },
133
- "required": ["plots"]
134
- }
135
- }
136
- }
@@ -1,5 +0,0 @@
1
- {
2
- "$id": "inputSchema/WellLogs.json",
3
- "type": "array",
4
- "items": { "$ref": "./WellLog.json#" }
5
- }
@@ -1,106 +0,0 @@
1
- {
2
- "$comment": "Inspired from https://github.com/geojson/schema",
3
- "$schema": "http://json-schema.org/draft-07/schema#",
4
- "$id": "inputSchema/Wells.json",
5
- "title": "GeoJSON FeatureCollection",
6
- "type": "object",
7
- "required": ["type", "features"],
8
- "properties": {
9
- "type": {
10
- "type": "string",
11
- "enum": ["FeatureCollection"]
12
- },
13
- "features": {
14
- "type": "array",
15
- "items": {
16
- "title": "GeoJSON Feature",
17
- "type": "object",
18
- "required": ["type", "properties", "geometry"],
19
- "properties": {
20
- "type": {
21
- "type": "string",
22
- "enum": ["Feature"]
23
- },
24
- "id": {
25
- "oneOf": [
26
- {
27
- "type": "number"
28
- },
29
- {
30
- "type": "string"
31
- }
32
- ]
33
- },
34
- "properties": {
35
- "oneOf": [
36
- {
37
- "type": "null"
38
- },
39
- {
40
- "type": "object"
41
- }
42
- ]
43
- },
44
- "geometry": {
45
- "title": "GeoJSON GeometryCollection",
46
- "type": "object",
47
- "required": ["type", "geometries"],
48
- "properties": {
49
- "type": {
50
- "type": "string",
51
- "enum": ["GeometryCollection"]
52
- },
53
- "geometries": {
54
- "type": "array",
55
- "items": {
56
- "oneOf": [
57
- {
58
- "title": "GeoJSON Point",
59
- "type": "object",
60
- "required": ["type", "coordinates"],
61
- "properties": {
62
- "type": {
63
- "type": "string",
64
- "enum": ["Point"]
65
- },
66
- "coordinates": {
67
- "type": "array",
68
- "minItems": 2,
69
- "items": {
70
- "type": "number"
71
- }
72
- }
73
- }
74
- },
75
- {
76
- "title": "GeoJSON LineString",
77
- "type": "object",
78
- "required": ["type", "coordinates"],
79
- "properties": {
80
- "type": {
81
- "type": "string",
82
- "enum": ["LineString"]
83
- },
84
- "coordinates": {
85
- "type": "array",
86
- "minItems": 2,
87
- "items": {
88
- "type": "array",
89
- "minItems": 2,
90
- "items": {
91
- "type": "number"
92
- }
93
- }
94
- }
95
- }
96
- }
97
- ]
98
- }
99
- }
100
- }
101
- }
102
- }
103
- }
104
- }
105
- }
106
- }
@@ -1,55 +0,0 @@
1
- import { validateSchema } from "./validator";
2
- import { Layer } from "@deck.gl/core/typed";
3
- import { colorTablesArray } from "@emerson-eps/color-tables/";
4
-
5
- export function validateColorTables(colorTables: colorTablesArray): void {
6
- validateSchema(colorTables, "ColorTables");
7
- }
8
-
9
- export function validateLayers(layers: Layer[]): void {
10
- layers.forEach((layer) => {
11
- if (layer.isLoaded) {
12
- validateLayer(layer);
13
- try {
14
- layer.validateProps();
15
- } catch (e) {
16
- throw `${layer.id}- ${String(e)}`;
17
- }
18
- }
19
- });
20
- }
21
-
22
- export function validateLayer(layer: Layer): void {
23
- switch (layer.id) {
24
- case "wells-layer":
25
- validateWellsLayer(layer);
26
- break;
27
- case "pie-layer":
28
- validateSchema(layer.props.data, "PieChart");
29
- break;
30
- case "grid-layer":
31
- validateSchema(layer.props.data, "Grid");
32
- break;
33
- case "fault-polygons-layer":
34
- validateSchema(layer.props.data, "FaultPolygons");
35
- break;
36
- default:
37
- return;
38
- }
39
- }
40
-
41
- function validateWellsLayer(wellsLayer: Layer): void {
42
- const wells_data = wellsLayer.props.data;
43
- validateSchema(wells_data, "Wells");
44
-
45
- const logs_data = getLogData(wellsLayer);
46
- validateSchema(logs_data, "WellLogs");
47
- }
48
-
49
- function getLogData(wellsLayer: Layer) {
50
- const sub_layers = wellsLayer.internalState?.subLayers;
51
- const log_layer = sub_layers?.find(
52
- (layer) => layer.id === "wells-layer-log_curve"
53
- );
54
- return log_layer?.props.data;
55
- }
@@ -1,72 +0,0 @@
1
- import Ajv from "ajv";
2
- import { ErrorObject, ValidateFunction } from "ajv/dist/types/index";
3
-
4
- // schema definations
5
- import wellsSchema from "./Wells.json";
6
- import wellLogSchema from "./WellLog.json";
7
- import wellLogsSchema from "./WellLogs.json";
8
- import wellLogTemplateSchema from "./WellLogTemplate.json";
9
- import pieChartSchema from "./PieChart.json";
10
- import gridSchema from "./Grid.json";
11
- import faultPolygonsSchema from "./FaultPolygons.json";
12
- import colorTablesSchema from "./ColorTables.json";
13
-
14
- // Validator function accepts parameter data and schema type to be validated against.
15
- // Throws error message of failure.
16
- export function validateSchema(data: unknown, schema_type: string): void {
17
- let validator: ValidateFunction<unknown> | null = null;
18
-
19
- try {
20
- validator = createSchemaValidator(schema_type);
21
- } catch (e) {
22
- throw "Wrong JSON schema for " + schema_type + ". " + String(e);
23
- }
24
-
25
- if (!validator) throw "Wrong schema type.";
26
-
27
- validator(data);
28
- if (validator.errors) {
29
- throw formatSchemaError(schema_type, validator.errors);
30
- }
31
- }
32
-
33
- function createSchemaValidator(
34
- schema_type: string
35
- ): ValidateFunction<unknown> | null {
36
- const ajv = new Ajv({
37
- schemas: [wellLogSchema], // add list of dependent schemas
38
- });
39
-
40
- switch (schema_type) {
41
- case "Wells":
42
- return ajv.compile(wellsSchema);
43
- case "WellLog":
44
- return ajv.compile(wellLogSchema);
45
- case "WellLogs":
46
- return ajv.compile(wellLogsSchema);
47
- case "WellLogTemplate":
48
- return ajv.compile(wellLogTemplateSchema);
49
- case "PieChart":
50
- return ajv.compile(pieChartSchema);
51
- case "Grid":
52
- return ajv.compile(gridSchema);
53
- case "FaultPolygons":
54
- return ajv.compile(faultPolygonsSchema);
55
- case "ColorTables":
56
- return ajv.compile(colorTablesSchema);
57
- default:
58
- return null;
59
- }
60
- }
61
-
62
- function formatSchemaError(schema_type: string, errors: ErrorObject[]): string {
63
- let error_text = "";
64
-
65
- if (errors[0]) {
66
- error_text =
67
- (errors[0].dataPath ? errors[0].dataPath + ": " : "") +
68
- errors[0].message;
69
- } else error_text = "JSON schema validation failed";
70
-
71
- return `${schema_type}: ${error_text}.`;
72
- }
@@ -1,108 +0,0 @@
1
- {
2
- "definitions": {
3
- "zone": {
4
- "type": "object",
5
- "properties": {
6
- "name": {
7
- "type": "string",
8
- "minLength": 1
9
- },
10
- "color": {
11
- "type": "string",
12
- "pattern": "^#[0-9a-fA-F]{6}$"
13
- },
14
- "subzones": {
15
- "type": "array",
16
- "items": { "$ref": "#/definitions/zone" }
17
- }
18
- },
19
- "required": ["name", "color"]
20
- }
21
- },
22
- "type": "object",
23
- "properties": {
24
- "version": { "type": "string", "minLength": 1 },
25
- "units": {
26
- "type": "object",
27
- "properties": {
28
- "kh": {
29
- "type": "object",
30
- "properties": {
31
- "unit": {
32
- "type": "string"
33
- },
34
- "decimalPlaces": { "type": "number" }
35
- }
36
- }
37
- }
38
- },
39
- "stratigraphy": {
40
- "type": "array",
41
- "items": { "$ref": "#/definitions/zone" }
42
- },
43
- "timeSteps": {
44
- "type": "array",
45
- "items": { "type": "string", "minLength": 1 }
46
- },
47
- "wells": {
48
- "type": "array",
49
- "items": {
50
- "type": "object",
51
- "properties": {
52
- "name": {
53
- "type": "string",
54
- "minLength": 1
55
- },
56
- "completions": {
57
- "type": "object",
58
- "patternProperties": {
59
- ".+": {
60
- "type": "object",
61
- "properties": {
62
- "t": {
63
- "type": "array",
64
- "items": { "type": "number" }
65
- },
66
- "open": {
67
- "type": "array",
68
- "items": { "type": "number" }
69
- },
70
- "shut": {
71
- "type": "array",
72
- "items": { "type": "number" }
73
- },
74
- "khMean": {
75
- "type": "array",
76
- "items": { "type": "number" }
77
- },
78
- "khMin": {
79
- "type": "array",
80
- "items": { "type": "number" }
81
- },
82
- "khMax": {
83
- "type": "array",
84
- "items": { "type": "number" }
85
- }
86
- },
87
- "required": [
88
- "t",
89
- "open",
90
- "shut",
91
- "khMean",
92
- "khMin",
93
- "khMax"
94
- ]
95
- }
96
- },
97
- "additionalProperties": false
98
- },
99
- "attributes": {
100
- "type": "object"
101
- }
102
- },
103
- "required": ["name", "completions", "attributes"]
104
- }
105
- }
106
- },
107
- "required": ["stratigraphy", "timeSteps", "wells"]
108
- }
@@ -1,172 +0,0 @@
1
- /* eslint-disable react-hooks/exhaustive-deps */ // remove when ready to fix these.
2
- /* eslint-disable react-hooks/rules-of-hooks */ // remove when ready to fix these.
3
-
4
- import { FormControlLabel, Switch } from "@mui/material";
5
- import { styled } from "@mui/material/styles";
6
- import { ComponentMeta, ComponentStory } from "@storybook/react";
7
- import React from "react";
8
- import SubsurfaceViewer from "../../SubsurfaceViewer";
9
-
10
- const PREFIX = "boxSelectionLayer";
11
-
12
- // This should be fixed at some point
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- type PickInfo = any;
15
-
16
- const classes = {
17
- main: `${PREFIX}-main`,
18
- legend: `${PREFIX}-legend`,
19
- };
20
-
21
- // TODO jss-to-styled codemod: The Fragment root was replaced by div. Change the tag if needed.
22
- const Root = styled("div")({
23
- [`& .${classes.main}`]: {
24
- height: 500,
25
- border: "1px solid black",
26
- position: "relative",
27
- },
28
- [`& .${classes.legend}`]: {
29
- width: 100,
30
- position: "absolute",
31
- top: "0",
32
- right: "0",
33
- },
34
- });
35
-
36
- export default {
37
- component: SubsurfaceViewer,
38
- title: "SubsurfaceViewer / Box Selection Layer",
39
- } as ComponentMeta<typeof SubsurfaceViewer>;
40
-
41
- export const boxSelection: ComponentStory<typeof SubsurfaceViewer> = () => {
42
- const [argsState, setArgsState] =
43
- React.useState<Record<string, unknown>>(enableLassoArgs);
44
- const [state, setState] = React.useState<boolean>(true);
45
-
46
- const handleChange = React.useCallback(() => {
47
- const boxSelectionLayer = enableLassoArgs.layers.filter(
48
- (item) => item["@@type"] === "BoxSelectionLayer"
49
- );
50
- if (boxSelectionLayer[0].visible !== undefined) {
51
- boxSelectionLayer[0].visible = !boxSelectionLayer[0].visible;
52
- }
53
- if (boxSelectionLayer[0].visible) {
54
- setArgsState(enableLassoArgs);
55
- } else {
56
- setArgsState(disableLassoArgs);
57
- }
58
- setState(!state);
59
- }, [state]);
60
-
61
- return (
62
- <Root>
63
- <div className={classes.main}>
64
- <SubsurfaceViewer id={"DeckGL-Map"} {...argsState} />
65
- </div>
66
- <div style={{ textAlign: "center" }}>
67
- <FormControlLabel
68
- control={
69
- <Switch
70
- checked={state}
71
- onChange={handleChange}
72
- color="primary"
73
- name="checkedB"
74
- inputProps={{ "aria-label": "primary checkbox" }}
75
- />
76
- }
77
- label="Display Lasso Selection"
78
- />
79
- </div>
80
- </Root>
81
- );
82
- };
83
-
84
- const disableLassoArgs = {
85
- id: "DeckGL-Map",
86
- resources: {
87
- wellsData: "./volve_wells.json",
88
- },
89
- bounds: [432205, 6475078, 437720, 6481113],
90
- layers: [
91
- {
92
- "@@type": "WellsLayer",
93
- data: "@@#resources.wellsData",
94
- },
95
- {
96
- "@@type": "BoxSelectionLayer",
97
- visible: false,
98
- },
99
- ],
100
- editedData: {},
101
- views: {
102
- layout: [1, 1],
103
- showLabel: false,
104
- viewports: [
105
- {
106
- id: "view_1",
107
- show3D: false,
108
- layerIds: [],
109
- },
110
- ],
111
- },
112
- };
113
-
114
- const enableLassoArgs = {
115
- ...disableLassoArgs,
116
- layers: [
117
- {
118
- "@@type": "WellsLayer",
119
- data: "@@#resources.wellsData",
120
- },
121
- {
122
- "@@type": "BoxSelectionLayer",
123
- visible: true,
124
- },
125
- ],
126
- };
127
-
128
- export const boxSelectionWithCallback: ComponentStory<
129
- typeof SubsurfaceViewer
130
- > = () => {
131
- const [data, setData] = React.useState<string[]>([]);
132
- const getSelectedWellsDataCallBack = React.useCallback(
133
- (pickingInfos: PickInfo[]) => {
134
- const selectedWells = pickingInfos
135
- .map((item) => item.object)
136
- .filter((item) => item.type === "Feature")
137
- .map((item) => item.properties["name"]) as string[];
138
- setData(selectedWells);
139
- },
140
- []
141
- );
142
- const lassoArgsWithSelectedWellsDataCallback: Record<string, unknown> = {
143
- ...disableLassoArgs,
144
- layers: [
145
- {
146
- "@@type": "WellsLayer",
147
- data: "@@#resources.wellsData",
148
- },
149
- {
150
- "@@type": "BoxSelectionLayer",
151
- visible: true,
152
- handleSelection: getSelectedWellsDataCallBack,
153
- },
154
- ],
155
- };
156
- return (
157
- <Root>
158
- <div className={classes.main}>
159
- <SubsurfaceViewer
160
- id={"DeckGL-Map"}
161
- {...lassoArgsWithSelectedWellsDataCallback}
162
- />
163
- </div>
164
- <div>
165
- <div>Selected Wells:</div>
166
- {data.map((item) => (
167
- <div key={item}>{item}</div>
168
- ))}
169
- </div>
170
- </Root>
171
- );
172
- };