Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP - Collection map type implementation #688

Draft
wants to merge 27 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
5005c2a
Stub in collection bar map type component
dmfalke Nov 28, 2023
4f14aa6
Merge remote-tracking branch 'origin/main' into collection-map-type-impl
dmfalke Dec 1, 2023
e68b284
Add missing return statement
dmfalke Dec 1, 2023
0b0f6aa
Some more refactoring to make marker configuration more generic
dmfalke Dec 1, 2023
12f6b70
Merge branch 'main' into collection-map-type-impl
dmfalke Dec 4, 2023
3a89160
Merge branch 'main' into collection-map-type-impl
dmfalke Jan 8, 2024
03b3ea3
Merge branch 'main' into collection-map-type-impl
dmfalke Feb 29, 2024
93957d9
other merge fixes
dmfalke Feb 29, 2024
78440bb
Colocate configuration components with maptype components
dmfalke Mar 1, 2024
2c28774
Add missing hook dependency
dmfalke Mar 1, 2024
2e104bf
Remove some hard coding from menu
dmfalke Mar 6, 2024
19de54e
Use item.display for button label
dmfalke Mar 6, 2024
e3b2c89
WIP collection bar marker config
dmfalke Mar 6, 2024
5fb0f76
Merge branch 'main' into collection-map-type-impl
dmfalke Mar 6, 2024
6ba9fd0
Convenience exports
dmfalke Mar 12, 2024
2772780
WIP config menu
dmfalke Mar 12, 2024
9b65dc3
Merge remote-tracking branch 'origin/main' into collection-map-type-impl
dmfalke Apr 8, 2024
7b9a038
Add type argument
dmfalke Apr 8, 2024
182d10d
Merge branch 'main' into collection-map-type-impl
dmfalke Apr 9, 2024
70b657d
Merge branch 'main' into collection-map-type-impl
dmfalke Apr 30, 2024
3ab6db2
post merge changes
dmfalke Apr 30, 2024
fa06597
Remove circular dependencies
dmfalke May 1, 2024
3dd4285
Merge branch 'main' into collection-map-type-impl
dmfalke May 2, 2024
e3a2053
Add API method and types for collection markers
dmfalke May 20, 2024
11f9f6c
Add optional vocabulary property
dmfalke May 20, 2024
8740857
WIP collection marker
dmfalke May 20, 2024
2dfae9e
Merge branch 'main' into collection-map-type-impl
dmfalke May 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions packages/libs/coreui/src/components/inputs/SelectList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,14 @@ export default function SelectList<T>({
useEffect(() => {
setSelected(value);
setButtonDisplayContent(
value.length ? value.join(', ') : defaultButtonDisplayContent
value.length
? items
.filter((item) => value.includes(item.value))
.map((item) => item.display)
.join(', ')
: defaultButtonDisplayContent
);
}, [value, defaultButtonDisplayContent]);
}, [value, defaultButtonDisplayContent, items]);

const buttonLabel = (
<span
Expand Down
4 changes: 4 additions & 0 deletions packages/libs/coreui/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ export { Card, ExpandablePanel, Modal } from './components/containers';
// Grids
export { DataGrid, TabbedDisplay } from './components/grids';

// Mesa table
export { Mesa } from './components/Mesa';
export * from './components/Mesa/types';

// Forms
export { FormField, MultilineTextField } from './components/forms';

Expand Down
14 changes: 14 additions & 0 deletions packages/libs/eda/src/lib/core/api/DataClient/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ import {
ContinousVariableMetadataResponse,
StandaloneMapBubblesLegendRequestParams,
StandaloneMapBubblesLegendResponse,
StandaloneCollectionsMarkerDataRequest,
StandaloneCollectionsMarkerDataResponse,
} from './types';
import { NoDataError } from './NoDataError';

Expand Down Expand Up @@ -219,6 +221,18 @@ export default class DataClient extends FetchClientWithCredentials {
);
}

getStandaloneCollectionsMarkerData(
computationName: string,
params: StandaloneCollectionsMarkerDataRequest
): Promise<StandaloneCollectionsMarkerDataResponse> {
return this.getVisualizationData(
computationName,
'map-markers/collections',
params,
StandaloneCollectionsMarkerDataResponse
);
}

// filter-aware continuous overlay variable metadata
getContinousVariableMetadata(
params: ContinousVariableMetadataRequestParams
Expand Down
64 changes: 63 additions & 1 deletion packages/libs/eda/src/lib/core/api/DataClient/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,13 @@ import {
TimeUnit,
NumberOrNull,
} from '../../types/general';
import { VariableDescriptor, StringVariableValue } from '../../types/variable';
import {
VariableDescriptor,
StringVariableValue,
VariableCollectionDescriptor,
} from '../../types/variable';
import { ComputationAppOverview } from '../../types/visualization';
import { DerivedVariable } from '../../types/analysis';

export const AppsResponse = type({
apps: array(ComputationAppOverview),
Expand Down Expand Up @@ -970,6 +975,63 @@ export const StandaloneMapBubblesLegendResponse = type({
maxSizeValue: number,
});

export interface StandaloneCollectionsMarkerDataRequest {
studyId: string;
filters?: Filter[];
derivedVariables?: DerivedVariable[];
config: {
outputEntityId: string;
geoAggregateVariable: VariableDescriptor;
longitudeVariable: VariableDescriptor;
latitudeVariable: VariableDescriptor;
viewport: LatLonViewport;
collectionOverlay: {
collection: VariableCollectionDescriptor;
selectedMembers: string[];
};
aggregatorConfig:
| {
overlayType: 'continuous';
aggregator: 'mean' | 'median';
}
| {
overlayType: 'categorical';
numeratorValues: string[];
denominatorValues: string[];
};
};
}

export type StandaloneCollectionsMarkerDataResponse = TypeOf<
typeof StandaloneCollectionsMarkerDataResponse
>;

export const StandaloneCollectionsMarkerDataResponse = type({
markers: array(
type({
geoAggregateValue: string,
entityCount: number,
avgLat: number,
avgLon: number,
minLat: number,
minLon: number,
maxLat: number,
maxLon: number,
overlayValues: array(
type({
variableId: string,
value: union([number, string]),
confidenceInterval: type({
min: union([number, string]),
max: union([number, string]),
}),
n: number,
})
),
})
),
});

export interface ContinousVariableMetadataRequestParams {
studyId: string;
filters: Filter[];
Expand Down
1 change: 1 addition & 0 deletions packages/libs/eda/src/lib/core/types/study.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ export const CollectionVariableTreeNode = t.intersection([
distributionDefaults: NumberDistributionDefaults,
member: t.string,
memberPlural: t.string,
vocabulary: t.array(t.string),
}),
]);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import DraggablePanel, {
DraggablePanelCoordinatePair,
} from '@veupathdb/coreui/lib/components/containers/DraggablePanel';
import { PanelConfig } from './appState';
import { PanelConfig } from './Types';

export const DEFAULT_DRAGGABLE_LEGEND_POSITION = {
x: window.innerWidth,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,7 @@ import { Filter } from '../../core/types/filter';
import { FilledButton } from '@veupathdb/coreui';
import { DraggablePanel } from '@veupathdb/coreui/lib/components/containers';
import { ComputationPlugin } from '../../core/components/computations/Types';
import { PanelConfig } from './appState';

export const DEFAULT_DRAGGABLE_VIZ_POSITION = {
x: 535,
y: 220,
};

export const DEFAULT_DRAGGABLE_VIZ_DIMENSIONS = {
width: 'auto',
height: 'auto',
};
import { PanelConfig } from './Types';

interface Props {
analysisState: AnalysisState;
Expand Down
Loading
Loading