-<div class="row bg-info">
+<div class="row bg-info p-2">
<b>BATCH</b>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(2)}">
<ng-container *ngIf="volIdx == 0">
<input type="number" class="form-control form-control-sm"
+ [required]="true"
[ngModel]="orgNode.children.length"
(ngModelChange)="volCountChanged(orgNode, $event)"/>
</ng-container>
<div class="p-1" [ngStyle]="{flex: flexAt(3)}">
<ng-container *ngIf="copyIdx == 0">
<eg-combobox
- [entries]="volClasses"
+ [startId]="volNode.target.label_class()"
[smallFormControl]="true"
[required]="true"
- (onChange)="volClassChanged(volNode, $event)">
+ (onChange)="applyVolValue(volNode.target, 'label_class', $event)">
+ <eg-combobox-entry *ngFor="let cls of volClasses"
+ [entryId]="cls.id()" [entryLabel]="cls.name()">
+ </eg-combobox-entry>
</eg-combobox>
</ng-container>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(4)}">
<ng-container *ngIf="copyIdx == 0">
<eg-combobox
+ [startId]="volNode.target.prefix()"
+ [required]="true"
[smallFormControl]="true"
- (onChange)="volPrefixChanged(volNode, $event)">
- <eg-combobox-entry entryId="-1" entryLabel="<Unset>"
- i18n-entryLabel></eg-combobox-entry>
+ (onChange)="applyVolValue(volNode.target, 'prefix', $event)">
+ <eg-combobox-entry
+ [entryId]="-1"
+ entryLabel="<Unset>" i18n-entryLabel>
+ </eg-combobox-entry>
<eg-combobox-entry *ngFor="let pfx of volPrefixes"
[entryId]="pfx.id()" [entryLabel]="pfx.label()">
</eg-combobox-entry>
</ng-container>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(5)}">
+ <ng-container *ngIf="copyIdx == 0">
+ <input class="form-control form-control-sm" type="text"
+ [required]="true"
+ [ngModel]="volNode.target.label()"
+ (onChange)="applyVolValue(volNode.target, 'label', $event)">
+ </ng-container>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(6)}">
+ <ng-container *ngIf="copyIdx == 0">
+ <eg-combobox
+ [startId]="volNode.target.suffix()"
+ [required]="true"
+ [smallFormControl]="true"
+ (onChange)="applyVolValue(volNode.target, 'suffix', $event)">
+ <eg-combobox-entry
+ [entryId]="-1"
+ entryLabel="<Unset>" i18n-entryLabel>
+ </eg-combobox-entry>
+ <eg-combobox-entry *ngFor="let sfx of volSuffixes"
+ [entryId]="sfx.id()" [entryLabel]="sfx.label()">
+ </eg-combobox-entry>
+ </eg-combobox>
+ </ng-container>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(7)}">
+ <ng-container *ngIf="copyIdx == 0">
+ <input type="number" class="form-control form-control-sm"
+ [required]="true"
+ [ngModel]="volNode.children.length"
+ (ngModelChange)="copyCountChanged(volNode, $event)"/>
+ </ng-container>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(8)}">
+ <input type="text" class="form-control form-control-sm"
+ [required]="true"
+ [ngModel]="copyNode.target.barcode()"
+ (ngModelChange)="applyCopyValue(copyNode.target, 'barcode', $event)"/>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(9)}">
+ <input type="number" class="form-control form-control-sm"
+ [ngModel]="copyNode.target.copy_number()"
+ (ngModelChange)="applyCopyValue(copyNode.target, 'copy_number', $event)"/>
</div>
<div class="p-1" [ngStyle]="{flex: flexAt(10)}">
+ <eg-combobox
+ [startId]="copyNode.target.parts()[0] ? copyNode.target.parts()[0].id() : null"
+ [smallFormControl]="true"
+ (onChange)="copyPartChanged(copyNode, $event)">
+ <eg-combobox-entry *ngFor="let part of bibParts[volNode.target.record()]"
+ [entryId]="part.id()" [entryLabel]="part.label()">
+ </eg-combobox-entry>
+ </eg-combobox>
</div>
</div>
</ng-container>
</ng-container>
</ng-container>
-
@Component({
selector: 'eg-vol-edit',
- templateUrl: 'vol-edit.component.html'
+ templateUrl: 'vol-edit.component.html',
+ styleUrls: ['vol-edit.component.css']
})
volClasses: IdlObject[] = null;
volPrefixes: IdlObject[] = null;
volSuffixes: IdlObject[] = null;
+ bibParts: {[bibId: number]: IdlObject[]} = {};
constructor(
+ private pcrud: PcrudService,
private holdings: HoldingsService
) {}
ngOnInit() {
+ this.fetchBibParts();
+
// TODO: Filter these to only show org-scoped values
// plus any values otherwise needed for the current
// holdings tree.
this.volSuffixes = suffixes.filter(pfx => pfx.id() !== -1));
}
+ fetchBibParts() {
+
+ this.context.orgNodes().forEach(orgNode => {
+ orgNode.children.forEach(volNode =>
+ this.bibParts[volNode.target.record()] = []
+ );
+ });
+
+ this.pcrud.search('bmp',
+ {record: Object.keys(this.bibParts), deleted: 'f'})
+ .subscribe(
+ part => {
+ if (!this.bibParts[part.record()]) {
+ this.bibParts[part.record()] = [];
+ }
+ this.bibParts[part.record()].push(part);
+ },
+ err => {},
+ () => {
+ Object.keys(this.bibParts).forEach(bibId => {
+ this.bibParts[bibId] = this.bibParts[bibId]
+ .sort((p1, p2) =>
+ p1.label_sortkey() < p2.label_sortkey() ? -1 : 1)
+ });
+ }
+ );
+ }
+
flexAt(column: number): number {
return this.flexSettings[column];
}
- volCountChanged(orgNode: HoldingsTreeNode, value: number) {
- console.log('vol set set to ', value);
+ volCountChanged(orgNode: HoldingsTreeNode, count: number) {
+ console.log('vol set set to ', count);
+ }
+
+ copyCountChanged(volNode: HoldingsTreeNode, count: number) {
+ console.log('vol set set to ', count);
}
applyVolValue(vol: IdlObject, key: string, value: any) {
}
}
- volClassChanged(volNode: HoldingsTreeNode, entry: ComboboxEntry) {
- if (!entry) { return; }
- this.applyVolValue(volNode.target, 'label_class', entry.id);
- }
-
- volPrefixChanged(volNode: HoldingsTreeNode, entry: ComboboxEntry) {
- if (!entry) { return; }
- this.applyVolValue(volNode.target, 'prefix', entry.id);
+ applyCopyValue(copy: IdlObject, key: string, value: any) {
+ if (copy[key]() !== value) {
+ copy[key](value);
+ copy.ischanged(true);
+ }
}
- volSuffixChanged(volNode: HoldingsTreeNode, entry: ComboboxEntry) {
- if (!entry) { return; }
- this.applyVolValue(volNode.target, 'suffix', entry.id);
+ copyPartChanged(copyNode: HoldingsTreeNode, entry: ComboboxEntry) {
+ // TODO
}
}