UNPKG

@datanest-earth/nodejs-client

Version:
116 lines (107 loc) 4.01 kB
import { Item } from "./gather"; import DatanestClient, { DateRangeFilters, PaginatedResponse, SoftDelete, Timestamps, UUID } from "./index"; export type GeoJsonFeature = { type: "Feature"; geometry: { type: "Point"; coordinates: LongLat; } | { type: "Polygon"; coordinates: LongLat[][]; } | { type: "LineString"; coordinates: LongLat[]; }; bbox?: BBox; properties: Record<string, any>; }; /** Coordinates in AGS84. Order: [long, lat] */ export type LongLat = [number, number]; /** * Bounding box in AGS84 coordinates. * Order: [minLong, minLat, maxLong, maxLat] */ export type BBox = [number, number, number, number]; export type Figure = { id: number; project_uuid: string; title: string; figure_no: string | null; figure_no_prefix: string | null; basemap_index: number; legend_type: string; is_basemap_figure: boolean; custom_print_layout_id: number | null; date: string | null; drawn_by: string | null; checked_by: string | null; version: string | null; locked_layer_ids: string | null; basemap_image: string | null; basemap_image_bounds: string | null; legend_font_size: number; minimap_location: string | null; minimap_basemap: number; site_boundary_indicator_type: number; site_boundary_indicator_size: number; north_arrow_type: number; north_arrow_size: number; popup_font_size: number; view_lat: number; view_lng: number; view_scale: number; view_rotation: number; view_size: number; view_orientation: string; view_projection: string; view_zoom: number; show_view_projection: boolean; show_site_boundary_indicator: boolean; hide_sample_labels: boolean; hide_legend_attributes: boolean; hide_sample_exceedance_styling: boolean; hide_ecs_without_exceedances: boolean; hide_chemicals_without_exceedances: boolean; hide_scenario_exceedances_in_legend: boolean; hide_non_detect_chemicals: boolean; has_gather_access: boolean; has_scale_bar: boolean; has_minimap: boolean; has_north_arrow: boolean; has_been_exported: boolean; has_site_boundary_default: boolean; has_callouts_decluttering_enabled: boolean; has_auto_fit_legend_items: boolean; } & Timestamps & SoftDelete; export type FigureLayer = { id: number, project_uuid: UUID, figure_id: number, title: string | null, type: "item_group" | string | null, is_default_item_group: true, /** Internal unique identifier for the group */ group_marker_key: string | null, /** URL to SVG image */ marker_svg_url: string | null, /** HEX color code */ marker_color: string | null, bbox: BBox | null, geojson: GeoJsonFeature | null, } & Timestamps & SoftDelete; export async function listProjectFigures(client: DatanestClient, projectUuid: string, filters?: DateRangeFilters): Promise<PaginatedResponse<Figure>> { const figures = await client.get(`/v1/projects/${projectUuid}/figures`, filters); return (await figures.json()) as PaginatedResponse<Figure>; } export async function listProjectFigureLayers(client: DatanestClient, projectUuid: string, figureId: number, filters?: DateRangeFilters): Promise<PaginatedResponse<FigureLayer>> { const layers = await client.get(`/v1/projects/${projectUuid}/figures/${figureId}/layers`, filters); return (await layers.json()) as PaginatedResponse<FigureLayer>; } export async function listProjectFigureLayerItems(client: DatanestClient, projectUuid: string, figureId: number, layerId: number, options?: { bbox?: BBox } & DateRangeFilters): Promise<PaginatedResponse<Item>> { const params: any = options || {}; if (params.bbox) { params.bbox = params.bbox.join(","); } const items = await client.get(`/v1/projects/${projectUuid}/figures/${figureId}/layers/${layerId}/items`, params); return (await items.json()) as PaginatedResponse<Item>; }