fix update of images;

improve map pane;
This commit is contained in:
Marco Zeisler 2021-01-16 19:23:36 +01:00
parent d22397c7f0
commit 8e24d0333e
5 changed files with 57 additions and 19 deletions

View File

@ -40,11 +40,11 @@ export class FileUploaderComponent implements OnInit {
if (this.filename) { if (this.filename) {
this.id = this.filename; this.id = this.filename;
metaDict['filename'] = this.filename;
} else { } else {
this.id = this.currentFileName; this.id = this.currentFileName;
}
metaDict['filename'] = this.currentFileName; metaDict['filename'] = this.currentFileName;
}
if (this.mode === 'post') { if (this.mode === 'post') {
if (this.longitude && this.latitude) { if (this.longitude && this.latitude) {
@ -68,6 +68,8 @@ export class FileUploaderComponent implements OnInit {
} }
} }
// metaDict['name'] = this.currentFileName;
if (this.tag) { if (this.tag) {
metaDict['tag'] = this.tag; metaDict['tag'] = this.tag;
} else if (this.meta && this.meta.tag) { } else if (this.meta && this.meta.tag) {

View File

@ -8,8 +8,9 @@
<mat-expansion-panel <mat-expansion-panel
*ngFor="let image of filterOnlyNewestImageVersion() | slice:paginationGetStart():paginationGetEnd()" *ngFor="let image of filterOnlyNewestImageVersion() | slice:paginationGetStart():paginationGetEnd()"
(opened)="loadImage(getImageIndex(image), image.filename.split('.')[0])" (opened)="loadImage(getImageIndex(image), image.identifier)"
> >
<!-- (opened)="loadImage(getImageIndex(image), image.filename.split('.')[0])"-->
<mat-expansion-panel-header (click)="$event.stopPropagation()"> <mat-expansion-panel-header (click)="$event.stopPropagation()">
<h4 style="width: 25em" <h4 style="width: 25em"
>{{image.name}}</h4> >{{image.name}}</h4>
@ -43,7 +44,6 @@
<ng-template #loadingImage> <ng-template #loadingImage>
<mat-spinner style="margin: auto;"></mat-spinner> <mat-spinner style="margin: auto;"></mat-spinner>
</ng-template> </ng-template>
</div> </div>
</mat-grid-tile> </mat-grid-tile>
@ -61,7 +61,7 @@
<app-file-uploader [mode]="'put'" <app-file-uploader [mode]="'put'"
[filename]="image.filename.split('.')[0]" [filename]="image.filename.split('.')[0]"
[meta]=image [meta]=image
(reload)="this.reload.emit()" (reload)="image.image_b64 = undefined; this.loadImage(getImageIndex(image), image.identifier)"
></app-file-uploader> ></app-file-uploader>
<ng-container *ngIf="getRelatedImageMeta(image); let relatedImageMetadata"> <ng-container *ngIf="getRelatedImageMeta(image); let relatedImageMetadata">
@ -71,10 +71,13 @@
</mat-expansion-panel-header> </mat-expansion-panel-header>
<ng-template matExpansionPanelContent> <ng-template matExpansionPanelContent>
<div *ngFor="let imageMeta of relatedImageMetadata"> <div *ngFor="let imageMeta of relatedImageMetadata">
<mat-divider></mat-divider>
<p *ngIf="imageMeta.filename">filename: {{imageMeta.filename}}</p> <p *ngIf="imageMeta.filename">filename: {{imageMeta.filename}}</p>
<p *ngIf="imageMeta.latitude">latitude: {{imageMeta.latitude}}</p> <p *ngIf="imageMeta.latitude">latitude: {{imageMeta.latitude}}</p>
<p *ngIf="imageMeta.longitude">longitude: {{imageMeta.longitude}}</p> <p *ngIf="imageMeta.longitude">longitude: {{imageMeta.longitude}}</p>
<p *ngIf="imageMeta.version">version: {{imageMeta.version}}</p> <p *ngIf="imageMeta.version">version: {{imageMeta.version}}</p>
<p *ngIf="imageMeta.tag">tag: {{imageMeta.tag}}</p>
<p *ngIf="imageMeta.name">name: {{imageMeta.name}}</p>
</div> </div>
</ng-template> </ng-template>
</mat-expansion-panel> </mat-expansion-panel>

View File

@ -60,19 +60,14 @@ export class ImagesComponent implements OnInit, AfterViewInit {
} }
filterOnlyNewestImageVersion() { filterOnlyNewestImageVersion() {
return this.images.filter(image => !image.previous); return this.images.filter(image => !image.identifier.includes('_'));
} }
getImageIndex(image: ImageMetadata) { getImageIndex(image: ImageMetadata) {
return this.images.findIndex(img => image === img); return this.images.findIndex(img => image === img);
} }
getRelatedImageMeta(image: ImageMetadata, images: ImageMetadata[] = []) { getRelatedImageMeta(image: ImageMetadata) {
const found = this.images.find(im => im.previous === image.identifier); return this.images.filter(im => im.identifier.includes(image.identifier) && im.identifier !== image.identifier);
if (found) {
return this.getRelatedImageMeta(found, images.concat(found));
} else {
return images;
}
} }
} }

View File

@ -5,15 +5,33 @@
[longitude]="longitude" [longitude]="longitude"
[zoom]="2"> [zoom]="2">
<agm-marker <agm-marker
*ngFor="let image of images" *ngFor="let image of getImagesForMap()"
[latitude]="image.latitude" [latitude]="image.latitude"
[longitude]="image.longitude" [longitude]="image.longitude"
[opacity]="1" [opacity]="1"
[markerDraggable]="true" [markerDraggable]="true"
(markerClick)="selectMarker($event)" (markerClick)="loadImage(selectMarker($event))"
></agm-marker> ></agm-marker>
</agm-map> </agm-map>
<p *ngIf="selectedImage"> <div *ngIf="selectedImage">
Latitude: {{ selectedImage.latitude }} Longitude: {{ selectedImage.longitude }} Name: {{selectedImage.name}} Latitude: {{ selectedImage.latitude }} Longitude: {{ selectedImage.longitude }} Name: {{selectedImage.name}}
</p>
<mat-divider style="margin-bottom: 1em;"></mat-divider>
<div style="width: 20em; height: 20em; border: solid; margin-bottom: 1em; display: flex">
<img *ngIf="selectedImage.image_b64, let b64; else loadingImage"
[src]="b64"
style="width: 100%; margin: auto" [alt]="selectedImage.filename"/>
<ng-template #loadingImage>
<mat-spinner style="margin: auto;"></mat-spinner>
</ng-template>
</div>
<p *ngIf="selectedImage.filename">filename: {{selectedImage.filename}}</p>
<!-- <p *ngIf="selectedImage.latitude">latitude: {{selectedImage.latitude}}</p>-->
<!-- <p *ngIf="selectedImage.longitude">longitude: {{selectedImage.longitude}}</p>-->
<p *ngIf="selectedImage.version">version: {{selectedImage.version}}</p>
<p *ngIf="selectedImage.tag">tag: {{selectedImage.tag}}</p>
<!-- <p *ngIf="selectedImage.name">name: {{selectedImage.name}}</p>-->
</div>

View File

@ -1,5 +1,6 @@
import {Component, Input, OnInit} from '@angular/core'; import {Component, Input, OnInit} from '@angular/core';
import {ImageMetadata} from '../../interfaces/interface'; import {ImageMetadata} from '../../interfaces/interface';
import {RestService} from '../../services/rest.service';
// @ts-ignore // @ts-ignore
@Component({ @Component({
@ -16,7 +17,7 @@ export class MapComponent implements OnInit {
latitude = 43.879078; latitude = 43.879078;
longitude = -103.4615581; longitude = -103.4615581;
constructor() { constructor(private restService: RestService) {
} }
@ -25,6 +26,25 @@ export class MapComponent implements OnInit {
} }
selectMarker(event) { selectMarker(event) {
this.selectedImage = this.images.find(image => image.latitude === event.latitude && image.longitude === event.longitude); console.log(event, this.images);
this.selectedImage = this.images.find(image =>
image.latitude === event.latitude && image.longitude === event.longitude && !image.identifier.includes('_')
);
return this.selectedImage;
} }
getImagesForMap() {
return this.images.filter(im => !im.identifier.includes('_'));
}
loadImage(image: ImageMetadata): void {
image.image_b64 = '';
this.restService.getImage(image.identifier).toPromise().then(im => {
image.image_b64 = 'data:image/jpg;base64,' + im.image_data;
}).catch(err => {
console.error('loadImage', image, err);
});
}
} }