Start scan

This commit is contained in:
CHIEFSOFT\ameye
2023-09-16 06:21:15 -04:00
parent 9d5bdc8aa7
commit 47ea6ad851
10 changed files with 546 additions and 47 deletions
+3 -1
View File
@@ -26,4 +26,6 @@ npm install bn-ng-idle
npm install @capacitor-community/barcode-scanner
npx cap sync
https://github.com/capacitor-community/barcode-scanner
https://github.com/capacitor-community/barcode-scanner
ionic generate page startscan
+4
View File
@@ -214,6 +214,10 @@ const routes: Routes = [
path: 'familymember',
loadChildren: () => import('./pages/familymember/familymember.module').then(m => m.FamilymemberPageModule)
},
{
path: 'startscan',
loadChildren: () => import('./pages/startscan/startscan.module').then(m => m.StartscanPageModule)
},
];
@NgModule({
@@ -4,7 +4,7 @@
</div>
<div class="bg_image back_image" [style.backgroundImage]="'url(assets/images/jobinterest.jpg)'">
<ion-button (click)="startScan()">Scan Qr Code</ion-button>
<ion-button (click)="moveToStartScan()">Scan Qr Code</ion-button>
<div class="ion-padding">
<ion-icon slot="start" name="arrow-back" class="back" (click)="onBack()"></ion-icon>
+4 -45
View File
@@ -91,49 +91,8 @@ export class FamilyloginPage implements OnInit {
this.router.navigate(['login']);
}
async checkPermission() {
try {
// check or request permission
const status = await BarcodeScanner.checkPermission({ force: true });
if (status.granted) {
// the user granted permission
return true;
}
return false;
} catch(e) {
console.log(e);
}
}
scannedResult:any;
async startScan() {
try {
const permission = await this.checkPermission();
if(!permission) {
return;
}
await BarcodeScanner.hideBackground();
document.querySelector('body').classList.add('scanner-active');
this.content_visibility = 'hidden';
const result = await BarcodeScanner.startScan();
console.log(result);
BarcodeScanner.showBackground();
document.querySelector('body').classList.remove('scanner-active');
this.content_visibility = '';
if(result?.hasContent) {
this.scannedResult = result.content;
console.log(this.scannedResult);
}
} catch(e) {
console.log(e);
this.stopScan();
}
}
stopScan() {
BarcodeScanner.showBackground();
BarcodeScanner.stopScan();
document.querySelector('body').classList.remove('scanner-active');
this.content_visibility = '';
}
moveToStartScan(){
this.router.navigate(['startscan']);
}
}
@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { StartscanPage } from './startscan.page';
const routes: Routes = [
{
path: '',
component: StartscanPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class StartscanPageRoutingModule {}
@@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { StartscanPageRoutingModule } from './startscan-routing.module';
import { StartscanPage } from './startscan.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
StartscanPageRoutingModule
],
declarations: [StartscanPage]
})
export class StartscanPageModule {}
@@ -0,0 +1,12 @@
<ion-content>
</ion-content>
<ion-footer>
<ion-toolbar>
<div class="button" (click)="onBack()">
<ion-label class="text">Stop Scan</ion-label>
</div>
</ion-toolbar>
</ion-footer>
+385
View File
@@ -0,0 +1,385 @@
ion-content {
.back_image {
width: 100%;
height: 230px;
.back {
font-size: 25px;
color: white;
}
}
.flex {
display: flex;
justify-content: space-between;
align-items: center;
ion-icon {
font-size: 22px;
}
}
.row {
display: flex;
align-items: center;
margin-top: 10px;
.bg_text {
color: var(--ion-color-primary);
background: #dfe1f3;
font-size: 12px;
padding: 2px 5px;
border-radius: 5px;
margin-right: 10px;
}
.rate {
display: flex;
align-items: center;
.review {
margin-left: 5px;
}
}
}
.color_text {
margin-top: 10px;
font-size: 22px;
font-family: 'semi-bold';
color: var(--ion-color-primary);
}
.items {
display: flex;
justify-content: space-between;
margin-top: 10px;
margin-bottom: 20px;
border-bottom: 1px solid lightgrey;
padding-bottom: 10px;
.stud {
display: flex;
align-items: center;
ion-icon {
margin-right: 5px;
}
ion-label {
color: grey;
}
}
}
.about {
margin-top: 10px;
.head_text {
font-size: 18px;
font-family: 'semi-bold';
margin-bottom: 10px;
}
.mentor {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
.left {
display: flex;
.men_image {
height: 50px;
width: 50px;
border-radius: 100%;
}
.bold {
font-family: 'semi-bold';
}
.grey {
color: grey;
font-size: 14px;
}
}
ion-icon {
font-size: 25px;
}
}
.description {
color: grey;
margin-bottom: 5px;
}
}
.lesson {
margin-top: 20px;
.bold {
font-family: 'semi-bold';
}
.color {
color: var(--ion-color-primary);
}
.grey {
color: grey;
}
.sec {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.video {
display: flex;
justify-content: space-between;
align-items: center;
background-color: white;
padding: 15px;
box-shadow: 0px 0px 20px 1px rgba(0, 0, 0, 0.1);
border-radius: 10px;
margin-top: 20px;
.left {
display: flex;
}
.men_image {
height: 40px;
width: 40px;
border-radius: 100%;
}
.text {
margin-left: 10px;
}
.bold_text {
font-size: 16px;
font-family: 'bold';
}
.grey_text {
font-size: 14px;
color: grey;
}
}
}
.review_tab {
margin-top: 20px;
.total {
display: flex;
align-items: center;
justify-content: space-between;
.star-rate {
display: flex;
align-items: center;
.bold {
font-size: 17px;
font-family: 'semi-bold';
margin-left: 5px;
}
}
.color {
color: var(--ion-color-primary);
font-size: 14px;
}
}
.story-item {
overflow: scroll;
display: flex;
flex-direction: row;
margin-top: 20px;
.menu {
width: 100%;
display: flex;
flex-direction: row;
.item {
padding: 5px;
margin: 5px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
ion-thumbnail {
border-radius: 15px;
width: max-content;
height: 60px;
width: 60px;
--border-radius: 50%;
}
ion-label {
font-size: 14px;
font-family: "medium";
color: var(--ion-color-medium);
}
}
.text {
display: flex;
align-items: center;
text-align: center;
.select {
display: flex;
align-items: center;
border: 1px solid var(--ion-color-primary);
border-radius: 20px;
padding: 2px 15px;
margin-right: 10px;
.rate_num {
margin-left: 5px;
color: var(--ion-color-primary);
}
}
.show {
background-color: var(--ion-color-primary);
}
.white {
color: white !important;
}
.choice {
display: flex;
}
}
}
}
.reviw_list {
margin-top: 25px;
.profile {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
.left {
display: flex;
align-items: center;
.men_image {
height: 40px;
width: 40px;
border-radius: 100%;
}
.bold {
font-family: 'semi-bold';
}
.grey {
color: grey;
font-size: 14px;
}
}
.right {
display: flex;
align-items: center;
.select {
display: flex;
align-items: center;
border: 1px solid var(--ion-color-primary);
border-radius: 20px;
padding: 2px 15px;
margin-right: 10px;
.rate_num {
margin-left: 5px;
color: var(--ion-color-primary);
}
}
ion-icon {
font-size: 20px;
}
}
}
.like {
display: flex;
align-items: center;
margin-top: 10px;
.heart {
font-size: 25px;
margin-right: 5px;
}
.count {
margin-right: 10px;
}
.time {
color: grey;
font-size: 14px;
}
}
}
}
.bold_text {
font-size: 20px;
font-family: 'bold';
}
}
ion-footer {
--background: white;
ion-toolbar {
--border-width: 0px;
padding: 10px;
align-items: center;
ion-icon {
color: white;
font-size: 25px;
}
.button {
background-color: var(--ion-color-primary);
display: flex;
align-items: center;
justify-content: space-around;
border-radius: 30px;
padding: 12px 0;
.text {
color: white;
}
}
}
}
@@ -0,0 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { StartscanPage } from './startscan.page';
describe('StartscanPage', () => {
let component: StartscanPage;
let fixture: ComponentFixture<StartscanPage>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ StartscanPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(StartscanPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
+76
View File
@@ -0,0 +1,76 @@
import { Component, OnInit } from '@angular/core';
import {NavController} from "@ionic/angular";
import {Router} from "@angular/router";
import { BarcodeScanner } from '@capacitor-community/barcode-scanner';
@Component({
selector: 'app-startscan',
templateUrl: './startscan.page.html',
styleUrls: ['./startscan.page.scss'],
})
export class StartscanPage implements OnInit {
content_visibility = '';
tabs = 'about';
constructor(
private navctr: NavController,
private router: Router
) { }
ngOnInit() {
this.startScan();
}
onBack() {
this.stopScan();
this.navctr.back();
}
async checkPermission() {
try {
// check or request permission
const status = await BarcodeScanner.checkPermission({ force: true });
if (status.granted) {
// the user granted permission
return true;
}
return false;
} catch(e) {
console.log(e);
}
}
scannedResult:any;
async startScan() {
try {
const permission = await this.checkPermission();
if(!permission) {
this. stopScan();
return;
}
await BarcodeScanner.hideBackground();
document.querySelector('body').classList.add('scanner-active');
this.content_visibility = 'hidden';
const result = await BarcodeScanner.startScan();
console.log(result);
BarcodeScanner.showBackground();
document.querySelector('body').classList.remove('scanner-active');
this.content_visibility = '';
if(result?.hasContent) {
this.scannedResult = result.content;
console.log(this.scannedResult);
}
} catch(e) {
console.log(e);
this.stopScan();
}
}
stopScan() {
BarcodeScanner.showBackground();
BarcodeScanner.stopScan();
document.querySelector('body').classList.remove('scanner-active');
this.content_visibility = '';
}
}