warehouse frontend

This commit is contained in:
hungdztrau123
2024-05-23 16:03:38 +07:00
parent 9d4d0b39a6
commit fa7283cff1
50 changed files with 1286 additions and 37 deletions

View File

@@ -264,6 +264,10 @@ describe('PermissionsService', () => {
'change_applicationconfiguration',
'delete_applicationconfiguration',
'view_applicationconfiguration',
'change_warehouse',
'view_warehouse',
'add_warehouse',
'delete_warehouse',
],
{
username: 'testuser',

View File

@@ -12,6 +12,7 @@ export enum PermissionAction {
export enum PermissionType {
Document = '%s_document',
Tag = '%s_tag',
Warehouse = '%s_warehouse',
Correspondent = '%s_correspondent',
DocumentType = '%s_documenttype',
StoragePath = '%s_storagepath',

View File

@@ -13,6 +13,8 @@ import { TagService } from './tag.service'
import { DocumentSuggestions } from 'src/app/data/document-suggestions'
import { queryParamsFromFilterRules } from '../../utils/query-params'
import { StoragePathService } from './storage-path.service'
import { WarehouseService } from './warehouse.service'
import {
PermissionAction,
PermissionType,
@@ -26,6 +28,7 @@ export const DOCUMENT_SORT_FIELDS = [
{ field: 'correspondent__name', name: $localize`Correspondent` },
{ field: 'title', name: $localize`Title` },
{ field: 'document_type__name', name: $localize`Document type` },
{ field: 'warehouses__name', name: $localize`Warehouse` },
{ field: 'created', name: $localize`Created` },
{ field: 'added', name: $localize`Added` },
{ field: 'modified', name: $localize`Modified` },
@@ -51,6 +54,8 @@ export interface SelectionData {
selected_correspondents: SelectionDataItem[]
selected_tags: SelectionDataItem[]
selected_document_types: SelectionDataItem[]
selected_warehouses: SelectionDataItem[]
}
@Injectable({
@@ -65,6 +70,7 @@ export class DocumentService extends AbstractPaperlessService<Document> {
private documentTypeService: DocumentTypeService,
private tagService: TagService,
private storagePathService: StoragePathService,
private warehouseService: WarehouseService,
private permissionsService: PermissionsService,
private settingsService: SettingsService
) {
@@ -116,6 +122,15 @@ export class DocumentService extends AbstractPaperlessService<Document> {
) {
doc.storage_path$ = this.storagePathService.getCached(doc.storage_path)
}
if (
doc.warehouses &&
this.permissionsService.currentUserCan(
PermissionAction.View,
PermissionType.Warehouse
)
) {
doc.warehouses$ = this.warehouseService.getCached(doc.warehouses)
}
return doc
}

View File

@@ -0,0 +1,4 @@
import { WarehouseService } from './warehouse.service'
import { commonAbstractNameFilterPaperlessServiceTests } from './abstract-name-filter-service.spec'
commonAbstractNameFilterPaperlessServiceTests('warehouses', WarehouseService)

View File

@@ -0,0 +1,13 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Warehouse } from 'src/app/data/warehouse'
import { AbstractNameFilterService } from './abstract-name-filter-service'
@Injectable({
providedIn: 'root',
})
export class WarehouseService extends AbstractNameFilterService<Warehouse> {
constructor(http: HttpClient) {
super(http, 'warehouses')
}
}