diff --git a/react/package.json b/react/package.json
index 6c5429c1c8..2714898711 100644
--- a/react/package.json
+++ b/react/package.json
@@ -10,6 +10,7 @@
"@cloudscape-design/board-components": "3.0.60",
"@codemirror/language": "^6.10.2",
"@melloware/react-logviewer": "^5.2.4",
+ "@react-hook/resize-observer": "^2.0.2",
"@storybook/test": "^8.2.8",
"@tanstack/react-query": "^5.51.15",
"@testing-library/jest-dom": "^6.4.8",
diff --git a/react/pnpm-lock.yaml b/react/pnpm-lock.yaml
index 900a3696b7..4f20d0efe5 100644
--- a/react/pnpm-lock.yaml
+++ b/react/pnpm-lock.yaml
@@ -34,6 +34,9 @@ importers:
'@melloware/react-logviewer':
specifier: ^5.2.4
version: 5.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-hook/resize-observer':
+ specifier: ^2.0.2
+ version: 2.0.2(react@18.3.1)
'@storybook/test':
specifier: ^8.2.8
version: 8.2.8(@types/jest@29.5.12)(jest@27.5.1(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)))(storybook@8.2.8(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
@@ -211,7 +214,7 @@ importers:
version: 5.51.15(eslint@8.57.0)(typescript@5.5.4)
'@testing-library/user-event':
specifier: ^14.5.2
- version: 14.5.2(@testing-library/dom@10.1.0)
+ version: 14.5.2(@testing-library/dom@9.3.4)
'@types/react-copy-to-clipboard':
specifier: ^5.0.7
version: 5.0.7
@@ -1974,6 +1977,21 @@ packages:
react: '>=16.9.0'
react-dom: '>=16.9.0'
+ '@react-hook/latest@1.0.3':
+ resolution: {integrity: sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==}
+ peerDependencies:
+ react: '>=16.8'
+
+ '@react-hook/passive-layout-effect@1.2.1':
+ resolution: {integrity: sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==}
+ peerDependencies:
+ react: '>=16.8'
+
+ '@react-hook/resize-observer@2.0.2':
+ resolution: {integrity: sha512-tzKKzxNpfE5TWmxuv+5Ae3IF58n0FQgQaWJmcbYkjXTRZATXxClnTprQ2uuYygYTpu1pqbBskpwMpj6jpT1djA==}
+ peerDependencies:
+ react: '>=18'
+
'@remix-run/router@1.19.0':
resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==}
engines: {node: '>=14.0.0'}
@@ -10951,6 +10969,20 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ '@react-hook/latest@1.0.3(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
+ '@react-hook/passive-layout-effect@1.2.1(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
+ '@react-hook/resize-observer@2.0.2(react@18.3.1)':
+ dependencies:
+ '@react-hook/latest': 1.0.3(react@18.3.1)
+ '@react-hook/passive-layout-effect': 1.2.1(react@18.3.1)
+ react: 18.3.1
+
'@remix-run/router@1.19.0': {}
'@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.18.0(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.30.0)(@lezer/common@1.2.1))(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.30.0)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/lr@1.4.2)':
diff --git a/react/src/App.tsx b/react/src/App.tsx
index 23d67e5335..7ce04dd358 100644
--- a/react/src/App.tsx
+++ b/react/src/App.tsx
@@ -28,7 +28,7 @@ const ServingPage = React.lazy(() => import('./pages/ServingPage'));
const EndpointDetailPage = React.lazy(
() => import('./pages/EndpointDetailPage'),
);
-// const SummaryPage = React.lazy(() => import('./pages/SummaryPage'));
+const StartPage = React.lazy(() => import('./pages/StartPage'));
const EnvironmentPage = React.lazy(() => import('./pages/EnvironmentPage'));
const MyEnvironmentPage = React.lazy(() => import('./pages/MyEnvironmentPage'));
const StorageHostSettingPage = React.lazy(
@@ -100,18 +100,23 @@ const router = createBrowserRouter([
),
children: [
{
- path: '/',
- element: ,
+ path: '/start',
+ element: (
+
+
+
+ ),
+ handle: { labelKey: 'webui.menu.Start' },
},
{
//for electron dev mode
path: '/build/electron-app/app/index.html',
- element: ,
+ element: ,
},
{
//for electron prod mode
path: '/app/index.html',
- element: ,
+ element: ,
},
{
path: '/summary',
@@ -126,7 +131,6 @@ const router = createBrowserRouter([
style={{ marginBottom: token.paddingContentVerticalLG }}
closable
/>
- {/* */}
>
);
},
diff --git a/react/src/components/ActionItemContent.tsx b/react/src/components/ActionItemContent.tsx
new file mode 100644
index 0000000000..ca80efa205
--- /dev/null
+++ b/react/src/components/ActionItemContent.tsx
@@ -0,0 +1,108 @@
+import Flex from './Flex';
+import useResizeObserver from '@react-hook/resize-observer';
+import { Button, Divider, Typography, theme } from 'antd';
+import { useRef, useState } from 'react';
+
+interface StartItemContentProps {
+ title: string;
+ description?: string;
+ icon?: React.ReactNode;
+ buttonText: string;
+ onClick?: () => void;
+ themeColor?: string;
+ iconBgColor?: string;
+}
+
+const ActionItemContent: React.FC = ({
+ title,
+ description,
+ icon,
+ buttonText,
+ onClick,
+ themeColor,
+ iconBgColor,
+}) => {
+ const { token } = theme.useToken();
+ const [needScroll, setNeedScroll] = useState(false);
+ const containerRef = useRef(null);
+
+ useResizeObserver(containerRef, (entry) => {
+ entry.contentRect.width <= 220 ? setNeedScroll(true) : setNeedScroll(false);
+ });
+
+ return (
+
+
+
+ {icon}
+
+
+
+ {title}
+
+
+
+ {!needScroll && description}
+
+
+
+ {description && (
+
+ )}
+
+
+
+
+
+ );
+};
+
+export default ActionItemContent;
diff --git a/react/src/components/BAIBoard.tsx b/react/src/components/BAIBoard.tsx
index 4f75ed034d..e0ae218e44 100644
--- a/react/src/components/BAIBoard.tsx
+++ b/react/src/components/BAIBoard.tsx
@@ -1,7 +1,6 @@
-import Flex from './Flex';
import Board, { BoardProps } from '@cloudscape-design/board-components/board';
import BoardItem from '@cloudscape-design/board-components/board-item';
-import { Skeleton, Typography } from 'antd';
+import { Skeleton } from 'antd';
import { createStyles } from 'antd-style';
import { Suspense } from 'react';
@@ -23,29 +22,31 @@ const useStyles = createStyles(({ css }) => {
board: css`
${defaultBoard}
`,
- disableCustomize: css`
- ${defaultBoard}
- .bai_board_handle {
+ disableResize: css`
+ .bai_board_resizer {
display: none !important;
}
- .bai_board_resizer {
+ `,
+ disableMove: css`
+ .bai_board_handle {
display: none !important;
}
.bai_board_header {
- height: var(--token-boardHeaderHeight, 55px) !important;
+ display: none !important;
}
`,
boardItems: css`
& > div:first-child {
- border: 1px solid var(--token-colorBorder) !important ;
+ border: none !important ;
border-radius: var(--token-borderRadius) !important ;
background-color: var(--token-colorBgContainer) !important ;
}
& > div:first-child > div:first-child > div:first-child {
- border-bottom: 1px solid var(--token-colorBorder) !important;
margin-bottom: var(--token-margin);
background-color: var(--token-colorBgContainer) !important ;
+ position: absolute;
+ z-index: 1;
}
`,
};
@@ -56,19 +57,27 @@ interface BAICustomizableGridProps {
onItemsChange: (
event: CustomEvent>,
) => void;
- customizable?: boolean;
+ resizable?: boolean;
+ movable?: boolean;
}
const BAIBoard: React.FC = ({
items: parsedItems,
- customizable = false,
+ resizable = false,
+ movable = false,
...BoardProps
}) => {
const { styles } = useStyles();
+
+ const boardStyles = [
+ styles.board,
+ !movable && styles.disableMove,
+ !resizable && styles.disableResize,
+ ].join(' ');
+
return (
{
return (
@@ -82,11 +91,6 @@ const BAIBoard: React.FC = ({
resizeHandleAriaLabel: '',
resizeHandleAriaDescription: '',
}}
- header={
-
- {item.data.title}
-
- }
>
}>
{item.data.content}
diff --git a/react/src/components/MainLayout/WebUISider.tsx b/react/src/components/MainLayout/WebUISider.tsx
index f8e749f10d..a20c668e4a 100644
--- a/react/src/components/MainLayout/WebUISider.tsx
+++ b/react/src/components/MainLayout/WebUISider.tsx
@@ -24,6 +24,7 @@ import {
FileDoneOutlined,
HddOutlined,
InfoCircleOutlined,
+ PlayCircleOutlined,
SolutionOutlined,
ToolOutlined,
UserOutlined,
@@ -85,6 +86,11 @@ const WebUISider: React.FC = (props) => {
const primaryColors = usePrimaryColors();
const generalMenu = filterEmptyItem([
+ {
+ label: {t('webui.menu.Start')},
+ icon: ,
+ key: 'start',
+ },
{
label: {t('webui.menu.Summary')},
icon: ,
@@ -255,7 +261,7 @@ const WebUISider: React.FC = (props) => {
height: themeConfig?.logo?.size?.height || 24,
cursor: 'pointer',
}}
- onClick={() => webuiNavigate(themeConfig?.logo?.href || '/summary')}
+ onClick={() => webuiNavigate(themeConfig?.logo?.href || '/start')}
/>
}
theme={currentSiderTheme}
@@ -275,7 +281,7 @@ const WebUISider: React.FC = (props) => {
height: themeConfig?.logo.sizeCollapsed?.height ?? 24,
cursor: 'pointer',
}}
- onClick={() => webuiNavigate(themeConfig?.logo?.href || '/summary')}
+ onClick={() => webuiNavigate(themeConfig?.logo?.href || '/start')}
/>
}
logoTitle={themeConfig?.logo?.logoTitle || siteDescription || 'WebUI'}
diff --git a/react/src/components/SummaryPageItems/SummaryItemDownloadApp.tsx b/react/src/components/SummaryPageItems/SummaryItemDownloadApp.tsx
deleted file mode 100644
index b2e487d2ce..0000000000
--- a/react/src/components/SummaryPageItems/SummaryItemDownloadApp.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import { useSuspendedBackendaiClient } from '../../hooks';
-import Flex from '../Flex';
-import { Button, Select, Typography, theme } from 'antd';
-import { useState } from 'react';
-
-const detectDefaultOS = () => {
- if (navigator.userAgent.indexOf('Mac') !== -1) return 'MacOS';
- if (navigator.userAgent.indexOf('Win') !== -1) return 'Windows';
- if (navigator.userAgent.indexOf('Linux') !== -1) return 'Linux';
- return 'MacOS';
-};
-
-const SummaryItemDownloadApp: React.FC = () => {
- const { token } = theme.useToken();
- const [OS, setOS] = useState(detectDefaultOS());
-
- const baiClient = useSuspendedBackendaiClient();
- const url = baiClient._config.appDownloadUrl;
- const windowOS = baiClient.supports('use-win-instead-of-win32')
- ? 'win'
- : 'win32';
-
- const appDownloadMap: Record = {
- Linux: {
- os: 'linux',
- architecture: ['arm64', 'x64'],
- extension: 'zip',
- },
- MacOS: {
- os: 'macos',
- architecture: ['arm64', 'x64'],
- extension: 'dmg',
- },
- Windows: {
- os: windowOS,
- architecture: ['arm64', 'x64'],
- extension: 'zip',
- },
- };
- const downloadApp = (architecture: string) => {
- //@ts-ignore
- const pkgVersion = globalThis.packageVersion;
- const os = appDownloadMap[OS].os;
- const extension = appDownloadMap[OS].extension;
- const downloadLink = `${url}/v${pkgVersion}/backend.ai-desktop-${pkgVersion}-${os}-${architecture}.${extension}`;
- window.open(downloadLink, '_blank');
- };
-
- return (
-
-
- );
-};
-
-export default SummaryItemDownloadApp;
diff --git a/react/src/components/SummaryPageItems/SummaryItemInvitation.tsx b/react/src/components/SummaryPageItems/SummaryItemInvitation.tsx
deleted file mode 100644
index 9edaa7007a..0000000000
--- a/react/src/components/SummaryPageItems/SummaryItemInvitation.tsx
+++ /dev/null
@@ -1,169 +0,0 @@
-import BAICard from '../../BAICard';
-import {
- baiSignedRequestWithPromise,
- useBaiSignedRequestWithPromise,
-} from '../../helper';
-import { useSuspendedBackendaiClient } from '../../hooks';
-import {
- useSuspenseTanQuery,
- useTanMutation,
-} from '../../hooks/reactQueryAlias';
-import Flex from '../Flex';
-import { App, Button, Descriptions, Empty, Tag, Typography, theme } from 'antd';
-import { useTranslation } from 'react-i18next';
-
-const SummaryItemInvitation: React.FC = () => {
- const { t } = useTranslation();
- const { token } = theme.useToken();
- const app = App.useApp();
-
- const baiClient = useSuspendedBackendaiClient();
- const baiRequestWithPromise = useBaiSignedRequestWithPromise();
- const {
- data: { invitations },
- refetch,
- } = useSuspenseTanQuery({
- queryKey: ['baiClient.invitation.list'],
- queryFn: () =>
- baiRequestWithPromise({
- method: 'GET',
- url: '/folders/invitations/list',
- }),
- });
-
- const terminateInvitationsMutation = useTanMutation({
- mutationFn: (inv_id: string) => {
- return baiSignedRequestWithPromise({
- method: 'DELETE',
- url: '/folders/invitations/delete',
- body: {
- inv_id: inv_id,
- },
- client: baiClient,
- });
- },
- });
-
- const acceptInvitationsMutation = useTanMutation({
- mutationFn: (inv_id: string) => {
- return baiSignedRequestWithPromise({
- method: 'POST',
- url: '/folders/invitations/accept',
- body: {
- inv_id: inv_id,
- },
- client: baiClient,
- });
- },
- });
-
- const permissionIndicator = (permission: any) => {
- const indicator = [...permission].map((p: any) => {
- const color = ['green', 'blue', 'red', 'orange'][
- ['r', 'w', 'd', 'o'].indexOf(p)
- ];
- const text = ['read', 'write', 'delete', 'only'][
- ['r', 'w', 'd', 'o'].indexOf(p)
- ];
-
- return (
-
- {text}
-
- );
- });
-
- return indicator;
- };
-
- return (
-
- {invitations.length > 0 ? (
- <>
- {invitations.map((invitation: any) => (
-
-
-
- {invitation.vfolder_name}
-
-
- {permissionIndicator(invitation.perm)}
-
-
-
-
-
-
-
- ))}
- >
- ) : (
-
- )}
-
- );
-};
-
-export default SummaryItemInvitation;
diff --git a/react/src/components/SummaryPageItems/SummaryItemStartMenu.tsx b/react/src/components/SummaryPageItems/SummaryItemStartMenu.tsx
deleted file mode 100644
index 856ca3c222..0000000000
--- a/react/src/components/SummaryPageItems/SummaryItemStartMenu.tsx
+++ /dev/null
@@ -1,146 +0,0 @@
-import { useWebUINavigate } from '../../hooks';
-import Flex from '../Flex';
-import { PoweroffOutlined } from '@ant-design/icons';
-import { Button, Typography, theme } from 'antd';
-import { useTranslation } from 'react-i18next';
-
-interface StartMenuProps {
- deactivate?: boolean;
- allowNeoSessionLauncher?: boolean;
-}
-
-export const SummaryItemStartMenu: React.FC = ({
- deactivate,
- allowNeoSessionLauncher,
-}) => {
- const { token } = theme.useToken();
- const webuiNavigate = useWebUINavigate();
- const { t } = useTranslation();
-
- return (
-
-
-
-
- webuiNavigate('/data')}
- >
-
-
- {t('summary.UploadFiles')}
-
-
- {
- webuiNavigate({
- pathname: '/credential',
- search: '?action=add',
- });
- }}
- >
-
-
- {t('summary.CreateANewKeypair')}
-
-
- {
- webuiNavigate({
- pathname: '/credential',
- search: '?action=manage',
- });
- }}
- >
-
-
- {t('summary.MaintainKeypairs')}
-
-
-
-
- );
-};
-
-export default SummaryItemStartMenu;
diff --git a/react/src/hooks/useBAISetting.tsx b/react/src/hooks/useBAISetting.tsx
index f0641f3d88..e21506d732 100644
--- a/react/src/hooks/useBAISetting.tsx
+++ b/react/src/hooks/useBAISetting.tsx
@@ -1,5 +1,5 @@
import { jotaiStore } from '../components/DefaultProviders';
-import { SummaryItem } from '../pages/SummaryPage';
+import { StartItem } from '../pages/StartPage';
import { atom, useAtom } from 'jotai';
import { atomFamily } from 'jotai/utils';
@@ -14,7 +14,7 @@ interface UserSettings {
last_window_close_time?: number;
endpoints?: string[];
auto_logout?: boolean;
- summary_items?: Array>;
+ summary_items?: Array>;
selected_language?: string;
classic_session_launcher?: boolean;
recentSessionHistory?: Array;
diff --git a/react/src/pages/Page401.tsx b/react/src/pages/Page401.tsx
index ca83319b92..8133e967f1 100644
--- a/react/src/pages/Page401.tsx
+++ b/react/src/pages/Page401.tsx
@@ -38,7 +38,7 @@ const Page401 = () => {
diff --git a/react/src/pages/Page404.tsx b/react/src/pages/Page404.tsx
index 63c5a2b1a0..0944f61f4e 100644
--- a/react/src/pages/Page404.tsx
+++ b/react/src/pages/Page404.tsx
@@ -38,7 +38,7 @@ const Page404 = () => {
diff --git a/react/src/pages/StartPage.tsx b/react/src/pages/StartPage.tsx
new file mode 100644
index 0000000000..378f91cd03
--- /dev/null
+++ b/react/src/pages/StartPage.tsx
@@ -0,0 +1,244 @@
+import ActionItemContent from '../components/ActionItemContent';
+import BAIBoard from '../components/BAIBoard';
+import { SessionLauncherPageLocationState } from '../components/LocationStateBreadCrumb';
+import { useWebUINavigate } from '../hooks';
+import { useBAISettingUserState } from '../hooks/useBAISetting';
+import { SessionLauncherFormValue } from './SessionLauncherPage';
+import {
+ AppstoreAddOutlined,
+ FolderAddOutlined,
+ LinkOutlined,
+ PlaySquareOutlined,
+} from '@ant-design/icons';
+import { BoardProps } from '@cloudscape-design/board-components/board';
+import { theme } from 'antd';
+import _ from 'lodash';
+import { useState } from 'react';
+import { useTranslation } from 'react-i18next';
+
+export interface StartItem
+ extends BoardProps.Item<{
+ content: JSX.Element;
+ }> {
+ id:
+ | 'createFolder'
+ | 'startSession'
+ | 'startBatchSession'
+ | 'modelService'
+ | 'startFromExample'
+ | 'startFromURL';
+}
+
+const StartPage: React.FC = () => {
+ const { t } = useTranslation();
+ const { token } = theme.useToken();
+ const webuiNavigate = useWebUINavigate();
+
+ const defaultSummaryElements: {
+ [key in StartItem['id']]: StartItem['data'];
+ } = {
+ createFolder: {
+ content: (
+
+ }
+ onClick={() => webuiNavigate('/data')}
+ />
+ ),
+ },
+ startSession: {
+ content: (
+
+ }
+ onClick={() => webuiNavigate('/session/start')}
+ />
+ ),
+ },
+ startBatchSession: {
+ content: (
+
+ }
+ onClick={() => {
+ const launcherValue: DeepPartial = {
+ sessionType: 'batch',
+ };
+ const params = new URLSearchParams();
+ params.set('step', '0');
+ params.set('formValues', JSON.stringify(launcherValue));
+ webuiNavigate(`/session/start?${params.toString()}`, {
+ state: {
+ from: {
+ pathname: '/start',
+ label: t('start.StartSession'),
+ },
+ } as SessionLauncherPageLocationState,
+ });
+ }}
+ />
+ ),
+ },
+ // The colors of the items below are not finalized.
+ // they should be changed in the future to provide specific tokens by adding them to the provider.
+ modelService: {
+ content: (
+
+ }
+ onClick={() => webuiNavigate('/service/start')}
+ themeColor={token['cyan-6']}
+ iconBgColor={token['cyan-1']}
+ />
+ ),
+ },
+ startFromExample: {
+ content: (
+
+ }
+ onClick={() => webuiNavigate('/import')}
+ themeColor={token['cyan-6']}
+ iconBgColor={token['cyan-1']}
+ />
+ ),
+ },
+ startFromURL: {
+ content: (
+
+ }
+ onClick={() => webuiNavigate('/import')}
+ themeColor={token['cyan-6']}
+ iconBgColor={token['cyan-1']}
+ />
+ ),
+ },
+ };
+ const [summaryItemsSetting, setSummaryItemsSetting] =
+ useBAISettingUserState('summary_items');
+
+ const [items, setItems] = useState>(
+ !_.isEmpty(summaryItemsSetting)
+ ? _.map(summaryItemsSetting, (item) => ({
+ ...item,
+ data: {
+ ...defaultSummaryElements[item?.id],
+ },
+ }))
+ : [
+ {
+ id: 'createFolder',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 0 },
+ data: defaultSummaryElements.createFolder,
+ },
+ {
+ id: 'startSession',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 1 },
+ data: defaultSummaryElements.startSession,
+ },
+ {
+ id: 'startBatchSession',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 2 },
+ data: defaultSummaryElements.startBatchSession,
+ },
+ {
+ id: 'modelService',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 3 },
+ data: defaultSummaryElements.modelService,
+ },
+ {
+ id: 'startFromExample',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 0 },
+ data: defaultSummaryElements.startFromExample,
+ },
+ {
+ id: 'startFromURL',
+ rowSpan: 3,
+ columnSpan: 1,
+ columnOffset: { 4: 1 },
+ data: defaultSummaryElements.startFromURL,
+ },
+ ],
+ );
+
+ return (
+ {
+ const changedItems = event.detail.items as typeof items;
+ setItems(changedItems);
+ setSummaryItemsSetting(
+ _.map(changedItems, (item) => _.omit(item, 'data')),
+ );
+ }}
+ />
+ );
+};
+export default StartPage;
diff --git a/react/src/pages/SummaryPage.tsx b/react/src/pages/SummaryPage.tsx
deleted file mode 100644
index f6102531d6..0000000000
--- a/react/src/pages/SummaryPage.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import BAIBoard from '../components/BAIBoard';
-import SummaryItemDownloadApp from '../components/SummaryPageItems/SummaryItemDownloadApp';
-import SummaryItemInvitation from '../components/SummaryPageItems/SummaryItemInvitation';
-import SummaryItemStartMenu from '../components/SummaryPageItems/SummaryItemStartMenu';
-import { useBAISettingUserState } from '../hooks/useBAISetting';
-import { BoardProps } from '@cloudscape-design/board-components/board';
-import _ from 'lodash';
-import { useState } from 'react';
-import { useTranslation } from 'react-i18next';
-
-export interface SummaryItem
- extends BoardProps.Item<{
- title: string;
- content: JSX.Element;
- }> {
- id: 'startMenu' | 'invitation' | 'downloadApp';
-}
-
-const SummaryPage: React.FC = () => {
- const { t } = useTranslation();
- const defaultSummaryElements: {
- [key in SummaryItem['id']]: SummaryItem['data'];
- } = {
- startMenu: {
- title: t('summary.StartMenu'),
- content: ,
- },
-
- invitation: {
- title: t('summary.Invitation'),
- content: ,
- },
-
- downloadApp: {
- title: t('summary.DownloadWebUIApp'),
- content: ,
- },
- };
- const [summaryItemsSetting, setSummaryItemsSetting] =
- useBAISettingUserState('summary_items');
-
- const [items, setItems] = useState>(
- !_.isEmpty(summaryItemsSetting)
- ? _.map(summaryItemsSetting, (item) => ({
- ...item,
- data: {
- ...defaultSummaryElements[item?.id],
- },
- }))
- : [
- {
- id: 'startMenu',
- rowSpan: 5,
- columnSpan: 1,
- data: defaultSummaryElements.startMenu,
- },
- {
- id: 'invitation',
- rowSpan: 1,
- columnSpan: 1,
- data: defaultSummaryElements.invitation,
- },
- {
- id: 'downloadApp',
- rowSpan: 1,
- columnSpan: 1,
- data: defaultSummaryElements.downloadApp,
- },
- ],
- );
-
- return (
- {
- const changedItems = event.detail.items as typeof items;
- setItems(changedItems);
- setSummaryItemsSetting(
- _.map(changedItems, (item) => _.omit(item, 'data')),
- );
- }}
- />
- );
-};
-export default SummaryPage;
diff --git a/resources/i18n/de.json b/resources/i18n/de.json
index c28ae92d64..8c303910f9 100644
--- a/resources/i18n/de.json
+++ b/resources/i18n/de.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Geben sie ihre E-Mail Adresse ein",
"DisMatchUserEmail": "Die E-Mail-Adresse des Benutzers stimmt nicht überein",
"MyEnvironments": "Meine Umgebungen",
- "ResourcePolicy": "Ressourcenpolitik"
+ "ResourcePolicy": "Ressourcenpolitik",
+ "Start": "Start"
},
"YouAreOffline": "Offline: Keine Verbindung zu einem Netzwerk.",
"YouAreOnline": "Sie sind jetzt online",
@@ -1769,5 +1770,26 @@
"hour": "Stunde",
"day": "day",
"week": "Woche"
+ },
+ "start": {
+ "CreateFolder": "Erstellen Sie einen neuen Speicherordner",
+ "button": {
+ "CreateFolder": "Ordner erstellen",
+ "StartSession": "Sitzung starten",
+ "ModelService": "Dienst starten",
+ "StartNow": "Beginnen Sie jetzt",
+ "StartBatchSession": "Beginnen Sie mit einer URL"
+ },
+ "CreateFolderDesc": "Für das Training von Modellen oder die externe Bereitstellung von Diensten sind das Erstellen eines Ordners und das Hochladen von Dateien von entscheidender Bedeutung. \nBitte beginnen Sie mit dem Hochladen der Dateien.",
+ "StartSession": "Starten Sie eine interaktive Sitzung",
+ "StartSessionDesc": "Möchten Sie ein Model trainieren? \nKlicken Sie auf die Schaltfläche, um sofort eine Sitzung zu erstellen. \nWählen Sie Ihre bevorzugte Umgebung und Ressourcen zum Ausführen von Code und anderen Aufgaben.",
+ "StartBatchSession": "Starten Sie die Batch-Sitzung",
+ "StartBatchSessionDesc": "Versuchen Sie für vordefinierte Dateien oder geplante Aufgaben Batch-Sitzungen. \nGeben Sie den Befehl ein, stellen Sie Datum und Uhrzeit ein und führen Sie ihn nach Bedarf aus.",
+ "ModelService": "Modelldienst starten",
+ "ModelServiceDesc": "Sind Sie bereit, Ihr trainiertes Modell mit anderen zu teilen? \nKlicken Sie auf die Schaltfläche, um einen Dienst zu erstellen.",
+ "StartFromExample": "Beginnen Sie mit dem Beispiel",
+ "StartFromExampleDesc": "Entdecken Sie verschiedene Beispielcodes und legen Sie los.",
+ "StartFromURL": "Beginnen Sie mit der URL",
+ "StartFromURLDesc": "Importieren Sie Ihr Projekt und Ihren Code aus verschiedenen Umgebungen wie GitHub, GitLab, Notebook usw."
}
}
diff --git a/resources/i18n/el.json b/resources/i18n/el.json
index 346ef753ee..529a11a9eb 100644
--- a/resources/i18n/el.json
+++ b/resources/i18n/el.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Συμπληρώστε το email σας",
"DisMatchUserEmail": "Το email χρήστη δεν ταιριάζει",
"MyEnvironments": "Τα περιβάλλοντα μου",
- "ResourcePolicy": "Πολιτική Πόρων"
+ "ResourcePolicy": "Πολιτική Πόρων",
+ "Start": "Αρχή"
},
"YouAreOffline": "Offline: Δεν είναι συνδεδεμένος σε κανένα δίκτυο.",
"YouAreOnline": "Είστε πλέον συνδεδεμένοι",
@@ -1769,5 +1770,26 @@
"hour": "ώρα",
"day": "day",
"week": "εβδομάδα"
+ },
+ "start": {
+ "CreateFolder": "Δημιουργήστε έναν νέο φάκελο αποθήκευσης",
+ "button": {
+ "CreateFolder": "Δημιουργία φακέλου",
+ "StartSession": "Έναρξη συνεδρίας",
+ "ModelService": "Ξεκινήστε την υπηρεσία",
+ "StartNow": "Ξεκινήστε τώρα",
+ "StartBatchSession": "Ξεκινήστε από μια διεύθυνση URL"
+ },
+ "CreateFolderDesc": "Η δημιουργία ενός φακέλου και η μεταφόρτωση αρχείων είναι ζωτικής σημασίας για τα μοντέλα εκπαίδευσης ή την παροχή υπηρεσιών εξωτερικά. \nΞεκινήστε ανεβάζοντας τα αρχεία.",
+ "StartSession": "Ξεκινήστε μια διαδραστική συνεδρία",
+ "StartSessionDesc": "Θέλετε να εκπαιδεύσετε ένα μοντέλο; \nΚάντε κλικ στο κουμπί για να δημιουργήσετε μια περίοδο λειτουργίας αμέσως. \nΕπιλέξτε το περιβάλλον και τους πόρους που προτιμάτε για την εκτέλεση κώδικα και άλλων εργασιών.",
+ "StartBatchSession": "Έναρξη Μαζικής Συνεδρίας",
+ "StartBatchSessionDesc": "Για προκαθορισμένα αρχεία ή προγραμματισμένες εργασίες, δοκιμάστε τις ομαδικές συνεδρίες. \nΕισαγάγετε την εντολή, ορίστε την ημερομηνία και την ώρα και εκτελέστε όπως απαιτείται.",
+ "ModelService": "Ξεκινήστε την υπηρεσία μοντέλου",
+ "ModelServiceDesc": "Είστε έτοιμοι να μοιραστείτε το εκπαιδευμένο μοντέλο σας με άλλους; \nΚάντε κλικ στο κουμπί για να δημιουργήσετε μια υπηρεσία.",
+ "StartFromExample": "Ξεκινήστε από το Παράδειγμα",
+ "StartFromExampleDesc": "Εξερευνήστε διάφορα παραδείγματα κωδικών και ξεκινήστε.",
+ "StartFromURL": "Έναρξη από τη διεύθυνση URL",
+ "StartFromURLDesc": "Εισαγάγετε το έργο και τον κώδικα σας από διάφορα περιβάλλοντα όπως GitHub, GitLab, Notebook κ.λπ."
}
}
diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index 4f79b871f4..fa2f37a845 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Enter your e-mail",
"DisMatchUserEmail": "User E-mail does not match",
"MyEnvironments": "My Environments",
- "ResourcePolicy": "Resource Policy"
+ "ResourcePolicy": "Resource Policy",
+ "Start": "Start"
},
"YouAreOffline": "Offline: Not connected to any networks.",
"YouAreOnline": "You are now online",
@@ -1774,5 +1775,26 @@
"hour": "hour",
"day": "day",
"week": "week"
+ },
+ "start": {
+ "CreateFolder": "Create New Storage Folder",
+ "button": {
+ "CreateFolder": "Create Folder",
+ "StartSession": "Start Session",
+ "ModelService": "Start Service",
+ "StartNow": "Start Now",
+ "StartBatchSession": "Start from a URL"
+ },
+ "CreateFolderDesc": "Create folders and upload files. To train models or provide external services, it is essential to create folders and upload files.",
+ "StartSession": "Start Interactive Session",
+ "StartSessionDesc": "Create a session to train a model. Choose your preferred environment and resources to run a code.",
+ "StartBatchSession": "Start Batch Session",
+ "StartBatchSessionDesc": "Create a batch session for predefined files or scheduled tasks. Enter the command, set the date and time, and run the session on demand.",
+ "ModelService": "Start Model Service",
+ "ModelServiceDesc": "Select to share your trained model with others. This action will create a model service.",
+ "StartFromExample": "Start from the Example",
+ "StartFromExampleDesc": "Explore various example codes and get started.",
+ "StartFromURLDesc": "Import your project and code from various environments such as GitHub, GitLab, Notebook, etc.",
+ "StartFromURL": "Start From URL"
}
}
diff --git a/resources/i18n/es.json b/resources/i18n/es.json
index 0537b62cf5..f796294f0a 100644
--- a/resources/i18n/es.json
+++ b/resources/i18n/es.json
@@ -1691,7 +1691,8 @@
"InvalidBlankEmail": "Introduce tu correo electrónico",
"DisMatchUserEmail": "El correo electrónico del usuario no coincide",
"MyEnvironments": "Mis ambientes",
- "ResourcePolicy": "Política de recursos"
+ "ResourcePolicy": "Política de recursos",
+ "Start": "Comenzar"
},
"NetworkSoftTimeout": "El servidor está tardando más en responder. Por favor, espere un momento"
},
@@ -1771,5 +1772,26 @@
"hour": "hora",
"day": "day",
"week": "semana"
+ },
+ "start": {
+ "CreateFolder": "Crear una nueva carpeta de almacenamiento",
+ "button": {
+ "CreateFolder": "Crear carpeta",
+ "StartSession": "Iniciar sesión",
+ "ModelService": "Iniciar servicio",
+ "StartNow": "Empezar ahora",
+ "StartBatchSession": "Comenzar desde una URL"
+ },
+ "CreateFolderDesc": "Crear una carpeta y cargar archivos es crucial para entrenar modelos o brindar servicios externamente. \nComience subiendo los archivos.",
+ "StartSession": "Iniciar una sesión interactiva",
+ "StartSessionDesc": "¿Quieres entrenar un modelo? \nHaga clic en el botón para crear una sesión al instante. \nElija su entorno y recursos preferidos para ejecutar código y otras tareas.",
+ "StartBatchSession": "Iniciar sesión por lotes",
+ "StartBatchSessionDesc": "Para archivos predefinidos o tareas programadas, pruebe las sesiones por lotes. \nIngrese el comando, establezca la fecha y la hora y ejecútelo según sea necesario.",
+ "ModelService": "Iniciar servicio de modelo",
+ "ModelServiceDesc": "¿Listo para compartir su modelo entrenado con otros? \nHaga clic en el botón para crear un servicio.",
+ "StartFromExample": "Empezar desde el ejemplo",
+ "StartFromExampleDesc": "Explore varios códigos de ejemplo y comience.",
+ "StartFromURL": "Empezar desde URL",
+ "StartFromURLDesc": "Importe su proyecto y código desde varios entornos como GitHub, GitLab, Notebook, etc."
}
}
diff --git a/resources/i18n/fi.json b/resources/i18n/fi.json
index 346e516e8f..0b469fa45c 100644
--- a/resources/i18n/fi.json
+++ b/resources/i18n/fi.json
@@ -1688,7 +1688,8 @@
"InvalidBlankEmail": "Syötä sähköpostiosoitteesi",
"DisMatchUserEmail": "Käyttäjän sähköpostiosoite ei täsmää",
"MyEnvironments": "Omat ympäristöt",
- "ResourcePolicy": "Resurssipolitiikka"
+ "ResourcePolicy": "Resurssipolitiikka",
+ "Start": "Aloita"
},
"NetworkSoftTimeout": "Palvelimen vastaus kestää kauemmin. Odota hetki"
},
@@ -1767,5 +1768,26 @@
"hour": "tunnin",
"day": "day",
"week": "viikko"
+ },
+ "start": {
+ "CreateFolder": "Luo uusi tallennuskansio",
+ "button": {
+ "CreateFolder": "Luo kansio",
+ "StartSession": "Aloita istunto",
+ "ModelService": "Aloita palvelu",
+ "StartNow": "Aloita nyt",
+ "StartBatchSession": "Aloita URL-osoitteesta"
+ },
+ "CreateFolderDesc": "Kansion luominen ja tiedostojen lataaminen ovat tärkeitä koulutusmallien tai palvelujen tarjoamisen kannalta. \nAloita lataamalla tiedostot.",
+ "StartSession": "Aloita interaktiivinen istunto",
+ "StartSessionDesc": "Haluatko kouluttaa mallia? \nNapsauta painiketta luodaksesi istunnon välittömästi. \nValitse haluamasi ympäristö ja resurssit koodin ja muiden tehtävien suorittamista varten.",
+ "StartBatchSession": "Aloita eräistunto",
+ "StartBatchSessionDesc": "Jos haluat käyttää ennalta määritettyjä tiedostoja tai ajoitettuja tehtäviä, kokeile eräistuntoja. \nAnna komento, aseta päivämäärä ja aika ja suorita tarvittaessa.",
+ "ModelService": "Käynnistä mallipalvelu",
+ "ModelServiceDesc": "Oletko valmis jakamaan koulutetun mallisi muiden kanssa? \nNapsauta painiketta luodaksesi palvelun.",
+ "StartFromExample": "Aloita esimerkistä",
+ "StartFromExampleDesc": "Tutustu erilaisiin esimerkkikoodeihin ja aloita.",
+ "StartFromURL": "Aloita URL-osoitteesta",
+ "StartFromURLDesc": "Tuo projektisi ja koodisi eri ympäristöistä, kuten GitHubista, GitLabista, Notebookista jne."
}
}
diff --git a/resources/i18n/fr.json b/resources/i18n/fr.json
index b34aa0def3..9eaf70b03c 100644
--- a/resources/i18n/fr.json
+++ b/resources/i18n/fr.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Entrer votre Email",
"DisMatchUserEmail": "L'e-mail de l'utilisateur ne correspond pas",
"MyEnvironments": "Mes environnements",
- "ResourcePolicy": "Politique des ressources"
+ "ResourcePolicy": "Politique des ressources",
+ "Start": "Commencer"
},
"YouAreOffline": "Hors ligne : N'est connecté à aucun réseau.",
"YouAreOnline": "Vous êtes maintenant en ligne",
@@ -1769,5 +1770,26 @@
"hour": "heure",
"day": "day",
"week": "semaine"
+ },
+ "start": {
+ "CreateFolder": "Créer un nouveau dossier de stockage",
+ "button": {
+ "CreateFolder": "Créer un dossier",
+ "StartSession": "Démarrer la session",
+ "ModelService": "Démarrer le service",
+ "StartNow": "Commencez maintenant",
+ "StartBatchSession": "Commencer à partir d'une URL"
+ },
+ "CreateFolderDesc": "La création d'un dossier et le téléchargement de fichiers sont cruciaux pour former des modèles ou fournir des services en externe. \nVeuillez commencer par télécharger les fichiers.",
+ "StartSession": "Démarrer une session interactive",
+ "StartSessionDesc": "Vous souhaitez former un modèle ? \nCliquez sur le bouton pour créer une session instantanément. \nChoisissez votre environnement et vos ressources préférés pour exécuter du code et d'autres tâches.",
+ "StartBatchSession": "Démarrer une session par lots",
+ "StartBatchSessionDesc": "Pour les fichiers prédéfinis ou les tâches planifiées, essayez les sessions par lots. \nEntrez la commande, définissez la date et l'heure et exécutez-la selon vos besoins.",
+ "ModelService": "Démarrer le service de modèle",
+ "ModelServiceDesc": "Prêt à partager votre modèle formé avec d'autres ? \nCliquez sur le bouton pour créer un service.",
+ "StartFromExample": "Partir de l'exemple",
+ "StartFromExampleDesc": "Explorez divers exemples de codes et commencez.",
+ "StartFromURL": "Commencer à partir de l'URL",
+ "StartFromURLDesc": "Importez votre projet et votre code depuis divers environnements tels que GitHub, GitLab, Notebook, etc."
}
}
diff --git a/resources/i18n/id.json b/resources/i18n/id.json
index ebb3e40793..6a898c2fbd 100644
--- a/resources/i18n/id.json
+++ b/resources/i18n/id.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Masukkan email Anda",
"DisMatchUserEmail": "Email Pengguna tidak cocok",
"MyEnvironments": "Lingkungan Saya",
- "ResourcePolicy": "Kebijakan Sumber Daya"
+ "ResourcePolicy": "Kebijakan Sumber Daya",
+ "Start": "Awal"
},
"YouAreOffline": "Offline: Tidak terhubung ke jaringan apa pun.",
"YouAreOnline": "Anda sekarang online",
@@ -1769,5 +1770,26 @@
"hour": "jam",
"day": "day",
"week": "pekan"
+ },
+ "start": {
+ "CreateFolder": "Buat Folder Penyimpanan Baru",
+ "button": {
+ "CreateFolder": "Buat Folder",
+ "StartSession": "Mulai Sesi",
+ "ModelService": "Mulai Layanan",
+ "StartNow": "Mulai Sekarang",
+ "StartBatchSession": "Mulai dari URL"
+ },
+ "CreateFolderDesc": "Membuat folder dan mengunggah file sangat penting untuk melatih model atau menyediakan layanan secara eksternal. \nSilakan mulai dengan mengunggah file.",
+ "StartSession": "Mulai Sesi Interaktif",
+ "StartSessionDesc": "Ingin melatih model? \nKlik tombol untuk membuat sesi secara instan. \nPilih lingkungan dan sumber daya pilihan Anda untuk menjalankan kode dan tugas lainnya.",
+ "StartBatchSession": "Mulai Sesi Batch",
+ "StartBatchSessionDesc": "Untuk file yang telah ditentukan sebelumnya atau tugas terjadwal, cobalah sesi Batch. \nMasukkan perintah, atur tanggal dan waktu, dan jalankan sesuai kebutuhan.",
+ "ModelService": "Mulai Layanan Model",
+ "ModelServiceDesc": "Siap membagikan model terlatih Anda kepada orang lain? \nKlik tombol untuk membuat layanan.",
+ "StartFromExample": "Mulailah dari Contoh",
+ "StartFromExampleDesc": "Jelajahi berbagai contoh kode dan mulailah.",
+ "StartFromURL": "Mulai Dari URL",
+ "StartFromURLDesc": "Impor proyek dan kode Anda dari berbagai lingkungan seperti GitHub, GitLab, Notebook, dll."
}
}
diff --git a/resources/i18n/it.json b/resources/i18n/it.json
index 02bc06c14d..a05e4f3d22 100644
--- a/resources/i18n/it.json
+++ b/resources/i18n/it.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Inserisci il tuo indirizzo email",
"DisMatchUserEmail": "L'e-mail dell'utente non corrisponde",
"MyEnvironments": "I miei ambienti",
- "ResourcePolicy": "Politica delle risorse"
+ "ResourcePolicy": "Politica delle risorse",
+ "Start": "Inizio"
},
"YouAreOffline": "Non in linea: Non è collegato ad alcuna rete.",
"YouAreOnline": "Ora sei online",
@@ -1769,5 +1770,26 @@
"hour": "ora",
"day": "day",
"week": "settimana"
+ },
+ "start": {
+ "CreateFolder": "Crea una nuova cartella di archiviazione",
+ "button": {
+ "CreateFolder": "Crea cartella",
+ "StartSession": "Avvia sessione",
+ "ModelService": "Avvia servizio",
+ "StartNow": "Inizia ora",
+ "StartBatchSession": "Inizia da un URL"
+ },
+ "CreateFolderDesc": "La creazione di una cartella e il caricamento di file sono fondamentali per la formazione di modelli o la fornitura di servizi esternamente. \nInizia caricando i file.",
+ "StartSession": "Avvia una sessione interattiva",
+ "StartSessionDesc": "Vuoi addestrare un modello? \nFare clic sul pulsante per creare immediatamente una sessione. \nScegli l'ambiente e le risorse preferiti per l'esecuzione del codice e altre attività.",
+ "StartBatchSession": "Avvia sessione batch",
+ "StartBatchSessionDesc": "Per file predefiniti o attività pianificate, prova le sessioni batch. \nImmettere il comando, impostare la data e l'ora ed eseguirlo secondo necessità.",
+ "ModelService": "Avvia il servizio modello",
+ "ModelServiceDesc": "Pronto a condividere il tuo modello addestrato con altri? \nFare clic sul pulsante per creare un servizio.",
+ "StartFromExample": "Partire dall'Esempio",
+ "StartFromExampleDesc": "Esplora vari codici di esempio e inizia.",
+ "StartFromURL": "Inizia dall'URL",
+ "StartFromURLDesc": "Importa il tuo progetto e codice da vari ambienti come GitHub, GitLab, Notebook, ecc."
}
}
diff --git a/resources/i18n/ja.json b/resources/i18n/ja.json
index 9185d6bb7b..ad8e431f17 100644
--- a/resources/i18n/ja.json
+++ b/resources/i18n/ja.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "メールアドレスを入力",
"DisMatchUserEmail": "ユーザーの電子メールが一致しません",
"MyEnvironments": "私の環境",
- "ResourcePolicy": "リソースポリシー"
+ "ResourcePolicy": "リソースポリシー",
+ "Start": "始める"
},
"YouAreOffline": "オフライン:どのネットワークにも接続されていない。",
"YouAreOnline": "あなたは今オンラインです",
@@ -1769,5 +1770,26 @@
"hour": "時間",
"day": "日",
"week": "週"
+ },
+ "start": {
+ "CreateFolder": "新しい保存フォルダーを作成する",
+ "button": {
+ "CreateFolder": "フォルダーの作成",
+ "StartSession": "セッションの開始",
+ "ModelService": "サービス開始",
+ "StartNow": "今すぐ始めましょう",
+ "StartBatchSession": "URLから開始"
+ },
+ "CreateFolderDesc": "フォルダーの作成とファイルのアップロードは、モデルをトレーニングしたり、外部にサービスを提供したりするために重要です。\nファイルをアップロードすることから始めてください。",
+ "StartSession": "インタラクティブセッションを開始する",
+ "StartSessionDesc": "モデルをトレーニングしたいですか?\nボタンをクリックすると、セッションが即座に作成されます。\nコードやその他のタスクを実行するための優先環境とリソースを選択します。",
+ "StartBatchSession": "バッチセッションの開始",
+ "StartBatchSessionDesc": "事前定義されたファイルまたはスケジュールされたタスクについては、バッチ セッションを試してください。\nコマンドを入力し、日付と時刻を設定し、必要に応じて実行します。",
+ "ModelService": "モデルサービスの開始",
+ "ModelServiceDesc": "トレーニングされたモデルを他の人と共有する準備はできていますか?\nボタンをクリックしてサービスを作成します。",
+ "StartFromExample": "例から始める",
+ "StartFromExampleDesc": "さまざまなコード例を調べて開始してください。",
+ "StartFromURL": "URLから開始",
+ "StartFromURLDesc": "GitHub、GitLab、Notebook などのさまざまな環境からプロジェクトとコードをインポートします。"
}
}
diff --git a/resources/i18n/ko.json b/resources/i18n/ko.json
index f4cdec5b14..a5594f268a 100644
--- a/resources/i18n/ko.json
+++ b/resources/i18n/ko.json
@@ -66,7 +66,8 @@
"InvalidBlankPassword": "패스워드를 입력하세요.",
"DisMatchUserEmail": "사용자 E-mail이 일치하지 않습니다.",
"MyEnvironments": "나의 실행 환경",
- "ResourcePolicy": "자원 정책"
+ "ResourcePolicy": "자원 정책",
+ "Start": "시작"
},
"YouAreOffline": "오프라인: 네트워크에 연결되어 있지 않습니다.",
"YouAreOnline": "온라인 상태가 되었습니다",
@@ -1771,5 +1772,26 @@
"hour": "시간",
"day": "일",
"week": "주"
+ },
+ "start": {
+ "CreateFolder": "새 스토리지 폴더 생성하기",
+ "button": {
+ "CreateFolder": "폴더 생성하기",
+ "StartSession": "세션 생성",
+ "ModelService": "서비스 생성",
+ "StartNow": "지금 시작하기",
+ "StartBatchSession": "URL로 시작하기"
+ },
+ "CreateFolderDesc": "폴더를 만들고 파일을 업로드합니다. 모델을 학습시키거나 외부 서비스를 제공하려면 해당 작업은 필수적입니다.",
+ "StartSession": "Interactive 세션 생성",
+ "StartSessionDesc": "모델을 학습시킬 세션을 생성합니다. 원하는 환경과 리소스를 선택하여 코드를 실행하세요.",
+ "StartBatchSession": "Batch 세션 생성",
+ "StartBatchSessionDesc": "미리 정의된 파일 또는 예약된 작업에 대한 배치 세션을 생성합니다. 명령을 입력하고 날짜와 시간을 설정한 다음 필요에 따라 세션을 실행하세요.",
+ "ModelService": "모델 서비스 시작",
+ "ModelServiceDesc": "학습이 끝난 모델을 다른 사람과 공유하고 싶다면, 버튼을 클릭하여 서비스를 생성하세요.",
+ "StartFromExample": "가져오기 및 실행",
+ "StartFromExampleDesc": "다양한 예제 코드를 살펴보고, 해당 코드로부터 실행할 수 있습니다.",
+ "StartFromURL": "URL 로 시작",
+ "StartFromURLDesc": "GitHub, GitLab, Notebook 등 다양한 환경에서 프로젝트와 코드를 가져오고, 실행할 수 있습니다. "
}
}
diff --git a/resources/i18n/mn.json b/resources/i18n/mn.json
index 862b9e8197..9c21b7b0f7 100644
--- a/resources/i18n/mn.json
+++ b/resources/i18n/mn.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Имэйлээ оруулна уу",
"DisMatchUserEmail": "Хэрэглэгчийн имэйл таарахгүй байна",
"MyEnvironments": "Миний орчин",
- "ResourcePolicy": "Нөөцийн бодлого"
+ "ResourcePolicy": "Нөөцийн бодлого",
+ "Start": "Эхлэх"
},
"YouAreOffline": "Офлайн: Ямар ч сүлжээнд холбогдоогүй.",
"YouAreOnline": "Та одоо онлайн байна",
@@ -1769,5 +1770,26 @@
"hour": "цаг",
"day": "day",
"week": "долоо хоног"
+ },
+ "start": {
+ "CreateFolder": "Хадгалах шинэ хавтас үүсгэх",
+ "button": {
+ "CreateFolder": "Хавтас үүсгэх",
+ "StartSession": "Сеанс эхлүүлэх",
+ "ModelService": "Үйлчилгээг эхлүүлэх",
+ "StartNow": "Одоо эхэл",
+ "StartBatchSession": "URL-аас эхэл"
+ },
+ "CreateFolderDesc": "Загваруудыг сургах эсвэл гаднаас үйлчилгээ үзүүлэхэд хавтас үүсгэх, файл байршуулах нь маш чухал юм. \nФайлуудыг байршуулж эхэлнэ үү.",
+ "StartSession": "Интерактив сесс эхлүүлэх",
+ "StartSessionDesc": "Та загвар өмсөгч сурмаар байна уу? \nШууд сесс үүсгэхийн тулд товчлуур дээр дарна уу. \nКод болон бусад ажлуудыг ажиллуулахын тулд өөрийн дуртай орчин, нөөцийг сонго.",
+ "StartBatchSession": "Багц сессийг эхлүүлэх",
+ "StartBatchSessionDesc": "Урьдчилан тодорхойлсон файлууд эсвэл төлөвлөсөн ажлуудын хувьд Багц сессийг туршиж үзээрэй. \nТушаалыг оруулаад огноо, цагийг тохируулж, шаардлагатай бол ажиллуул.",
+ "ModelService": "Загварын үйлчилгээг эхлүүлэх",
+ "ModelServiceDesc": "Бэлтгэгдсэн загвараа бусадтай хуваалцахад бэлэн үү? \nҮйлчилгээ үүсгэхийн тулд товчлуур дээр дарна уу.",
+ "StartFromExample": "Жишээнээс эхэлье",
+ "StartFromExampleDesc": "Төрөл бүрийн жишээ кодуудыг судалж, эхлээрэй.",
+ "StartFromURL": "URL-аас эхлэх",
+ "StartFromURLDesc": "GitHub, GitLab, Notebook гэх мэт янз бүрийн орчноос өөрийн төсөл болон кодыг импортлох."
}
}
diff --git a/resources/i18n/ms.json b/resources/i18n/ms.json
index 2db093205c..21654b05cc 100644
--- a/resources/i18n/ms.json
+++ b/resources/i18n/ms.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Masukkan emel anda",
"DisMatchUserEmail": "E-mel Pengguna tidak sepadan",
"MyEnvironments": "Persekitaran Saya",
- "ResourcePolicy": "Dasar Sumber"
+ "ResourcePolicy": "Dasar Sumber",
+ "Start": "Mulakan"
},
"YouAreOffline": "Luar talian: Tidak disambungkan ke mana-mana rangkaian.",
"YouAreOnline": "Anda kini dalam talian",
@@ -1769,5 +1770,26 @@
"hour": "jam",
"day": "day",
"week": "minggu"
+ },
+ "start": {
+ "CreateFolder": "Buat Folder Storan Baharu",
+ "button": {
+ "CreateFolder": "Buat Folder",
+ "StartSession": "Mulakan Sesi",
+ "ModelService": "Mulakan Perkhidmatan",
+ "StartNow": "Mulakan Sekarang",
+ "StartBatchSession": "Mulakan daripada URL"
+ },
+ "CreateFolderDesc": "Mencipta folder dan memuat naik fail adalah penting untuk model latihan atau menyediakan perkhidmatan secara luaran. \nSila mulakan dengan memuat naik fail.",
+ "StartSession": "Mulakan Sesi Interaktif",
+ "StartSessionDesc": "Ingin melatih model? \nKlik butang untuk membuat sesi serta-merta. \nPilih persekitaran dan sumber pilihan anda untuk menjalankan kod dan tugasan lain.",
+ "StartBatchSession": "Mulakan Sesi Kelompok",
+ "StartBatchSessionDesc": "Untuk fail yang dipratentukan atau tugasan yang dijadualkan, cuba sesi Kelompok. \nMasukkan arahan, tetapkan tarikh dan masa, dan jalankan seperti yang diperlukan.",
+ "ModelService": "Mulakan Perkhidmatan Model",
+ "ModelServiceDesc": "Bersedia untuk berkongsi model terlatih anda dengan orang lain? \nKlik butang untuk membuat perkhidmatan.",
+ "StartFromExample": "Mulakan daripada Contoh",
+ "StartFromExampleDesc": "Terokai pelbagai contoh kod dan mulakan.",
+ "StartFromURL": "Mulakan Dari URL",
+ "StartFromURLDesc": "Import projek dan kod anda daripada pelbagai persekitaran seperti GitHub, GitLab, Notebook, dsb."
}
}
diff --git a/resources/i18n/pl.json b/resources/i18n/pl.json
index f4e4ddb5ab..41acee002f 100644
--- a/resources/i18n/pl.json
+++ b/resources/i18n/pl.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Wprowadź swój email",
"DisMatchUserEmail": "Adres e-mail użytkownika nie jest zgodny",
"MyEnvironments": "Moje Środowiska",
- "ResourcePolicy": "Polityka zasobów"
+ "ResourcePolicy": "Polityka zasobów",
+ "Start": "Start"
},
"YouAreOffline": "Offline: Brak połączenia z siecią.",
"YouAreOnline": "Jesteś teraz online",
@@ -1769,5 +1770,26 @@
"hour": "godzina",
"day": "day",
"week": "tydzień"
+ },
+ "start": {
+ "CreateFolder": "Utwórz nowy folder przechowywania",
+ "button": {
+ "CreateFolder": "Utwórz folder",
+ "StartSession": "Rozpocznij sesję",
+ "ModelService": "Uruchom usługę",
+ "StartNow": "Zacznij teraz",
+ "StartBatchSession": "Zacznij od adresu URL"
+ },
+ "CreateFolderDesc": "Utworzenie folderu i przesłanie plików jest kluczowe w przypadku uczenia modeli lub świadczenia usług na zewnątrz. \nRozpocznij od przesłania plików.",
+ "StartSession": "Rozpocznij sesję interaktywną",
+ "StartSessionDesc": "Chcesz wyszkolić modelkę? \nKliknij przycisk, aby natychmiast utworzyć sesję. \nWybierz preferowane środowisko i zasoby do uruchamiania kodu i innych zadań.",
+ "StartBatchSession": "Rozpocznij sesję wsadową",
+ "StartBatchSessionDesc": "W przypadku wstępnie zdefiniowanych plików lub zaplanowanych zadań wypróbuj sesje wsadowe. \nWprowadź polecenie, ustaw datę i godzinę i uruchom w razie potrzeby.",
+ "ModelService": "Uruchom usługę modelową",
+ "ModelServiceDesc": "Chcesz udostępnić wytrenowany model innym? \nKliknij przycisk, aby utworzyć usługę.",
+ "StartFromExample": "Zacznij od przykładu",
+ "StartFromExampleDesc": "Zapoznaj się z różnymi przykładowymi kodami i rozpocznij pracę.",
+ "StartFromURL": "Zacznij od adresu URL",
+ "StartFromURLDesc": "Zaimportuj swój projekt i kod z różnych środowisk, takich jak GitHub, GitLab, Notatnik itp."
}
}
diff --git a/resources/i18n/pt-BR.json b/resources/i18n/pt-BR.json
index b465107f6f..642da640f3 100644
--- a/resources/i18n/pt-BR.json
+++ b/resources/i18n/pt-BR.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Digite seu e-mail",
"DisMatchUserEmail": "E-mail do usuário não corresponde",
"MyEnvironments": "Meus ambientes",
- "ResourcePolicy": "Política de Recursos"
+ "ResourcePolicy": "Política de Recursos",
+ "Start": "Começar"
},
"YouAreOffline": "Desligado: Não está ligado a nenhuma rede.",
"YouAreOnline": "Agora você está online",
@@ -1769,5 +1770,26 @@
"hour": "hora",
"day": "day",
"week": "semana"
+ },
+ "start": {
+ "CreateFolder": "Crie uma nova pasta de armazenamento",
+ "button": {
+ "CreateFolder": "Criar pasta",
+ "StartSession": "Iniciar sessão",
+ "ModelService": "Iniciar serviço",
+ "StartNow": "Comece agora",
+ "StartBatchSession": "Comece a partir de um URL"
+ },
+ "CreateFolderDesc": "Criar uma pasta e fazer upload de arquivos são cruciais para treinar modelos ou fornecer serviços externamente. \nComece enviando os arquivos.",
+ "StartSession": "Iniciar uma sessão interativa",
+ "StartSessionDesc": "Quer treinar um modelo? \nClique no botão para criar uma sessão instantaneamente. \nEscolha seu ambiente e recursos preferidos para executar código e outras tarefas.",
+ "StartBatchSession": "Iniciar sessão em lote",
+ "StartBatchSessionDesc": "Para arquivos predefinidos ou tarefas agendadas, experimente sessões em lote. \nDigite o comando, defina a data e a hora e execute conforme necessário.",
+ "ModelService": "Iniciar serviço de modelo",
+ "ModelServiceDesc": "Pronto para compartilhar seu modelo treinado com outras pessoas? \nClique no botão para criar um serviço.",
+ "StartFromExample": "Comece pelo exemplo",
+ "StartFromExampleDesc": "Explore vários exemplos de códigos e comece.",
+ "StartFromURL": "Começar do URL",
+ "StartFromURLDesc": "Importe seu projeto e código de vários ambientes como GitHub, GitLab, Notebook, etc."
}
}
diff --git a/resources/i18n/pt.json b/resources/i18n/pt.json
index 355f792119..7352883f7f 100644
--- a/resources/i18n/pt.json
+++ b/resources/i18n/pt.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Digite seu e-mail",
"DisMatchUserEmail": "E-mail do usuário não corresponde",
"MyEnvironments": "Meus ambientes",
- "ResourcePolicy": "Política de Recursos"
+ "ResourcePolicy": "Política de Recursos",
+ "Start": "Começar"
},
"YouAreOffline": "Desligado: Não está ligado a nenhuma rede.",
"YouAreOnline": "Agora você está online",
@@ -1769,5 +1770,26 @@
"hour": "hora",
"day": "day",
"week": "semana"
+ },
+ "start": {
+ "CreateFolder": "Crie uma nova pasta de armazenamento",
+ "button": {
+ "CreateFolder": "Criar pasta",
+ "StartSession": "Iniciar sessão",
+ "ModelService": "Iniciar serviço",
+ "StartNow": "Comece agora",
+ "StartBatchSession": "Comece a partir de um URL"
+ },
+ "CreateFolderDesc": "Criar uma pasta e fazer upload de arquivos são cruciais para treinar modelos ou fornecer serviços externamente. \nComece enviando os arquivos.",
+ "StartSession": "Iniciar uma sessão interativa",
+ "StartSessionDesc": "Quer treinar um modelo? \nClique no botão para criar uma sessão instantaneamente. \nEscolha seu ambiente e recursos preferidos para executar código e outras tarefas.",
+ "StartBatchSession": "Iniciar sessão em lote",
+ "StartBatchSessionDesc": "Para arquivos predefinidos ou tarefas agendadas, experimente sessões em lote. \nDigite o comando, defina a data e a hora e execute conforme necessário.",
+ "ModelService": "Iniciar serviço de modelo",
+ "ModelServiceDesc": "Pronto para compartilhar seu modelo treinado com outras pessoas? \nClique no botão para criar um serviço.",
+ "StartFromExample": "Comece pelo exemplo",
+ "StartFromExampleDesc": "Explore vários exemplos de códigos e comece.",
+ "StartFromURL": "Começar do URL",
+ "StartFromURLDesc": "Importe seu projeto e código de vários ambientes como GitHub, GitLab, Notebook, etc."
}
}
diff --git a/resources/i18n/ru.json b/resources/i18n/ru.json
index f2b2772c69..8f829d3b56 100644
--- a/resources/i18n/ru.json
+++ b/resources/i18n/ru.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Введите адрес электронной почты",
"DisMatchUserEmail": "Электронная почта пользователя не совпадает",
"MyEnvironments": "Моя среда",
- "ResourcePolicy": "Ресурсная политика"
+ "ResourcePolicy": "Ресурсная политика",
+ "Start": "Начинать"
},
"YouAreOffline": "Не в сети: Не подключен ни к одной сети.",
"YouAreOnline": "Вы сейчас в сети",
@@ -1769,5 +1770,26 @@
"hour": "час",
"day": "day",
"week": "неделя"
+ },
+ "start": {
+ "CreateFolder": "Создайте новую папку хранения",
+ "button": {
+ "CreateFolder": "Создать папку",
+ "StartSession": "Начать сеанс",
+ "ModelService": "Запустить службу",
+ "StartNow": "Начать сейчас",
+ "StartBatchSession": "Начать с URL-адреса"
+ },
+ "CreateFolderDesc": "Создание папки и загрузка файлов имеют решающее значение для обучения моделей или внешнего предоставления услуг. \nПожалуйста, начните с загрузки файлов.",
+ "StartSession": "Начать интерактивный сеанс",
+ "StartSessionDesc": "Хотите обучить модель? \nНажмите кнопку, чтобы мгновенно создать сеанс. \nВыберите предпочитаемую среду и ресурсы для выполнения кода и других задач.",
+ "StartBatchSession": "Начать пакетный сеанс",
+ "StartBatchSessionDesc": "Для предопределенных файлов или запланированных задач попробуйте пакетные сеансы. \nВведите команду, установите дату и время и запускайте по мере необходимости.",
+ "ModelService": "Запустить службу модели",
+ "ModelServiceDesc": "Готовы поделиться своей обученной моделью с другими? \nНажмите кнопку, чтобы создать услугу.",
+ "StartFromExample": "Начните с примера",
+ "StartFromExampleDesc": "Изучите различные примеры кода и приступайте к работе.",
+ "StartFromURL": "Начать с URL-адреса",
+ "StartFromURLDesc": "Импортируйте свой проект и код из различных сред, таких как GitHub, GitLab, Notebook и т. д."
}
}
diff --git a/resources/i18n/th.json b/resources/i18n/th.json
index 554ff11468..2d63964d9f 100644
--- a/resources/i18n/th.json
+++ b/resources/i18n/th.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "ใส่อีเมลของคุณ",
"DisMatchUserEmail": "อีเมลผู้ใช้ไม่ตรงกัน",
"MyEnvironments": "สภาพแวดล้อมของฉัน",
- "ResourcePolicy": "นโยบายทรัพยากร"
+ "ResourcePolicy": "นโยบายทรัพยากร",
+ "Start": "เริ่ม"
},
"YouAreOffline": "ออฟไลน์: ไม่ได้เชื่อมต่อกับเครือข่ายใดๆ",
"YouAreOnline": "คุณออนไลน์แล้ว",
@@ -1749,5 +1750,26 @@
"hour": "ชั่วโมง",
"day": "day",
"week": "สัปดาห์"
+ },
+ "start": {
+ "CreateFolder": "สร้างโฟลเดอร์จัดเก็บข้อมูลใหม่",
+ "button": {
+ "CreateFolder": "สร้างโฟลเดอร์",
+ "StartSession": "เริ่มเซสชัน",
+ "ModelService": "เริ่มบริการ",
+ "StartNow": "เริ่มเลย",
+ "StartBatchSession": "เริ่มจาก URL"
+ },
+ "CreateFolderDesc": "การสร้างโฟลเดอร์และการอัพโหลดไฟล์ถือเป็นสิ่งสำคัญสำหรับโมเดลการฝึกหรือการให้บริการภายนอก \nกรุณาเริ่มต้นด้วยการอัพโหลดไฟล์",
+ "StartSession": "เริ่มเซสชันแบบโต้ตอบ",
+ "StartSessionDesc": "ต้องการฝึกโมเดลหรือไม่? \nคลิกปุ่มเพื่อสร้างเซสชันทันที \nเลือกสภาพแวดล้อมและทรัพยากรที่คุณต้องการสำหรับการรันโค้ดและงานอื่นๆ",
+ "StartBatchSession": "เริ่มเซสชันแบทช์",
+ "StartBatchSessionDesc": "สำหรับไฟล์ที่กำหนดไว้ล่วงหน้าหรืองานที่กำหนดเวลาไว้ ให้ลองใช้เซสชันแบบกลุ่ม \nป้อนคำสั่ง ตั้งค่าวันที่และเวลา และรันตามต้องการ",
+ "ModelService": "เริ่มบริการโมเดล",
+ "ModelServiceDesc": "พร้อมที่จะแบ่งปันโมเดลที่ผ่านการฝึกอบรมของคุณกับผู้อื่นแล้วหรือยัง? \nคลิกปุ่มเพื่อสร้างบริการ",
+ "StartFromExample": "เริ่มจากตัวอย่าง",
+ "StartFromExampleDesc": "สำรวจโค้ดตัวอย่างต่างๆ และเริ่มต้นใช้งาน",
+ "StartFromURL": "เริ่มจาก URL",
+ "StartFromURLDesc": "นำเข้าโปรเจ็กต์และโค้ดของคุณจากสภาพแวดล้อมต่างๆ เช่น GitHub, GitLab, Notebook เป็นต้น"
}
}
diff --git a/resources/i18n/tr.json b/resources/i18n/tr.json
index a0400de72d..66dd0b7d7d 100644
--- a/resources/i18n/tr.json
+++ b/resources/i18n/tr.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "E-postanızı giriniz",
"DisMatchUserEmail": "Kullanıcı E-postası eşleşmiyor",
"MyEnvironments": "Ortamlarım",
- "ResourcePolicy": "Kaynak Politikası"
+ "ResourcePolicy": "Kaynak Politikası",
+ "Start": "Başlangıç"
},
"YouAreOffline": "Çevrimdışı: Herhangi bir ağa bağlı değil.",
"YouAreOnline": "artık çevrimiçisin",
@@ -1772,5 +1773,26 @@
"hour": "saat",
"day": "day",
"week": "hafta"
+ },
+ "start": {
+ "CreateFolder": "Yeni Bir Depolama Klasörü Oluşturun",
+ "button": {
+ "CreateFolder": "Klasör Oluştur",
+ "StartSession": "Oturumu Başlat",
+ "ModelService": "Hizmeti Başlat",
+ "StartNow": "Şimdi Başla",
+ "StartBatchSession": "Bir URL'den başlayın"
+ },
+ "CreateFolderDesc": "Bir klasör oluşturmak ve dosyaları yüklemek, modellerin eğitimi veya dışarıdan hizmet sağlanması için çok önemlidir. \nLütfen dosyaları yükleyerek başlayın.",
+ "StartSession": "Etkileşimli Bir Oturum Başlatın",
+ "StartSessionDesc": "Bir model yetiştirmek ister misiniz? \nAnında oturum oluşturmak için düğmeye tıklayın. \nKod çalıştırmak ve diğer görevler için tercih ettiğiniz ortamı ve kaynakları seçin.",
+ "StartBatchSession": "Toplu Oturumu Başlat",
+ "StartBatchSessionDesc": "Önceden tanımlanmış dosyalar veya zamanlanmış görevler için Toplu oturumları deneyin. \nKomutu girin, tarih ve saati ayarlayın ve gerektiği gibi çalıştırın.",
+ "ModelService": "Model Hizmetini Başlat",
+ "ModelServiceDesc": "Eğitimli modelinizi başkalarıyla paylaşmaya hazır mısınız? \nBir hizmet oluşturmak için düğmeye tıklayın.",
+ "StartFromExample": "Örnekten Başlayın",
+ "StartFromExampleDesc": "Çeşitli örnek kodları keşfedin ve başlayın.",
+ "StartFromURL": "URL'den Başla",
+ "StartFromURLDesc": "Projenizi ve kodunuzu GitHub, GitLab, Notebook vb. çeşitli ortamlardan içe aktarın."
}
}
diff --git a/resources/i18n/vi.json b/resources/i18n/vi.json
index bf22e8ce89..5ce5a252da 100644
--- a/resources/i18n/vi.json
+++ b/resources/i18n/vi.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "Nhập email của bạn",
"DisMatchUserEmail": "E-mail của người dùng không khớp",
"MyEnvironments": "Môi trường của tôi",
- "ResourcePolicy": "Chính sách tài nguyên"
+ "ResourcePolicy": "Chính sách tài nguyên",
+ "Start": "Bắt đầu"
},
"YouAreOffline": "Ngoại tuyến: Không kết nối với bất kỳ mạng nào.",
"YouAreOnline": "Bạn hiện đang trực tuyến",
@@ -1769,5 +1770,26 @@
"hour": "giờ",
"day": "day",
"week": "tuần"
+ },
+ "start": {
+ "CreateFolder": "Tạo thư mục lưu trữ mới",
+ "button": {
+ "CreateFolder": "Tạo thư mục",
+ "StartSession": "Bắt đầu phiên",
+ "ModelService": "Bắt đầu dịch vụ",
+ "StartNow": "Bắt đầu ngay bây giờ",
+ "StartBatchSession": "Bắt đầu từ một URL"
+ },
+ "CreateFolderDesc": "Việc tạo thư mục và tải tệp lên là rất quan trọng đối với việc đào tạo mô hình hoặc cung cấp dịch vụ bên ngoài. \nHãy bắt đầu bằng cách tải lên các tập tin.",
+ "StartSession": "Bắt đầu một phiên tương tác",
+ "StartSessionDesc": "Bạn muốn đào tạo một người mẫu? \nNhấp vào nút để tạo phiên ngay lập tức. \nChọn môi trường và tài nguyên ưa thích của bạn để chạy mã và các tác vụ khác.",
+ "StartBatchSession": "Bắt đầu phiên hàng loạt",
+ "StartBatchSessionDesc": "Đối với các tệp được xác định trước hoặc các tác vụ đã lên lịch, hãy thử phiên Batch. \nNhập lệnh, đặt ngày giờ và chạy khi cần.",
+ "ModelService": "Bắt đầu dịch vụ mẫu",
+ "ModelServiceDesc": "Sẵn sàng chia sẻ mô hình được đào tạo của bạn với người khác? \nNhấp vào nút để tạo một dịch vụ.",
+ "StartFromExample": "Bắt đầu từ ví dụ",
+ "StartFromExampleDesc": "Khám phá các mã ví dụ khác nhau và bắt đầu.",
+ "StartFromURL": "Bắt đầu từ URL",
+ "StartFromURLDesc": "Nhập dự án và mã của bạn từ nhiều môi trường khác nhau như GitHub, GitLab, Notebook, v.v."
}
}
diff --git a/resources/i18n/zh-CN.json b/resources/i18n/zh-CN.json
index 41bcd03bf3..f08833edec 100644
--- a/resources/i18n/zh-CN.json
+++ b/resources/i18n/zh-CN.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "输入你的电子邮箱",
"DisMatchUserEmail": "用户电子邮件不匹配",
"MyEnvironments": "我的环境",
- "ResourcePolicy": "资源政策"
+ "ResourcePolicy": "资源政策",
+ "Start": "开始"
},
"YouAreOffline": "脱机:未连接任何网络。",
"YouAreOnline": "您现在在线",
@@ -1770,5 +1771,26 @@
"hour": "小时",
"day": "day",
"week": "星期"
+ },
+ "start": {
+ "CreateFolder": "创建新的存储文件夹",
+ "button": {
+ "CreateFolder": "创建文件夹",
+ "StartSession": "开始会话",
+ "ModelService": "启动服务",
+ "StartNow": "现在开始",
+ "StartBatchSession": "从 URL 开始"
+ },
+ "CreateFolderDesc": "创建文件夹和上传文件对于训练模型或对外提供服务至关重要。\n请首先上传文件。",
+ "StartSession": "开始互动会话",
+ "StartSessionDesc": "想训练模型吗?\n单击该按钮即可立即创建会话。\n选择您喜欢的环境和资源来运行代码和其他任务。",
+ "StartBatchSession": "开始批量会话",
+ "StartBatchSessionDesc": "对于预定义文件或计划任务,请尝试批处理会话。\n输入命令,设置日期和时间,然后根据需要运行。",
+ "ModelService": "启动模型服务",
+ "ModelServiceDesc": "准备好与其他人分享您训练过的模型了吗?\n单击按钮创建服务。",
+ "StartFromExample": "从例子开始",
+ "StartFromExampleDesc": "探索各种示例代码并开始使用。",
+ "StartFromURL": "从网址开始",
+ "StartFromURLDesc": "从各种环境(例如 GitHub、GitLab、Notebook 等)导入您的项目和代码。"
}
}
diff --git a/resources/i18n/zh-TW.json b/resources/i18n/zh-TW.json
index 7fd0cbfddf..0582f04045 100644
--- a/resources/i18n/zh-TW.json
+++ b/resources/i18n/zh-TW.json
@@ -66,7 +66,8 @@
"InvalidBlankEmail": "輸入你的電子郵件信箱",
"DisMatchUserEmail": "使用者電子郵件不符",
"MyEnvironments": "我的環境",
- "ResourcePolicy": "資源政策"
+ "ResourcePolicy": "資源政策",
+ "Start": "開始"
},
"YouAreOffline": "脱机:未连接任何网络。",
"YouAreOnline": "您現在在線",
@@ -1770,5 +1771,26 @@
"hour": "小時",
"day": "day",
"week": "星期"
+ },
+ "start": {
+ "CreateFolder": "建立新的儲存資料夾",
+ "button": {
+ "CreateFolder": "建立資料夾",
+ "StartSession": "開始會話",
+ "ModelService": "啟動服務",
+ "StartNow": "現在開始",
+ "StartBatchSession": "從 URL 開始"
+ },
+ "CreateFolderDesc": "建立資料夾和上傳檔案對於訓練模型或對外提供服務至關重要。\n請先上傳文件。",
+ "StartSession": "開始互動會話",
+ "StartSessionDesc": "想訓練模型嗎?\n按一下該按鈕即可立即建立會話。\n選擇您喜歡的環境和資源來執行程式碼和其他任務。",
+ "StartBatchSession": "開始批量會話",
+ "StartBatchSessionDesc": "對於預先定義檔案或排程任務,請嘗試批次會話。\n輸入命令,設定日期和時間,然後根據需要運行。",
+ "ModelService": "啟動模型服務",
+ "ModelServiceDesc": "準備好與其他人分享您訓練過的模型了嗎?\n點選按鈕建立服務。",
+ "StartFromExample": "從例子開始",
+ "StartFromExampleDesc": "探索各種範例程式碼並開始使用。",
+ "StartFromURL": "從網址開始",
+ "StartFromURLDesc": "從各種環境(例如 GitHub、GitLab、Notebook 等)匯入您的專案和程式碼。"
}
}
diff --git a/resources/theme.json b/resources/theme.json
index 1b2c28a8b9..9d69ae15c4 100644
--- a/resources/theme.json
+++ b/resources/theme.json
@@ -57,7 +57,7 @@
"logoTitle": "WebUI",
"logoTitleCollapsed": "WebUI",
"alt": "Backend.AI Logo",
- "href": "/summary",
+ "href": "/start",
"sizeCollapsed": {
"width": 34,
"height": 34
diff --git a/src/backend-ai-app.ts b/src/backend-ai-app.ts
index 61152b6346..c014baea45 100644
--- a/src/backend-ai-app.ts
+++ b/src/backend-ai-app.ts
@@ -12,6 +12,7 @@ export const navigate =
// Extract the page name from path.
if (
[
+ '/start',
'/summary',
'/job',
'/session',
diff --git a/src/components/backend-ai-error-view.ts b/src/components/backend-ai-error-view.ts
index 447b03acb9..e00f981eef 100644
--- a/src/components/backend-ai-error-view.ts
+++ b/src/components/backend-ai-error-view.ts
@@ -70,8 +70,8 @@ export default class BackendAIErrorView extends BackendAIPage {
* @param {string} url - page to redirect from the current page.
*/
_moveTo(url = '') {
- const page = url !== '' ? url : 'summary';
- globalThis.history.pushState({}, '', '/summary');
+ const page = url !== '' ? url : 'start';
+ globalThis.history.pushState({}, '', '/start');
store.dispatch(navigate(decodeURIComponent('/' + page), {}));
document.dispatchEvent(
new CustomEvent('react-navigate', {
@@ -98,7 +98,7 @@ export default class BackendAIErrorView extends BackendAIPage {
fullwidth
id="go-to-summary"
label="${_t('button.GoBackToSummaryPage')}"
- @click="${() => this._moveTo('summary')}"
+ @click="${() => this._moveTo('start')}"
>
diff --git a/src/components/backend-ai-permission-denied-view.ts b/src/components/backend-ai-permission-denied-view.ts
index 503a11adba..21b5e1e580 100644
--- a/src/components/backend-ai-permission-denied-view.ts
+++ b/src/components/backend-ai-permission-denied-view.ts
@@ -113,8 +113,8 @@ export default class BackendAIPermissionDeniedView extends BackendAIPage {
* @param {string} url - page to redirect from the current page.
*/
_moveTo(url = '') {
- const page = url !== '' ? url : 'summary';
- globalThis.history.pushState({}, '', '/summary');
+ const page = url !== '' ? url : 'start';
+ globalThis.history.pushState({}, '', '/start');
store.dispatch(navigate(decodeURIComponent('/' + page), {}));
}
@@ -135,7 +135,7 @@ export default class BackendAIPermissionDeniedView extends BackendAIPage {
fullwidth
id="go-to-summary"
label="${_t('button.GoBackToSummaryPage')}"
- @click="${() => this._moveTo('summary')}"
+ @click="${() => this._moveTo('start')}"
>
diff --git a/src/components/backend-ai-storage-list.ts b/src/components/backend-ai-storage-list.ts
index 5bd2b27369..328de6ad14 100644
--- a/src/components/backend-ai-storage-list.ts
+++ b/src/components/backend-ai-storage-list.ts
@@ -1080,7 +1080,7 @@ export default class BackendAiStorageList extends BackendAIPage {
* @param {string} url - page to redirect from the current page.
*/
_moveTo(url = '') {
- const page = url !== '' ? url : 'summary';
+ const page = url !== '' ? url : 'start';
// globalThis.history.pushState({}, '', page);
store.dispatch(navigate(decodeURIComponent(page), {}));
diff --git a/src/components/backend-ai-storage-proxy-list.ts b/src/components/backend-ai-storage-proxy-list.ts
index 6b1c808a21..e37bd812ed 100644
--- a/src/components/backend-ai-storage-proxy-list.ts
+++ b/src/components/backend-ai-storage-proxy-list.ts
@@ -249,7 +249,7 @@ export default class BackendAIStorageProxyList extends BackendAIPage {
* @param {string} url - page to redirect from the current page.
*/
_moveTo(url = '') {
- const page = url !== '' ? url : 'summary';
+ const page = url !== '' ? url : 'start';
// globalThis.history.pushState({}, '', page);
store.dispatch(navigate(decodeURIComponent(page), {}));
diff --git a/src/components/backend-ai-summary-view.ts b/src/components/backend-ai-summary-view.ts
index fd78b7d3c9..653e39734d 100644
--- a/src/components/backend-ai-summary-view.ts
+++ b/src/components/backend-ai-summary-view.ts
@@ -469,7 +469,7 @@ export default class BackendAISummary extends BackendAIPage {
* @param {string} search
*/
_moveTo(url = '', search: string | undefined = undefined) {
- const page = url !== '' ? url : 'summary';
+ const page = url !== '' ? url : 'start';
// globalThis.history.pushState({}, '', page);
store.dispatch(navigate(decodeURIComponent(page), {}));
diff --git a/src/components/backend-ai-webui.ts b/src/components/backend-ai-webui.ts
index c0c69ba109..a0cf6a5cea 100644
--- a/src/components/backend-ai-webui.ts
+++ b/src/components/backend-ai-webui.ts
@@ -145,6 +145,7 @@ export default class BackendAIWebUI extends connect(store)(LitElement) {
@property({ type: Number }) sidepanelWidth = 250;
@property({ type: Object }) supports = Object();
@property({ type: Array }) availablePages = [
+ 'start',
'summary',
'verify-email',
'change-password',
@@ -719,7 +720,7 @@ export default class BackendAIWebUI extends connect(store)(LitElement) {
*/
_loadPageElement() {
if (this._page === 'index.html' || this._page === '') {
- this._page = 'summary';
+ this._page = 'start';
navigate(decodeURIComponent('/'));
}
}