Wire up Simple Reporter into the Staff Client Interface
authorJason Boyer <JBoyer@equinoxOLI.org>
Tue, 14 Dec 2021 19:15:13 +0000 (14:15 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 10 Aug 2022 14:18:22 +0000 (10:18 -0400)
Sponsored-by: C/W MARS
Sponsored-by: Missouri Evergreen Consortium
Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Signed-off-by: rfrasur <rfrasur@library.in.gov>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/eg2/src/app/staff/nav.component.html
Open-ILS/src/eg2/src/app/staff/routing.module.ts
Open-ILS/src/eg2/src/app/staff/splash.component.html
Open-ILS/src/eg2/src/app/staff/splash.component.ts
Open-ILS/src/templates/staff/navbar.tt2

index 980449e..504198b 100644 (file)
             <span class="material-icons" aria-hidden="true">insert_chart</span>
             <span i18n>Reports</span>
           </a>
+          <a class="dropdown-item" routerLink="/staff/reporter/simple">
+            <span class="material-icons" aria-hidden="true">insert_chart</span>
+            <span i18n>Simple Reports</span>
+          </a>
         </div>
       </div>
     </div>
index 21e7427..d7981d7 100644 (file)
@@ -33,6 +33,9 @@ const routes: Routes = [{
     path: 'login',
     component: StaffLoginComponent
   }, {
+    path: 'no_permission',
+    component: StaffSplashComponent
+  }, {
     path: 'splash',
     component: StaffSplashComponent
   }, {
@@ -48,6 +51,10 @@ const routes: Routes = [{
     loadChildren: () =>
       import('./catalog/catalog.module').then(m => m.CatalogModule)
   }, {
+    path: 'reporter',
+    loadChildren: () =>
+      import('@eg/staff/reporter/routing.module').then(m => m.ReporterRoutingModule)
+  }, {
     path: 'sandbox',
     loadChildren: () =>
       import('./sandbox/sandbox.module').then(m => m.SandboxModule)
index cf46f42..3ca6c62 100644 (file)
   </div>
 </div>
 
+<eg-string #noPermissionString i18n-text text="Sorry, you do not have permission to access this"></eg-string>
index 6756b65..3531d23 100644 (file)
@@ -1,4 +1,9 @@
-import {Component, OnInit, Renderer2} from '@angular/core';
+import {Component, OnInit, AfterViewInit, Directive, ElementRef, Renderer2} from '@angular/core';
+import {OrgService} from '@eg/core/org.service';
+import {AuthService} from '@eg/core/auth.service';
+import {PcrudService} from '@eg/core/pcrud.service';
+import {ToastService} from '@eg/share/toast/toast.service';
+import {StringComponent} from '@eg/share/string/string.component';
 import {Router} from '@angular/router';
 
 @Component({
@@ -7,17 +12,51 @@ import {Router} from '@angular/router';
 
 export class StaffSplashComponent implements OnInit {
 
+    @ViewChild('noPermissionString', { static: true }) noPermissionString: StringComponent;
     catSearchQuery: string;
 
     constructor(
         private renderer: Renderer2,
-        private router: Router
+        private pcrud: PcrudService,
+        private auth: AuthService,
+        private org: OrgService,
+        private router: Router,
+        private toast: ToastService
     ) {}
 
     ngOnInit() {
 
-        // Focus catalog search form
-        this.renderer.selectRootElement('#catalog-search-input').focus();
+                // munge the results so that we don't need to
+                // care if there are gaps in the page_col or col_pos
+                // sequences
+                filteredPortalEntries.forEach((col) => {
+                    if (col !== undefined) {
+                        const filtered = col.filter(x => x !== undefined);
+                        this.portalEntries.push(filtered);
+                        filtered.forEach((entry) => {
+                            if (entry.entry_type() === 'header') {
+                                this.portalHeaders[this.portalEntries.length - 1] = entry;
+                            }
+                        });
+                    }
+                });
+                // supply an empty header entry in case a column was
+                // defined without a header
+                this.portalEntries.forEach((col, i) => {
+                    if (this.portalHeaders.length <= i) {
+                        this.portalHeaders[i] = undefined;
+                    }
+                });
+            }
+        );
+
+        if (this.router.url === '/staff/no_permission') {
+            this.noPermissionString.current()
+                .then(str => {
+                    this.toast.danger(str);
+                    this.router.navigate(['/staff']);
+                });
+        }
     }
 
     searchCatalog(): void {
index 9cd7800..0ede612 100644 (file)
               [% l('Reports') %]
             </a>
           </li>
+          <li>
+            <a href="/eg2/staff/reporter/simple" target="_self">
+              <span class="glyphicon glyphicon-object-align-bottom" 
+                aria-hidden="true"></span>
+              [% l('Simple Reports') %]
+            </a>
+          </li>
         </ul> <!-- admin dropdown -->
       </li>
     </ul> <!-- end left side entries -->