--- /dev/null
+import {Component, OnInit, Input, ElementRef} from '@angular/core';
+import {NetService} from '@eg/core/net.service';
+import {OrgService} from '@eg/core/org.service';
+import {AuthService} from '@eg/core/auth.service';
+
+@Component({
+ selector: 'eg-marc-html',
+ // view is generated from MARC HTML
+ template: '<ng-template></ng-template>'
+})
+export class MarcHtmlComponent implements OnInit {
+
+ recId: number;
+ initDone = false;
+
+ @Input() set recordId(id: number) {
+ this.recId = id;
+ // Only force new data collection when recordId()
+ // is invoked after ngInit() has already run.
+ if (this.initDone) {
+ this.collectData();
+ }
+ }
+
+ recType: string;
+ @Input() set recordType(rtype: string) {
+ this.recType = rtype;
+ }
+
+ constructor(
+ private elm: ElementRef,
+ private net: NetService,
+ private auth: AuthService
+ ) {}
+
+ ngOnInit() {
+ this.initDone = true;
+ this.collectData();
+ }
+
+ collectData() {
+ if (!this.recId) { return; }
+
+ let service = 'open-ils.search';
+ let method = 'open-ils.search.biblio.record.html';
+
+ switch (this.recType) {
+
+ case 'authority':
+ method = 'open-ils.search.authority.to_html';
+ break;
+
+ case 'vandelay-authority':
+ service = 'open-ils.vandelay';
+ method = 'open-ils.vandelay.queued_authority_record.html';
+ break;
+
+ case 'vandelay-bib':
+ service = 'open-ils.vandelay';
+ method = 'open-ils.vandelay.queued_bib_record.html';
+ break;
+ }
+
+ this.net.request(
+ service, method, this.auth.token(), this.recId
+ ).toPromise().then(html => this.injectHtml(html));
+ }
+
+ injectHtml(html: string) {
+
+ // Remove embedded labels and actions.
+ html = html.replace(
+ /<button onclick="window.print(.*?)<\/button>/, '');
+
+ html = html.replace(/<title>(.*?)<\/title>/, '');
+
+ // remove reference to nonexistant CSS file
+ html = html.replace(/<link(.*?)\/>/, '');
+
+ // there shouldn't be any, but while we're at it,
+ // kill any embedded script tags
+ html = html.replace(/<script(.*?)<\/script>/, '');
+
+ this.elm.nativeElement.innerHTML = html;
+ }
+}
+
+
import {StaffCatalogService} from './catalog.service';
import {RecordPaginationComponent} from './record/pagination.component';
import {RecordActionsComponent} from './record/actions.component';
-import {MarcViewComponent} from './record/marc-view.component';
-import {RecordBucketDialogComponent} from '@eg/staff/share/buckets/record-bucket-dialog.component';
import {HoldingsService} from '@eg/staff/share/holdings.service';
@NgModule({
ResultFacetsComponent,
ResultPaginationComponent,
RecordPaginationComponent,
- RecordActionsComponent,
- MarcViewComponent,
- RecordBucketDialogComponent
+ RecordActionsComponent
],
imports: [
StaffCommonModule,
+++ /dev/null
-import {Component, OnInit, Input, ElementRef} from '@angular/core';
-import {NetService} from '@eg/core/net.service';
-import {StaffCatalogService} from '../catalog.service';
-import {OrgService} from '@eg/core/org.service';
-
-@Component({
- selector: 'eg-catalog-marc-view',
- // bulk of display is generated from MARC HTML
- template: '<div class="w-100"></div>'
-})
-export class MarcViewComponent implements OnInit {
-
- recId: number;
- initDone = false;
-
- @Input() set recordId(id: number) {
- this.recId = id;
- // Only force new data collection when recordId()
- // is invoked after ngInit() has already run.
- if (this.initDone) {
- this.collectData();
- }
- }
-
- constructor(
- private elm: ElementRef,
- private net: NetService,
- private staffCat: StaffCatalogService
- ) {}
-
- ngOnInit() {
- this.initDone = true;
- this.collectData();
- }
-
- collectData() {
- if (!this.recId) { return; }
- this.fetchMarcHtml();
- }
-
- fetchMarcHtml() {
- this.net.request(
- 'open-ils.search',
- 'open-ils.search.biblio.record.html',
- this.recId, false
-
- ).subscribe(html => {
-
- // Remove those pesky non-i8n labels / actions.
- // Note: for printing, use the browser print page
- // option. The end result is the same.
- html = html.replace(
- /<button onclick="window.print(.*?)<\/button>/, '');
- html = html.replace(/<title>(.*?)<\/title>/, '');
-
- // remove reference to nonexistant CSS file
- html = html.replace(/<link(.*?)\/>/, '');
- this.elm.nativeElement.innerHTML = html;
- });
- }
-}
-
-
</ngb-tab>
<ngb-tab title="MARC View" i18n-title id="marc_view">
<ng-template ngbTabContent>
- <eg-catalog-marc-view [recordId]="recordId"></eg-catalog-marc-view>
+ <eg-marc-html [recordId]="recordId" recordType="bib"></eg-marc-html>
</ng-template>
</ngb-tab>
</ngb-tabset>
import {StringService} from '@eg/share/string/string.service';
import {FmRecordEditorComponent} from '@eg/share/fm-editor/fm-editor.component';
import {DateSelectComponent} from '@eg/share/date-select/date-select.component';
+import {RecordBucketDialogComponent} from '@eg/staff/share/buckets/record-bucket-dialog.component';
+import {MarcHtmlComponent} from '@eg/share/catalog/marc-html.component';
/**
* Imports the EG common modules and adds modules common to all staff UI's.
StringComponent,
OpChangeComponent,
FmRecordEditorComponent,
- DateSelectComponent
+ DateSelectComponent,
+ RecordBucketDialogComponent,
+ MarcHtmlComponent
],
imports: [
EgCommonModule
StringComponent,
OpChangeComponent,
FmRecordEditorComponent,
- DateSelectComponent
+ DateSelectComponent,
+ RecordBucketDialogComponent,
+ MarcHtmlComponent
]
})