diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json index b3396e6c75e14..ae32f5ccd8266 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "اختر نوع الموَّصل", "standardFields": "حقول قياسية" }, - "noRowMessage": "لا توجد موَّصلات متاحة", + "nothingFound": { + "title": "لا توجد موَّصلات متاحة" + }, "searchPlaceholder": "البحث عن موَّصلات", "test": "اختبار الموَّصل", "testDisabled": "اختبار الموَّصل معطل. تواصل مع المسؤول لتفعيله.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/de/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/de/admin.json index f8d2194b0b571..03fe6bcf6d7ad 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/de/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/de/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "Verbindungstyp auswählen", "standardFields": "Standardfelder" }, - "noRowMessage": "Keine Verbindungen gefunden", + "nothingFound": { + "title": "Keine Verbindungen gefunden!" + }, "searchPlaceholder": "Verbindungen suchen", "test": "Verbindung testen", "testDisabled": "Das Testen von Verbindungen ist deaktiviert. Der Administrator kann via Konfiguration das Testen freischalten.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/en/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/en/admin.json index aeb93b92c76fd..8dfc0ec64c635 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/en/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/en/admin.json @@ -39,7 +39,12 @@ "selectConnectionType": "Select Connection Type", "standardFields": "Standard Fields" }, - "noRowMessage": "No connections found", + "nothingFound": { + "title": "No connection found!", + "description": "Connections defined via environment variables or secrets managers are not listed here.", + "learnMore": "These are resolved at runtime and are not visible in the UI.", + "documentationLink": "Learn more in the Airflow documentation." + }, "searchPlaceholder": "Search Connections", "test": "Test Connection", "testDisabled": "Test connection feature is disabled. Please contact an administrator to enable it.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/fr/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/fr/admin.json index 15edd6d9aad58..2c0592320df9c 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/fr/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/fr/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "Sélectionner le Type de Connexion", "standardFields": "Champs Standards" }, - "noRowMessage": "Aucune connexion trouvée", + "nothingFound": { + "title": "Aucune connexion trouvée!" + }, "searchPlaceholder": "Rechercher les connexions", "test": "Test la connexion", "testDisabled": "Le test de connexion est désactivé. Veuillez contacter un administrateur pour l'activer.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/he/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/he/admin.json index 30bc908225b07..adadffd1961e3 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/he/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/he/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "בחר סוג חיבור", "standardFields": "שדות סטנדרטיים" }, - "noRowMessage": "לא נמצאו חיבורים", + "nothingFound": { + "title": "לא נמצאו חיבורים" + }, "searchPlaceholder": "חפש חיבורים", "test": "בדוק חיבור", "testDisabled": "אפשרות זו אינה זמינה. פנו למנהל המערכת להפעלתה", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ko/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/ko/admin.json index ee6c8a89c03ef..c1fd0f24c7381 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ko/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ko/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "연결 유형 선택", "standardFields": "기본 필드" }, - "noRowMessage": "연결을 찾을 수 없습니다.", + "nothingFound": { + "title": "연결을 찾을 수 없습니다." + }, "searchPlaceholder": "연결 검색", "test": "연결 테스트", "testDisabled": "연결 테스트 기능이 비활성화되어 있습니다. 관리자에게 활성화를 요청하세요.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pl/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pl/admin.json index 909a37c294d37..573c185aa126f 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pl/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pl/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "Wybierz typ połączenia", "standardFields": "Standardowe pola" }, - "noRowMessage": "Nie znaleziono połączeń", + "nothingFound": { + "title": "Nie znaleziono połączeń!" + }, "searchPlaceholder": "Szukaj połączeń", "test": "Test połączenia", "testDisabled": "Testowanie połączeń wyłączone. Skontaktuj się z administratorem, aby je włączyć.", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/admin.json index e64f103e5bd33..c8b9242d12179 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/admin.json @@ -39,7 +39,9 @@ "selectConnectionType": "選擇連線類型", "standardFields": "標準欄位" }, - "noRowMessage": "找不到連線", + "nothingFound": { + "title": "找不到連線" + }, "searchPlaceholder": "搜尋連線", "test": "測試連線", "testDisabled": "測試連線功能已停用。請聯繫管理員以啟用。", diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx b/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx index 8145c6744d047..5a33e52975ce7 100644 --- a/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx +++ b/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx @@ -40,6 +40,7 @@ import AddConnectionButton from "./AddConnectionButton"; import DeleteConnectionButton from "./DeleteConnectionButton"; import DeleteConnectionsButton from "./DeleteConnectionsButton"; import EditConnectionButton from "./EditConnectionButton"; +import { NothingFoundInfo } from "./NothingFoundInfo"; import TestConnectionButton from "./TestConnectionButton"; export type ConnectionBody = { @@ -198,6 +199,7 @@ export const Connections = () => { isFetching={isFetching} isLoading={isLoading} modelName={translate("common:admin.Connections")} + noRowsMessage={} onStateChange={setTableURLState} total={data?.total_entries ?? 0} /> diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/NothingFoundInfo.tsx b/airflow-core/src/airflow/ui/src/pages/Connections/NothingFoundInfo.tsx new file mode 100644 index 0000000000000..4d1388c827413 --- /dev/null +++ b/airflow-core/src/airflow/ui/src/pages/Connections/NothingFoundInfo.tsx @@ -0,0 +1,45 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { Box, Text, Link, Stack } from "@chakra-ui/react"; +import { useTranslation } from "react-i18next"; + +import { useVersionServiceGetVersion } from "openapi/queries"; + +export const NothingFoundInfo = () => { + const { t: translate } = useTranslation("admin"); + const { data } = useVersionServiceGetVersion(); + const docsLink = `https://airflow.apache.org/docs/apache-airflow/${data?.version}/howto/connection.html#visibility-in-ui-and-cli`; + + return ( + + + + {translate("connections.nothingFound.title")} + + {translate("connections.nothingFound.description")} + + {translate("connections.nothingFound.learnMore")}{" "} + + {translate("connections.nothingFound.documentationLink")} + + + + + ); +};