Merge branch 'master' into 4-mongodb_api

This commit is contained in:
Manuel Hude 2021-01-16 17:45:43 +01:00
commit 5c73d12330
6 changed files with 83 additions and 20 deletions

View File

@ -12,34 +12,46 @@
<mat-form-field class="margin-right"> <mat-form-field class="margin-right">
<mat-label>* Name</mat-label> <mat-label>* Name</mat-label>
<input matInput <input matInput *ngIf="meta"
placeholder="Name" placeholder="Name"
[(ngModel)]="meta ? meta.name : name"> [(ngModel)]="meta.name">
<input matInput *ngIf="!meta"
placeholder="Name"
[(ngModel)]="name">
</mat-form-field> </mat-form-field>
<mat-form-field class="margin-right"> <mat-form-field class="margin-right">
<mat-label>Tag</mat-label> <mat-label>Tag</mat-label>
<input matInput <input matInput *ngIf="meta"
placeholder="Add a tag" placeholder="Add a tag"
[(ngModel)]="meta ? meta.tag : tag"> [(ngModel)]="meta.tag">
<input matInput *ngIf="!meta"
placeholder="Add a tag"
[(ngModel)]="tag">
</mat-form-field> </mat-form-field>
<mat-form-field *ngIf="mode==='post'" <mat-form-field *ngIf="mode==='post'"
class="margin-right" class="margin-right"
> >
<mat-label>* Longitude</mat-label> <mat-label>* Longitude</mat-label>
<input matInput <input matInput *ngIf="meta"
placeholder="Add longitude" placeholder="Add longitude"
[(ngModel)]="meta ? meta.longitude : longitude"> [(ngModel)]="meta.longitude">
<input matInput *ngIf="!meta"
placeholder="Add longitude"
[(ngModel)]="longitude">
</mat-form-field> </mat-form-field>
<mat-form-field *ngIf="mode==='post'" <mat-form-field *ngIf="mode==='post'"
class="margin-right" class="margin-right"
> >
<mat-label>* Latitude</mat-label> <mat-label>* Latitude</mat-label>
<input matInput <input matInput *ngIf="meta"
placeholder="Add latitude" placeholder="Add latitude"
[(ngModel)]="meta ? meta.latitude : latitude"> [(ngModel)]="meta.latitude">
<input matInput *ngIf="!meta"
placeholder="Add latitude"
[(ngModel)]="latitude">
</mat-form-field> </mat-form-field>
<button type="button" <button type="button"

View File

@ -7,8 +7,8 @@
</div> </div>
<mat-expansion-panel <mat-expansion-panel
*ngFor="let image of images | slice:paginationGetStart():paginationGetEnd(); let i = index" *ngFor="let image of filterOnlyNewestImageVersion() | slice:paginationGetStart():paginationGetEnd()"
(opened)="loadImage(i + paginationGetStart(), image.filename.split('.')[0])" (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"
@ -51,7 +51,6 @@
<div style="display: block; width: 100%"> <div style="display: block; width: 100%">
<h3>Metadata:</h3> <h3>Metadata:</h3>
<p *ngIf="image.filename">filename: {{image.filename}}</p> <p *ngIf="image.filename">filename: {{image.filename}}</p>
<p *ngIf="image.tag">tag: {{image.tag}}</p>
<p *ngIf="image.latitude">latitude: {{image.latitude}}</p> <p *ngIf="image.latitude">latitude: {{image.latitude}}</p>
<p *ngIf="image.longitude">longitude: {{image.longitude}}</p> <p *ngIf="image.longitude">longitude: {{image.longitude}}</p>
<p *ngIf="image.version">version: {{image.version}}</p> <p *ngIf="image.version">version: {{image.version}}</p>
@ -64,13 +63,28 @@
[meta]=image [meta]=image
(reload)="this.reload.emit()" (reload)="this.reload.emit()"
></app-file-uploader> ></app-file-uploader>
<!-- (reload)="loadImage(i + paginationGetStart(), $event.split('.')[0])"-->
<ng-container *ngIf="getRelatedImageMeta(image); let relatedImageMetadata">
<mat-expansion-panel *ngIf="relatedImageMetadata.length > 0">
<mat-expansion-panel-header>
Previous version meta
</mat-expansion-panel-header>
<ng-template matExpansionPanelContent>
<div *ngFor="let imageMeta of relatedImageMetadata">
<p *ngIf="imageMeta.filename">filename: {{imageMeta.filename}}</p>
<p *ngIf="imageMeta.latitude">latitude: {{imageMeta.latitude}}</p>
<p *ngIf="imageMeta.longitude">longitude: {{imageMeta.longitude}}</p>
<p *ngIf="imageMeta.version">version: {{imageMeta.version}}</p>
</div>
</ng-template>
</mat-expansion-panel>
</ng-container>
</ng-template> </ng-template>
</mat-expansion-panel> </mat-expansion-panel>
<mat-paginator *ngIf="images.length > 0" <mat-paginator *ngIf="filterOnlyNewestImageVersion().length > 0"
[length]="images.length" [length]="filterOnlyNewestImageVersion().length"
[pageSize]="pageSizeOptions[0]" [pageSize]="pageSizeOptions[0]"
[pageSizeOptions]="pageSizeOptions" [pageSizeOptions]="pageSizeOptions"
(page)="lastPageEvent = $event" (page)="lastPageEvent = $event"

View File

@ -58,4 +58,21 @@ export class ImagesComponent implements OnInit, AfterViewInit {
this.logger.error('loadImage', i, id, err); this.logger.error('loadImage', i, id, err);
}); });
} }
filterOnlyNewestImageVersion() {
return this.images.filter(image => !image.previous);
}
getImageIndex(image: ImageMetadata) {
return this.images.findIndex(img => image === img);
}
getRelatedImageMeta(image: ImageMetadata, images: ImageMetadata[] = []) {
const found = this.images.find(im => im.previous === image.identifier);
if (found) {
return this.getRelatedImageMeta(found, images.concat(found));
} else {
return images;
}
}
} }

View File

@ -6,7 +6,7 @@
</span> </span>
</h1> </h1>
<mat-tab-group *ngIf="images"> <mat-tab-group *ngIf="storageHealth; else loading">
<mat-tab label="Images"> <mat-tab label="Images">
<app-images [images]="images" (reload)="loadImages()"></app-images> <app-images [images]="images" (reload)="loadImages()"></app-images>
</mat-tab> </mat-tab>
@ -14,3 +14,7 @@
<app-map [images]="images"></app-map> <app-map [images]="images"></app-map>
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
<ng-template #loading>
Loading ...
</ng-template>

View File

@ -21,6 +21,7 @@ export interface ImageMetadata {
image_b64?: string; image_b64?: string;
tag?: string; tag?: string;
version?: string; version?: string;
previous?: string;
} }
export interface GetImageResponse { export interface GetImageResponse {

View File

@ -4,7 +4,7 @@ import requests
import json import json
import time import time
from datetime import datetime from datetime import datetime
import sys, getopt
def build_post_payload(identifier, metadata_payload, file_payload): def build_post_payload(identifier, metadata_payload, file_payload):
return { return {
@ -198,17 +198,32 @@ metadata_path = metadata_folder + os.path.sep + metadata_file
image_folder = "." + os.path.sep + "images" image_folder = "." + os.path.sep + "images"
try:
opts, args = getopt.getopt(sys.argv[1:],"hm:i:",["metadata=","imagefolder="])
for opt, arg in opts:
if opt == '-h':
print('iot_client.py -m <metadata-filepath> -i <image-folder>')
sys.exit()
elif opt in ("-m", "--metadata"):
metadata_path = arg
elif opt in ("-i", "--imagefolder"):
image_folder = arg
except getopt.GetoptError:
print('iot_client.py -m <metadata-filepath> -i <image-folder>')
if (os.path.isfile(metadata_path)): if (os.path.isfile(metadata_path)):
print("Loading metadata to memory from " + metadata_path) print("Loading metadata to memory from " + metadata_path)
metadata = sorted(json.load(open(metadata_file, "r")), metadata = sorted(json.load(open(metadata_path, "r")),
key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)'))
else: else:
print("Default metadata_file not found.") print("Metadata_file '" + str(metadata_path) + "' not found.")
if (os.path.isdir(image_folder)): if (os.path.isdir(image_folder)):
print("Image folder set to " + image_folder) print("Image folder set to " + image_folder)
else: else:
print("Default image folder not found.") print("Image folder '" + str(image_folder) + "' not found.")
def print_cursor(): def print_cursor():
@ -294,7 +309,7 @@ while (command.lower() not in ["exit", "quit", "end"]):
print("Error: No file on path " + path) print("Error: No file on path " + path)
continue continue
print("Loading metadata to memory from " + path) print("Loading metadata to memory from " + path)
metadata = sorted(json.load(open(metadata_file, "r")), metadata = sorted(json.load(open(path, "r")),
key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)'))
index = 0 index = 0