diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/page.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/page.tsx
index 2bd2a356cc..5a6894bc63 100644
--- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/page.tsx
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/page.tsx
@@ -2,14 +2,14 @@ import React from 'react'
import MainDetail from '@/app/components/datasets/documents/detail'
export type IDocumentDetailProps = {
- params: { datasetId: string; documentId: string }
+ params: Promise<{ datasetId: string; documentId: string }>
}
const DocumentDetail = async ({
- params: { datasetId, documentId },
+ params,
}: IDocumentDetailProps) => {
return (
-
+
)
}
diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/settings/page.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/settings/page.tsx
index 2194934ad1..72f3ede729 100644
--- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/settings/page.tsx
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/[documentId]/settings/page.tsx
@@ -2,14 +2,14 @@ import React from 'react'
import Settings from '@/app/components/datasets/documents/detail/settings'
export type IProps = {
- params: { datasetId: string; documentId: string }
+ params: Promise<{ datasetId: string; documentId: string }>
}
const DocumentSettings = async ({
- params: { datasetId, documentId },
+ params,
}: IProps) => {
return (
-
+
)
}
diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/create/page.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/create/page.tsx
index e249632bfa..3479b45168 100644
--- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/create/page.tsx
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/create/page.tsx
@@ -2,14 +2,14 @@ import React from 'react'
import DatasetUpdateForm from '@/app/components/datasets/create'
export type IProps = {
- params: { datasetId: string }
+ params: Promise<{ datasetId: string }>
}
const Create = async ({
- params: { datasetId },
+ params,
}: IProps) => {
return (
-
+
)
}
diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/page.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/page.tsx
index 545e9ed378..260afd0b83 100644
--- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/page.tsx
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/documents/page.tsx
@@ -2,14 +2,14 @@ import React from 'react'
import Main from '@/app/components/datasets/documents'
export type IProps = {
- params: { datasetId: string }
+ params: Promise<{ datasetId: string }>
}
const Documents = async ({
- params: { datasetId },
+ params,
}: IProps) => {
return (
-
+
)
}
diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/hitTesting/page.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/hitTesting/page.tsx
index bec07e41b9..972ca7083f 100644
--- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/hitTesting/page.tsx
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/hitTesting/page.tsx
@@ -2,14 +2,14 @@ import React from 'react'
import Main from '@/app/components/datasets/hit-testing'
type Props = {
- params: { datasetId: string }
+ params: Promise<{ datasetId: string }>
}
-const HitTesting = ({
- params: { datasetId },
+const HitTesting = async ({
+ params,
}: Props) => {
return (
-
+
)
}
diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx
new file mode 100644
index 0000000000..2e212ebb01
--- /dev/null
+++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx
@@ -0,0 +1,228 @@
+'use client'
+import type { FC, SVGProps } from 'react'
+import React, { useEffect, useMemo } from 'react'
+import { usePathname } from 'next/navigation'
+import useSWR from 'swr'
+import { useTranslation } from 'react-i18next'
+import { useBoolean } from 'ahooks'
+import {
+ Cog8ToothIcon,
+ DocumentTextIcon,
+ PaperClipIcon,
+} from '@heroicons/react/24/outline'
+import {
+ Cog8ToothIcon as Cog8ToothSolidIcon,
+ // CommandLineIcon as CommandLineSolidIcon,
+ DocumentTextIcon as DocumentTextSolidIcon,
+} from '@heroicons/react/24/solid'
+import { RiApps2AddLine, RiInformation2Line } from '@remixicon/react'
+import s from './style.module.css'
+import classNames from '@/utils/classnames'
+import { fetchDatasetDetail, fetchDatasetRelatedApps } from '@/service/datasets'
+import type { RelatedAppResponse } from '@/models/datasets'
+import AppSideBar from '@/app/components/app-sidebar'
+import Loading from '@/app/components/base/loading'
+import DatasetDetailContext from '@/context/dataset-detail'
+import { DataSourceType } from '@/models/datasets'
+import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
+import { LanguagesSupported } from '@/i18n/language'
+import { useStore } from '@/app/components/app/store'
+import { getLocaleOnClient } from '@/i18n'
+import { useAppContext } from '@/context/app-context'
+import Tooltip from '@/app/components/base/tooltip'
+import LinkedAppsPanel from '@/app/components/base/linked-apps-panel'
+
+export type IAppDetailLayoutProps = {
+ children: React.ReactNode
+ datasetId: string
+}
+
+const TargetIcon = ({ className }: SVGProps
) => {
+ return
+}
+
+const TargetSolidIcon = ({ className }: SVGProps) => {
+ return
+}
+
+const BookOpenIcon = ({ className }: SVGProps) => {
+ return
+}
+
+type IExtraInfoProps = {
+ isMobile: boolean
+ relatedApps?: RelatedAppResponse
+ expand: boolean
+}
+
+const ExtraInfo = ({ isMobile, relatedApps, expand }: IExtraInfoProps) => {
+ const locale = getLocaleOnClient()
+ const [isShowTips, { toggle: toggleTips, set: setShowTips }] = useBoolean(!isMobile)
+ const { t } = useTranslation()
+
+ const hasRelatedApps = relatedApps?.data && relatedApps?.data?.length > 0
+ const relatedAppsTotal = relatedApps?.data?.length || 0
+
+ useEffect(() => {
+ setShowTips(!isMobile)
+ }, [isMobile, setShowTips])
+
+ return
+ {hasRelatedApps && (
+ <>
+ {!isMobile && (
+
+ }
+ >
+
+ {relatedAppsTotal || '--'} {t('common.datasetMenus.relatedApp')}
+
+
+
+ )}
+
+ {isMobile &&
+ {relatedAppsTotal || '--'}
+
+
}
+ >
+ )}
+ {!hasRelatedApps && !expand && (
+
+
+
+
+ {t('common.datasetMenus.emptyTip')}
+
+
+ {t('common.datasetMenus.viewDoc')}
+
+
+ }
+ >
+
+ {t('common.datasetMenus.noRelatedApp')}
+
+
+
+ )}
+
+}
+
+const DatasetDetailLayout: FC