diff --git a/frontend/src/app/component/file-uploader/file-uploader.component.html b/frontend/src/app/component/file-uploader/file-uploader.component.html index e431d92..a3491e6 100644 --- a/frontend/src/app/component/file-uploader/file-uploader.component.html +++ b/frontend/src/app/component/file-uploader/file-uploader.component.html @@ -12,34 +12,46 @@ * Name - + [(ngModel)]="meta.name"> + Tag - + [(ngModel)]="meta.tag"> + * Longitude - + [(ngModel)]="meta.longitude"> + * Latitude - + [(ngModel)]="meta.latitude"> + Metadata: filename: {{image.filename}} - tag: {{image.tag}} latitude: {{image.latitude}} longitude: {{image.longitude}} version: {{image.version}} @@ -64,13 +63,28 @@ [meta]=image (reload)="this.reload.emit()" > - + + + 0"> + + Previous version meta + + + + filename: {{imageMeta.filename}} + latitude: {{imageMeta.latitude}} + longitude: {{imageMeta.longitude}} + version: {{imageMeta.version}} + + + + - 0" - [length]="images.length" + 0" + [length]="filterOnlyNewestImageVersion().length" [pageSize]="pageSizeOptions[0]" [pageSizeOptions]="pageSizeOptions" (page)="lastPageEvent = $event" diff --git a/frontend/src/app/component/images/images.component.ts b/frontend/src/app/component/images/images.component.ts index ff455f1..80cf592 100644 --- a/frontend/src/app/component/images/images.component.ts +++ b/frontend/src/app/component/images/images.component.ts @@ -58,4 +58,21 @@ export class ImagesComponent implements OnInit, AfterViewInit { 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; + } + } } diff --git a/frontend/src/app/component/landing/landing.component.html b/frontend/src/app/component/landing/landing.component.html index 902ec53..66ca53c 100644 --- a/frontend/src/app/component/landing/landing.component.html +++ b/frontend/src/app/component/landing/landing.component.html @@ -6,7 +6,7 @@ - + @@ -14,3 +14,7 @@ + + + Loading ... + diff --git a/frontend/src/app/interfaces/interface.ts b/frontend/src/app/interfaces/interface.ts index f132afe..668cd8b 100644 --- a/frontend/src/app/interfaces/interface.ts +++ b/frontend/src/app/interfaces/interface.ts @@ -21,6 +21,7 @@ export interface ImageMetadata { image_b64?: string; tag?: string; version?: string; + previous?: string; } export interface GetImageResponse { diff --git a/iotclient/iot_client.py b/iotclient/iot_client.py index ff35c12..2ad6536 100644 --- a/iotclient/iot_client.py +++ b/iotclient/iot_client.py @@ -4,7 +4,7 @@ import requests import json import time from datetime import datetime - +import sys, getopt def build_post_payload(identifier, metadata_payload, file_payload): return { @@ -198,17 +198,32 @@ metadata_path = metadata_folder + os.path.sep + metadata_file 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 -i ') + 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 -i ') + + + if (os.path.isfile(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)')) else: - print("Default metadata_file not found.") + print("Metadata_file '" + str(metadata_path) + "' not found.") if (os.path.isdir(image_folder)): print("Image folder set to " + image_folder) else: - print("Default image folder not found.") + print("Image folder '" + str(image_folder) + "' not found.") def print_cursor(): @@ -294,7 +309,7 @@ while (command.lower() not in ["exit", "quit", "end"]): print("Error: No file on path " + path) continue 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)')) index = 0
filename: {{image.filename}}
tag: {{image.tag}}
latitude: {{image.latitude}}
longitude: {{image.longitude}}
version: {{image.version}}
filename: {{imageMeta.filename}}
latitude: {{imageMeta.latitude}}
longitude: {{imageMeta.longitude}}
version: {{imageMeta.version}}