Refactoring
This commit is contained in:
parent
eb1eab1dfc
commit
9a2d30cb33
@ -124,7 +124,7 @@
|
||||
"content": {
|
||||
"size": -1,
|
||||
"mimeType": "application/json",
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
},
|
||||
"headersSize": -1,
|
||||
"bodySize": -1,
|
||||
|
@ -124,7 +124,7 @@
|
||||
"content": {
|
||||
"size": -1,
|
||||
"mimeType": "application/json",
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
},
|
||||
"headersSize": -1,
|
||||
"bodySize": -1,
|
||||
|
@ -124,7 +124,7 @@
|
||||
"content": {
|
||||
"size": -1,
|
||||
"mimeType": "application/json",
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
},
|
||||
"headersSize": -1,
|
||||
"bodySize": -1,
|
||||
|
@ -124,7 +124,7 @@
|
||||
"content": {
|
||||
"size": -1,
|
||||
"mimeType": "application/json",
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"document_display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
"text": "{\"count\":6,\"next\":null,\"previous\":null,\"all\":[8,17,7,4,11,15],\"results\":[{\"id\":8,\"name\":\"Correspondent 2\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":3,\"value\":\"2\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":17,\"name\":\"In the Last Month\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":20,\"value\":\"created:[-1 month to now]\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":7,\"name\":\"Inbox\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"9\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":4,\"name\":\"Recently Added\",\"show_on_dashboard\":true,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":11,\"name\":\"Tag: Another Sample Tag\",\"show_on_dashboard\":false,\"show_in_sidebar\":true,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":6,\"value\":\"4\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]},{\"id\":15,\"name\":\"View ASN not empty\",\"show_on_dashboard\":false,\"show_in_sidebar\":false,\"sort_field\":\"created\",\"sort_reverse\":true,\"filter_rules\":[{\"rule_type\":18,\"value\":\"false\"}],\"owner\":\"2\",\"user_can_change\":true,\"page_size\":10,\"display_mode\":\"table\",\"display_fields\":[\"created\",\"title\",\"tag\",\"documenttype\"]}]}"
|
||||
},
|
||||
"headersSize": -1,
|
||||
"bodySize": -1,
|
||||
|
@ -2365,7 +2365,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
|
||||
<context context-type="linenumber">129</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.html</context>
|
||||
@ -4228,7 +4228,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.ts</context>
|
||||
<context context-type="linenumber">86</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="2504502765849142619" datatype="html">
|
||||
@ -6340,14 +6340,14 @@
|
||||
<source>View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
|
||||
<context context-type="linenumber">250</context>
|
||||
<context context-type="linenumber">241</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6837554170707123455" datatype="html">
|
||||
<source>View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
|
||||
<context context-type="linenumber">291</context>
|
||||
<context context-type="linenumber">282</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3100631071441658964" datatype="html">
|
||||
|
@ -363,8 +363,8 @@
|
||||
<option [ngValue]="DashboardViewMode.LARGE_CARDS" i18n>Large Cards</option>
|
||||
</select>
|
||||
</div>
|
||||
@if (documentDisplayFields) {
|
||||
<pngx-input-drag-drop-select i18n-title title="Show" [items]="documentDisplayFields" formControlName="document_display_fields"></pngx-input-drag-drop-select>
|
||||
@if (displayFields) {
|
||||
<pngx-input-drag-drop-select i18n-title title="Show" [items]="displayFields" formControlName="display_fields"></pngx-input-drag-drop-select>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -27,9 +27,9 @@ import {
|
||||
} from 'rxjs'
|
||||
import { Group } from 'src/app/data/group'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from 'src/app/data/saved-view'
|
||||
import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
|
||||
@ -117,8 +117,8 @@ export class SettingsComponent
|
||||
|
||||
savedViews: SavedView[]
|
||||
SettingsNavIDs = SettingsNavIDs
|
||||
get documentDisplayFields() {
|
||||
return this.settings.allDocumentDisplayFields
|
||||
get displayFields() {
|
||||
return this.settings.allDisplayFields
|
||||
}
|
||||
|
||||
store: BehaviorSubject<any>
|
||||
@ -353,7 +353,7 @@ export class SettingsComponent
|
||||
show_in_sidebar: view.show_in_sidebar,
|
||||
page_size: view.page_size,
|
||||
display_mode: view.display_mode,
|
||||
document_display_fields: view.document_display_fields,
|
||||
display_fields: view.display_fields,
|
||||
}
|
||||
this.savedViewGroup.addControl(
|
||||
view.id.toString(),
|
||||
@ -364,7 +364,7 @@ export class SettingsComponent
|
||||
show_in_sidebar: new FormControl(null),
|
||||
page_size: new FormControl(null),
|
||||
display_mode: new FormControl(null),
|
||||
document_display_fields: new FormControl([]),
|
||||
display_fields: new FormControl([]),
|
||||
})
|
||||
)
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import { CustomFieldDisplayComponent } from './custom-field-display.component'
|
||||
import { Document } from 'src/app/data/document'
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing'
|
||||
import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
|
||||
import { DocumentDisplayField } from 'src/app/data/saved-view'
|
||||
import { DisplayField } from 'src/app/data/saved-view'
|
||||
|
||||
const customFields: CustomField[] = [
|
||||
{ id: 1, name: 'Field 1', data_type: CustomFieldDataType.String },
|
||||
@ -57,7 +57,7 @@ describe('CustomFieldDisplayComponent', () => {
|
||||
.spyOn(documentService, 'getFew')
|
||||
.mockReturnValue(of({ results: [] } as any))
|
||||
|
||||
component.fieldDisplayKey = DocumentDisplayField.CUSTOM_FIELD + '2'
|
||||
component.fieldDisplayKey = DisplayField.CUSTOM_FIELD + '2'
|
||||
expect(component.fieldId).toEqual(2)
|
||||
component.document = document
|
||||
expect(component.document.title).toEqual('Doc 1')
|
||||
|
@ -3,7 +3,7 @@ import { Subject, takeUntil } from 'rxjs'
|
||||
import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field'
|
||||
import { Document } from 'src/app/data/document'
|
||||
import { Results } from 'src/app/data/results'
|
||||
import { DocumentDisplayField } from 'src/app/data/saved-view'
|
||||
import { DisplayField } from 'src/app/data/saved-view'
|
||||
import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
|
||||
import { DocumentService } from 'src/app/services/rest/document.service'
|
||||
|
||||
@ -39,10 +39,7 @@ export class CustomFieldDisplayComponent implements OnInit, OnDestroy {
|
||||
|
||||
@Input()
|
||||
set fieldDisplayKey(key: string) {
|
||||
this.fieldId = parseInt(
|
||||
key.replace(DocumentDisplayField.CUSTOM_FIELD, ''),
|
||||
10
|
||||
)
|
||||
this.fieldId = parseInt(key.replace(DisplayField.CUSTOM_FIELD, ''), 10)
|
||||
}
|
||||
|
||||
value: any
|
||||
|
@ -13,7 +13,7 @@
|
||||
<table content class="table table-hover mb-0 mt-n2 align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
@for (column of savedView.document_display_fields; track column; let i = $index) {
|
||||
@for (column of savedView.display_fields; track column; let i = $index) {
|
||||
@if (activeDisplayFields.includes(column)) {
|
||||
<th
|
||||
scope="col"
|
||||
@ -30,7 +30,7 @@
|
||||
<tbody>
|
||||
@for (doc of documents; track doc.id) {
|
||||
<tr>
|
||||
@for (column of savedView.document_display_fields; track column; let i = $index) {
|
||||
@for (column of savedView.display_fields; track column; let i = $index) {
|
||||
@if (activeDisplayFields.includes(column)) {
|
||||
<td class="py-2 py-md-3 position-relative" [ngClass]="{ 'd-none d-md-table-cell': i > 1 }">
|
||||
@switch (column) {
|
||||
@ -67,7 +67,7 @@
|
||||
@if (column.startsWith(DashboardViewTableColumn.CUSTOM_FIELD)) {
|
||||
<pngx-custom-field-display [document]="doc" [fieldDisplayKey]="column"></pngx-custom-field-display>
|
||||
}
|
||||
@if (i === savedView.document_display_fields.length - 1) {
|
||||
@if (i === savedView.display_fields.length - 1) {
|
||||
<div class="btn-group position-absolute top-50 end-0 translate-middle-y">
|
||||
<a [href]="getPreviewUrl(doc)" title="View Preview" i18n-title target="_blank" class="btn px-4 btn-dark border-dark-subtle"
|
||||
[ngbPopover]="previewContent" [popoverTitle]="doc.title | documentTitle"
|
||||
|
@ -18,11 +18,7 @@ import {
|
||||
FILTER_HAS_TAGS_ALL,
|
||||
FILTER_STORAGE_PATH,
|
||||
} from 'src/app/data/filter-rule-type'
|
||||
import {
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
SavedView,
|
||||
} from 'src/app/data/saved-view'
|
||||
import { DisplayMode, DisplayField, SavedView } from 'src/app/data/saved-view'
|
||||
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
|
||||
import { PermissionsGuard } from 'src/app/guards/permissions.guard'
|
||||
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
|
||||
@ -60,15 +56,15 @@ const savedView: SavedView = {
|
||||
],
|
||||
page_size: 20,
|
||||
display_mode: DisplayMode.TABLE,
|
||||
document_display_fields: [
|
||||
DocumentDisplayField.CREATED,
|
||||
DocumentDisplayField.TITLE,
|
||||
DocumentDisplayField.TAGS,
|
||||
DocumentDisplayField.CORRESPONDENT,
|
||||
DocumentDisplayField.DOCUMENT_TYPE,
|
||||
DocumentDisplayField.STORAGE_PATH,
|
||||
`${DocumentDisplayField.CUSTOM_FIELD}11` as any,
|
||||
`${DocumentDisplayField.CUSTOM_FIELD}15` as any,
|
||||
display_fields: [
|
||||
DisplayField.CREATED,
|
||||
DisplayField.TITLE,
|
||||
DisplayField.TAGS,
|
||||
DisplayField.CORRESPONDENT,
|
||||
DisplayField.DOCUMENT_TYPE,
|
||||
DisplayField.STORAGE_PATH,
|
||||
`${DisplayField.CUSTOM_FIELD}11` as any,
|
||||
`${DisplayField.CUSTOM_FIELD}15` as any,
|
||||
],
|
||||
}
|
||||
|
||||
@ -332,23 +328,17 @@ describe('SavedViewWidgetComponent', () => {
|
||||
})
|
||||
|
||||
it('should get correct column title', () => {
|
||||
expect(component.getColumnTitle(DocumentDisplayField.TITLE)).toEqual(
|
||||
'Title'
|
||||
expect(component.getColumnTitle(DisplayField.TITLE)).toEqual('Title')
|
||||
expect(component.getColumnTitle(DisplayField.CREATED)).toEqual('Created')
|
||||
expect(component.getColumnTitle(DisplayField.ADDED)).toEqual('Added')
|
||||
expect(component.getColumnTitle(DisplayField.TAGS)).toEqual('Tags')
|
||||
expect(component.getColumnTitle(DisplayField.CORRESPONDENT)).toEqual(
|
||||
'Correspondent'
|
||||
)
|
||||
expect(component.getColumnTitle(DocumentDisplayField.CREATED)).toEqual(
|
||||
'Created'
|
||||
expect(component.getColumnTitle(DisplayField.DOCUMENT_TYPE)).toEqual(
|
||||
'Document type'
|
||||
)
|
||||
expect(component.getColumnTitle(DocumentDisplayField.ADDED)).toEqual(
|
||||
'Added'
|
||||
)
|
||||
expect(component.getColumnTitle(DocumentDisplayField.TAGS)).toEqual('Tags')
|
||||
expect(
|
||||
component.getColumnTitle(DocumentDisplayField.CORRESPONDENT)
|
||||
).toEqual('Correspondent')
|
||||
expect(
|
||||
component.getColumnTitle(DocumentDisplayField.DOCUMENT_TYPE)
|
||||
).toEqual('Document type')
|
||||
expect(component.getColumnTitle(DocumentDisplayField.STORAGE_PATH)).toEqual(
|
||||
expect(component.getColumnTitle(DisplayField.STORAGE_PATH)).toEqual(
|
||||
'Storage path'
|
||||
)
|
||||
})
|
||||
|
@ -10,11 +10,11 @@ import { Router } from '@angular/router'
|
||||
import { Subject, takeUntil } from 'rxjs'
|
||||
import { Document } from 'src/app/data/document'
|
||||
import {
|
||||
DocumentDisplayField,
|
||||
DisplayField,
|
||||
DisplayMode,
|
||||
SavedView,
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DEFAULT_PAGE_SIZE,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DEFAULT_DASHBOARD_VIEW_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'
|
||||
@ -47,7 +47,7 @@ export class SavedViewWidgetComponent
|
||||
implements OnInit, OnDestroy
|
||||
{
|
||||
public DashboardViewMode = DisplayMode
|
||||
public DashboardViewTableColumn = DocumentDisplayField
|
||||
public DashboardViewTableColumn = DisplayField
|
||||
public CustomFieldDataType = CustomFieldDataType
|
||||
|
||||
loading: boolean = true
|
||||
@ -80,10 +80,10 @@ export class SavedViewWidgetComponent
|
||||
mouseOnPreview = false
|
||||
popoverHidden = true
|
||||
|
||||
activeDisplayFields: DocumentDisplayField[] = [
|
||||
DocumentDisplayField.TITLE,
|
||||
DocumentDisplayField.CREATED,
|
||||
DocumentDisplayField.ADDED,
|
||||
activeDisplayFields: DisplayField[] = [
|
||||
DisplayField.TITLE,
|
||||
DisplayField.CREATED,
|
||||
DisplayField.ADDED,
|
||||
]
|
||||
|
||||
ngOnInit(): void {
|
||||
@ -109,11 +109,11 @@ export class SavedViewWidgetComponent
|
||||
})
|
||||
}
|
||||
|
||||
this.savedView.document_display_fields?.forEach((column) => {
|
||||
this.savedView.display_fields?.forEach((column) => {
|
||||
let type: PermissionType = Object.values(PermissionType).find((t) =>
|
||||
t.includes(column)
|
||||
)
|
||||
if (column.startsWith(DocumentDisplayField.CUSTOM_FIELD)) {
|
||||
if (column.startsWith(DisplayField.CUSTOM_FIELD)) {
|
||||
type = PermissionType.CustomField
|
||||
}
|
||||
if (
|
||||
@ -134,7 +134,7 @@ export class SavedViewWidgetComponent
|
||||
this.documentService
|
||||
.listFiltered(
|
||||
1,
|
||||
this.savedView.page_size ?? DEFAULT_PAGE_SIZE,
|
||||
this.savedView.page_size ?? DEFAULT_DASHBOARD_VIEW_PAGE_SIZE,
|
||||
this.savedView.sort_field,
|
||||
this.savedView.sort_reverse,
|
||||
this.savedView.filter_rules,
|
||||
@ -252,11 +252,11 @@ export class SavedViewWidgetComponent
|
||||
}, 300)
|
||||
}
|
||||
|
||||
public getColumnTitle(column: DocumentDisplayField): string {
|
||||
if (column.startsWith(DocumentDisplayField.CUSTOM_FIELD)) {
|
||||
public getColumnTitle(column: DisplayField): string {
|
||||
if (column.startsWith(DisplayField.CUSTOM_FIELD)) {
|
||||
const id = column.split('_')[2]
|
||||
return this.customFields.find((c) => c.id === parseInt(id))?.name
|
||||
}
|
||||
return DEFAULT_DOCUMENT_DISPLAY_FIELDS.find((c) => c.id === column)?.name
|
||||
return DEFAULT_DISPLAY_FIELDS.find((c) => c.id === column)?.name
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<h5 class="card-title">
|
||||
@if (displayFields.includes(DocumentDisplayField.CORRESPONDENT) && document.correspondent) {
|
||||
@if (displayFields.includes(DisplayField.CORRESPONDENT) && document.correspondent) {
|
||||
@if (clickCorrespondent.observers.length ) {
|
||||
<a title="Filter by correspondent" i18n-title (click)="clickCorrespondent.emit(document.correspondent);$event.stopPropagation()" class="fw-bold btn-link">{{(document.correspondent$ | async)?.name}}</a>
|
||||
} @else {
|
||||
@ -23,10 +23,10 @@
|
||||
}
|
||||
:
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.TITLE)) {
|
||||
@if (displayFields.includes(DisplayField.TITLE)) {
|
||||
{{document.title | documentTitle}}
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.TAGS)) {
|
||||
@if (displayFields.includes(DisplayField.TAGS)) {
|
||||
@for (t of document.tags$ | async; track t) {
|
||||
<pngx-tag [tag]="t" linkTitle="Filter by tag" i18n-linkTitle class="ms-1" (click)="clickTag.emit(t.id);$event.stopPropagation()" [clickable]="clickTag.observers.length"></pngx-tag>
|
||||
}
|
||||
@ -70,29 +70,29 @@
|
||||
</div>
|
||||
|
||||
<div class="list-group list-group-horizontal border-0 card-info ms-md-auto mt-2 mt-md-0">
|
||||
@if (displayFields.includes(DocumentDisplayField.NOTES) && notesEnabled && document.notes.length) {
|
||||
@if (displayFields.includes(DisplayField.NOTES) && notesEnabled && document.notes.length) {
|
||||
<button routerLink="/documents/{{document.id}}/notes" class="list-group-item btn btn-sm bg-light text-dark p-1 border-0 me-2 d-flex align-items-center" title="View notes" i18n-title>
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="chat-left-text"></i-bs><small i18n>{{document.notes.length}} Notes</small>
|
||||
</button>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) && document.document_type) {
|
||||
@if (displayFields.includes(DisplayField.DOCUMENT_TYPE) && document.document_type) {
|
||||
<button type="button" class="list-group-item btn btn-sm bg-light text-dark p-1 border-0 me-2 d-flex align-items-center" title="Filter by document type" i18n-title
|
||||
(click)="clickDocumentType.emit(document.document_type);$event.stopPropagation()">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="file-earmark"></i-bs><small>{{(document.document_type$ | async)?.name}}</small>
|
||||
</button>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.STORAGE_PATH) && document.storage_path) {
|
||||
@if (displayFields.includes(DisplayField.STORAGE_PATH) && document.storage_path) {
|
||||
<button type="button" class="list-group-item btn btn-sm bg-light text-dark p-1 border-0 me-2 d-flex align-items-center" title="Filter by storage path" i18n-title
|
||||
(click)="clickStoragePath.emit(document.storage_path);$event.stopPropagation()">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="archive"></i-bs><small>{{(document.storage_path$ | async)?.name}}</small>
|
||||
</button>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.ASN) && document.archive_serial_number | isNumber) {
|
||||
@if (displayFields.includes(DisplayField.ASN) && document.archive_serial_number | isNumber) {
|
||||
<div class="list-group-item me-2 bg-light text-dark p-1 border-0 d-flex align-items-center">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="upc-scan"></i-bs><small>#{{document.archive_serial_number}}</small>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.CREATED) || displayFields.includes(DocumentDisplayField.ADDED)) {
|
||||
@if (displayFields.includes(DisplayField.CREATED) || displayFields.includes(DisplayField.ADDED)) {
|
||||
<ng-template #dateTooltip>
|
||||
<div class="d-flex flex-column text-light">
|
||||
<span i18n>Created: {{ document.created | customDate }}</span>
|
||||
@ -100,23 +100,23 @@
|
||||
<span i18n>Modified: {{ document.modified | customDate }}</span>
|
||||
</div>
|
||||
</ng-template>
|
||||
@if (displayFields.includes(DocumentDisplayField.CREATED)) {
|
||||
@if (displayFields.includes(DisplayField.CREATED)) {
|
||||
<div class="list-group-item bg-light text-dark p-1 border-0 d-flex align-items-center" [ngbTooltip]="dateTooltip">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="calendar-event"></i-bs><small>{{document.created_date | customDate:'mediumDate'}}</small>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.ADDED)) {
|
||||
@if (displayFields.includes(DisplayField.ADDED)) {
|
||||
<div class="list-group-item bg-light text-dark p-1 border-0 d-flex align-items-center" [ngbTooltip]="dateTooltip">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="calendar-event"></i-bs><small>{{document.added | customDate:'mediumDate'}}</small>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) {
|
||||
@if (displayFields.includes(DisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) {
|
||||
<div class="list-group-item bg-light text-dark p-1 border-0 d-flex align-items-center">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="person-fill-lock"></i-bs><small>{{document.owner | username}}</small>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.SHARED) && document.is_shared_by_requester) {
|
||||
@if (displayFields.includes(DisplayField.SHARED) && document.is_shared_by_requester) {
|
||||
<div class="list-group-item bg-light text-dark p-1 border-0 d-flex align-items-center">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="people-fill"></i-bs><small i18n>Shared</small>
|
||||
</div>
|
||||
@ -128,7 +128,7 @@
|
||||
</div>
|
||||
}
|
||||
@for (field of document.custom_fields; track field.id) {
|
||||
@if (displayFields.includes(DocumentDisplayField.CUSTOM_FIELD + field.field)) {
|
||||
@if (displayFields.includes(DisplayField.CUSTOM_FIELD + field.field)) {
|
||||
<div class="list-group-item bg-light text-dark p-1 border-0 d-flex align-items-center">
|
||||
<i-bs width=".9em" height=".9em" class="me-2 text-muted" name="ui-radios"></i-bs>
|
||||
<small>
|
||||
|
@ -11,10 +11,7 @@ import { SettingsService } from 'src/app/services/settings.service'
|
||||
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 {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DocumentDisplayField,
|
||||
} from 'src/app/data/saved-view'
|
||||
import { DEFAULT_DISPLAY_FIELDS, DisplayField } from 'src/app/data/saved-view'
|
||||
|
||||
@Component({
|
||||
selector: 'pngx-document-card-large',
|
||||
@ -22,7 +19,7 @@ import {
|
||||
styleUrls: ['./document-card-large.component.scss'],
|
||||
})
|
||||
export class DocumentCardLargeComponent extends ComponentWithPermissions {
|
||||
DocumentDisplayField = DocumentDisplayField
|
||||
DisplayField = DisplayField
|
||||
|
||||
constructor(
|
||||
private documentService: DocumentService,
|
||||
@ -35,7 +32,7 @@ export class DocumentCardLargeComponent extends ComponentWithPermissions {
|
||||
selected = false
|
||||
|
||||
@Input()
|
||||
displayFields: string[] = DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
displayFields: string[] = DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
|
||||
@Output()
|
||||
toggleSelected = new EventEmitter()
|
||||
|
@ -10,7 +10,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (displayFields?.includes(DocumentDisplayField.TAGS)) {
|
||||
@if (displayFields?.includes(DisplayField.TAGS)) {
|
||||
<div class="tags d-flex flex-column text-end position-absolute me-1 fs-6">
|
||||
@for (t of getTagsLimited$() | async; track t) {
|
||||
<pngx-tag [tag]="t" (click)="clickTag.emit(t.id);$event.stopPropagation()" [clickable]="true" linkTitle="Toggle tag filter" i18n-linkTitle></pngx-tag>
|
||||
@ -24,7 +24,7 @@
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (displayFields.includes(DocumentDisplayField.NOTES) && notesEnabled && document.notes.length) {
|
||||
@if (displayFields.includes(DisplayField.NOTES) && notesEnabled && document.notes.length) {
|
||||
<a routerLink="/documents/{{document.id}}/notes" class="document-card-notes py-2 px-1">
|
||||
<span class="badge rounded-pill bg-light border text-primary">
|
||||
<i-bs width="1.2em" height="1.2em" class="ms-1 me-1" name="chat-left-text"></i-bs>
|
||||
@ -34,31 +34,31 @@
|
||||
|
||||
<div class="card-body bg-light p-2">
|
||||
<p class="card-text">
|
||||
@if (displayFields.includes(DocumentDisplayField.CORRESPONDENT) && document.correspondent) {
|
||||
@if (displayFields.includes(DisplayField.CORRESPONDENT) && document.correspondent) {
|
||||
<a title="Toggle correspondent filter" i18n-title (click)="clickCorrespondent.emit(document.correspondent);$event.stopPropagation()" class="fw-bold btn-link">{{(document.correspondent$ | async)?.name ?? privateName}}</a>:
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.TITLE)) {
|
||||
@if (displayFields.includes(DisplayField.TITLE)) {
|
||||
{{document.title | documentTitle}}
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="card-footer pt-0 pb-2 px-2">
|
||||
<div class="list-group list-group-flush border-0 pt-1 pb-2 card-info">
|
||||
@if (displayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) && document.document_type) {
|
||||
@if (displayFields.includes(DisplayField.DOCUMENT_TYPE) && document.document_type) {
|
||||
<button type="button" class="list-group-item list-group-item-action bg-transparent ps-0 p-1 border-0" title="Toggle document type filter" i18n-title
|
||||
(click)="clickDocumentType.emit(document.document_type);$event.stopPropagation()">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="file-earmark"></i-bs>
|
||||
<small>{{(document.document_type$ | async)?.name ?? privateName}}</small>
|
||||
</button>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.STORAGE_PATH) && document.storage_path) {
|
||||
@if (displayFields.includes(DisplayField.STORAGE_PATH) && document.storage_path) {
|
||||
<button type="button" class="list-group-item list-group-item-action bg-transparent ps-0 p-1 border-0" title="Toggle storage path filter" i18n-title
|
||||
(click)="clickStoragePath.emit(document.storage_path);$event.stopPropagation()">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="folder"></i-bs>
|
||||
<small>{{(document.storage_path$ | async)?.name ?? privateName}}</small>
|
||||
</button>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.CREATED) || displayFields.includes(DocumentDisplayField.ADDED)) {
|
||||
@if (displayFields.includes(DisplayField.CREATED) || displayFields.includes(DisplayField.ADDED)) {
|
||||
<div class="list-group-item bg-transparent p-0 border-0 d-flex flex-wrap-reverse justify-content-between">
|
||||
<ng-template #dateTooltip>
|
||||
<div class="d-flex flex-column text-light">
|
||||
@ -70,32 +70,32 @@
|
||||
<div class="ps-0 p-1" placement="top" [ngbTooltip]="dateTooltip">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="calendar-event"></i-bs>
|
||||
<small>
|
||||
@if (displayFields.includes(DocumentDisplayField.CREATED)) { {{document.created | customDate:'mediumDate'}} }
|
||||
@if (displayFields.includes(DisplayField.CREATED)) { {{document.created | customDate:'mediumDate'}} }
|
||||
@else { {{document.added | customDate:'mediumDate'}} }
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.ASN) && document.archive_serial_number | isNumber) {
|
||||
@if (displayFields.includes(DisplayField.ASN) && document.archive_serial_number | isNumber) {
|
||||
<div class="ps-0 p-1">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="upc-scan"></i-bs>
|
||||
<small>#{{document.archive_serial_number}}</small>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) {
|
||||
@if (displayFields.includes(DisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) {
|
||||
<div class="ps-0 p-1">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="person-fill-lock"></i-bs>
|
||||
<small>{{document.owner | username}}</small>
|
||||
</div>
|
||||
}
|
||||
@if (displayFields.includes(DocumentDisplayField.SHARED) && document.is_shared_by_requester) {
|
||||
@if (displayFields.includes(DisplayField.SHARED) && document.is_shared_by_requester) {
|
||||
<div class="ps-0 p-1">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="people-fill"></i-bs>
|
||||
<small i18n>Shared</small>
|
||||
</div>
|
||||
}
|
||||
@for (field of document.custom_fields; track field.id) {
|
||||
@if (displayFields.includes(DocumentDisplayField.CUSTOM_FIELD + field.field)) {
|
||||
@if (displayFields.includes(DisplayField.CUSTOM_FIELD + field.field)) {
|
||||
<div class="ps-0 p-1">
|
||||
<i-bs width="1em" height="1em" class="me-2 text-muted" name="ui-radios"></i-bs>
|
||||
<pngx-custom-field-display [document]="document" [fieldId]="field.field"></pngx-custom-field-display>
|
||||
|
@ -12,10 +12,7 @@ import { SettingsService } from 'src/app/services/settings.service'
|
||||
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 {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DocumentDisplayField,
|
||||
} from 'src/app/data/saved-view'
|
||||
import { DEFAULT_DISPLAY_FIELDS, DisplayField } from 'src/app/data/saved-view'
|
||||
|
||||
@Component({
|
||||
selector: 'pngx-document-card-small',
|
||||
@ -23,7 +20,7 @@ import {
|
||||
styleUrls: ['./document-card-small.component.scss'],
|
||||
})
|
||||
export class DocumentCardSmallComponent extends ComponentWithPermissions {
|
||||
DocumentDisplayField = DocumentDisplayField
|
||||
DisplayField = DisplayField
|
||||
|
||||
constructor(
|
||||
private documentService: DocumentService,
|
||||
@ -42,7 +39,7 @@ export class DocumentCardSmallComponent extends ComponentWithPermissions {
|
||||
document: Document
|
||||
|
||||
@Input()
|
||||
displayFields: string[] = DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
displayFields: string[] = DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
|
||||
@Output()
|
||||
dblClickDocument = new EventEmitter()
|
||||
|
@ -18,7 +18,7 @@
|
||||
</button>
|
||||
<div ngbDropdownMenu aria-labelledby="dropdownDisplayFields" class="shadow">
|
||||
<div class="px-3">
|
||||
@for (field of settingsService.allDocumentDisplayFields; track field.id) {
|
||||
@for (field of settingsService.allDisplayFields; track field.id) {
|
||||
<div class="form-check small">
|
||||
<input type="checkbox" class="form-check-input" id="displayField{{field.id}}" [checked]="activeDisplayFields.includes(field.id)" (change)="toggleDisplayField(field.id)">
|
||||
<label class="form-check-label small" for="displayField{{field.id}}">{{field.name}}</label>
|
||||
@ -160,7 +160,7 @@
|
||||
<table class="table table-sm align-middle border shadow-sm">
|
||||
<thead>
|
||||
<th></th>
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.ASN)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.ASN)) {
|
||||
<th class="d-none d-lg-table-cell"
|
||||
pngxSortable="archive_serial_number"
|
||||
title="Sort by ASN" i18n-title
|
||||
@ -169,7 +169,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>ASN</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.CORRESPONDENT) && permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.CORRESPONDENT) && permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
|
||||
<th class="d-none d-md-table-cell"
|
||||
pngxSortable="correspondent__name"
|
||||
title="Sort by correspondent" i18n-title
|
||||
@ -178,7 +178,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Correspondent</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.TITLE)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.TITLE)) {
|
||||
<th
|
||||
pngxSortable="title"
|
||||
title="Sort by title" i18n-title
|
||||
@ -187,7 +187,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Title</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.OWNER) && permissionService.currentUserCan(PermissionAction.View, PermissionType.User)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.OWNER) && permissionService.currentUserCan(PermissionAction.View, PermissionType.User)) {
|
||||
<th class="d-none d-xl-table-cell"
|
||||
pngxSortable="owner"
|
||||
title="Sort by owner" i18n-title
|
||||
@ -196,7 +196,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Owner</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.NOTES) && notesEnabled) {
|
||||
@if (activeDisplayFields.includes(DisplayField.NOTES) && notesEnabled) {
|
||||
<th class="d-none d-xl-table-cell"
|
||||
pngxSortable="num_notes"
|
||||
title="Sort by notes" i18n-title
|
||||
@ -205,7 +205,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Notes</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) && permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.DOCUMENT_TYPE) && permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
|
||||
<th class="d-none d-xl-table-cell"
|
||||
pngxSortable="document_type__name"
|
||||
title="Sort by document type" i18n-title
|
||||
@ -214,7 +214,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Document type</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.STORAGE_PATH) && permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.STORAGE_PATH) && permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
|
||||
<th class="d-none d-xl-table-cell"
|
||||
pngxSortable="storage_path__name"
|
||||
title="Sort by storage path" i18n-title
|
||||
@ -223,7 +223,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Storage path</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.CREATED)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.CREATED)) {
|
||||
<th
|
||||
pngxSortable="created"
|
||||
title="Sort by created date" i18n-title
|
||||
@ -232,7 +232,7 @@
|
||||
(sort)="onSort($event)"
|
||||
i18n>Created</th>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.ADDED)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.ADDED)) {
|
||||
<th
|
||||
pngxSortable="added"
|
||||
title="Sort by added date" i18n-title
|
||||
@ -256,12 +256,12 @@
|
||||
<label class="form-check-label" for="docCheck{{d.id}}"></label>
|
||||
</div>
|
||||
</td>
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.ASN)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.ASN)) {
|
||||
<td class="d-none d-xl-table-cell">
|
||||
{{d.archive_serial_number}}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.CORRESPONDENT) && permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.CORRESPONDENT) && permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
|
||||
<td class="d-none d-xl-table-cell">
|
||||
@if (d.correspondent) {
|
||||
<a (click)="clickCorrespondent(d.correspondent);$event.stopPropagation()" title="Filter by correspondent" i18n-title>{{(d.correspondent$ | async)?.name}}</a>
|
||||
@ -269,21 +269,21 @@
|
||||
</td>
|
||||
}
|
||||
<td>
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.TITLE)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.TITLE)) {
|
||||
<a routerLink="/documents/{{d.id}}" title="Edit document" i18n-title style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.TAGS)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.TAGS)) {
|
||||
@for (t of d.tags$ | async; track t) {
|
||||
<pngx-tag [tag]="t" class="ms-1" clickable="true" linkTitle="Filter by tag" i18n-linkTitle (click)="clickTag(t.id);$event.stopPropagation()"></pngx-tag>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.OWNER) && permissionService.currentUserCan(PermissionAction.View, PermissionType.User)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.OWNER) && permissionService.currentUserCan(PermissionAction.View, PermissionType.User)) {
|
||||
<td>
|
||||
{{d.owner | username}}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.NOTES) && notesEnabled) {
|
||||
@if (activeDisplayFields.includes(DisplayField.NOTES) && notesEnabled) {
|
||||
<td class="d-none d-xl-table-cell">
|
||||
@if (d.notes.length) {
|
||||
<a routerLink="/documents/{{d.id}}/notes" class="btn btn-sm p-0">
|
||||
@ -294,26 +294,26 @@
|
||||
}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) && permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.DOCUMENT_TYPE) && permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
|
||||
<td class="d-none d-xl-table-cell">
|
||||
@if (d.document_type) {
|
||||
<a (click)="clickDocumentType(d.document_type);$event.stopPropagation()" title="Filter by document type" i18n-title>{{(d.document_type$ | async)?.name}}</a>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.STORAGE_PATH) && permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.STORAGE_PATH) && permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
|
||||
<td class="d-none d-xl-table-cell">
|
||||
@if (d.storage_path) {
|
||||
<a (click)="clickStoragePath(d.storage_path);$event.stopPropagation()" title="Filter by storage path" i18n-title>{{(d.storage_path$ | async)?.name}}</a>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.CREATED)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.CREATED)) {
|
||||
<td>
|
||||
{{d.created_date | customDate}}
|
||||
</td>
|
||||
}
|
||||
@if (activeDisplayFields.includes(DocumentDisplayField.ADDED)) {
|
||||
@if (activeDisplayFields.includes(DisplayField.ADDED)) {
|
||||
<td>
|
||||
{{d.added | customDate}}
|
||||
</td>
|
||||
|
@ -35,9 +35,9 @@ import { Subject, of, throwError } from 'rxjs'
|
||||
import { SavedViewService } from 'src/app/services/rest/saved-view.service'
|
||||
import { ActivatedRoute, Router, convertToParamMap } from '@angular/router'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from 'src/app/data/saved-view'
|
||||
import {
|
||||
@ -331,7 +331,7 @@ describe('DocumentListComponent', () => {
|
||||
})
|
||||
|
||||
it('should support setting sort field by table head', () => {
|
||||
component.activeDisplayFields = [DocumentDisplayField.ASN]
|
||||
component.activeDisplayFields = [DisplayField.ASN]
|
||||
jest.spyOn(documentListService, 'documents', 'get').mockReturnValue(docs)
|
||||
fixture.detectChanges()
|
||||
expect(documentListService.sortField).toEqual('created')
|
||||
@ -555,7 +555,7 @@ describe('DocumentListComponent', () => {
|
||||
],
|
||||
page_size: 5,
|
||||
display_mode: DisplayMode.SMALL_CARDS,
|
||||
document_display_fields: [DocumentDisplayField.TITLE],
|
||||
display_fields: [DisplayField.TITLE],
|
||||
}
|
||||
jest.spyOn(savedViewService, 'getCached').mockReturnValue(of(view))
|
||||
const queryParams = { view: view.id.toString() }
|
||||
@ -567,9 +567,9 @@ describe('DocumentListComponent', () => {
|
||||
fixture.detectChanges()
|
||||
expect(documentListService.activeSavedViewId).toEqual(10)
|
||||
|
||||
component.list.documentDisplayFields = [DocumentDisplayField.ASN]
|
||||
component.list.displayFields = [DisplayField.ASN]
|
||||
expect(component.savedViewIsModified).toBeTruthy()
|
||||
component.list.documentDisplayFields = [DocumentDisplayField.TITLE]
|
||||
component.list.displayFields = [DisplayField.TITLE]
|
||||
expect(component.savedViewIsModified).toBeFalsy()
|
||||
component.list.displayMode = DisplayMode.TABLE
|
||||
expect(component.savedViewIsModified).toBeTruthy()
|
||||
@ -590,9 +590,7 @@ describe('DocumentListComponent', () => {
|
||||
expect(documentListService.sortField).toEqual('created')
|
||||
|
||||
component.list.displayMode = DisplayMode.TABLE
|
||||
component.list.documentDisplayFields = DEFAULT_DOCUMENT_DISPLAY_FIELDS.map(
|
||||
(f) => f.id
|
||||
)
|
||||
component.list.displayFields = DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
fixture.detectChanges()
|
||||
|
||||
expect(
|
||||
@ -635,19 +633,19 @@ describe('DocumentListComponent', () => {
|
||||
|
||||
it('should support toggling display fields', () => {
|
||||
fixture.detectChanges()
|
||||
component.activeDisplayFields = [DocumentDisplayField.ASN]
|
||||
component.toggleDisplayField(DocumentDisplayField.TITLE)
|
||||
component.activeDisplayFields = [DisplayField.ASN]
|
||||
component.toggleDisplayField(DisplayField.TITLE)
|
||||
expect(component.activeDisplayFields).toEqual([
|
||||
DocumentDisplayField.ASN,
|
||||
DocumentDisplayField.TITLE,
|
||||
DisplayField.ASN,
|
||||
DisplayField.TITLE,
|
||||
])
|
||||
component.toggleDisplayField(DocumentDisplayField.ASN)
|
||||
expect(component.activeDisplayFields).toEqual([DocumentDisplayField.TITLE])
|
||||
component.toggleDisplayField(DisplayField.ASN)
|
||||
expect(component.activeDisplayFields).toEqual([DisplayField.TITLE])
|
||||
})
|
||||
|
||||
it('should get custom field title', () => {
|
||||
fixture.detectChanges()
|
||||
settingsService.allDocumentDisplayFields = [
|
||||
settingsService.allDisplayFields = [
|
||||
{ id: 'custom_field_1', name: 'Custom Field 1' },
|
||||
]
|
||||
expect(component.getDisplayCustomFieldTitle('custom_field_1')).toEqual(
|
||||
|
@ -16,11 +16,7 @@ import {
|
||||
} from 'src/app/utils/filter-rules'
|
||||
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type'
|
||||
import { Document } from 'src/app/data/document'
|
||||
import {
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
SavedView,
|
||||
} from 'src/app/data/saved-view'
|
||||
import { DisplayMode, DisplayField, SavedView } from 'src/app/data/saved-view'
|
||||
import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
|
||||
import {
|
||||
SortableDirective,
|
||||
@ -50,7 +46,7 @@ export class DocumentListComponent
|
||||
extends ComponentWithPermissions
|
||||
implements OnInit, OnDestroy
|
||||
{
|
||||
DocumentDisplayField = DocumentDisplayField
|
||||
DisplayField = DisplayField
|
||||
DisplayMode = DisplayMode
|
||||
|
||||
constructor(
|
||||
@ -73,12 +69,12 @@ export class DocumentListComponent
|
||||
|
||||
@ViewChildren(SortableDirective) headers: QueryList<SortableDirective>
|
||||
|
||||
get activeDisplayFields(): DocumentDisplayField[] {
|
||||
return this.list.documentDisplayFields
|
||||
get activeDisplayFields(): DisplayField[] {
|
||||
return this.list.displayFields
|
||||
}
|
||||
|
||||
set activeDisplayFields(fields: DocumentDisplayField[]) {
|
||||
this.list.documentDisplayFields = fields
|
||||
set activeDisplayFields(fields: DisplayField[]) {
|
||||
this.list.displayFields = fields
|
||||
this.updateDisplayCustomFields()
|
||||
}
|
||||
activeDisplayCustomFields: Set<string> = new Set()
|
||||
@ -88,7 +84,7 @@ export class DocumentListComponent
|
||||
Array.from(this.activeDisplayFields).filter(
|
||||
(field) =>
|
||||
typeof field === 'string' &&
|
||||
field.startsWith(DocumentDisplayField.CUSTOM_FIELD)
|
||||
field.startsWith(DisplayField.CUSTOM_FIELD)
|
||||
)
|
||||
)
|
||||
}
|
||||
@ -107,7 +103,7 @@ export class DocumentListComponent
|
||||
(this.unmodifiedSavedView.page_size &&
|
||||
this.unmodifiedSavedView.page_size !== this.list.pageSize) ||
|
||||
this.unmodifiedSavedView.display_mode !== this.list.displayMode ||
|
||||
this.unmodifiedSavedView.document_display_fields.join(',') !==
|
||||
this.unmodifiedSavedView.display_fields.join(',') !==
|
||||
this.activeDisplayFields.join(',') ||
|
||||
filterRulesDiffer(
|
||||
this.unmodifiedSavedView.filter_rules,
|
||||
@ -153,7 +149,7 @@ export class DocumentListComponent
|
||||
return this.list.selected.size > 0
|
||||
}
|
||||
|
||||
toggleDisplayField(field: DocumentDisplayField) {
|
||||
toggleDisplayField(field: DisplayField) {
|
||||
if (this.activeDisplayFields.includes(field)) {
|
||||
this.activeDisplayFields = this.activeDisplayFields.filter(
|
||||
(f) => f !== field
|
||||
@ -165,9 +161,8 @@ export class DocumentListComponent
|
||||
}
|
||||
|
||||
public getDisplayCustomFieldTitle(field: string) {
|
||||
return this.settingsService.allDocumentDisplayFields.find(
|
||||
(f) => f.id === field
|
||||
)?.name
|
||||
return this.settingsService.allDisplayFields.find((f) => f.id === field)
|
||||
?.name
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
@ -198,8 +193,8 @@ export class DocumentListComponent
|
||||
if (!view.display_mode) {
|
||||
view.display_mode = this.list.displayMode
|
||||
}
|
||||
if (!view.document_display_fields) {
|
||||
view.document_display_fields = this.list.documentDisplayFields
|
||||
if (!view.display_fields) {
|
||||
view.display_fields = this.list.displayFields
|
||||
}
|
||||
this.unmodifiedSavedView = view
|
||||
this.list.activateSavedViewWithQueryParams(
|
||||
|
@ -7,7 +7,7 @@ export enum DisplayMode {
|
||||
LARGE_CARDS = 'largeCards',
|
||||
}
|
||||
|
||||
export enum DocumentDisplayField {
|
||||
export enum DisplayField {
|
||||
TITLE = 'title',
|
||||
CREATED = 'created',
|
||||
ADDED = 'added',
|
||||
@ -22,51 +22,51 @@ export enum DocumentDisplayField {
|
||||
ASN = 'asn',
|
||||
}
|
||||
|
||||
export const DEFAULT_PAGE_SIZE = 10
|
||||
export const DEFAULT_DASHBOARD_VIEW_PAGE_SIZE = 10
|
||||
|
||||
export const DEFAULT_DOCUMENT_DISPLAY_FIELDS = [
|
||||
export const DEFAULT_DISPLAY_FIELDS = [
|
||||
{
|
||||
id: DocumentDisplayField.TITLE,
|
||||
id: DisplayField.TITLE,
|
||||
name: $localize`Title`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.CREATED,
|
||||
id: DisplayField.CREATED,
|
||||
name: $localize`Created`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.ADDED,
|
||||
id: DisplayField.ADDED,
|
||||
name: $localize`Added`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.TAGS,
|
||||
id: DisplayField.TAGS,
|
||||
name: $localize`Tags`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.CORRESPONDENT,
|
||||
id: DisplayField.CORRESPONDENT,
|
||||
name: $localize`Correspondent`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.DOCUMENT_TYPE,
|
||||
id: DisplayField.DOCUMENT_TYPE,
|
||||
name: $localize`Document type`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.STORAGE_PATH,
|
||||
id: DisplayField.STORAGE_PATH,
|
||||
name: $localize`Storage path`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.NOTES,
|
||||
id: DisplayField.NOTES,
|
||||
name: $localize`Notes`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.OWNER,
|
||||
id: DisplayField.OWNER,
|
||||
name: $localize`Owner`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.SHARED,
|
||||
id: DisplayField.SHARED,
|
||||
name: $localize`Shared`,
|
||||
},
|
||||
{
|
||||
id: DocumentDisplayField.ASN,
|
||||
id: DisplayField.ASN,
|
||||
name: $localize`ASN`,
|
||||
},
|
||||
]
|
||||
@ -88,5 +88,5 @@ export interface SavedView extends ObjectWithPermissions {
|
||||
|
||||
display_mode?: DisplayMode
|
||||
|
||||
document_display_fields?: DocumentDisplayField[]
|
||||
display_fields?: DisplayField[]
|
||||
}
|
||||
|
@ -13,9 +13,9 @@ import {
|
||||
FILTER_HAS_TAGS_ANY,
|
||||
} from '../data/filter-rule-type'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from '../data/saved-view'
|
||||
import { FilterRule } from '../data/filter-rule'
|
||||
@ -569,25 +569,25 @@ describe('DocumentListViewService', () => {
|
||||
|
||||
it('should update default view state when display fields change', () => {
|
||||
const localStorageSpy = jest.spyOn(localStorage, 'setItem')
|
||||
documentListViewService.documentDisplayFields = [
|
||||
DocumentDisplayField.ADDED,
|
||||
DocumentDisplayField.TITLE,
|
||||
documentListViewService.displayFields = [
|
||||
DisplayField.ADDED,
|
||||
DisplayField.TITLE,
|
||||
]
|
||||
expect(documentListViewService.documentDisplayFields).toEqual([
|
||||
DocumentDisplayField.ADDED,
|
||||
DocumentDisplayField.TITLE,
|
||||
expect(documentListViewService.displayFields).toEqual([
|
||||
DisplayField.ADDED,
|
||||
DisplayField.TITLE,
|
||||
])
|
||||
expect(localStorageSpy).toHaveBeenCalled()
|
||||
// reload triggered
|
||||
httpTestingController.match(
|
||||
`${environment.apiBaseUrl}documents/?page=1&page_size=50&ordering=-created&truncate_content=true`
|
||||
)
|
||||
documentListViewService.documentDisplayFields = null
|
||||
documentListViewService.displayFields = null
|
||||
httpTestingController.match(
|
||||
`${environment.apiBaseUrl}documents/?page=1&page_size=50&ordering=-created&truncate_content=true`
|
||||
)
|
||||
expect(documentListViewService.documentDisplayFields).toEqual(
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
expect(documentListViewService.displayFields).toEqual(
|
||||
DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
)
|
||||
})
|
||||
})
|
||||
|
@ -9,9 +9,9 @@ import {
|
||||
} from '../utils/filter-rules'
|
||||
import { Document } from '../data/document'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayMode,
|
||||
DocumentDisplayField,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from '../data/saved-view'
|
||||
import { SETTINGS_KEYS } from '../data/ui-settings'
|
||||
@ -78,7 +78,7 @@ export interface ListViewState {
|
||||
/**
|
||||
* The fields to display in the document list.
|
||||
*/
|
||||
documentDisplayFields?: DocumentDisplayField[]
|
||||
displayFields?: DisplayField[]
|
||||
}
|
||||
|
||||
/**
|
||||
@ -196,8 +196,7 @@ export class DocumentListViewService {
|
||||
}
|
||||
this.activeListViewState.displayMode = view.display_mode
|
||||
this.activeListViewState.pageSize = view.page_size
|
||||
this.activeListViewState.documentDisplayFields =
|
||||
view.document_display_fields
|
||||
this.activeListViewState.displayFields = view.display_fields
|
||||
|
||||
this.reduceSelectionToFilter()
|
||||
|
||||
@ -411,15 +410,15 @@ export class DocumentListViewService {
|
||||
)
|
||||
}
|
||||
|
||||
get documentDisplayFields(): DocumentDisplayField[] {
|
||||
get displayFields(): DisplayField[] {
|
||||
return (
|
||||
this.activeListViewState.documentDisplayFields ??
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
this.activeListViewState.displayFields ??
|
||||
DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
|
||||
)
|
||||
}
|
||||
|
||||
set documentDisplayFields(fields: DocumentDisplayField[]) {
|
||||
this.activeListViewState.documentDisplayFields = fields
|
||||
set displayFields(fields: DisplayField[]) {
|
||||
this.activeListViewState.displayFields = fields
|
||||
this.saveDocumentListView()
|
||||
}
|
||||
|
||||
@ -432,7 +431,7 @@ export class DocumentListViewService {
|
||||
sortField: this.activeListViewState.sortField,
|
||||
sortReverse: this.activeListViewState.sortReverse,
|
||||
displayMode: this.activeListViewState.displayMode,
|
||||
documentDisplayFields: this.activeListViewState.documentDisplayFields,
|
||||
displayFields: this.activeListViewState.displayFields,
|
||||
}
|
||||
localStorage.setItem(
|
||||
DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG,
|
||||
|
@ -13,8 +13,8 @@ import { AppModule } from '../app.module'
|
||||
import { UiSettings, SETTINGS_KEYS } from '../data/ui-settings'
|
||||
import { SettingsService } from './settings.service'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DocumentDisplayField,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from '../data/saved-view'
|
||||
import { CustomFieldsService } from './rest/custom-fields.service'
|
||||
@ -352,14 +352,11 @@ describe('SettingsService', () => {
|
||||
)
|
||||
settingsService.initializeDisplayFields()
|
||||
expect(
|
||||
settingsService.allDocumentDisplayFields.includes(
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS[0]
|
||||
)
|
||||
settingsService.allDisplayFields.includes(DEFAULT_DISPLAY_FIELDS[0])
|
||||
).toBeTruthy()
|
||||
expect(
|
||||
settingsService.allDocumentDisplayFields.find(
|
||||
(f) =>
|
||||
f.id === `${DocumentDisplayField.CUSTOM_FIELD}${customFields[0].id}`
|
||||
settingsService.allDisplayFields.find(
|
||||
(f) => f.id === `${DisplayField.CUSTOM_FIELD}${customFields[0].id}`
|
||||
).name
|
||||
).toEqual(customFields[0].name)
|
||||
})
|
||||
|
@ -26,8 +26,8 @@ import {
|
||||
} from './permissions.service'
|
||||
import { ToastService } from './toast.service'
|
||||
import {
|
||||
DEFAULT_DOCUMENT_DISPLAY_FIELDS,
|
||||
DocumentDisplayField,
|
||||
DEFAULT_DISPLAY_FIELDS,
|
||||
DisplayField,
|
||||
SavedView,
|
||||
} from '../data/saved-view'
|
||||
import { CustomFieldsService } from './rest/custom-fields.service'
|
||||
@ -266,7 +266,7 @@ export class SettingsService {
|
||||
public globalDropzoneActive: boolean = false
|
||||
public organizingSidebarSavedViews: boolean = false
|
||||
|
||||
public allDocumentDisplayFields: any
|
||||
public allDisplayFields: any
|
||||
|
||||
constructor(
|
||||
rendererFactory: RendererFactory2,
|
||||
@ -307,7 +307,7 @@ export class SettingsService {
|
||||
}
|
||||
|
||||
public initializeDisplayFields() {
|
||||
this.allDocumentDisplayFields = DEFAULT_DOCUMENT_DISPLAY_FIELDS
|
||||
this.allDisplayFields = DEFAULT_DISPLAY_FIELDS
|
||||
|
||||
if (
|
||||
this.permissionsService.currentUserCan(
|
||||
@ -316,10 +316,10 @@ export class SettingsService {
|
||||
)
|
||||
) {
|
||||
this.customFieldsService.listAll().subscribe((r) => {
|
||||
this.allDocumentDisplayFields = DEFAULT_DOCUMENT_DISPLAY_FIELDS.concat(
|
||||
this.allDisplayFields = DEFAULT_DISPLAY_FIELDS.concat(
|
||||
r.results.map((field) => {
|
||||
return {
|
||||
id: `${DocumentDisplayField.CUSTOM_FIELD}${field.id}` as any,
|
||||
id: `${DisplayField.CUSTOM_FIELD}${field.id}` as any,
|
||||
name: field.name,
|
||||
}
|
||||
})
|
||||
|
@ -40,7 +40,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="savedview",
|
||||
name="document_display_fields",
|
||||
name="display_fields",
|
||||
field=multiselectfield.db.fields.MultiSelectField(
|
||||
choices=[
|
||||
("title", "Title"),
|
||||
|
@ -552,12 +552,12 @@ class DynamicMultiSelectField(MultiSelectField):
|
||||
|
||||
|
||||
class SavedView(ModelWithOwner):
|
||||
class ViewDisplayMode(models.TextChoices):
|
||||
class DisplayMode(models.TextChoices):
|
||||
TABLE = ("table", _("Table"))
|
||||
SMALL_CARDS = ("smallCards", _("Small Cards"))
|
||||
LARGE_CARDS = ("largeCards", _("Large Cards"))
|
||||
|
||||
class DocumentDisplayFields(models.TextChoices):
|
||||
class DisplayFields(models.TextChoices):
|
||||
TITLE = ("title", _("Title"))
|
||||
CREATED = ("created", _("Created"))
|
||||
ADDED = ("added", _("Added"))
|
||||
@ -566,7 +566,7 @@ class SavedView(ModelWithOwner):
|
||||
CORRESPONDENT = ("correspondent", _("Correspondent"))
|
||||
STORAGE_PATH = ("storagepath", _("Storage Path"))
|
||||
|
||||
class DynamicDocumentDisplayFields:
|
||||
class DynamicDisplayFields:
|
||||
CUSTOM_FIELD = ("custom_field_%d", CustomField)
|
||||
|
||||
name = models.CharField(_("name"), max_length=128)
|
||||
@ -596,17 +596,17 @@ class SavedView(ModelWithOwner):
|
||||
display_mode = models.CharField(
|
||||
max_length=128,
|
||||
verbose_name=_("View display mode"),
|
||||
choices=ViewDisplayMode.choices,
|
||||
choices=DisplayMode.choices,
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
|
||||
document_display_fields = DynamicMultiSelectField(
|
||||
display_fields = DynamicMultiSelectField(
|
||||
max_length=128,
|
||||
verbose_name=_("Document display fields"),
|
||||
choices=DocumentDisplayFields.choices,
|
||||
dyanmic_choices=[DynamicDocumentDisplayFields.CUSTOM_FIELD],
|
||||
default=f"{DocumentDisplayFields.CREATED},{DocumentDisplayFields.TITLE},{DocumentDisplayFields.TAGS},{DocumentDisplayFields.CORRESPONDENT}",
|
||||
choices=DisplayFields.choices,
|
||||
dyanmic_choices=[DynamicDisplayFields.CUSTOM_FIELD],
|
||||
default=f"{DisplayFields.CREATED},{DisplayFields.TITLE},{DisplayFields.TAGS},{DisplayFields.CORRESPONDENT}",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
@ -839,8 +839,8 @@ class DynamicOrderedMultipleChoiceField(fields.MultipleChoiceField):
|
||||
|
||||
class SavedViewSerializer(OwnedObjectSerializer):
|
||||
filter_rules = SavedViewFilterRuleSerializer(many=True)
|
||||
document_display_fields = DynamicOrderedMultipleChoiceField(
|
||||
choices=SavedView.DocumentDisplayFields.choices,
|
||||
display_fields = DynamicOrderedMultipleChoiceField(
|
||||
choices=SavedView.DisplayFields.choices,
|
||||
dyanmic_choices=[("custom_field_%d", CustomField)],
|
||||
required=False,
|
||||
)
|
||||
@ -857,7 +857,7 @@ class SavedViewSerializer(OwnedObjectSerializer):
|
||||
"filter_rules",
|
||||
"page_size",
|
||||
"display_mode",
|
||||
"document_display_fields",
|
||||
"display_fields",
|
||||
"owner",
|
||||
"permissions",
|
||||
"user_can_change",
|
||||
|
@ -1614,7 +1614,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
|
||||
def test_savedview_create_update_patch(self):
|
||||
def test_saved_view_create_update_patch(self):
|
||||
User.objects.create_user("user1")
|
||||
|
||||
view = {
|
||||
@ -1661,7 +1661,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
v1 = SavedView.objects.get(id=v1.id)
|
||||
self.assertEqual(v1.filter_rules.count(), 0)
|
||||
|
||||
def test_saved_view_dashboard_view_options(self):
|
||||
def test_saved_view_display_options(self):
|
||||
User.objects.create_user("user1")
|
||||
|
||||
view = {
|
||||
@ -1671,10 +1671,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
"sort_field": "created2",
|
||||
"filter_rules": [{"rule_type": 4, "value": "test"}],
|
||||
"page_size": 20,
|
||||
"display_mode": SavedView.ViewDisplayMode.SMALL_CARDS,
|
||||
"document_display_fields": [
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
"display_mode": SavedView.DisplayMode.SMALL_CARDS,
|
||||
"display_fields": [
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
],
|
||||
}
|
||||
|
||||
@ -1685,23 +1685,23 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
self.assertEqual(v1.page_size, 20)
|
||||
self.assertEqual(
|
||||
v1.display_mode,
|
||||
SavedView.ViewDisplayMode.SMALL_CARDS,
|
||||
SavedView.DisplayMode.SMALL_CARDS,
|
||||
)
|
||||
self.assertEqual(
|
||||
v1.document_display_fields,
|
||||
v1.display_fields,
|
||||
[
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
],
|
||||
)
|
||||
|
||||
response = self.client.patch(
|
||||
f"/api/saved_views/{v1.id}/",
|
||||
{
|
||||
"document_display_fields": [
|
||||
SavedView.DocumentDisplayFields.TAGS,
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
"display_fields": [
|
||||
SavedView.DisplayFields.TAGS,
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
],
|
||||
},
|
||||
format="json",
|
||||
@ -1710,15 +1710,15 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
|
||||
v1.refresh_from_db()
|
||||
self.assertEqual(
|
||||
v1.document_display_fields,
|
||||
v1.display_fields,
|
||||
[
|
||||
SavedView.DocumentDisplayFields.TAGS,
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
SavedView.DisplayFields.TAGS,
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
],
|
||||
)
|
||||
|
||||
def test_saved_view_dashboard_view_customfields(self):
|
||||
def test_saved_view_display_customfields(self):
|
||||
view = {
|
||||
"name": "test",
|
||||
"show_on_dashboard": True,
|
||||
@ -1726,10 +1726,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
"sort_field": "created2",
|
||||
"filter_rules": [{"rule_type": 4, "value": "test"}],
|
||||
"page_size": 20,
|
||||
"display_mode": SavedView.ViewDisplayMode.SMALL_CARDS,
|
||||
"document_display_fields": [
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
"display_mode": SavedView.DisplayMode.SMALL_CARDS,
|
||||
"display_fields": [
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
],
|
||||
}
|
||||
|
||||
@ -1746,11 +1746,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
response = self.client.patch(
|
||||
f"/api/saved_views/{v1.id}/",
|
||||
{
|
||||
"document_display_fields": [
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
SavedView.DynamicDocumentDisplayFields.CUSTOM_FIELD[0]
|
||||
% custom_field.id,
|
||||
"display_fields": [
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
SavedView.DynamicDisplayFields.CUSTOM_FIELD[0] % custom_field.id,
|
||||
],
|
||||
},
|
||||
format="json",
|
||||
@ -1759,12 +1758,11 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
|
||||
v1.refresh_from_db()
|
||||
self.assertEqual(
|
||||
v1.document_display_fields,
|
||||
v1.display_fields,
|
||||
[
|
||||
str(SavedView.DocumentDisplayFields.TITLE),
|
||||
str(SavedView.DocumentDisplayFields.CREATED),
|
||||
SavedView.DynamicDocumentDisplayFields.CUSTOM_FIELD[0]
|
||||
% custom_field.id,
|
||||
str(SavedView.DisplayFields.TITLE),
|
||||
str(SavedView.DisplayFields.CREATED),
|
||||
SavedView.DynamicDisplayFields.CUSTOM_FIELD[0] % custom_field.id,
|
||||
],
|
||||
)
|
||||
|
||||
@ -1772,10 +1770,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
response = self.client.patch(
|
||||
f"/api/saved_views/{v1.id}/",
|
||||
{
|
||||
"document_display_fields": [
|
||||
SavedView.DocumentDisplayFields.TITLE,
|
||||
SavedView.DocumentDisplayFields.CREATED,
|
||||
SavedView.DynamicDocumentDisplayFields.CUSTOM_FIELD[0] % 99,
|
||||
"display_fields": [
|
||||
SavedView.DisplayFields.TITLE,
|
||||
SavedView.DisplayFields.CREATED,
|
||||
SavedView.DynamicDisplayFields.CUSTOM_FIELD[0] % 99,
|
||||
],
|
||||
},
|
||||
format="json",
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user