document list service: selection model

This commit is contained in:
jonaswinkler 2020-12-11 14:48:33 +01:00
parent a8f27f79dd
commit 56dfc71bb9

View File

@ -118,6 +118,7 @@ export class DocumentListViewService {
//want changes in the filter editor to propagate into here right away.
this.view.filterRules = cloneFilterRules(filterRules)
this.reload()
this.reduceSelectionToFilter()
this.saveDocumentListView()
}
@ -192,6 +193,49 @@ export class DocumentListViewService {
}
}
selected = new Set<number>()
selectNone() {
this.selected.clear()
}
private reduceSelectionToFilter() {
if (this.selected.size > 0) {
this.documentService.listAllFilteredIds(this.filterRules).subscribe(ids => {
let subset = new Set<number>()
for (let id of ids) {
if (this.selected.has(id)) {
subset.add(id)
}
}
this.selected = subset
})
}
}
selectAll() {
this.documentService.listAllFilteredIds(this.filterRules).subscribe(ids => ids.forEach(id => this.selected.add(id)))
}
selectPage() {
this.selected.clear()
this.documents.forEach(doc => {
this.selected.add(doc.id)
})
}
isSelected(d: PaperlessDocument) {
return this.selected.has(d.id)
}
setSelected(d: PaperlessDocument, value: boolean) {
if (value) {
this.selected.add(d.id)
} else if (!value) {
this.selected.delete(d.id)
}
}
constructor(private documentService: DocumentService) {
let documentListViewConfigJson = sessionStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG)
if (documentListViewConfigJson) {