修复楼层点位展示与楼层匹配
This commit is contained in:
@@ -89,6 +89,26 @@ const resolveSgsAssetUrl = (url?: string | null) => {
|
||||
const sortSgsFloors = (floors: SgsSdkFloorSummaryPayload[]) => [...floors]
|
||||
.sort((a, b) => Number(a.sortOrder || 0) - Number(b.sortOrder || 0))
|
||||
|
||||
const isSharedSgsModelAsset = (
|
||||
modelUrl: string,
|
||||
overviewModelUrl: string,
|
||||
allModelUrls: string[]
|
||||
) => {
|
||||
if (!modelUrl) return false
|
||||
|
||||
return modelUrl === overviewModelUrl || allModelUrls.filter((url) => url === modelUrl).length > 1
|
||||
}
|
||||
|
||||
const getSgsFloorModelMatchKeys = (floor: SgsSdkFloorSummaryPayload, label: string) => (
|
||||
[
|
||||
String(floor.floorId),
|
||||
floor.floorCode,
|
||||
floor.floorName,
|
||||
label
|
||||
]
|
||||
.filter((value): value is string => Boolean(value))
|
||||
)
|
||||
|
||||
export interface GuideModelRepository extends GuideModelSource {}
|
||||
|
||||
export class StaticGuideModelRepository implements GuideModelRepository {
|
||||
@@ -144,17 +164,18 @@ export class SgsSdkGuideModelRepository implements GuideModelRepository {
|
||||
floors.map((floor) => this.provider.getFloorBundle(String(floor.floorId)))
|
||||
)
|
||||
|
||||
const floorAssets: GuideModelFloorAsset[] = floors
|
||||
const floorModelItems = floors
|
||||
.map((floor, index) => {
|
||||
const bundle = bundles[index]
|
||||
const modelUrl = resolveSgsAssetUrl(bundle.model?.modelUrl || bundle.model?.fallbackModelUrl)
|
||||
const label = formatSgsFloorLabel(floor.floorCode, floor.floorName)
|
||||
|
||||
return {
|
||||
floorId: String(floor.floorId),
|
||||
label: formatSgsFloorLabel(floor.floorCode, floor.floorName),
|
||||
label,
|
||||
order: Number(floor.sortOrder || 0),
|
||||
modelUrl,
|
||||
sharedModelAsset: false
|
||||
modelMatchKeys: getSgsFloorModelMatchKeys(floor, label)
|
||||
}
|
||||
})
|
||||
.filter((asset) => asset.modelUrl)
|
||||
@@ -165,7 +186,12 @@ export class SgsSdkGuideModelRepository implements GuideModelRepository {
|
||||
: null
|
||||
const overviewModelUrl = resolveSgsAssetUrl(
|
||||
overviewBundle?.model?.modelUrl || overviewBundle?.model?.fallbackModelUrl
|
||||
) || floorAssets[0]?.modelUrl || ''
|
||||
) || floorModelItems[0]?.modelUrl || ''
|
||||
const floorModelUrls = floorModelItems.map((asset) => asset.modelUrl)
|
||||
const floorAssets: GuideModelFloorAsset[] = floorModelItems.map((asset) => ({
|
||||
...asset,
|
||||
sharedModelAsset: isSharedSgsModelAsset(asset.modelUrl, overviewModelUrl, floorModelUrls)
|
||||
}))
|
||||
|
||||
return {
|
||||
overviewModelUrl,
|
||||
|
||||
Reference in New Issue
Block a user