LP#1626157 server admin ui
authorBill Erickson <berickxx@gmail.com>
Mon, 14 May 2018 21:08:12 +0000 (17:08 -0400)
committerBill Erickson <berickxx@gmail.com>
Mon, 14 May 2018 21:08:12 +0000 (17:08 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/share/date-select/date-select.component.html
Open-ILS/src/eg2/src/app/share/print/print.component.ts
Open-ILS/src/eg2/src/app/staff/admin/routing.module.ts
Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/admin/server/admin-server.module.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/admin/server/routing.module.ts
Open-ILS/src/eg2/src/app/staff/common.module.ts
Open-ILS/src/eg2/src/app/staff/nav.component.html
Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.html [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.ts [new file with mode: 0644]

index 93dc5cf..c686be4 100644 (file)
@@ -4,7 +4,7 @@
     class="form-control" 
     ngbDatepicker
     #datePicker="ngbDatepicker"
-    [placeholder]="yyyy-mm-dd"
+    placeholder="yyyy-mm-dd"
     class="form-control"
     name="{{fieldName}}"
     [required]="required"
index 54106fb..1144f3d 100644 (file)
@@ -31,7 +31,7 @@ export class EgPrintComponent implements OnInit {
 
     dispatchPrint(printReq) {
         /*
-        if (this.hatch.useHatchForPrinting) {
+        if (this.hatch.isActive) {
             this.printViaHatch();
         } else {
         */
index c74b270..69c6f96 100644 (file)
@@ -8,7 +8,7 @@ const routes: Routes = [{
    loadChildren: '@eg/staff/admin/workstation/routing.module#EgAdminWsRoutingModule'
   }, {
     path: 'server',
-    loadChildren: '@eg/staff/admin/server/routing.module#EgAdminServerRoutingModule'
+    loadChildren: '@eg/staff/admin/server/admin-server.module#EgAdminServerModule'
   }]
 }];
 
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
new file mode 100644 (file)
index 0000000..96313b8
--- /dev/null
@@ -0,0 +1,99 @@
+<eg-staff-banner bannerText="Server Administration" i18n-bannerText>
+</eg-staff-banner>
+
+<div class="container">
+  <eg-link-table columnCount="3">
+    <eg-link-table-link i18n-label label="Actor Stat Cat Sip Fields"  
+      url="/eg/staff/admin/server/config/actor_sip_fields"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Age Hold Protect Rules"  
+      url="/eg/staff/admin/server/config/rule_age_hold_protect"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Asset Stat Cat Sip Fields"  
+      url="/eg/staff/admin/server/config/asset_sip_fields"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Authority Browse Axes"  
+      url="/eg/staff/admin/server/cat/authority/browse_axis"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Authority Control Sets"  
+      url="/eg/staff/admin/server/cat/authority/control_set"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Authority Heading Fields"  
+      url="/eg/staff/admin/server/authority/heading_field"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Authority Thesauri"  
+      url="/eg/staff/admin/server/cat/authority/thesaurus"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Best-Hold Selection Sort Order"  
+      url="/eg/staff/admin/server/config/best_hold_order"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Billing Types"  
+      url="./staff/admin/server/config/billing_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Call Number Prefixes"  
+      url="/eg/staff/admin/server/config/acn_prefix"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Call Number Suffixes"  
+      url="/eg/staff/admin/server/config/acn_suffix"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Duration Rules"  
+      url="/eg/staff/admin/server/config/rule_circ_duration"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Limit Groups"  
+      url="/eg/staff/admin/server/config/circ_limit_group"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Matchpoint Weights"  
+      url="/eg/staff/admin/server/config/circ_matrix_weights"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Max Fine Rules"  
+      url="/eg/staff/admin/server/config/rule_max_fine"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Modifiers"  
+      url="/eg/staff/admin/server/config/circ_modifier"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Circulation Recurring Fine Rules"  
+      url="/eg/staff/admin/server/config/rule_recurring_fine"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Copy Statuses"  
+      url="/eg/staff/admin/server/legacy/config/copy_status"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Copy Tag Types"  
+      url="/eg/staff/admin/server/config/copy_tag_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Custom Org Unit Trees"  
+      url="/eg/staff/admin/server/actor/org_unit_custom_tree"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Floating Groups"  
+      url="/eg/staff/admin/server/config/floating_groups"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Global Flags"  
+      url="/eg/staff/admin/server/config/global_flag"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Hard Due Date Changes"  
+      url="./staff/admin/server/config/hard_due_date"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Hold Matchpoint Weights"  
+      url="/eg/staff/admin/server/config/hold_matrix_weights"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Import Match Sets"  
+      url="/eg/staff/admin/server/vandelay/match_set"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Coded Value Maps"  
+      url="/eg/staff/admin/server/config/coded_value_map"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Import Remove Fields"  
+      url="/eg/staff/admin/server/vandelay/import_bib_trash_group"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Record Attributes"  
+      url="/eg/staff/admin/server/config/record_attr_definition"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Search/Facet Class FTS Maps"  
+      url="/eg/staff/admin/server/config/metabib_class_ts_map"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Search/Facet Classes"  
+      url="/eg/staff/admin/server/config/metabib_class"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Search/Facet Field FTS Maps"  
+      url="/eg/staff/admin/server/config/metabib_field_ts_map"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Search/Facet Fields"  
+      url="/eg/staff/admin/server/config/metabib_field"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="MARC Tag Tables"  
+      url="/eg/staff/admin/server/config/marc_field"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Org Unit Proximity Adjustments"  
+      url="/eg/staff/admin/server/config/org_unit_proximity_adjustment"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Organization Types"  
+      url="/eg/staff/admin/server/legacy/actor/org_unit_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Org Unit Setting Types"  
+      url="/eg/staff/admin/server/config/org_unit_setting_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Organizational Units"  
+      url="/eg/staff/admin/server/legacy/actor/org_unit"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Permission Groups"  
+      url="/eg/staff/admin/server/legacy/permission/grp_tree"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Permissions"  
+      url="/eg/staff/admin/server/legacy/permission/perm_list"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Remote Accounts"  
+      url="/eg/staff/admin/server/config/remote_account"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="SMS Carriers"  
+      url="/eg/staff/admin/server/config/sms_carrier"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="User Activity Types"  
+      url="/eg/staff/admin/server/config/usr_activity_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="User Setting Types"  
+      url="/eg/staff/admin/server/config/usr_setting_type"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Weights Association"  
+      url="/eg/staff/admin/server/config/weight_assoc"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Z39.50 Index Field Maps"  
+      url="/eg/staff/admin/server/config/z3950_index_field_map"></eg-link-table-link>
+    <eg-link-table-link i18n-label label="Z39.50 Servers"  
+      url="/eg/staff/admin/server/config/z3950_source"></eg-link-table-link>
+  </eg-link-table>
+</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server.module.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server.module.ts
new file mode 100644 (file)
index 0000000..8abab50
--- /dev/null
@@ -0,0 +1,21 @@
+import {NgModule} from '@angular/core';
+import {EgStaffCommonModule} from '@eg/staff/common.module';
+import {EgAdminServerRoutingModule} from './routing.module';
+import {AdminServerSplashComponent} from './admin-server-splash.component';
+
+@NgModule({
+  declarations: [
+      AdminServerSplashComponent
+  ],
+  imports: [
+    EgStaffCommonModule,
+    EgAdminServerRoutingModule
+  ],
+  providers: [
+  ]
+})
+
+export class EgAdminServerModule { 
+}
+
+
index 79aa4ed..2a5a90f 100644 (file)
@@ -1,7 +1,11 @@
 import {NgModule}             from '@angular/core';
 import {RouterModule, Routes} from '@angular/router';
+import {AdminServerSplashComponent} from './admin-server-splash.component';
 
 const routes: Routes = [{
+    path: 'splash',
+    component: AdminServerSplashComponent
+}, {
     path: 'config',
     loadChildren: '@eg/staff/admin/server/config/config.module#EgAdminServerConfigModule'
 }];
index 4347c64..e7e8b29 100644 (file)
@@ -16,6 +16,8 @@ import {EgStringComponent} from '@eg/share/string/string.component';
 import {EgStringService} from '@eg/share/string/string.service';
 import {FmRecordEditorComponent} from '@eg/share/fm-editor/fm-editor.component';
 import {EgDateSelectComponent} from '@eg/share/date-select/date-select.component';
+import {EgLinkTableComponent, EgLinkTableLinkComponent} 
+    from '@eg/staff/share/link-table/link-table.component';
 
 /**
  * Imports the EG common modules and adds modules common to all staff UI's.
@@ -35,7 +37,9 @@ import {EgDateSelectComponent} from '@eg/share/date-select/date-select.component
     EgStringComponent,
     EgOpChangeComponent,
     FmRecordEditorComponent,
-    EgDateSelectComponent
+    EgDateSelectComponent,
+    EgLinkTableComponent, 
+    EgLinkTableLinkComponent
   ],
   imports: [
     EgCommonModule
@@ -54,7 +58,9 @@ import {EgDateSelectComponent} from '@eg/share/date-select/date-select.component
     EgStringComponent,
     EgOpChangeComponent,
     FmRecordEditorComponent,
-    EgDateSelectComponent
+    EgDateSelectComponent,
+    EgLinkTableComponent, 
+    EgLinkTableLinkComponent
   ]
 })
 
index c5d5fcb..4d2fbcf 100644 (file)
             <span class="material-icons">computer</span>
             <span i18n>Registered Workstations</span>
           </a>
+          <a class="dropdown-item"
+              routerLink="/staff/admin/server/splash">
+            <span class="material-icons">account_balance</span>
+            <span i18n>Server Administration</span>
+          </a>
         </div>
       </div>
     </div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.html b/Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.html
new file mode 100644 (file)
index 0000000..3a375d2
--- /dev/null
@@ -0,0 +1,12 @@
+
+<div class="d-flex border-top border-light" 
+    *ngFor="let row of rowBuckets; let rowIdx = index">
+  <div class="flex-1 p-2" *ngFor="let col of colList">
+    <ng-container *ngIf="row[col]">
+      <a [href]="row[col].url" class="with-material-icon">
+        <span class="material-icons">edit</span>
+        <span>{{row[col].label}}</span>
+      </a>
+    </ng-container>
+  </div>
+</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.ts b/Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.ts
new file mode 100644 (file)
index 0000000..1fc1fc9
--- /dev/null
@@ -0,0 +1,69 @@
+import {Component, Input, OnInit, AfterViewInit, Host} from '@angular/core';
+
+interface LinkTableLink {
+    label: string,
+    url: string
+}
+
+@Component({
+    selector: 'eg-link-table',
+    templateUrl: './link-table.component.html'
+})
+
+export class EgLinkTableComponent implements AfterViewInit {
+    @Input() columnCount: number;
+    links: LinkTableLink[];
+    rowBuckets: any[];
+    colList: number[];
+    colWidth: number;
+
+    constructor() {
+        this.links = [];
+        this.rowBuckets = [];
+        this.colList = [];
+    }
+
+    ngAfterViewInit() {
+        // table-ize the links 
+        let rowCount = Math.ceil(this.links.length / this.columnCount);
+        this.colWidth = Math.floor(12 / this.columnCount); // Bootstrap 12-grid
+
+        for (let col = 0; col < this.columnCount; col++)
+            this.colList.push(col);
+
+        // Modifying values in AfterViewInit without other activity
+        // happening can result in the modified values not getting
+        // displayed until some action occurs.  Modifing after
+        // via timeout works though.
+        setTimeout(() => {
+            for (let row = 0; row < rowCount; row++) {
+                this.rowBuckets[row] = [
+                    this.links[row],
+                    this.links[row + Number(rowCount)],
+                    this.links[row + Number(rowCount * 2)]
+                ];
+            }
+        });
+    }
+}
+
+@Component({
+    selector: 'eg-link-table-link',
+    template: '<ng-template></ng-template>'
+})
+
+export class EgLinkTableLinkComponent implements OnInit {
+    @Input() label: string;
+    @Input() url: string;
+
+    constructor(@Host() private linkTable: EgLinkTableComponent) {}
+
+    ngOnInit() {
+        this.linkTable.links.push({
+            label : this.label,
+            url: this.url
+        });
+    }
+}
+
+