lpxxx Angular holdings maintenance wip
authorBill Erickson <berickxx@gmail.com>
Wed, 20 Mar 2019 20:06:27 +0000 (16:06 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 20 Mar 2019 20:06:27 +0000 (16:06 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts

index f3d1be8..25938bc 100644 (file)
 
     <!-- row actions -->
 
+    <!-- row actions : Ungrouped -->
+
+    <eg-grid-toolbar-action
+      i18n-label label="Print Labels" (onClick)="openItemPrintLabels($event)">
+    </eg-grid-toolbar-action>
+
+    <!-- row actions : Show group -->
+
+    <eg-grid-toolbar-action
+      i18n-group group="Show" i18n-label label="Show Item Status (list)"
+      (onClick)="openItemStatusList($event)"></eg-grid-toolbar-action>
+
+    <eg-grid-toolbar-action
+      i18n-group group="Show" i18n-label label="Show Item Status (detail)"
+      (onClick)="openItemStatus($event)"></eg-grid-toolbar-action>
+
+    <eg-grid-toolbar-action
+      i18n-group group="Show" i18n-label label="Show Item Holds"
+      (onClick)="openItemHolds($event)"></eg-grid-toolbar-action>
+
+    <eg-grid-toolbar-action
+      i18n-group group="Show" i18n-label label="Show Triggered Events"
+      (onClick)="openItemTriggeredEvents($event)"></eg-grid-toolbar-action>
+
+    <!-- row actions : Mark group -->
+
     <eg-grid-toolbar-action
       group="Mark" i18n-group i18n-label label="Mark Item Damaged"
       (onClick)="showMarkDamagedDialog($event)"></eg-grid-toolbar-action>
index 86e05b6..dda8c78 100644 (file)
@@ -15,6 +15,7 @@ import {MarkDamagedDialogComponent
     } from '@eg/staff/share/holdings/mark-damaged-dialog.component';
 import {MarkMissingDialogComponent
     } from '@eg/staff/share/holdings/mark-missing-dialog.component';
+import {AnonCacheService} from '@eg/share/util/anon-cache.service';
 
 
 // The holdings grid models a single HoldingsTree, composed of HoldingsTreeNodes
@@ -122,7 +123,8 @@ export class HoldingsMaintenanceComponent implements OnInit {
         private pcrud: PcrudService,
         private staffCat: StaffCatalogService,
         private store: ServerStoreService,
-        private localStore: StoreService
+        private localStore: StoreService,
+        private anonCache: AnonCacheService
     ) {
         // Set some sane defaults before settings are loaded.
         this.gridDataSource = new GridDataSource();
@@ -631,6 +633,43 @@ export class HoldingsMaintenanceComponent implements OnInit {
         this.localStore.setLocalItem('eg.cat.transfer_target_record', this.recordId);
         this.localStore.setLocalItem('eg.cat.transfer_target_lib', orgId);
     }
-}
 
+    openAngJsWindow(path: string) {
+        const url = `/eg/staff/${path}`;
+        window.open(url, '_blank');
+    }
+
+    openItemHolds(rows: HoldingsEntry[]) {
+        if (rows.length > 0 && rows[0].copy) {
+            this.openAngJsWindow(`cat/item/${rows[0].copy.id()}/holds`);
+        }
+    }
 
+    openItemStatusList(rows: HoldingsEntry[]) {
+        const ids = this.selectedCopyIds(rows);
+        if (ids.length > 0) {
+            return this.openAngJsWindow(`cat/item/search/${ids.join(',')}`);
+        }
+    }
+
+    openItemStatus(rows: HoldingsEntry[]) {
+        if (rows.length > 0 && rows[0].copy) {
+           return this.openAngJsWindow(`cat/item/${rows[0].copy.id()}`);
+        }
+    }
+
+    openItemTriggeredEvents(rows: HoldingsEntry[]) {
+        if (rows.length > 0 && rows[0].copy) {
+           return this.openAngJsWindow(
+               `cat/item/${rows[0].copy.id()}/triggered_events`);
+        }
+    }
+
+    openItemPrintLabels(rows: HoldingsEntry[]) {
+        const ids = this.selectedCopyIds(rows);
+        if (ids.length === 0) { return; }
+
+        this.anonCache.setItem(null, 'print-labels-these-copies', {copies: ids})
+        .then(key => this.openAngJsWindow(`cat/printlabels/${key}`));
+    }
+}