diff --git a/src/components/svg-icon.vue b/src/components/svg-icon.vue index 9a077ee..cac03dd 100644 --- a/src/components/svg-icon.vue +++ b/src/components/svg-icon.vue @@ -15,6 +15,7 @@ + @@ -40,7 +41,8 @@ 'thorax', 'abdomen', 'limbs', - 'head' + 'head', + 'photo-sample' ] return iconList.includes(value) } diff --git a/src/css/detect.css b/src/css/detect.css index 2cf1cd5..6b83363 100644 --- a/src/css/detect.css +++ b/src/css/detect.css @@ -111,6 +111,15 @@ max-width: 100px; } +.dialog-buttons { + align-items: center; +} + +.avn-dialog-button { + font-size: 17px; + align-self: center; +} + /*Additional styles for small format landscape orientation*/ @media (max-height: 450px) and (orientation: landscape) { .detect-grid { diff --git a/src/pages/detect.vue b/src/pages/detect.vue index 2e1657d..e934c22 100644 --- a/src/pages/detect.vue +++ b/src/pages/detect.vue @@ -94,8 +94,8 @@ - - + + @@ -286,6 +286,19 @@ this.videoAvailable = await this.openCamera(this.$refs.image_container) if (this.videoAvailable) { return } } + if (mode == 'sample') { + f7.dialog.create({ + title: 'Sample images', + buttons: [ + {text: 'Sample 1', close: true, onClick: () => this.getImage('sample1'), cssClass: 'avn-dialog-button'}, + {text: 'Sample 2', close: true, onClick: () => this.getImage('sample2'), cssClass: 'avn-dialog-button'}, + {text: 'Sample 3', close: true, onClick: () => this.getImage('sample3'), cssClass: 'avn-dialog-button'}, + {text: 'Cancel', close: true, color: 'red', cssClass: 'avn-dialog-button'} + ], + verticalButtons: true + }).open() + return + } this.$refs.image_chooser.click() }, onFail (message) { @@ -341,15 +354,22 @@ } else if (this.isCordova && this.imageLoadMode == "camera") { this.detecting = true resolve('data:image/jpg;base64,' + searchImage) - } else { - const searchImage = this.$refs.image_chooser.files[0] - this.$refs.image_chooser.value=[] - var reader = new FileReader() - reader.addEventListener("load", () => { - this.detecting = true - resolve(reader.result) + } + var reader = new FileReader() + reader.addEventListener("load", () => { + this.detecting = true + resolve(reader.result) + }) + if (this.imageLoadMode == 'sample') { + fetch(`../samples/${this.detectorName}-${searchImage}.jpeg`).then( resp => { + return resp.blob() + }).then(respBlob => { + reader.readAsDataURL(respBlob) }) - reader.readAsDataURL(searchImage) + } else { + const fileImage = this.$refs.image_chooser.files[0] + this.$refs.image_chooser.value=[] + reader.readAsDataURL(fileImage) } }) loadImage.then((imgData) => { diff --git a/src/pages/settings.vue b/src/pages/settings.vue index 375424e..dfb2f9f 100644 --- a/src/pages/settings.vue +++ b/src/pages/settings.vue @@ -18,6 +18,10 @@ Use mini ALVINN +
+ Enable demo mode + +
Use external server diff --git a/src/samples/thorax-sample1.jpeg b/src/samples/thorax-sample1.jpeg new file mode 100644 index 0000000..01f202e Binary files /dev/null and b/src/samples/thorax-sample1.jpeg differ diff --git a/src/samples/thorax-sample2.jpeg b/src/samples/thorax-sample2.jpeg new file mode 100644 index 0000000..0950cbf Binary files /dev/null and b/src/samples/thorax-sample2.jpeg differ diff --git a/src/samples/thorax-sample3.jpeg b/src/samples/thorax-sample3.jpeg new file mode 100644 index 0000000..feb4919 Binary files /dev/null and b/src/samples/thorax-sample3.jpeg differ