
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Evergreen ILS". The branch, main has been updated via a64cf056ae189020ac0a530b86cf067a1884cfb1 (commit) via c5aabc4f66493f1ed97e49847e3aabb8785a7316 (commit) via c45bd30193155f5d589a7890616c4c36de545c29 (commit) via 0aff648d7ac87236c01560d73e5a088841465d59 (commit) from 7c09b3bdb5cc55d0ada3801a63ba7acac2891487 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a64cf056ae189020ac0a530b86cf067a1884cfb1 Author: Stephanie Leary <stephanie.leary@equinoxoli.org> Date: Tue Jul 8 18:38:01 2025 +0000 LP2083026 Follow-up 2: cleanup Removes stray comments and vestigial HTML. Signed-off-by: Stephanie Leary <stephanie.leary@equinoxoli.org> Signed-off-by: Sarah Cruz <scruz@georgialibraries.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts index 409f99866a..dbd42d0def 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts @@ -411,8 +411,6 @@ implements OnInit, AfterViewInit, OnDestroy { case 'ind1': this.field.ind1 = value; break; case 'ind2': this.field.ind2 = value; break; case 'ffld': - // TODO: concatenate multi-character fields - // Track locally and propagate to the record. this.ffValue = value; this.record.setFixedField(this.fixedFieldCode, value); diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html index 24dc76fbd2..a817ce510c 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html @@ -197,7 +197,7 @@ <div class="col-md-2 col-sm-4"> <!-- Nature of Contents = BKS: 008 / 24-27 or 006 / 07-10 ; CNR: 008 / 25-27 or 006 / 08-10 --> <eg-fixed-field i18n-fieldLabel [context]="context" - fieldCode="Cont" fieldLabel="Cont" chars="4"></eg-fixed-field> + fieldCode="Cont" fieldLabel="Cont"></eg-fixed-field> </div> <div class="col-md-2 col-sm-4"> @@ -234,7 +234,7 @@ <div class="col-md-2 col-sm-4"> <!-- Illustrations = 008 / 18-21 or 006 / 01-04 --> <eg-fixed-field i18n-fieldLabel [context]="context" - fieldCode="Ills" fieldLabel="Ills" chars="4"></eg-fixed-field> + fieldCode="Ills" fieldLabel="Ills"></eg-fixed-field> </div> <div class="col-md-2 col-sm-4"> commit c5aabc4f66493f1ed97e49847e3aabb8785a7316 Author: Stephanie Leary <stephanie.leary@equinoxoli.org> Date: Mon Jul 7 20:40:53 2025 +0000 LP2083026 Follow-up: typo fix Fixes a 1/L typo in some conditional checks. Signed-off-by: Stephanie Leary <stephanie.leary@equinoxoli.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> diff --git a/Open-ILS/src/eg2/src/assets/js/marcrecord.js b/Open-ILS/src/eg2/src/assets/js/marcrecord.js index 75032ecf7d..c9c10268dd 100644 --- a/Open-ILS/src/eg2/src/assets/js/marcrecord.js +++ b/Open-ILS/src/eg2/src/assets/js/marcrecord.js @@ -420,7 +420,7 @@ var MARC21 = { /* console.debug('008', MARC21.Record._ff_pos[field]._8); console.debug('006', MARC21.Record._ff_pos[field]._6); - console.debug('001', MARC21.Record._ff_pos[field]._1); + console.debug('001', MARC21.Record._ff_pos[field]._l); /***/ var rtype = this.recordType(); @@ -431,7 +431,7 @@ var MARC21 = { if (_6 && MARC21.Record._ff_pos[field]._6 && MARC21.Record._ff_pos[field]._6[rtype]) return !!MARC21.Record._ff_pos[field]._6[rtype].multivalue || false; - if (_l && MARC21.Record._ff_pos[field]._1 && MARC21.Record._ff_pos[field]._1[rtype]) + if (_l && MARC21.Record._ff_pos[field]._l && MARC21.Record._ff_pos[field]._l[rtype]) return !!MARC21.Record._ff_pos[field]._l[rtype].multivalue || false; return false; commit c45bd30193155f5d589a7890616c4c36de545c29 Author: Stephanie Leary <stephanie.leary@equinoxoli.org> Date: Tue Jul 1 22:03:30 2025 +0000 LP2083026 Comboboxes for multivalue fixed fields Enables combobox suggestions for fixed fields with multiple values (Ills, Cont, AccM, etc.) in the MARC rich editor. Displays these fixed fields as a fieldset group with a separate input for each character in the multivalue field. Release-note: Displays multivalue fixed fields (Ills, Cont, etc) as separate single-character inputs with combobox suggestions. Signed-off-by: Stephanie Leary <stephanie.leary@equinoxoli.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.css b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.css index d92486799e..bae40eac33 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.css +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.css @@ -25,6 +25,12 @@ input.form-control.type-ffld { width: 100%; } +#eg-marc-rich-editor input.form-control.type-ffld-char { + display: inline-block; + text-align: center; + width: clamp(1ch, 1.25rem, 1.5rem); +} + input.form-control.type-tag { display: block; /* Firefox is dumb */ font-weight: bold; @@ -95,4 +101,4 @@ textarea.bigtext { /* style for free text entry "choice" in combobox; will be highlighted w/blue background */ .unknown { font-style: italic; -} \ No newline at end of file +} diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.html b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.html index 3922b5abe8..7449b44d39 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.html +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.html @@ -35,7 +35,7 @@ Track their labels here. <eg-combobox #MARCCombo *ngIf="suggest" trigger="click" [domId]="domId" - [moreClasses]="'fw-bold form-control-sm type-'+fieldType" + [moreClasses]="moreClasses + ' fw-bold form-control-sm type-'+fieldType" tabindex="{{tabindex}}" [ariaLabel]="ariaLabel" [maxLength]="maxLength" diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts index c5cb355707..409f99866a 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/editable-content.component.ts @@ -204,9 +204,9 @@ implements OnInit, AfterViewInit, OnDestroy { case 'ffld': { this.applyFFOptions(); - // these fixed fields can include multiple values (which doesn't work well with combobox) or free text + // these fixed fields contain free text // TODO: remove check for AUT when authorities fixed field data is populated - const complexFields = ['AccM','Cont','Date1','Date2','Ills','LTxt','Relf','SpFm','Time']; + const complexFields = ['Date1','Date2','Time']; if (complexFields.includes(this.fixedFieldCode) || this.record.recordType() === 'AUT' ) { this.suggest = false; } @@ -411,6 +411,8 @@ implements OnInit, AfterViewInit, OnDestroy { case 'ind1': this.field.ind1 = value; break; case 'ind2': this.field.ind2 = value; break; case 'ffld': + // TODO: concatenate multi-character fields + // Track locally and propagate to the record. this.ffValue = value; this.record.setFixedField(this.fixedFieldCode, value); diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.css b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.css deleted file mode 100644 index cf7b271682..0000000000 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.css +++ /dev/null @@ -1,21 +0,0 @@ - -:host .popover { - font-family: monospace; - max-width: 550px; -} - -:host .popover-body { - max-height: 400px; - overflow-y: auto; - overflow-x: auto; - padding: 0; -} - -:host .popover-body .menu-entry { - white-space: nowrap; -} - -:host .popover-body .menu-entry:hover { - background-color: var(--popover-menu-hover); /* bootstrap color */ -} - diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html index 5f96ba1702..58dbf8def7 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html @@ -1,5 +1,6 @@ +<ng-container *ngIf="fieldMeta"> -<div class="ff-field row" *ngIf="fieldMeta"> +<div class="ff-field row" *ngIf="!isMultiValue()"> <label for="{{domId}}" class="col-sm-4 col-form-label form-label fw-bold" title="{{fieldMeta.description}}" i18n-title> {{fieldLabel}} </label> @@ -8,4 +9,20 @@ [fixedFieldCode]="fieldCode" fieldType="ffld" moreClasses="form-control-sm"> </eg-marc-editable-content> </div> -</div> \ No newline at end of file +</div> + +<fieldset class="ff-field row" *ngIf="isMultiValue()"> + <legend class="col-sm-4 col-form-label form-label fw-bold" title="{{fieldMeta.description}}" i18n-title> + {{fieldLabel}} + </legend> + <div class="ff-value col-sm-8 d-flex"> + <ng-container *ngFor="let char of separateCharacters(); let i = index;"> + <eg-marc-editable-content domId="{{domId}}-{{i}}" [context]="context" + [fixedFieldCode]="fieldCode + (i + 1)" ariaLabel="{{fieldLabel}} position {{i + 1}}" i18n-ariaLabel + fieldType="ffld" moreClasses="form-control-sm type-ffld-char"> + </eg-marc-editable-content> + </ng-container> + </div> +</fieldset> + +</ng-container> diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts index ec8798e4e6..8e856ab170 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts @@ -1,9 +1,7 @@ -import {Component, Input, Output, OnInit, EventEmitter, OnDestroy} from '@angular/core'; +import {Component, Input, OnInit, OnDestroy} from '@angular/core'; import {IdlObject} from '@eg/core/idl.service'; import {MarcRecord} from './marcrecord'; import {MarcEditContext} from './editor-context'; -import {TagTableService} from './tagtable.service'; -import { EgEvent } from '@eg/core/event.service'; import {Subject, takeUntil} from 'rxjs'; /** @@ -12,8 +10,7 @@ import {Subject, takeUntil} from 'rxjs'; @Component({ selector: 'eg-fixed-field', - templateUrl: './fixed-field.component.html', - styleUrls: ['fixed-field.component.css'] + templateUrl: './fixed-field.component.html' }) export class FixedFieldComponent implements OnInit, OnDestroy { @@ -28,6 +25,7 @@ export class FixedFieldComponent implements OnInit, OnDestroy { get record(): MarcRecord { return this.context.record; } fieldMeta: IdlObject; + fieldContent: string; private destroy$ = new Subject<void>(); constructor() {} @@ -44,13 +42,28 @@ export class FixedFieldComponent implements OnInit, OnDestroy { // If no field metadata is found for this fixed field code and // record type combo, the field will be hidden in the UI. return this.context.tagTable.getFfFieldMeta(this.fieldCode) - .then(fieldMeta => this.fieldMeta = fieldMeta); + .then(fieldMeta => { + this.fieldMeta = fieldMeta; + this.fieldContent = this.record.extractFixedField(this.fieldCode); + }); } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } + + separateCharacters() { + if (!this.isMultiValue()) { + return null; + } + + return Array.from(this.fieldContent); + } + + isMultiValue() { + return this.record.isFixedFieldMultivalue(this.fieldCode); + } } diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html index a817ce510c..24dc76fbd2 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html @@ -197,7 +197,7 @@ <div class="col-md-2 col-sm-4"> <!-- Nature of Contents = BKS: 008 / 24-27 or 006 / 07-10 ; CNR: 008 / 25-27 or 006 / 08-10 --> <eg-fixed-field i18n-fieldLabel [context]="context" - fieldCode="Cont" fieldLabel="Cont"></eg-fixed-field> + fieldCode="Cont" fieldLabel="Cont" chars="4"></eg-fixed-field> </div> <div class="col-md-2 col-sm-4"> @@ -234,7 +234,7 @@ <div class="col-md-2 col-sm-4"> <!-- Illustrations = 008 / 18-21 or 006 / 01-04 --> <eg-fixed-field i18n-fieldLabel [context]="context" - fieldCode="Ills" fieldLabel="Ills"></eg-fixed-field> + fieldCode="Ills" fieldLabel="Ills" chars="4"></eg-fixed-field> </div> <div class="col-md-2 col-sm-4"> diff --git a/Open-ILS/src/eg2/src/assets/js/marcrecord.js b/Open-ILS/src/eg2/src/assets/js/marcrecord.js index 768e5969bc..75032ecf7d 100644 --- a/Open-ILS/src/eg2/src/assets/js/marcrecord.js +++ b/Open-ILS/src/eg2/src/assets/js/marcrecord.js @@ -417,12 +417,24 @@ var MARC21 = { var _l = this.leader; var _8 = this.field('008').data; var _6 = this.field('006').data; + /* + console.debug('008', MARC21.Record._ff_pos[field]._8); + console.debug('006', MARC21.Record._ff_pos[field]._6); + console.debug('001', MARC21.Record._ff_pos[field]._1); + /***/ var rtype = this.recordType(); - if (_8) return !!MARC21.Record._ff_pos[field]._8[rtype].multivalue; - if (_6) return !!MARC21.Record._ff_pos[field]._6[rtype].multivalue; - if (_l) return !!MARC21.Record._ff_pos[field]._l[rtype].multivalue; + if (_8 && MARC21.Record._ff_pos[field]._8 && MARC21.Record._ff_pos[field]._8[rtype]) + return !!MARC21.Record._ff_pos[field]._8[rtype].multivalue || false; + + if (_6 && MARC21.Record._ff_pos[field]._6 && MARC21.Record._ff_pos[field]._6[rtype]) + return !!MARC21.Record._ff_pos[field]._6[rtype].multivalue || false; + + if (_l && MARC21.Record._ff_pos[field]._1 && MARC21.Record._ff_pos[field]._1[rtype]) + return !!MARC21.Record._ff_pos[field]._l[rtype].multivalue || false; + + return false; } this.extractFixedField = function (field, dflt) { commit 0aff648d7ac87236c01560d73e5a088841465d59 Author: Mike Rylander <mrylander@gmail.com> Date: Thu Jul 3 14:48:50 2025 -0400 LP2083026 Multivalue fixed field definitions Adds a multivalue flag to MARC fixed field definitions and enumerates each single-character value's position in the 008 and 006 fields. Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marcrecord.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marcrecord.ts index 2891d6f4b3..34686624ba 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marcrecord.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marcrecord.ts @@ -98,6 +98,10 @@ export class MarcRecord { return this.record.extractFixedField(fieldCode); } + isFixedFieldMultivalue(fieldCode: string): boolean { + return this.record.isFixedFieldMultivalue(fieldCode); + } + setFixedField(fieldCode: string, fieldValue: string): string { const response = this.record.setFixedField(fieldCode, fieldValue); this.fixedFieldChange.emit(fieldCode); diff --git a/Open-ILS/src/eg2/src/assets/js/marcrecord.js b/Open-ILS/src/eg2/src/assets/js/marcrecord.js index 9f8ac02623..768e5969bc 100644 --- a/Open-ILS/src/eg2/src/assets/js/marcrecord.js +++ b/Open-ILS/src/eg2/src/assets/js/marcrecord.js @@ -411,6 +411,20 @@ var MARC21 = { return 'BKS'; // default } + this.isFixedFieldMultivalue = function (field) { + if (!MARC21.Record._ff_pos[field]) return false; + + var _l = this.leader; + var _8 = this.field('008').data; + var _6 = this.field('006').data; + + var rtype = this.recordType(); + + if (_8) return !!MARC21.Record._ff_pos[field]._8[rtype].multivalue; + if (_6) return !!MARC21.Record._ff_pos[field]._6[rtype].multivalue; + if (_l) return !!MARC21.Record._ff_pos[field]._l[rtype].multivalue; + } + this.extractFixedField = function (field, dflt) { if (!MARC21.Record._ff_pos[field]) return null; @@ -757,12 +771,73 @@ MARC21.Record._ff_lengths = { MARC21.Record._ff_pos = { AccM : { _8 : { - SCO : {start: 24, len : 6, def : ' ' }, - REC : {start: 24, len : 6, def : ' ' } + SCO : {start: 24, len : 6, def : ' ', multivalue : true }, + REC : {start: 24, len : 6, def : ' ', multivalue : true } + }, + _6 : { + SCO : {start: 7, len : 6, def : ' ', multivalue : true }, + REC : {start: 7, len : 6, def : ' ', multivalue : true } + } + }, + // break out all six AccM characters individually: + AccM1 : { + _8 : { + SCO : {start: 24, len : 1, def : ' ' }, + REC : {start: 24, len : 1, def : ' ' } }, _6 : { - SCO : {start: 7, len : 6, def : ' ' }, - REC : {start: 7, len : 6, def : ' ' } + SCO : {start: 7, len : 1, def : ' ' }, + REC : {start: 7, len : 1, def : ' ' } + } + }, + AccM2 : { + _8 : { + SCO : {start: 25, len : 1, def : ' ' }, + REC : {start: 25, len : 1, def : ' ' } + }, + _6 : { + SCO : {start: 8, len : 1, def : ' ' }, + REC : {start: 8, len : 1, def : ' ' } + } + }, + AccM3 : { + _8 : { + SCO : {start: 26, len : 1, def : ' ' }, + REC : {start: 26, len : 1, def : ' ' } + }, + _6 : { + SCO : {start: 9, len : 1, def : ' ' }, + REC : {start: 9, len : 1, def : ' ' } + } + }, + AccM4 : { + _8 : { + SCO : {start: 27, len : 1, def : ' ' }, + REC : {start: 27, len : 1, def : ' ' } + }, + _6 : { + SCO : {start: 10, len : 1, def : ' ' }, + REC : {start: 10, len : 1, def : ' ' } + } + }, + AccM5 : { + _8 : { + SCO : {start: 28, len : 1, def : ' ' }, + REC : {start: 28, len : 1, def : ' ' } + }, + _6 : { + SCO : {start: 11, len : 1, def : ' ' }, + REC : {start: 11, len : 1, def : ' ' } + } + }, + AccM6 : { + _8 : { + SCO : {start: 29, len : 1, def : ' ' }, + REC : {start: 29, len : 1, def : ' ' } + }, + _6 : { + SCO : {start: 12, len : 1, def : ' ' }, + REC : {start: 12, len : 1, def : ' ' } } }, Alph : { @@ -833,12 +908,53 @@ MARC21.Record._ff_pos = { }, Cont : { _8 : { - BKS : {start : 24, len : 4, def : ' ' }, - SER : {start : 25, len : 3, def : ' ' } + BKS : {start : 24, len : 4, def : ' ', multivalue : true }, + SER : {start : 25, len : 3, def : ' ', multivalue : true } }, _6 : { - BKS : {start : 7, len : 4, def : ' ' }, - SER : {start : 8, len : 3, def : ' ' } + BKS : {start : 7, len : 4, def : ' ', multivalue : true }, + SER : {start : 8, len : 3, def : ' ', multivalue : true } + } + }, + // break out all four Cont characters individually: + Cont1 : { + _8 : { + BKS : {start : 24, len : 1, def : ' ' }, + SER : {start : 25, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 7, len : 1, def : ' ' }, + SER : {start : 8, len : 1, def : ' ' } + } + }, + Cont2 : { + _8 : { + BKS : {start : 25, len : 1, def : ' ' }, + SER : {start : 26, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 8, len : 1, def : ' ' }, + SER : {start : 9, len : 1, def : ' ' } + } + }, + Cont3 : { + _8 : { + BKS : {start : 26, len : 1, def : ' ' }, + SER : {start : 27, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 9, len : 1, def : ' ' }, + SER : {start : 10, len : 1, def : ' ' } + } + }, + Cont4 : { + _8 : { + BKS : {start : 27, len : 1, def : ' ' }, + SER : {start : 28, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 10, len : 1, def : ' ' }, + SER : {start : 11, len : 1, def : ' ' } } }, CrTp : { @@ -1017,10 +1133,43 @@ MARC21.Record._ff_pos = { }, Ills : { _8 : { - BKS : {start : 18, len : 4, def : ' ' } + BKS : {start : 18, len : 4, def : ' ', multivalue : true } }, _6 : { - BKS : {start : 1, len : 4, def : ' ' } + BKS : {start : 1, len : 4, def : ' ', multivalue : true } + } + }, + // break out all four Ills characters individually: + Ills1 : { + _8 : { + BKS : {start : 18, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 1, len : 1, def : ' ' } + } + }, + Ills2 : { + _8 : { + BKS : {start : 19, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 2, len : 1, def : ' ' } + } + }, + Ills3 : { + _8 : { + BKS : {start : 20, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 3, len : 1, def : ' ' } + } + }, + Ills4 : { + _8 : { + BKS : {start : 21, len : 1, def : ' ' } + }, + _6 : { + BKS : {start : 4, len : 1, def : ' ' } } }, Indx : { @@ -1060,12 +1209,33 @@ MARC21.Record._ff_pos = { }, LTxt : { _8 : { - SCO : {start : 30, len : 2, def : 'n'}, - REC : {start : 30, len : 2, def : ' '} + SCO : {start : 30, len : 2, def : 'n', multivalue : true }, + REC : {start : 30, len : 2, def : ' ', multivalue : true } + }, + _6 : { + SCO : {start : 13, len : 2, def : 'n', multivalue : true }, + REC : {start : 13, len : 2, def : ' ', multivalue : true } + }, + }, + // break out the two LTxt characters individually: + LTxt1 : { + _8 : { + SCO : {start : 30, len : 1, def : 'n'}, + REC : {start : 30, len : 1, def : ' '} + }, + _6 : { + SCO : {start : 13, len : 1, def : 'n'}, + REC : {start : 13, len : 1, def : ' '} + }, + }, + LTxt2 : { + _8 : { + SCO : {start : 31, len : 1, def : 'n'}, + REC : {start : 31, len : 1, def : ' '} }, _6 : { - SCO : {start : 13, len : 2, def : 'n'}, - REC : {start : 13, len : 2, def : ' '} + SCO : {start : 14, len : 1, def : 'n'}, + REC : {start : 14, len : 1, def : ' '} }, }, MRec : { @@ -1130,10 +1300,43 @@ MARC21.Record._ff_pos = { }, Relf : { _8 : { - MAP : {start: 18, len : 4, def : ' '} + MAP : {start: 18, len : 4, def : ' ', multivalue : true } }, _6 : { - MAP : {start: 1, len : 4, def : ' '} + MAP : {start: 1, len : 4, def : ' ', multivalue : true } + } + }, + // break out all four Relf characters individually: + Relf1 : { + _8 : { + MAP : {start: 18, len : 1, def : ' ' } + }, + _6 : { + MAP : {start: 1, len : 1, def : ' ' } + } + }, + Relf2 : { + _8 : { + MAP : {start: 19, len : 1, def : ' ' } + }, + _6 : { + MAP : {start: 2, len : 1, def : ' ' } + } + }, + Relf3 : { + _8 : { + MAP : {start: 20, len : 1, def : ' ' } + }, + _6 : { + MAP : {start: 3, len : 1, def : ' ' } + } + }, + Relf4 : { + _8 : { + MAP : {start: 21, len : 1, def : ' ' } + }, + _6 : { + MAP : {start: 4, len : 1, def : ' ' } } }, 'S/L' : { @@ -1146,10 +1349,27 @@ MARC21.Record._ff_pos = { }, SpFM : { _8 : { - MAP : {start: 33, len : 2, def : ' ' } + MAP : {start: 33, len : 2, def : ' ', multivalue : true } + }, + _6 : { + MAP : {start: 16, len : 2, def : ' ', multivalue : true } + } + }, + // break out the two SpFM characters individually: + SpFM1 : { + _8 : { + MAP : {start: 33, len : 1, def : ' ' } + }, + _6 : { + MAP : {start: 16, len : 1, def : ' ' } + } + }, + SpFM2 : { + _8 : { + MAP : {start: 34, len : 1, def : ' ' } }, _6 : { - MAP : {start: 16, len : 2, def : ' '} + MAP : {start: 17, len : 1, def : ' ' } } }, Srce : { ----------------------------------------------------------------------- Summary of changes: .../share/marc-edit/editable-content.component.css | 8 +- .../marc-edit/editable-content.component.html | 2 +- .../share/marc-edit/editable-content.component.ts | 4 +- .../share/marc-edit/fixed-field.component.css | 21 -- .../share/marc-edit/fixed-field.component.html | 21 +- .../staff/share/marc-edit/fixed-field.component.ts | 25 +- .../src/app/staff/share/marc-edit/marcrecord.ts | 4 + Open-ILS/src/eg2/src/assets/js/marcrecord.js | 268 +++++++++++++++++++-- 8 files changed, 302 insertions(+), 51 deletions(-) delete mode 100644 Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.css hooks/post-receive -- Evergreen ILS