Files
NODEDC_DESIGN_GUIDELINE/apps/catalog/src/mapWorkspaceModel.d.mts
T

54 lines
3.8 KiB
TypeScript

import type { MapDataProductBinding, MapSubjectState } from "./mapPageContract.js";
import type { MapPresentationFilters, MapPresentationProfile } from "./mapPresentationProfile.js";
import type { GridSectorSelection } from "./mapRendererContract.js";
import type { SectorGridLodProfile } from "./mapSectorWorkspace.js";
import type { MapRuntimeBinding, MapRuntimeFact } from "./useMapDataProductRuntime.js";
export type MapSelectableEntity = {
id: string;
title: string;
kind: string;
status: string;
bindingId: string;
dataProductId: string;
fact: MapRuntimeFact;
};
export type MapSectorScope = {
excludedBindingIds: string[];
excludedProviders: string[];
excludedObjectKinds: string[];
};
export type MapPresentationSummary = {
bindingId: string;
displayName: string;
profile: MapPresentationProfile;
total: number;
counts: Record<string, Record<string, number>>;
};
export type MapFilteredTarget = {
bindingId: string;
entityId: string;
title: string;
status: string;
renderable: boolean;
};
export function mapProfileHasSubjectWindowControls(profile: MapPresentationProfile): boolean;
export function primaryMapBindingConfigs(bindingConfigs: MapDataProductBinding[]): MapDataProductBinding[];
export function primaryMapRuntimeBindings(runtimeBindings: MapRuntimeBinding[], bindingConfigs: MapDataProductBinding[]): MapRuntimeBinding[];
export function buildMapPresentationFilters(subjectStates: Record<string, MapSubjectState>, bindingConfigs: MapDataProductBinding[], profiles: MapPresentationProfile[]): MapPresentationFilters;
export function buildSelectableMapEntities(runtimeBindings: MapRuntimeBinding[], bindingConfigs: MapDataProductBinding[], profiles: MapPresentationProfile[]): MapSelectableEntity[];
export function buildSectorSpatialEntities(selectable: MapSelectableEntity[], selection: GridSectorSelection | null, profiles: SectorGridLodProfile[], origin: { latitude: number; longitude: number }): MapSelectableEntity[];
export function buildSectorBindingOptions(bindingConfigs: MapDataProductBinding[], sectorEntities: MapSelectableEntity[]): Array<{ value: string; label: string; count: number }>;
export function bindingProjectsField(bindingConfigs: MapDataProductBinding[], field: string): boolean;
export function buildSectorScopeOptions(sectorEntities: MapSelectableEntity[], field: string, enabled?: boolean): Array<{ value: string; label: string; count: number }>;
export function sectorEntityIsExcluded(entity: MapSelectableEntity, scope: MapSectorScope): boolean;
export function buildSectorVisibleEntities(input: { sectorEntities: MapSelectableEntity[]; bindingConfigs: MapDataProductBinding[]; presentationProfiles: MapPresentationProfile[]; presentationFilters: MapPresentationFilters; scope: MapSectorScope }): MapSelectableEntity[];
export function scopeMapRuntimeBindings(input: { runtimeBindings: MapRuntimeBinding[]; selection: GridSectorSelection | null; gridProfiles: SectorGridLodProfile[]; origin: { latitude: number; longitude: number }; hideOutsideSector: boolean; scope: MapSectorScope }): MapRuntimeBinding[];
export function buildMapPresentationSummaries(bindingConfigs: MapDataProductBinding[], runtimeBindings: MapRuntimeBinding[], profiles: MapPresentationProfile[]): MapPresentationSummary[];
export function buildFilteredMapTargets(runtimeBindings: MapRuntimeBinding[], bindingConfigs: MapDataProductBinding[], profiles: MapPresentationProfile[], filters: MapPresentationFilters): MapFilteredTarget[];
export function planMapSubjectReveal(input: { entity: MapSelectableEntity; subjectState: MapSubjectState; profile: MapPresentationProfile | undefined; selectedSector: GridSectorSelection | null; gridProfiles: SectorGridLodProfile[]; origin: { latitude: number; longitude: number }; hideOutsideSector: boolean; scope: MapSectorScope }): { subjectState: MapSubjectState; hideOutsideSector: boolean; scope: MapSectorScope };