Skip to content

Commit 21d6ff1

Browse files
committed
Column updates
1 parent 397ab9e commit 21d6ff1

File tree

3 files changed

+61
-25
lines changed

3 files changed

+61
-25
lines changed

pages/columns/@column/column-inspector/facets.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
import h from "@macrostrat/hyper";
1+
import hyper from "@macrostrat/hyper";
22
import { useAPIResult } from "@macrostrat/ui-components";
33
import {
44
BaseMeasurementsColumn,
5+
IsotopesColumn,
6+
MeasurementDataProvider,
57
TruncatedList,
68
} from "@macrostrat/column-views";
79
import { apiDomain } from "@macrostrat-web/settings";
10+
import styles from "./index.module.sass";
11+
12+
const h = hyper.styled(styles);
813

914
function useSGPData({ col_id }) {
1015
const res = useAPIResult(
@@ -40,3 +45,27 @@ function SGPSamplesNote(props) {
4045
itemRenderer: (p) => h("span", p.data.name),
4146
});
4247
}
48+
49+
export function StableIsotopesColumn({ columnID }) {
50+
return h(
51+
"div.isotopes-column",
52+
h(MeasurementDataProvider, { col_id: columnID }, [
53+
h(IsotopesColumn, {
54+
parameter: "D13C",
55+
label: "δ¹³C",
56+
color: "dodgeblue",
57+
domain: [-14, 6],
58+
width: 100,
59+
nTicks: 4,
60+
}),
61+
h(IsotopesColumn, {
62+
parameter: "D18O",
63+
label: "δ¹⁸O",
64+
color: "red",
65+
domain: [-40, 0],
66+
width: 100,
67+
nTicks: 4,
68+
}),
69+
])
70+
);
71+
}

pages/columns/@column/column-inspector/index.module.sass

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
max-width: 80rem
1414
margin: 0 auto
15+
gap: 1em
1516

1617

1718
.left-column
@@ -38,7 +39,7 @@
3839

3940

4041
.column-view
41-
margin: 0 4em 4em
42+
margin: 0 0 4em
4243
padding: 0
4344

4445
.column-header
@@ -116,3 +117,7 @@ rect.selection-overlay
116117
flex-direction: row
117118
align-items: baseline
118119
justify-content: space-between
120+
121+
.isotopes-column
122+
display: flex
123+
flex-direction: row

pages/columns/@column/column-inspector/index.ts

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ import {
33
Column,
44
DetritalColumn,
55
FossilDataType,
6+
HybridScaleType,
67
Identifier,
7-
IsotopesColumn,
88
MacrostratColumnStateProvider,
99
MacrostratDataProvider,
10-
MeasurementDataProvider,
1110
PBDBFossilsColumn,
1211
ReferencesField,
1312
} from "@macrostrat/column-views";
@@ -18,15 +17,15 @@ import { PatternProvider } from "~/_providers";
1817
import styles from "./index.module.sass";
1918
import { navigate } from "vike/client/router";
2019

21-
import { SGPMeasurementsColumn } from "./facets";
20+
import { SGPMeasurementsColumn, StableIsotopesColumn } from "./facets";
2221
import { ModalUnitPanel } from "./modal-panel";
2322

2423
import { PageBreadcrumbs } from "~/components";
2524
import { onDemand } from "~/_utils";
2625
import { ErrorBoundary } from "@macrostrat/ui-components";
2726
import { DataField } from "@macrostrat/data-components";
2827
import { ColumnAxisType } from "@macrostrat/column-components";
29-
import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
28+
import { atom, useAtom, useAtomValue } from "jotai";
3029
import { Button, FormGroup, HTMLSelect } from "@blueprintjs/core";
3130

3231
const ColumnMap = onDemand(() => import("./map").then((mod) => mod.ColumnMap));
@@ -45,7 +44,7 @@ const heightAxisTypeAtom = atom<ColumnAxisType>();
4544
const facetAtom = atom<string | null>();
4645

4746
function inferHeightAxisType(axisType: ColumnAxisType, units): ColumnAxisType {
48-
if (axisType == ColumnAxisType.AGE) {
47+
if (axisType !== ColumnAxisType.HEIGHT && axisType !== ColumnAxisType.DEPTH) {
4948
return axisType;
5049
}
5150
// Infer axis type from units
@@ -85,6 +84,7 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) {
8584

8685
// Set subsidiary options
8786

87+
let hybridScale = null;
8888
let maxInternalColumns = undefined;
8989
let unconformityLabels = true;
9090
let showTimescale = true;
@@ -95,6 +95,22 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) {
9595
unconformityLabels = false;
9696
showTimescale = false;
9797
}
98+
} else if (
99+
axisType == ColumnAxisType.HEIGHT ||
100+
axisType == ColumnAxisType.DEPTH
101+
) {
102+
// Set up for approximate height column
103+
hybridScale = { type: HybridScaleType.ApproximateHeight };
104+
// Show ages on secondary axis
105+
axisType = ColumnAxisType.HEIGHT;
106+
}
107+
108+
if (axisType == ColumnAxisType.ORDINAL) {
109+
// For ordinal columns, use the fancier "equidistant-surfaces" scale
110+
axisType = ColumnAxisType.AGE;
111+
hybridScale = { type: HybridScaleType.EquidistantSurfaces };
112+
113+
maxInternalColumns = undefined;
98114
}
99115

100116
const [selectedUnitID, setSelectedUnitID] = useState<number>(
@@ -169,6 +185,8 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) {
169185
selectedUnit: selectedUnitID,
170186
maxInternalColumns,
171187
showLabelColumn,
188+
hybridScale,
189+
pixelScale: 20,
172190
},
173191
children
174192
),
@@ -225,29 +243,13 @@ function ColumnBasicInfo({ data, showColumnID = true }) {
225243
let ageAxisOptions = {
226244
Height: ColumnAxisType.HEIGHT,
227245
Age: ColumnAxisType.AGE,
246+
Ordinal: ColumnAxisType.ORDINAL,
228247
};
229248

230249
function facetElements(facet: string | null, columnID: number) {
231250
switch (facet) {
232251
case "stable-isotopes":
233-
return h(MeasurementDataProvider, { col_id: columnID }, [
234-
h(IsotopesColumn, {
235-
parameter: "D13C",
236-
label: "δ¹³C",
237-
color: "dodgeblue",
238-
domain: [-14, 6],
239-
width: 100,
240-
nTicks: 4,
241-
}),
242-
h(IsotopesColumn, {
243-
parameter: "D18O",
244-
label: "δ¹⁸O",
245-
color: "red",
246-
domain: [-40, 0],
247-
width: 100,
248-
nTicks: 4,
249-
}),
250-
]);
252+
return h(StableIsotopesColumn, { columnID });
251253
case "sgp-samples":
252254
return h(SGPMeasurementsColumn, { columnID });
253255
case "fossil-taxa":

0 commit comments

Comments
 (0)