LP1849212: Improvements to the Simplified Marc Editor
authorJane Sandberg <sandbej@linnbenton.edu>
Wed, 26 Aug 2020 22:51:32 +0000 (15:51 -0700)
committerJane Sandberg <sandbej@linnbenton.edu>
Thu, 27 Aug 2020 16:35:18 +0000 (09:35 -0700)
* 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 <sandbej@linnbenton.edu>
Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.html
Open-ILS/src/eg2/src/app/staff/share/course.service.ts
Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-field.component.ts
Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor-subfield.component.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/share/marc-edit/simplified-editor/simplified-editor.module.ts

index c7f6f20..da60360 100644 (file)
                 </div>
               </div>
               <eg-marc-simplified-editor (xmlRecordEvent)="associateBriefRecord($event)" buttonLabel="Add material" i18n-buttonLabel>
-                <eg-marc-simplified-editor-field tag="245" subfield="a"></eg-marc-simplified-editor-field>
-                <eg-marc-simplified-editor-field tag="856" subfield="u"></eg-marc-simplified-editor-field>
-                <eg-marc-simplified-editor-field tag="856" subfield="9" defaultValue="CONS"></eg-marc-simplified-editor-field>
-                <eg-marc-simplified-editor-field tag="990" subfield="a" i18n-defaultValue
-                  defaultValue="This record was created using the Course Materials Module -- please edit it there">
-                  </eg-marc-simplified-editor-field>
+                <eg-marc-simplified-editor-field tag="245" ind1="0" ind2="0">
+                  <eg-marc-simplified-editor-subfield code="a"></eg-marc-simplified-editor-subfield>
+                </eg-marc-simplified-editor-field>
+                <eg-marc-simplified-editor-field tag="856" ind1="4" ind2="0">
+                  <eg-marc-simplified-editor-subfield code="u"></eg-marc-simplified-editor-subfield>
+                  <eg-marc-simplified-editor-subfield code="y"></eg-marc-simplified-editor-subfield>
+                  <eg-marc-simplified-editor-subfield code="9" [defaultValue]="currentCourse.owning_lib().shortname()"></eg-marc-simplified-editor-subfield>
+                </eg-marc-simplified-editor-field>
+                <eg-marc-simplified-editor-field tag="990">
+                  <eg-marc-simplified-editor-subfield code="a" i18n-defaultValue
+                    defaultValue="This record was created using the Course Materials Module -- please edit it there">
+                  </eg-marc-simplified-editor-subfield>
+                </eg-marc-simplified-editor-field>
               </eg-marc-simplified-editor>
             </ng-template>
           </li>
index bc7f707..7443a79 100644 (file)
@@ -30,10 +30,12 @@ export class CourseService {
     getCourses(course_ids?: Number[]): Promise<IdlObject[]> {
         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();
         }
     }
 
index bfed188..0638ec5 100644 (file)
@@ -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: '<ng-template></ng-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<MarcSimplifiedEditorSubfieldComponent>;
+
+  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 (file)
index 0000000..93195cf
--- /dev/null
@@ -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: '<ng-template></ng-template>'
+})
+export class MarcSimplifiedEditorSubfieldComponent {
+
+  @Input() code: string;
+  @Input() defaultValue: string;
+
+}
index ec40da9..3c0fe7a 100644 (file)
@@ -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