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 datasource: TbMapDatasource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected mapDataId = guid();
 | 
					  protected mapDataId: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected dataLayerContainer: L.FeatureGroup;
 | 
					  protected dataLayerContainer: L.FeatureGroup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -281,6 +281,10 @@ export abstract class TbMapDataLayer<S extends MapDataLayerSettings = MapDataLay
 | 
				
			|||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public hasData(data: FormattedData<TbMapDatasource>): boolean {
 | 
				
			||||||
 | 
					    return data.$datasource.mapDataIds.includes(this.mapDataId);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected createDataLayerContainer(): L.FeatureGroup {
 | 
					  protected createDataLayerContainer(): L.FeatureGroup {
 | 
				
			||||||
    return L.featureGroup([], {snapIgnore: true});
 | 
					    return L.featureGroup([], {snapIgnore: true});
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -41,7 +41,7 @@ import {
 | 
				
			|||||||
} from '@core/utils';
 | 
					} from '@core/utils';
 | 
				
			||||||
import { DeepPartial } from '@shared/models/common';
 | 
					import { DeepPartial } from '@shared/models/common';
 | 
				
			||||||
import L from 'leaflet';
 | 
					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 { map, switchMap, tap } from 'rxjs/operators';
 | 
				
			||||||
import '@home/components/widget/lib/maps/leaflet/leaflet-tb';
 | 
					import '@home/components/widget/lib/maps/leaflet/leaflet-tb';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
@ -142,6 +142,7 @@ export abstract class TbMap<S extends BaseMapSettings> {
 | 
				
			|||||||
                        protected inputSettings: DeepPartial<S>,
 | 
					                        protected inputSettings: DeepPartial<S>,
 | 
				
			||||||
                        protected containerElement: HTMLElement) {
 | 
					                        protected containerElement: HTMLElement) {
 | 
				
			||||||
    this.ctx.actionsApi.placeMapItem = this.placeMapItem.bind(this);
 | 
					    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);
 | 
					    this.settings = mergeDeepIgnoreArray({} as S, this.defaultSettings(), this.inputSettings as S);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $(containerElement).empty();
 | 
					    $(containerElement).empty();
 | 
				
			||||||
@ -1101,6 +1102,47 @@ export abstract class TbMap<S extends BaseMapSettings> {
 | 
				
			|||||||
    return this.dragMode;
 | 
					    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> {
 | 
					  public saveItemData(datasource: TbMapDatasource, data: DataKeyValuePair[], attributeScope: AttributeScope): Observable<any> {
 | 
				
			||||||
    const attributeService = this.ctx.$injector.get(AttributeService);
 | 
					    const attributeService = this.ctx.$injector.get(AttributeService);
 | 
				
			||||||
    const attributes: AttributeData[] = [];
 | 
					    const attributes: AttributeData[] = [];
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user