@vertesia/ui 0.67.0 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/core/components/Badge.js +1 -1
- package/lib/esm/core/components/Badge.js.map +1 -1
- package/lib/esm/core/components/FormItem.js +2 -2
- package/lib/esm/core/components/FormItem.js.map +1 -1
- package/lib/esm/core/components/InputList.js +2 -2
- package/lib/esm/core/components/InputList.js.map +1 -1
- package/lib/esm/core/components/shadcn/checkbox.js +1 -1
- package/lib/esm/core/components/shadcn/checkbox.js.map +1 -1
- package/lib/esm/core/components/shadcn/command.js +1 -1
- package/lib/esm/core/components/shadcn/command.js.map +1 -1
- package/lib/esm/core/components/shadcn/dialog.js +6 -6
- package/lib/esm/core/components/shadcn/dialog.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/DynamicLabel.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +129 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js +46 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js +23 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js +28 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js +5 -0
- package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js +101 -0
- package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/{stringListFilter.js → filter/StringListFilter.js} +3 -3
- package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/{textFilter.js → filter/TextFilter.js} +4 -4
- package/lib/esm/core/components/shadcn/filters/filter/TextFilter.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js +161 -0
- package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/filter-styles.js +88 -0
- package/lib/esm/core/components/shadcn/filters/filter-styles.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/filterBar.js +128 -87
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filters.js +7 -6
- package/lib/esm/core/components/shadcn/filters/filters.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/index.js +1 -1
- package/lib/esm/core/components/shadcn/filters/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/types.js.map +1 -1
- package/lib/esm/core/components/toast/NotificationPanel.js +24 -18
- package/lib/esm/core/components/toast/NotificationPanel.js.map +1 -1
- package/lib/esm/features/agent/PayloadBuilder.js +47 -27
- package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +9 -3
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +7 -6
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +12 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js +2 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +10 -4
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/esm/features/facets/DocumentsFacetsNav.js +133 -0
- package/lib/esm/features/facets/DocumentsFacetsNav.js.map +1 -0
- package/lib/esm/features/facets/RunsFacetsNav.js +125 -0
- package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -0
- package/lib/esm/features/facets/VFacetsNav.js +4 -113
- package/lib/esm/features/facets/VFacetsNav.js.map +1 -1
- package/lib/esm/features/facets/VStringFacet.js +6 -4
- package/lib/esm/features/facets/VStringFacet.js.map +1 -1
- package/lib/esm/features/facets/VTypeFacet.js +4 -5
- package/lib/esm/features/facets/VTypeFacet.js.map +1 -1
- package/lib/esm/features/facets/VUserFacet.js +1 -1
- package/lib/esm/features/facets/VUserFacet.js.map +1 -1
- package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js +98 -0
- package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -0
- package/lib/esm/features/facets/index.js +3 -2
- package/lib/esm/features/facets/index.js.map +1 -1
- package/lib/esm/features/store/collections/CollectionsTable.js +1 -1
- package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -1
- package/lib/esm/features/store/collections/CreateCollection.js +10 -9
- package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js +10 -9
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/SelectCollection.js +1 -1
- package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js +0 -1
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentSearchResults.js +37 -2
- package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentOverview.js +0 -2
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/esm/features/store/objects/components/SelectDocument.js +2 -2
- package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +16 -4
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +72 -37
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/esm/features/store/types/ObjectSchemaEditor.js +15 -0
- package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
- package/lib/esm/features/user/UserInfo.js +8 -8
- package/lib/esm/features/user/UserInfo.js.map +1 -1
- package/lib/esm/router/HistoryNavigator.js +2 -2
- package/lib/esm/router/HistoryNavigator.js.map +1 -1
- package/lib/esm/shell/SplashScreen.js +19 -0
- package/lib/esm/shell/SplashScreen.js.map +1 -0
- package/lib/esm/shell/VertesiaShell.js +10 -0
- package/lib/esm/shell/VertesiaShell.js.map +1 -0
- package/lib/esm/shell/index.js +7 -0
- package/lib/esm/shell/index.js.map +1 -0
- package/lib/esm/shell/login/EnterpriseSigninButton.js +81 -0
- package/lib/esm/shell/login/EnterpriseSigninButton.js.map +1 -0
- package/lib/esm/shell/login/GitHubSignInButton.js +24 -0
- package/lib/esm/shell/login/GitHubSignInButton.js.map +1 -0
- package/lib/esm/shell/login/GoogleSignInButton.js +25 -0
- package/lib/esm/shell/login/GoogleSignInButton.js.map +1 -0
- package/lib/esm/shell/login/InviteAcceptModal.js +45 -0
- package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -0
- package/lib/esm/shell/login/MicrosoftSigninButton.js +19 -0
- package/lib/esm/shell/login/MicrosoftSigninButton.js.map +1 -0
- package/lib/esm/shell/login/PreviewIcon.js +23 -0
- package/lib/esm/shell/login/PreviewIcon.js.map +1 -0
- package/lib/esm/shell/login/SignInModal.js +9 -0
- package/lib/esm/shell/login/SignInModal.js.map +1 -0
- package/lib/esm/shell/login/SigninScreen.js +64 -0
- package/lib/esm/shell/login/SigninScreen.js.map +1 -0
- package/lib/esm/shell/login/SignupForm.js +91 -0
- package/lib/esm/shell/login/SignupForm.js.map +1 -0
- package/lib/esm/shell/login/TerminalLogin.js +179 -0
- package/lib/esm/shell/login/TerminalLogin.js.map +1 -0
- package/lib/esm/shell/login/UserInfo.js +40 -0
- package/lib/esm/shell/login/UserInfo.js.map +1 -0
- package/lib/esm/shell/login/UserSessionMenu.js +31 -0
- package/lib/esm/shell/login/UserSessionMenu.js.map +1 -0
- package/lib/esm/shell/utils.js +6 -0
- package/lib/esm/shell/utils.js.map +1 -0
- package/lib/esm/widgets/SvgIcon.js +36 -0
- package/lib/esm/widgets/SvgIcon.js.map +1 -0
- package/lib/esm/widgets/index.js +7 -6
- package/lib/esm/widgets/index.js.map +1 -1
- package/lib/esm/widgets/upload/UploadSummary.js +1 -1
- package/lib/esm/widgets/upload/UploadSummary.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/FormItem.d.ts +2 -1
- package/lib/types/core/components/shadcn/dialog.d.ts +2 -1
- package/lib/types/core/components/shadcn/filters/DynamicLabel.d.ts +1 -1
- package/lib/types/core/components/shadcn/filters/comboBox/DateCombobox.d.ts +5 -0
- package/lib/types/core/components/shadcn/filters/comboBox/SelectCombobox.d.ts +8 -0
- package/lib/types/core/components/shadcn/filters/comboBox/StringListCombobox.d.ts +5 -0
- package/lib/types/core/components/shadcn/filters/comboBox/TextCombobox.d.ts +5 -0
- package/lib/types/core/components/shadcn/filters/comboBox/comboBox.d.ts +4 -0
- package/lib/types/core/components/shadcn/filters/{selectFilter.d.ts → filter/SelectFilter.d.ts} +2 -2
- package/lib/types/core/components/shadcn/filters/{stringListFilter.d.ts → filter/StringListFilter.d.ts} +1 -1
- package/lib/types/core/components/shadcn/filters/{textFilter.d.ts → filter/TextFilter.d.ts} +1 -1
- package/lib/types/core/components/shadcn/filters/{dateFilter.d.ts → filter/dateFilter.d.ts} +1 -1
- package/lib/types/core/components/shadcn/filters/filter-styles.d.ts +1 -0
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts +14 -4
- package/lib/types/core/components/shadcn/filters/index.d.ts +1 -1
- package/lib/types/core/components/shadcn/filters/types.d.ts +2 -0
- package/lib/types/features/agent/PayloadBuilder.d.ts +17 -8
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +2 -1
- package/lib/types/features/facets/DocumentsFacetsNav.d.ts +16 -0
- package/lib/types/features/facets/RunsFacetsNav.d.ts +18 -0
- package/lib/types/features/facets/VFacetsNav.d.ts +1 -1
- package/lib/types/features/facets/VStringFacet.d.ts +6 -2
- package/lib/types/features/facets/VTypeFacet.d.ts +3 -1
- package/lib/types/features/facets/WorkflowExecutionsFacetsNav.d.ts +13 -0
- package/lib/types/features/facets/index.d.ts +3 -2
- package/lib/types/shell/SplashScreen.d.ts +4 -0
- package/lib/types/shell/VertesiaShell.d.ts +7 -0
- package/lib/types/shell/index.d.ts +6 -0
- package/lib/types/shell/login/EnterpriseSigninButton.d.ts +5 -0
- package/lib/types/shell/login/GitHubSignInButton.d.ts +5 -0
- package/lib/types/shell/login/GoogleSignInButton.d.ts +5 -0
- package/lib/types/shell/login/InviteAcceptModal.d.ts +1 -0
- package/lib/types/shell/login/MicrosoftSigninButton.d.ts +5 -0
- package/lib/types/shell/login/PreviewIcon.d.ts +5 -0
- package/lib/types/shell/login/SignInModal.d.ts +6 -0
- package/lib/types/shell/login/SigninScreen.d.ts +8 -0
- package/lib/types/shell/login/SignupForm.d.ts +7 -0
- package/lib/types/shell/login/TerminalLogin.d.ts +1 -0
- package/lib/types/shell/login/UserInfo.d.ts +5 -0
- package/lib/types/shell/login/UserSessionMenu.d.ts +8 -0
- package/lib/types/shell/utils.d.ts +1 -0
- package/lib/types/widgets/SvgIcon.d.ts +6 -0
- package/lib/types/widgets/index.d.ts +7 -6
- package/lib/vertesia-ui-core.js +1 -1
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-features.js +1 -1
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-router.js +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-shell.js +2 -0
- package/lib/vertesia-ui-shell.js.map +1 -0
- package/lib/vertesia-ui-widgets.js +1 -1
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/package.json +14 -6
- package/src/core/components/Badge.tsx +12 -8
- package/src/core/components/FormItem.tsx +4 -3
- package/src/core/components/InputList.tsx +21 -17
- package/src/core/components/shadcn/checkbox.tsx +2 -2
- package/src/core/components/shadcn/command.tsx +1 -1
- package/src/core/components/shadcn/dialog.tsx +18 -9
- package/src/core/components/shadcn/filters/DynamicLabel.tsx +1 -2
- package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +211 -0
- package/src/core/components/shadcn/filters/{comboBox.tsx → comboBox/SelectCombobox.tsx} +8 -192
- package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +76 -0
- package/src/core/components/shadcn/filters/comboBox/TextCombobox.tsx +81 -0
- package/src/core/components/shadcn/filters/comboBox/comboBox.tsx +4 -0
- package/src/core/components/shadcn/filters/filter/SelectFilter.tsx +161 -0
- package/src/core/components/shadcn/filters/{stringListFilter.tsx → filter/StringListFilter.tsx} +7 -7
- package/src/core/components/shadcn/filters/{textFilter.tsx → filter/TextFilter.tsx} +17 -11
- package/src/core/components/shadcn/filters/filter/dateFilter.tsx +256 -0
- package/src/core/components/shadcn/filters/filter-styles.ts +87 -0
- package/src/core/components/shadcn/filters/filterBar.tsx +208 -152
- package/src/core/components/shadcn/filters/filters.tsx +7 -5
- package/src/core/components/shadcn/filters/index.ts +1 -1
- package/src/core/components/shadcn/filters/types.ts +2 -0
- package/src/core/components/toast/NotificationPanel.tsx +38 -22
- package/src/features/agent/PayloadBuilder.tsx +56 -31
- package/src/features/agent/chat/ModernAgentConversation.tsx +10 -4
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +7 -6
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +12 -1
- package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +2 -1
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +12 -4
- package/src/features/facets/DocumentsFacetsNav.tsx +171 -0
- package/src/features/facets/RunsFacetsNav.tsx +166 -0
- package/src/features/facets/VFacetsNav.tsx +10 -126
- package/src/features/facets/VStringFacet.tsx +10 -4
- package/src/features/facets/VTypeFacet.tsx +6 -5
- package/src/features/facets/VUserFacet.tsx +5 -3
- package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +132 -0
- package/src/features/facets/index.ts +5 -2
- package/src/features/store/collections/CollectionsTable.tsx +3 -2
- package/src/features/store/collections/CreateCollection.tsx +17 -15
- package/src/features/store/collections/EditCollectionView.tsx +19 -16
- package/src/features/store/collections/SelectCollection.tsx +1 -1
- package/src/features/store/objects/DocumentPreviewPanel.tsx +0 -1
- package/src/features/store/objects/DocumentSearchResults.tsx +80 -11
- package/src/features/store/objects/components/ContentOverview.tsx +0 -2
- package/src/features/store/objects/components/SelectDocument.tsx +2 -2
- package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
- package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +40 -19
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +160 -214
- package/src/features/store/types/ObjectSchemaEditor.tsx +15 -0
- package/src/features/user/UserInfo.tsx +17 -14
- package/src/router/HistoryNavigator.ts +2 -2
- package/src/shell/SplashScreen.tsx +41 -0
- package/src/shell/VertesiaShell.tsx +27 -0
- package/src/shell/index.tsx +6 -0
- package/src/shell/login/EnterpriseSigninButton.tsx +106 -0
- package/src/shell/login/GitHubSignInButton.tsx +40 -0
- package/src/shell/login/GoogleSignInButton.tsx +36 -0
- package/src/shell/login/InviteAcceptModal.tsx +78 -0
- package/src/shell/login/MicrosoftSigninButton.tsx +30 -0
- package/src/shell/login/PreviewIcon.tsx +29 -0
- package/src/shell/login/SignInModal.tsx +28 -0
- package/src/shell/login/SigninScreen.tsx +162 -0
- package/src/shell/login/SignupForm.tsx +178 -0
- package/src/shell/login/TerminalLogin.tsx +299 -0
- package/src/shell/login/UserInfo.tsx +76 -0
- package/src/shell/login/UserSessionMenu.tsx +81 -0
- package/src/shell/utils.tsx +7 -0
- package/src/widgets/SvgIcon.tsx +44 -0
- package/src/widgets/index.ts +7 -6
- package/src/widgets/upload/UploadSummary.tsx +3 -4
- package/lib/esm/core/components/shadcn/filters/comboBox.js +0 -101
- package/lib/esm/core/components/shadcn/filters/comboBox.js.map +0 -1
- package/lib/esm/core/components/shadcn/filters/dateFilter.js +0 -36
- package/lib/esm/core/components/shadcn/filters/dateFilter.js.map +0 -1
- package/lib/esm/core/components/shadcn/filters/selectFilter.js +0 -67
- package/lib/esm/core/components/shadcn/filters/selectFilter.js.map +0 -1
- package/lib/esm/core/components/shadcn/filters/stringListFilter.js.map +0 -1
- package/lib/esm/core/components/shadcn/filters/textFilter.js.map +0 -1
- package/lib/esm/features/facets/InteractionFacet.js +0 -39
- package/lib/esm/features/facets/InteractionFacet.js.map +0 -1
- package/lib/esm/features/facets/TypeOptions.js +0 -19
- package/lib/esm/features/facets/TypeOptions.js.map +0 -1
- package/lib/esm/features/facets/UserFacet.js +0 -33
- package/lib/esm/features/facets/UserFacet.js.map +0 -1
- package/lib/types/core/components/shadcn/filters/comboBox.d.ts +0 -22
- package/lib/types/features/facets/InteractionFacet.d.ts +0 -9
- package/lib/types/features/facets/TypeOptions.d.ts +0 -3
- package/lib/types/features/facets/UserFacet.d.ts +0 -11
- package/src/core/components/shadcn/filters/dateFilter.tsx +0 -82
- package/src/core/components/shadcn/filters/selectFilter.tsx +0 -110
- package/src/features/facets/InteractionFacet.tsx +0 -53
- package/src/features/facets/TypeOptions.tsx +0 -22
- package/src/features/facets/UserFacet.tsx +0 -61
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Filter as BaseFilter, FilterProvider, FilterBtn, FilterBar, FilterClear, FilterGroup } from '@vertesia/ui/core';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { VEnvironmentFacet } from './VEnvironmentFacet';
|
|
4
|
+
import { VInteractionFacet } from './VInteractionFacet';
|
|
5
|
+
import { VStringFacet } from './VStringFacet';
|
|
6
|
+
import { VUserFacet } from './VUserFacet';
|
|
7
|
+
import { SearchInterface } from './VFacetsNav';
|
|
8
|
+
|
|
9
|
+
interface RunsFacetsNavProps {
|
|
10
|
+
facets: {
|
|
11
|
+
type?: any[];
|
|
12
|
+
interactions?: any[];
|
|
13
|
+
environments?: any[];
|
|
14
|
+
models?: any[];
|
|
15
|
+
statuses?: any[];
|
|
16
|
+
finish_reason?: any[];
|
|
17
|
+
created_by?: any[];
|
|
18
|
+
};
|
|
19
|
+
search: SearchInterface;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Hook to create filter groups for runs
|
|
23
|
+
export function useRunsFilterGroups(facets: RunsFacetsNavProps['facets']): FilterGroup[] {
|
|
24
|
+
const customFilterGroups: FilterGroup[] = [];
|
|
25
|
+
|
|
26
|
+
if (facets.interactions) {
|
|
27
|
+
const interactionFilterGroup = VInteractionFacet({
|
|
28
|
+
buckets: facets.interactions || [],
|
|
29
|
+
name: 'interaction',
|
|
30
|
+
placeholder: 'Interactions',
|
|
31
|
+
});
|
|
32
|
+
customFilterGroups.push(interactionFilterGroup);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (facets.environments) {
|
|
36
|
+
const environmentFilterGroup = VEnvironmentFacet({
|
|
37
|
+
buckets: facets.environments || [],
|
|
38
|
+
name: 'Environments'
|
|
39
|
+
});
|
|
40
|
+
customFilterGroups.push(environmentFilterGroup);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (facets.models) {
|
|
44
|
+
const modelFilterGroup = VStringFacet({
|
|
45
|
+
search: null as any, // This will be provided by the search context
|
|
46
|
+
buckets: facets.models || [],
|
|
47
|
+
name: 'Model'
|
|
48
|
+
});
|
|
49
|
+
customFilterGroups.push(modelFilterGroup);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (facets.statuses) {
|
|
53
|
+
const statusFilterGroup = VStringFacet({
|
|
54
|
+
search: null as any, // This will be provided by the search context
|
|
55
|
+
buckets: facets.statuses || [],
|
|
56
|
+
name: 'Status'
|
|
57
|
+
});
|
|
58
|
+
customFilterGroups.push(statusFilterGroup);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (facets.finish_reason) {
|
|
62
|
+
const processedFinishReason = facets.finish_reason.map((bucket: any) => ({
|
|
63
|
+
...bucket,
|
|
64
|
+
_id: bucket._id === null ? 'none' : bucket._id
|
|
65
|
+
}));
|
|
66
|
+
|
|
67
|
+
const finishReasonFilterGroup = VStringFacet({
|
|
68
|
+
search: null as any, // This will be provided by the search context
|
|
69
|
+
buckets: processedFinishReason,
|
|
70
|
+
name: 'finish_reason',
|
|
71
|
+
placeholder: 'Finish Reason'
|
|
72
|
+
});
|
|
73
|
+
customFilterGroups.push(finishReasonFilterGroup);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (facets.created_by) {
|
|
77
|
+
const createdByFilterGroup = VUserFacet({
|
|
78
|
+
buckets: facets.created_by || [],
|
|
79
|
+
name: 'created_by',
|
|
80
|
+
placeholder: 'Created By'
|
|
81
|
+
});
|
|
82
|
+
customFilterGroups.push(createdByFilterGroup);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const dateAfterFilterGroup = {
|
|
86
|
+
name: 'start',
|
|
87
|
+
placeholder: 'Date After',
|
|
88
|
+
type: 'date' as const,
|
|
89
|
+
multiple: false
|
|
90
|
+
};
|
|
91
|
+
customFilterGroups.push(dateAfterFilterGroup);
|
|
92
|
+
|
|
93
|
+
const dateBeforeFilterGroup = {
|
|
94
|
+
name: 'end',
|
|
95
|
+
placeholder: 'Date Before',
|
|
96
|
+
type: 'date' as const,
|
|
97
|
+
multiple: false
|
|
98
|
+
};
|
|
99
|
+
customFilterGroups.push(dateBeforeFilterGroup);
|
|
100
|
+
|
|
101
|
+
return customFilterGroups;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Hook to create filter change handler for runs
|
|
105
|
+
export function useRunsFilterHandler(search: SearchInterface) {
|
|
106
|
+
return (newFilters: BaseFilter[]) => {
|
|
107
|
+
if (newFilters.length === 0) {
|
|
108
|
+
search.clearFilters();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
search.clearFilters(false);
|
|
113
|
+
|
|
114
|
+
newFilters.forEach(filter => {
|
|
115
|
+
if (filter.value && filter.value.length > 0) {
|
|
116
|
+
const filterName = filter.name;
|
|
117
|
+
let filterValue;
|
|
118
|
+
if (filter.type === 'stringList') {
|
|
119
|
+
filterValue = filter.value.map(v => typeof v === 'string' ? v : v.value);
|
|
120
|
+
} else if (filter.multiple) {
|
|
121
|
+
filterValue = Array.isArray(filter.value)
|
|
122
|
+
? filter.value.map((v: any) => typeof v === 'object' && v.value ? v.value : v)
|
|
123
|
+
: [typeof filter.value === 'object' && (filter.value as any).value ? (filter.value as any).value : filter.value];
|
|
124
|
+
} else {
|
|
125
|
+
// Single value - don't wrap in array
|
|
126
|
+
filterValue = Array.isArray(filter.value) && filter.value[0] && typeof filter.value[0] === 'object'
|
|
127
|
+
? (filter.value[0] as any).value
|
|
128
|
+
: Array.isArray(filter.value) && filter.value[0]
|
|
129
|
+
? filter.value[0]
|
|
130
|
+
: filter.value;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
search.query[filterName] = filterValue;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
search.search();
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Legacy component for backward compatibility
|
|
142
|
+
export function RunsFacetsNav({ facets, search }: RunsFacetsNavProps) {
|
|
143
|
+
const [filters, setFilters] = useState<BaseFilter[]>([]);
|
|
144
|
+
const filterGroups = useRunsFilterGroups(facets);
|
|
145
|
+
const handleFilterLogic = useRunsFilterHandler(search);
|
|
146
|
+
|
|
147
|
+
const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
|
|
148
|
+
const newFilters = typeof value === 'function' ? value(filters) : value;
|
|
149
|
+
setFilters(newFilters);
|
|
150
|
+
handleFilterLogic(newFilters);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
return (
|
|
154
|
+
<FilterProvider
|
|
155
|
+
filterGroups={filterGroups}
|
|
156
|
+
filters={filters}
|
|
157
|
+
setFilters={handleFilterChange}
|
|
158
|
+
>
|
|
159
|
+
<div className="flex gap-2 items-center">
|
|
160
|
+
<FilterBtn />
|
|
161
|
+
<FilterBar />
|
|
162
|
+
<FilterClear />
|
|
163
|
+
</div>
|
|
164
|
+
</FilterProvider>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { Filter as BaseFilter, FilterBar, FilterGroup } from '@vertesia/ui/core';
|
|
2
|
-
import { useUserSession } from '@vertesia/ui/session';
|
|
1
|
+
import { Filter as BaseFilter, FilterProvider, FilterBtn, FilterBar, FilterClear, FilterGroup } from '@vertesia/ui/core';
|
|
3
2
|
import { useState } from 'react';
|
|
4
|
-
import { VEnvironmentFacet } from './VEnvironmentFacet';
|
|
5
|
-
import { VInteractionFacet } from './VInteractionFacet';
|
|
6
|
-
import { VStringFacet } from './VStringFacet';
|
|
7
|
-
import { VTypeFacet } from './VTypeFacet';
|
|
8
|
-
import { VUserFacet } from './VUserFacet';
|
|
9
3
|
|
|
10
4
|
export interface SearchInterface {
|
|
11
5
|
getFilterValue(name: string): any;
|
|
@@ -21,10 +15,9 @@ interface FacetsNavProps {
|
|
|
21
15
|
search: SearchInterface;
|
|
22
16
|
textSearch?: string;
|
|
23
17
|
}
|
|
24
|
-
export function VFacetsNav({
|
|
18
|
+
export function VFacetsNav({ search, textSearch = '' }: FacetsNavProps) {
|
|
25
19
|
const [filters, setFilters] = useState<BaseFilter[]>([]);
|
|
26
20
|
const customFilterGroups: FilterGroup[] = [];
|
|
27
|
-
const { typeRegistry } = useUserSession();
|
|
28
21
|
|
|
29
22
|
if (textSearch) {
|
|
30
23
|
customFilterGroups.push({
|
|
@@ -35,121 +28,6 @@ export function VFacetsNav({ facets, search, textSearch = '' }: FacetsNavProps)
|
|
|
35
28
|
});
|
|
36
29
|
}
|
|
37
30
|
|
|
38
|
-
if (facets.type) {
|
|
39
|
-
const typeFilterGroup = VTypeFacet({
|
|
40
|
-
buckets: facets.type || [],
|
|
41
|
-
typeRegistry: typeRegistry,
|
|
42
|
-
});
|
|
43
|
-
customFilterGroups.push(typeFilterGroup);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (facets.status) {
|
|
47
|
-
const statusFilterGroup = VStringFacet({
|
|
48
|
-
search,
|
|
49
|
-
buckets: facets.status || [],
|
|
50
|
-
name: 'Status'
|
|
51
|
-
});
|
|
52
|
-
customFilterGroups.push(statusFilterGroup);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (facets.role) {
|
|
56
|
-
const roleFilterGroup = VStringFacet({
|
|
57
|
-
search,
|
|
58
|
-
buckets: facets.role || [],
|
|
59
|
-
name: 'Role'
|
|
60
|
-
});
|
|
61
|
-
customFilterGroups.push(roleFilterGroup);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (facets.location) {
|
|
65
|
-
const locationFilterGroup = VStringFacet({
|
|
66
|
-
search,
|
|
67
|
-
buckets: facets.location || [],
|
|
68
|
-
name: 'Location'
|
|
69
|
-
});
|
|
70
|
-
customFilterGroups.push(locationFilterGroup);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (facets.initiated_by) {
|
|
74
|
-
const initiatedByFilterGroup = VUserFacet({
|
|
75
|
-
buckets: facets.initiated_by || [],
|
|
76
|
-
name: 'User'
|
|
77
|
-
});
|
|
78
|
-
customFilterGroups.push(initiatedByFilterGroup);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** Run table */
|
|
82
|
-
if (facets.interactions) {
|
|
83
|
-
const interactionFilterGroup = VInteractionFacet({
|
|
84
|
-
buckets: facets.interactions || [],
|
|
85
|
-
name: 'interaction',
|
|
86
|
-
placeholder: 'Interactions',
|
|
87
|
-
});
|
|
88
|
-
customFilterGroups.push(interactionFilterGroup);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (facets.environments) {
|
|
92
|
-
const environmentFilterGroup = VEnvironmentFacet({
|
|
93
|
-
buckets: facets.environments || [],
|
|
94
|
-
name: 'Environments'
|
|
95
|
-
});
|
|
96
|
-
customFilterGroups.push(environmentFilterGroup);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (facets.models) {
|
|
100
|
-
const modelFilterGroup = VStringFacet({
|
|
101
|
-
search,
|
|
102
|
-
buckets: facets.models || [],
|
|
103
|
-
name: 'Model'
|
|
104
|
-
});
|
|
105
|
-
customFilterGroups.push(modelFilterGroup);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (facets.statuses) {
|
|
109
|
-
const statusFilterGroup = VStringFacet({
|
|
110
|
-
search,
|
|
111
|
-
buckets: facets.statuses || [],
|
|
112
|
-
name: 'Status'
|
|
113
|
-
});
|
|
114
|
-
customFilterGroups.push(statusFilterGroup);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (facets.finish_reason) {
|
|
118
|
-
const processedFinishReason = facets.finish_reason.map((bucket: any) => ({
|
|
119
|
-
...bucket,
|
|
120
|
-
_id: bucket._id === null ? 'none' : bucket._id
|
|
121
|
-
}));
|
|
122
|
-
|
|
123
|
-
const finishReasonFilterGroup = VStringFacet({
|
|
124
|
-
search,
|
|
125
|
-
buckets: processedFinishReason,
|
|
126
|
-
name: 'finish_reason',
|
|
127
|
-
placeholder: 'Finish Reason'
|
|
128
|
-
});
|
|
129
|
-
customFilterGroups.push(finishReasonFilterGroup);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
if (facets.created_by) {
|
|
133
|
-
const createdByFilterGroup = VUserFacet({
|
|
134
|
-
buckets: facets.created_by || [],
|
|
135
|
-
name: 'created_by',
|
|
136
|
-
placeholder: 'Created By'
|
|
137
|
-
});
|
|
138
|
-
customFilterGroups.push(createdByFilterGroup);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (facets.tags) {
|
|
142
|
-
customFilterGroups.push({
|
|
143
|
-
name: 'Tags',
|
|
144
|
-
type: 'stringList',
|
|
145
|
-
options: facets.tags.map((tag: string) => ({
|
|
146
|
-
label: tag,
|
|
147
|
-
value: tag
|
|
148
|
-
}))
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
/** Run table */
|
|
152
|
-
|
|
153
31
|
const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
|
|
154
32
|
|
|
155
33
|
const newFilters = typeof value === 'function' ? value(filters) : value;
|
|
@@ -188,10 +66,16 @@ export function VFacetsNav({ facets, search, textSearch = '' }: FacetsNavProps)
|
|
|
188
66
|
};
|
|
189
67
|
|
|
190
68
|
return (
|
|
191
|
-
<
|
|
69
|
+
<FilterProvider
|
|
192
70
|
filterGroups={customFilterGroups}
|
|
193
71
|
filters={filters}
|
|
194
72
|
setFilters={handleFilterChange}
|
|
195
|
-
|
|
73
|
+
>
|
|
74
|
+
<div className="flex gap-2 items-center">
|
|
75
|
+
<FilterBtn />
|
|
76
|
+
<FilterBar />
|
|
77
|
+
<FilterClear />
|
|
78
|
+
</div>
|
|
79
|
+
</FilterProvider>
|
|
196
80
|
)
|
|
197
81
|
}
|
|
@@ -6,9 +6,11 @@ interface StringFacetProps {
|
|
|
6
6
|
buckets: FacetBucket[];
|
|
7
7
|
name: string;
|
|
8
8
|
placeholder?: string;
|
|
9
|
+
type?: 'select';
|
|
10
|
+
multiple?: boolean;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
|
-
export function createStringFilterGroup({ buckets, name, placeholder }: StringFacetProps): FilterGroup {
|
|
13
|
+
export function createStringFilterGroup({ buckets, name, placeholder, type = 'select', multiple = false }: StringFacetProps): FilterGroup {
|
|
12
14
|
const options = buckets.map((bucket) => ({
|
|
13
15
|
label: facetOptionLabel(bucket),
|
|
14
16
|
value: bucket._id
|
|
@@ -17,19 +19,23 @@ export function createStringFilterGroup({ buckets, name, placeholder }: StringFa
|
|
|
17
19
|
const filterGroup: FilterGroup = {
|
|
18
20
|
name: name,
|
|
19
21
|
options: options,
|
|
20
|
-
type:
|
|
22
|
+
type: type,
|
|
23
|
+
multiple: multiple,
|
|
21
24
|
placeholder: `${placeholder ?? `${name.charAt(0).toUpperCase() + name.slice(1)}`}`,
|
|
25
|
+
...({ allowCreate: false })
|
|
22
26
|
};
|
|
23
27
|
|
|
24
28
|
return filterGroup;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
export function VStringFacet({ buckets, name, placeholder}: {
|
|
31
|
+
export function VStringFacet({ buckets, name, placeholder, type, multiple }: {
|
|
28
32
|
search: any;
|
|
29
33
|
buckets: FacetBucket[];
|
|
30
34
|
name: string;
|
|
31
35
|
placeholder?: string;
|
|
32
36
|
className?: string;
|
|
37
|
+
type?: 'select';
|
|
38
|
+
multiple?: boolean;
|
|
33
39
|
}) {
|
|
34
|
-
return createStringFilterGroup({ buckets, name, placeholder });
|
|
40
|
+
return createStringFilterGroup({ buckets, name, placeholder, type, multiple });
|
|
35
41
|
}
|
|
@@ -4,9 +4,11 @@ import { FilterGroup } from "@vertesia/ui/core";
|
|
|
4
4
|
interface VTypeFacetProps {
|
|
5
5
|
buckets: FacetBucket[];
|
|
6
6
|
typeRegistry: any;
|
|
7
|
+
type?: 'select';
|
|
8
|
+
multiple?: boolean;
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export function VTypeFacet({ buckets, typeRegistry }: VTypeFacetProps) {
|
|
11
|
+
export function VTypeFacet({ buckets, typeRegistry, type = 'select', multiple = false }: VTypeFacetProps) {
|
|
10
12
|
// Create a map for quick lookups of type names and counts
|
|
11
13
|
const typeDataMap = new Map();
|
|
12
14
|
buckets.forEach((bucket) => {
|
|
@@ -30,19 +32,18 @@ export function VTypeFacet({ buckets, typeRegistry }: VTypeFacetProps) {
|
|
|
30
32
|
});
|
|
31
33
|
});
|
|
32
34
|
|
|
33
|
-
// Create options with just raw values
|
|
34
35
|
const options = buckets.map((bucket) => {
|
|
35
36
|
const typeId = bucket._id || "Document";
|
|
36
37
|
return {
|
|
37
38
|
value: typeId,
|
|
38
|
-
// Store count as simple fallback label
|
|
39
39
|
label: `(${bucket.count})`
|
|
40
40
|
};
|
|
41
41
|
});
|
|
42
42
|
|
|
43
43
|
const customFilterGroups: FilterGroup = {
|
|
44
|
-
name: '
|
|
45
|
-
type:
|
|
44
|
+
name: 'Types',
|
|
45
|
+
type: type,
|
|
46
|
+
multiple: multiple,
|
|
46
47
|
options: options,
|
|
47
48
|
labelRenderer: (typeId: string) => {
|
|
48
49
|
const typeData = typeDataMap.get(typeId);
|
|
@@ -32,9 +32,11 @@ export function createUserFilterGroup({ buckets, name, placeholder }: UserFacetP
|
|
|
32
32
|
// For known users, render UserInfo with count
|
|
33
33
|
const bucket = buckets.find(b => b._id === userRef);
|
|
34
34
|
return (
|
|
35
|
-
<div className="flex items-center
|
|
36
|
-
<
|
|
37
|
-
|
|
35
|
+
<div className="flex items-center w-full gap-2">
|
|
36
|
+
<div className="flex-1 min-w-0 flex items-center truncate">
|
|
37
|
+
<UserInfo userRef={userRef} showTitle={true} size="sm" />
|
|
38
|
+
</div>
|
|
39
|
+
<span className="text-muted-foreground flex-shrink-0">({bucket?.count || 0})</span>
|
|
38
40
|
</div>
|
|
39
41
|
);
|
|
40
42
|
},
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Filter as BaseFilter, FilterProvider, FilterBtn, FilterBar, FilterClear, FilterGroup } from '@vertesia/ui/core';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { VStringFacet } from './VStringFacet';
|
|
4
|
+
import { VUserFacet } from './VUserFacet';
|
|
5
|
+
import { SearchInterface } from './VFacetsNav';
|
|
6
|
+
|
|
7
|
+
interface WorkflowExecutionsFacetsNavProps {
|
|
8
|
+
facets: {
|
|
9
|
+
status?: any[];
|
|
10
|
+
initiated_by?: any[];
|
|
11
|
+
};
|
|
12
|
+
search: SearchInterface;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Hook to create filter groups for workflow executions
|
|
16
|
+
export function useWorkflowExecutionsFilterGroups(facets: WorkflowExecutionsFacetsNavProps['facets']): FilterGroup[] {
|
|
17
|
+
const customFilterGroups: FilterGroup[] = [];
|
|
18
|
+
|
|
19
|
+
customFilterGroups.push({
|
|
20
|
+
placeholder: 'Search by Workflow or Run ID',
|
|
21
|
+
name: 'name',
|
|
22
|
+
type: 'text',
|
|
23
|
+
options: [],
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
if (facets.status) {
|
|
27
|
+
const statusFilterGroup = VStringFacet({
|
|
28
|
+
search: null as any, // This will be provided by the search context
|
|
29
|
+
buckets: facets.status || [],
|
|
30
|
+
name: 'Status'
|
|
31
|
+
});
|
|
32
|
+
customFilterGroups.push(statusFilterGroup);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (facets.initiated_by) {
|
|
36
|
+
const initiatedByFilterGroup = VUserFacet({
|
|
37
|
+
buckets: facets.initiated_by || [],
|
|
38
|
+
name: 'User'
|
|
39
|
+
});
|
|
40
|
+
customFilterGroups.push(initiatedByFilterGroup);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const dateAfterFilterGroup = {
|
|
44
|
+
name: 'start',
|
|
45
|
+
placeholder: 'Date After',
|
|
46
|
+
type: 'date' as const,
|
|
47
|
+
multiple: false
|
|
48
|
+
};
|
|
49
|
+
customFilterGroups.push(dateAfterFilterGroup);
|
|
50
|
+
|
|
51
|
+
const dateBeforeFilterGroup = {
|
|
52
|
+
name: 'end',
|
|
53
|
+
placeholder: 'Date Before',
|
|
54
|
+
type: 'date' as const,
|
|
55
|
+
multiple: false
|
|
56
|
+
};
|
|
57
|
+
customFilterGroups.push(dateBeforeFilterGroup);
|
|
58
|
+
|
|
59
|
+
return customFilterGroups;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Hook to create filter change handler for workflow executions
|
|
63
|
+
export function useWorkflowExecutionsFilterHandler(search: SearchInterface) {
|
|
64
|
+
return (newFilters: BaseFilter[]) => {
|
|
65
|
+
if (newFilters.length === 0) {
|
|
66
|
+
search.clearFilters();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
search.clearFilters(false);
|
|
71
|
+
|
|
72
|
+
newFilters.forEach(filter => {
|
|
73
|
+
if (filter.value && filter.value.length > 0) {
|
|
74
|
+
const filterName = filter.name;
|
|
75
|
+
let filterValue;
|
|
76
|
+
if (filter.type === 'stringList') {
|
|
77
|
+
filterValue = filter.value.map(v => typeof v === 'string' ? v : v.value);
|
|
78
|
+
} else if (filter.multiple) {
|
|
79
|
+
filterValue = Array.isArray(filter.value)
|
|
80
|
+
? filter.value.map((v: any) => typeof v === 'object' && v.value ? v.value : v)
|
|
81
|
+
: [typeof filter.value === 'object' && (filter.value as any).value ? (filter.value as any).value : filter.value];
|
|
82
|
+
} else {
|
|
83
|
+
// Single value - don't wrap in array
|
|
84
|
+
filterValue = Array.isArray(filter.value) && filter.value[0] && typeof filter.value[0] === 'object'
|
|
85
|
+
? (filter.value[0] as any).value
|
|
86
|
+
: Array.isArray(filter.value) && filter.value[0]
|
|
87
|
+
? filter.value[0]
|
|
88
|
+
: filter.value;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (filterName === 'name') {
|
|
92
|
+
search.query.search_term = filterValue;
|
|
93
|
+
search.query.name = filterValue;
|
|
94
|
+
} else {
|
|
95
|
+
search.query[filterName] = filterValue;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
search.search();
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Legacy component for backward compatibility
|
|
105
|
+
export function WorkflowExecutionsFacetsNav({
|
|
106
|
+
facets,
|
|
107
|
+
search,
|
|
108
|
+
}: WorkflowExecutionsFacetsNavProps) {
|
|
109
|
+
const [filters, setFilters] = useState<BaseFilter[]>([]);
|
|
110
|
+
const filterGroups = useWorkflowExecutionsFilterGroups(facets);
|
|
111
|
+
const handleFilterLogic = useWorkflowExecutionsFilterHandler(search);
|
|
112
|
+
|
|
113
|
+
const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
|
|
114
|
+
const newFilters = typeof value === 'function' ? value(filters) : value;
|
|
115
|
+
setFilters(newFilters);
|
|
116
|
+
handleFilterLogic(newFilters);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
return (
|
|
120
|
+
<FilterProvider
|
|
121
|
+
filterGroups={filterGroups}
|
|
122
|
+
filters={filters}
|
|
123
|
+
setFilters={handleFilterChange}
|
|
124
|
+
>
|
|
125
|
+
<div className="flex gap-2 items-center">
|
|
126
|
+
<FilterBtn />
|
|
127
|
+
<FilterBar />
|
|
128
|
+
<FilterClear />
|
|
129
|
+
</div>
|
|
130
|
+
</FilterProvider>
|
|
131
|
+
);
|
|
132
|
+
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
export { EnvironmentFacet } from "./EnvironmentFacet";
|
|
2
2
|
export * from "./FacetsNav";
|
|
3
|
-
export { InteractionFacet } from "./InteractionFacet";
|
|
4
3
|
export { StringFacet } from "./StringFacet";
|
|
5
4
|
export { StringListFacet } from "./StringListFacet";
|
|
6
5
|
export { TypeFacet } from "./TypeFacet";
|
|
7
|
-
|
|
6
|
+
|
|
8
7
|
export * from "./VFacetsNav";
|
|
9
8
|
export { VStringFacet } from "./VStringFacet";
|
|
10
9
|
export { VTypeFacet } from "./VTypeFacet";
|
|
11
10
|
export { VUserFacet } from "./VUserFacet";
|
|
11
|
+
|
|
12
|
+
export { RunsFacetsNav, useRunsFilterGroups, useRunsFilterHandler } from "./RunsFacetsNav";
|
|
13
|
+
export { WorkflowExecutionsFacetsNav, useWorkflowExecutionsFilterGroups, useWorkflowExecutionsFilterHandler } from "./WorkflowExecutionsFacetsNav";
|
|
14
|
+
export { DocumentsFacetsNav, useDocumentFilterGroups, useDocumentFilterHandler } from "./DocumentsFacetsNav";
|
|
@@ -18,7 +18,7 @@ export function CollectionsTable({ }: CollectionsTableProps) {
|
|
|
18
18
|
const [isLoading, setIsLoading] = useState(true);
|
|
19
19
|
const [isOpen, setOpen] = useState(false);
|
|
20
20
|
|
|
21
|
-
const { data: collections, error, refetch } = useFetch(() => client.store.collections.
|
|
21
|
+
const { data: collections, error, refetch } = useFetch(() => client.store.collections.search({}), []);
|
|
22
22
|
|
|
23
23
|
// Update loading state when data is fetched
|
|
24
24
|
useEffect(() => {
|
|
@@ -57,7 +57,8 @@ export function CollectionsTable({ }: CollectionsTableProps) {
|
|
|
57
57
|
|
|
58
58
|
return (
|
|
59
59
|
<>
|
|
60
|
-
{
|
|
60
|
+
{
|
|
61
|
+
collections &&
|
|
61
62
|
(collections.length > 0 ?
|
|
62
63
|
(<Table className="w-full">
|
|
63
64
|
<thead>
|
|
@@ -86,10 +86,25 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
|
|
|
86
86
|
onChange={(ev) => setPayloadProp("description", ev.target.value)}
|
|
87
87
|
/>
|
|
88
88
|
</FormItem>
|
|
89
|
-
<FormItem label="Dynamic Collection" className="mt-2" direction="row" description="
|
|
89
|
+
<FormItem label="Dynamic Collection" className="mt-2" direction="row" description="Dynamically fetch content for the collection based on a query. If not enabled, then content must be added by users or agents.">
|
|
90
90
|
<Switch value={payload.dynamic || false} onChange={(value) => setPayloadProp("dynamic", value)} />
|
|
91
91
|
</FormItem>
|
|
92
|
-
|
|
92
|
+
{ !payload.dynamic &&
|
|
93
|
+
<FormItem label="Allowed Content Types" className="mt-4" description="Optionally select which content types can be added to the collection. If not set, then all content types are allowed.">
|
|
94
|
+
<SelectContentType
|
|
95
|
+
defaultValue={payload.allowed_types || null}
|
|
96
|
+
onChange={(v) => {
|
|
97
|
+
if (Array.isArray(v)) {
|
|
98
|
+
setPayloadProp("allowed_types", v.map(type => type.id));
|
|
99
|
+
} else {
|
|
100
|
+
setPayloadProp("allowed_types", v ? [v.id] : []);
|
|
101
|
+
}
|
|
102
|
+
}}
|
|
103
|
+
isClearable multiple
|
|
104
|
+
/>
|
|
105
|
+
</FormItem>
|
|
106
|
+
}
|
|
107
|
+
<FormItem label="Type" className="mt-2" description="Optionally select a content type to assign custom properties and data to the collection.">
|
|
93
108
|
<SelectContentType
|
|
94
109
|
defaultValue={payload.type || null}
|
|
95
110
|
onChange={(v) => {
|
|
@@ -102,19 +117,6 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
|
|
|
102
117
|
isClearable
|
|
103
118
|
/>
|
|
104
119
|
</FormItem>
|
|
105
|
-
<FormItem label="Allowed Content Types" className="mt-4">
|
|
106
|
-
<SelectContentType
|
|
107
|
-
defaultValue={payload.allowed_types || null}
|
|
108
|
-
onChange={(v) => {
|
|
109
|
-
if (Array.isArray(v)) {
|
|
110
|
-
setPayloadProp("allowed_types", v.map(type => type.id));
|
|
111
|
-
} else {
|
|
112
|
-
setPayloadProp("allowed_types", v ? [v.id] : []);
|
|
113
|
-
}
|
|
114
|
-
}}
|
|
115
|
-
isClearable multiple
|
|
116
|
-
/>
|
|
117
|
-
</FormItem>
|
|
118
120
|
</VModalBody>
|
|
119
121
|
<VModalFooter>
|
|
120
122
|
<Button isDisabled={isProcessing} onClick={onCreate}>
|