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.filterscon operatoremaparea(poligono) omapdistance(cerchio) sul campofield.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), resettametaInfo.operators[<field>]e rilanciafetchData().- Richiede la Google Maps JavaScript API caricata e una colonna geografica (es.
Location).
API
Selector:
wuic-point-filter
Input:
record: anyfield: MetadatiColonna— la colonna geografica su cui filtraremetaInfo: MetaInfodatasource: BehaviorSubject<DataSourceComponent>
Metodi pubblici principali:
openDialog()/closeDialog()drawArea()— avvia il disegno del poligono (operatoremaparea)drawCircle()— avvia il disegno del cerchio (operatoremapdistance)applyFilter()— scrive il filtro sudatasource.filterInfoe ricaricaclearFilter()— 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/mapdistancevengono 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.archetypesper centrare la vista mappa collegata.