mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
[ADF-5161] Add query token injection for search query builder (#5799)
* [ADF-5161] Add query token injection for search query builder * Improve logic
This commit is contained in:
@@ -17,15 +17,26 @@
|
|||||||
|
|
||||||
import { QueryBody } from '@alfresco/js-api';
|
import { QueryBody } from '@alfresco/js-api';
|
||||||
import { SearchConfigurationInterface } from '@alfresco/adf-core';
|
import { SearchConfigurationInterface } from '@alfresco/adf-core';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable, Optional, Inject, InjectionToken } from '@angular/core';
|
||||||
|
|
||||||
|
export const SEARCH_QUERY_TOKEN = new InjectionToken<QueryProvider>('Alfresco Search Query Token');
|
||||||
|
export interface QueryProvider {
|
||||||
|
query: string;
|
||||||
|
}
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SearchPermissionConfigurationService implements SearchConfigurationInterface {
|
export class SearchPermissionConfigurationService implements SearchConfigurationInterface {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
@Optional()
|
||||||
|
@Inject(SEARCH_QUERY_TOKEN)
|
||||||
|
private queryProvider: QueryProvider) {
|
||||||
|
}
|
||||||
|
|
||||||
public generateQueryBody(searchTerm: string, maxResults: number, skipCount: number): QueryBody {
|
public generateQueryBody(searchTerm: string, maxResults: number, skipCount: number): QueryBody {
|
||||||
const defaultQueryBody: QueryBody = {
|
const defaultQueryBody: QueryBody = {
|
||||||
query: {
|
query: {
|
||||||
query: searchTerm ? `authorityName:*${searchTerm}* OR userName:*${searchTerm}*` : searchTerm
|
query: this.getQuery(searchTerm)
|
||||||
},
|
},
|
||||||
include: ['properties', 'aspectNames'],
|
include: ['properties', 'aspectNames'],
|
||||||
paging: {
|
paging: {
|
||||||
@@ -39,4 +50,15 @@ export class SearchPermissionConfigurationService implements SearchConfiguration
|
|||||||
|
|
||||||
return defaultQueryBody;
|
return defaultQueryBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getQuery(searchTerm: string) {
|
||||||
|
let query: string;
|
||||||
|
if (this.queryProvider && this.queryProvider.query) {
|
||||||
|
query = this.queryProvider.query.replace(
|
||||||
|
new RegExp(/\${([^}]+)}/g), searchTerm);
|
||||||
|
} else {
|
||||||
|
query = `authorityName:*${searchTerm}* OR userName:*${searchTerm}*`;
|
||||||
|
}
|
||||||
|
return query;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,5 +25,6 @@ export * from './components/add-permission/add-permission-dialog-data.interface'
|
|||||||
export * from './components/add-permission/add-permission-panel.component';
|
export * from './components/add-permission/add-permission-panel.component';
|
||||||
export * from './components/add-permission/add-permission.component';
|
export * from './components/add-permission/add-permission.component';
|
||||||
export * from './components/add-permission/add-permission-dialog.component';
|
export * from './components/add-permission/add-permission-dialog.component';
|
||||||
|
export * from './components/add-permission/search-config-permission.service';
|
||||||
|
|
||||||
export * from './permission-manager.module';
|
export * from './permission-manager.module';
|
||||||
|
Reference in New Issue
Block a user