diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v170/MigrationUtil.java b/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v170/MigrationUtil.java index cdae3feb5c9..c4c833f689e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v170/MigrationUtil.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v170/MigrationUtil.java @@ -244,7 +244,8 @@ public class MigrationUtil { new LineChart() .withMetrics(List.of(new LineChartMetric().withFormula("count(k='id.keyword')"))) .withxAxisField("tags.tagFQN") - .withIncludeXAxisFiled("pii.*"), + .withIncludeXAxisFiled("pii.*") + .withGroupBy("tags.name.keyword"), DataInsightCustomChart.ChartType.BAR_CHART); createChart( @@ -252,7 +253,8 @@ public class MigrationUtil { new LineChart() .withMetrics(List.of(new LineChartMetric().withFormula("count(k='id.keyword')"))) .withxAxisField("tags.tagFQN") - .withIncludeXAxisFiled("tier.*"), + .withIncludeXAxisFiled("tier.*") + .withGroupBy("tags.name.keyword"), DataInsightCustomChart.ChartType.BAR_CHART); createChart( @@ -261,13 +263,17 @@ public class MigrationUtil { .withMetrics( List.of( new LineChartMetric() - .withFormula("count(k='id.keyword',q='hasDescription: 1')")))); + .withFormula( + "(count(k='id.keyword',q='hasDescription: 1')/count(k='id.keyword'))*100")))); createChart( "assets_with_owners", new LineChart() .withMetrics( - List.of(new LineChartMetric().withFormula("count(k='id.keyword',q='owners: *')")))); + List.of( + new LineChartMetric() + .withFormula( + "(count(k='id.keyword',q='owners.name.keyword: *')/count(k='id.keyword'))*100")))); createChart( "assets_with_pii", @@ -276,14 +282,17 @@ public class MigrationUtil { List.of( new LineChartMetric() .withFormula( - "count(q='tags.tagFQN: pii.sensitive OR tags.tagFQN:" - + " pii.nonsensitive OR tags.tagFQN: pii.none')")))); + "(count(q='tags.tagFQN: pii.sensitive OR tags.tagFQN:" + + " pii.nonsensitive OR tags.tagFQN: pii.none')/count(k='id.keyword'))*100")))); createChart( "assets_with_tier", new LineChart() .withMetrics( - List.of(new LineChartMetric().withFormula("count(q='tags.tagFQN: tier.*')")))); + List.of( + new LineChartMetric() + .withFormula( + "(count(q='tags.tagFQN: tier.*')/count(k='id.keyword'))*100")))); createChart( "description_source_breakdown", diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/dataInsightAggregators/QueryCostRecordsAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/dataInsightAggregators/QueryCostRecordsAggregator.java index f54f29f65cc..6f23eac185c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/dataInsightAggregators/QueryCostRecordsAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/dataInsightAggregators/QueryCostRecordsAggregator.java @@ -31,6 +31,7 @@ import org.openmetadata.schema.entity.data.QueryCostSearchResult; import org.openmetadata.schema.entity.data.QueryDetails; import org.openmetadata.schema.entity.data.QueryGroup; import org.openmetadata.schema.entity.data.QueryHolder; +import org.openmetadata.service.Entity; public class QueryCostRecordsAggregator { @@ -112,7 +113,11 @@ public class QueryCostRecordsAggregator { } // Build the search request - searchRequest = searchRequestBuilder.request().indices("query_cost_record_search_index"); + searchRequest = + searchRequestBuilder + .request() + .indices( + Entity.getSearchRepository().getIndexOrAliasName("query_cost_record_search_index")); return searchRequest; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/dataInsightAggregator/QueryCostRecordsAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/dataInsightAggregator/QueryCostRecordsAggregator.java index 214c0974990..824f4c28b07 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/dataInsightAggregator/QueryCostRecordsAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/dataInsightAggregator/QueryCostRecordsAggregator.java @@ -10,6 +10,7 @@ import org.openmetadata.schema.entity.data.QueryCostSearchResult; import org.openmetadata.schema.entity.data.QueryDetails; import org.openmetadata.schema.entity.data.QueryGroup; import org.openmetadata.schema.entity.data.QueryHolder; +import org.openmetadata.service.Entity; import os.org.opensearch.action.search.SearchAction; import os.org.opensearch.action.search.SearchRequest; import os.org.opensearch.action.search.SearchRequestBuilder; @@ -112,7 +113,11 @@ public class QueryCostRecordsAggregator { } // Build the search request - searchRequest = searchRequestBuilder.request().indices("query_cost_record_search_index"); + searchRequest = + searchRequestBuilder + .request() + .indices( + Entity.getSearchRepository().getIndexOrAliasName("query_cost_record_search_index")); return searchRequest; } diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/BulkEditEntity.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/BulkEditEntity.spec.ts index 27f8b01a573..62c983c94ba 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/BulkEditEntity.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/BulkEditEntity.spec.ts @@ -166,6 +166,10 @@ test.describe('Bulk Edit Entity', () => { await toastNotification(page, /details updated successfully/); + await page.click('[data-testid="databases"]'); + + await page.waitForLoadState('networkidle'); + // Verify Details updated await expect(page.getByTestId('column-name')).toHaveText( `${table.database.name}${databaseDetails.displayName}` diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SchemaSearch.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SchemaSearch.spec.ts index ee481d8e49c..3c7ff000f6a 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SchemaSearch.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SchemaSearch.spec.ts @@ -64,6 +64,7 @@ test.describe('Schema search', { tag: '@ingestion' }, () => { await databasesResponse; const schemaResponse = page.waitForResponse('/api/v1/databaseSchemas?**'); + await page.click('[data-testid="databases"]'); await page.click( `[data-testid="table-container"] >> text=${table.database.name}` ); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/alert.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/alert.ts index 37aae920a89..95edbe189ce 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/alert.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/alert.ts @@ -274,7 +274,6 @@ export const addOwnerFilter = async ({ // Search and select owner const getSearchResult = page.waitForResponse('/api/v1/search/query?q=*'); - await page.waitForSelector('.ant-select-dropdown:visible'); await page.fill( '[data-testid="owner-name-select"] [role="combobox"]', ownerName, diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts index 332c4e6a9db..1e89515c5e7 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts @@ -1001,6 +1001,10 @@ export const checkForEditActions = async ({ } if (entityType.startsWith('services/')) { + await page.getByRole('tab').nth(1).click(); + + await page.waitForLoadState('networkidle'); + continue; } diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts index cc415e5cbad..9cab8e666d5 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/importUtils.ts @@ -68,6 +68,8 @@ export const fillOwnerDetails = async (page: Page, owners: string[]) => { .locator('.InovuaReactDataGrid__cell--cell-active') .press('Enter', { delay: 100 }); + await page.waitForLoadState('networkidle'); + const userListResponse = page.waitForResponse( '/api/v1/search/query?q=*isBot:false*index=user_search_index*' ); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/service.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/service.ts index dea999566b2..638d7fd7c57 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/service.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/service.ts @@ -26,7 +26,8 @@ export const searchServiceFromSettingPage = async ( export const visitServiceDetailsPage = async ( page: Page, service: { type: string; name: string; displayName?: string }, - verifyHeader = false + verifyHeader = false, + visitChildrenTab = true ) => { const serviceResponse = page.waitForResponse('/api/v1/services/*'); await settingClick(page, service.type as SettingOptionsType); @@ -37,6 +38,13 @@ export const visitServiceDetailsPage = async ( // Click on created service await page.click(`[data-testid="service-name-${service.name}"]`); + if (visitChildrenTab) { + // Click on children tab Ex. DatabaseService -> Databases + await page.getByRole('tab').nth(1).click(); + } + + await page.waitForLoadState('networkidle'); + if (verifyHeader) { const text = await page.textContent( `[data-testid="entity-header-display-name"]` diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.interface.ts index b716a53ad30..74cb929d8c5 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.interface.ts @@ -22,9 +22,9 @@ export interface ChartData { export interface ChartSeriesData { chartType: SystemChartType; data: ChartData[]; - percentageChange: number; - currentCount: number; - isIncreased: boolean; + percentageChange?: number; + currentPercentage: number; + isIncreased?: boolean; } export interface PlatformInsightsWidgetProps diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.tsx index 7b79cd476d0..dae187a5d01 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/PlatformInsightsWidget/PlatformInsightsWidget.tsx @@ -19,6 +19,7 @@ import { ReactComponent as ArrowUp } from '../../../assets/svg/up-full-arrow.svg import { GREEN_1, RED_1 } from '../../../constants/Color.constants'; import { PLATFORM_INSIGHTS_CHART } from '../../../constants/ServiceInsightsTab.constants'; import { getTitleByChartType } from '../../../utils/ServiceInsightsTabUtils'; +import { getReadableCountString } from '../../../utils/ServiceUtils'; import TotalDataAssetsWidget from '../TotalDataAssetsWidget/TotalDataAssetsWidget'; import './platform-insights-widget.less'; import { PlatformInsightsWidgetProps } from './PlatformInsightsWidget.interface'; @@ -39,7 +40,7 @@ function PlatformInsightsWidget({ {t('message.platform-insight-description')} - + @@ -68,28 +69,35 @@ function PlatformInsightsWidget({ className="flex flex-col justify-between h-full" span={14}> - {chart.currentCount} + {`${getReadableCountString(chart.currentPercentage)}%`} -
- {chart.isIncreased ? ( - - ) : ( - - )} - - {`${chart.percentageChange}%`} - - - {t('label.vs-last-month')} - -
+ {chart.percentageChange && ( +
+ {chart.isIncreased ? ( + + ) : ( + + )} + + {`${getReadableCountString( + chart.percentageChange + )}%`} + + + {t('label.vs-last-week-lowercase')} + +
+ )} - + {[GREEN_1, RED_1].map((color) => ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/ServiceInsightsTab.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/ServiceInsightsTab.tsx index 544724cf0bf..93d75caed82 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/ServiceInsightsTab.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/ServiceInsightsTab.tsx @@ -13,20 +13,18 @@ import { Col, Row } from 'antd'; import { AxiosError } from 'axios'; -import { isUndefined, last, round } from 'lodash'; +import { isUndefined, toLower } from 'lodash'; import { ServiceTypes } from 'Models'; import React, { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; -import { - PLATFORM_INSIGHTS_CHART, - SERVICE_INSIGHTS_CHART, -} from '../../constants/ServiceInsightsTab.constants'; +import { PLATFORM_INSIGHTS_CHART } from '../../constants/ServiceInsightsTab.constants'; import { SystemChartType } from '../../enums/DataInsight.enum'; import { getMultiChartsPreviewByName } from '../../rest/DataInsightAPI'; import { - getCurrentMillis, - getEpochMillisForPastDays, + getCurrentDayStartGMTinMillis, + getDayAgoStartGMTinMillis, } from '../../utils/date-time/DateTimeUtils'; +import { getPlatformInsightsChartDataFormattingMethod } from '../../utils/ServiceInsightsTabUtils'; import serviceUtilClassBase from '../../utils/ServiceUtilClassBase'; import { showErrorToast } from '../../utils/ToastUtils'; import { @@ -50,51 +48,44 @@ const ServiceInsightsTab = ({ serviceDetails }: ServiceInsightsTabProps) => { const serviceName = serviceDetails.name; + const widgets = serviceUtilClassBase.getInsightsTabWidgets(serviceCategory); + const fetchChartsData = async () => { try { setIsLoading(true); - const currentTimestampInMs = getCurrentMillis(); - const sevenDaysAgoTimestampInMs = getEpochMillisForPastDays(7); + const currentTimestampInMs = getCurrentDayStartGMTinMillis(); + const sevenDaysAgoTimestampInMs = getDayAgoStartGMTinMillis(7); - const chartsData = await getMultiChartsPreviewByName( - SERVICE_INSIGHTS_CHART, - { - start: sevenDaysAgoTimestampInMs, - end: currentTimestampInMs, - filter: `{"query":{"match":{"service.name.keyword":"${serviceName}"}}}`, - } - ); + const chartsList = [ + ...PLATFORM_INSIGHTS_CHART, + ...(widgets.PIIDistributionWidget + ? [SystemChartType.PIIDistribution] + : []), + ...(widgets.TierDistributionWidget + ? [SystemChartType.TierDistribution] + : []), + ]; - const platformInsightsChart = PLATFORM_INSIGHTS_CHART.map((chartType) => { - const summaryChartData = chartsData[chartType]; - - const data = summaryChartData.results; - - const firstDayValue = data.length > 1 ? data[0]?.count : 0; - const lastDayValue = data[data.length - 1]?.count; - - const percentageChange = - ((lastDayValue - firstDayValue) / - (firstDayValue === 0 ? lastDayValue : firstDayValue)) * - 100; - - const isIncreased = lastDayValue >= firstDayValue; - - return { - chartType, - data, - isIncreased, - percentageChange: isNaN(percentageChange) - ? 0 - : round(Math.abs(percentageChange), 2), - currentCount: round(last(summaryChartData.results)?.count ?? 0, 2), - }; + const chartsData = await getMultiChartsPreviewByName(chartsList, { + start: sevenDaysAgoTimestampInMs, + end: currentTimestampInMs, + filter: `{"query":{"match":{"service.name.keyword":"${serviceName}"}}}`, }); - const piiDistributionChart = - chartsData[SystemChartType.PIIDistribution].results; - const tierDistributionChart = - chartsData[SystemChartType.TierDistribution].results; + const platformInsightsChart = PLATFORM_INSIGHTS_CHART.map( + getPlatformInsightsChartDataFormattingMethod( + chartsData, + sevenDaysAgoTimestampInMs, + currentTimestampInMs + ) + ); + + const piiDistributionChart = chartsData[ + SystemChartType.PIIDistribution + ]?.results.filter((item) => item.term.includes(toLower(item.group))); + const tierDistributionChart = chartsData[ + SystemChartType.TierDistribution + ]?.results.filter((item) => item.term.includes(toLower(item.group))); setChartsResults({ platformInsightsChart, @@ -112,8 +103,6 @@ const ServiceInsightsTab = ({ serviceDetails }: ServiceInsightsTabProps) => { fetchChartsData(); }, []); - const widgets = serviceUtilClassBase.getInsightsTabWidgets(serviceCategory); - const arrayOfWidgets = [ { Widget: widgets.PlatformInsightsWidget, name: 'PlatformInsightsWidget' }, { Widget: widgets.CollateAIWidget, name: 'CollateAIWidget' }, diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/TotalDataAssetsWidget.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/TotalDataAssetsWidget.tsx index 7c842f426c4..fb747486eda 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/TotalDataAssetsWidget.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/TotalDataAssetsWidget.tsx @@ -10,7 +10,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Card, Skeleton, Tooltip, Typography } from 'antd'; +import { Card, Skeleton, Typography } from 'antd'; import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -26,7 +26,10 @@ import { SearchIndex } from '../../../enums/search.enum'; import { searchQuery } from '../../../rest/searchAPI'; import { getEntityNameLabel } from '../../../utils/EntityUtils'; import { getAssetsByServiceType } from '../../../utils/ServiceInsightsTabUtils'; -import { getServiceNameQueryFilter } from '../../../utils/ServiceUtils'; +import { + getReadableCountString, + getServiceNameQueryFilter, +} from '../../../utils/ServiceUtils'; import { getEntityIcon } from '../../../utils/TableUtils'; import ErrorPlaceHolder from '../../common/ErrorWithPlaceholder/ErrorPlaceHolder'; import { ServiceInsightWidgetCommonProps } from '../ServiceInsightsTab.interface'; @@ -41,11 +44,18 @@ function TotalDataAssetsWidget({ tab: string; }>(); const [loadingCount, setLoadingCount] = useState(0); + const [hoveredSegment, setHoveredSegment] = useState<{ + name: string; + value: number; + } | null>(null); const [entityCounts, setEntityCounts] = useState< Array<{ name: string; value: number; fill: string; icon: JSX.Element }> >(); + const totalCount = + entityCounts?.reduce((sum, entity) => sum + entity.value, 0) ?? 0; + const getDataAssetsCount = useCallback(async () => { try { setLoadingCount((count) => count + 1); @@ -117,14 +127,14 @@ function TotalDataAssetsWidget({ {entity.name} - - {entity.value} + + {getReadableCountString(entity.value)} ))} -
- +
+ + innerRadius="74%" + outerRadius="99%"> { + if (entityCounts?.[index]) { + setHoveredSegment({ + name: entityCounts[index].name, + value: entityCounts[index].value, + }); + } + }} + onMouseLeave={() => setHoveredSegment(null)} /> - +
+ + {getReadableCountString( + hoveredSegment ? hoveredSegment.value : totalCount + )} + + + {hoveredSegment + ? hoveredSegment.name + : t('label.total-entity', { + entity: t('label.asset-plural'), + })} + +
)} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/total-data-assets-widget.less b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/total-data-assets-widget.less index 4de831932b7..48483b5d5a2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/total-data-assets-widget.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/TotalDataAssetsWidget/total-data-assets-widget.less @@ -30,6 +30,15 @@ background-color: @grey-2; } + .chart-container { + position: relative; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + flex: 0.6; + } + .assets-list-container { flex: 0.5; padding: 16px; @@ -41,6 +50,21 @@ height: fit-content; } + .tooltip-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 8px; + z-index: 10; + pointer-events: none; + text-align: center; + } + .total-data-assets-info { display: flex; align-items: center; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/service-insights-tab.less b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/service-insights-tab.less index 2fda4311ac9..8eed287212d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/service-insights-tab.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceInsights/service-insights-tab.less @@ -17,7 +17,7 @@ height: 100%; background-color: @white; border-radius: @border-radius-sm; - border: none; + border: 1px solid @grey-12; padding: 20px; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/Ingestion.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/Ingestion.component.tsx index 133e0931462..687df439f96 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/Ingestion.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/Ingestion.component.tsx @@ -76,6 +76,8 @@ const Ingestion: React.FC = ({ [CollateAIAgentsWidget] ); + const isCollateSubTabSelected = subTab === ServiceAgentSubTabs.COLLATE_AI; + const { isAirflowAvailable } = useMemo( () => airflowInformation, [airflowInformation] @@ -169,43 +171,45 @@ const Ingestion: React.FC = ({ /> )} - - - - -
- + -
- + + +
+ +
+ + )}
- {subTab === ServiceAgentSubTabs.COLLATE_AI ? ( + {isCollateSubTabSelected ? ( ) : ( { return ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/MetadataAgentsWidget/metadata-agents-widget.less b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/MetadataAgentsWidget/metadata-agents-widget.less index 93adc6ab898..db1570c1ee0 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/MetadataAgentsWidget/metadata-agents-widget.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/MetadataAgentsWidget/metadata-agents-widget.less @@ -58,6 +58,12 @@ tr > td:first-child.name-column { padding-left: 16px; } + .ant-table-thead tr > th { + text-transform: none; + } + .ant-table-cell { + vertical-align: middle; + } } } } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/ingestion.less b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/ingestion.less index ea7d0298d15..1bafb10aae2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/ingestion.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/ingestion.less @@ -17,7 +17,7 @@ height: 100%; background-color: @white; border-radius: @border-radius-sm; - border: none; + border: 1px solid @grey-12; padding: 20px; } diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/ServiceInsightsTab.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/ServiceInsightsTab.constants.ts index 1a398386174..81589705c07 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/ServiceInsightsTab.constants.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/ServiceInsightsTab.constants.ts @@ -19,9 +19,3 @@ export const PLATFORM_INSIGHTS_CHART: SystemChartType[] = [ SystemChartType.TierCoverage, SystemChartType.OwnersCoverage, ]; - -export const SERVICE_INSIGHTS_CHART: SystemChartType[] = [ - ...PLATFORM_INSIGHTS_CHART, - SystemChartType.PIIDistribution, - SystemChartType.TierDistribution, -]; diff --git a/openmetadata-ui/src/main/resources/ui/src/enums/DataInsight.enum.ts b/openmetadata-ui/src/main/resources/ui/src/enums/DataInsight.enum.ts index 096c8e2dbd5..d6c60aca946 100644 --- a/openmetadata-ui/src/main/resources/ui/src/enums/DataInsight.enum.ts +++ b/openmetadata-ui/src/main/resources/ui/src/enums/DataInsight.enum.ts @@ -33,4 +33,8 @@ export enum SystemChartType { OwnersCoverage = 'assets_with_owners', PIIDistribution = 'assets_with_pii_bar', TierDistribution = 'assets_with_tier_bar', + DescriptionSourceBreakdown = 'description_source_breakdown', + TagSourceBreakdown = 'tag_source_breakdown', + TierSourceBreakdown = 'tier_source_breakdown', + DataQualityTestBreakdown = 'data_quality_test_breakdown', } diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json index dd98746c24f..58210dc6984 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Datenverhältnisse", "data-quality": "Datenqualität", "data-quality-test": "Datenqualitätstest", + "data-quality-test-plural": "Datenqualitätstests", "data-quartile-plural": "Datenquartile", "data-range": "Datenbereich", "data-type": "Datentyp", @@ -1337,6 +1338,7 @@ "thursday": "Donnerstag", "tier": "Stufe", "tier-number": "Stufe {{tier}}", + "tier-plural": "Tiers", "tier-plural-lowercase": "stufen", "time": "Zeit", "timeout": "Zeitüberschreitung", @@ -1437,7 +1439,7 @@ "view-plural": "Ansichten", "visit-developer-website": "Entwicklerwebsite aufrufen", "volume-change": "Volumenänderung", - "vs-last-month": "vs. letzter Monat", + "vs-last-week-lowercase": "vs letzte Woche", "wants-to-access-your-account": "möchte auf deinen Account {{username}} zugreifen", "warning": "Warnung", "warning-plural": "Warnungen", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json index 74ff0520ab4..cf520661a25 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json @@ -123,7 +123,7 @@ "auto-tag-pii-uppercase": "Auto Tag PII", "automatically-generate": "Automatically Generate", "average-daily-active-users-on-the-platform": "Average Daily Active Users on the Platform", - "average-entity": "Average {{entity}}", + "average-entity": "Avg. {{entity}}", "average-session": "Avg. Session Time", "awaiting-status": "Awaiting status", "aws-access-key-id": "AWS Access Key ID", @@ -327,6 +327,7 @@ "data-proportion-plural": "Data Proportions", "data-quality": "Data Quality", "data-quality-test": "Data Quality Test", + "data-quality-test-plural": "Data Quality Tests", "data-quartile-plural": "Data Quartiles", "data-range": "Data Range", "data-type": "Data Type", @@ -1337,6 +1338,7 @@ "thursday": "Thursday", "tier": "Tier", "tier-number": "Tier{{tier}}", + "tier-plural": "Tiers", "tier-plural-lowercase": "tiers", "time": "Time", "timeout": "Timeout", @@ -1437,7 +1439,7 @@ "view-plural": "Views", "visit-developer-website": "Visit developer website", "volume-change": "Volume Change", - "vs-last-month": "vs last month", + "vs-last-week-lowercase": "vs last week", "wants-to-access-your-account": "wants to access your {{username}} account", "warning": "Warning", "warning-plural": "Warnings", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json index d94994ec92a..bb20f59a77b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Proporciones de datos", "data-quality": "Tests de calidad", "data-quality-test": "Test de calidad de datos", + "data-quality-test-plural": "Pruebas de Calidad de Datos", "data-quartile-plural": "cuartiles", "data-range": "Rango de datos", "data-type": "Tipo de datos", @@ -1337,6 +1338,7 @@ "thursday": "Jueves", "tier": "Nivel", "tier-number": "Nivel {{tier}}", + "tier-plural": "Niveles", "tier-plural-lowercase": "niveles", "time": "Tiempo", "timeout": "Tiempo de espera", @@ -1437,7 +1439,7 @@ "view-plural": "Vistas", "visit-developer-website": "Visite la web del desarrollador", "volume-change": "Cambios de volumen", - "vs-last-month": "vs mes anterior", + "vs-last-week-lowercase": "vs semana pasada", "wants-to-access-your-account": "quiere acceder a su cuenta {{username}}", "warning": "Advertencia", "warning-plural": "Advertencias", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json index a655d180b93..a9aa93773af 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Proportions des Données", "data-quality": "Qualité des Données", "data-quality-test": "Test de Qualité des Données", + "data-quality-test-plural": "Tests de Qualité des Données", "data-quartile-plural": "Quartiles des Données", "data-range": "Plage de Données", "data-type": "Type de Données", @@ -1337,6 +1338,7 @@ "thursday": "Jeudi", "tier": "Niveau", "tier-number": "Niveau {{tier}}", + "tier-plural": "Niveaux", "tier-plural-lowercase": "niveaux", "time": "Heure", "timeout": "Délai d'Attente", @@ -1437,7 +1439,7 @@ "view-plural": "Vues", "visit-developer-website": "Visiter le site du développeur", "volume-change": "Changement de Volume", - "vs-last-month": "vs mois dernier", + "vs-last-week-lowercase": "vs semaine dernière", "wants-to-access-your-account": "souhaite accéder à votre compte {{username}}", "warning": "Attention", "warning-plural": "Warnings", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json index 33b744c4db5..24f30666bc1 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Proporcións de datos", "data-quality": "Calidade dos datos", "data-quality-test": "Proba de calidade de datos", + "data-quality-test-plural": "Pruebas de Calidad de Datos", "data-quartile-plural": "Cuartís de datos", "data-range": "Rango de datos", "data-type": "Tipo de datos", @@ -1337,6 +1338,7 @@ "thursday": "Xoves", "tier": "Nivel", "tier-number": "Nivel{{tier}}", + "tier-plural": "Niveles", "tier-plural-lowercase": "niveis", "time": "Tempo", "timeout": "Tempo de espera", @@ -1437,7 +1439,7 @@ "view-plural": "Vistas", "visit-developer-website": "Visitar o sitio web do desenvolvedor", "volume-change": "Cambio de volume", - "vs-last-month": "vs mes anterior", + "vs-last-week-lowercase": "vs semana pasada", "wants-to-access-your-account": "quere acceder á túa conta de {{username}}", "warning": "Advertencia", "warning-plural": "Advertencias", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json index 5f4fa583c46..9924a3e9bc1 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json @@ -327,6 +327,7 @@ "data-proportion-plural": "יחסי נתונים", "data-quality": "איכות נתונים", "data-quality-test": "בקרת איכות נתונים", + "data-quality-test-plural": "בדיקות איכות נתונים", "data-quartile-plural": "רביעונים (Quaertiles)", "data-range": "טווח נתונים", "data-type": "סוג עמודה", @@ -1337,6 +1338,7 @@ "thursday": "יום חמישי", "tier": "שכבת מידע", "tier-number": "שכבת מידע {{tier}}", + "tier-plural": "רמות", "tier-plural-lowercase": "שכבות", "time": "זמן", "timeout": "פסק זמן", @@ -1437,7 +1439,7 @@ "view-plural": "תצוגות", "visit-developer-website": "בקר באתר המפתח", "volume-change": "שינוי נפח", - "vs-last-month": "לעומת החודש שעבר", + "vs-last-week-lowercase": "לעומת שבוע שעבר", "wants-to-access-your-account": "רוצה לגשת לחשבון {{username}} שלך", "warning": "אזהרה", "warning-plural": "Warnings", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json index ab559049725..2bd2e79857b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Data Proportions", "data-quality": "Data Quality", "data-quality-test": "データ品質テスト", + "data-quality-test-plural": "データ品質テスト", "data-quartile-plural": "Data Quartiles", "data-range": "Data Range", "data-type": "データ型", @@ -1337,6 +1338,7 @@ "thursday": "木曜日", "tier": "ティア", "tier-number": "ティア{{tier}}", + "tier-plural": "階層", "tier-plural-lowercase": "tiers", "time": "時間", "timeout": "タイムアウト", @@ -1437,7 +1439,7 @@ "view-plural": "Views", "visit-developer-website": "Visit developer website", "volume-change": "Volume Change", - "vs-last-month": "先月比", + "vs-last-week-lowercase": "vs 先週", "wants-to-access-your-account": "wants to access your {{username}} account", "warning": "Warning", "warning-plural": "Warnings", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json index 0c6cf22525c..0ab50774293 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json @@ -327,6 +327,7 @@ "data-proportion-plural": "데이터 비율들", "data-quality": "데이터 품질", "data-quality-test": "데이터 품질 테스트", + "data-quality-test-plural": "데이터 품질 테스트", "data-quartile-plural": "데이터 사분위수들", "data-range": "데이터 범위", "data-type": "데이터 유형", @@ -1337,6 +1338,7 @@ "thursday": "목요일", "tier": "티어", "tier-number": "티어{{tier}}", + "tier-plural": "계층", "tier-plural-lowercase": "티어들", "time": "시간", "timeout": "타임아웃", @@ -1437,7 +1439,7 @@ "view-plural": "보기들", "visit-developer-website": "개발자 웹사이트 방문", "volume-change": "볼륨 변화", - "vs-last-month": "지난 달과 비교", + "vs-last-week-lowercase": "vs 지난주", "wants-to-access-your-account": "{{username}} 계정 접근을 원함", "warning": "경고", "warning-plural": "경고들", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json index e925445c142..63e08b7a8dc 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json @@ -327,6 +327,7 @@ "data-proportion-plural": "डेटा प्रमाण", "data-quality": "डेटा गुणवत्ता", "data-quality-test": "डेटा गुणवत्ता चाचणी", + "data-quality-test-plural": "डेटा गुणवत्ता परीक्षा", "data-quartile-plural": "डेटा चतुर्थांश", "data-range": "डेटा श्रेणी", "data-type": "डेटा प्रकार", @@ -1337,6 +1338,7 @@ "thursday": "गुरुवार", "tier": "स्तर", "tier-number": "स्तर{{tier}}", + "tier-plural": "टियर्स", "tier-plural-lowercase": "स्तर", "time": "वेळ", "timeout": "टाइमआउट", @@ -1437,7 +1439,7 @@ "view-plural": "दृश्ये", "visit-developer-website": "विकसक वेबसाइटला भेट द्या", "volume-change": "खंड बदल", - "vs-last-month": "गेल्या महिन्याच्या विरुद्ध", + "vs-last-week-lowercase": "मागील आठवड्याच्या तुलनेत", "wants-to-access-your-account": "तुमच्या {{username}} खात्यात प्रवेश करू इच्छित आहे", "warning": "इशारा", "warning-plural": "चेतावण्या", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json index 606055d2dc5..f045ddfc425 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Dataproporties", "data-quality": "Datakwaliteit", "data-quality-test": "Datakwaliteitstest", + "data-quality-test-plural": "Data Qualiteits Tests", "data-quartile-plural": "Datakwartielen", "data-range": "Datasbereik", "data-type": "Datatype", @@ -1337,6 +1338,7 @@ "thursday": "donderdag", "tier": "Niveau", "tier-number": "Niveau {{tier}}", + "tier-plural": "Lagen", "tier-plural-lowercase": "niveaus", "time": "Tijd", "timeout": "Time-out", @@ -1437,7 +1439,7 @@ "view-plural": "Views", "visit-developer-website": "Bezoek ontwikkelaarswebsite", "volume-change": "Volumeverandering", - "vs-last-month": "vs vorige maand", + "vs-last-week-lowercase": "vs vorige week", "wants-to-access-your-account": "wil toegang tot je {{username}} account", "warning": "Waarschuwing", "warning-plural": "Waarschuwingen", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json index dfbb9d18f90..126ce0703b8 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json @@ -327,6 +327,7 @@ "data-proportion-plural": "نسبت‌های داده", "data-quality": "کیفیت داده", "data-quality-test": "آزمون کیفیت داده", + "data-quality-test-plural": "Pruebas de Calidad de Datos", "data-quartile-plural": "چهارک‌های داده", "data-range": "محدوده داده", "data-type": "نوع داده", @@ -1337,6 +1338,7 @@ "thursday": "پنج‌شنبه", "tier": "سطح", "tier-number": "سطح {{tier}}", + "tier-plural": "طبقات", "tier-plural-lowercase": "سطوح", "time": "زمان", "timeout": "زمان‌بر", @@ -1437,7 +1439,7 @@ "view-plural": "مشاهدات", "visit-developer-website": "بازدید از وب‌سایت توسعه‌دهنده", "volume-change": "تغییر حجم", - "vs-last-month": "در مقایسه با ماه گذشته", + "vs-last-week-lowercase": "در مقابل هفته گذشته", "wants-to-access-your-account": "می‌خواهد به حساب {{username}} شما دسترسی پیدا کند", "warning": "هشدار", "warning-plural": "هشدارها", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json index e1b11e79c41..b366574d32c 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Proporções de Dados", "data-quality": "Qualidade de Dados", "data-quality-test": "Teste de Qualidade de Dados", + "data-quality-test-plural": "Testes de Qualidade de Dados", "data-quartile-plural": "Quartis de Dados", "data-range": "Intervalo de Dados", "data-type": "Tipo de Dados", @@ -1337,6 +1338,7 @@ "thursday": "Quinta-feira", "tier": "Camada", "tier-number": "Camada{{tier}}", + "tier-plural": "Camadas", "tier-plural-lowercase": "camadas", "time": "Tempo", "timeout": "Tempo Limite", @@ -1437,7 +1439,7 @@ "view-plural": "Visualizações", "visit-developer-website": "Visitar site do desenvolvedor", "volume-change": "Mudança de Volume", - "vs-last-month": "vs mês anterior", + "vs-last-week-lowercase": "vs última semana", "wants-to-access-your-account": "quer acessar sua conta {{username}}", "warning": "Aviso", "warning-plural": "Avisos", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json index 9541e4c6111..310fd8cabc3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Proporções de Dados", "data-quality": "Qualidade de Dados", "data-quality-test": "Teste de Qualidade de Dados", + "data-quality-test-plural": "Testes de Qualidade de Dados", "data-quartile-plural": "Quartis de Dados", "data-range": "Intervalo de Dados", "data-type": "Tipo de Dados", @@ -1337,6 +1338,7 @@ "thursday": "Quinta-feira", "tier": "Camada", "tier-number": "Camada{{tier}}", + "tier-plural": "Camadas", "tier-plural-lowercase": "camadas", "time": "Tempo", "timeout": "Tempo Limite", @@ -1437,7 +1439,7 @@ "view-plural": "Visualizações", "visit-developer-website": "Visitar site do programador", "volume-change": "Mudança de Volume", - "vs-last-month": "vs mês anterior", + "vs-last-week-lowercase": "vs última semana", "wants-to-access-your-account": "quer acessar sua conta {{username}}", "warning": "Aviso", "warning-plural": "Avisos", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json index a22a5f8628f..26478fa85d7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json @@ -327,6 +327,7 @@ "data-proportion-plural": "Распределение данных", "data-quality": "Качество данных", "data-quality-test": "Тест качества данных", + "data-quality-test-plural": "Тесты качества данных", "data-quartile-plural": "Качество данных", "data-range": "Временной интервал", "data-type": "Тип данных", @@ -1337,6 +1338,7 @@ "thursday": "Четверг", "tier": "Уровень", "tier-number": "Уровень{{tier}}", + "tier-plural": "Уровни", "tier-plural-lowercase": "уровни", "time": "Время", "timeout": "Тайм-аут", @@ -1437,7 +1439,7 @@ "view-plural": "Просмотры", "visit-developer-website": "Visit developer website", "volume-change": "Объем изменений", - "vs-last-month": "против прошлого месяца", + "vs-last-week-lowercase": "против прошлой недели", "wants-to-access-your-account": "wants to access your {{username}} account", "warning": "Предупреждение", "warning-plural": "Warnings", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json index 8fd92f94968..612293017d7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json @@ -327,6 +327,7 @@ "data-proportion-plural": "สัดส่วนข้อมูล", "data-quality": "คุณภาพข้อมูล", "data-quality-test": "การทดสอบคุณภาพข้อมูล", + "data-quality-test-plural": "การทดสอบคุณภาพของข้อมูล", "data-quartile-plural": "ควอไทล์ข้อมูล", "data-range": "ช่วงข้อมูล", "data-type": "ประเภทข้อมูล", @@ -1337,6 +1338,7 @@ "thursday": "วันพฤหัสบดี", "tier": "ระดับ", "tier-number": "ระดับ {{tier}}", + "tier-plural": "ชั้น", "tier-plural-lowercase": "ระดับหลายรายการ", "time": "เวลา", "timeout": "หมดเวลา", @@ -1437,7 +1439,7 @@ "view-plural": "การเข้าชม", "visit-developer-website": "เยี่ยมชมเว็บไซต์นักพัฒนา", "volume-change": "การเปลี่ยนแปลงปริมาณ", - "vs-last-month": "เทียบกับเดือนที่แล้ว", + "vs-last-week-lowercase": "เทียบกับสัปดาห์ที่แล้ว", "wants-to-access-your-account": "ต้องการเข้าถึงบัญชี {{username}} ของคุณ", "warning": "คำเตือน", "warning-plural": "คำเตือนหลายรายการ", diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json index f8733eca58d..fd42ed41722 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json @@ -327,6 +327,7 @@ "data-proportion-plural": "数据比例", "data-quality": "数据质控", "data-quality-test": "数据质控测试", + "data-quality-test-plural": "数据质量测试", "data-quartile-plural": "数据四分位数", "data-range": "数据范围", "data-type": "数据类型", @@ -1337,6 +1338,7 @@ "thursday": "星期四", "tier": "分级", "tier-number": "{{tier}}级", + "tier-plural": "层", "tier-plural-lowercase": "分级", "time": "时间", "timeout": "超时", @@ -1437,7 +1439,7 @@ "view-plural": "查看", "visit-developer-website": "Visit developer website", "volume-change": "数据量变化", - "vs-last-month": "与上个月相比", + "vs-last-week-lowercase": "与上周相比", "wants-to-access-your-account": "希望访问您的 {{username}} 账号", "warning": "警告", "warning-plural": "警告", diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/ServiceDetailsPage/ServiceDetailsPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/ServiceDetailsPage/ServiceDetailsPage.tsx index 491abd44573..c2276db26d4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/ServiceDetailsPage/ServiceDetailsPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/ServiceDetailsPage/ServiceDetailsPage.tsx @@ -239,7 +239,7 @@ const ServiceDetailsPage: FunctionComponent = () => { return EntityTabs.AGENTS; } - return getCountLabel(serviceCategory).toLowerCase(); + return EntityTabs.INSIGHTS; }, [tab, serviceCategory, isMetadataService]); const handleSearchChange = useCallback( diff --git a/openmetadata-ui/src/main/resources/ui/src/rest/DataInsightAPI.ts b/openmetadata-ui/src/main/resources/ui/src/rest/DataInsightAPI.ts index e3bc55f7d9b..013b7628801 100644 --- a/openmetadata-ui/src/main/resources/ui/src/rest/DataInsightAPI.ts +++ b/openmetadata-ui/src/main/resources/ui/src/rest/DataInsightAPI.ts @@ -17,7 +17,13 @@ import { ChartAggregateParam } from '../interface/data-insight.interface'; import APIClient from './index'; export interface DataInsightCustomChartResult { - results: Array<{ count: number; day: number; group: string }>; + results: Array<{ + count: number; + day: number; + group: string; + term: string; + metric?: string; + }>; } export const getAggregateChartData = async (params: ChartAggregateParam) => { diff --git a/openmetadata-ui/src/main/resources/ui/src/rest/applicationAPI.ts b/openmetadata-ui/src/main/resources/ui/src/rest/applicationAPI.ts index bd5a497479e..cb49e3c5b42 100644 --- a/openmetadata-ui/src/main/resources/ui/src/rest/applicationAPI.ts +++ b/openmetadata-ui/src/main/resources/ui/src/rest/applicationAPI.ts @@ -14,7 +14,7 @@ import { AxiosResponse } from 'axios'; import { Operation } from 'fast-json-patch'; import { PagingResponse, RestoreRequestType } from 'Models'; import { DataInsightLatestRun } from '../components/Settings/Applications/AppDetails/AppDetails.interface'; -import { App } from '../generated/entity/applications/app'; +import { AgentType, App } from '../generated/entity/applications/app'; import { AppRunRecord } from '../generated/entity/applications/appRunRecord'; import { CreateAppRequest } from '../generated/entity/applications/createAppRequest'; import { PipelineStatus } from '../generated/entity/services/ingestionPipelines/ingestionPipeline'; @@ -25,12 +25,13 @@ import APIClient from './index'; const BASE_URL = '/apps'; type AppListParams = ListParams & { + agentType?: AgentType; offset?: number; startTs?: number; endTs?: number; }; -export const getApplicationList = async (params?: ListParams) => { +export const getApplicationList = async (params?: AppListParams) => { const response = await APIClient.get>(BASE_URL, { params, }); diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/RouterUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/RouterUtils.ts index d86ce874b62..11a719bbf07 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/RouterUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/RouterUtils.ts @@ -662,6 +662,10 @@ export const getServiceDetailsPath = ( path = path.replace(PLACEHOLDER_ROUTE_TAB, tab); } + if (subTab) { + path = path.replace(PLACEHOLDER_ROUTE_SUB_TAB, subTab); + } + return path; }; diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceInsightsTabUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceInsightsTabUtils.tsx index 219b5465b20..22b8af0d771 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceInsightsTabUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceInsightsTabUtils.tsx @@ -10,9 +10,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { first, round, sortBy } from 'lodash'; import { ServiceTypes } from 'Models'; import { SystemChartType } from '../enums/DataInsight.enum'; import { EntityType } from '../enums/entity.enum'; +import { DataInsightCustomChartResult } from '../rest/DataInsightAPI'; import i18n from '../utils/i18next/LocalUtil'; const { t } = i18n; @@ -71,3 +73,45 @@ export const getTitleByChartType = (chartType: SystemChartType) => { return ''; } }; + +export const getPlatformInsightsChartDataFormattingMethod = + ( + chartsData: Record, + startTime: number, + endTime: number + ) => + (chartType: SystemChartType) => { + const summaryChartData = chartsData[chartType]; + + const data = sortBy(summaryChartData.results, 'day'); + + // This is the data for the day 7 days ago + const sevenDaysAgoData = data.find((item) => item.day === startTime)?.count; + // This is the data for the current day + const currentData = data.find((item) => item.day === endTime)?.count; + // This is the data for the earliest day + // separating this out because sometimes the data is not available for all the days + const earliestDayData = first(data)?.count; + + // This is the percentage change for the last 7 days + // This is undefined if the data is not available for all the days + const percentageChangeInSevenDays = + currentData && sevenDaysAgoData + ? round(Math.abs(currentData - sevenDaysAgoData), 2) + : undefined; + + // This is true if the current data is greater than the earliest day data + // This is false if the data is not available for more than 1 day + const isIncreased = + currentData && data.length > 1 + ? currentData > (earliestDayData ?? 0) + : false; + + return { + chartType, + data, + isIncreased, + percentageChange: percentageChangeInSevenDays, + currentPercentage: round(currentData ?? 0, 2), + }; + }; diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts index 77f8582e24e..10259641f2f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts @@ -118,7 +118,6 @@ import { MlModelServiceTypeSmallCaseType, PipelineServiceTypeSmallCaseType, SearchServiceTypeSmallCaseType, - ServiceAgentSubTabs, StorageServiceTypeSmallCaseType, } from '../enums/service.enum'; import { StorageServiceType } from '../generated/entity/data/container'; @@ -743,10 +742,6 @@ class ServiceUtilClassBase { return widgets; } - public getServiceAgentSupportedSubTabs() { - return [ServiceAgentSubTabs.COLLATE_AI, ServiceAgentSubTabs.METADATA]; - } - /** * @param originalEnum will take the enum that should be converted * @returns object with lowercase value diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/date-time/DateTimeUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/date-time/DateTimeUtils.ts index 28d44e95bee..2b44f3c3574 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/date-time/DateTimeUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/date-time/DateTimeUtils.ts @@ -300,3 +300,9 @@ export const getStartOfDayInMillis = (timestamp: number) => export const getEndOfDayInMillis = (timestamp: number) => DateTime.fromMillis(timestamp).toUTC().endOf('day').toMillis(); + +export const getCurrentDayStartGMTinMillis = () => + DateTime.now().setZone('GMT').startOf('day').toMillis(); + +export const getDayAgoStartGMTinMillis = (days: number) => + DateTime.now().setZone('GMT').minus({ days }).startOf('day').toMillis();