UI: Update thermostats demo dashboard with new map widgets.
This commit is contained in:
		
							parent
							
								
									6f403aafc4
								
							
						
					
					
						commit
						28a5f847ac
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -172,7 +172,7 @@ export abstract class TbMapDataLayer<S extends MapDataLayerSettings = MapDataLay
 | 
			
		||||
 | 
			
		||||
  protected datasource: TbMapDatasource;
 | 
			
		||||
 | 
			
		||||
  protected mapDataId = guid();
 | 
			
		||||
  protected mapDataId: string;
 | 
			
		||||
 | 
			
		||||
  protected dataLayerContainer: L.FeatureGroup;
 | 
			
		||||
 | 
			
		||||
@ -281,6 +281,10 @@ export abstract class TbMapDataLayer<S extends MapDataLayerSettings = MapDataLay
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public hasData(data: FormattedData<TbMapDatasource>): boolean {
 | 
			
		||||
    return data.$datasource.mapDataIds.includes(this.mapDataId);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected createDataLayerContainer(): L.FeatureGroup {
 | 
			
		||||
    return L.featureGroup([], {snapIgnore: true});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -41,7 +41,7 @@ import {
 | 
			
		||||
} from '@core/utils';
 | 
			
		||||
import { DeepPartial } from '@shared/models/common';
 | 
			
		||||
import L from 'leaflet';
 | 
			
		||||
import { forkJoin, Observable, of } from 'rxjs';
 | 
			
		||||
import { EMPTY, forkJoin, Observable, of } from 'rxjs';
 | 
			
		||||
import { map, switchMap, tap } from 'rxjs/operators';
 | 
			
		||||
import '@home/components/widget/lib/maps/leaflet/leaflet-tb';
 | 
			
		||||
import {
 | 
			
		||||
@ -142,6 +142,7 @@ export abstract class TbMap<S extends BaseMapSettings> {
 | 
			
		||||
                        protected inputSettings: DeepPartial<S>,
 | 
			
		||||
                        protected containerElement: HTMLElement) {
 | 
			
		||||
    this.ctx.actionsApi.placeMapItem = this.placeMapItem.bind(this);
 | 
			
		||||
    (this.ctx as any).mapInstance = this;
 | 
			
		||||
    this.settings = mergeDeepIgnoreArray({} as S, this.defaultSettings(), this.inputSettings as S);
 | 
			
		||||
 | 
			
		||||
    $(containerElement).empty();
 | 
			
		||||
@ -1101,6 +1102,47 @@ export abstract class TbMap<S extends BaseMapSettings> {
 | 
			
		||||
    return this.dragMode;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public saveMarkerLocation(data: FormattedData<TbMapDatasource>, lat?: number, lng?: number): Observable<any> {
 | 
			
		||||
    const targetDataLayer = this.latestDataLayers.find(dl => dl.dataLayerType() === 'markers' && dl.hasData(data));
 | 
			
		||||
    if (targetDataLayer) {
 | 
			
		||||
      let location: L.LatLng = null;
 | 
			
		||||
      if (isDefinedAndNotNull(lat) && isDefinedAndNotNull(lng)) {
 | 
			
		||||
        location = new L.LatLng(lat, lng);
 | 
			
		||||
      }
 | 
			
		||||
      return (targetDataLayer as TbMarkersDataLayer).saveMarkerLocation(data, location);
 | 
			
		||||
    } else {
 | 
			
		||||
      return EMPTY;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public savePolygonLocation(data: FormattedData<TbMapDatasource>, coordinates?: TbPolygonCoordinates): Observable<any> {
 | 
			
		||||
    const targetDataLayer = this.latestDataLayers.find(dl => dl.dataLayerType() === 'polygons' && dl.hasData(data));
 | 
			
		||||
    if (targetDataLayer) {
 | 
			
		||||
      return (targetDataLayer as TbPolygonsDataLayer).savePolygonCoordinates(data, coordinates);
 | 
			
		||||
    } else {
 | 
			
		||||
      return EMPTY;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public saveLocation(data: FormattedData<TbMapDatasource>, values: {[key: string]: any}): Observable<any> {
 | 
			
		||||
    const datasource = data.$datasource;
 | 
			
		||||
    let dataKeys = datasource.dataKeys;
 | 
			
		||||
    if (datasource.latestDataKeys) {
 | 
			
		||||
      dataKeys = dataKeys.concat(datasource.latestDataKeys);
 | 
			
		||||
    }
 | 
			
		||||
    const itemData: DataKeyValuePair[] = [];
 | 
			
		||||
    for (const dataKeyName of Object.keys(values)) {
 | 
			
		||||
      const dataKey = dataKeys.find(key => key.name === dataKeyName);
 | 
			
		||||
      if (dataKey) {
 | 
			
		||||
        itemData.push({
 | 
			
		||||
          dataKey,
 | 
			
		||||
          value: values[dataKeyName]
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return this.saveItemData(datasource, itemData, AttributeScope.SERVER_SCOPE);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public saveItemData(datasource: TbMapDatasource, data: DataKeyValuePair[], attributeScope: AttributeScope): Observable<any> {
 | 
			
		||||
    const attributeService = this.ctx.$injector.get(AttributeService);
 | 
			
		||||
    const attributes: AttributeData[] = [];
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user