diff --git a/android/app/build.gradle b/android/app/build.gradle index 0a094fa..45197c6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.mermsemr.providers" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1033 - versionName "1.0.33" + versionCode 1034 + versionName "1.0.34" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 837cd45..2519da4 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -12,7 +12,7 @@ dependencies { } - +apply from: "../../node_modules/cordova-plugin-qrscanner/src/android/qrscanner.gradle" if (hasProperty('postBuildExtras')) { postBuildExtras() diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml index 813a010..8f9dbf3 100644 --- a/android/app/src/main/res/xml/config.xml +++ b/android/app/src/main/res/xml/config.xml @@ -19,5 +19,9 @@ + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5a6e626..59c299a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2401,6 +2401,14 @@ "@types/cordova": "^0.0.34" } }, + "@ionic-native/qr-scanner": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.30.0.tgz", + "integrity": "sha512-NOyj1NAMrbwDwiVWZ2hD5b2RsEwyKwRtI3D6fZiuoecakaGGNC4qjk+LdGqXdps7Uf3UF6OLnptX2p+LUFSlbA==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, "@ionic-native/splash-screen": { "version": "5.29.0", "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.29.0.tgz", @@ -4636,6 +4644,15 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.2.tgz", "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==" }, + "cordova-plugin-qrscanner": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-qrscanner/-/cordova-plugin-qrscanner-3.0.1.tgz", + "integrity": "sha512-xrwOP3nD+VmRSiV0w7chZ5PLw2YwpI9vtLdeoGNYLLzmmjjYbyIof+x9vOEOgjtwrg9S61rukmOZhQAmkzaosA==", + "requires": { + "qrcode-reader": "^1.0.4", + "webrtc-adapter": "^3.1.4" + } + }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -11085,6 +11102,11 @@ "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, + "qrcode-reader": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz", + "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==" + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -11786,6 +11808,11 @@ } } }, + "sdp": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-1.5.4.tgz", + "integrity": "sha1-jgOPbdsUvXZa4fS1IW4SCUUR4NA=" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -14731,6 +14758,14 @@ "webpack-sources": "^1.3.0" } }, + "webrtc-adapter": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-3.4.3.tgz", + "integrity": "sha1-tjYGLu6abvFYrNDYUBtnhDS1bxY=", + "requires": { + "sdp": "^1.5.0" + } + }, "websocket-driver": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", diff --git a/package.json b/package.json index 0b4f76f..de501a1 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@ionic-native/core": "^5.0.0", "@ionic-native/device": "^5.29.0", "@ionic-native/http": "^5.29.0", + "@ionic-native/qr-scanner": "^5.30.0", "@ionic-native/splash-screen": "^5.0.0", "@ionic-native/status-bar": "^5.0.0", "@ionic/angular": "^5.4.4", @@ -33,6 +34,7 @@ "cordova-plugin-calendar": "^5.1.5", "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", + "cordova-plugin-qrscanner": "^3.0.1", "ionic2-calendar": "^0.6.6", "rxjs": "^6.5.5", "tslib": "^2.0.0", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 756b5a9..e0ca083 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -15,6 +15,7 @@ import { HttpClientModule } from '@angular/common/http' import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { NgCalendarModule } from 'ionic2-calendar'; +import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner/ngx'; @NgModule({ @@ -27,6 +28,7 @@ import { NgCalendarModule } from 'ionic2-calendar'; providers: [ StatusBar, SplashScreen, + QRScanner, Calendar, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], diff --git a/src/app/merms-dash/merms-dash.page.html b/src/app/merms-dash/merms-dash.page.html index a140970..d366e8d 100644 --- a/src/app/merms-dash/merms-dash.page.html +++ b/src/app/merms-dash/merms-dash.page.html @@ -37,8 +37,8 @@ -

{{type.appt}} {{type.gender}} , {{type.age}} yrs

-

{{type.firstname}} {{type.lastname}}

+

{{type.appt}}

+

{{type.firstname}} {{type.lastname}} -{{type.gender}} {{type.age}} yrs

{{type.reason}}

diff --git a/src/app/modal/add-practice/add-practice.page.html b/src/app/modal/add-practice/add-practice.page.html index d9d23e4..3f5ae97 100644 --- a/src/app/modal/add-practice/add-practice.page.html +++ b/src/app/modal/add-practice/add-practice.page.html @@ -1,35 +1,35 @@ - Add Practice + Add Practice - Close + Close - + - - + + - + - + Add - - Go to your account at https://provider.mermsemr.com and enable your app access with your needed permissions. + or +
+ Scan QR Code
- Close -
+ \ No newline at end of file diff --git a/src/app/modal/add-practice/add-practice.page.ts b/src/app/modal/add-practice/add-practice.page.ts index 86e9d2e..304cc7d 100644 --- a/src/app/modal/add-practice/add-practice.page.ts +++ b/src/app/modal/add-practice/add-practice.page.ts @@ -1,5 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { ModalController } from '@ionic/angular'; +import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner/ngx'; @Component({ selector: 'app-add-practice', @@ -8,11 +9,11 @@ import { ModalController } from '@ionic/angular'; }) export class AddPracticePage implements OnInit { - constructor(private modalCtrl:ModalController) { } + constructor(private modalCtrl: ModalController, private qrScanner: QRScanner) { } ngOnInit() { } - + dismiss() { // using the injected ModalController this page // can "dismiss" itself and optionally pass back data @@ -20,4 +21,33 @@ export class AddPracticePage implements OnInit { 'dismissed': true }); } + + goScannerStart() { + // Optionally request the permission early + this.qrScanner.prepare() + .then((status: QRScannerStatus) => { + if (status.authorized) { + // camera permission was granted + + + // start scanning + let scanSub = this.qrScanner.scan().subscribe((text: string) => { + console.log('Scanned something', text); + + this.qrScanner.hide(); // hide camera preview + scanSub.unsubscribe(); // stop scanning + }); + + } else if (status.denied) { + // camera permission was permanently denied + // you must use QRScanner.openSettings() method to guide the user to the settings page + // then they can grant the permission from there + } else { + // permission was denied, but not permanently. You can ask for permission again at a later time. + } + }) + .catch((e: any) => console.log('Error is', e)); + + } + } diff --git a/src/assets/imgs/merms-addpractice.jpg b/src/assets/imgs/merms-addpractice.jpg new file mode 100644 index 0000000..35cfe27 Binary files /dev/null and b/src/assets/imgs/merms-addpractice.jpg differ