From 22f2238a3cf7ea8c70485fdf4507fa1e5fd46342 Mon Sep 17 00:00:00 2001 From: Jane Sandberg Date: Wed, 26 Aug 2020 15:51:32 -0700 Subject: [PATCH] LP1849212: Improvements to the Simplified Marc Editor * Templates can now set multiple subfields for the same field * Templates can now set indicator values * Improvements to the course associate brief record interface to use these improvements Signed-off-by: Jane Sandberg --- .../course-associate-material.component.html | 19 +++++--- .../src/eg2/src/app/staff/share/course.service.ts | 6 ++- .../simplified-editor-field.component.ts | 56 ++++++++++++++-------- .../simplified-editor-subfield.component.ts | 17 +++++++ .../simplified-editor/simplified-editor.module.ts | 3 ++ 5 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-subfield.component.ts diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.html b/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.html index c7f6f2036e..da6036063a 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.html @@ -163,12 +163,19 @@ - - - - - + + + + + + + + + + + + diff --git a/Open-ILS/src/eg2/src/app/staff/share/course.service.ts b/Open-ILS/src/eg2/src/app/staff/share/course.service.ts index bc7f707359..7443a79c2d 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/course.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/course.service.ts @@ -30,10 +30,12 @@ export class CourseService { getCourses(course_ids?: Number[]): Promise { if (!course_ids) { return this.pcrud.retrieveAll('acmc', - {}, {atomic: true}).toPromise(); + {flesh: 1, flesh_fields: {'acmc': ['owning_lib']}}, + {atomic: true}).toPromise(); } else { return this.pcrud.search('acmc', {id: course_ids}, - {}, {atomic: true}).toPromise(); + {flesh: 1, flesh_fields: {'acmc': ['owning_lib']}}, + {atomic: true}).toPromise(); } } diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-field.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-field.component.ts index bfed188b22..0638ec5751 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-field.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-field.component.ts @@ -1,6 +1,7 @@ -import {Component, Host, Input, OnInit} from '@angular/core'; +import {Component, Host, Input, OnInit, Output, ViewChildren, QueryList, AfterViewInit} from '@angular/core'; import {MarcSimplifiedEditorComponent} from './simplified-editor.component'; -import {MarcSubfield} from '../marcrecord'; +import {MarcField, MarcSubfield} from '../marcrecord'; +import { MarcSimplifiedEditorSubfieldComponent } from './simplified-editor-subfield.component'; /** * A field that a user can edit, which will later be @@ -11,29 +12,44 @@ import {MarcSubfield} from '../marcrecord'; selector: 'eg-marc-simplified-editor-field', template: '' }) -export class MarcSimplifiedEditorFieldComponent implements OnInit { +export class MarcSimplifiedEditorFieldComponent implements OnInit, AfterViewInit { - @Input() tag: string; - @Input() subfield: string; - @Input() defaultValue: string; + @Input() tag = 'a'; + @Input() ind1 = ' '; + @Input() ind2 = ' '; + + @ViewChildren(MarcSimplifiedEditorSubfieldComponent) + subfields: QueryList; + + marcVersion: MarcField; + + addSubfield: (subfield: MarcSubfield) => void; constructor(@Host() private editor: MarcSimplifiedEditorComponent) {} ngOnInit() { - this.editor.addField({ - tag: this.tag, - subfields: [[ - this.subfield, - this.defaultValue ? this.defaultValue : '', - 0 - ]], - authValid: false, - authChecked: false, - isCtrlField: false, - isControlfield: () => false, - indicator: (ind: number) => '0', - deleteExactSubfields: (...subfield: MarcSubfield[]) => 0, - }); + this.marcVersion = { + tag: this.tag, + authValid: false, + authChecked: false, + isCtrlField: false, + isControlfield: () => false, + indicator: (ind: number) => (ind === 1) ? this.ind1 : this.ind2, + deleteExactSubfields: (...subfield: MarcSubfield[]) => 0, // not used by the simplified editor + }; + } + + ngAfterViewInit() { + this.subfields.forEach((subfield: MarcSimplifiedEditorSubfieldComponent, index: number) => { + this.marcVersion.subfields.push( + [ + subfield.code, + subfield.defaultValue ? subfield.defaultValue : '', + index + ] + ); + }); + this.editor.addField(this.marcVersion); } } diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-subfield.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-subfield.component.ts new file mode 100644 index 0000000000..93195cff1f --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-subfield.component.ts @@ -0,0 +1,17 @@ +import {Component, Input} from '@angular/core'; + +/** + * A subfield that a user can edit, which will later be + * compiled into MARC + */ + +@Component({ + selector: 'eg-marc-simplified-editor-subfield', + template: '' +}) +export class MarcSimplifiedEditorSubfieldComponent { + + @Input() code: string; + @Input() defaultValue: string; + +} diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor.module.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor.module.ts index ec40da9938..3c0fe7aac2 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor.module.ts @@ -3,12 +3,14 @@ import {StaffCommonModule} from '@eg/staff/common.module'; import {CommonWidgetsModule} from '@eg/share/common-widgets.module'; import {MarcSimplifiedEditorComponent} from './simplified-editor.component'; import {MarcSimplifiedEditorFieldComponent} from './simplified-editor-field.component'; +import {MarcSimplifiedEditorSubfieldComponent} from './simplified-editor-subfield.component'; import {TagTableService} from '../tagtable.service'; @NgModule({ declarations: [ MarcSimplifiedEditorComponent, MarcSimplifiedEditorFieldComponent, + MarcSimplifiedEditorSubfieldComponent, ], imports: [ StaffCommonModule, @@ -17,6 +19,7 @@ import {TagTableService} from '../tagtable.service'; exports: [ MarcSimplifiedEditorComponent, MarcSimplifiedEditorFieldComponent, + MarcSimplifiedEditorSubfieldComponent ], providers: [ TagTableService -- 2.11.0