diff --git a/projects/aca-content/assets/i18n/en.json b/projects/aca-content/assets/i18n/en.json index ddd9e5b57..ac0a1030f 100644 --- a/projects/aca-content/assets/i18n/en.json +++ b/projects/aca-content/assets/i18n/en.json @@ -607,6 +607,7 @@ "KNOWLEDGE_RETRIEVAL": { "SEARCH": { "RESULTS_PAGE": { + "AGENT": "Agent", "QUERY_INPUT_PLACEHOLDER": "Would you like to ask anything else?", "REFERENCED_DOCUMENTS_HEADER": "Referenced documents", "REGENERATION_BUTTON_LABEL": "Regenerate", diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.html b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.html index ab81e2b75..ce9bf4912 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.html +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.html @@ -26,7 +26,9 @@ [value]="agent">
- {{ agent.name }} + + {{ agent.name }} +
diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.scss b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.scss index 327bf2220..72d963440 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.scss +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.scss @@ -45,7 +45,14 @@ aca-agents-button.aca-agents-button { &-content { display: flex; - align-items: baseline; + align-items: center; + + &-name { + width: 120px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } adf-avatar { diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.ts b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.ts index 289821637..bb87e6b61 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.ts +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.ts @@ -33,7 +33,7 @@ import { takeUntil } from 'rxjs/operators'; import { MatMenuModule } from '@angular/material/menu'; import { MatListModule, MatSelectionListChange } from '@angular/material/list'; import { TranslateModule, TranslateService } from '@ngx-translate/core'; -import { Agent } from '@alfresco/js-api'; +import { AgentWithAvatar } from '@alfresco/js-api'; import { AgentService, SearchAiService } from '@alfresco/adf-content-services'; @Component({ @@ -50,12 +50,12 @@ export class AgentsButtonComponent implements OnInit, OnDestroy { data: { trigger: string }; private selectedNodesState: SelectionState; - private _agents: Agent[] = []; + private _agents: AgentWithAvatar[] = []; private onDestroy$ = new Subject(); private _disabled = true; private _initialsByAgentId: { [key: string]: string } = {}; - get agents(): Agent[] { + get agents(): AgentWithAvatar[] { return this._agents; } @@ -71,8 +71,8 @@ export class AgentsButtonComponent implements OnInit, OnDestroy { private store: Store, private notificationService: NotificationService, private searchAiService: SearchAiService, - private translateService: TranslateService, - private agentService: AgentService + private agentService: AgentService, + private translateService: TranslateService ) {} ngOnInit(): void { @@ -82,12 +82,13 @@ export class AgentsButtonComponent implements OnInit, OnDestroy { .subscribe((selection) => { this.selectedNodesState = selection; }); + this.agentService .getAgents() .pipe(takeUntil(this.onDestroy$)) .subscribe( - (paging) => { - this._agents = paging.list.entries.map((agentEntry) => agentEntry.entry); + (agents: AgentWithAvatar[]) => { + this._agents = agents; if (this.agents.length) { this._initialsByAgentId = this.agents.reduce((initials, agent) => { const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g)); diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.html b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.html index bad899e11..001b26560 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.html +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.html @@ -8,7 +8,7 @@ [initials]="initialsByAgentId[agentControl.value.id]" size="26px"> - {{ agentControl.value.name }} + {{ agentControl.value?.name }}
- {{ agent.name }} + {{ agent.name }}
diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.scss b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.scss index 48c3d7483..df1956340 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.scss +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.scss @@ -49,7 +49,7 @@ aca-search-ai-input { &-displayed-value { display: flex; - align-items: baseline; + align-items: center; } adf-avatar { @@ -71,6 +71,13 @@ aca-search-ai-input { &-content { display: flex; align-items: baseline; + + &-text { + width: 120px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } adf-avatar { diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.ts b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.ts index 54e074cb4..307782af3 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.ts +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.ts @@ -38,7 +38,7 @@ import { AiSearchByTermPayload, AppStore, getAppSelection, SearchByTermAiAction import { takeUntil } from 'rxjs/operators'; import { SelectionState } from '@alfresco/adf-extensions'; import { MatSelectModule } from '@angular/material/select'; -import { Agent } from '@alfresco/js-api'; +import { AgentWithAvatar } from '@alfresco/js-api'; import { AgentService, SearchAiService } from '@alfresco/adf-content-services'; @Component({ @@ -75,18 +75,18 @@ export class SearchAiInputComponent implements OnInit, OnDestroy { private readonly storedNodesKey = 'knowledgeRetrievalNodes'; - private _agentControl = new FormControl(null); - private _agents: Agent[] = []; + private _agentControl = new FormControl(null); + private _agents: AgentWithAvatar[] = []; private onDestroy$ = new Subject(); private selectedNodesState: SelectionState; private _queryControl = new FormControl(''); private _initialsByAgentId: { [key: string]: string } = {}; - get agentControl(): FormControl { + get agentControl(): FormControl { return this._agentControl; } - get agents(): Agent[] { + get agents(): AgentWithAvatar[] { return this._agents; } @@ -103,8 +103,8 @@ export class SearchAiInputComponent implements OnInit, OnDestroy { private searchAiService: SearchAiService, private notificationService: NotificationService, private agentService: AgentService, - private translateService: TranslateService, - private userPreferencesService: UserPreferencesService + private userPreferencesService: UserPreferencesService, + private translateService: TranslateService ) {} ngOnInit(): void { @@ -118,13 +118,14 @@ export class SearchAiInputComponent implements OnInit, OnDestroy { } else { this.selectedNodesState = JSON.parse(this.userPreferencesService.get(this.storedNodesKey)); } + this.agentService .getAgents() .pipe(takeUntil(this.onDestroy$)) .subscribe( - (paging) => { - this._agents = paging.list.entries.map((agentEntry) => agentEntry.entry); - this.agentControl.setValue(this.agents.find((agent) => agent.id === this.agentId)); + (agents: AgentWithAvatar[]) => { + this._agents = agents; + this.agentControl.setValue(agents.find((agent) => agent.id === this.agentId)); this._initialsByAgentId = this.agents.reduce((initials, agent) => { const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g)); initials[agent.id] = `${words[0][0]}${words[1][0] || ''}`; diff --git a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.html b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.html index 177ff34ee..c6e2327ff 100644 --- a/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.html +++ b/projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.html @@ -18,6 +18,26 @@
+
+ + + {{ agent?.name }} + + + + + {{ agent?.name }} + + +
{{ agent?.description }}
+
+
+
+
{ - this._agentId = params.agentId; - this._searchQuery = params.query ? decodeURIComponent(params.query) : ''; - this.selectedNodesState = JSON.parse(this.userPreferencesService.get('knowledgeRetrievalNodes')); - if (!this.searchQuery || !this.selectedNodesState?.nodes?.length || !this.agentId) { - this._hasError = true; - return; - } - this.performAiSearch(); - }); + this.route.queryParams + .pipe( + switchMap((params) => { + this._agentId = params.agentId; + this._searchQuery = params.query ? decodeURIComponent(params.query) : ''; + this.selectedNodesState = JSON.parse(this.userPreferencesService.get('knowledgeRetrievalNodes')); + if (!this.searchQuery || !this.selectedNodesState?.nodes?.length || !this.agentId) { + this._hasError = true; + return of([]); + } + this.performAiSearch(); + return this.agentService.agentsList$; + }), + takeUntil(this.onDestroy$) + ) + .subscribe((agents: AgentWithAvatar[]) => { + this.agent = agents.find((agent) => agent.id === this._agentId); + }); super.ngOnInit(); }