urbi-exhibitions
Version:
67 lines (66 loc) • 1.92 kB
TypeScript
import { BuildingOptions } from '../../types';
import { FlightPart } from '../../modules/mapFlight';
import { MarkerTooltipPosition } from './components/marker';
export type PovTooltipPosition = 'top' | 'bottom' | 'top-left' | 'top-right' | 'left' | 'right' | 'bottom-left' | 'bottom-right';
interface PointOfViewContent {
title: string;
description: string;
}
interface BasePointOfView {
id: string;
buildingStates?: Array<{
modelId: string;
floorId: string;
}>;
lonLat: number[];
height?: number;
elevation?: number;
flightScenario: FlightPart[];
tooltipPos: PovTooltipPosition;
markerTooltipPos?: MarkerTooltipPosition;
}
export type PointOfView = BasePointOfView & PointOfViewContent;
interface ComplexContent {
title: string;
description?: string;
architects?: string;
year?: string;
}
interface BaseComplex {
id: string;
tooltipPosition?: MarkerTooltipPosition;
image?: string;
flightPitch?: number;
flightStyleZoom?: number;
flightRotationDuration?: number;
flightDontResetView?: boolean;
flightScenario?: FlightPart[];
coordinates: number[];
mapOptions: BuildingOptions['mapOptions'];
buildings: BuildingOptions[];
maxZoom?: number;
}
export interface Complex extends BaseComplex, ComplexContent {
pointsOfView?: PointOfView[];
}
interface ComplexWithoutContent extends BaseComplex {
pointsOfView?: BasePointOfView[];
}
export type ComplexWithCity = Complex & {
cityId: string;
};
interface BaseCityData {
id: string;
mapOptions: BuildingOptions['mapOptions'];
complexPreviews?: string[];
tooltipPosition?: MarkerTooltipPosition;
}
export interface CityData extends BaseCityData {
title?: string;
mode?: string;
complexes: Complex[];
}
export interface CityDataWithoutContent extends BaseCityData {
complexes: ComplexWithoutContent[];
}
export {};