it('should not filter out custom fields if settings not initialized', () => {
const customFields = ['custom_field_1', 'custom_field_2']
documentListViewService.displayFields = customFields as any
- settingsService.displayFieldsInitialized = false
expect(documentListViewService.displayFields).toEqual(customFields)
jest.spyOn(settingsService, 'allDisplayFields', 'get').mockReturnValue([
{ id: DisplayField.ADDED, name: 'Added' },
{ id: DisplayField.TITLE, name: 'Title' },
{ id: 'custom_field_1', name: 'Custom Field 1' },
] as any)
- settingsService.displayFieldsInitialized = true
+ settingsService.displayFieldsInit.emit(true)
+ expect(documentListViewService.displayFields).toEqual(['custom_field_1'])
+
+ // will now filter on set
+ documentListViewService.displayFields = customFields as any
expect(documentListViewService.displayFields).toEqual(['custom_field_1'])
})
})
import { DocumentService, SelectionData } from './rest/document.service'
import { SettingsService } from './settings.service'
+const LIST_DEFAULT_DISPLAY_FIELDS: DisplayField[] = DEFAULT_DISPLAY_FIELDS.map(
+ (f) => f.id
+).filter((f) => f !== DisplayField.ADDED)
+
/**
* Captures the current state of the list view.
*/
private _activeSavedViewId: number = null
+ private displayFieldsInitialized: boolean = false
+
get activeSavedViewId() {
return this._activeSavedViewId
}
localStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG)
}
}
+
+ this.settings.displayFieldsInit.subscribe(() => {
+ this.displayFieldsInitialized = true
+ if (this.activeListViewState.displayFields) {
+ this.activeListViewState.displayFields =
+ this.activeListViewState.displayFields.filter(
+ (field) =>
+ this.settings.allDisplayFields.find((f) => f.id === field) !==
+ undefined
+ )
+ this.saveDocumentListView()
+ }
+ })
}
private defaultListViewState(): ListViewState {
}
get displayFields(): DisplayField[] {
- let fields =
- this.activeListViewState.displayFields ??
- DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
- if (!this.activeListViewState.displayFields) {
- fields = fields.filter((f) => f !== DisplayField.ADDED)
- }
- return this.settings.displayFieldsInitialized
- ? fields.filter(
+ return this.activeListViewState.displayFields ?? LIST_DEFAULT_DISPLAY_FIELDS
+ }
+
+ set displayFields(fields: DisplayField[]) {
+ this.activeListViewState.displayFields = this.displayFieldsInitialized
+ ? fields?.filter(
(field) =>
this.settings.allDisplayFields.find((f) => f.id === field) !==
undefined
)
: fields
- }
-
- set displayFields(fields: DisplayField[]) {
- this.activeListViewState.displayFields = fields
this.saveDocumentListView()
}
public get allDisplayFields(): Array<{ id: DisplayField; name: string }> {
return this._allDisplayFields
}
- public displayFieldsInitialized: boolean = false
+ public displayFieldsInit: EventEmitter<boolean> = new EventEmitter()
constructor(
rendererFactory: RendererFactory2,
}
})
)
- this.displayFieldsInitialized = true
+ this.displayFieldsInit.emit(true)
})
} else {
- this.displayFieldsInitialized = true
+ this.displayFieldsInit.emit(true)
}
}