paperless-ngx/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts

109 lines
2.8 KiB
TypeScript
Raw Normal View History

import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
2020-10-27 01:10:18 +01:00
import { DomSanitizer } from '@angular/platform-browser';
import { PaperlessDocument } from 'src/app/data/paperless-document';
import { DocumentService } from 'src/app/services/rest/document.service';
import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap';
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type';
2020-10-27 01:10:18 +01:00
@Component({
selector: 'app-document-card-large',
templateUrl: './document-card-large.component.html',
styleUrls: ['./document-card-large.component.scss', '../popover-preview/popover-preview.scss']
2020-10-27 01:10:18 +01:00
})
export class DocumentCardLargeComponent implements OnInit {
constructor(private documentService: DocumentService, private sanitizer: DomSanitizer, private settingsService: SettingsService) { }
2020-10-27 01:10:18 +01:00
2020-12-22 02:43:18 +01:00
@Input()
2020-12-26 01:08:54 +01:00
selected = false
2020-12-22 02:43:18 +01:00
@Output()
toggleSelected = new EventEmitter()
2020-12-22 02:43:18 +01:00
get selectable() {
return this.toggleSelected.observers.length > 0
2020-12-22 02:43:18 +01:00
}
2020-10-27 01:10:18 +01:00
@Input()
document: PaperlessDocument
@Output()
clickTag = new EventEmitter<number>()
@Output()
clickCorrespondent = new EventEmitter<number>()
@Output()
clickDocumentType = new EventEmitter<number>()
@Output()
clickMoreLike= new EventEmitter()
2021-02-24 13:02:26 -08:00
@ViewChild('popover') popover: NgbPopover
mouseOnPreview = false
popoverHidden = true
2020-12-17 21:36:21 +01:00
get searchScoreClass() {
2021-04-03 21:50:05 +02:00
if (this.document.__search_hit__) {
if (this.document.__search_hit__.score > 0.7) {
return "success"
} else if (this.document.__search_hit__.score > 0.3) {
return "warning"
} else {
return "danger"
}
2020-12-17 21:36:21 +01:00
}
}
2020-10-27 01:10:18 +01:00
ngOnInit(): void {
}
getIsThumbInverted() {
return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
}
2020-10-27 01:10:18 +01:00
getThumbUrl() {
return this.documentService.getThumbUrl(this.document.id)
}
getDownloadUrl() {
return this.documentService.getDownloadUrl(this.document.id)
}
get previewUrl() {
return this.documentService.getPreviewUrl(this.document.id)
}
2021-02-24 13:02:26 -08:00
mouseEnterPreview() {
this.mouseOnPreview = true
if (!this.popover.isOpen()) {
// we're going to open but hide to pre-load content during hover delay
this.popover.open()
this.popoverHidden = true
setTimeout(() => {
if (this.mouseOnPreview) {
// show popover
this.popoverHidden = false
} else {
this.popover.close()
}
}, 600);
}
}
mouseLeavePreview() {
this.mouseOnPreview = false
}
mouseLeaveCard() {
this.popover.close()
}
get contentTrimmed() {
return this.document.content.substr(0, 500)
}
2020-10-27 01:10:18 +01:00
}