diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/components/volumes/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/components/volumes/Messages_fr_FR.json index 71121faae7c8..bef5db0aa92b 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/components/volumes/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/components/volumes/Messages_fr_FR.json @@ -1,10 +1,7 @@ { - "containerTitle": "Datastore S3, Datastore Git ou Object Storage OVHcloud", + "containerTitle": "Conteneur S3, Dépots Git privés et Object Storage OVHcloud", "containerFieldLabel": "Conteneurs", "containerDescription": "Datastore S3, Datastore Git ou Object Storage OVHcloud", - "noContainerDescription": "Vous n'avez pas configurés de Datastore S3 ou Git ni d'Object Storage OVHcloud.", - "datastoreLinkLabel": "Configurer un Datastore.", - "objectStorageLinkLabel": "Configurer un Object Storage OVHcloud.", "containerFieldPlaceholder": "Séléctionner un conteneur", "gitBranchFieldLabel": "Branch Git", "mountDirectoryFieldLabel": "Répertoire de montage", @@ -18,7 +15,7 @@ "duplicateMountPathError": "Ce répertoire de montage existe déjà", "mountPathError": "Ce répertoire de montage est réservé", "mountPathErrorFormat": "Format incorrect (ex : /files/test)", - "publicGitRepoTitle": "Dépots GIT public", + "publicGitRepoTitle": "Dépots GIT publics", "publicGitUrlFieldLabel": "URL", "gitUrlErrorFormat": "Format incorrect (ex: https://publicRepoGit.git)", "numberOfConfiguredVolumes_zero": "{{count}} volumes configurés", diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/create/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/create/Messages_fr_FR.json index 5970ea5584da..45283fc53cf3 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/create/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/create/Messages_fr_FR.json @@ -35,8 +35,10 @@ "formButtonAdvancedConfiguration": "Configuration avancée", "fieldVolumesLabel": "Volumes", "summaryFieldVolumesLabel": "Volumes:", - "fieldVolumeDescription": "Vous pouvez attacher des conteneurs S3 ou GIT, Object Storage OVHcloud ainsi que des des dépôts Git public à votre notebook. Une fois attachés, ceux-ci seront temporairement chargés et mis en cache près de votre instance afin de réduire la latence et d’améliorer les performances. Une bonne pratique est d’attacher un conteneur avec vos données entrantes et un autre avec vos données sortantes.", - "fieldVolumeLink": "En savoir plus le stockage de données.", + "fieldVolumeDescription1": "Si vous le souhaitez, vous pouvez attacher des conteneurs Swift, S3 ainsi que des dépôt Git privés ou publics à votre notebook que nous vous recommandons de configurer préalablement via AI Dashboard.", + "fieldVolumeDashboardLink": "Configurer un datastore", + "fieldVolumeDescription2": "Une fois attachés, ceux-ci seront temporairement chargés et mis en cache près de votre instance afin de réduire la latence et d’améliorer les performances. Une bonne pratique est d’attacher un conteneur avec vos données entrantes et un autre avec vos données sortantes.", + "fieldVolumeLink": "En savoir plus le stockage de données", "summaryFieldVolumes_one": "{{count}} volume configuré", "summaryFieldVolumes_other": "{{count}} volumes configurés", "fieldConfigurationLabelsLabel": "Labels", diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/backups/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/backups/Messages_fr_FR.json index f9d12fdead49..c4942aebca59 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/backups/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/backups/Messages_fr_FR.json @@ -1,7 +1,7 @@ { "breadcrumb": "Backups", "title": "Sauvegardes", - "description": "Vous trouverez ci-dessous la liste de vos sauvegardes. Vous pouvez créer un nouveau notebook à partir du chacune d'entre elles", + "description": "Vous trouverez ci-dessous la liste des sauvegardes de vos notebooks. Il est possible de créer un nouveau notebook à partir de chacune d'entre elles.", "tableHeaderId": "Id", "tableHeaderCreationDate": "Date de création", "tableHeaderUpdateDate": "Date de modification", diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/containers/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/containers/Messages_fr_FR.json index 48039a8c2dd3..9ab7ee3976de 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/containers/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/containers/Messages_fr_FR.json @@ -13,7 +13,8 @@ "tableActionSyncData": "Synchroniser manuellement les données", "tableWithCache": "Actif", "tableWithoutCache": "Inactif", - "synchDataButtonHelper": "La synchronisation des données est possible seulement lorsque le notebook est en statut \"Echec de synchronisation\" (seulement pour le type push) ou \"En service\"", + "synchDataButtonHelper1": "La synchronisation des données (push et pull) n'est disponible que lorsque le notebook est en statut", + "synchDataButtonHelper2": "Il est également possible de lancer une synchronisation de type push lorsque le notebook affiche le statut", "permission_RO": "Lecture Seule", "permission_RW": "Lecture & Ecriture", "permission_RWD": "Lecture & Ecriture & Suppression", diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/logs/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/logs/Messages_fr_FR.json index b9126a64f1b2..38557b294f94 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/logs/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/notebooks/notebook/logs/Messages_fr_FR.json @@ -1,6 +1,6 @@ { "breadcrumb": "Logs", "title": "Logs", - "description": "Pour vous aider à suivre et à piloter votre notebook, vous trouverez les derniers événements (logs) ci-dessous, quasiment en direct.", + "description": "Vous trouverez ici l'ensemble des logs de votre notebook afin de vous aider à suivre et monitorer son évolution.", "autoRefreshInputLabel": "Auto-Refresh" } diff --git a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/onboarding/Messages_fr_FR.json b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/onboarding/Messages_fr_FR.json index fb9d99ea7f30..11ba607a18ae 100644 --- a/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/onboarding/Messages_fr_FR.json +++ b/packages/manager/apps/pci-ai-notebooks/public/translations/pci-ai-notebooks/onboarding/Messages_fr_FR.json @@ -5,15 +5,12 @@ "description3": "Vous êtes data scientist ou développeur et souhaitez lancer un notebook en quelques minutes? Accédez rapidement à Jupyter ou VS Code et démarrez-le instantanément avec les ressources nécessaires, grâce à notre solution AI Notebooks. Pour développer votre activité, vous bénéficiez également d’un accès utilisateur sécurisé, de l’utilisation simplifiée de vos données et des plus grands frameworks d’intelligence artificielle (TensorFlow, PyTorch, Hugging Face ou encore Scikit-learn).", "createNotebookButton": "Créer un Notebook", "cardTutotitle": "Tutoriels", + "cardGuidetitle": "Guides", "cardLink": "En savoir plus", "cardTuto1Description": "Documentation complète AI Notebooks", "cardTuto1Content": "Retrouvez toute la documentation d'AI Notebooks.", - "cardTuto2Description": "Définition AI Notebooks", + "cardTuto2Description": "Caractéristiques, capacités et limites", "cardTuto2Content": "Découvrez ce qu'est un AI Notebook chez OVHcloud.", "cardTuto3Description": "Démarrer avec AI Notebooks", - "cardTuto3Content": "Apprenez comment démarrer votre Notebook rapidement dans votre espace client.", - "cardTuto4Description": "Partager un Notebook", - "cardTuto4Content": "Apprenez comment partager un Notebook avec d'autres développeurs.", - "cardTuto5Description": "Accéder à vos datas depuis votre object storage", - "cardTuto5Content": "Découvrez comment accéder à vos datas de Notebook avec votre object storage." + "cardTuto3Content": "Apprenez comment démarrer votre Notebook rapidement depuis votre espace client, ligne de commande ou API." } diff --git a/packages/manager/apps/pci-ai-notebooks/src/__tests__/helpers/mocks/suggestion.ts b/packages/manager/apps/pci-ai-notebooks/src/__tests__/helpers/mocks/suggestion.ts index 107085cd1f78..8bbbf98097cd 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/__tests__/helpers/mocks/suggestion.ts +++ b/packages/manager/apps/pci-ai-notebooks/src/__tests__/helpers/mocks/suggestion.ts @@ -28,3 +28,32 @@ export const mockedSuggestion: Suggestions[] = [ unsecureHttp: false, }, ]; + +export const mockedTempSuggestionForOrderFunnel: Suggestions[] = [ + { + region: 'GRA', + ressources: { + nb: 1, + flavor: 'ai1-1-cpu', + }, + framework: { + id: 'one-for-all', + version: 'v98-ovh.beta.1', + }, + editorId: 'jupyterlab', + unsecureHttp: false, + }, + { + region: 'BHS', + ressources: { + nb: 1, + flavor: 'ai1-le-1-gpu', + }, + framework: { + id: 'one-for-all', + version: 'v98-ovh.beta.1', + }, + editorId: 'jupyterlab', + unsecureHttp: false, + }, +]; diff --git a/packages/manager/apps/pci-ai-notebooks/src/components/guides/Guides.component.tsx b/packages/manager/apps/pci-ai-notebooks/src/components/guides/Guides.component.tsx index 6cba69f1983f..b29d2f73a186 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/components/guides/Guides.component.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/components/guides/Guides.component.tsx @@ -19,7 +19,7 @@ import { useGetGuides } from '@/hooks/api/ai/guide/useGetGuides.hook'; import { useLocale } from '@/hooks/useLocale'; interface GuidesProps { - section?: string; + section?: string[]; onGuideClick?: (guide: ai.Guide) => void; } const Guides = ({ section, onGuideClick }: GuidesProps) => { @@ -32,6 +32,7 @@ const Guides = ({ section, onGuideClick }: GuidesProps) => { section, locale.toLocaleLowerCase().replace('_', '-'), ); + // open the menu on cmd + j useEffect(() => { const down = (e: KeyboardEvent) => { @@ -44,6 +45,7 @@ const Guides = ({ section, onGuideClick }: GuidesProps) => { document.addEventListener('keydown', down); return () => document.removeEventListener('keydown', down); }, []); + // open a guide in a new tab const openGuide = (guide: ai.Guide) => { if (onGuideClick) { diff --git a/packages/manager/apps/pci-ai-notebooks/src/components/order/region/RegionSelect.component.tsx b/packages/manager/apps/pci-ai-notebooks/src/components/order/region/RegionSelect.component.tsx index bf144efcf786..0f627732ea67 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/components/order/region/RegionSelect.component.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/components/order/region/RegionSelect.component.tsx @@ -27,6 +27,7 @@ const RegionsSelect = React.forwardRef( onChange(region.id)} value={region.id} checked={region.id === value} diff --git a/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.component.tsx b/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.component.tsx index 9c9ddf346a99..d17ae2c65708 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.component.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.component.tsx @@ -1,9 +1,7 @@ import React from 'react'; -import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { DataStoresWithContainers } from '@/hooks/api/ai/datastore/useGetDatastoresWithContainers.hook'; import { OrderVolumes } from '@/types/orderFunnel'; -import OvhLink from '@/components/links/OvhLink.component'; import PublicGitForm from './PublicGitForm.component'; import ContainerForm from './ContainerForm.component'; @@ -15,48 +13,27 @@ interface VolumesFormProps { } const VolumeForm = React.forwardRef( - ({ configuredVolumesList, selectedVolumesList, onChange }) => { + ({ configuredVolumesList, selectedVolumesList, onChange }, ref) => { const { t } = useTranslation('pci-ai-notebooks/components/volumes'); - const { projectId } = useParams(); return ( <> -
{t('containerTitle')}
- {configuredVolumesList.length > 0 ? ( - { - onChange(newVolumeList); - }} - /> - ) : ( -
-

{t('noContainerDescription')}

-
- - {t('datastoreLinkLabel')} - - - {t('objectStorageLinkLabel')} - -
-
+ {configuredVolumesList.length > 0 && ( + <> +
{t('containerTitle')}
+ { + onChange(newVolumeList); + }} + /> + )}
{t('publicGitRepoTitle')}
{ onChange(newVolumeList); diff --git a/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.spec.tsx b/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.spec.tsx index acfe2f830a05..0593e30ab068 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.spec.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/components/order/volumes/VolumesForm.spec.tsx @@ -43,42 +43,6 @@ describe('Volume Form component', () => { }); const onChange = vi.fn(); - it('renders volume form should display dashboard, object storage link and public git form', async () => { - render( - , - ); - await waitFor(() => { - // should not be in the DOM as not Datastore configured - expect( - screen.queryByTestId('datastore-form-container'), - ).not.toBeInTheDocument(); - expect( - screen.queryByTestId('datastore-add-button'), - ).not.toBeInTheDocument(); - expect(screen.queryByTestId('datastore-list')).not.toBeInTheDocument(); - // should be in the DOM - expect( - screen.getByTestId('no-datastore-info-container'), - ).toBeInTheDocument(); - expect( - screen.getByTestId('dashboard-datastore-link'), - ).toBeInTheDocument(); - expect(screen.getByTestId('object-storage-link')).toBeInTheDocument(); - expect( - screen.getByTestId('public-git-form-container'), - ).toBeInTheDocument(); - expect(screen.getByTestId('public-git-add-button')).toBeInTheDocument(); - expect(screen.getByTestId('public-git-list')).toBeInTheDocument(); - expect( - screen.getByTestId('volumes-configured-labels'), - ).toBeInTheDocument(); - }); - }); - it('renders volume form should display datastore form and public git form', async () => { render( 0) { + filters.push( + section.length === 1 + ? `section:eq=${section[0]}` + : `section:in=${section.join(',')}`, + ); } + if (lang) { filters.push(`lang:eq=${lang}`); } + if (filters.length > 0) { headers['X-Pagination-Filter'] = filters.join('&'); } diff --git a/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/guide.spec.tsx b/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/guide.spec.tsx index dbed300e4884..98457c08df55 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/guide.spec.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/guide.spec.tsx @@ -24,11 +24,13 @@ describe('Guides functions', () => { expect(apiClient.v6.get).not.toHaveBeenCalled(); await getGuides({ projectId: 'projectId', + lang: 'fr-FR', }); expect(apiClient.v6.get).toHaveBeenCalledWith( '/cloud/project/projectId/ai/guides', { headers: { + 'X-Pagination-Filter': 'lang:eq=fr-FR', 'X-Pagination-Mode': 'CachedObjectList-Pages', 'X-Pagination-Size': '50000', }, @@ -40,7 +42,7 @@ describe('Guides functions', () => { expect(apiClient.v6.get).not.toHaveBeenCalled(); await getGuides({ projectId: 'projectId', - section: 'cli', + section: ['cli'], lang: 'fr-FR', }); expect(apiClient.v6.get).toHaveBeenCalledWith( diff --git a/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/notebook/suggestions.api.ts b/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/notebook/suggestions.api.ts index 45cb4539b74d..77c4fb5a864f 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/notebook/suggestions.api.ts +++ b/packages/manager/apps/pci-ai-notebooks/src/data/api/ai/notebook/suggestions.api.ts @@ -1,13 +1,13 @@ -import { apiClient } from '@ovh-ux/manager-core-api'; -import { PCIAi } from '../..'; -import { Suggestions } from '@/types/orderFunnel'; -import { mockedSuggestion } from '@/__tests__/helpers/mocks/suggestion'; +// import { apiClient } from '@ovh-ux/manager-core-api'; +// import { PCIAi } from '../..'; +// import { Suggestions } from '@/types/orderFunnel'; +import { mockedTempSuggestionForOrderFunnel } from '@/__tests__/helpers/mocks/suggestion'; -export const getSuggestions = async ({ projectId }: PCIAi) => { +export const getSuggestions = async (/* { projectId }: PCIAi */) => { /* apiClient.v6 .get(`/cloud/project/${projectId}/ai/notebook/suggestions`) .then((res) => res.data as Suggestions[]); */ - return mockedSuggestion; + return mockedTempSuggestionForOrderFunnel; }; diff --git a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/guide/useGetGuides.hook.tsx b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/guide/useGetGuides.hook.tsx index 78540601f665..141653c7bae6 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/guide/useGetGuides.hook.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/guide/useGetGuides.hook.tsx @@ -5,11 +5,11 @@ import { useQueryImmediateRefetch } from '../../useImmediateRefetch'; export function useGetGuides( projectId: string, - section?: string, + section?: string[], lang?: string, options: Omit = {}, ) { - const queryKey = [projectId, 'ai', 'guides', section]; + const queryKey = [projectId, 'ai', 'guides', section, lang]; return useQueryImmediateRefetch({ queryKey, queryFn: () => diff --git a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.hook.tsx b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.hook.tsx index 6aeb5484df44..de7af52923b2 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.hook.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.hook.tsx @@ -11,7 +11,7 @@ export function useGetSuggestions( const queryKey = [projectId, 'ai', 'notebook', 'suggestions']; return useQueryImmediateRefetch({ queryKey, - queryFn: () => getSuggestions({ projectId }), + queryFn: () => getSuggestions(/* { projectId } */), ...options, }) as UseQueryResult; } diff --git a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.spec.tsx b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.spec.tsx index c506dc9dbe8d..c276f3566e3b 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.spec.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/hooks/api/ai/notebook/useGetSuggestions.spec.tsx @@ -22,9 +22,7 @@ describe('useGetSuggestions', () => { await waitFor(() => { expect(result.current.isSuccess).toBe(true); expect(result.current.data).toEqual(mockedSuggestion); - expect(suggestionApi.getSuggestions).toHaveBeenCalledWith({ - projectId, - }); + expect(suggestionApi.getSuggestions).toHaveBeenCalledWith(); }); }); }); diff --git a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/Notebooks.page.tsx b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/Notebooks.page.tsx index c2b8801755e4..14dd5beb4016 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/Notebooks.page.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/Notebooks.page.tsx @@ -5,6 +5,7 @@ import { useUserActivityContext } from '@/contexts/UserActivityContext'; import { useGetNotebooks } from '@/hooks/api/ai/notebook/useGetNotebooks.hook'; import Guides from '@/components/guides/Guides.component'; import NotebooksList from './_components/NotebooksListTable.component'; +import { allGuidesSections } from '@/configuration/guide'; const Notebooks = () => { const { t } = useTranslation('pci-ai-notebooks/notebooks'); @@ -22,7 +23,7 @@ const Notebooks = () => { className="flex justify-between w-full items-center" >

{t('title')}

- + diff --git a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/backups/Backups.page.tsx b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/backups/Backups.page.tsx index 00e24b50a5f2..14a3e5f5d6b8 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/backups/Backups.page.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/backups/Backups.page.tsx @@ -27,7 +27,7 @@ const Backups = () => { return ( <> -

{t('title')}

+

{t('title')}

{t('description')}

{backupsQuery.isSuccess ? ( diff --git a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/containers/Containers.page.tsx b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/containers/Containers.page.tsx index 2e2969229277..f48f1595beeb 100644 --- a/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/containers/Containers.page.tsx +++ b/packages/manager/apps/pci-ai-notebooks/src/pages/notebooks/[notebookId]/containers/Containers.page.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'react-i18next'; -import { ArrowUpRightFromSquare, Info } from 'lucide-react'; +import { ArrowUpRightFromSquare } from 'lucide-react'; import { Outlet, useNavigate } from 'react-router-dom'; import { useNotebookData } from '../Notebook.context'; import A from '@/components/links/A.component'; @@ -8,6 +8,10 @@ import VolumesList from './_components/VolumesListTable.component'; import * as ai from '@/types/cloud/project/ai'; import { isDataSyncNotebook } from '@/lib/notebookHelper'; import BreadcrumbItem from '@/components/breadcrumb/BreadcrumbItem.component'; +import Guides from '@/components/guides/Guides.component'; +import { GUIDES, GuideSections, getGuideUrl } from '@/configuration/guide'; +import { useLocale } from '@/hooks/useLocale'; +import NotebookStatusBadge from '../../_components/NotebookStatusBadge.component'; export function breadcrumb() { return ( @@ -20,26 +24,43 @@ export function breadcrumb() { const Containers = () => { const { notebook } = useNotebookData(); + const locale = useLocale(); const navigate = useNavigate(); const { t } = useTranslation( 'pci-ai-notebooks/notebooks/notebook/containers', ); - const volumeInfoLink = 'https://docs.ovh.com/gb/en/publiccloud/ai/data/'; return ( <> -

{t('attachedDataTitle')}

+
+

{t('attachedDataTitle')}

+ +

{t('attachedDataDescription')}

- +

{t('attachedDataInfoLink')}

{!isDataSyncNotebook(notebook.status.state) && ( -
- -

{t('synchDataButtonHelper')}

-
+ <> +
+

{t('synchDataButtonHelper1')}

+ +
+
+

{t('synchDataButtonHelper2')}

+ +
+ )}
- -