Overview

Point Filter

wuic-point-filter e' il filtro geografico del framework: disegni un'area poligonale o un cerchio (centro + raggio) su una mappa Google e il componente applica il filtro spaziale sul campo location del datasource.

Descrizione

  • Apre un dialog con mappa Google (PrimeNG Dialog + @angular/google-maps).
  • Due modalita' di disegno: area poligonale (ogni click aggiunge un vertice, click sul primo vertice o doppio click chiude la forma, minimo 3 vertici) e cerchio (primo click fissa il centro, il mousemove regola il raggio in tempo reale, il secondo click conferma).
  • Applica il filtro su datasource.filterInfo.filters con operatore maparea (poligono) o mapdistance (cerchio) sul campo field.mc_nome_colonna, poi ricarica i dati.
  • Se l'utente preme "Usa filtro" senza aver chiuso la shape, la shape corrente viene finalizzata automaticamente.
  • clearFilter() rimuove il filtro spaziale (match del field name case-insensitive), resetta metaInfo.operators[<field>] e rilancia fetchData().
  • Richiede la Google Maps JavaScript API caricata e una colonna geografica (es. Location).

API

Selector:

  • wuic-point-filter

Input:

  • record: any
  • field: MetadatiColonna — la colonna geografica su cui filtrare
  • metaInfo: MetaInfo
  • datasource: BehaviorSubject<DataSourceComponent>

Metodi pubblici principali:

  • openDialog() / closeDialog()
  • drawArea() — avvia il disegno del poligono (operatore maparea)
  • drawCircle() — avvia il disegno del cerchio (operatore mapdistance)
  • applyFilter() — scrive il filtro su datasource.filterInfo e ricarica
  • clearFilter() — rimuove il filtro spaziale e rigenera la query

Esempio: list-grid con filtro geografico

Snippet 1ts
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { DataSourceComponent, ListGridComponent, PointFilterComponent } from 'wuic-framework-lib';
import { MetadatiColonna } from 'wuic-framework-lib';

@Component({
  selector: 'app-cities-geo',
Snippet 2HTML
<wuic-data-source #ds [hardcodedRoute]="'cities'" [autoload]="true"></wuic-data-source>
<wuic-point-filter *ngIf="locationField"
  [field]="locationField"
  [metaInfo]="ds.metaInfo"
  [datasource]="dsSubject"></wuic-point-filter>
<wuic-list-grid [hardcodedDatasource]="ds"></wuic-list-grid>

Note

  • Gli operatori maparea / mapdistance vengono tradotti in SQL spaziale server-side dal query builder del framework.
  • Il filtro viene inserito con __extra: true (non e' un filtro colonna standard della filter-bar).
  • Il centro della shape viene propagato a metaInfo.tableMetadata.extraProps.archetypes per centrare la vista mappa collegata.