}
return this.a[idx];
};
+
+ if (!field.label) {
+ field.label = field.name;
+ }
});
return x;
@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 {
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 = [];
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 {
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 + '';
}
<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"
<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"
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,
--- /dev/null
+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 {}
+
+
--- /dev/null
+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 {}
+
+
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({
// 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;
(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));
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));
*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>