+<div class="row mb-3" *ngIf="importSelection()">
+ <div class="col-lg-2">
+ <button class="btn btn-info label-with-material-icon"
+ routerLink="/staff/cat/vandelay/queue/{{recordType}}/{{selectedQueue.id}}">
+ <span class="material-icons">arrow_back</span>
+ <span i18n>Return to Queue</span>
+ </button>
+ </div>
+</div>
<div class="import-form form-validated">
<h2 i18n>MARC File Upload</h2>
import {AuthService} from '@eg/core/auth.service';
import {ToastService} from '@eg/share/toast/toast.service';
import {ComboboxEntry} from '@eg/share/combobox/combobox.component';
-import {VandelayService, VandelayImportSelection} from './vandelay.service';
+import {VandelayService, VandelayImportSelection,
+ VANDELAY_UPLOAD_PATH} from './vandelay.service';
import {HttpClient, HttpRequest, HttpEventType} from '@angular/common/http';
import {HttpResponse, HttpErrorResponse} from '@angular/common/http';
import {ProgressInlineComponent} from '@eg/share/dialog/progress-inline.component';
import {Subject} from 'rxjs/Subject';
-const VAND_UPLOAD_URL = '/vandelay-upload';
-
interface ImportOptions {
overlay_map?: any;
import_no_match?: boolean;
}
applyDefaults() {
-
this.minQualityRatio = 0;
this.selectedBibSource = 1; // default to system local
this.recordType = 'bib';
const queue = this.vandelay.importSelection.queue;
this.recordType = queue.queue_type();
this.selectedMatchSet = queue.match_set();
+
+ // This will be propagated to selectedQueue as a combobox
+ // entry via the combobox
this.startQueueId = queue.id();
if (this.recordType === 'bib') {
case 'matchSets':
list = this.vandelay.matchSets[rtype];
- console.log('match sets = ', list);
break;
case 'importItemDefs':
formData.append('bib_source', ''+this.selectedBibSource);
}
- const req = new HttpRequest('POST', VAND_UPLOAD_URL, formData,
+ const req = new HttpRequest('POST', VANDELAY_UPLOAD_PATH, formData,
{reportProgress: true, responseType: 'text'});
return this.http.request(req).pipe(tap(
<a i18n>View Import Items</a>
</div>
<div class="flex-1">
- <a i18n>Export Non-Imported Records</a>
+ <a [routerLink]="" (click)="exportNonImported()"
+ i18n>Export Non-Imported Records</a>
</div>
</div>
</li>
import {map} from 'rxjs/operators/map';
import {filter} from 'rxjs/operators/filter';
import {Router, ActivatedRoute, ParamMap} from '@angular/router';
+import {HttpClient} from '@angular/common/http';
import {Pager} from '@eg/share/util/pager';
import {IdlObject} from '@eg/core/idl.service';
import {EventService} from '@eg/core/event.service';
import {ProgressDialogComponent} from '@eg/share/dialog/progress.component';
import {GridComponent} from '@eg/share/grid/grid.component';
import {GridDataSource, GridColumn} from '@eg/share/grid/grid';
-import {VandelayService, VandelayImportSelection} from './vandelay.service';
+import {VandelayService, VandelayImportSelection,
+ VANDELAY_EXPORT_PATH} from './vandelay.service';
@Component({
templateUrl: 'queue.component.html'
})
-export class QueueComponent implements AfterViewInit {
+export class QueueComponent implements OnInit, AfterViewInit {
queueId: number;
queueType: string; // bib / authority
constructor(
private router: Router,
private route: ActivatedRoute,
+ private http: HttpClient,
private evt: EventService,
private net: NetService,
private auth: AuthService,
};
}
+ ngOnInit() {
+ // Clear previous selection
+ this.vandelay.importSelection = null;
+ }
+
ngAfterViewInit() {
if (this.queueType) {
this.applyQueueType();
}
);
}
+
+ exportNonImported() {
+ this.vandelay.exportQueue(this.queueSummary.queue, true);
+ }
}
</div>
<ngb-tabset #recordTabs [activeId]="recordTab" (tabChange)="onTabChange($event)">
- <ngb-tab title="Record HTML" i18n-title id="marc">
+ <ngb-tab title="Queued Record HTML" i18n-title id="marc">
<ng-template ngbTabContent>
<eg-marc-html [recordId]="recordId" [recordType]="'vandelay-'+queueType">
</eg-marc-html>
import {Observable} from 'rxjs/Observable';
import {tap} from 'rxjs/operators/tap';
import {map} from 'rxjs/operators/map';
+import {HttpClient} from '@angular/common/http';
+import {saveAs} from 'file-saver/FileSaver';
import {IdlService, IdlObject} from '@eg/core/idl.service';
import {OrgService} from '@eg/core/org.service';
import {NetService} from '@eg/core/net.service';
import {EventService} from '@eg/core/event.service';
import {ProgressDialogComponent} from '@eg/share/dialog/progress.component';
+export const VANDELAY_EXPORT_PATH = '/exporter';
+export const VANDELAY_UPLOAD_PATH = '/vandelay-upload';
+
export class VandelayImportSelection {
recordIds: number[];
queue: IdlObject;
importSelection: VandelayImportSelection;
constructor(
+ private http: HttpClient,
private idl: IdlService,
private org: OrgService,
private evt: EventService,
this.activeQueues = {};
this.allQueues = {};
this.matchSets = {};
+ this.importSelection = null;
}
getAttrDefs(dtype: string): Promise<IdlObject[]> {
return this.net.request('open-ils.vandelay',
method, this.auth.token(), queueId, options);
}
+
+ exportQueue(queue: IdlObject, nonImported?: boolean) {
+
+ const etype = queue.queue_type().match(/auth/) ? 'auth' : 'bib';
+
+ let url =
+ `${VANDELAY_EXPORT_PATH}?type=${etype}&queueid=${queue.id()}`
+
+ let saveName = queue.name();
+
+ if (nonImported) {
+ url += '&nonimported=1';
+ saveName += '_nonimported';
+ }
+
+ saveName += '.mrc';
+
+ this.http.get(url, {responseType: 'text'}).subscribe(
+ data => {
+ saveAs(
+ new Blob([data], {type: 'application/octet-stream'}),
+ saveName
+ );
+ },
+ err => {
+ console.error(err);
+ }
+ );
+ }
+
}