LP#1626157 hold weight / copy status config UI's; fm form fixes
authorBill Erickson <berickxx@gmail.com>
Fri, 25 May 2018 20:00:45 +0000 (16:00 -0400)
committerBill Erickson <berickxx@gmail.com>
Fri, 25 May 2018 20:00:45 +0000 (16:00 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/core/idl.service.ts
Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts
Open-ILS/src/eg2/src/app/share/util/format.service.ts
Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
Open-ILS/src/eg2/src/app/staff/admin/server/config/config.module.ts
Open-ILS/src/eg2/src/app/staff/admin/server/config/copy_status.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/admin/server/config/hold_matrix_weights.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/admin/server/config/routing.module.ts
Open-ILS/src/eg2/src/app/staff/share/admin-page/admin-page.component.ts
Open-ILS/src/eg2/src/app/staff/share/link-table/link-table.component.html

index 3362593..82f0ab7 100644 (file)
@@ -64,6 +64,10 @@ export class EgIdlService {
                         }
                         return this.a[idx];
                     };
+
+                    if (!field.label) {
+                        field.label = field.name;
+                    }
                 });
 
                 return x;
index e80d9f0..84a347b 100644 (file)
@@ -28,7 +28,9 @@ interface CustomFieldContext {
 
 @Component({
   selector: 'eg-fm-record-editor',
-  templateUrl: './fm-editor.component.html'
+  templateUrl: './fm-editor.component.html',
+  // fix funky checkbox alignment.
+  styles: ['input[type="checkbox"] {margin-left: 0px}']
 })
 export class FmRecordEditorComponent
     extends EgDialogComponent implements OnInit {
@@ -219,8 +221,7 @@ export class FmRecordEditorComponent
     private getFieldList(): Promise<any> {
 
         this.fields = this.idlDef.fields.filter(f =>
-            f.virtual !== 'true' &&
-            !this.hiddenFieldsList.includes(f.name)
+            !f.virtual && !this.hiddenFieldsList.includes(f.name)
         );
 
         const promises = [];
index 7abe656..ee9b8fc 100644 (file)
@@ -3,6 +3,10 @@ import {DatePipe, CurrencyPipe} from '@angular/common';
 import {EgIdlService, EgIdlObject} from '@eg/core/idl.service';
 import {EgOrgService} from '@eg/core/org.service';
 
+/**
+ * Format IDL vield values for display.
+ */
+
 declare var OpenSRF;
 
 export interface EgFormatParams {
@@ -71,6 +75,13 @@ export class EgFormatService {
             case 'money':
                 return this.currencyPipe.transform(value);
 
+            case 'bool':
+                // Slightly better than a bare 't' or 'f'.
+                // Should probably add a global true/false string.
+                return Boolean(
+                    value === 't' || value === 1 || value === '1'
+                ).toString();
+
             default:
                 return value + '';
         }
index 8de396c..2bd8411 100644 (file)
@@ -38,7 +38,7 @@
     <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>
+      routerLink="/staff/admin/server/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"  
@@ -50,7 +50,7 @@
     <eg-link-table-link i18n-label label="Hard Due Date Changes"  
       routerLink="/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>
+      routerLink="/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"  
index 1a322d4..4f8117c 100644 (file)
@@ -1,18 +1,22 @@
 import {NgModule} from '@angular/core';
 import {EgStaffCommonModule} from '@eg/staff/common.module';
 import {EgAdminServerConfigRoutingModule} from './routing.module';
+import {EgGridModule} from '@eg/share/grid/grid.module';
 import {EgAdminPageComponent} from '@eg/staff/share/admin-page/admin-page.component';
 import {BillingTypeComponent} from './billing_type.component';
 import {HardDueDateComponent} from './hard_due_date.component';
 import {SmsCarrierComponent} from './sms_carrier.component';
-import {EgGridModule} from '@eg/share/grid/grid.module';
+import {HoldMatrixWeightsComponent} from './hold_matrix_weights';
+import {CopyStatusComponent} from './copy_status';
 
 @NgModule({
   declarations: [
       EgAdminPageComponent,
       BillingTypeComponent,
       HardDueDateComponent,
-      SmsCarrierComponent
+      SmsCarrierComponent,
+      HoldMatrixWeightsComponent,
+      CopyStatusComponent
   ],
   imports: [
     EgStaffCommonModule,
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/config/copy_status.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/config/copy_status.ts
new file mode 100644 (file)
index 0000000..9291185
--- /dev/null
@@ -0,0 +1,14 @@
+import {Component, OnInit} from '@angular/core';
+
+@Component({
+    template: `
+      <eg-staff-banner bannerText="Copy Status Configuration" i18n-bannerText>
+      </eg-staff-banner>
+      <eg-admin-page idlClass="ccs" sortField="name" dialogSize='lg'>
+      </eg-admin-page>
+    `
+})
+
+export class CopyStatusComponent {}
+
+
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/config/hold_matrix_weights.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/config/hold_matrix_weights.ts
new file mode 100644 (file)
index 0000000..bee077f
--- /dev/null
@@ -0,0 +1,14 @@
+import {Component, OnInit} from '@angular/core';
+
+@Component({
+    template: `
+      <eg-staff-banner bannerText="Hold Matrix Weights Configuration" i18n-bannerText>
+      </eg-staff-banner>
+      <eg-admin-page idlClass="chmw" sortField="name" dialogSize='lg'>
+      </eg-admin-page>
+    `
+})
+
+export class HoldMatrixWeightsComponent {}
+
+
index 64dc8b6..3b1aaf6 100644 (file)
@@ -3,16 +3,24 @@ import {RouterModule, Routes} from '@angular/router';
 import {BillingTypeComponent} from './billing_type.component';
 import {HardDueDateComponent} from './hard_due_date.component';
 import {SmsCarrierComponent} from './sms_carrier.component';
+import {HoldMatrixWeightsComponent} from './hold_matrix_weights';
+import {CopyStatusComponent} from './copy_status';
 
 const routes: Routes = [{
   path: 'billing_type',
   component: BillingTypeComponent
 }, {
+  path: 'copy_status',
+  component: CopyStatusComponent
+}, {
   path: 'hard_due_date',
   component: HardDueDateComponent
 }, {
   path: 'sms_carrier',
   component: SmsCarrierComponent
+}, {
+  path: 'hold_matrix_weights',
+  component: HoldMatrixWeightsComponent
 }];
 
 @NgModule({
index 0d146d3..4d1cd29 100644 (file)
@@ -34,6 +34,9 @@ export class EgAdminPageComponent implements OnInit {
     // that requires no special handling, filtering, etc.
     @Input() dataSource: EgGridDataSource;
 
+    // Size of create/edito dialog.  Uses large by default.
+    @Input() dialogSize: 'sm' | 'lg' = 'lg';
+
     @ViewChild('grid') grid: EgGridComponent;
     @ViewChild('editDialog') editDialog: FmRecordEditorComponent;
     @ViewChild('successString') successString: EgStringComponent;
@@ -67,7 +70,7 @@ export class EgAdminPageComponent implements OnInit {
             (idlThing: EgIdlObject) => {
                 this.editDialog.mode = 'update';
                 this.editDialog.recId = idlThing[this.pkeyField]();
-                this.editDialog.open().then(
+                this.editDialog.open({size: this.dialogSize}).then(
                     ok => {
                         this.successString.current()
                             .then(str => this.toast.success(str));
@@ -80,7 +83,7 @@ export class EgAdminPageComponent implements OnInit {
 
         this.createNew = () => {
             this.editDialog.mode = 'create';
-            this.editDialog.open().then(
+            this.editDialog.open({size: this.dialogSize}).then(
                 ok => {
                     this.createString.current()
                         .then(str => this.toast.success(str));
index 8001f46..0d82279 100644 (file)
@@ -3,11 +3,20 @@
     *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" [routerLink]="row[col].routerLink"
-        class="with-material-icon">
-        <span class="material-icons">edit</span>
-        <span>{{row[col].label}}</span>
-      </a>
+      <!-- avoid mixing [href] and [routerLink] in one link, 
+          because routerLink will take precedence, even if it's empty -->
+      <ng-container *ngIf="row[col].url">
+        <a [href]="row[col].url" class="with-material-icon">
+          <span class="material-icons">edit</span>
+          <span>{{row[col].label}}</span>
+        </a>
+      </ng-container>
+      <ng-container *ngIf="row[col].routerLink">
+        <a [routerLink]="row[col].routerLink" class="with-material-icon">
+          <span class="material-icons">edit</span>
+          <span>{{row[col].label}}</span>
+        </a>
+      </ng-container>
     </ng-container>
   </div>
 </div>