UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

70 lines (69 loc) 2.57 kB
import type OlFeature from 'ol/Feature.js'; import IGirafeContext from './context/icontext.js'; /** * Represents a grid data organized by unique ids. */ export type GridDataById = Record<string, GridData>; /** * Represents the data structure for a grid, based on multiple features * for a same ID (and with a same structure, geom type and properties). * - Columns are every (not ol) features properties name; * - Data are every (not ol) features properties values; * - Features are every Ol features (backref); * - notOlProperties are every property but without ol specific one. */ export interface GridData { columns: string[]; data: unknown[][]; features: OlFeature[]; notOlProperties: Record<string, unknown>[]; } /** * Options for converting feature data to grid data. */ export interface FeatureToGridDataOptions { /** Determines whether to keep the geometry property as a property value. */ keepGeomProperty?: boolean; /** Determines whether to keep (always) empty columns or not in columns and data. */ removeEmptyColumns?: boolean; } /** * A feature-to-grid data converter, to show feature's properties in grid-like system. */ export default class FeatureToGridDataById { private readonly context; options: FeatureToGridDataOptions; constructor(context: IGirafeContext, options: FeatureToGridDataOptions); /** * Takes an array of OpenLayers features and converts them into a grid data object, where each feature * is mapped by its ID as the key. * @returns The grid data objects, by id. */ toGridDataById(features: OlFeature[]): GridDataById; /** * @returns a gridDataByID for a single converted OL feature. * @private */ private addFeatureToGridDataById; private ensureAbsolutePath; private isLikelyHtml; /** * @returns {GridData} A new empty grid data object with columns from given properties. * @static */ private static createGridDataWithColumns; /** * Removes empty columns (columns and data) from a given gridData object. * It's expected that all features in the gridData have the same properties. * @static */ private static removeEmptyColumns; /** * This method finds the indexes of empty columns in a given 2D array. * @param data - The 2D array to search for empty columns. * @returns An array of indexes representing the empty columns. * @static */ private static findEmptyColumnIndexOf; static getUserFeatureType(feature: OlFeature): string; }