Changeset 8e74e2f for Farmatiko/ClientApp/src
- Timestamp:
- 11/16/20 03:55:10 (4 years ago)
- Branches:
- master
- Children:
- db484c9
- Parents:
- 8b13eb2
- Location:
- Farmatiko/ClientApp/src
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
Farmatiko/ClientApp/src/app/admin/admin.component.html
r8b13eb2 r8e74e2f 12 12 <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse"> 13 13 <ul class="navbar-nav flex-grow"> 14 <li>Administration panel</li> 14 <li>Administration panel:</li> 15 <li> Logged as <p *ngIf="head">{{adminHead.Name}}</p> </li> 16 <li (click)="logout()" class="btn btn-link"><a>Logout</a></li> 15 17 </ul> 16 18 </div> … … 18 20 </nav> 19 21 </header> 20 <mat-tab-group mat-stretch-tabs >22 <mat-tab-group mat-stretch-tabs dynamicHeight> 21 23 <mat-tab label="Claiming requests"> 22 24 <div class="wrapper"> -
Farmatiko/ClientApp/src/app/admin/admin.component.ts
r8b13eb2 r8e74e2f 7 7 import { EditPharmacyHeadDialogComponent } from '../dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component'; 8 8 import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component'; 9 import { PharmacyHeadDialogComponent } from '../nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 9 import { PharmacyHeadDialogComponent } from '../dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 10 import { AuthService } from '../shared/services/auth.service'; 10 11 11 12 … … 19 20 public requests: IPharmacyHeadRequest[] = []; 20 21 public head: IPharmacyHead = { 21 PharmacyMedicines: null,22 Pharmacy: null,23 22 Email: '', 24 23 Passwd: '', 25 24 Name: '' 26 25 }; 26 public adminHead: IPharmacyHead; 27 27 28 constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) {28 constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) { 29 29 30 30 } 31 31 32 32 ngOnInit(): void { 33 this.authService.getUser() 34 .subscribe((data) => { 35 console.log(data); 36 this.adminHead = data; 37 }, 38 (err: any) => console.log(err), 39 () => console.log('User data retrieved')); 40 33 41 this.dataService.getPharmacyHeads() 34 42 .subscribe((pHeads: IPharmacyHead[]) => { … … 39 47 40 48 this.dataService.getClaimingRequests() 41 .subscribe((pRequests: IPharmacyHeadRequest[]) => {42 this.requests = pRequests;43 },44 (err: any) => console.log(err),45 () => console.log("PharmacyHead data retrieved"));49 .subscribe((pRequests: IPharmacyHeadRequest[]) => { 50 this.requests = pRequests; 51 }, 52 (err: any) => console.log(err), 53 () => console.log("PharmacyHead data retrieved")); 46 54 } 47 55 … … 57 65 () => console.log("PharmacyHead inserted")); 58 66 this.head = { 59 PharmacyMedicines: null,60 Pharmacy: null,61 67 Email: '', 62 68 Passwd: '', … … 83 89 dialogRef.afterClosed().subscribe((editedHead: IPharmacyHead) => { 84 90 if(editedHead){ 91 console.log(editedHead); 85 92 this.heads = this.heads.filter(x => x !== eHead); 86 93 this.heads.push(editedHead); … … 142 149 } 143 150 151 logout() { 152 this.authService.logout(); 153 } 154 144 155 openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> { 145 156 return this.snackBar.open(message, action, { -
Farmatiko/ClientApp/src/app/app.module.ts
r8b13eb2 r8e74e2f 26 26 import { EditPharmacyDialogComponent } from './dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component'; 27 27 import { EditPharmacyHeadDialogComponent } from './dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component'; 28 import { PharmacyHeadDialogComponent } from './nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 28 import { PharmacyHeadDialogComponent } from './dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 29 import { AddMedicineDialogComponent } from './dialogs/add-medicine-dialog/add-medicine-dialog.component'; 30 import { ListMedicinesDialogComponent } from './dialogs/list-medicines-dialog/list-medicines-dialog.component'; 29 31 30 32 @NgModule({ … … 44 46 EditPharmacyDialogComponent, 45 47 EditPharmacyHeadDialogComponent, 46 PharmacyHeadDialogComponent 48 PharmacyHeadDialogComponent, 49 AddMedicineDialogComponent, 50 ListMedicinesDialogComponent 47 51 ], 48 52 imports: [ -
Farmatiko/ClientApp/src/app/counter/counter.component.css
r8b13eb2 r8e74e2f 12 12 13 13 .header { 14 min-height: 64px;15 14 padding: 8px 24px 0; 16 15 } -
Farmatiko/ClientApp/src/app/counter/counter.component.html
r8b13eb2 r8e74e2f 2 2 <app-nav-menu></app-nav-menu> 3 3 4 <mat-tab-group mat-stretch-tabs>4 <mat-tab-group dynamicHeight mat-stretch-tabs> 5 5 <mat-tab class="tab" label="Здравствени установи"> 6 6 <div class="wrapper"> -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.css
r8b13eb2 r8e74e2f 15 15 16 16 .header { 17 min-height: 64px;18 17 padding: 8px 24px 0; 19 18 } … … 31 30 padding: 1em 0; 32 31 } 32 33 .btns { 34 display: flex; 35 flex-direction: row; 36 justify-content: flex-start; 37 } 38 39 .btns button { 40 margin: 0.5em 0.5em 0.5em 0; 41 } -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.html
r8b13eb2 r8e74e2f 13 13 <ul class="navbar-nav flex-grow"> 14 14 <li>Logged as <p *ngIf="head">{{head.Name}}</p> </li> 15 <li (click)="logout()" class="btn btn-link"><a>Logout</a></li>16 15 </ul> 17 16 </div> … … 20 19 <mat-menu #menu="matMenu"> 21 20 <button mat-menu-item [routerLink]="['/']"><mat-icon>directions</mat-icon>Почетна</button> 21 <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button> 22 22 </mat-menu> 23 23 </div> … … 25 25 </header> 26 26 27 <mat-tab-group mat-stretch-tabs>27 <mat-tab-group dynamicHeight mat-stretch-tabs> 28 28 <mat-tab class="tab" label="Мои аптеки"> 29 29 <div class="wrapper"> … … 88 88 <div class="header"> 89 89 <h2>Достапни лекови</h2> 90 <mat-form-field> 90 <div class="btns"> 91 <button mat-raised-button color="primary" (click)="saveDeletedMedicines()" [disabled]="editedMedicine==false">Зачувај ги промените</button> 92 <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicine()">Додај нов лек</button> 93 <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicinesFromList()">Додај постоечки лекови</button> 94 </div><br/> 95 <mat-slide-toggle (click)="switchEditMedicineMode()">Edit mode</mat-slide-toggle> 96 97 <mat-form-field *ngIf="!medicinesEditMode"> 91 98 <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек"> 92 99 </mat-form-field> 93 100 </div> 94 101 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head"> 95 102 <thead> … … 102 109 <th>Цена</th> 103 110 <th>Пакување</th> 111 <th>Контроли</th> 104 112 </tr> 105 113 </thead> 106 114 <tbody> 107 <tr *ngFor="let medicine of head.PharmacyMedicines"> 108 <td><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td> 109 <td>{{ medicine.strength }}</td> 110 <td>{{ medicine.form }}</td> 111 <td>{{ medicine.wayOfIssuing }}</td> 112 <td>{{ medicine.manufacturer }}</td> 113 <td>{{ medicine.price }}</td> 114 <td>{{ medicine.packaging }}</td> 115 <td><a (click)="deleteMedicine(medicine)">Delete</a></td> 115 <tr *ngFor="let medicine of filteredMedicines"> 116 <td *ngIf="!medicinesEditMode"><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td> 117 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.name" name="medname"></mat-form-field></td> 118 <td *ngIf="!medicinesEditMode">{{ medicine.strength }}</td> 119 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.strength" name="medstr"></mat-form-field></td> 120 <td *ngIf="!medicinesEditMode">{{ medicine.form }}</td> 121 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.form" name="medform"></mat-form-field></td> 122 <td *ngIf="!medicinesEditMode">{{ medicine.wayOfIssuing }}</td> 123 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.wayOfIssuing" name="medwayOfIssuing"></mat-form-field></td> 124 <td *ngIf="!medicinesEditMode">{{ medicine.manufacturer }}</td> 125 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.manufacturer" name="medmanufacturer"></mat-form-field></td> 126 <td *ngIf="!medicinesEditMode">{{ medicine.price }}</td> 127 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.price" name="medprice"></mat-form-field></td> 128 <td *ngIf="!medicinesEditMode">{{ medicine.packaging }}</td> 129 <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.packaging" name="medpackaging"></mat-form-field></td> 130 <td> 131 <button mat-mini-fab color="warn" aria-label="Delete medicine" (click)="deleteMedicine(medicine)"> 132 <mat-icon>delete</mat-icon> 133 </button> 134 </td> 116 135 </tr> 117 136 </tbody> -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts
r8b13eb2 r8e74e2f 9 9 import { ActivatedRoute, Router } from '@angular/router'; 10 10 import { AuthService } from '../shared/services/auth.service'; 11 import { AddMedicineDialogComponent } from '../dialogs/add-medicine-dialog/add-medicine-dialog.component'; 12 import { ListMedicinesDialogComponent } from '../dialogs/list-medicines-dialog/list-medicines-dialog.component'; 11 13 12 14 @Component({ … … 21 23 public filteredMedicines: IMedicine[] = []; 22 24 public request: IPharmacyHeadRequest; 25 editedMedicine: boolean = false; 26 medicinesEditMode: boolean = false; 23 27 24 28 constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute) { … … 37 41 .subscribe((pharmacy: IPharmacy[]) => { 38 42 this.pharmacies = pharmacy; 43 this.head.Pharmacy.forEach((pharma) => { 44 this.filteredPharmacies = this.pharmacies = this.pharmacies.filter(x => x == pharma); 45 }); 39 46 }, 40 47 (err: any) => console.log(err), 41 48 () => console.log('Pharmacy data retrieved')); 49 this.filteredMedicines = this.head.PharmacyMedicines; 42 50 } 43 51 … … 83 91 deleteMedicine(medicine: IMedicine){ 84 92 this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x !== medicine); 93 this.filteredMedicines = this.head.PharmacyMedicines; 94 this.editedMedicine = true; 95 } 96 97 saveDeletedMedicines() { 85 98 this.dataService.updatePharmacyHead(this.head) 86 .subscribe((hd: IPharmacyHead) => { 87 if(hd) { 88 this.openSnackBar("Success! Medicine deleted", "OK"); 89 } 90 else { 91 this.openSnackBar("Unable to delete Medicine", "Try again"); 92 } 93 }, 94 (err: any) => console.log(err), 95 () => console.log('Update sent!')); 99 .subscribe((hd: IPharmacyHead) => { 100 if(hd) { 101 this.openSnackBar("Success! Medicine deleted", "OK"); 102 this.editedMedicine = false; 103 } 104 else { 105 this.openSnackBar("Unable to delete Medicine", "Try again"); 106 } 107 }, 108 (err: any) => console.log(err), 109 () => console.log('Update sent!')); 96 110 } 97 111 … … 99 113 console.log("applyFilterMedicines works!") 100 114 if(filterValue) { 101 this.dataService.searchMedicines(filterValue) 102 .subscribe((medicine: IMedicine[]) => { 103 this.filteredMedicines = medicine; 104 }, 105 (err: any) => console.log(err), 106 () => console.log('Medicine data retrieved')); 115 this.filteredMedicines = this.filteredMedicines.filter(x => x.name.toLocaleLowerCase().includes(filterValue.toLocaleLowerCase())); 107 116 } 108 117 else { 109 118 this.filteredMedicines = this.head.PharmacyMedicines; 119 } 120 } 121 122 addMedicine() { 123 let dialogRef = this.dialog.open(AddMedicineDialogComponent, { 124 width: 'auto' 125 }); 126 dialogRef.afterClosed().subscribe((newMedicine: IMedicine) => { 127 if(newMedicine){ 128 this.head.PharmacyMedicines.push(newMedicine); 129 this.filteredMedicines = this.head.PharmacyMedicines; 130 if(this.editedMedicine == false) { 131 this.editedMedicine = true; 132 } 133 this.openSnackBar("Success! Medicine added, please save changes now", "OK"); 134 } 135 else { 136 this.openSnackBar("Failed! Please try again", "OK"); 137 } 138 }, () => this.openSnackBar("Failed! Please try again", "OK")); 139 } 140 141 addMedicinesFromList() { 142 let dialogRef = this.dialog.open(ListMedicinesDialogComponent, { 143 width: 'auto', 144 height: 'auto' 145 }); 146 dialogRef.afterClosed().subscribe((listMedicines: IMedicine[]) => { 147 if(listMedicines){ 148 listMedicines.forEach((medicine) => { 149 this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x != medicine); 150 this.head.PharmacyMedicines.push(medicine); 151 this.filteredMedicines = this.head.PharmacyMedicines; 152 }); 153 if(this.editedMedicine == false) { 154 this.editedMedicine = true; 155 } 156 this.openSnackBar("Success! Medicines added, please save changes now", "OK"); 157 } 158 else { 159 this.openSnackBar("Failed! Please try again", "OK"); 160 } 161 }, () => this.openSnackBar("Failed! Please try again", "OK")); 162 } 163 164 switchEditMedicineMode() { 165 this.medicinesEditMode = !this.medicinesEditMode; 166 if(this.editedMedicine == false) { 167 this.editedMedicine = true; 110 168 } 111 169 } … … 117 175 .subscribe((pharmacy: IPharmacy[]) => { 118 176 this.filteredPharmacies = pharmacy; 177 this.head.Pharmacy.forEach((pharma) => { 178 this.filteredPharmacies = this.filteredPharmacies.filter(x => x == pharma); 179 }); 119 180 }, 120 181 (err: any) => console.log(err), … … 123 184 else { 124 185 this.filteredPharmacies = this.pharmacies; 125 } 186 } 126 187 } 127 188 … … 138 199 139 200 openEditPharmacyDialog(pharmacy: IPharmacy): void { 201 console.log(pharmacy); 140 202 let dialogRef = this.dialog.open(EditPharmacyDialogComponent, { 141 203 width: '450px', -
Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.html
r8b13eb2 r8e74e2f 13 13 <div class="form-group"> 14 14 <label>Location</label> 15 <input type="text" class="form-control" [(ngModel)]="pharmacy.location" #email="ngModel" required />15 <input type="text" class="form-control" name="location" [(ngModel)]="pharmacy.location" #location="ngModel" required /> 16 16 <div class="alert alert-danger" [hidden]="pharmacy.location">Location is required</div> 17 17 </div> 18 18 <div class="form-group"> 19 19 <label>Work 24/7</label> 20 <br />21 20 <div class="radio"> 22 21 <label> 23 <input type="radio" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAllTime="ngModel" value="true" required /> 24 Да 25 </label> 26 </div> 27 <div class="radio"> 28 <label> 29 <input type="radio" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAlltime="ngModel" value="false" required /> 30 Не 22 <input type="checkbox" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAllTime="ngModel" [value]="pharmacy.workAllTime"/> 31 23 </label> 32 24 </div> -
Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.ts
r8b13eb2 r8e74e2f 19 19 20 20 save() { 21 console.log(this.pharmacy); 21 22 this.dialogRef.close(this.pharmacy); 22 23 } -
Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.html
r8b13eb2 r8e74e2f 21 21 <tbody> 22 22 <tr *ngFor="let medicine of filteredListMedicines"> 23 <td> >{{ medicine.name }}</td>23 <td>{{ medicine.name }}</td> 24 24 <td>{{ medicine.strength }}</td> 25 25 <td>{{ medicine.form }}</td> -
Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.ts
r8b13eb2 r8e74e2f 10 10 }) 11 11 export class ListMedicinesDialogComponent implements OnInit { 12 medicines: IMedicine[] ;12 medicines: IMedicine[] = []; 13 13 listMedicines: IMedicine[]; 14 14 filteredListMedicines: IMedicine[]; … … 30 30 this.medicines = this.medicines.filter(x => x != selectedMedicine); 31 31 } 32 else { 33 this.medicines.push(selectedMedicine); 34 } 32 this.medicines.push(selectedMedicine); 35 33 } 36 34 -
Farmatiko/ClientApp/src/app/home/home.component.css
r8b13eb2 r8e74e2f 12 12 13 13 .header { 14 min-height: 64px;15 14 padding: 8px 24px 0; 16 15 } -
Farmatiko/ClientApp/src/app/home/home.component.html
r8b13eb2 r8e74e2f 1 1 <app-nav-menu></app-nav-menu> 2 2 3 <mat-tab-group mat-stretch-tabs>3 <mat-tab-group dynamicHeight mat-stretch-tabs> 4 4 <mat-tab class="tab" label="Лекови"> 5 5 <div class="wrapper"> -
Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.html
r8b13eb2 r8e74e2f 26 26 <a class="nav-link text-dark" [routerLink]="['/koronavirus']">Коронавирус</a> 27 27 </li> 28 <li *ngIf="loggedIn"> 29 <button mat-button [matMenuTriggerFor]="menu"><mat-icon>more_vert</mat-icon></button> 30 <mat-menu #menu="matMenu"> 31 <button mat-menu-item [routerLink]="['/dashboard']"><mat-icon>dashboard</mat-icon>Контролна табла</button> 32 <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button> 33 </mat-menu> 34 </li> 28 35 </ul> 29 36 </div> -
Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.ts
r8b13eb2 r8e74e2f 1 import { Component } from '@angular/core'; 1 import { Component, OnInit } from '@angular/core'; 2 import { AuthService } from '../shared/services/auth.service'; 2 3 3 4 @Component({ … … 6 7 styleUrls: ['./nav-menu.component.css'] 7 8 }) 8 export class NavMenuComponent {9 export class NavMenuComponent implements OnInit { 9 10 isExpanded = false; 11 loggedIn: boolean = false; 12 13 constructor(private authService: AuthService) { 14 15 } 16 17 ngOnInit(): void { 18 if(localStorage.getItem('access_token')) { 19 this.loggedIn = true; 20 } 21 } 22 23 logout() { 24 this.authService.logout(); 25 } 10 26 11 27 collapse() { -
Farmatiko/ClientApp/src/custom-theme.scss
r8b13eb2 r8e74e2f 14 14 // hue. Available color palettes: https://material.io/design/color/ 15 15 $Farmatiko-primary: mat-palette($mat-green); 16 $Farmatiko-accent: mat-palette($mat- pink, A200, A100, A400);16 $Farmatiko-accent: mat-palette($mat-cyan); 17 17 18 18 // The warn palette is optional (defaults to red). -
Farmatiko/ClientApp/src/index.html
r8b13eb2 r8e74e2f 7 7 8 8 <meta name="viewport" content="width=device-width, initial-scale=1" /> 9 <link rel="icon" type="image/x-icon" href=" favicon.ico" />9 <link rel="icon" type="image/x-icon" href="./favicon.ico" /> 10 10 <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet"> 11 11 <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Note:
See TracChangeset
for help on using the changeset viewer.