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

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 (171) hide show
  1. package/dist/package.json +5 -2
  2. package/package.json +6 -3
  3. package/src/DashSubsurfaceViewer.tsx +0 -270
  4. package/src/SubsurfaceViewer.stories.tsx +0 -449
  5. package/src/SubsurfaceViewer.test.tsx +0 -98
  6. package/src/SubsurfaceViewer.tsx +0 -356
  7. package/src/__snapshots__/SubsurfaceViewer.test.tsx.snap +0 -178
  8. package/src/assets/glTF/north_arrow/scene.bin +0 -0
  9. package/src/assets/glTF/north_arrow/scene.gltf +0 -315
  10. package/src/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
  11. package/src/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
  12. package/src/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
  13. package/src/components/ColorLegend.test.tsx +0 -32
  14. package/src/components/ColorLegend.tsx +0 -80
  15. package/src/components/ColorLegends.test.tsx +0 -97
  16. package/src/components/ColorLegends.tsx +0 -46
  17. package/src/components/DistanceScale.stories.tsx +0 -28
  18. package/src/components/DistanceScale.test.tsx +0 -36
  19. package/src/components/DistanceScale.tsx +0 -84
  20. package/src/components/InfoCard.test.tsx +0 -110
  21. package/src/components/InfoCard.tsx +0 -263
  22. package/src/components/Map.test.tsx +0 -142
  23. package/src/components/Map.tsx +0 -1435
  24. package/src/components/StatusIndicator.test.tsx +0 -14
  25. package/src/components/StatusIndicator.tsx +0 -38
  26. package/src/components/ViewAnnotation.tsx +0 -16
  27. package/src/components/ViewFooter.test.tsx +0 -12
  28. package/src/components/ViewFooter.tsx +0 -30
  29. package/src/components/__snapshots__/ColorLegends.test.tsx.snap +0 -15
  30. package/src/components/__snapshots__/DistanceScale.test.tsx.snap +0 -33
  31. package/src/components/__snapshots__/InfoCard.test.tsx.snap +0 -561
  32. package/src/components/__snapshots__/Map.test.tsx.snap +0 -119
  33. package/src/components/__snapshots__/StatusIndicator.test.tsx.snap +0 -3
  34. package/src/components/__snapshots__/ViewFooter.test.tsx.snap +0 -7
  35. package/src/components/settings/DrawModeSelector.test.tsx +0 -45
  36. package/src/components/settings/DrawModeSelector.tsx +0 -58
  37. package/src/components/settings/DrawModeSelector_performance.test.tsx +0 -35
  38. package/src/components/settings/LayerProperty.test.tsx +0 -35
  39. package/src/components/settings/LayerProperty.tsx +0 -153
  40. package/src/components/settings/LayerProperty_performance.test.tsx +0 -39
  41. package/src/components/settings/LayerSettingsButton.test.tsx +0 -133
  42. package/src/components/settings/LayerSettingsButton.tsx +0 -95
  43. package/src/components/settings/LayersButton.test.tsx +0 -102
  44. package/src/components/settings/LayersButton.tsx +0 -97
  45. package/src/components/settings/NumericInput.test.tsx +0 -25
  46. package/src/components/settings/NumericInput.tsx +0 -67
  47. package/src/components/settings/Settings.tsx +0 -71
  48. package/src/components/settings/SliderInput.test.tsx +0 -28
  49. package/src/components/settings/SliderInput.tsx +0 -71
  50. package/src/components/settings/ToggleButton.test.tsx +0 -25
  51. package/src/components/settings/ToggleButton.tsx +0 -53
  52. package/src/components/settings/__snapshots__/DrawModeSelector.test.tsx.snap +0 -124
  53. package/src/components/settings/__snapshots__/LayerProperty.test.tsx.snap +0 -124
  54. package/src/components/settings/__snapshots__/LayerSettingsButton.test.tsx.snap +0 -36
  55. package/src/components/settings/__snapshots__/LayersButton.test.tsx.snap +0 -83
  56. package/src/components/settings/__snapshots__/NumericInput.test.tsx.snap +0 -123
  57. package/src/components/settings/__snapshots__/SliderInput.test.tsx.snap +0 -244
  58. package/src/components/settings/__snapshots__/ToggleButton.test.tsx.snap +0 -182
  59. package/src/custom.d.ts +0 -9
  60. package/src/index.ts +0 -5
  61. package/src/inputSchema/ColorTables.json +0 -51
  62. package/src/inputSchema/FaultPolygons.json +0 -80
  63. package/src/inputSchema/Grid.json +0 -39
  64. package/src/inputSchema/PieChart.json +0 -72
  65. package/src/inputSchema/WellLog.json +0 -126
  66. package/src/inputSchema/WellLogTemplate.json +0 -136
  67. package/src/inputSchema/WellLogs.json +0 -5
  68. package/src/inputSchema/Wells.json +0 -106
  69. package/src/inputSchema/schemaValidationUtil.tsx +0 -55
  70. package/src/inputSchema/validator.tsx +0 -72
  71. package/src/inputSchema/wellCompletions.json +0 -108
  72. package/src/layers/BoxSelectionLayer/boxSelectionLayer.stories.tsx +0 -172
  73. package/src/layers/BoxSelectionLayer/boxSelectionLayer.tsx +0 -136
  74. package/src/layers/axes/axes-fragment.glsl.ts +0 -15
  75. package/src/layers/axes/axesLayer.stories.tsx +0 -87
  76. package/src/layers/axes/axesLayer.ts +0 -692
  77. package/src/layers/axes/boxLayer.ts +0 -71
  78. package/src/layers/axes/grid-vertex.glsl.ts +0 -14
  79. package/src/layers/axes2d/axes2DLayer.stories.tsx +0 -150
  80. package/src/layers/axes2d/axes2DLayer.ts +0 -841
  81. package/src/layers/axes2d/font-atlas.png +0 -0
  82. package/src/layers/axes2d/label-fragment.glsl.js +0 -37
  83. package/src/layers/axes2d/label-vertex.glsl.js +0 -20
  84. package/src/layers/axes2d/line-fragment.glsl.js +0 -14
  85. package/src/layers/axes2d/line-vertex.glsl.js +0 -13
  86. package/src/layers/colormap/colormap.fs.glsl.ts +0 -42
  87. package/src/layers/colormap/colormapLayer.ts +0 -247
  88. package/src/layers/drawing/drawingLayer.tsx +0 -256
  89. package/src/layers/fault_polygons/faultPolygonsLayer.ts +0 -54
  90. package/src/layers/grid3d/fragment.fs.glsl.ts +0 -109
  91. package/src/layers/grid3d/fragment_lines.glsl.ts +0 -21
  92. package/src/layers/grid3d/grid3dLayer.stories.tsx +0 -172
  93. package/src/layers/grid3d/grid3dLayer.ts +0 -248
  94. package/src/layers/grid3d/privateLayer.ts +0 -292
  95. package/src/layers/grid3d/vertex.glsl.ts +0 -43
  96. package/src/layers/grid3d/vertex_lines.glsl.ts +0 -15
  97. package/src/layers/grid3d/webworker.ts +0 -173
  98. package/src/layers/hillshading2d/hillshading2d.fs.glsl.ts +0 -62
  99. package/src/layers/hillshading2d/hillshading2dLayer.ts +0 -172
  100. package/src/layers/index.ts +0 -35
  101. package/src/layers/intersection/intersectionView.stories.tsx +0 -294
  102. package/src/layers/intersection/unfoldedGeoJsonLayer.ts +0 -92
  103. package/src/layers/map/fragment.fs.glsl.ts +0 -127
  104. package/src/layers/map/fragment_lines.glsl.ts +0 -21
  105. package/src/layers/map/mapLayer.stories.tsx +0 -1369
  106. package/src/layers/map/mapLayer.ts +0 -470
  107. package/src/layers/map/privateMapLayer.ts +0 -317
  108. package/src/layers/map/vertex.glsl.ts +0 -45
  109. package/src/layers/map/vertex_lines.glsl.ts +0 -15
  110. package/src/layers/map/webworker.ts +0 -479
  111. package/src/layers/northarrow/northArrow.stories.tsx +0 -108
  112. package/src/layers/northarrow/northArrow3DLayer.ts +0 -204
  113. package/src/layers/northarrow/northarrow-fragment.glsl.js +0 -14
  114. package/src/layers/northarrow/northarrow-vertex.glsl.js +0 -13
  115. package/src/layers/piechart/fragment.glsl.js +0 -42
  116. package/src/layers/piechart/pieChartLayer.ts +0 -246
  117. package/src/layers/piechart/vertex.glsl.js +0 -42
  118. package/src/layers/points/pointsLayer.stories.tsx +0 -141
  119. package/src/layers/points/pointsLayer.ts +0 -143
  120. package/src/layers/polylines/polylinesLayer.stories.tsx +0 -144
  121. package/src/layers/polylines/polylinesLayer.ts +0 -263
  122. package/src/layers/selectable_geojson/selectableGeoJsonLayer.ts +0 -25
  123. package/src/layers/shader_modules/decoder.fs.glsl.ts +0 -41
  124. package/src/layers/shader_modules/decoder.ts +0 -46
  125. package/src/layers/shader_modules/index.ts +0 -1
  126. package/src/layers/terrain/map3DLayer.stories.tsx +0 -340
  127. package/src/layers/terrain/map3DLayer.ts +0 -556
  128. package/src/layers/terrain/terrainMapLayer.ts +0 -334
  129. package/src/layers/terrain/terrainmap.fs.glsl.ts +0 -134
  130. package/src/layers/triangle/fragment.fs.glsl.ts +0 -126
  131. package/src/layers/triangle/fragment_lines.glsl.ts +0 -21
  132. package/src/layers/triangle/privateTriangleLayer.ts +0 -203
  133. package/src/layers/triangle/test_data/surfacePoints.ts +0 -4344
  134. package/src/layers/triangle/test_data/surfaceTriangles.ts +0 -7392
  135. package/src/layers/triangle/triangleLayer.stories.tsx +0 -191
  136. package/src/layers/triangle/triangleLayer.ts +0 -273
  137. package/src/layers/triangle/vertex.glsl.ts +0 -35
  138. package/src/layers/triangle/vertex_lines.glsl.ts +0 -15
  139. package/src/layers/triangle/webworker.ts +0 -165
  140. package/src/layers/utils/glsl.d.ts +0 -4
  141. package/src/layers/utils/layerTools.ts +0 -182
  142. package/src/layers/utils/propertyMapTools.ts +0 -43
  143. package/src/layers/wells/utils/spline.ts +0 -318
  144. package/src/layers/wells/wellsLayer.stories.tsx +0 -625
  145. package/src/layers/wells/wellsLayer.ts +0 -1377
  146. package/src/redux/actions.ts +0 -8
  147. package/src/redux/reducer.ts +0 -43
  148. package/src/redux/store.ts +0 -15
  149. package/src/redux/types.ts +0 -114
  150. package/src/storybook/SubsurfaceViewer.stories.jsx +0 -644
  151. package/src/storybook/components/InfoCard.stories.jsx +0 -39
  152. package/src/storybook/components/colorLegends/ContinuousLegend.stories.jsx +0 -32
  153. package/src/storybook/components/colorLegends/DiscreteLegend.stories.jsx +0 -33
  154. package/src/storybook/components/colorLegends/IndividualScaleForMap.stories.jsx +0 -99
  155. package/src/storybook/components/colorLegends/SingleScaleForMap.stories.jsx +0 -120
  156. package/src/storybook/components/settings/LayerSettingsButton.stories.jsx +0 -34
  157. package/src/storybook/components/settings/NumericInput.stories.jsx +0 -17
  158. package/src/storybook/components/settings/ToggleButton.stories.jsx +0 -16
  159. package/src/storybook/schemaValidation/sampleData.js +0 -177
  160. package/src/storybook/schemaValidation/schemaValidation.stories.jsx +0 -91
  161. package/src/test/TestWrapper.tsx +0 -13
  162. package/src/utils/configuration.ts +0 -61
  163. package/src/utils/fit-bounds.js +0 -85
  164. package/src/utils/measurement.ts +0 -61
  165. package/src/utils/northArrow.ts +0 -4
  166. package/src/utils/specExtractor.ts +0 -36
  167. package/src/viewports/index.js +0 -1
  168. package/src/viewports/intersectionViewport.ts +0 -137
  169. package/src/views/index.js +0 -1
  170. package/src/views/intersectionView.ts +0 -38
  171. 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
- };