diff --git a/src-ui/src/app/components/admin/settings/settings.component.ts b/src-ui/src/app/components/admin/settings/settings.component.ts index c3ffa62b6..8a4be2761 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.ts +++ b/src-ui/src/app/components/admin/settings/settings.component.ts @@ -27,7 +27,7 @@ import { } from 'rxjs' import { Group } from 'src/app/data/group' import { - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, DisplayMode, DocumentDisplayField, SavedView, diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html index 5fce8f017..ace55df43 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html @@ -9,7 +9,7 @@ Show all } - @if (documents.length && savedView.display_mode === DashboardViewMode.TABLE) { + @if (documents.length && (!savedView.display_mode || savedView.display_mode === DashboardViewMode.TABLE)) { diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts index 08a97f700..3808ffbdb 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts @@ -13,7 +13,8 @@ import { DocumentDisplayField, DisplayMode, SavedView, - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, + DEFAULT_PAGE_SIZE, } from 'src/app/data/saved-view' import { ConsumerStatusService } from 'src/app/services/consumer-status.service' import { DocumentService } from 'src/app/services/rest/document.service' @@ -133,7 +134,7 @@ export class SavedViewWidgetComponent this.documentService .listFiltered( 1, - this.savedView.page_size, + this.savedView.page_size ?? DEFAULT_PAGE_SIZE, this.savedView.sort_field, this.savedView.sort_reverse, this.savedView.filter_rules, @@ -250,6 +251,6 @@ export class SavedViewWidgetComponent const id = column.split('_')[2] return this.customFields.find((c) => c.id === parseInt(id))?.name } - return DOCUMENT_DISPLAY_FIELDS.find((c) => c.id === column)?.name + return DEFAULT_DOCUMENT_DISPLAY_FIELDS.find((c) => c.id === column)?.name } } diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts index dc7fe4186..e15e52be5 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts @@ -12,7 +12,7 @@ import { NgbPopover } from '@ng-bootstrap/ng-bootstrap' import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' import { - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, DocumentDisplayField, } from 'src/app/data/saved-view' @@ -36,7 +36,7 @@ export class DocumentCardLargeComponent extends ComponentWithPermissions { @Input() displayFields: Set = new Set( - DOCUMENT_DISPLAY_FIELDS.map((f) => f.id) + DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id) ) @Output() diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts index 9c55aa8de..385549c02 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts @@ -13,7 +13,7 @@ import { NgbPopover } from '@ng-bootstrap/ng-bootstrap' import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' import { - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, DocumentDisplayField, } from 'src/app/data/saved-view' @@ -43,7 +43,7 @@ export class DocumentCardSmallComponent extends ComponentWithPermissions { @Input() displayFields: Set = new Set( - DOCUMENT_DISPLAY_FIELDS.map((f) => f.id) + DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id) ) @Output() diff --git a/src-ui/src/app/data/saved-view.ts b/src-ui/src/app/data/saved-view.ts index 477e07650..2f416b73a 100644 --- a/src-ui/src/app/data/saved-view.ts +++ b/src-ui/src/app/data/saved-view.ts @@ -4,6 +4,7 @@ import { ObjectWithPermissions } from './object-with-permissions' export enum DisplayMode { TABLE = 'table', SMALL_CARDS = 'smallCards', + LARGE_CARDS = 'largeCards', } export enum DocumentDisplayField { @@ -21,7 +22,9 @@ export enum DocumentDisplayField { ASN = 'asn', } -export const DOCUMENT_DISPLAY_FIELDS = [ +export const DEFAULT_PAGE_SIZE = 10 + +export const DEFAULT_DOCUMENT_DISPLAY_FIELDS = [ { id: DocumentDisplayField.TITLE, name: $localize`Title`, diff --git a/src-ui/src/app/services/settings.service.spec.ts b/src-ui/src/app/services/settings.service.spec.ts index fe80c41f7..9784645dd 100644 --- a/src-ui/src/app/services/settings.service.spec.ts +++ b/src-ui/src/app/services/settings.service.spec.ts @@ -13,7 +13,7 @@ import { AppModule } from '../app.module' import { UiSettings, SETTINGS_KEYS } from '../data/ui-settings' import { SettingsService } from './settings.service' import { - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, DocumentDisplayField, SavedView, } from '../data/saved-view' @@ -353,7 +353,7 @@ describe('SettingsService', () => { settingsService.initializeDisplayFields() expect( settingsService.allDocumentDisplayFields.includes( - DOCUMENT_DISPLAY_FIELDS[0] + DEFAULT_DOCUMENT_DISPLAY_FIELDS[0] ) ).toBeTruthy() expect( diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index 66a73071a..7afebcd4d 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -26,7 +26,7 @@ import { } from './permissions.service' import { ToastService } from './toast.service' import { - DOCUMENT_DISPLAY_FIELDS, + DEFAULT_DOCUMENT_DISPLAY_FIELDS, DocumentDisplayField, SavedView, } from '../data/saved-view' @@ -307,7 +307,7 @@ export class SettingsService { } public initializeDisplayFields() { - this.allDocumentDisplayFields = DOCUMENT_DISPLAY_FIELDS + this.allDocumentDisplayFields = DEFAULT_DOCUMENT_DISPLAY_FIELDS if ( this.permissionsService.currentUserCan( @@ -316,7 +316,7 @@ export class SettingsService { ) ) { this.customFieldsService.listAll().subscribe((r) => { - this.allDocumentDisplayFields = DOCUMENT_DISPLAY_FIELDS.concat( + this.allDocumentDisplayFields = DEFAULT_DOCUMENT_DISPLAY_FIELDS.concat( r.results.map((field) => { return { id: `${DocumentDisplayField.CUSTOM_FIELD}${field.id}` as any, diff --git a/src/documents/migrations/1047_savedview_dasboard_view_mode_and_more.py b/src/documents/migrations/1047_savedview_display_mode_and_more.py similarity index 75% rename from src/documents/migrations/1047_savedview_dasboard_view_mode_and_more.py rename to src/documents/migrations/1047_savedview_display_mode_and_more.py index a423251cd..5093b9616 100644 --- a/src/documents/migrations/1047_savedview_dasboard_view_mode_and_more.py +++ b/src/documents/migrations/1047_savedview_display_mode_and_more.py @@ -17,19 +17,25 @@ class Migration(migrations.Migration): model_name="savedview", name="display_mode", field=models.CharField( - choices=[("table", "Table"), ("smallCards", "Small Cards")], - default="table", + blank=True, + choices=[ + ("table", "Table"), + ("smallCards", "Small Cards"), + ("largeCards", "Large Cards"), + ], max_length=128, - verbose_name="Dashboard view display mode", + null=True, + verbose_name="View display mode", ), ), migrations.AddField( model_name="savedview", name="page_size", field=models.PositiveIntegerField( - default=10, + blank=True, + null=True, validators=[django.core.validators.MinValueValidator(1)], - verbose_name="Dashboard view limit", + verbose_name="View page size", ), ), migrations.AddField( @@ -45,7 +51,7 @@ class Migration(migrations.Migration): ("correspondent", "Correspondent"), ("storagepath", "Storage Path"), ], - default="created,title,tags,correspondent", + default="created,title,tag,correspondent", max_length=128, ), ), diff --git a/src/documents/models.py b/src/documents/models.py index 54e534ca0..6e9137992 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -555,6 +555,7 @@ class SavedView(ModelWithOwner): class ViewDisplayMode(models.TextChoices): TABLE = ("table", _("Table")) SMALL_CARDS = ("smallCards", _("Small Cards")) + LARGE_CARDS = ("largeCards", _("Large Cards")) class DocumentDisplayFields(models.TextChoices): TITLE = ("title", _("Title")) @@ -587,7 +588,8 @@ class SavedView(ModelWithOwner): page_size = models.PositiveIntegerField( _("View page size"), - default=10, + null=True, + blank=True, validators=[MinValueValidator(1)], ) @@ -595,7 +597,8 @@ class SavedView(ModelWithOwner): max_length=128, verbose_name=_("View display mode"), choices=ViewDisplayMode.choices, - default=ViewDisplayMode.TABLE, + null=True, + blank=True, ) document_display_fields = DynamicMultiSelectField( diff --git a/src/documents/tests/test_api_documents.py b/src/documents/tests/test_api_documents.py index a37e5ae37..410dd0716 100644 --- a/src/documents/tests/test_api_documents.py +++ b/src/documents/tests/test_api_documents.py @@ -1614,7 +1614,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): status.HTTP_404_NOT_FOUND, ) - def test_create_update_patch(self): + def test_savedview_create_update_patch(self): User.objects.create_user("user1") view = {