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