From aa7e1f65eb522e5b93f9e3dcd7c4a1e632c3696f Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 21 Jun 2022 13:33:17 -0400 Subject: [PATCH] LP1840773 SCKO Angular Signed-off-by: Bill Erickson --- .../src/eg2/src/app/scko/banner.component.html | 7 +++--- Open-ILS/src/eg2/src/app/scko/banner.component.ts | 20 +++------------- .../src/eg2/src/app/scko/checkout.component.html | 17 +++++++++++++ .../src/eg2/src/app/scko/checkout.component.ts | 22 +++++++++++++++++ Open-ILS/src/eg2/src/app/scko/routing.module.ts | 6 ++--- Open-ILS/src/eg2/src/app/scko/scko.component.css | 28 ++++++++++++++++++++++ Open-ILS/src/eg2/src/app/scko/scko.component.html | 6 +++-- Open-ILS/src/eg2/src/app/scko/scko.module.ts | 4 ++++ Open-ILS/src/eg2/src/app/scko/scko.service.ts | 27 ++++++++++++++++----- .../src/eg2/src/app/scko/summary.component.html | 4 ++-- 10 files changed, 108 insertions(+), 33 deletions(-) create mode 100644 Open-ILS/src/eg2/src/app/scko/checkout.component.html create mode 100644 Open-ILS/src/eg2/src/app/scko/checkout.component.ts diff --git a/Open-ILS/src/eg2/src/app/scko/banner.component.html b/Open-ILS/src/eg2/src/app/scko/banner.component.html index 963fe5d7ca..979f44ee83 100644 --- a/Open-ILS/src/eg2/src/app/scko/banner.component.html +++ b/Open-ILS/src/eg2/src/app/scko/banner.component.html @@ -4,7 +4,7 @@
- +
Please log in with your username or library barcode.
@@ -35,7 +35,7 @@
- +
Please enter an item barcode
@@ -55,7 +55,8 @@
Welcome, - {{scko.patron.pref_first_given_name() || scko.patron.first_given_name()}} + {{scko.patronSummary.patron.pref_first_given_name() + || scko.patronSummary.patron.first_given_name()}}
diff --git a/Open-ILS/src/eg2/src/app/scko/banner.component.ts b/Open-ILS/src/eg2/src/app/scko/banner.component.ts index 8a9e281ffa..e599453bb0 100644 --- a/Open-ILS/src/eg2/src/app/scko/banner.component.ts +++ b/Open-ILS/src/eg2/src/app/scko/banner.component.ts @@ -111,12 +111,12 @@ export class SckoBannerComponent implements OnInit { submitPatronLogin() { this.patronLoginFailed = false; this.loadPatron().finally(() => { - this.patronLoginFailed = this.scko.patron === null; + this.patronLoginFailed = this.scko.patronSummary === null; }); } loadPatron(): Promise { - this.scko.patron = null; + this.scko.resetPatron(); if (!this.patronUsername) { return; } @@ -167,21 +167,7 @@ export class SckoBannerComponent implements OnInit { return Promise.reject('User not found'); } - return this.net.request( - 'open-ils.actor', - 'open-ils.actor.user.fleshed.retrieve.authoritative', - this.auth.token(), patronId).toPromise(); - - }).then(patron => { - - const evt = this.evt.parse(patron); - - if (evt) { - console.error('fetchPatron()', evt); - return Promise.reject('User not found'); - } - - this.scko.patron = patron; + return this.scko.loadPatron(patronId); }); } diff --git a/Open-ILS/src/eg2/src/app/scko/checkout.component.html b/Open-ILS/src/eg2/src/app/scko/checkout.component.html new file mode 100644 index 0000000000..5b10c7e777 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/scko/checkout.component.html @@ -0,0 +1,17 @@ +
+ + + + + + + + + + + + + + +
BarcodeTitleAuthorDue DateRenewals LeftType
+
diff --git a/Open-ILS/src/eg2/src/app/scko/checkout.component.ts b/Open-ILS/src/eg2/src/app/scko/checkout.component.ts new file mode 100644 index 0000000000..89ff3d3d41 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/scko/checkout.component.ts @@ -0,0 +1,22 @@ +import {Component, OnInit, ViewEncapsulation} from '@angular/core'; +import {Router, ActivatedRoute, NavigationEnd} from '@angular/router'; +import {AuthService} from '@eg/core/auth.service'; +import {SckoService} from './scko.service'; +import {ServerStoreService} from '@eg/core/server-store.service'; + +@Component({ + templateUrl: 'checkout.component.html' +}) + +export class SckoCheckoutComponent implements OnInit { + + constructor( + private router: Router, + private route: ActivatedRoute, + public scko: SckoService + ) {} + + ngOnInit() { + } +} + diff --git a/Open-ILS/src/eg2/src/app/scko/routing.module.ts b/Open-ILS/src/eg2/src/app/scko/routing.module.ts index 6d52229ab1..4c9ed2a8e2 100644 --- a/Open-ILS/src/eg2/src/app/scko/routing.module.ts +++ b/Open-ILS/src/eg2/src/app/scko/routing.module.ts @@ -1,15 +1,15 @@ import {NgModule} from '@angular/core'; import {RouterModule, Routes} from '@angular/router'; import {SckoComponent} from './scko.component'; +import {SckoCheckoutComponent} from './checkout.component'; const routes: Routes = [{ path: '', component: SckoComponent, - /* children: [{ - + path: '', + component: SckoCheckoutComponent }] - */ }]; @NgModule({ diff --git a/Open-ILS/src/eg2/src/app/scko/scko.component.css b/Open-ILS/src/eg2/src/app/scko/scko.component.css index bf79e6e7e3..f3ed0fd5c8 100644 --- a/Open-ILS/src/eg2/src/app/scko/scko.component.css +++ b/Open-ILS/src/eg2/src/app/scko/scko.component.css @@ -2,6 +2,10 @@ body { font-family: Arial, Verdana; font-size: 13px; } + +A { + text-decoration: none; +} #scko-banner { background: #00593d; /* Old browsers */ @@ -77,3 +81,27 @@ body { outline: 0 none; text-decoration: none; } + + +.oils-selfck-item-table { + width: 98%; + margin-top: 15px; +} + +.oils-selfck-item-table td { + text-align: left; + padding: 7px; +} + +.oils-selfck-item-table thead { + font-weight: bold; + color: #00593D; + background-color: #D8D8D8; + padding: 8px 0 7px; +} + +.oils-selfck-item-table tbody tr { + border-bottom: 1px solid #888; +} + + diff --git a/Open-ILS/src/eg2/src/app/scko/scko.component.html b/Open-ILS/src/eg2/src/app/scko/scko.component.html index 4159fa2a9d..c9df088a6b 100644 --- a/Open-ILS/src/eg2/src/app/scko/scko.component.html +++ b/Open-ILS/src/eg2/src/app/scko/scko.component.html @@ -1,9 +1,11 @@ -
+
- +
+ +
diff --git a/Open-ILS/src/eg2/src/app/scko/scko.module.ts b/Open-ILS/src/eg2/src/app/scko/scko.module.ts index 5743595bdf..e4b795d16c 100644 --- a/Open-ILS/src/eg2/src/app/scko/scko.module.ts +++ b/Open-ILS/src/eg2/src/app/scko/scko.module.ts @@ -3,22 +3,26 @@ import {EgCommonModule} from '@eg/common.module'; import {CommonWidgetsModule} from '@eg/share/common-widgets.module'; import {AudioService} from '@eg/share/util/audio.service'; import {TitleComponent} from '@eg/share/title/title.component'; +import {PatronModule} from '@eg/staff/share/patron/patron.module'; import {SckoComponent} from './scko.component'; import {SckoRoutingModule} from './routing.module'; import {SckoService} from './scko.service'; import {SckoBannerComponent} from './banner.component'; import {SckoSummaryComponent} from './summary.component'; +import {SckoCheckoutComponent} from './checkout.component'; @NgModule({ declarations: [ SckoComponent, SckoBannerComponent, SckoSummaryComponent, + SckoCheckoutComponent, ], imports: [ EgCommonModule, CommonWidgetsModule, + PatronModule, SckoRoutingModule ], providers: [ diff --git a/Open-ILS/src/eg2/src/app/scko/scko.service.ts b/Open-ILS/src/eg2/src/app/scko/scko.service.ts index 0f9fd1dff0..376a750323 100644 --- a/Open-ILS/src/eg2/src/app/scko/scko.service.ts +++ b/Open-ILS/src/eg2/src/app/scko/scko.service.ts @@ -5,29 +5,33 @@ import {EventService, EgEvent} from '@eg/core/event.service'; import {IdlService, IdlObject} from '@eg/core/idl.service'; import {StoreService} from '@eg/core/store.service'; import {ServerStoreService} from '@eg/core/server-store.service'; +import {PatronService, PatronSummary, PatronStats} from '@eg/staff/share/patron/patron.service'; @Injectable({providedIn: 'root'}) export class SckoService { // Currently active patron account object. - patron: IdlObject; + patronSummary: PatronSummary; barcodeRegex: RegExp; patronPasswordRequired = false; - sessionTotalCheckouts = 0; accountTotalCheckouts = 0; - totalHolds = 0; - holdsReady = 0; - totalFines = 0; + sessionCheckouts: any[] = []; constructor( private net: NetService, private evt: EventService, private serverStore: ServerStoreService, - public auth: AuthService + public auth: AuthService, + private patrons: PatronService, ) {} + resetPatron() { + this.patronSummary = null; + this.sessionCheckouts = []; + } + load(): Promise { this.auth.authDomain = 'eg.scko'; @@ -56,6 +60,17 @@ export class SckoService { console.log('REQ', this.patronPasswordRequired); }); } + + loadPatron(id: number): Promise { + return this.patrons.getFleshedById(id).then( + patron => this.patronSummary = new PatronSummary(patron)) + .then(_ => this.patrons.getVitalStats(this.patronSummary.patron)) + .then(stats => this.patronSummary.stats = stats); + } + + sessionTotalCheckouts(): number { + return this.sessionCheckouts.length; + } } diff --git a/Open-ILS/src/eg2/src/app/scko/summary.component.html b/Open-ILS/src/eg2/src/app/scko/summary.component.html index 012a3428c4..673f8a39ec 100644 --- a/Open-ILS/src/eg2/src/app/scko/summary.component.html +++ b/Open-ILS/src/eg2/src/app/scko/summary.component.html @@ -39,7 +39,7 @@ Items Checked Out
Total items this session: - {{scko.sessionTotalCheckouts}} + {{scko.sessionTotalCheckouts()}}
Total items on account: @@ -63,7 +63,7 @@
Fines -
{{scko.totalFines | currency}}
+
{{scko.patronSummary.stats.fines.balance_owed | currency}}