Commit 0cbb3c15 authored by JzoNg's avatar JzoNg

feat: data source display

parent 2b9f394a
...@@ -273,11 +273,11 @@ ...@@ -273,11 +273,11 @@
@apply bg-gray-100 caret-primary-600 hover:bg-gray-100 focus:ring-1 focus:ring-inset focus:ring-gray-200 focus-visible:outline-none focus:bg-white placeholder:text-gray-400; @apply bg-gray-100 caret-primary-600 hover:bg-gray-100 focus:ring-1 focus:ring-inset focus:ring-gray-200 focus-visible:outline-none focus:bg-white placeholder:text-gray-400;
} }
.file { .source {
@apply flex justify-between items-center mt-8 px-6 py-4 rounded-xl bg-gray-50; @apply flex justify-between items-center mt-8 px-6 py-4 rounded-xl bg-gray-50;
} }
.file .divider { .source .divider {
@apply shrink-0 mx-4 w-px bg-gray-200; @apply shrink-0 mx-4 w-px bg-gray-200;
height: 42px; height: 42px;
} }
...@@ -318,9 +318,19 @@ ...@@ -318,9 +318,19 @@
.fileIcon.json { .fileIcon.json {
background-image: url(../assets/json.svg); background-image: url(../assets/json.svg);
} }
.sourceContent {
.fileContent { flex: 1 1 auto;
flex: 1 1 50%; }
.sourceCount {
@apply shrink-0 ml-1;
font-weight: 500;
font-size: 13px;
line-height: 18px;
color: #667085;
}
.segmentCount {
flex: 1 1 30%;
max-width: 120px;
} }
.divider { .divider {
......
...@@ -23,6 +23,7 @@ import Toast from '@/app/components/base/toast' ...@@ -23,6 +23,7 @@ import Toast from '@/app/components/base/toast'
import { formatNumber } from '@/utils/format' import { formatNumber } from '@/utils/format'
import type { DataSourceNotionPage } from '@/models/common' import type { DataSourceNotionPage } from '@/models/common'
import { DataSourceType } from '@/models/datasets' import { DataSourceType } from '@/models/datasets'
import NotionIcon from '@/app/components/base/notion-icon'
type Page = DataSourceNotionPage & { workspace_id: string } type Page = DataSourceNotionPage & { workspace_id: string }
...@@ -61,7 +62,7 @@ const StepTwo = ({ ...@@ -61,7 +62,7 @@ const StepTwo = ({
indexingType, indexingType,
dataSourceType, dataSourceType,
file, file,
notionPages, notionPages = [],
onStepChange, onStepChange,
updateIndexingTypeCache, updateIndexingTypeCache,
updateResultCache, updateResultCache,
...@@ -178,22 +179,6 @@ const StepTwo = ({ ...@@ -178,22 +179,6 @@ const StepTwo = ({
return processRule return processRule
} }
const getFileIndexingEstimateParams = () => {
// TODO
const params = {
info_list: {
data_source_type: dataSourceType,
file_info_list: [{
file_id: file?.id,
}],
},
dataset_id: datasetId,
indexing_technique: getIndexing_technique(),
process_rule: getProcessRule(),
}
return params
}
const getNotionInfo = () => { const getNotionInfo = () => {
const workspacesMap = groupBy(notionPages, 'workspace_id') const workspacesMap = groupBy(notionPages, 'workspace_id')
const workspaces = Object.keys(workspacesMap).map((workspaceId) => { const workspaces = Object.keys(workspacesMap).map((workspaceId) => {
...@@ -218,6 +203,34 @@ const StepTwo = ({ ...@@ -218,6 +203,34 @@ const StepTwo = ({
}) as NotionInfo[] }) as NotionInfo[]
} }
const getFileIndexingEstimateParams = () => {
let params
if (dataSourceType === DataSourceType.FILE) {
params = {
info_list: {
data_source_type: dataSourceType,
file_info_list: {
// TODO multi files
file_ids: [file?.id || ''],
},
},
indexing_technique: getIndexing_technique(),
process_rule: getProcessRule(),
}
}
if (dataSourceType === DataSourceType.NOTION) {
params = {
info_list: {
data_source_type: dataSourceType,
notion_info_list: getNotionInfo(),
},
indexing_technique: getIndexing_technique(),
process_rule: getProcessRule(),
}
}
return params
}
const getCreationParams = () => { const getCreationParams = () => {
let params let params
if (isSetting) { if (isSetting) {
...@@ -312,6 +325,17 @@ const StepTwo = ({ ...@@ -312,6 +325,17 @@ const StepTwo = ({
} }
} }
const getIcon = () => {
let iconSrc
if (notionPages.length > 0) {
if (notionPages[0].page_icon && notionPages[0].page_icon.type === 'url')
iconSrc = notionPages[0].page_icon.url
if (notionPages[0].page_icon && notionPages[0].page_icon.type === 'emoji')
iconSrc = notionPages[0].page_icon.emoji
}
return iconSrc
}
useEffect(() => { useEffect(() => {
// fetch rules // fetch rules
if (!isSetting) { if (!isSetting) {
...@@ -367,7 +391,6 @@ const StepTwo = ({ ...@@ -367,7 +391,6 @@ const StepTwo = ({
<div className={cn(s.form)}> <div className={cn(s.form)}>
<div className={s.label}>{t('datasetCreation.stepTwo.segmentation')}</div> <div className={s.label}>{t('datasetCreation.stepTwo.segmentation')}</div>
<div className='max-w-[640px]'> <div className='max-w-[640px]'>
<div <div
className={cn( className={cn(
s.radioItem, s.radioItem,
...@@ -515,16 +538,41 @@ const StepTwo = ({ ...@@ -515,16 +538,41 @@ const StepTwo = ({
<Link className='text-[#155EEF]' href={`/datasets/${datasetId}/settings`}>{t('datasetCreation.stepTwo.datasetSettingLink')}</Link> <Link className='text-[#155EEF]' href={`/datasets/${datasetId}/settings`}>{t('datasetCreation.stepTwo.datasetSettingLink')}</Link>
</div> </div>
)} )}
<div className={s.file}> {/* TODO multi files */}
<div className={s.fileContent}> <div className={s.source}>
<div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.fileName')}</div> <div className={s.sourceContent}>
<div className='flex items-center text-sm leading-6 font-medium text-gray-800'> {dataSourceType === DataSourceType.FILE && (
<span className={cn(s.fileIcon, file && s[file.extension])} /> <>
{getFileName(file?.name || '')} <div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.fileSource')}</div>
</div> <div className='flex items-center text-sm leading-6 font-medium text-gray-800'>
<span className={cn(s.fileIcon, file && s[file.extension])} />
{getFileName(file?.name || '')}
</div>
</>
)}
{dataSourceType === DataSourceType.NOTION && (
<>
<div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.notionSource')}</div>
<div className='flex items-center text-sm leading-6 font-medium text-gray-800'>
<NotionIcon
className='shrink-0 mr-1'
type='page'
src={getIcon()}
/>
{notionPages[0]?.page_name}
{notionPages.length > 1 && (
<span className={s.sourceCount}>
<span>{t('datasetCreation.stepTwo.other')}</span>
<span>{notionPages.length - 1}</span>
<span>{t('datasetCreation.stepTwo.notionUnit')}</span>
</span>
)}
</div>
</>
)}
</div> </div>
<div className={s.divider} /> <div className={s.divider} />
<div className={s.fileContent}> <div className={s.segmentCount}>
<div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.emstimateSegment')}</div> <div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.emstimateSegment')}</div>
<div className='flex items-center text-sm leading-6 font-medium text-gray-800'> <div className='flex items-center text-sm leading-6 font-medium text-gray-800'>
{ {
......
...@@ -77,7 +77,11 @@ const translation = { ...@@ -77,7 +77,11 @@ const translation = {
emstimateSegment: 'Estimated segments', emstimateSegment: 'Estimated segments',
segmentCount: 'segments', segmentCount: 'segments',
calculating: 'Calculating...', calculating: 'Calculating...',
fileName: 'Preprocess document', fileSource: 'Preprocess documents',
notionSource: 'Preprocess pages',
other: 'and other ',
fileUnit: ' files',
notionUnit: ' pages',
lastStep: 'Last step', lastStep: 'Last step',
nextStep: 'Save & Process', nextStep: 'Save & Process',
save: 'Save & Process', save: 'Save & Process',
......
...@@ -77,7 +77,11 @@ const translation = { ...@@ -77,7 +77,11 @@ const translation = {
emstimateSegment: '预估分段数', emstimateSegment: '预估分段数',
segmentCount: '段', segmentCount: '段',
calculating: '计算中...', calculating: '计算中...',
fileName: '预处理文档', fileSource: '预处理文档',
notionSource: '预处理页面',
other: '和其他 ',
fileUnit: ' 个文件',
notionUnit: ' 个页面',
lastStep: '上一步', lastStep: '上一步',
nextStep: '保存并处理', nextStep: '保存并处理',
save: '保存并处理', save: '保存并处理',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment