Skip to content
This repository has been archived by the owner on Apr 25, 2023. It is now read-only.

Commit

Permalink
fix: dataset icon not showing in layer list (#275)
Browse files Browse the repository at this point in the history
fix layer type and filter
  • Loading branch information
KaWaite committed Jul 12, 2022
1 parent 7d3eac0 commit 8dbc889
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 42 deletions.
19 changes: 5 additions & 14 deletions src/components/organisms/EarthEditor/CanvasArea/convert.ts
Expand Up @@ -19,12 +19,12 @@ import {
MergedPropertyGroupCommonFragmentFragment,
EarthLayerFragment,
EarthLayerItemFragment,
EarthLayerCommonFragment,
GetEarthWidgetsQuery,
PropertyFragmentFragment,
WidgetZone as WidgetZoneType,
WidgetSection as WidgetSectionType,
WidgetArea as WidgetAreaType,
EarthLayer5Fragment,
} from "@reearth/gql";
import { valueFromGQL } from "@reearth/util/value";

Expand Down Expand Up @@ -132,18 +132,7 @@ const processMergedInfobox = (
};
};

type GQLLayer = Maybe<
(
| {
__typename?: "LayerGroup";
layers?: GQLLayer[];
}
| EarthLayerItemFragment
) &
EarthLayerCommonFragment
>;

export const processLayer = (layer: Maybe<GQLLayer>): Layer | undefined => {
export const processLayer = (layer: EarthLayer5Fragment): Layer | undefined => {
if (!layer) return;
return {
id: layer.id,
Expand All @@ -161,7 +150,9 @@ export const processLayer = (layer: Maybe<GQLLayer>): Layer | undefined => {
tags: processLayerTags(layer.tags),
children:
layer.__typename === "LayerGroup"
? layer.layers?.map(processLayer).filter((l): l is Layer => !!l)
? layer.layers
?.map(l => processLayer((l as EarthLayer5Fragment) ?? undefined))
.filter((l): l is Layer => !!l)
: undefined,
};
};
Expand Down
2 changes: 1 addition & 1 deletion src/components/organisms/EarthEditor/OutlinePane/hooks.tsx
Expand Up @@ -125,7 +125,7 @@ export default () => {
const layers = useMemo(
() =>
(data?.layer?.__typename === "LayerGroup" ? data.layer.layers : undefined)
?.map(convertLayer)
?.map(l => convertLayer(l as GQLLayer))
.filter((l): l is Layer => !!l)
.reverse() ?? [],
[data?.layer],
Expand Down
11 changes: 5 additions & 6 deletions src/components/organisms/EarthEditor/PropertyPane/convert.ts
Expand Up @@ -265,24 +265,23 @@ export const convertLinkableDatasets = (
.filter((s): s is DatasetSchema => !!s);
};

type GQLLayer = Omit<NonNullable<GetLayersFromLayerIdQuery["layer"]>, "layers"> & {
type GQLLayer = GetLayersFromLayerIdQuery["layer"] & {
linkedDatasetSchemaId?: string | null;
linkedDatasetId?: string | null;
layers?: (GQLLayer | null | undefined)[];
merged?: (GQLLayer | null | undefined)[];
};

export function convertLayers(data: GetLayersFromLayerIdQuery | undefined): Layer[] {
const layers: Maybe<GQLLayer>[] =
data?.layer?.__typename === "LayerGroup" ? data.layer.layers : [];
const layers = data?.layer?.__typename === "LayerGroup" ? data.layer.layers : [];

function mapper(layer: Maybe<GQLLayer> | undefined): Layer | undefined {
if (!layer) return undefined;
return {
id: layer.id,
title: layer.name,
visible: layer.isVisible,
linked: layer.__typename === "LayerGroup" && !!layer.linkedDatasetSchemaId,
linked: !!layer.linkedDatasetSchemaId,
...(layer.__typename === "LayerGroup"
? {
group: true,
Expand All @@ -293,14 +292,14 @@ export function convertLayers(data: GetLayersFromLayerIdQuery | undefined): Laye
}
: {
group: false,
linked: layer.__typename === "LayerItem" && !!layer.linkedDatasetId,
linked: !!layer.linkedDatasetId,
icon: layer.pluginId === "reearth" ? layer.extensionId ?? undefined : undefined,
}),
};
}

return layers
.map(mapper)
.map(l => mapper(l as GQLLayer))
.filter((l): l is Layer => !!l)
.reverse();
}
12 changes: 12 additions & 0 deletions src/gql/fragments/layer.ts
Expand Up @@ -9,6 +9,12 @@ export const LayerSystemFragments = gql`
isVisible
pluginId
extensionId
... on LayerGroup {
linkedDatasetSchemaId
layers {
id
}
}
... on LayerItem {
linkedDatasetId
}
Expand Down Expand Up @@ -127,6 +133,12 @@ export const EarthLayerFragments = gql`
}
}
}
... on LayerGroup {
linkedDatasetSchemaId
layers {
id
}
}
}
fragment EarthLayerItem on LayerItem {
Expand Down

0 comments on commit 8dbc889

Please sign in to comment.