@webviz/well-completions-plot 1.4.4 → 1.5.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/dist/WellCompletionsPlot.d.ts +1 -1
- package/dist/WellCompletionsPlot.js +2 -2
- package/dist/WellCompletionsPlot.js.map +1 -1
- package/dist/components/TooltipProvider.js +1 -4
- package/dist/components/TooltipProvider.js.map +1 -1
- package/dist/components/WellsPlot.d.ts +1 -1
- package/dist/components/WellsPlot.js +5 -5
- package/dist/components/WellsPlot.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/private-utils/layoutUtils.js.map +1 -0
- package/dist/{utils → private-utils}/stringUtil.test.js +1 -1
- package/dist/private-utils/stringUtil.test.js.map +1 -0
- package/dist/{utils/stringUtil.js → private-utils/stringUtils.js} +1 -1
- package/dist/private-utils/stringUtils.js.map +1 -0
- package/dist/types/dataTypes.d.ts +10 -10
- package/dist/types/dataTypes.js +12 -12
- package/dist/types/dataTypes.js.map +1 -1
- package/dist/utility-lib/dataTypeUtils.d.ts +28 -0
- package/dist/utility-lib/dataTypeUtils.js +59 -0
- package/dist/utility-lib/dataTypeUtils.js.map +1 -0
- package/dist/utility-lib/dataTypeUtils.test.d.ts +1 -0
- package/dist/utility-lib/dataTypeUtils.test.js +144 -0
- package/dist/utility-lib/dataTypeUtils.test.js.map +1 -0
- package/dist/utility-lib/stringUtils.d.ts +8 -0
- package/dist/utility-lib/stringUtils.js +53 -0
- package/dist/utility-lib/stringUtils.js.map +1 -0
- package/dist/utility-lib/stringUtils.test.d.ts +1 -0
- package/dist/utility-lib/stringUtils.test.js +44 -0
- package/dist/utility-lib/stringUtils.test.js.map +1 -0
- package/dist/utility-lib/wellSortUtils.d.ts +59 -0
- package/dist/utility-lib/wellSortUtils.js +115 -0
- package/dist/utility-lib/wellSortUtils.js.map +1 -0
- package/dist/utility-lib/wellSortUtils.test.d.ts +1 -0
- package/dist/utility-lib/wellSortUtils.test.js +362 -0
- package/dist/utility-lib/wellSortUtils.test.js.map +1 -0
- package/package.json +1 -1
- package/dist/utils/layoutUtils.js.map +0 -1
- package/dist/utils/stringUtil.js.map +0 -1
- package/dist/utils/stringUtil.test.js.map +0 -1
- /package/dist/{utils → private-utils}/layoutUtils.d.ts +0 -0
- /package/dist/{utils → private-utils}/layoutUtils.js +0 -0
- /package/dist/{utils → private-utils}/stringUtil.test.d.ts +0 -0
- /package/dist/{utils/stringUtil.d.ts → private-utils/stringUtils.d.ts} +0 -0
|
@@ -3,7 +3,7 @@ import type { PlotData } from "./types/dataTypes";
|
|
|
3
3
|
import "./WellCompletionsPlot.css";
|
|
4
4
|
export interface WellCompletionsPlotProps {
|
|
5
5
|
id: string;
|
|
6
|
-
|
|
6
|
+
sortedCompletionDates: string[];
|
|
7
7
|
plotData: PlotData;
|
|
8
8
|
}
|
|
9
9
|
export declare const WellCompletionsPlot: React.FC<WellCompletionsPlotProps>;
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { useResizeDetector } from "react-resize-detector";
|
|
3
3
|
import { TooltipProvider } from "./components/TooltipProvider";
|
|
4
4
|
import { CompletionsPlot } from "./components/CompletionsPlot";
|
|
5
|
-
import { createLayout } from "./utils/layoutUtils";
|
|
5
|
+
import { createLayout } from "./private-utils/layoutUtils";
|
|
6
6
|
import { StratigraphyPlot } from "./components/StratigraphyPlot";
|
|
7
7
|
import { WellsPlot } from "./components/WellsPlot";
|
|
8
8
|
import "./WellCompletionsPlot.css";
|
|
@@ -21,7 +21,7 @@ export const WellCompletionsPlot = React.memo((props) => {
|
|
|
21
21
|
return (React.createElement(TooltipProvider, null,
|
|
22
22
|
React.createElement("div", { ref: ref, id: props.id, className: "WellCompletionsPlot", "data-tooltip-id": "plot-tooltip", "data-tooltip-float": true }, layout && props.plotData && (React.createElement("svg", { id: `${props.id}-svg-context`, width: width, height: height, style: { position: "relative" } },
|
|
23
23
|
React.createElement(StratigraphyPlot, { data: props.plotData.stratigraphy, layout: layout, padding: padding }),
|
|
24
|
-
React.createElement(WellsPlot, {
|
|
24
|
+
React.createElement(WellsPlot, { sortedCompletionDates: props.sortedCompletionDates, plotData: props.plotData, layout: layout, padding: padding }),
|
|
25
25
|
props.plotData && (React.createElement(CompletionsPlot, { plotData: props.plotData, layout: layout, padding: padding })))))));
|
|
26
26
|
});
|
|
27
27
|
WellCompletionsPlot.displayName = "WellCompletionsPlot";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WellCompletionsPlot.js","sourceRoot":"","sources":["../src/WellCompletionsPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WellCompletionsPlot.js","sourceRoot":"","sources":["../src/WellCompletionsPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,2BAA2B,CAAC;AAQnC,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtE,uCAAuC;AACvC,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,KAA+B,EAAE,EAAE;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC;QAC7C,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,MAAM,MAAM,GACR,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QACvC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;IAEpB,OAAO,CACH,oBAAC,eAAe;QACZ,6BACI,GAAG,EAAE,GAAsC,EAC3C,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,SAAS,EAAE,qBAAqB,qBAChB,cAAc,wBACV,IAAI,IAEvB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CACzB,6BACI,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,cAAc,EAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;YAE/B,oBAAC,gBAAgB,IACb,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,EACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAClB;YACF,oBAAC,SAAS,IACN,qBAAqB,EACjB,KAAK,CAAC,qBAAqB,EAE/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAClB;YACD,KAAK,CAAC,QAAQ,IAAI,CACf,oBAAC,eAAe,IACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAClB,CACL,CACC,CACT,CACC,CACQ,CACrB,CAAC;AACN,CAAC,CAAC,CAAC;AAEP,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC"}
|
|
@@ -12,16 +12,13 @@ const TooltipContext = React.createContext({
|
|
|
12
12
|
* done with setContent(null)
|
|
13
13
|
*/
|
|
14
14
|
const TooltipProvider = ({ children, }) => {
|
|
15
|
-
// State
|
|
16
15
|
const [Content, setContent] = React.useState(null);
|
|
17
16
|
const value = React.useMemo(() => ({
|
|
18
17
|
setContent,
|
|
19
18
|
}), [setContent]);
|
|
20
19
|
return (React.createElement(TooltipContext.Provider, { value: value },
|
|
21
20
|
children,
|
|
22
|
-
|
|
23
|
-
// @ts-expect-error
|
|
24
|
-
React.createElement(ReactTooltip, { id: "plot-tooltip", content: () => Content })));
|
|
21
|
+
React.createElement(ReactTooltip, { id: "plot-tooltip" }, Content)));
|
|
25
22
|
};
|
|
26
23
|
/**
|
|
27
24
|
* A hook for displaying tooltips
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipProvider.js","sourceRoot":"","sources":["../../src/components/TooltipProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAEvC;IACC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;CACzB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,eAAe,GAAyC,CAAC,EAC3D,QAAQ,GACiB,EAAE,EAAE;IAC7B,
|
|
1
|
+
{"version":3,"file":"TooltipProvider.js","sourceRoot":"","sources":["../../src/components/TooltipProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAEvC;IACC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;CACzB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,eAAe,GAAyC,CAAC,EAC3D,QAAQ,GACiB,EAAE,EAAE;IAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACvB,GAAG,EAAE,CAAC,CAAC;QACH,UAAU;KACb,CAAC,EACF,CAAC,UAAU,CAAC,CACf,CAAC;IAEF,OAAO,CACH,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;QAChC,QAAQ;QACR,oBAAC,YAAY,IAAC,EAAE,EAAC,cAAc,IAAE,OAAO,CAAgB,CACnC,CAC7B,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,GAAG,GAEjB,EAAE;IACA,OAAO,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import type { PlotData } from "../types/dataTypes";
|
|
4
4
|
import type { Padding, PlotLayout } from "../types/layoutTypes";
|
|
5
5
|
interface WellsPlotProps {
|
|
6
|
-
|
|
6
|
+
sortedCompletionDates: string[];
|
|
7
7
|
plotData: PlotData;
|
|
8
8
|
layout: PlotLayout;
|
|
9
9
|
padding: Padding;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* eslint-disable react-hooks/exhaustive-deps */ // remove when ready to fix these.
|
|
2
2
|
import React from "react";
|
|
3
|
-
import {
|
|
4
|
-
import { capitalizeFirstLetter } from "../utils/
|
|
3
|
+
import { SortWellsBy, SortWellsByEnumToStringMapping, } from "../types/dataTypes";
|
|
4
|
+
import { capitalizeFirstLetter } from "../private-utils/stringUtils";
|
|
5
5
|
import { useTooltip } from "./TooltipProvider";
|
|
6
6
|
const WellTooltipContent = (props) => {
|
|
7
7
|
return (React.createElement("table", { style: { color: "#fff" } },
|
|
8
8
|
React.createElement("tbody", null,
|
|
9
9
|
React.createElement("tr", { key: `well-tooltip-${props.name}-earliest-comp` },
|
|
10
10
|
React.createElement("td", null,
|
|
11
|
-
React.createElement("b", null,
|
|
11
|
+
React.createElement("b", null, SortWellsByEnumToStringMapping[SortWellsBy.EARLIEST_COMPLETION_DATE])),
|
|
12
12
|
React.createElement("td", null, props.earliestCompDate)),
|
|
13
13
|
Object.entries(props.attributes).map(([key, value]) => (React.createElement("tr", { key: `well-tooltip-${name}-${key}` },
|
|
14
14
|
React.createElement("td", null,
|
|
@@ -22,8 +22,8 @@ export const WellsPlot = (props) => {
|
|
|
22
22
|
const wellWidth = props.layout.xExtent / Math.max(props.plotData.wells.length, 1);
|
|
23
23
|
const barHeight = props.layout.yExtent / Math.max(props.plotData.stratigraphy.length, 1);
|
|
24
24
|
const onMouseOver = React.useCallback(function onMouseOver(well) {
|
|
25
|
-
setContent(() => (React.createElement(WellTooltipContent, { name: well.name, earliestCompDate: props.
|
|
26
|
-
}, [setContent, props.
|
|
25
|
+
setContent(() => (React.createElement(WellTooltipContent, { name: well.name, earliestCompDate: props.sortedCompletionDates[well.earliestCompDateIndex], attributes: well.attributes })));
|
|
26
|
+
}, [setContent, props.sortedCompletionDates]);
|
|
27
27
|
const onMouseOut = React.useCallback(function onMouseOut() {
|
|
28
28
|
setContent(() => null);
|
|
29
29
|
}, [setContent]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WellsPlot.js","sourceRoot":"","sources":["../../src/components/WellsPlot.tsx"],"names":[],"mappings":"AAAA,gDAAgD,CAAC,kCAAkC;AAEnF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"WellsPlot.js","sourceRoot":"","sources":["../../src/components/WellsPlot.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export { WellCompletionsPlot } from "./WellCompletionsPlot";
|
|
2
|
-
export { AttributeTypePropType,
|
|
2
|
+
export { AttributeTypePropType, SortWellsBy, SortWellsByEnumToStringMapping, SortDirection, UnitsPropType, WellInfoPropType, ZonePropTypes, } from "./types/dataTypes";
|
|
3
3
|
export type { AttributeType, CompletionPlotData, PlotData, Units, WellInfo, WellPlotData, Zone, } from "./types/dataTypes";
|
|
4
|
+
export { createWellNameRegexMatcher } from "./utility-lib/stringUtils";
|
|
5
|
+
export { extractSubzones, areCompletionsPlotDataValuesEqual, populateSubzonesArray, } from "./utility-lib/dataTypeUtils";
|
|
6
|
+
export { createGetWellPlotDataCompareValueFunction, compareWellPlotDataValues, compareWellsBySortByAndDirection, createSortedWells, createSortedWellsFromSequence, } from "./utility-lib/wellSortUtils";
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export { WellCompletionsPlot } from "./WellCompletionsPlot";
|
|
2
|
-
export { AttributeTypePropType,
|
|
2
|
+
export { AttributeTypePropType, SortWellsBy, SortWellsByEnumToStringMapping, SortDirection, UnitsPropType, WellInfoPropType, ZonePropTypes, } from "./types/dataTypes";
|
|
3
|
+
export { createWellNameRegexMatcher } from "./utility-lib/stringUtils";
|
|
4
|
+
export { extractSubzones, areCompletionsPlotDataValuesEqual, populateSubzonesArray, } from "./utility-lib/dataTypeUtils";
|
|
5
|
+
export { createGetWellPlotDataCompareValueFunction, compareWellPlotDataValues, compareWellsBySortByAndDirection, createSortedWells, createSortedWellsFromSequence, } from "./utility-lib/wellSortUtils";
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACH,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACH,qBAAqB,EACrB,WAAW,EACX,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACH,eAAe,EACf,iCAAiC,EACjC,qBAAqB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,yCAAyC,EACzC,yBAAyB,EACzB,gCAAgC,EAChC,iBAAiB,EACjB,6BAA6B,GAChC,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutUtils.js","sourceRoot":"","sources":["../../src/private-utils/layoutUtils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CACxB,KAAa,EACb,MAAc,EACd,UAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAE3D,MAAM,MAAM,GAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAqB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAqB;QAClC,KAAK,GAAG,OAAO,CAAC,KAAK;QACrB,MAAM,GAAG,OAAO,CAAC,MAAM;KAC1B,CAAC;IAEF,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,WAAW;KAC3B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtil.test.js","sourceRoot":"","sources":["../../src/private-utils/stringUtil.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/private-utils/stringUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1D,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC"}
|
|
@@ -2,18 +2,18 @@ import PropTypes from "prop-types";
|
|
|
2
2
|
import type React from "react";
|
|
3
3
|
export type AttributeType = string | number | boolean | undefined;
|
|
4
4
|
export declare enum SortDirection {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
ASCENDING = "Ascending",
|
|
6
|
+
DESCENDING = "Descending"
|
|
7
7
|
}
|
|
8
|
-
export declare enum
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export declare enum SortWellsBy {
|
|
9
|
+
WELL_NAME = "well_name",
|
|
10
|
+
STRATIGRAPHY_DEPTH = "stratigraphy_depth",
|
|
11
|
+
EARLIEST_COMPLETION_DATE = "earliest_completion_date"
|
|
12
12
|
}
|
|
13
|
-
export declare const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export declare const SortWellsByEnumToStringMapping: {
|
|
14
|
+
well_name: string;
|
|
15
|
+
stratigraphy_depth: string;
|
|
16
|
+
earliest_completion_date: string;
|
|
17
17
|
};
|
|
18
18
|
export interface Zone {
|
|
19
19
|
name: string;
|
package/dist/types/dataTypes.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import PropTypes from "prop-types";
|
|
2
2
|
export var SortDirection;
|
|
3
3
|
(function (SortDirection) {
|
|
4
|
-
SortDirection["
|
|
5
|
-
SortDirection["
|
|
4
|
+
SortDirection["ASCENDING"] = "Ascending";
|
|
5
|
+
SortDirection["DESCENDING"] = "Descending";
|
|
6
6
|
})(SortDirection || (SortDirection = {}));
|
|
7
|
-
export var
|
|
8
|
-
(function (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
})(
|
|
13
|
-
export const
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
7
|
+
export var SortWellsBy;
|
|
8
|
+
(function (SortWellsBy) {
|
|
9
|
+
SortWellsBy["WELL_NAME"] = "well_name";
|
|
10
|
+
SortWellsBy["STRATIGRAPHY_DEPTH"] = "stratigraphy_depth";
|
|
11
|
+
SortWellsBy["EARLIEST_COMPLETION_DATE"] = "earliest_completion_date";
|
|
12
|
+
})(SortWellsBy || (SortWellsBy = {}));
|
|
13
|
+
export const SortWellsByEnumToStringMapping = {
|
|
14
|
+
[SortWellsBy.WELL_NAME]: "Well name",
|
|
15
|
+
[SortWellsBy.STRATIGRAPHY_DEPTH]: "Stratigraphy depth",
|
|
16
|
+
[SortWellsBy.EARLIEST_COMPLETION_DATE]: "Earliest completion date",
|
|
17
17
|
};
|
|
18
18
|
// --------------------------- PropTypes ---------------------------------------
|
|
19
19
|
const ZoneShape = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataTypes.js","sourceRoot":"","sources":["../../src/types/dataTypes.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,0CAAyB,CAAA;AAC7B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"dataTypes.js","sourceRoot":"","sources":["../../src/types/dataTypes.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,0CAAyB,CAAA;AAC7B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,sCAAuB,CAAA;IACvB,wDAAyC,CAAA;IACzC,oEAAqD,CAAA;AACzD,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC1C,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,WAAW;IACpC,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;IACtD,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,0BAA0B;CACrE,CAAC;AAyCF,iFAAiF;AAEjF,MAAM,SAAS,GAAkC;IAC7C,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACjC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACrC,CAAC;AAEF,iHAAiH;AACjH,mEAAmE;AACnE,6GAA6G;AAC7G,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;IACrB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;CACrE,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,SAAS,CAAC;IACrD,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,IAAI;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC;IAC5C,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACjC,qBAAqB,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAClD,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,UAAU;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC;IACzC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC;QAChB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACjC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;KAC7C,CAAC,CAAC,UAAU;CAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CompletionPlotData, Zone } from "../types/dataTypes";
|
|
2
|
+
/**
|
|
3
|
+
* Compare the values of to CompletionPlotData objects
|
|
4
|
+
* @param completionsPlotData
|
|
5
|
+
* @param otherCompletionsPlotData
|
|
6
|
+
* @returns True of the values of the two CompletionPlotData objects are equal
|
|
7
|
+
*/
|
|
8
|
+
export declare function areCompletionsPlotDataValuesEqual(completionsPlotData: CompletionPlotData, otherCompletionsPlotData: CompletionPlotData): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Extract all subzones from a zone, using depth first search.
|
|
11
|
+
*
|
|
12
|
+
* I.e. all leaf nodes of the provided zone are added to the result.
|
|
13
|
+
* If the zone has no subzones, the zone itself is returned.
|
|
14
|
+
*
|
|
15
|
+
* @param zone The zone to extract subzones from
|
|
16
|
+
* @returns An array of all subzones (leaf nodes) of the zone
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractSubzones(zone: Zone | undefined): Zone[];
|
|
19
|
+
/**
|
|
20
|
+
* Populate array of subzones from a zone, using depth first search.
|
|
21
|
+
*
|
|
22
|
+
* I.e. all leaf nodes of the provided zone are added to the array.
|
|
23
|
+
* If the zone has no subzones, the zone itself is added to the array.
|
|
24
|
+
*
|
|
25
|
+
* @param zone The zone to populate subzones from
|
|
26
|
+
* @param subzonesArray The array to populate with subzones
|
|
27
|
+
*/
|
|
28
|
+
export declare const populateSubzonesArray: (zone: Zone | undefined, subzonesArray: Zone[]) => void;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare the values of to CompletionPlotData objects
|
|
3
|
+
* @param completionsPlotData
|
|
4
|
+
* @param otherCompletionsPlotData
|
|
5
|
+
* @returns True of the values of the two CompletionPlotData objects are equal
|
|
6
|
+
*/
|
|
7
|
+
export function areCompletionsPlotDataValuesEqual(completionsPlotData, otherCompletionsPlotData) {
|
|
8
|
+
return (completionsPlotData.open === otherCompletionsPlotData.open &&
|
|
9
|
+
completionsPlotData.shut === otherCompletionsPlotData.shut &&
|
|
10
|
+
completionsPlotData.khMean === otherCompletionsPlotData.khMean &&
|
|
11
|
+
completionsPlotData.khMin === otherCompletionsPlotData.khMin &&
|
|
12
|
+
completionsPlotData.khMax === otherCompletionsPlotData.khMax);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract all subzones from a zone, using depth first search.
|
|
16
|
+
*
|
|
17
|
+
* I.e. all leaf nodes of the provided zone are added to the result.
|
|
18
|
+
* If the zone has no subzones, the zone itself is returned.
|
|
19
|
+
*
|
|
20
|
+
* @param zone The zone to extract subzones from
|
|
21
|
+
* @returns An array of all subzones (leaf nodes) of the zone
|
|
22
|
+
*/
|
|
23
|
+
export function extractSubzones(zone) {
|
|
24
|
+
const result = [];
|
|
25
|
+
if (!zone) {
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
const { subzones } = zone;
|
|
29
|
+
if (subzones === undefined || subzones.length === 0) {
|
|
30
|
+
result.push(zone);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
// Recursively find subzones
|
|
34
|
+
subzones.forEach((zone) => {
|
|
35
|
+
result.push(...extractSubzones(zone));
|
|
36
|
+
});
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Populate array of subzones from a zone, using depth first search.
|
|
41
|
+
*
|
|
42
|
+
* I.e. all leaf nodes of the provided zone are added to the array.
|
|
43
|
+
* If the zone has no subzones, the zone itself is added to the array.
|
|
44
|
+
*
|
|
45
|
+
* @param zone The zone to populate subzones from
|
|
46
|
+
* @param subzonesArray The array to populate with subzones
|
|
47
|
+
*/
|
|
48
|
+
export const populateSubzonesArray = (zone, subzonesArray) => {
|
|
49
|
+
if (zone === undefined) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const { subzones } = zone;
|
|
53
|
+
if (subzones === undefined || subzones.length === 0) {
|
|
54
|
+
subzonesArray.push(zone);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
subzones.forEach((zone) => populateSubzonesArray(zone, subzonesArray));
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=dataTypeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTypeUtils.js","sourceRoot":"","sources":["../../src/utility-lib/dataTypeUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC7C,mBAAuC,EACvC,wBAA4C;IAE5C,OAAO,CACH,mBAAmB,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI;QAC1D,mBAAmB,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI;QAC1D,mBAAmB,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM;QAC9D,mBAAmB,CAAC,KAAK,KAAK,wBAAwB,CAAC,KAAK;QAC5D,mBAAmB,CAAC,KAAK,KAAK,wBAAwB,CAAC,KAAK,CAC/D,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAsB;IAClD,MAAM,MAAM,GAAW,EAAE,CAAC;IAE1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE1B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,IAAsB,EACtB,aAAqB,EACjB,EAAE;IACN,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO;IACX,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE1B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO;IACX,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { areCompletionsPlotDataValuesEqual, extractSubzones, populateSubzonesArray, } from "./dataTypeUtils";
|
|
2
|
+
describe("areCompletionsPlotDataValuesEqual", () => {
|
|
3
|
+
const mockData = {
|
|
4
|
+
zoneIndex: 0,
|
|
5
|
+
open: 1,
|
|
6
|
+
shut: 0,
|
|
7
|
+
khMean: 10,
|
|
8
|
+
khMin: 5,
|
|
9
|
+
khMax: 15,
|
|
10
|
+
};
|
|
11
|
+
it("should return true for equal CompletionPlotData objects", () => {
|
|
12
|
+
const data2 = Object.assign({}, mockData);
|
|
13
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("should return false for CompletionPlotData objects with different open values", () => {
|
|
16
|
+
const data2 = Object.assign(Object.assign({}, mockData), { open: 0 });
|
|
17
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
it("should return false for CompletionPlotData objects with different shut values", () => {
|
|
20
|
+
const data2 = Object.assign(Object.assign({}, mockData), { shut: 1 });
|
|
21
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it("should return false for CompletionPlotData objects with different khMean values", () => {
|
|
24
|
+
const data2 = Object.assign(Object.assign({}, mockData), { khMean: 15 });
|
|
25
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
it("should return false for CompletionPlotData objects with different khMin values", () => {
|
|
28
|
+
const data2 = Object.assign(Object.assign({}, mockData), { khMin: 10 });
|
|
29
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it("should return false for CompletionPlotData objects with different khMax values", () => {
|
|
32
|
+
const data2 = Object.assign(Object.assign({}, mockData), { khMax: 20 });
|
|
33
|
+
expect(areCompletionsPlotDataValuesEqual(mockData, data2)).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("extractSubzones", () => {
|
|
37
|
+
it("should return an empty array if the zone is undefined", () => {
|
|
38
|
+
expect(extractSubzones(undefined)).toEqual([]);
|
|
39
|
+
});
|
|
40
|
+
it("should return the zone itself if it has no subzones", () => {
|
|
41
|
+
const zone = { name: "zone1", color: "color1", subzones: [] };
|
|
42
|
+
expect(extractSubzones(zone)).toEqual([zone]);
|
|
43
|
+
});
|
|
44
|
+
it("should return all subzones if the zone has subzones", () => {
|
|
45
|
+
const subzone1 = {
|
|
46
|
+
name: "subzone1",
|
|
47
|
+
color: "color1.1",
|
|
48
|
+
subzones: [],
|
|
49
|
+
};
|
|
50
|
+
const subzone2 = {
|
|
51
|
+
name: "subzone2",
|
|
52
|
+
color: "color1.2",
|
|
53
|
+
subzones: [],
|
|
54
|
+
};
|
|
55
|
+
const zone = {
|
|
56
|
+
name: "zone1",
|
|
57
|
+
color: "color1",
|
|
58
|
+
subzones: [subzone1, subzone2],
|
|
59
|
+
};
|
|
60
|
+
expect(extractSubzones(zone)).toEqual([subzone1, subzone2]);
|
|
61
|
+
});
|
|
62
|
+
it("should return all leaf subzones in a nested structure", () => {
|
|
63
|
+
const leaf1 = {
|
|
64
|
+
name: "leaf1",
|
|
65
|
+
color: "color1.1.1",
|
|
66
|
+
subzones: [],
|
|
67
|
+
};
|
|
68
|
+
const leaf2 = {
|
|
69
|
+
name: "leaf2",
|
|
70
|
+
color: "color1.1.2",
|
|
71
|
+
subzones: [],
|
|
72
|
+
};
|
|
73
|
+
const subzone = {
|
|
74
|
+
name: "subzone",
|
|
75
|
+
color: "color1.1",
|
|
76
|
+
subzones: [leaf1, leaf2],
|
|
77
|
+
};
|
|
78
|
+
const zone = {
|
|
79
|
+
name: "zone",
|
|
80
|
+
color: "color1",
|
|
81
|
+
subzones: [subzone],
|
|
82
|
+
};
|
|
83
|
+
expect(extractSubzones(zone)).toEqual([leaf1, leaf2]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe("populateSubzonesArray", () => {
|
|
87
|
+
it("should not modify the array if the zone is undefined", () => {
|
|
88
|
+
const subzonesArray = [];
|
|
89
|
+
populateSubzonesArray(undefined, subzonesArray);
|
|
90
|
+
expect(subzonesArray).toEqual([]);
|
|
91
|
+
});
|
|
92
|
+
it("should add the zone itself to the array if it has no subzones", () => {
|
|
93
|
+
const zone = { name: "zone1", color: "color1", subzones: [] };
|
|
94
|
+
const subzonesArray = [];
|
|
95
|
+
populateSubzonesArray(zone, subzonesArray);
|
|
96
|
+
expect(subzonesArray).toEqual([zone]);
|
|
97
|
+
});
|
|
98
|
+
it("should add all subzones to the array if the zone has subzones", () => {
|
|
99
|
+
const subzone1 = {
|
|
100
|
+
name: "subzone1",
|
|
101
|
+
color: "color1.1",
|
|
102
|
+
subzones: [],
|
|
103
|
+
};
|
|
104
|
+
const subzone2 = {
|
|
105
|
+
name: "subzone2",
|
|
106
|
+
color: "color1.2",
|
|
107
|
+
subzones: [],
|
|
108
|
+
};
|
|
109
|
+
const zone = {
|
|
110
|
+
name: "zone1",
|
|
111
|
+
color: "color1",
|
|
112
|
+
subzones: [subzone1, subzone2],
|
|
113
|
+
};
|
|
114
|
+
const subzonesArray = [];
|
|
115
|
+
populateSubzonesArray(zone, subzonesArray);
|
|
116
|
+
expect(subzonesArray).toEqual([subzone1, subzone2]);
|
|
117
|
+
});
|
|
118
|
+
it("should add all leaf subzones in a nested structure to the array", () => {
|
|
119
|
+
const leaf1 = {
|
|
120
|
+
name: "leaf1",
|
|
121
|
+
color: "color1.1.1",
|
|
122
|
+
subzones: [],
|
|
123
|
+
};
|
|
124
|
+
const leaf2 = {
|
|
125
|
+
name: "leaf2",
|
|
126
|
+
color: "color1.1.2",
|
|
127
|
+
subzones: [],
|
|
128
|
+
};
|
|
129
|
+
const subzone = {
|
|
130
|
+
name: "subzone",
|
|
131
|
+
color: "color1.1",
|
|
132
|
+
subzones: [leaf1, leaf2],
|
|
133
|
+
};
|
|
134
|
+
const zone = {
|
|
135
|
+
name: "zone",
|
|
136
|
+
color: "color1",
|
|
137
|
+
subzones: [subzone],
|
|
138
|
+
};
|
|
139
|
+
const subzonesArray = [];
|
|
140
|
+
populateSubzonesArray(zone, subzonesArray);
|
|
141
|
+
expect(subzonesArray).toEqual([leaf1, leaf2]);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=dataTypeUtils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTypeUtils.test.js","sourceRoot":"","sources":["../../src/utility-lib/dataTypeUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get a regex matcher function that checks if the given item matches the given pattern,
|
|
3
|
+
* e.g. well name as item, to match a search text provided as pattern.
|
|
4
|
+
*
|
|
5
|
+
* @param pattern the pattern to match
|
|
6
|
+
* @returns a regex match function that checks if the given string item matches the given pattern
|
|
7
|
+
*/
|
|
8
|
+
export declare const createWellNameRegexMatcher: (pattern: string) => ((item: string) => boolean);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Characters to be prepended by "." unless it's already there or it matches {@link SPECIAL_ESCAPE}
|
|
3
|
+
*/
|
|
4
|
+
const SPECIAL_CHARACTERS = "?*";
|
|
5
|
+
/**
|
|
6
|
+
* Characters to be prepended by "\\" unless it's already there or it matches {@link SPECIAL_ESCAPE}
|
|
7
|
+
*/
|
|
8
|
+
const ESCAPE_CHAR = "+";
|
|
9
|
+
/**
|
|
10
|
+
* Escape characters that result in no prepending of "."
|
|
11
|
+
*/
|
|
12
|
+
const SPECIAL_ESCAPE = "\\.)]";
|
|
13
|
+
/**
|
|
14
|
+
* Get a regex matcher function that checks if the given item matches the given pattern,
|
|
15
|
+
* e.g. well name as item, to match a search text provided as pattern.
|
|
16
|
+
*
|
|
17
|
+
* @param pattern the pattern to match
|
|
18
|
+
* @returns a regex match function that checks if the given string item matches the given pattern
|
|
19
|
+
*/
|
|
20
|
+
export const createWellNameRegexMatcher = (pattern) => {
|
|
21
|
+
const processed = [];
|
|
22
|
+
for (const [index, character] of [...pattern].entries()) {
|
|
23
|
+
const prevChar = index === 0 ? undefined : pattern.charAt(index - 1);
|
|
24
|
+
if (prevChar === undefined || !SPECIAL_ESCAPE.includes(prevChar)) {
|
|
25
|
+
// Add a dot before each "*" and "?" unless it's preceded by a dot already or a closing brace
|
|
26
|
+
if (SPECIAL_CHARACTERS.includes(character)) {
|
|
27
|
+
processed.push(".");
|
|
28
|
+
if (character === "?")
|
|
29
|
+
continue; // '?' is replaced with '.'
|
|
30
|
+
}
|
|
31
|
+
// Add "\\" before each "+" unless it's preceded by a dot already or a closing brace
|
|
32
|
+
if (ESCAPE_CHAR.includes(character)) {
|
|
33
|
+
processed.push("\\");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
processed.push(character);
|
|
37
|
+
}
|
|
38
|
+
const processedPattern = processed.join("").toLowerCase();
|
|
39
|
+
let rgx;
|
|
40
|
+
try {
|
|
41
|
+
rgx = new RegExp(processedPattern);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
console.warn(`Will return false for all items: ${processedPattern}`, e);
|
|
45
|
+
return () => false;
|
|
46
|
+
}
|
|
47
|
+
return (item) => {
|
|
48
|
+
if (pattern.length === 0)
|
|
49
|
+
return true;
|
|
50
|
+
return rgx.test(item.toLowerCase());
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=stringUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/utility-lib/stringUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC;;GAEG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB;;GAEG;AACH,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,OAAe,EACY,EAAE;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAErE,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,6FAA6F;YAC7F,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,IAAI,SAAS,KAAK,GAAG;oBAAE,SAAS,CAAC,2BAA2B;YAChE,CAAC;YACD,oFAAoF;YACpF,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,GAAuB,CAAC;IAE5B,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,oCAAoC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,IAAY,EAAW,EAAE;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createWellNameRegexMatcher } from "./stringUtils";
|
|
2
|
+
describe("createWellNameRegexMatcher", () => {
|
|
3
|
+
it("should match strings starting with same characters", () => {
|
|
4
|
+
const matcher = createWellNameRegexMatcher("A2");
|
|
5
|
+
expect(matcher("a2")).toBe(true);
|
|
6
|
+
expect(matcher("A2")).toBe(true);
|
|
7
|
+
expect(matcher("R_A2")).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
it("should handle special character '?'", () => {
|
|
10
|
+
const matcher = createWellNameRegexMatcher("?A2");
|
|
11
|
+
expect(matcher("RA2")).toBe(true);
|
|
12
|
+
expect(matcher("R_A2")).toBe(true);
|
|
13
|
+
expect(matcher("2")).toBe(false);
|
|
14
|
+
expect(matcher("A2")).toBe(false);
|
|
15
|
+
});
|
|
16
|
+
it("should handle special character '*'", () => {
|
|
17
|
+
const matcher = createWellNameRegexMatcher("*A2");
|
|
18
|
+
expect(matcher("A2")).toBe(true);
|
|
19
|
+
expect(matcher("RA2")).toBe(true);
|
|
20
|
+
expect(matcher("R_A2")).toBe(true);
|
|
21
|
+
expect(matcher("2")).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it("should handle escape characters", () => {
|
|
24
|
+
const matcher = createWellNameRegexMatcher("te\\+t");
|
|
25
|
+
expect(matcher("te+t")).toBe(true);
|
|
26
|
+
expect(matcher("te\\+t")).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it("should handle mixed special and escape characters", () => {
|
|
29
|
+
const matcher = createWellNameRegexMatcher("te?t\\+");
|
|
30
|
+
expect(matcher("test+")).toBe(true);
|
|
31
|
+
expect(matcher("text+")).toBe(true);
|
|
32
|
+
expect(matcher("te!t+")).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
it("should return true for empty pattern", () => {
|
|
35
|
+
const matcher = createWellNameRegexMatcher("");
|
|
36
|
+
expect(matcher("anything")).toBe(true);
|
|
37
|
+
expect(matcher("")).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it("should handle invalid regex patterns gracefully", () => {
|
|
40
|
+
const matcher = createWellNameRegexMatcher("[");
|
|
41
|
+
expect(matcher("anything")).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=stringUtils.test.js.map
|