Skip to content

Commit 79465f1

Browse files
authored
Implement new genomics download page (#33)
* Use standard eslint config * Enable source maps for coreui * Update height of filterParam * Hide primary key column in table * remove trailing slash from route * Clean up param value initialization. Remove details specific to param types (e.g., datasetParam). This ensures forward compatibility as other exotic handling of intialParamData. * Add support for short-form filters in initialParamData * Support filters defined as query params by passing as initialParamData * Add beta tag and entry for old downloads page
1 parent 5f376a3 commit 79465f1

File tree

15 files changed

+570
-237
lines changed

15 files changed

+570
-237
lines changed

packages/libs/coreui/tsconfig.json

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"declaration": true,
66
"emitDeclarationOnly": true,
77
// "isolatedModules": true,
8+
"sourceMap": true,
9+
"declarationMap": true,
810
"outDir": "dist",
911
"esModuleInterop": true,
1012
"strict": true,

packages/libs/wdk-client/src/StoreModules/QuestionStoreModule.ts

+24-28
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { keyBy, mapValues, toString } from 'lodash';
1+
import { keyBy, mapValues, pick, toString } from 'lodash';
22
import { Seq } from '../Utils/IterableUtils';
33
import {
44
combineEpics,
@@ -57,6 +57,7 @@ import {
5757
QuestionWithParameters,
5858
RecordClass,
5959
ParameterValues,
60+
Question,
6061
} from '../Utils/WdkModel';
6162

6263
import {
@@ -1022,22 +1023,21 @@ async function loadQuestion(
10221023
initialParamData?: ParameterValues,
10231024
submissionMetadata?: SubmissionMetadata
10241025
) {
1025-
const step = stepId ? await wdkService.findStep(stepId) : undefined;
1026-
const initialParams = await fetchInitialParams(
1027-
searchName,
1028-
step,
1029-
initialParamData,
1030-
prepopulateWithLastParamValues,
1031-
paramValueStore
1032-
);
1033-
1034-
const atLeastOneInitialParamValueProvided =
1035-
Object.keys(initialParams).length > 0;
1036-
10371026
try {
1027+
const step = stepId ? await wdkService.findStep(stepId) : undefined;
10381028
const defaultQuestion = await wdkService.getQuestionAndParameters(
10391029
searchName
10401030
);
1031+
const initialParams = await fetchInitialParams(
1032+
defaultQuestion,
1033+
step,
1034+
initialParamData,
1035+
prepopulateWithLastParamValues,
1036+
paramValueStore
1037+
);
1038+
1039+
const atLeastOneInitialParamValueProvided =
1040+
Object.keys(initialParams).length > 0;
10411041

10421042
const question = atLeastOneInitialParamValueProvided
10431043
? await wdkService.getQuestionGivenParameters(searchName, initialParams)
@@ -1084,7 +1084,7 @@ async function loadQuestion(
10841084
}
10851085

10861086
async function fetchInitialParams(
1087-
searchName: string,
1087+
question: Question,
10881088
step: Step | undefined,
10891089
initialParamData: ParameterValues | undefined,
10901090
prepopulateWithLastParamValues: boolean,
@@ -1093,9 +1093,11 @@ async function fetchInitialParams(
10931093
if (step != null) {
10941094
return initialParamDataFromStep(step);
10951095
} else if (initialParamData != null) {
1096-
return initialParamDataWithDatasetParamSpecialCase(initialParamData);
1096+
return extracParamValues(initialParamData, question.paramNames);
10971097
} else if (prepopulateWithLastParamValues) {
1098-
return (await fetchLastParamValues(paramValueStore, searchName)) ?? {};
1098+
return (
1099+
(await fetchLastParamValues(paramValueStore, question.urlSegment)) ?? {}
1100+
);
10991101
} else {
11001102
return {};
11011103
}
@@ -1114,18 +1116,12 @@ function initialParamDataFromStep(step: Step): ParameterValues {
11141116
}, {});
11151117
}
11161118

1117-
function initialParamDataWithDatasetParamSpecialCase(
1118-
initialParamData: ParameterValues
1119-
) {
1120-
return Object.keys(initialParamData).reduce(function (result, paramName) {
1121-
if (paramName.endsWith('.idList') || paramName.endsWith('.url')) {
1122-
return result;
1123-
}
1124-
1125-
return Object.assign(result, {
1126-
[paramName]: initialParamData[paramName],
1127-
});
1128-
}, {});
1119+
/** Pick items from `initialParamData` that correspond to parameter names */
1120+
function extracParamValues(
1121+
initialParamData: Record<string, string>,
1122+
paramNames: string[]
1123+
): ParameterValues {
1124+
return pick(initialParamData, paramNames);
11291125
}
11301126

11311127
function updateLastParamValues(

0 commit comments

Comments
 (0)