diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html
index 57197d1ea..cef3690d1 100644
--- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html
+++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html
@@ -34,7 +34,7 @@
+ *ngIf="allowSelectNone || item.id" [item]="item" [hideCount]="hideCount(item)" [state]="selectionModel.get(item.id)" [count]="getUpdatedDocumentCount(item.id)" (toggle)="selectionModel.toggle(item.id)" (exclude)="excludeClicked(item.id)" (click)="setButtonItemIndex(i)" [disabled]="disabled">
diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts
index b324ac6a0..79548aaf8 100644
--- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts
+++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts
@@ -12,6 +12,7 @@ import { ToggleableItemState } from './toggleable-dropdown-button/toggleable-dro
import { MatchingModel } from 'src/app/data/matching-model'
import { Subject } from 'rxjs'
import { SelectionDataItem } from 'src/app/services/rest/document.service'
+import { ObjectWithPermissions } from 'src/app/data/object-with-permissions'
export interface ChangedItems {
itemsToAdd: MatchingModel[]
@@ -552,4 +553,13 @@ export class FilterableDropdownComponent {
// just track the index in case user uses arrows
this.keyboardIndex = index
}
+
+ hideCount(item: ObjectWithPermissions) {
+ // counts are pointless when clicking item would add to the set of docs
+ return (
+ this.selectionModel.logicalOperator === LogicalOperator.Or &&
+ this.manyToOne &&
+ this.selectionModel.get(item.id) !== ToggleableItemState.Selected
+ )
+ }
}
diff --git a/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.html b/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.html
index af935b0db..b67ae736c 100644
--- a/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.html
+++ b/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.html
@@ -20,5 +20,5 @@
{{item.name}}
- {{count ?? item.document_count}}
+ {{count ?? item.document_count}}
diff --git a/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.ts b/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.ts
index 32ec671b1..7eb6d1b26 100644
--- a/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.ts
+++ b/src-ui/src/app/components/common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component.ts
@@ -26,6 +26,9 @@ export class ToggleableDropdownButtonComponent {
@Input()
disabled: boolean = false
+ @Input()
+ hideCount: boolean = false
+
@Output()
toggle = new EventEmitter()
diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts
index 906e36a0f..087cf5473 100644
--- a/src-ui/src/app/services/document-list-view.service.ts
+++ b/src-ui/src/app/services/document-list-view.service.ts
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'
import { ParamMap, Router } from '@angular/router'
-import { Observable } from 'rxjs'
+import { Observable, first } from 'rxjs'
import {
filterRulesDiffer,
cloneFilterRules,
@@ -230,13 +230,21 @@ export class DocumentListViewService {
activeListViewState.documents = result.results
this.documentService
- .getSelectionData(result.results.map((d) => d.id))
+ .listAllFilteredIds(activeListViewState.filterRules)
+ .pipe(first())
.subscribe({
- next: (selectionData) => {
- this.selectionData = selectionData
- },
- error: () => {
- this.selectionData = null
+ next: (ids: number[]) => {
+ this.documentService
+ .getSelectionData(ids)
+ .pipe(first())
+ .subscribe({
+ next: (selectionData) => {
+ this.selectionData = selectionData
+ },
+ error: () => {
+ this.selectionData = null
+ },
+ })
},
})
diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py
index ad2b5d0f6..f15fdd626 100644
--- a/src/documents/serialisers.py
+++ b/src/documents/serialisers.py
@@ -422,7 +422,7 @@ class DocumentSerializer(OwnedObjectSerializer, DynamicFieldsModelSerializer):
def to_representation(self, instance):
doc = super().to_representation(instance)
- if self.truncate_content:
+ if self.truncate_content and "content" in self.fields:
doc["content"] = doc.get("content")[0:550]
return doc