Skip to content

Commit 29a313d

Browse files
Move date-utils fn
1 parent 260a506 commit 29a313d

File tree

3 files changed

+48
-49
lines changed

3 files changed

+48
-49
lines changed

app/scripts/components/exploration/data-utils-no-faux-module.ts

+44-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
import { DatasetLayer, VedaDatum, DatasetData } from '$types/veda';
1+
import eachMonthOfInterval from 'date-fns/eachMonthOfInterval';
2+
import eachDayOfInterval from 'date-fns/eachDayOfInterval';
3+
import eachYearOfInterval from 'date-fns/eachYearOfInterval';
24
import {
35
EnhancedDatasetLayer,
46
TimelineDataset,
5-
DatasetStatus
7+
DatasetStatus,
8+
StacDatasetData,
9+
TimeDensity,
610
} from './types.d.ts';
711
import {
812
DataMetric,
913
DATA_METRICS,
1014
DEFAULT_DATA_METRICS
1115
} from './components/datasets/analysis-metrics';
16+
import { utcString2userTzDate } from '$utils/date';
17+
import { DatasetLayer, VedaDatum, DatasetData } from '$types/veda';
1218

1319
export const getDatasetLayers = (datasets: VedaDatum<DatasetData>) => Object.values(datasets)
1420
.flatMap((dataset: VedaDatum<DatasetData>) => {
@@ -21,7 +27,6 @@ export const getDatasetLayers = (datasets: VedaDatum<DatasetData>) => Object.val
2127
}));
2228
});
2329

24-
2530
/**
2631
* Returns an array of metrics based on the given Dataset Layer configuration.
2732
* If the layer has metrics defined, it returns only the metrics that match the
@@ -81,4 +86,39 @@ export function reconcileDatasets(
8186
}
8287
};
8388
});
84-
}
89+
}
90+
91+
export function resolveLayerTemporalExtent(
92+
datasetId: string,
93+
datasetData: StacDatasetData
94+
): Date[] {
95+
const { domain, isPeriodic, timeDensity } = datasetData;
96+
97+
if (!domain || domain.length === 0) {
98+
throw new Error(`Invalid domain on dataset [${datasetId}]`);
99+
}
100+
101+
if (!isPeriodic) return domain.map((d) => utcString2userTzDate(d));
102+
103+
switch (timeDensity) {
104+
case TimeDensity.YEAR:
105+
return eachYearOfInterval({
106+
start: utcString2userTzDate(domain[0]),
107+
end: utcString2userTzDate(domain[domain.length-1])
108+
});
109+
case TimeDensity.MONTH:
110+
return eachMonthOfInterval({
111+
start: utcString2userTzDate(domain[0]),
112+
end: utcString2userTzDate(domain[domain.length-1])
113+
});
114+
case TimeDensity.DAY:
115+
return eachDayOfInterval({
116+
start: utcString2userTzDate(domain[0]),
117+
end: utcString2userTzDate(domain[domain.length-1])
118+
});
119+
default:
120+
throw new Error(
121+
`Invalid time density [${timeDensity}] on dataset [${datasetId}]`
122+
);
123+
}
124+
}

app/scripts/components/exploration/data-utils.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {
22
eachDayOfInterval,
3-
eachMonthOfInterval,
43
eachYearOfInterval,
54
startOfDay,
65
startOfYear
76
} from 'date-fns';
87
import startOfMonth from 'date-fns/startOfMonth';
8+
import eachMonthOfInterval from 'date-fns/eachMonthOfInterval';
99
import {
1010
EnhancedDatasetLayer,
1111
StacDatasetData,
@@ -22,7 +22,8 @@ import { veda_datasets } from '$data-layer/datasets';
2222
import { DatasetLayer, DatasetData, VedaDatum } from '$types/veda';
2323
import { utcString2userTzDate } from '$utils/date';
2424

25-
// @TODO: These should be updated to take in datasets as a param instead of using veda_datasets directly
25+
// @TODO: This file should be deprecated and merged with `data-utils-no-faux-module`
26+
// to get rid of the faux modules dependency
2627

2728
export const findParentDataset = (layerId: string) => {
2829
const parentDataset: VedaDatum<DatasetData> | undefined = Object.values(veda_datasets).find((dataset: VedaDatum<DatasetData>) =>

app/scripts/components/exploration/hooks/use-stac-metadata-datasets.ts

+1-43
Original file line numberDiff line numberDiff line change
@@ -4,58 +4,16 @@ import {
44
UseQueryResult
55
} from '@tanstack/react-query';
66
import axios from 'axios';
7-
import {
8-
eachDayOfInterval,
9-
eachYearOfInterval,
10-
} from 'date-fns';
11-
import eachMonthOfInterval from 'date-fns/eachMonthOfInterval';
127
import {
138
StacDatasetData,
149
TimeDensity,
1510
TimelineDataset,
1611
DatasetStatus,
1712
VizDataset
1813
} from '../types.d.ts';
14+
import { resolveLayerTemporalExtent } from '../data-utils-no-faux-module';
1915
import { useEffectPrevious } from '$utils/use-effect-previous';
2016
import { SetState } from '$types/aliases';
21-
import { utcString2userTzDate } from '$utils/date';
22-
23-
24-
export function resolveLayerTemporalExtent(
25-
datasetId: string,
26-
datasetData: StacDatasetData
27-
): Date[] {
28-
const { domain, isPeriodic, timeDensity } = datasetData;
29-
30-
if (!domain || domain.length === 0) {
31-
throw new Error(`Invalid domain on dataset [${datasetId}]`);
32-
}
33-
34-
if (!isPeriodic) return domain.map((d) => utcString2userTzDate(d));
35-
36-
switch (timeDensity) {
37-
case TimeDensity.YEAR:
38-
return eachYearOfInterval({
39-
start: utcString2userTzDate(domain[0]),
40-
end: utcString2userTzDate(domain.last)
41-
});
42-
case TimeDensity.MONTH:
43-
return eachMonthOfInterval({
44-
start: utcString2userTzDate(domain[0]),
45-
end: utcString2userTzDate(domain[domain.length - 1])
46-
});
47-
case TimeDensity.DAY:
48-
return eachDayOfInterval({
49-
start: utcString2userTzDate(domain[0]),
50-
end: utcString2userTzDate(domain.last)
51-
});
52-
default:
53-
throw new Error(
54-
`Invalid time density [${timeDensity}] on dataset [${datasetId}]`
55-
);
56-
}
57-
}
58-
5917

6018
function didDataChange(curr: UseQueryResult, prev?: UseQueryResult) {
6119
const currKey = `${curr.errorUpdatedAt}-${curr.dataUpdatedAt}-${curr.failureCount}`;

0 commit comments

Comments
 (0)