mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Fix: retain sort field from global search filtering, use FILTER_HAS_TAGS_ALL (#6737)
				
					
				
			This commit is contained in:
		@@ -24,7 +24,7 @@ import {
 | 
			
		||||
  FILTER_HAS_CORRESPONDENT_ANY,
 | 
			
		||||
  FILTER_HAS_DOCUMENT_TYPE_ANY,
 | 
			
		||||
  FILTER_HAS_STORAGE_PATH_ANY,
 | 
			
		||||
  FILTER_HAS_TAGS_ANY,
 | 
			
		||||
  FILTER_HAS_TAGS_ALL,
 | 
			
		||||
} from 'src/app/data/filter-rule-type'
 | 
			
		||||
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
 | 
			
		||||
import { DocumentService } from 'src/app/services/rest/document.service'
 | 
			
		||||
@@ -294,36 +294,67 @@ describe('GlobalSearchComponent', () => {
 | 
			
		||||
 | 
			
		||||
    component.primaryAction(DataType.Correspondent, object)
 | 
			
		||||
    expect(routerSpy).toHaveBeenCalledWith(['/documents'], {
 | 
			
		||||
      queryParams: queryParamsFromFilterRules([
 | 
			
		||||
      queryParams: Object.assign(
 | 
			
		||||
        {
 | 
			
		||||
          rule_type: FILTER_HAS_CORRESPONDENT_ANY,
 | 
			
		||||
          value: object.id.toString(),
 | 
			
		||||
          page: 1,
 | 
			
		||||
          reverse: 1,
 | 
			
		||||
          sort: 'created',
 | 
			
		||||
        },
 | 
			
		||||
      ]),
 | 
			
		||||
        queryParamsFromFilterRules([
 | 
			
		||||
          {
 | 
			
		||||
            rule_type: FILTER_HAS_CORRESPONDENT_ANY,
 | 
			
		||||
            value: object.id.toString(),
 | 
			
		||||
          },
 | 
			
		||||
        ])
 | 
			
		||||
      ),
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    component.primaryAction(DataType.DocumentType, object)
 | 
			
		||||
    expect(routerSpy).toHaveBeenCalledWith(['/documents'], {
 | 
			
		||||
      queryParams: queryParamsFromFilterRules([
 | 
			
		||||
      queryParams: Object.assign(
 | 
			
		||||
        {
 | 
			
		||||
          rule_type: FILTER_HAS_DOCUMENT_TYPE_ANY,
 | 
			
		||||
          value: object.id.toString(),
 | 
			
		||||
          page: 1,
 | 
			
		||||
          reverse: 1,
 | 
			
		||||
          sort: 'created',
 | 
			
		||||
        },
 | 
			
		||||
      ]),
 | 
			
		||||
        queryParamsFromFilterRules([
 | 
			
		||||
          {
 | 
			
		||||
            rule_type: FILTER_HAS_DOCUMENT_TYPE_ANY,
 | 
			
		||||
            value: object.id.toString(),
 | 
			
		||||
          },
 | 
			
		||||
        ])
 | 
			
		||||
      ),
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    component.primaryAction(DataType.StoragePath, object)
 | 
			
		||||
    expect(routerSpy).toHaveBeenCalledWith(['/documents'], {
 | 
			
		||||
      queryParams: queryParamsFromFilterRules([
 | 
			
		||||
        { rule_type: FILTER_HAS_STORAGE_PATH_ANY, value: object.id.toString() },
 | 
			
		||||
      ]),
 | 
			
		||||
      queryParams: Object.assign(
 | 
			
		||||
        {
 | 
			
		||||
          page: 1,
 | 
			
		||||
          reverse: 1,
 | 
			
		||||
          sort: 'created',
 | 
			
		||||
        },
 | 
			
		||||
        queryParamsFromFilterRules([
 | 
			
		||||
          {
 | 
			
		||||
            rule_type: FILTER_HAS_STORAGE_PATH_ANY,
 | 
			
		||||
            value: object.id.toString(),
 | 
			
		||||
          },
 | 
			
		||||
        ])
 | 
			
		||||
      ),
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    component.primaryAction(DataType.Tag, object)
 | 
			
		||||
    expect(routerSpy).toHaveBeenCalledWith(['/documents'], {
 | 
			
		||||
      queryParams: queryParamsFromFilterRules([
 | 
			
		||||
        { rule_type: FILTER_HAS_TAGS_ANY, value: object.id.toString() },
 | 
			
		||||
      ]),
 | 
			
		||||
      queryParams: Object.assign(
 | 
			
		||||
        {
 | 
			
		||||
          page: 1,
 | 
			
		||||
          reverse: 1,
 | 
			
		||||
          sort: 'created',
 | 
			
		||||
        },
 | 
			
		||||
        queryParamsFromFilterRules([
 | 
			
		||||
          { rule_type: FILTER_HAS_TAGS_ALL, value: object.id.toString() },
 | 
			
		||||
        ])
 | 
			
		||||
      ),
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    component.primaryAction(DataType.User, object)
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ import {
 | 
			
		||||
  FILTER_HAS_CORRESPONDENT_ANY,
 | 
			
		||||
  FILTER_HAS_DOCUMENT_TYPE_ANY,
 | 
			
		||||
  FILTER_HAS_STORAGE_PATH_ANY,
 | 
			
		||||
  FILTER_HAS_TAGS_ANY,
 | 
			
		||||
  FILTER_HAS_TAGS_ALL,
 | 
			
		||||
} from 'src/app/data/filter-rule-type'
 | 
			
		||||
import { DataType } from 'src/app/data/datatype'
 | 
			
		||||
import { ObjectWithId } from 'src/app/data/object-with-id'
 | 
			
		||||
@@ -41,7 +41,7 @@ import { TagEditDialogComponent } from '../../common/edit-dialog/tag-edit-dialog
 | 
			
		||||
import { UserEditDialogComponent } from '../../common/edit-dialog/user-edit-dialog/user-edit-dialog.component'
 | 
			
		||||
import { WorkflowEditDialogComponent } from '../../common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component'
 | 
			
		||||
import { HotKeyService } from 'src/app/services/hot-key.service'
 | 
			
		||||
import { queryParamsFromFilterRules } from 'src/app/utils/query-params'
 | 
			
		||||
import { paramsFromViewState } from 'src/app/utils/query-params'
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'pngx-global-search',
 | 
			
		||||
@@ -132,7 +132,7 @@ export class GlobalSearchComponent implements OnInit {
 | 
			
		||||
        filterRuleType = FILTER_HAS_STORAGE_PATH_ANY
 | 
			
		||||
        break
 | 
			
		||||
      case DataType.Tag:
 | 
			
		||||
        filterRuleType = FILTER_HAS_TAGS_ANY
 | 
			
		||||
        filterRuleType = FILTER_HAS_TAGS_ALL
 | 
			
		||||
        break
 | 
			
		||||
      case DataType.User:
 | 
			
		||||
        editDialogComponent = UserEditDialogComponent
 | 
			
		||||
@@ -160,9 +160,14 @@ export class GlobalSearchComponent implements OnInit {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (filterRuleType) {
 | 
			
		||||
      let params = queryParamsFromFilterRules([
 | 
			
		||||
        { rule_type: filterRuleType, value: object.id.toString() },
 | 
			
		||||
      ])
 | 
			
		||||
      let params = paramsFromViewState({
 | 
			
		||||
        filterRules: [
 | 
			
		||||
          { rule_type: filterRuleType, value: object.id.toString() },
 | 
			
		||||
        ],
 | 
			
		||||
        currentPage: 1,
 | 
			
		||||
        sortField: this.documentListViewService.sortField ?? 'created',
 | 
			
		||||
        sortReverse: this.documentListViewService.sortReverse,
 | 
			
		||||
      })
 | 
			
		||||
      this.navigateOrOpenInNewWindow(['/documents'], newWindow, {
 | 
			
		||||
        queryParams: params,
 | 
			
		||||
      })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user