diff --git a/frontend/app/components/shared/SessionsTabOverview/SessionsTabOverview.tsx b/frontend/app/components/shared/SessionsTabOverview/SessionsTabOverview.tsx index 776761381..bf7974b2c 100644 --- a/frontend/app/components/shared/SessionsTabOverview/SessionsTabOverview.tsx +++ b/frontend/app/components/shared/SessionsTabOverview/SessionsTabOverview.tsx @@ -1,41 +1,65 @@ +import { Input } from 'antd'; import React from 'react'; -import SessionList from './components/SessionList'; -import SessionHeader from './components/SessionHeader'; -import NotesList from './components/Notes/NoteList'; -import { connect, DefaultRootState } from 'react-redux'; +import { connect } from 'react-redux'; + +import { useStore } from 'App/mstore'; + import LatestSessionsMessage from './components/LatestSessionsMessage'; +import NotesList from './components/Notes/NoteList'; +import SessionHeader from './components/SessionHeader'; +import SessionList from './components/SessionList'; function SessionsTabOverview({ - activeTab, - members, - sites, - siteId - }: { + activeTab, + appliedFilter, + members, +}: { activeTab: string; members: object[]; sites: object[]; siteId: string; + appliedFilter: any; }) { - const activeSite: any = sites.find((s: any) => s.id === siteId); + const [query, setQuery] = React.useState(''); + const { aiFiltersStore } = useStore(); + const handleKeyDown = (event: any) => { + if (event.key === 'Enter') { + fetchResults(); + } + }; + const fetchResults = () => { + void aiFiltersStore.omniSearch(query, appliedFilter.toData()); + }; + + const testingKey = localStorage.getItem('__mauricio_testing_access') === 'true'; return ( -
+
+ {testingKey ? ( + setQuery(e.target.value)} + className={'mb-2'} + placeholder={'ask session ai'} + /> + ) : null} -
+
- {activeTab !== 'notes' ? : - } + {activeTab !== 'notes' ? ( + + ) : ( + + )}
); } -export default connect( - (state: any) => ({ - // @ts-ignore - activeTab: state.getIn(['search', 'activeTab', 'type']), - // @ts-ignore - members: state.getIn(['members', 'list']), - siteId: state.getIn(['site', 'siteId']), - sites: state.getIn(['site', 'list']) - }) -)(SessionsTabOverview); +export default connect((state: any) => ({ + // @ts-ignore + activeTab: state.getIn(['search', 'activeTab', 'type']), + // @ts-ignore + members: state.getIn(['members', 'list']), + appliedFilter: state.getIn(['search', 'instance']), +}))(SessionsTabOverview); diff --git a/frontend/app/mstore/aiFiltersStore.ts b/frontend/app/mstore/aiFiltersStore.ts index bd3833129..be42c0f7d 100644 --- a/frontend/app/mstore/aiFiltersStore.ts +++ b/frontend/app/mstore/aiFiltersStore.ts @@ -30,6 +30,11 @@ export default class AiFiltersStore { console.log(r) } + omniSearch = async (query: string, filters: Record) => { + const r = await aiService.omniSearch(query, filters); + console.log(r) + } + getCardFilters = async (query: string, chartType: string): Promise => { this.isLoading = true; try { diff --git a/frontend/app/services/AiService.ts b/frontend/app/services/AiService.ts index befdb49a2..0d4b2abaf 100644 --- a/frontend/app/services/AiService.ts +++ b/frontend/app/services/AiService.ts @@ -41,6 +41,16 @@ export default class AiService extends BaseService { return data; } + async omniSearch(query: string, filters: Record): Promise> { + const r = await this.client.post('/intelligent/ask-or/charts', { + ...filters, + question: query, + metricType: 'omnisearch', + }); + const { data } = await r.json(); + return data; + } + async getCardData(query: string, chartData: Record): Promise> { const r = await this.client.post('/intelligent/ask-or/charts', { ...chartData,