From 5e9eddffefcc12c28d2d6a21946cc618d404844b Mon Sep 17 00:00:00 2001 From: lby Date: Sun, 8 Oct 2023 14:25:24 +0800 Subject: [PATCH] chore(web): show installed widgets & fix computed feature property (#727) Co-authored-by: keiya01 --- web/src/beta/lib/core/Map/Layers/hooks.ts | 3 ++- web/src/beta/lib/core/engines/Cesium/useEngineRef.ts | 9 ++++++++- web/src/services/api/widgetsApi/utils.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/web/src/beta/lib/core/Map/Layers/hooks.ts b/web/src/beta/lib/core/Map/Layers/hooks.ts index 66f2bd1ca1..c5df15fc70 100644 --- a/web/src/beta/lib/core/Map/Layers/hooks.ts +++ b/web/src/beta/lib/core/Map/Layers/hooks.ts @@ -365,7 +365,8 @@ export default function useHooks({ rawLayer.type === "simple" && rawLayer.data?.value && // If data isn't cachable, reuse layer id for performance. - DATA_CACHE_KEYS.some(k => !rawLayer.data?.[k]) + DATA_CACHE_KEYS.some(k => !rawLayer.data?.[k]) && + Object.isExtensible(rawLayer.data.value) ) { // If layer property is overridden, feature is legacy layer. // So we can set layer id to prevent unnecessary render. diff --git a/web/src/beta/lib/core/engines/Cesium/useEngineRef.ts b/web/src/beta/lib/core/engines/Cesium/useEngineRef.ts index c17664559b..46917b55a4 100644 --- a/web/src/beta/lib/core/engines/Cesium/useEngineRef.ts +++ b/web/src/beta/lib/core/engines/Cesium/useEngineRef.ts @@ -533,7 +533,14 @@ export default function useEngineRef( tag.computedFeature ?? { type: "computedFeature", id: tag.featureId, - properties: entity.properties, + properties: + entity.properties && + Object.fromEntries( + entity.properties.propertyNames.map(key => [ + key, + entity.properties?.getValue(viewer.clock.currentTime)?.[key], + ]), + ), } ); } diff --git a/web/src/services/api/widgetsApi/utils.ts b/web/src/services/api/widgetsApi/utils.ts index 7d6e93c3f4..8653b1453f 100644 --- a/web/src/services/api/widgetsApi/utils.ts +++ b/web/src/services/api/widgetsApi/utils.ts @@ -41,7 +41,7 @@ export const getInstallableWidgets = (rawScene?: GetSceneQuery) => { .filter( e => e.type === PluginExtensionType.Widget && - AVAILABLE_WIDGET_IDS.includes(`reearth/${e.extensionId}`), + (AVAILABLE_WIDGET_IDS.includes(`reearth/${e.extensionId}`) || plugin.id !== "reearth"), ) .map((e): InstallableWidget => { return {