mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
119 lines
3.1 KiB
TypeScript
119 lines
3.1 KiB
TypeScript
import { Component } from '@angular/core'
|
|
import { NgxFileDropEntry } from 'ngx-file-drop'
|
|
import {
|
|
ConsumerStatusService,
|
|
FileStatus,
|
|
FileStatusPhase,
|
|
} from 'src/app/services/consumer-status.service'
|
|
import { UploadDocumentsService } from 'src/app/services/upload-documents.service'
|
|
|
|
const MAX_ALERTS = 5
|
|
|
|
@Component({
|
|
selector: 'app-upload-file-widget',
|
|
templateUrl: './upload-file-widget.component.html',
|
|
styleUrls: ['./upload-file-widget.component.scss'],
|
|
})
|
|
export class UploadFileWidgetComponent {
|
|
alertsExpanded = false
|
|
|
|
constructor(
|
|
private consumerStatusService: ConsumerStatusService,
|
|
private uploadDocumentsService: UploadDocumentsService
|
|
) {}
|
|
|
|
getStatus() {
|
|
return this.consumerStatusService.getConsumerStatus().slice(0, MAX_ALERTS)
|
|
}
|
|
|
|
getStatusSummary() {
|
|
let strings = []
|
|
let countUploadingAndProcessing =
|
|
this.consumerStatusService.getConsumerStatusNotCompleted().length
|
|
let countFailed = this.getStatusFailed().length
|
|
let countSuccess = this.getStatusSuccess().length
|
|
if (countUploadingAndProcessing > 0) {
|
|
strings.push($localize`Processing: ${countUploadingAndProcessing}`)
|
|
}
|
|
if (countFailed > 0) {
|
|
strings.push($localize`Failed: ${countFailed}`)
|
|
}
|
|
if (countSuccess > 0) {
|
|
strings.push($localize`Added: ${countSuccess}`)
|
|
}
|
|
return strings.join(
|
|
$localize`:this string is used to separate processing, failed and added on the file upload widget:, `
|
|
)
|
|
}
|
|
|
|
getStatusHidden() {
|
|
if (this.consumerStatusService.getConsumerStatus().length < MAX_ALERTS)
|
|
return []
|
|
else return this.consumerStatusService.getConsumerStatus().slice(MAX_ALERTS)
|
|
}
|
|
|
|
getStatusUploading() {
|
|
return this.consumerStatusService.getConsumerStatus(
|
|
FileStatusPhase.UPLOADING
|
|
)
|
|
}
|
|
|
|
getStatusFailed() {
|
|
return this.consumerStatusService.getConsumerStatus(FileStatusPhase.FAILED)
|
|
}
|
|
|
|
getStatusSuccess() {
|
|
return this.consumerStatusService.getConsumerStatus(FileStatusPhase.SUCCESS)
|
|
}
|
|
|
|
getStatusCompleted() {
|
|
return this.consumerStatusService.getConsumerStatusCompleted()
|
|
}
|
|
getTotalUploadProgress() {
|
|
let current = 0
|
|
let max = 0
|
|
|
|
this.getStatusUploading().forEach((status) => {
|
|
current += status.currentPhaseProgress
|
|
max += status.currentPhaseMaxProgress
|
|
})
|
|
|
|
return current / Math.max(max, 1)
|
|
}
|
|
|
|
isFinished(status: FileStatus) {
|
|
return (
|
|
status.phase == FileStatusPhase.FAILED ||
|
|
status.phase == FileStatusPhase.SUCCESS
|
|
)
|
|
}
|
|
|
|
getStatusColor(status: FileStatus) {
|
|
switch (status.phase) {
|
|
case FileStatusPhase.PROCESSING:
|
|
case FileStatusPhase.UPLOADING:
|
|
return 'primary'
|
|
case FileStatusPhase.FAILED:
|
|
return 'danger'
|
|
case FileStatusPhase.SUCCESS:
|
|
return 'success'
|
|
}
|
|
}
|
|
|
|
dismiss(status: FileStatus) {
|
|
this.consumerStatusService.dismiss(status)
|
|
}
|
|
|
|
dismissCompleted() {
|
|
this.consumerStatusService.dismissCompleted()
|
|
}
|
|
|
|
public fileOver(event) {}
|
|
|
|
public fileLeave(event) {}
|
|
|
|
public dropped(files: NgxFileDropEntry[]) {
|
|
this.uploadDocumentsService.uploadFiles(files)
|
|
}
|
|
}
|