From 1f29a126a4af4b3c861965f2798ade702a30d08d Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 9 Jun 2020 13:12:03 -0400 Subject: [PATCH] LPXXX Angular Volcopy Signed-off-by: Bill Erickson --- .../app/staff/cat/volcopy/vol-edit.component.css | 15 +++++ .../app/staff/cat/volcopy/vol-edit.component.html | 15 ++++- .../app/staff/cat/volcopy/vol-edit.component.ts | 71 ++++++++++++++++++++++ .../app/staff/cat/volcopy/volcopy.component.html | 8 +++ .../src/app/staff/cat/volcopy/volcopy.component.ts | 9 +++ 5 files changed, 117 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.css b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.css index c109cac77e..fabadae7d7 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.css +++ b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.css @@ -9,3 +9,18 @@ input[type="number"] { border-top: 1px solid rgba(0,0,0,.125); border-bottom: 1px solid rgba(0,0,0,.125); } + + +.clear-button { + border: none; + background-color: rgba(0, 0, 0, 0.0); + padding-left: .25rem; + padding-right: .25rem; + line-height: inherit; +} + +.clear-button .material-icons { + font-size: 15px; + color: grey; +} + diff --git a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.html b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.html index 0360b00601..30d7e7857e 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.html +++ b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/vol-edit.component.html @@ -1,3 +1,9 @@ + +
@@ -113,7 +119,13 @@
- {{orgNode.target.shortname()}} + + {{orgNode.target.shortname()}} + +
@@ -188,6 +200,7 @@ (ngModelChange)="barcodeChanged(copyNode.target, $event)" (keyup.enter)="selectNextBarcode(copyNode.target.id())" (keyup.shift.enter)="selectNextBarcode(copyNode.target.id(), true)" + (focus)="$event.target.select()" [ngModel]="copyNode.target.barcode()" (ngModelChange)="applyCopyValue(copyNode.target, 'barcode', $event)"/>
this.fetchBibParts()) .then(_ => this.addStubCopies()); @@ -411,5 +425,62 @@ export class VolEditComponent implements OnInit { }); } } + + deleteVol(volNode: HoldingsTreeNode) { + this.deleteVolCount = 1; + this.deleteCopyCount = volNode.children.length; + + this.confirmDelVol.open().toPromise().then(confirmed => { + if (confirmed) { this.deleteOneVol(volNode); } + }); + } + + deleteOneVol(volNode: HoldingsTreeNode) { + let deleteVolIdx = null; + const targetVol = volNode.target; + + // FOR loops allow for early exit + const orgNodes = this.context.orgNodes(); + for (let orgIdx = 0; orgIdx < orgNodes.length; orgIdx++) { + const orgNode = orgNodes[orgIdx]; + + for (let volIdx = 0; volIdx < orgNode.children.length; volIdx++) { + const vol = orgNode.children[volIdx].target; + + if (vol.id() === targetVol.id()) { + deleteVolIdx = volIdx; + + if (vol.isnew()) { + // New volumes, which can only have new copies + // may simply be removed from the holdings + // tree to delete them. + break; + } + + // Mark volume and attached copies as deleted + // and track for later deletion. + targetVol.isdeleted(true); + this.volsToDelete.push(targetVol); + + volNode.children.forEach(copyNode => { + const copy = copyNode.target; + if (copy.isnew()) { + // New copies can simply be discarded. + } else { + copy.isdeleted(true); + this.copiesToDelete.push(copy); + } + }); + } + + if (deleteVolIdx) { break; } + } + + if (deleteVolIdx !== null) { + orgNode.children.splice(deleteVolIdx, 1); + break; + } + } + } } diff --git a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.html b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.html index df54f573a7..274eb68b6f 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.html +++ b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.html @@ -1,5 +1,13 @@ + +
+
+ +
+
+
+ diff --git a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.ts index a080c3f44a..f0916c45fd 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/volcopy.component.ts @@ -6,6 +6,7 @@ import {OrgService} from '@eg/core/org.service'; import {PcrudService} from '@eg/core/pcrud.service'; import {HoldingsService} from '@eg/staff/share/holdings/holdings.service'; import {VolCopyContext} from './volcopy'; +import {ProgressInlineComponent} from '@eg/share/dialog/progress-inline.component'; const COPY_FLESH = { flesh: 1, @@ -32,6 +33,8 @@ export class VolCopyComponent implements OnInit { session: string; loading = true; + @ViewChild('loadingProgress', {static: false}) + loadingProgress: ProgressInlineComponent; constructor( private router: Router, @@ -62,11 +65,17 @@ export class VolCopyComponent implements OnInit { this.loading = true; this.context.reset(); this.fetchHoldings() + .then(_ => this.loadingProgress.increment()) .then(_ => this.holdings.fetchCallNumberClasses()) + .then(_ => this.loadingProgress.increment()) .then(_ => this.holdings.fetchCallNumberPrefixes()) + .then(_ => this.loadingProgress.increment()) .then(_ => this.holdings.fetchCallNumberSuffixes()) + .then(_ => this.loadingProgress.increment()) .then(_ => this.context.sortHoldings()) + .then(_ => this.loadingProgress.increment()) .then(_ => this.setRecordId()) + .then(_ => this.loadingProgress.increment()) .then(_ => this.loading = false); } -- 2.11.0