
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, rel_3_15 has been updated via 8c287014ba0539bdb08829ef02f2ef644c803ab5 (commit) via 952d2276c34ae3de1205f7a922402390e357e076 (commit) via 8f7662043ad54299a6e5193e7f1099fb43aa0666 (commit) via 20271fed463c6d225361b40709c83dffc631eabb (commit) from 32496a58c0e9f290e57604b52927db41af7eae32 (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 8c287014ba0539bdb08829ef02f2ef644c803ab5 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 38855fb3e7..f7b615e103 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 @@ -412,8 +412,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 952d2276c34ae3de1205f7a922402390e357e076 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 8f7662043ad54299a6e5193e7f1099fb43aa0666 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 8234b2d279..38855fb3e7 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 @@ -205,9 +205,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; } @@ -412,6 +412,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 20271fed463c6d225361b40709c83dffc631eabb 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