diff --git a/config.xml b/config.xml index bb9f1a2..44977cc 100644 --- a/config.xml +++ b/config.xml @@ -30,6 +30,18 @@ + + + + + + + + + + + + @@ -65,14 +77,9 @@ - - - - - @@ -89,4 +96,11 @@ + + + + + + + diff --git a/package.json b/package.json index 4f72ddb..54115db 100644 --- a/package.json +++ b/package.json @@ -12,20 +12,22 @@ "ionic:serve": "ionic-app-scripts serve" }, "dependencies": { - "@angular/common": "4.1.3", - "@angular/compiler": "4.1.3", - "@angular/compiler-cli": "4.1.3", - "@angular/core": "4.1.3", - "@angular/forms": "4.1.3", - "@angular/http": "4.1.3", - "@angular/platform-browser": "4.1.3", - "@angular/platform-browser-dynamic": "4.1.3", + "@angular/common": "^4.1.3", + "@angular/compiler": "^4.1.3", + "@angular/compiler-cli": "^4.1.3", + "@angular/core": "^4.1.3", + "@angular/forms": "^4.1.3", + "@angular/http": "^4.1.3", + "@angular/platform-browser": "^4.1.3", + "@angular/platform-browser-dynamic": "^4.1.3", "@ionic-native/call-number": "^4.2.1", - "@ionic-native/camera": "^4.1.0", - "@ionic-native/core": "3.12.1", + "@ionic-native/camera": "^4.5.3", + "@ionic-native/core": "^4.2.0", "@ionic-native/email-composer": "^4.2.1", "@ionic-native/facebook": "^4.5.2", + "@ionic-native/firebase": "^4.5.3", "@ionic-native/google-maps": "^4.1.0", + "@ionic-native/http": "^4.5.3", "@ionic-native/launch-navigator": "^4.5.2", "@ionic-native/network": "^4.1.0", "@ionic-native/splash-screen": "3.12.1", @@ -34,29 +36,33 @@ "@ionic/storage": "^2.0.1", "@types/cordova-plugin-network-information": "0.0.3", "call-number": "^1.0.1", - "cordova-android": "^6.2.3", + "cordova-android": "~7.0.0", "cordova-plugin-actionsheet": "^2.3.3", + "cordova-plugin-add-swift-support": "^1.7.1", + "cordova-plugin-advanced-http": "^1.9.1", "cordova-plugin-camera": "^2.4.1", - "cordova-plugin-compat": "^1.1.0", - "cordova-plugin-console": "^1.0.5", - "cordova-plugin-device": "^1.1.4", - "cordova-plugin-dialogs": "^2.0.0", - "cordova-plugin-email-composer": "^0.8.7", - "cordova-plugin-file": "^4.3.3", - "cordova-plugin-file-transfer": "^1.6.3", + "cordova-plugin-compat": "^1.2.0", + "cordova-plugin-console": "^1.1.0", + "cordova-plugin-device": "^1.1.7", + "cordova-plugin-dialogs": "^2.0.1", + "cordova-plugin-email-composer": "^0.8.14", + "cordova-plugin-facebook4": "git+https://github.com/amritk/cordova-plugin-facebook4.git", + "cordova-plugin-file": "^6.0.1", + "cordova-plugin-file-transfer": "^1.7.1", "cordova-plugin-geolocation": "^2.4.3", - "cordova-plugin-network-information": "^1.3.3", - "cordova-plugin-splashscreen": "^4.0.3", - "cordova-plugin-statusbar": "^2.2.3", - "cordova-plugin-whitelist": "^1.3.2", - "cordova-sqlite-storage": "^2.0.4", + "cordova-plugin-ionic": "^1.1.9", + "cordova-plugin-network-information": "^1.3.4", + "cordova-plugin-splashscreen": "^4.1.0", + "cordova-plugin-statusbar": "^2.4.1", + "cordova-plugin-whitelist": "^1.3.3", + "cordova-sqlite-storage": "^2.2.0", "ionic-angular": "3.5.3", "ionic-native": "^2.9.0", "ionic-plugin-keyboard": "^2.2.1", "ionicons": "3.0.0", "rxjs": "5.4.0", "sw-toolbox": "3.6.0", - "uk.co.workingedge.phonegap.plugin.launchnavigator": "^4.1.2", + "uk.co.workingedge.phonegap.plugin.launchnavigator": "^4.1.3", "zone.js": "0.8.12" }, "devDependencies": { @@ -81,7 +87,19 @@ "ionic-plugin-keyboard": {}, "cordova-plugin-file-transfer": {}, "cordova-plugin-email-composer": {}, - "uk.co.workingedge.phonegap.plugin.launchnavigator": {} + "uk.co.workingedge.phonegap.plugin.launchnavigator": {}, + "cordova-plugin-advanced-http": {}, + "cordova-plugin-ionic": { + "APP_ID": "c62d0853", + "CHANNEL_NAME": "Master", + "UPDATE_METHOD": "background", + "UPDATE_API": "https://api.ionicjs.com", + "MAX_STORE": "2" + }, + "cordova-plugin-facebook4": { + "APP_ID": "292526344573042", + "APP_NAME": "forsightsociallogin" + } }, "platforms": [ "android" diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 1cd32f3..53a58d2 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -2,7 +2,7 @@ import { Component, ViewChild } from '@angular/core'; import { Nav, Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; - +import { LoadingController } from 'ionic-angular'; import { HomePage } from '../pages/home/home'; import { NewsPage } from '../pages/news/news'; import { SearchPage } from '../pages/search/search'; @@ -10,19 +10,25 @@ import { SearchBySpecPage } from '../pages/search/searchBySpec'; import { MapPage } from '../pages/map/map'; import { UserPage } from '../pages/user/user'; import {PhotoUploadPage} from '../pages/photoUpload/photoUpload'; - +import { Camera, CameraOptions } from '@ionic-native/camera'; +import { ToastController } from 'ionic-angular'; import { LoginPage } from '../pages/login/login'; import { OptometristListPage } from '../pages/optometristList/optometristList'; - +import { AlertController } from 'ionic-angular'; +import { HttpClient } from '@angular/common/http'; import {Http} from '@angular/http'; - +import {FaceDetectionResultPage} from '../pages/face-detection-result/face-detection-result'; +import {LensRecommenderPage} from '../pages/lens-recommender/lens-recommender'; @Component({ templateUrl: 'app.html' }) export class MyApp { @ViewChild(Nav) nav: Nav; - + public photos:any; + public base64Image: string; rootPage: any = LoginPage; + + // rootPag: any = OptometristListPage; // rootPage: any = PhotoUploadPage; @@ -30,7 +36,15 @@ export class MyApp { baseUrl: string; pages: Array<{ title: string, component: any, icon: string }>; - constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen, private http: Http) { + constructor(public toastCtrl: ToastController, + public alertCtrl: AlertController, + public loadingCtrl: LoadingController, + public httpClient: HttpClient, + private camera: Camera, + public platform: Platform, + public statusBar: StatusBar, + public splashScreen: SplashScreen, + private http: Http) { this.initializeApp(); this.baseUrl = 'http://oapp.delhinerds.com/logout/'; @@ -43,7 +57,8 @@ export class MyApp { { title: 'NearMe', component: MapPage, icon: 'ios-locate-outline', }, { title: 'Profile', component: UserPage, icon: 'md-person', }, { title: 'Logout', component: LoginPage, icon: 'md-log-out', }, - + {title:'Specs Recommender', component: FaceDetectionResultPage, icon: 'glasses'}, + {title:'Lens Recommender', component: LensRecommenderPage, icon: 'eye' } ]; } @@ -57,6 +72,9 @@ export class MyApp { }); } + + + openPage(page) { if (page.component == LoginPage) { return this.http.get(this.baseUrl) @@ -75,4 +93,8 @@ export class MyApp { this.nav.push(page.component); } } + + + + } diff --git a/src/app/app.html b/src/app/app.html index 1cae21c..9b6ebcc 100644 --- a/src/app/app.html +++ b/src/app/app.html @@ -8,10 +8,10 @@ - {{p.title}} + diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d44f6a3..8f86e18 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,11 +4,12 @@ import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { HttpModule } from '@angular/http'; import { CallNumber } from '@ionic-native/call-number'; import { EmailComposer } from '@ionic-native/email-composer'; +import { HttpClientModule } from '@angular/common/http'; + import { MyApp } from './app.component'; import { LoginPage } from '../pages/login/login'; import { SignupPage } from '../pages/signup/signup'; - import { HomePage } from '../pages/home/home'; import { NewsPage } from '../pages/news/news'; import { DetailsPage } from '../pages/details/details'; @@ -16,6 +17,8 @@ import { UserPage } from '../pages/user/user'; import { EditUserPage } from '../pages/user/editUser'; import { OptometristPage } from '../pages/optometrist/optometrist'; +import {FaceDetectionResultPage} from '../pages/face-detection-result/face-detection-result'; +import {LensRecommenderPage} from '../pages/lens-recommender/lens-recommender'; import { SearchPage } from '../pages/search/search'; import { SearchBySpecPage } from '../pages/search/searchBySpec'; @@ -71,12 +74,15 @@ import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook'; MapPage, OptometristListPage, DirectionsPage, + FaceDetectionResultPage, MapDirPage, FilterPipe, + LensRecommenderPage ], imports: [ BrowserModule, HttpModule, + HttpClientModule, IonicModule.forRoot(MyApp), IonicStorageModule.forRoot() ], @@ -100,6 +106,8 @@ import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook'; OptometristListPage, DirectionsPage, MapDirPage, + FaceDetectionResultPage, + LensRecommenderPage ], providers: [ Facebook, diff --git a/src/app/services/optometrist.service.ts b/src/app/services/optometrist.service.ts index 299a088..4afa5c8 100644 --- a/src/app/services/optometrist.service.ts +++ b/src/app/services/optometrist.service.ts @@ -8,7 +8,7 @@ export class OptometristService { http: any; baseUrl: string; baseUrl2: string; - + baseUrl3: string; optometrists: any; workplaces: any; @@ -26,7 +26,7 @@ export class OptometristService { this.getOptometristsInit(); this.getWorkplaceInit(); - + } getOptometristsInit() { diff --git a/src/assets/img/rbw110to180.png b/src/assets/img/rbw110to180.png new file mode 100644 index 0000000..2d5a0b0 Binary files /dev/null and b/src/assets/img/rbw110to180.png differ diff --git a/src/assets/img/rbw80to110.png b/src/assets/img/rbw80to110.png new file mode 100644 index 0000000..8a3508a Binary files /dev/null and b/src/assets/img/rbw80to110.png differ diff --git a/src/assets/img/rgt180.png b/src/assets/img/rgt180.png new file mode 100644 index 0000000..9c64d83 Binary files /dev/null and b/src/assets/img/rgt180.png differ diff --git a/src/assets/logo.png b/src/assets/logo.png index da4fe25..bda846f 100644 Binary files a/src/assets/logo.png and b/src/assets/logo.png differ diff --git a/src/assets/logo2.png b/src/assets/logo2.png new file mode 100644 index 0000000..3fd60b8 Binary files /dev/null and b/src/assets/logo2.png differ diff --git a/src/pages/directions/directions.ts b/src/pages/directions/directions.ts index 0fba4e1..aa33112 100644 --- a/src/pages/directions/directions.ts +++ b/src/pages/directions/directions.ts @@ -18,6 +18,8 @@ export class DirectionsPage { lon: number; lat: number data: any; + optoLon:any; + optoLat:any; constructor(params: NavParams, public nav:NavController) { this.optometrist = params.get('item'); this.lon = params.get('lon'); diff --git a/src/pages/face-detection-result/face-detection-result.html b/src/pages/face-detection-result/face-detection-result.html new file mode 100644 index 0000000..2825d7b --- /dev/null +++ b/src/pages/face-detection-result/face-detection-result.html @@ -0,0 +1,57 @@ + + + + Forsight + + + + + + + + + + + Likelihood + + + + + {{ visionResult.detectionConfidence }} + Detection Confidence + + + {{ visionResult.angerLikelihood }} + Anger + + + {{ visionResult.blurredLikelihood }} + Blurred + + + {{ visionResult.headwearLikelihood }} + Headwear + + + {{ visionResult.joyLikelihood }} + Joy + + + {{ visionResult.sorrowLikelihood }} + Sorrow + + + {{ visionResult.surpriseLikelihood }} + Surprise + + + {{ visionResult.underExposedLikelihood }} + Underexposure + + + + + + + + diff --git a/src/pages/face-detection-result/face-detection-result.module.ts b/src/pages/face-detection-result/face-detection-result.module.ts new file mode 100644 index 0000000..73a9c41 --- /dev/null +++ b/src/pages/face-detection-result/face-detection-result.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { FaceDetectionResultPage } from './face-detection-result'; + +@NgModule({ + declarations: [ + FaceDetectionResultPage, + ], + imports: [ + IonicPageModule.forChild(FaceDetectionResultPage), + ], + exports: [ + FaceDetectionResultPage + ] +}) +export class FaceDetectionResultPageModule {} diff --git a/src/pages/face-detection-result/face-detection-result.scss b/src/pages/face-detection-result/face-detection-result.scss new file mode 100644 index 0000000..981ce4d --- /dev/null +++ b/src/pages/face-detection-result/face-detection-result.scss @@ -0,0 +1,3 @@ +page-face-detection-result { + +} diff --git a/src/pages/face-detection-result/face-detection-result.ts b/src/pages/face-detection-result/face-detection-result.ts new file mode 100644 index 0000000..3edf6ee --- /dev/null +++ b/src/pages/face-detection-result/face-detection-result.ts @@ -0,0 +1,134 @@ +import { Component } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Camera, CameraOptions } from '@ionic-native/camera'; +import { LoadingController } from 'ionic-angular'; +import { AlertController } from 'ionic-angular'; +import { ToastController } from 'ionic-angular'; + +@Component({ + selector: 'page-home', + templateUrl: 'face-detection-result.html' +}) +export class FaceDetectionResultPage { + + public ROOT_URL = 'https://vision.googleapis.com'; + public API_KEY = 'AIzaSyBwzIlJsFclNrSOhlneKqkM2km4NgBvxFc'; // YOUR CLOUD PLATFORM API KEY + public visionRequest = { + "requests": [{ + "image": { + "content": "" + }, + "features": [{ + "type": "FACE_DETECTION", + "maxResults": 10 + }] + }] + }; + public visionResult = { + angerLikelihood: null, + blurredLikelihood: null, + headwearLikelihood: null, + joyLikelihood: null, + sorrowLikelihood: null, + surpriseLikelihood: null, + underExposedLikelihood: null, + detectionConfidence: null, + + }; + public imageResult = 'https://i.imgur.com/hyRulHk.gif'; + + constructor( + public http: HttpClient, + public camera: Camera, + public loadingCtrl: LoadingController, + public alertCtrl: AlertController, + public toastCtrl: ToastController + ) {} + + capture() { + const options: CameraOptions = { + quality: 100, + destinationType: this.camera.DestinationType.DATA_URL, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE + }; + + let loader = this.loadingCtrl.create({ + content: "Processing..." + }); + + loader.present(); // show loading component + + this.camera.getPicture(options).then((imageData) => { + this.visionRequest.requests[0].image.content = imageData; + this.imageResult = 'data:image/jpeg;base64,' + imageData; + this.http.post(`${this.ROOT_URL}/v1/images:annotate?key=${this.API_KEY}`, this.visionRequest) + .subscribe((data: any) => { + loader.dismiss(); // hide loading component + var result = data.responses[0]; + if(Object.keys(result).length === 0) { + this.reset(); + this.presentToast('Error processing image.'); + } else { + const faceAnnotations = result.faceAnnotations[0]; + // const imagePropertiesAnnotations = result.imagePropertiesAnnotation.dominantColors.colors[0]; + this.presentToast('Image successfully processed.'); + this.visionResult = { + angerLikelihood: faceAnnotations.angerLikelihood, + blurredLikelihood: faceAnnotations.blurredLikelihood, + headwearLikelihood: faceAnnotations.headwearLikelihood, + joyLikelihood: faceAnnotations.joyLikelihood, + sorrowLikelihood: faceAnnotations.sorrowLikelihood, + surpriseLikelihood: faceAnnotations.surpriseLikelihood, + underExposedLikelihood: faceAnnotations.underExposedLikelihood, + detectionConfidence: faceAnnotations.detectionConfidence, + + }; + } + }, (err) => { + loader.dismiss(); // hide loading component + this.reset(); + this.showAlert('Vision API Request Error.'); + console.log("error occured"); + }) + }, (err) => { + loader.dismiss(); // hide loading component + this.reset(); + this.showAlert('Camera Error Occured.'); + console.log(err); + }); + } + + showAlert(message) { + let alert = this.alertCtrl.create({ + title: 'Ionic Vision', + subTitle: message, + buttons: ['OK'], + cssClass: 'alertDanger' + }); + alert.present(); + } + + presentToast(message) { + let toast = this.toastCtrl.create({ + message, + duration: 3000 + }); + toast.present(); + } + + reset() { + this.visionResult = { + angerLikelihood: null, + blurredLikelihood: null, + headwearLikelihood: null, + joyLikelihood: null, + sorrowLikelihood: null, + surpriseLikelihood: null, + underExposedLikelihood: null, + detectionConfidence: null, + + }; + this.imageResult = 'https://i.imgur.com/hyRulHk.gif'; + } +} diff --git a/src/pages/home/home.html b/src/pages/home/home.html index 4457b57..9d086a0 100644 --- a/src/pages/home/home.html +++ b/src/pages/home/home.html @@ -48,6 +48,21 @@ News + + + + Specs Recommender + + + + + + + Lens Recommender + + + + diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 8b2148e..ff8ca06 100644 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -5,7 +5,8 @@ import {UserPage} from '../user/user'; import {SearchPage} from '../search/search'; import {SearchBySpecPage} from '../search/searchBySpec'; import {MapPage} from '../map/map'; - +import {FaceDetectionResultPage} from '../face-detection-result/face-detection-result'; +import {LensRecommenderPage} from '../lens-recommender/lens-recommender'; @Component({ selector: 'page-home', templateUrl: 'home.html' @@ -29,5 +30,11 @@ export class HomePage { searchOptoBySpec(){ this.navCtrl.push(SearchBySpecPage) } + detectFace(){ + this.navCtrl.push(FaceDetectionResultPage) + } +recommendLens(){ +this.navCtrl.push(LensRecommenderPage) +} } diff --git a/src/pages/lens-recommender/lens-recommender.html b/src/pages/lens-recommender/lens-recommender.html new file mode 100644 index 0000000..982b403 --- /dev/null +++ b/src/pages/lens-recommender/lens-recommender.html @@ -0,0 +1,29 @@ + + + + Forsight + + + + + + + + + + + Recommended Lens + + + + + + + + + + + + + + diff --git a/src/pages/lens-recommender/lens-recommender.module.ts b/src/pages/lens-recommender/lens-recommender.module.ts new file mode 100644 index 0000000..e96c788 --- /dev/null +++ b/src/pages/lens-recommender/lens-recommender.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { LensRecommenderPage } from './lens-recommender'; + +@NgModule({ + declarations: [ + LensRecommenderPage, + ], + imports: [ + IonicPageModule.forChild(LensRecommenderPage), + ], + exports: [ + LensRecommenderPage + ] +}) +export class LensRecommenderPageModule {} diff --git a/src/pages/lens-recommender/lens-recommender.scss b/src/pages/lens-recommender/lens-recommender.scss new file mode 100644 index 0000000..7a344d3 --- /dev/null +++ b/src/pages/lens-recommender/lens-recommender.scss @@ -0,0 +1,3 @@ +page-lens-recommender { + +} diff --git a/src/pages/lens-recommender/lens-recommender.ts b/src/pages/lens-recommender/lens-recommender.ts new file mode 100644 index 0000000..aca934f --- /dev/null +++ b/src/pages/lens-recommender/lens-recommender.ts @@ -0,0 +1,137 @@ +import { Component } from '@angular/core'; +import { NavController, NavParams } from 'ionic-angular'; +import { HttpClient } from '@angular/common/http'; +import { Camera, CameraOptions } from '@ionic-native/camera'; +import { LoadingController } from 'ionic-angular'; +import { AlertController } from 'ionic-angular'; +import { ToastController } from 'ionic-angular'; + +/** + * Generated class for the LensRecommenderPage page. + * + * See http://ionicframework.com/docs/components/#navigation for more info + * on Ionic pages and navigation. + */ + +@Component({ + selector: 'page-lens-recommender', + templateUrl: 'lens-recommender.html', +}) +export class LensRecommenderPage { + public ROOT_URL = 'https://vision.googleapis.com'; + public API_KEY = 'AIzaSyBwzIlJsFclNrSOhlneKqkM2km4NgBvxFc'; // YOUR CLOUD PLATFORM API KEY + public visionRequest = { + "requests": [{ + "image": { + "content": "" + }, + "features": [{ + "type": "IMAGE_PROPERTIES", + "maxResults": 10 + }] + }] + }; + public dominantColors: number; + public recommendedLens: string; + + public imageResult = 'https://i.imgur.com/hyRulHk.gif'; + + constructor(public http: HttpClient, + public camera: Camera, + public loadingCtrl: LoadingController, + public alertCtrl: AlertController, + public toastCtrl: ToastController) { + } + + ionViewDidLoad() { + console.log('ionViewDidLoad LensRecommenderPage'); + } + + capture() { + const options: CameraOptions = { + quality: 100, + destinationType: this.camera.DestinationType.DATA_URL, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE + }; + + let loader = this.loadingCtrl.create({ + content: "Processing..." + }); + + loader.present(); // show loading component + + this.camera.getPicture(options).then((imageData) => { + this.visionRequest.requests[0].image.content = imageData; + this.imageResult = 'data:image/jpeg;base64,' + imageData; + this.http.post(`${this.ROOT_URL}/v1/images:annotate?key=${this.API_KEY}`, this.visionRequest) + .subscribe((data: any) => { + loader.dismiss(); // hide loading component + var result = data.responses[0]; + if(Object.keys(result).length === 0) { + this.reset(); + this.presentToast('Error processing image.'); + } else { + const imagePropertiesAnnotations = result.imagePropertiesAnnotation.dominantColors.colors[0]; + this.presentToast('Image successfully processed.'); + this.dominantColors= imagePropertiesAnnotations.color.red; + if(this.dominantColors < 110) + { + this.recommendedLens='assets/img/rbw80to110.png'; + } + else if( this.dominantColors > 110 && this.dominantColors < 180 ) + { + this.recommendedLens='assets/img/rbw100to180.png'; + } + else + { + this.recommendedLens='assets/img/rgt180.png'; + } + } + }, (err) => { + loader.dismiss(); // hide loading component + this.reset(); + this.showAlert('Vision API Request Error.'); + console.log("error occured"); + }) + }, (err) => { + loader.dismiss(); // hide loading component + this.reset(); + this.showAlert('Camera Error Occured.'); + console.log(err); + }); + + + + + + + } + + showAlert(message) { + let alert = this.alertCtrl.create({ + title: 'Ionic Vision', + subTitle: message, + buttons: ['OK'], + cssClass: 'alertDanger' + }); + alert.present(); + } + + presentToast(message) { + let toast = this.toastCtrl.create({ + message, + duration: 3000 + }); + toast.present(); + } + + reset() { + + this.dominantColors= null; + + + this.imageResult = 'https://i.imgur.com/hyRulHk.gif'; + } + +} diff --git a/src/pages/lens-recommender/rgt180.png b/src/pages/lens-recommender/rgt180.png new file mode 100644 index 0000000..9c64d83 Binary files /dev/null and b/src/pages/lens-recommender/rgt180.png differ diff --git a/src/pages/login/login.html b/src/pages/login/login.html index ab1b264..6cdf031 100644 --- a/src/pages/login/login.html +++ b/src/pages/login/login.html @@ -23,7 +23,6 @@ search your opto {{errorMsg}} Log In - By logging in, you accept our Privacy Policy Signup OR
Detection Confidence
Anger
Blurred
Headwear
Joy
Sorrow
Surprise
Underexposure
{{errorMsg}}
By logging in, you accept our Privacy Policy