From dc79692240236a916b23f647993a489e7657e48f Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 31 Jan 2019 12:08:37 -0500 Subject: [PATCH] LP1779158 Angular7 and ng-lint updates Signed-off-by: Bill Erickson Signed-off-by: Dan Wells --- Open-ILS/src/eg2/package-lock.json | 5 ++ Open-ILS/src/eg2/package.json | 1 + .../cat/vandelay/display-attrs.component.ts | 6 +- .../staff/cat/vandelay/export.component.ts | 24 +++---- .../staff/cat/vandelay/import.component.ts | 65 ++++++++++-------- .../match-set-expression.component.ts | 20 +++--- .../cat/vandelay/match-set-list.component.ts | 8 +-- .../vandelay/match-set-new-point.component.ts | 2 +- .../vandelay/match-set-quality.component.ts | 13 ++-- .../staff/cat/vandelay/match-set.component.ts | 6 +- .../cat/vandelay/queue-items.component.ts | 13 ++-- .../cat/vandelay/queue-list.component.ts | 36 +++++----- .../app/staff/cat/vandelay/queue.component.ts | 34 +++++----- .../queued-record-matches.component.ts | 15 ++--- .../cat/vandelay/queued-record.component.ts | 6 +- .../cat/vandelay/recent-imports.component.ts | 6 +- .../cat/vandelay/record-items.component.ts | 4 +- .../staff/cat/vandelay/vandelay.component.ts | 4 +- .../staff/cat/vandelay/vandelay.service.ts | 67 +++++++++---------- .../buckets/record-bucket-dialog.component.ts | 2 +- 20 files changed, 171 insertions(+), 166 deletions(-) diff --git a/Open-ILS/src/eg2/package-lock.json b/Open-ILS/src/eg2/package-lock.json index cea6fe8505..fe0147bdc3 100644 --- a/Open-ILS/src/eg2/package-lock.json +++ b/Open-ILS/src/eg2/package-lock.json @@ -3760,6 +3760,11 @@ "schema-utils": "^1.0.0" } }, + "file-saver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.0.tgz", + "integrity": "sha512-cYM1ic5DAkg25pHKgi5f10ziAM7RJU37gaH1XQlyNDrtUnzhC/dfoV9zf2OmF0RMKi42jG5B0JWBnPQqyj/G6g==" + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", diff --git a/Open-ILS/src/eg2/package.json b/Open-ILS/src/eg2/package.json index 7d179ee954..0c57e46406 100644 --- a/Open-ILS/src/eg2/package.json +++ b/Open-ILS/src/eg2/package.json @@ -28,6 +28,7 @@ "@nguniversal/express-engine": "^7.1.0", "bootstrap-css-only": "^4.2.1", "core-js": "^2.6.3", + "file-saver": "^2.0.0", "ngx-cookie": "^4.1.2", "rxjs": "^6.4.0", "zone.js": "^0.8.29" diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/display-attrs.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/display-attrs.component.ts index 6cb13afd96..bbd6daa198 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/display-attrs.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/display-attrs.component.ts @@ -1,5 +1,5 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; import {NgbTabset, NgbTabChangeEvent} from '@ng-bootstrap/ng-bootstrap'; @Component({ @@ -13,7 +13,7 @@ export class DisplayAttrsComponent { private router: Router, private route: ActivatedRoute) { - this.route.paramMap.subscribe((params: ParamMap) => { + this.route.paramMap.subscribe((params: ParamMap) => { this.attrType = params.get('atype'); }); } @@ -26,7 +26,7 @@ export class DisplayAttrsComponent { // prevent tab changing until after route navigation evt.preventDefault(); - const url = + const url = `/staff/cat/vandelay/display_attrs/${this.attrType}`; this.router.navigate([url]); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/export.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/export.component.ts index 253cfcb454..d980e02bd2 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/export.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/export.component.ts @@ -2,7 +2,7 @@ import {Component, AfterViewInit, ViewChild, Renderer2} from '@angular/core'; import {NgbPanelChangeEvent} from '@ng-bootstrap/ng-bootstrap'; import {HttpClient, HttpRequest, HttpEventType} from '@angular/common/http'; import {HttpResponse, HttpErrorResponse} from '@angular/common/http'; -import {saveAs} from 'file-saver/FileSaver'; +import {saveAs} from 'file-saver'; import {AuthService} from '@eg/core/auth.service'; import {ToastService} from '@eg/share/toast/toast.service'; import {ProgressInlineComponent} from '@eg/share/dialog/progress-inline.component'; @@ -26,7 +26,7 @@ export class ExportComponent implements AfterViewInit { isExporting: boolean; @ViewChild('fileSelector') private fileSelector; - @ViewChild('exportProgress') + @ViewChild('exportProgress') private exportProgress: ProgressInlineComponent; constructor( @@ -54,12 +54,12 @@ export class ExportComponent implements AfterViewInit { setTimeout(() => { this.renderer.selectRootElement( `#${this.recordSource}-input`).focus(); - }) + }); } } fileSelected($event) { - this.selectedFile = $event.target.files[0]; + this.selectedFile = $event.target.files[0]; } hasNeededData(): boolean { @@ -86,20 +86,20 @@ export class ExportComponent implements AfterViewInit { switch (this.recordSource) { case 'csv': - formData.append('idcolumn', ''+this.fieldNumber); - formData.append('idfile', + formData.append('idcolumn', '' + this.fieldNumber); + formData.append('idfile', this.selectedFile, this.selectedFile.name); break; case 'record-id': - formData.append('id', ''+this.recordId); + formData.append('id', '' + this.recordId); break; case 'bucket-id': - formData.append('containerid', ''+this.bucketId); + formData.append('containerid', '' + this.bucketId); break; } - + this.sendExportRequest(formData); } @@ -108,19 +108,19 @@ export class ExportComponent implements AfterViewInit { const fileName = `export.${this.recordType}.` + `${this.recordEncoding}.${this.recordFormat}`; - const req = new HttpRequest('POST', VANDELAY_EXPORT_PATH, + const req = new HttpRequest('POST', VANDELAY_EXPORT_PATH, formData, {reportProgress: true, responseType: 'text'}); this.http.request(req).subscribe( evt => { - console.log(evt); + console.debug(evt); if (evt.type === HttpEventType.DownloadProgress) { // File size not reported by server in advance. this.exportProgress.update({value: evt.loaded}); } else if (evt instanceof HttpResponse) { - saveAs(new Blob([evt.body], + saveAs(new Blob([evt.body as Blob], {type: 'application/octet-stream'}), fileName); this.isExporting = false; diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.ts index 9732e5abd6..15b5640fff 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.ts @@ -1,12 +1,14 @@ -import {Component, OnInit, AfterViewInit, Input, ViewChild, OnDestroy} from '@angular/core'; -import {tap} from 'rxjs/operators/tap'; +import {Component, OnInit, AfterViewInit, Input, + ViewChild, OnDestroy} from '@angular/core'; +import {Subject} from 'rxjs'; +import {tap} from 'rxjs/operators'; import {IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; import {EventService} from '@eg/core/event.service'; import {OrgService} from '@eg/core/org.service'; import {AuthService} from '@eg/core/auth.service'; import {ToastService} from '@eg/share/toast/toast.service'; -import {ComboboxComponent, +import {ComboboxComponent, ComboboxEntry} from '@eg/share/combobox/combobox.component'; import {VandelayService, VandelayImportSelection, VANDELAY_UPLOAD_PATH} from './vandelay.service'; @@ -14,7 +16,6 @@ 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 {AlertDialogComponent} from '@eg/share/dialog/alert.component'; -import {Subject} from 'rxjs/Subject'; import {ServerStoreService} from '@eg/core/server-store.service'; const TEMPLATE_SETTING_NAME = 'eg.cat.vandelay.import.templates'; @@ -46,7 +47,7 @@ interface ImportOptions { merge_profile?: any; fall_through_merge_profile?: any; strip_field_groups?: number[]; - match_quality_ratio: number, + match_quality_ratio: number; exit_early: boolean; } @@ -60,7 +61,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { // used for applying a default queue ID value when we have // a load-time queue before the queue combobox entries exist. - startQueueId: number; + startQueueId: number; bibTrashGroups: IdlObject[]; selectedTrashGroups: number[]; @@ -104,15 +105,15 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { newTemplateName: string; @ViewChild('fileSelector') private fileSelector; - @ViewChild('uploadProgress') + @ViewChild('uploadProgress') private uploadProgress: ProgressInlineComponent; - @ViewChild('enqueueProgress') + @ViewChild('enqueueProgress') private enqueueProgress: ProgressInlineComponent; - @ViewChild('importProgress') + @ViewChild('importProgress') private importProgress: ProgressInlineComponent; // Need these refs so values can be applied via external stimuli - @ViewChild('formTemplateSelector') + @ViewChild('formTemplateSelector') private formTemplateSelector: ComboboxComponent; @ViewChild('recordTypeSelector') private recordTypeSelector: ComboboxComponent; @@ -244,7 +245,9 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { switch (etype) { case 'bibSources': return (this.vandelay.bibSources || []).map( - s => { return {id: s.id(), label: s.source()}; }); + s => { + return {id: s.id(), label: s.source()}; + }); case 'bibBuckets': list = this.vandelay.bibBuckets; @@ -279,7 +282,8 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { switch (etype) { case 'recordType': this.recordType = id; - + break; + case 'bibSources': this.selectedBibSource = id; break; @@ -307,7 +311,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { } fileSelected($event) { - this.selectedFile = $event.target.files[0]; + this.selectedFile = $event.target.files[0]; } // Required form data varies depending on context. @@ -315,8 +319,8 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { if (this.vandelay.importSelection) { return this.importActionSelected(); } else { - return this.selectedQueue - && Boolean(this.recordType) && Boolean(this.selectedFile) + return this.selectedQueue && + Boolean(this.recordType) && Boolean(this.selectedFile); } } @@ -394,7 +398,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { } else { alert(evt); // server error } - } + } return Promise.reject('Queue Create Failed'); } @@ -410,18 +414,18 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { // Nothing to upload when processing pre-queued records. return Promise.resolve(); } - + const formData: FormData = new FormData(); formData.append('ses', this.auth.token()); - formData.append('marc_upload', + formData.append('marc_upload', this.selectedFile, this.selectedFile.name); if (this.selectedBibSource) { - formData.append('bib_source', ''+this.selectedBibSource); + formData.append('bib_source', '' + this.selectedBibSource); } - const req = new HttpRequest('POST', VANDELAY_UPLOAD_PATH, formData, + const req = new HttpRequest('POST', VANDELAY_UPLOAD_PATH, formData, {reportProgress: true, responseType: 'text'}); return this.http.request(req).pipe(tap( @@ -433,7 +437,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { } else if (evt instanceof HttpResponse) { this.sessionKey = evt.body as string; console.log( - 'Vandelay file uploaded OK with key '+this.sessionKey); + 'Vandelay file uploaded OK with key ' + this.sessionKey); } }, @@ -450,16 +454,19 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { // Nothing to enqueue when processing pre-queued records return Promise.resolve(); } - var spoolType = this.recordType; - if (this.recordType == 'authority') spoolType = 'auth' + + let spoolType = this.recordType; + if (this.recordType === 'authority') { + spoolType = 'auth'; + } const method = `open-ils.vandelay.${spoolType}.process_spool`; return new Promise((resolve, reject) => { this.net.request( - 'open-ils.vandelay', method, + 'open-ils.vandelay', method, this.auth.token(), this.sessionKey, this.activeQueueId, - null, null, this.selectedBibSource, + null, null, this.selectedBibSource, (this.sessionName || null), true ).subscribe( tracker => { @@ -472,7 +479,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { trkr => { this.enqueueProgress.update({ // enqueue API only tracks actions performed - max: null, + max: null, value: trkr.actions_performed() }); }, @@ -515,7 +522,7 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { } return new Promise((resolve, reject) => { - this.net.request('open-ils.vandelay', + this.net.request('open-ils.vandelay', method, this.auth.token(), target, options) .subscribe( tracker => { @@ -579,14 +586,14 @@ export class ImportComponent implements OnInit, AfterViewInit, OnDestroy { const template = {}; TEMPLATE_ATTRS.forEach(key => template[key] = this[key]); - console.debug("Saving import profile", template); + console.debug('Saving import profile', template); this.formTemplates[this.selectedTemplate] = template; return this.store.setItem(TEMPLATE_SETTING_NAME, this.formTemplates); } markTemplateDefault() { - + Object.keys(this.formTemplates).forEach( name => delete this.formTemplates.default ); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts index 991206853d..f02ab214ba 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts @@ -54,7 +54,7 @@ export class MatchSetExpressionComponent implements OnInit { if (!this.matchSet_) { return Promise.resolve(); } return this.pcrud.search('vmsp', - {match_set: this.matchSet_.id()}, {}, + {match_set: this.matchSet_.id()}, {}, {atomic: true, authoritative: true} ).toPromise().then(points => this.ingestMatchPoints(points)); } @@ -101,7 +101,7 @@ export class MatchSetExpressionComponent implements OnInit { getPointLabel(point: IdlObject, showmatch?: boolean): Promise { return this.strings.interpolate( - 'staff.cat.vandelay.matchpoint.label', + 'staff.cat.vandelay.matchpoint.label', {point: point, showmatch: showmatch} ); } @@ -110,7 +110,7 @@ export class MatchSetExpressionComponent implements OnInit { deleteNode() { this.changesMade = true; - const node = this.tree.selectedNode() + const node = this.tree.selectedNode(); this.tree.removeNode(node); } @@ -144,13 +144,13 @@ export class MatchSetExpressionComponent implements OnInit { } else { - if (ptype == 'attr') { + if (ptype === 'attr') { point.svf(this.newPoint.values.recordAttr); - } else if (ptype == 'marc') { + } else if (ptype === 'marc') { point.tag(this.newPoint.values.marcTag); point.subfield(this.newPoint.values.marcSf); - } else if (ptype == 'heading') { + } else if (ptype === 'heading') { point.heading(true); } @@ -159,7 +159,7 @@ export class MatchSetExpressionComponent implements OnInit { } const node: TreeNode = new TreeNode({ - id: point.id(), + id: point.id(), callerData: {point: point} }); @@ -175,13 +175,13 @@ export class MatchSetExpressionComponent implements OnInit { if (node.children.length) { return '(' + node.children.map(renderNode).join( - ' ' + node.callerData.slimLabel + ' ') + ')' + ' ' + node.callerData.slimLabel + ' ') + ')'; } else if (!node.callerData.point.bool_op()) { return node.callerData.slimLabel; } else { return '()'; } - } + }; return renderNode(this.tree.rootNode); } @@ -211,7 +211,7 @@ export class MatchSetExpressionComponent implements OnInit { 'open-ils.vandelay.match_set.update', this.auth.token(), this.matchSet_.id(), rootPoint ).toPromise().then( - ok =>this.refreshTree(), + ok => this.refreshTree(), err => console.error(err) ); } diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-list.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-list.component.ts index e20c954be2..0afc01d6fb 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-list.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-list.component.ts @@ -1,6 +1,6 @@ import {Component, AfterViewInit, ViewChild} from '@angular/core'; -import {Router} from '@angular/router'; -import {Pager} from '@eg/share/util/pager'; +import {Router} from '@angular/router'; +import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {PcrudService} from '@eg/core/pcrud.service'; import {OrgService} from '@eg/core/org.service'; @@ -32,12 +32,12 @@ export class MatchSetListComponent implements AfterViewInit { this.gridSource.getRows = (pager: Pager) => { const orgs = this.org.ancestors(this.contextOrg, true); - return this.pcrud.search('vms', {owner: orgs}, { + return this.pcrud.search('vms', {owner: orgs}, { order_by: {vms: ['name']}, limit: pager.limit, offset: pager.offset }); - } + }; this.createNew = () => { this.editDialog.mode = 'create'; diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-new-point.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-new-point.component.ts index 6298981cff..ff5d9a0cf6 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-new-point.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-new-point.component.ts @@ -31,7 +31,7 @@ export class MatchSetNewPointComponent implements OnInit { @Input() isForQuality: boolean; // biblio, authority, quality - @Input() set pointType(type_: string) { + @Input() set pointType(type_: string) { this.values.pointType = type_; this.values.recordAttr = ''; this.values.matchScore = 1; diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-quality.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-quality.component.ts index b2409c196c..7409ef9dd9 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-quality.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-quality.component.ts @@ -1,6 +1,5 @@ import {Component, OnInit, ViewChild, AfterViewInit, Input} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import 'rxjs/add/observable/of'; +import {Observable, of} from 'rxjs'; import {IdlObject, IdlService} from '@eg/core/idl.service'; import {PcrudService} from '@eg/core/pcrud.service'; import {NetService} from '@eg/core/net.service'; @@ -21,8 +20,8 @@ export class MatchSetQualityComponent implements OnInit { matchSet_: IdlObject; @Input() set matchSet(ms: IdlObject) { this.matchSet_ = ms; - if (ms) { - this.matchSetType = ms.mtype(); + if (ms) { + this.matchSetType = ms.mtype(); if (this.grid) { this.grid.reload(); } @@ -48,7 +47,7 @@ export class MatchSetQualityComponent implements OnInit { this.dataSource.getRows = (pager: Pager, sort: any[]) => { if (!this.matchSet_) { - return Observable.of(); + return of(); } const orderBy: any = {}; @@ -64,7 +63,7 @@ export class MatchSetQualityComponent implements OnInit { const search = {match_set: this.matchSet_.id()}; return this.pcrud.search('vmsq', search, searchOps); - } + }; this.deleteSelected = (rows: any[]) => { this.pcrud.remove(rows).subscribe( @@ -78,7 +77,7 @@ export class MatchSetQualityComponent implements OnInit { ngOnInit() {} addQuality() { - const quality = this.idl.create('vmsq'); + const quality = this.idl.create('vmsq'); const values = this.newPoint.values; quality.match_set(this.matchSet_.id()); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set.component.ts index 15a19aaa42..e57f34fae2 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set.component.ts @@ -1,5 +1,5 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; import {NgbTabset, NgbTabChangeEvent} from '@ng-bootstrap/ng-bootstrap'; import {IdlObject} from '@eg/core/idl.service'; import {PcrudService} from '@eg/core/pcrud.service'; @@ -20,7 +20,7 @@ export class MatchSetComponent implements OnInit { private pcrud: PcrudService, private org: OrgService ) { - this.route.paramMap.subscribe((params: ParamMap) => { + this.route.paramMap.subscribe((params: ParamMap) => { this.matchSetId = +params.get('id'); this.matchSetTab = params.get('matchSetTab'); }); @@ -42,7 +42,7 @@ export class MatchSetComponent implements OnInit { // prevent tab changing until after route navigation evt.preventDefault(); - const url = + const url = `/staff/cat/vandelay/match_sets/${this.matchSetId}/${this.matchSetTab}`; this.router.navigate([url]); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-items.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-items.component.ts index d72a81bfa8..7340e3d719 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-items.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-items.component.ts @@ -1,9 +1,8 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import 'rxjs/add/observable/of'; -import {map} from 'rxjs/operators/map'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; -import {Pager} from '@eg/share/util/pager'; +import {Observable} from 'rxjs'; +import {map} from 'rxjs/operators'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; import {AuthService} from '@eg/core/auth.service'; @@ -31,7 +30,7 @@ export class QueueItemsComponent { private auth: AuthService, private vandelay: VandelayService) { - this.route.paramMap.subscribe((params: ParamMap) => { + this.route.paramMap.subscribe((params: ParamMap) => { this.queueId = +params.get('id'); this.queueType = params.get('qtype'); }); @@ -54,7 +53,7 @@ export class QueueItemsComponent { this.limitToImportErrors = (checked: boolean) => { this.filterImportErrors = checked; this.itemsGrid.reload(); - } + }; } } diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-list.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-list.component.ts index 888c8a57f4..5edde1e026 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-list.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-list.component.ts @@ -1,9 +1,8 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import 'rxjs/add/observable/of'; -import {map} from 'rxjs/operators/map'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; -import {Pager} from '@eg/share/util/pager'; +import {Observable, of} from 'rxjs'; +import {map} from 'rxjs/operators'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; import {AuthService} from '@eg/core/auth.service'; @@ -42,7 +41,7 @@ export class QueueListComponent { // queue API does not support sorting this.queueSource.getRows = (pager: Pager) => { return this.loadQueues(pager); - } + }; this.deleteSelected = (queues: IdlObject[]) => { @@ -50,25 +49,26 @@ export class QueueListComponent { // because they can be bulky calls const qtype = this.queueType; const method = `open-ils.vandelay.${qtype}_queue.delete`; + const selected = queues.slice(0); // clone to be nice - const deleteNext = (queues: IdlObject[], idx: number) => { - const queue = queues[idx]; - if (!queue) { + const deleteNext = (idx: number) => { + const queue = selected[idx]; + if (!queue) { this.currentGrid().reload(); - return Promise.resolve(); + return Promise.resolve(); } - - return this.net.request('open-ils.vandelay', + + return this.net.request('open-ils.vandelay', method, this.auth.token(), queue.id() - ).toPromise().then(() => deleteNext(queues, ++idx)); - } + ).toPromise().then(() => deleteNext(++idx)); + }; - deleteNext(queues, 0); + deleteNext(0); }; } currentGrid(): GridComponent { - // The active grid changes along with the queue type. + // The active grid changes along with the queue type. // The inactive grid will be set to null. return this.bibQueueGrid || this.authQueueGrid; } @@ -87,13 +87,13 @@ export class QueueListComponent { loadQueues(pager: Pager): Observable { if (!this.queueType) { - return Observable.of(); + return of(); } const qtype = this.queueType.match(/bib/) ? 'bib' : 'authority'; const method = `open-ils.vandelay.${qtype}_queue.owner.retrieve`; - return this.net.request('open-ils.vandelay', + return this.net.request('open-ils.vandelay', method, this.auth.token(), null, null, {offset: pager.offset, limit: pager.limit} ); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.ts index 1b75f563ce..fbc62ba783 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.ts @@ -1,10 +1,8 @@ import {Component, OnInit, AfterViewInit, ViewChild} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import 'rxjs/add/observable/of'; -import {map} from 'rxjs/operators/map'; -import {filter} from 'rxjs/operators/filter'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; -import {Pager} from '@eg/share/util/pager'; +import {Observable} from 'rxjs'; +import {map, filter} from 'rxjs/operators'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {EventService} from '@eg/core/event.service'; import {NetService} from '@eg/core/net.service'; @@ -52,7 +50,7 @@ export class QueueComponent implements OnInit, AfterViewInit { private auth: AuthService, private vandelay: VandelayService) { - this.route.paramMap.subscribe((params: ParamMap) => { + this.route.paramMap.subscribe((params: ParamMap) => { this.queueType = params.get('qtype'); this.queueId = +params.get('id'); }); @@ -87,8 +85,8 @@ export class QueueComponent implements OnInit, AfterViewInit { } ngAfterViewInit() { - if (this.queueType) { - this.applyQueueType(); + if (this.queueType) { + this.applyQueueType(); if (this.queueId) { this.loadQueueSummary(); } @@ -96,10 +94,10 @@ export class QueueComponent implements OnInit, AfterViewInit { } openRecord(row: any) { - if (this.queueType == 'auth') { + if (this.queueType === 'auth') { this.queueType = 'authority'; } - const url = + const url = `/staff/cat/vandelay/queue/${this.queueType}/${this.queueId}/record/${row.id}/marc`; this.router.navigate([url]); } @@ -126,11 +124,11 @@ export class QueueComponent implements OnInit, AfterViewInit { } qtypeShort(): string { - return this.queueType === 'bib' ? 'bib' : 'auth'; + return this.queueType === 'bib' ? 'bib' : 'auth'; } loadQueueSummary(): Promise { - const method = + const method = `open-ils.vandelay.${this.qtypeShort()}_queue.summary.retrieve`; return this.net.request( @@ -143,11 +141,11 @@ export class QueueComponent implements OnInit, AfterViewInit { const options = { clear_marc: true, offset: pager.offset, - limit: pager.limit, + limit: pager.limit, flesh_import_items: true, non_imported: this.filters.nonImported, with_import_error: this.filters.withErrors - } + }; return this.vandelay.getQueuedRecords( this.queueId, this.queueType, options, this.filters.matches).pipe( @@ -158,7 +156,7 @@ export class QueueComponent implements OnInit, AfterViewInit { const e = this.evt.parse(rec); if (e) { console.error(e); return false; } return true; - }), + }), map(rec => { const recHash: any = { id: rec.id(), @@ -176,10 +174,10 @@ export class QueueComponent implements OnInit, AfterViewInit { recHash.error_items = rec.import_items().filter(i => i.import_error()); } - // Link the record attribute values to the root record + // Link the record attribute values to the root record // object so the grid can find them. rec.attributes().forEach(attr => { - const def = + const def = this.attrDefs.filter(d => d.id() === attr.field())[0]; recHash[def.code()] = attr.attr_value(); }); diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record-matches.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record-matches.component.ts index 74e70f1f9e..f50c48266d 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record-matches.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record-matches.component.ts @@ -1,8 +1,7 @@ import {Component, Input, OnInit, ViewChild} from '@angular/core'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; -import {Observable} from 'rxjs/Observable'; -import 'rxjs/add/observable/of'; -import {map} from 'rxjs/operators/map'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Observable, of} from 'rxjs'; +import {map} from 'rxjs/operators'; import {Pager} from '@eg/share/util/pager'; import {GridComponent} from '@eg/share/grid/grid.component'; import {GridDataSource, GridColumn} from '@eg/share/grid/grid'; @@ -47,7 +46,7 @@ export class QueuedRecordMatchesComponent implements OnInit { this.bibDataSource.getRows = (pager: Pager) => { return this.getBibMatchRows(pager); - } + }; /* TODO this.authDataSource.getRows = (pager: Pager) => { @@ -57,7 +56,7 @@ export class QueuedRecordMatchesComponent implements OnInit { // Mark or un-mark as row as the merge target on row click this.matchRowClick = (row: any) => { this.toggleMergeTarget(row.id); - } + }; } toggleMergeTarget(matchId: number) { @@ -126,7 +125,7 @@ export class QueuedRecordMatchesComponent implements OnInit { vqbr_quality: this.queuedRecord.quality(), match_score: match.match_score(), bib_summary: bibSummaries[match.eg_record()] - } + }; observer.next(row); }); @@ -143,7 +142,7 @@ export class QueuedRecordMatchesComponent implements OnInit { if (this.queuedRecord) { return Promise.resolve(''); } - let idlClass = this.queueType === 'bib' ? 'vqbr' : 'vqar'; + const idlClass = this.queueType === 'bib' ? 'vqbr' : 'vqar'; const flesh = {flesh: 1, flesh_fields: {}}; flesh.flesh_fields[idlClass] = ['matches']; return this.pcrud.retrieve(idlClass, this.recordId, flesh) diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record.component.ts index 3a37be74c8..7bbf5a8d8e 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/queued-record.component.ts @@ -1,5 +1,5 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Router, ActivatedRoute, ParamMap} from '@angular/router'; +import {Router, ActivatedRoute, ParamMap} from '@angular/router'; import {NgbTabset, NgbTabChangeEvent} from '@ng-bootstrap/ng-bootstrap'; @Component({ @@ -16,7 +16,7 @@ export class QueuedRecordComponent { private router: Router, private route: ActivatedRoute) { - this.route.paramMap.subscribe((params: ParamMap) => { + this.route.paramMap.subscribe((params: ParamMap) => { this.queueId = +params.get('id'); this.recordId = +params.get('recordId'); this.queueType = params.get('qtype'); @@ -32,7 +32,7 @@ export class QueuedRecordComponent { // prevent tab changing until after route navigation evt.preventDefault(); - const url = + const url = `/staff/cat/vandelay/queue/${this.queueType}/${this.queueId}` + `/record/${this.recordId}/${this.recordTab}`; diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/recent-imports.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/recent-imports.component.ts index ad7b0588e0..e8b1f735bb 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/recent-imports.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/recent-imports.component.ts @@ -71,10 +71,10 @@ export class RecentImportsComponent implements OnInit { this.pcrud.search('vst', query, {order_by: {vst: 'create_time'}}) .subscribe( tracker => { - // The screen flickers less if the tracker array is + // The screen flickers less if the tracker array is // updated inline instead of rebuilt every time. - const existing = + const existing = this.trackers.filter(t => t.id() === tracker.id())[0]; if (existing) { @@ -116,7 +116,7 @@ export class RecentImportsComponent implements OnInit { }, err => {}, () => { - const active = + const active = this.trackers.filter(t => t.state() === 'active'); // Continue updating the display with updated tracker diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/record-items.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/record-items.component.ts index 9852a640e8..d42f55d56d 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/record-items.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/record-items.component.ts @@ -1,5 +1,5 @@ import {Component, Input, ViewChild} from '@angular/core'; -import {Pager} from '@eg/share/util/pager'; +import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; import {PcrudService} from '@eg/core/pcrud.service'; @@ -29,7 +29,7 @@ export class RecordItemsComponent { // queue API does not support sorting this.gridSource.getRows = (pager: Pager) => { - return this.pcrud.search('vii', + return this.pcrud.search('vii', {record: this.recordId}, {order_by: {vii: ['id']}}); }; } diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.ts index 0bfad42d5c..7a6b24d2d5 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.ts @@ -1,6 +1,6 @@ import {Component, OnInit, AfterViewInit, ViewChild} from '@angular/core'; -import {Router, ActivatedRoute, NavigationEnd} from "@angular/router"; -import {take} from 'rxjs/operators/take'; +import {Router, ActivatedRoute, NavigationEnd} from '@angular/router'; +import {take} from 'rxjs/operators'; import {VandelayService} from './vandelay.service'; import {IdlObject} from '@eg/core/idl.service'; diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.service.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.service.ts index 3f4a1973b9..cd52d44e1f 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.service.ts @@ -1,9 +1,8 @@ import {Injectable} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import {tap} from 'rxjs/operators/tap'; -import {map} from 'rxjs/operators/map'; +import {Observable} from 'rxjs'; +import {tap, map} from 'rxjs/operators'; import {HttpClient} from '@angular/common/http'; -import {saveAs} from 'file-saver/FileSaver'; +import {saveAs} from 'file-saver'; import {IdlService, IdlObject} from '@eg/core/idl.service'; import {OrgService} from '@eg/core/org.service'; import {NetService} from '@eg/core/net.service'; @@ -73,8 +72,8 @@ export class VandelayService { } const cls = (dtype === 'bib') ? 'vqbrad' : 'vqarad'; const orderBy = {}; - orderBy[cls] = 'id' - return this.pcrud.retrieveAll(cls, + orderBy[cls] = 'id'; + return this.pcrud.retrieveAll(cls, {order_by: orderBy}, {atomic: true}).toPromise() .then(list => { this.attrDefs[dtype] = list; @@ -88,7 +87,7 @@ export class VandelayService { } const owners = this.org.ancestors(this.auth.user().ws_ou(), true); - return this.pcrud.search('vmp', + return this.pcrud.search('vmp', {owner: owners}, {order_by: {vmp: ['name']}}, {atomic: true}) .toPromise().then(profiles => { this.mergeProfiles = profiles; @@ -119,8 +118,8 @@ export class VandelayService { return Promise.resolve(this.bibSources); } - return this.pcrud.retrieveAll('cbs', - {order_by: {cbs: 'id'}}, + return this.pcrud.retrieveAll('cbs', + {order_by: {cbs: 'id'}}, {atomic: true} ).toPromise().then(sources => { this.bibSources = sources; @@ -143,7 +142,7 @@ export class VandelayService { // todo: differentiate between biblio and authority a la queue api getMatchSets(mtype: string): Promise { - + const mstype = mtype.match(/bib/) ? 'biblio' : 'authority'; if (this.matchSets[mtype]) { @@ -154,7 +153,7 @@ export class VandelayService { const owners = this.org.ancestors(this.auth.user().ws_ou(), true); - return this.pcrud.search('vms', + return this.pcrud.search('vms', {owner: owners, mtype: mstype}, {}, {atomic: true}) .toPromise().then(sets => { this.matchSets[mtype] = sets; @@ -167,12 +166,10 @@ export class VandelayService { return Promise.resolve(this.bibBuckets); } - const bkts = []; return this.net.request( - 'open-ils.actor', + 'open-ils.actor', 'open-ils.actor.container.retrieve_by_class', this.auth.token(), this.auth.user().id(), 'biblio', 'staff_client' - //).pipe(tap(bkt => bkts.push(bkt))).toPromise().then(() => bkts); ).toPromise().then(bkts => { this.bibBuckets = bkts; return bkts; @@ -197,8 +194,8 @@ export class VandelayService { const owners = this.org.ancestors(this.auth.user().ws_ou(), true); - return this.pcrud.search('vibtg', - {always_apply : 'f', owner: owners}, + return this.pcrud.search('vibtg', + {always_apply : 'f', owner: owners}, {vibtg : ['label']}, {atomic: true} ).toPromise().then(groups => { @@ -210,31 +207,31 @@ export class VandelayService { // Create a queue and return the ID of the new queue via promise. createQueue( - queueName: string, - recordType: string, - importDefId: number, - matchSet: number, + queueName: string, + recordType: string, + importDefId: number, + matchSet: number, matchBucket: number): Promise { const method = `open-ils.vandelay.${recordType}_queue.create`; let qType = recordType; if (recordType.match(/bib_acq/)) { - let qType = 'acq'; + qType = 'acq'; } return new Promise((resolve, reject) => { this.net.request( - 'open-ils.vandelay', method, - this.auth.token(), queueName, null, qType, + 'open-ils.vandelay', method, + this.auth.token(), queueName, null, qType, matchSet, importDefId, matchBucket ).subscribe(queue => { const e = this.evt.parse(queue); - if (e) { + if (e) { reject(e); } else { // createQueue is always called after queues have - // been fetched and cached. + // been fetched and cached. this.allQueues[qType].push(queue); resolve(queue.id()); } @@ -242,20 +239,20 @@ export class VandelayService { }); } - getQueuedRecords(queueId: number, queueType: string, + getQueuedRecords(queueId: number, queueType: string, options?: any, limitToMatches?: boolean): Observable { const qtype = queueType.match(/bib/) ? 'bib' : 'auth'; - let method = + let method = `open-ils.vandelay.${qtype}_queue.records.retrieve`; if (limitToMatches) { - method = + method = `open-ils.vandelay.${qtype}_queue.records.matches.retrieve`; } - return this.net.request('open-ils.vandelay', + return this.net.request('open-ils.vandelay', method, this.auth.token(), queueId, options); } @@ -264,11 +261,11 @@ export class VandelayService { const etype = queue.queue_type().match(/auth/) ? 'auth' : 'bib'; - let url = - `${VANDELAY_EXPORT_PATH}?type=${etype}&queueid=${queue.id()}` + let url = + `${VANDELAY_EXPORT_PATH}?type=${etype}&queueid=${queue.id()}`; let saveName = queue.name(); - + if (nonImported) { url += '&nonimported=1'; saveName += '_nonimported'; @@ -289,7 +286,7 @@ export class VandelayService { ); } - // Poll every 2 seconds for session tracker updates so long + // Poll every 2 seconds for session tracker updates so long // as the session tracker is active. // Returns an Observable of tracker objects. pollSessionTracker(id: number): Observable { @@ -300,13 +297,13 @@ export class VandelayService { getNextSessionTracker(id: number, observer: any) { - // No need for this to be an authoritative call. + // No need for this to be an authoritative call. // It will complete eventually regardless. this.pcrud.retrieve('vst', id).subscribe( tracker => { if (tracker && tracker.state() === 'active') { observer.next(tracker); - setTimeout(() => + setTimeout(() => this.getNextSessionTracker(id, observer), 2000); } else { console.debug( diff --git a/Open-ILS/src/eg2/src/app/staff/share/buckets/record-bucket-dialog.component.ts b/Open-ILS/src/eg2/src/app/staff/share/buckets/record-bucket-dialog.component.ts index eb99aec3be..2270081148 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/buckets/record-bucket-dialog.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/buckets/record-bucket-dialog.component.ts @@ -49,7 +49,7 @@ export class RecordBucketDialogComponent } ngOnInit() { - + if (this.qId) { this.bucketType = 'vandelay_queue'; } else { -- 2.43.2