mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-31 02:27:10 -04:00 
			
		
		
		
	document service adds observables for linked data to its results
This commit is contained in:
		
							parent
							
								
									1d8765100c
								
							
						
					
					
						commit
						34f353f399
					
				| @ -2,14 +2,15 @@ import { PaperlessCorrespondent } from './paperless-correspondent' | ||||
| import { ObjectWithId } from './object-with-id' | ||||
| import { PaperlessTag } from './paperless-tag' | ||||
| import { PaperlessDocumentType } from './paperless-document-type' | ||||
| import { Observable } from 'rxjs' | ||||
| 
 | ||||
| export interface PaperlessDocument extends ObjectWithId { | ||||
| 
 | ||||
|     correspondent_object?: PaperlessCorrespondent | ||||
|     correspondent$?: Observable<PaperlessCorrespondent> | ||||
| 
 | ||||
|     correspondent?: number | ||||
| 
 | ||||
|     document_type_object?: PaperlessDocumentType | ||||
|     document_type$?: Observable<PaperlessDocumentType> | ||||
| 
 | ||||
|     document_type?: number | ||||
| 
 | ||||
| @ -19,7 +20,7 @@ export interface PaperlessDocument extends ObjectWithId { | ||||
| 
 | ||||
|     file_type?: string | ||||
| 
 | ||||
|     tags_objects?: PaperlessTag[] | ||||
|     tags$?: Observable<PaperlessTag[]> | ||||
| 
 | ||||
|     tags?: number[] | ||||
| 
 | ||||
|  | ||||
| @ -6,6 +6,10 @@ import { HttpClient } from '@angular/common/http'; | ||||
| import { Observable } from 'rxjs'; | ||||
| import { Results } from 'src/app/data/results'; | ||||
| import { FilterRule } from 'src/app/data/filter-rule'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { CorrespondentService } from './correspondent.service'; | ||||
| import { DocumentTypeService } from './document-type.service'; | ||||
| import { TagService } from './tag.service'; | ||||
| 
 | ||||
| 
 | ||||
| export const DOCUMENT_SORT_FIELDS = [ | ||||
| @ -27,7 +31,7 @@ export const SORT_DIRECTION_DESCENDING = "des" | ||||
| }) | ||||
| export class DocumentService extends AbstractPaperlessService<PaperlessDocument> { | ||||
| 
 | ||||
|   constructor(http: HttpClient) { | ||||
|   constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService) { | ||||
|     super(http, 'documents') | ||||
|   } | ||||
| 
 | ||||
| @ -47,8 +51,26 @@ export class DocumentService extends AbstractPaperlessService<PaperlessDocument> | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   addObservablesToDocument(doc: PaperlessDocument) { | ||||
|     if (doc.correspondent) { | ||||
|       doc.correspondent$ = this.correspondentService.getCached(doc.correspondent) | ||||
|     } | ||||
|     if (doc.document_type) { | ||||
|       doc.document_type$ = this.documentTypeService.getCached(doc.document_type) | ||||
|     } | ||||
|     if (doc.tags) { | ||||
|       doc.tags$ = this.tagService.getCachedMany(doc.tags) | ||||
|     } | ||||
|     return doc | ||||
|   } | ||||
| 
 | ||||
|   list(page?: number, pageSize?: number, sortField?: string, sortDirection?: string, filterRules?: FilterRule[]): Observable<Results<PaperlessDocument>> { | ||||
|     return super.list(page, pageSize, sortField, sortDirection, this.filterRulesToQueryParams(filterRules)) | ||||
|     return super.list(page, pageSize, sortField, sortDirection, this.filterRulesToQueryParams(filterRules)).pipe( | ||||
|       map(results => { | ||||
|         results.results.forEach(doc => this.addObservablesToDocument(doc)) | ||||
|         return results | ||||
|       }) | ||||
|     ) | ||||
|   } | ||||
| 
 | ||||
|   getPreviewUrl(id: number, original: boolean = false): string { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user