◐ Shell
reader mode source ↗
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
4 changes: 0 additions & 4 deletions ui/src/components/PermissionsDisplay.tsx
Original file line number Diff line number Diff line change
@@ -3,13 +3,9 @@ import {
EuiBadge,
EuiFlexGroup,
EuiFlexItem,
EuiPanel,
EuiText,
EuiTitle,
EuiHorizontalRule,
EuiToolTip,
} from "@elastic/eui";
import { formatPermissions } from "../utils/permissionUtils";

interface PermissionsDisplayProps {
permissions: any[] | undefined;
Expand Down
7 changes: 3 additions & 4 deletions ui/src/components/RegistrySearch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import React, {
useRef,
forwardRef,
useImperativeHandle,
} from "react";
import {
EuiText,
Expand All @@ -17,8 +18,6 @@ import {
} from "@elastic/eui";
import EuiCustomLink from "./EuiCustomLink";

import { css } from "@emotion/react";

const searchResultsStyles = {
searchResults: {
marginTop: "8px",
Expand Down Expand Up @@ -68,11 +67,11 @@ const RegistrySearch = forwardRef<RegistrySearchRef, RegistrySearchProps>(
const [searchText, setSearchText] = useState("");
const inputRef = useRef<HTMLInputElement | null>(null);

const focusSearchInput = () => {
if (inputRef.current) {
inputRef.current.focus();
}
};

useImperativeHandle(
ref,
Expand Down
1 change: 0 additions & 1 deletion ui/src/custom-tabs/TabsRegistryContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import FeatureCustomTabLoadingWrapper from "../utils/custom-tabs/FeatureCustomTa
import DataSourceCustomTabLoadingWrapper from "../utils/custom-tabs/DataSourceCustomTabLoadingWrapper";
import EntityCustomTabLoadingWrapper from "../utils/custom-tabs/EntityCustomTabLoadingWrapper";
import DatasetCustomTabLoadingWrapper from "../utils/custom-tabs/DatasetCustomTabLoadingWrapper";
import CurlGeneratorTab from "../pages/feature-views/CurlGeneratorTab";

import {
RegularFeatureViewCustomTabRegistrationInterface,
49 changes: 0 additions & 49 deletions ui/src/pages/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,55 +54,6 @@ const Layout = () => {
// Load unfiltered data for global search (across all projects)
const { data: globalData } = useLoadRegistry(globalRegistryPath);

// Categories for page-level search (filtered to current project)
const categories = data
? [
{
name: "Data Sources",
data: data.objects.dataSources || [],
getLink: (item: any) => `/p/${projectName}/data-source/${item.name}`,
},
{
name: "Entities",
data: data.objects.entities || [],
getLink: (item: any) => `/p/${projectName}/entity/${item.name}`,
},
{
name: "Features",
data: data.allFeatures || [],
getLink: (item: any) => {
const featureView = item?.featureView;
return featureView
? `/p/${projectName}/feature-view/${featureView}/feature/${item.name}`
: "#";
},
},
{
name: "Feature Views",
data: data.mergedFVList || [],
getLink: (item: any) => `/p/${projectName}/feature-view/${item.name}`,
},
{
name: "Label Views",
data: data.objects.labelViews || [],
getLink: (item: any) => {
const lvName = item?.name || item?.spec?.name;
return `/p/${projectName}/label-view/${lvName}`;
},
},
{
name: "Feature Services",
data: data.objects.featureServices || [],
getLink: (item: any) => {
const serviceName = item?.name || item?.spec?.name;
return serviceName
? `/p/${projectName}/feature-service/${serviceName}`
: "#";
},
},
]
: [];

// Helper function to extract project ID from an item
const getProjectId = (item: any): string => {
// Try different possible locations for the project field
Expand Down
17 changes: 11 additions & 6 deletions ui/src/pages/feature-views/FeatureViewVersionsTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
EuiTitle,
EuiHorizontalRule,
EuiCodeBlock,
EuiSpacer,
EuiFlexGroup,
EuiFlexItem,
EuiBadge,
Expand Down @@ -161,11 +160,17 @@ const FeatureViewVersionsTab = ({
const registryQuery = useLoadRegistry(registryUrl, projectName);
const [expandedRows, setExpandedRows] = useState<Record<number, boolean>>({});

const records =
registryQuery.data?.objects?.featureViewVersionHistory?.records?.filter(
(r: feast.core.IFeatureViewVersionRecord) =>
r.featureViewName === featureViewName,
) || [];

const decodedVersions: DecodedVersion[] = useMemo(
() => records.map(decodeVersionProto),
Expand Down
4 changes: 1 addition & 3 deletions ui/src/pages/label-views/BatchUploadTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { useParams } from "react-router-dom";
import {
EuiPanel,
EuiTitle,
EuiHorizontalRule,
EuiForm,
EuiFormRow,
EuiButton,
Expand All @@ -18,7 +17,6 @@ import {
EuiFilePicker,
EuiBasicTable,
EuiBasicTableColumn,
EuiIcon,
EuiCodeBlock,
} from "@elastic/eui";
import RegistryPathContext from "../../contexts/RegistryPathContext";
Expand All @@ -28,7 +26,7 @@ const BatchUploadTab = () => {
const { labelViewName } = useParams();
const registryUrl = useContext(RegistryPathContext);
const name = labelViewName || "";
const { isLoading, isSuccess, data } = useLoadLabelView(name);

const [fileData, setFileData] = useState<any[] | null>(null);
const [fileName, setFileName] = useState<string>("");
Expand Down
37 changes: 24 additions & 13 deletions ui/src/pages/label-views/ClassificationMethod.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
import React, { useState, useContext, useEffect } from "react";
import { useParams } from "react-router-dom";
import {
EuiCallOut,
Expand All @@ -7,7 +13,6 @@ import {
EuiFlexItem,
EuiButton,
EuiPanel,
EuiTitle,
EuiText,
EuiLoadingSpinner,
EuiBasicTable,
Expand Down Expand Up @@ -45,17 +50,23 @@ const ClassificationMethod = () => {
const [pageSize, setPageSize] = useState(25);

const spec = data?.object?.spec || data?.spec || {};
const labelFields: { name: string; valueType?: string }[] =
spec.features || [];
const entities: string[] = spec.entityColumns?.length
? spec.entityColumns.map((ec: { name: string }) => ec.name)
: spec.entities || [];

const configuredValues = annotationConfig?.label_values || {};
const fieldRoles = annotationConfig?.field_roles || {};
const labelWidgets = annotationConfig?.label_widgets || {};

const fetchLabels = async () => {
setIsLoading(true);
setError(null);
try {
Expand Down @@ -84,13 +95,13 @@ const ClassificationMethod = () => {
} finally {
setIsLoading(false);
}
};

useEffect(() => {
if (labelViewName) {
fetchLabels();
}
}, [labelViewName]);

const handleFieldChange = (rowId: string, field: string, value: string) => {
setRows((prev) =>
Expand Down Expand Up @@ -186,7 +197,7 @@ const ClassificationMethod = () => {
URL.revokeObjectURL(url);
};

const filteredRows = React.useMemo(() => {
if (!searchQuery.trim()) return rows;
const q = searchQuery.toLowerCase();
return rows.filter((row) =>
Expand All @@ -198,12 +209,12 @@ const ClassificationMethod = () => {
);
}, [rows, searchQuery]);

const paginatedRows = React.useMemo(() => {
const start = pageIndex * pageSize;
return filteredRows.slice(start, start + pageSize);
}, [filteredRows, pageIndex, pageSize]);

const uniqueValuesForField = React.useMemo(() => {
const result: Record<string, string[]> = {};
labelFields.forEach((field) => {
const values = new Set<string>();
Expand Down
3 changes: 0 additions & 3 deletions ui/src/pages/label-views/IntegrationsTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { useParams } from "react-router-dom";
import {
EuiPanel,
EuiTitle,
EuiHorizontalRule,
EuiText,
EuiLoadingSpinner,
EuiCallOut,
Expand All @@ -12,8 +11,6 @@ import {
EuiFlexGroup,
EuiFlexItem,
EuiBadge,
EuiCopy,
EuiButton,
EuiIcon,
} from "@elastic/eui";
import RegistryPathContext from "../../contexts/RegistryPathContext";
Expand Down
2 changes: 1 addition & 1 deletion ui/src/pages/label-views/LabelBrowseTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ const LabelBrowseTab = () => {
const entities: string[] = spec.entityColumns?.length
? spec.entityColumns.map((ec: { name: string }) => ec.name)
: spec.entities || [];
const features: any[] = spec.features || [];
const conflictPolicy =
spec.conflictPolicy || spec.conflict_policy || "LAST_WRITE_WINS";
const policyLabel =
Expand Down
3 changes: 1 addition & 2 deletions ui/src/pages/label-views/TrainingExportTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const TrainingExportTab = () => {
const { labelViewName } = useParams();
const registryUrl = useContext(RegistryPathContext);
const name = labelViewName || "";
const { isLoading, isSuccess, data } = useLoadLabelView(name);
const { data: registryData } = useLoadRegistry(registryUrl);

const [featureService, setFeatureService] = useState("");
Expand All @@ -38,7 +38,6 @@ const TrainingExportTab = () => {
moment().subtract(30, "days"),
);
const [endDate, setEndDate] = useState<moment.Moment | null>(moment());
const [exportFormat, setExportFormat] = useState("csv");
const [exporting, setExporting] = useState(false);
const [exportResult, setExportResult] = useState<any>(null);
const [error, setError] = useState<string | null>(null);
Expand Down
1 change: 0 additions & 1 deletion ui/src/pages/monitoring/FeatureMetricsDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
useBaselineMetrics,
} from "../../queries/useMonitoringApi";
import type {
FeatureMetric,
NumericHistogram,
CategoricalHistogram,
} from "../../queries/useMonitoringApi";
Expand Down
2 changes: 0 additions & 2 deletions ui/src/pages/monitoring/components/HistogramChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -291,12 +291,10 @@ const NumericHistogramChart = ({
const LABEL_WIDTH = 60;
const BAR_MAX_WIDTH = 320;
const COUNT_PAD = 80;
const CAT_SVG_WIDTH = LABEL_WIDTH + BAR_MAX_WIDTH + COUNT_PAD;

const LABEL_WIDTH_EXP = 120;
const BAR_MAX_WIDTH_EXP = 560;
const COUNT_PAD_EXP = 100;
const CAT_SVG_WIDTH_EXP = LABEL_WIDTH_EXP + BAR_MAX_WIDTH_EXP + COUNT_PAD_EXP;

const renderCategoricalSvg = (
histogram: CategoricalHistogram,
1 change: 0 additions & 1 deletion ui/src/utils/permissionUtils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { FEAST_FCO_TYPES } from "../parsers/types";
import { feast } from "../protos";

/**
* Get permissions for a specific entity
Expand Down
Loading
Toggle all file notes Toggle all file annotations