fix: update keyboard shortcut and clean up component structure in various files

feat/rag-2
twwu 10 months ago
parent 59f68cd63b
commit 9f2a9ad271

@ -68,7 +68,7 @@ const AppDetailNav = ({
} }
}, [appSidebarExpand, setAppSidebarExpand]) }, [appSidebarExpand, setAppSidebarExpand])
useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.shift.b`, (e) => { useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.b`, (e) => {
e.preventDefault() e.preventDefault()
handleToggle() handleToggle()
}, { exactMatch: true, useCapture: true }) }, { exactMatch: true, useCapture: true })

@ -7,7 +7,7 @@ const DatasetFooter = () => {
const { t } = useTranslation() const { t } = useTranslation()
return ( return (
<footer className='shrink-0 grow-0 px-12 py-6'> <footer className='shrink-0 px-12 py-6'>
<h3 className='text-gradient text-xl font-semibold leading-tight'>{t('dataset.didYouKnow')}</h3> <h3 className='text-gradient text-xl font-semibold leading-tight'>{t('dataset.didYouKnow')}</h3>
<p className='mt-1 text-sm font-normal leading-tight text-text-secondary'> <p className='mt-1 text-sm font-normal leading-tight text-text-secondary'>
{t('dataset.intro1')}<span className='inline-flex items-center gap-1 text-text-accent'>{t('dataset.intro2')}</span>{t('dataset.intro3')}<br /> {t('dataset.intro1')}<span className='inline-flex items-center gap-1 text-text-accent'>{t('dataset.intro2')}</span>{t('dataset.intro3')}<br />

@ -8,7 +8,6 @@ import { useSelector as useAppContextWithSelector } from '@/context/app-context'
import { useDatasetList, useResetDatasetList } from '@/service/knowledge/use-dataset' import { useDatasetList, useResetDatasetList } from '@/service/knowledge/use-dataset'
type Props = { type Props = {
containerRef: React.RefObject<HTMLDivElement>
tags: string[] tags: string[]
keywords: string keywords: string
includeAll: boolean includeAll: boolean
@ -57,13 +56,13 @@ const Datasets = ({
return ( return (
<> <>
<nav className='grid shrink-0 grow grid-cols-1 content-start gap-3 px-12 pt-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4'> <nav className='grid grow grid-cols-1 content-start gap-3 px-12 pt-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4'>
{isCurrentWorkspaceEditor && <NewDatasetCard />} {isCurrentWorkspaceEditor && <NewDatasetCard />}
{datasetList?.pages.map(({ data: datasets }) => datasets.map(dataset => ( {datasetList?.pages.map(({ data: datasets }) => datasets.map(dataset => (
<DatasetCard key={dataset.id} dataset={dataset} onSuccess={resetDatasetList} />), <DatasetCard key={dataset.id} dataset={dataset} onSuccess={resetDatasetList} />),
))} ))}
</nav>
<div ref={anchorRef} className='h-0' /> <div ref={anchorRef} className='h-0' />
</nav>
</> </>
) )
} }

@ -83,26 +83,26 @@ const Doc = ({ apiBaseUrl }: DocProps) => {
}, [apiBaseUrl, locale]) }, [apiBaseUrl, locale])
return ( return (
<div className="flex"> <div className='flex'>
<div className={`fixed right-20 top-32 z-10 transition-all ${isTocExpanded ? 'w-64' : 'w-10'}`}> <div className={`fixed right-20 top-32 z-10 transition-all ${isTocExpanded ? 'w-64' : 'w-10'}`}>
{isTocExpanded {isTocExpanded
? ( ? (
<nav className="toc max-h-[calc(100vh-150px)] w-full overflow-y-auto rounded-lg bg-components-panel-bg p-4 shadow-md"> <nav className='toc max-h-[calc(100vh-150px)] w-full overflow-y-auto rounded-lg bg-components-panel-bg p-4 shadow-md'>
<div className="mb-4 flex items-center justify-between"> <div className='mb-4 flex items-center justify-between'>
<h3 className="text-lg font-semibold text-text-primary">{t('appApi.develop.toc')}</h3> <h3 className='text-lg font-semibold text-text-primary'>{t('appApi.develop.toc')}</h3>
<button <button
onClick={() => setIsTocExpanded(false)} onClick={() => setIsTocExpanded(false)}
className="text-text-tertiary hover:text-text-secondary" className='text-text-tertiary hover:text-text-secondary'
> >
</button> </button>
</div> </div>
<ul className="space-y-2"> <ul className='space-y-2'>
{toc.map((item, index) => ( {toc.map((item, index) => (
<li key={index}> <li key={index}>
<a <a
href={item.href} href={item.href}
className="text-text-secondary transition-colors duration-200 hover:text-text-primary hover:underline" className='text-text-secondary transition-colors duration-200 hover:text-text-primary hover:underline'
onClick={e => handleTocClick(e, item)} onClick={e => handleTocClick(e, item)}
> >
{item.text} {item.text}
@ -115,13 +115,18 @@ const Doc = ({ apiBaseUrl }: DocProps) => {
: ( : (
<button <button
onClick={() => setIsTocExpanded(true)} onClick={() => setIsTocExpanded(true)}
className="flex h-10 w-10 items-center justify-center rounded-full bg-components-button-secondary-bg shadow-md transition-colors duration-200 hover:bg-components-button-secondary-bg-hover" className='flex h-10 w-10 items-center justify-center rounded-full bg-components-button-secondary-bg shadow-md transition-colors duration-200 hover:bg-components-button-secondary-bg-hover'
> >
<RiListUnordered className="h-6 w-6 text-components-button-secondary-text" /> <RiListUnordered className='h-6 w-6 text-components-button-secondary-text' />
</button> </button>
)} )}
</div> </div>
<article className={cn('prose-xl prose mx-1 rounded-t-xl bg-background-default px-4 pt-16 sm:mx-12', theme === Theme.dark && 'prose-invert')}> <article
className={cn(
'prose-xl prose mx-1 rounded-t-xl bg-background-default px-4 pt-16 sm:mx-12',
theme === Theme.dark && 'prose-invert',
)}
>
{Template} {Template}
</article> </article>
</div> </div>

@ -1,7 +1,7 @@
'use client' 'use client'
// Libraries // Libraries
import { useEffect, useMemo, useRef, useState } from 'react' import { useEffect, useMemo, useState } from 'react'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useBoolean, useDebounceFn } from 'ahooks' import { useBoolean, useDebounceFn } from 'ahooks'
@ -55,7 +55,6 @@ const List = () => {
const [activeTab, setActiveTab] = useTabSearchParams({ const [activeTab, setActiveTab] = useTabSearchParams({
defaultTab: 'dataset', defaultTab: 'dataset',
}) })
const containerRef = useRef<HTMLDivElement>(null)
const { data } = useQuery( const { data } = useQuery(
{ {
queryKey: ['datasetApiBaseInfo'], queryKey: ['datasetApiBaseInfo'],
@ -89,7 +88,7 @@ const List = () => {
}, [currentWorkspace, router]) }, [currentWorkspace, router])
return ( return (
<div ref={containerRef} className='scroll-container relative flex grow flex-col overflow-y-auto bg-background-body'> <div className='scroll-container relative flex grow flex-col overflow-y-auto bg-background-body'>
<div className='sticky top-0 z-10 flex items-center justify-between gap-x-1 bg-background-body px-12 pb-2 pt-4'> <div className='sticky top-0 z-10 flex items-center justify-between gap-x-1 bg-background-body px-12 pb-2 pt-4'>
<SegmentedControl <SegmentedControl
value={activeTab} value={activeTab}
@ -131,7 +130,7 @@ const List = () => {
</div> </div>
{activeTab === 'dataset' && ( {activeTab === 'dataset' && (
<> <>
<Datasets containerRef={containerRef} tags={tagIDs} keywords={searchKeywords} includeAll={includeAll} /> <Datasets tags={tagIDs} keywords={searchKeywords} includeAll={includeAll} />
{!systemFeatures.branding.enabled && <DatasetFooter />} {!systemFeatures.branding.enabled && <DatasetFooter />}
{showTagManagementModal && ( {showTagManagementModal && (
<TagManagementModal type='knowledge' show={showTagManagementModal} /> <TagManagementModal type='knowledge' show={showTagManagementModal} />

@ -53,7 +53,7 @@ export const useChunkStructure = () => {
const options = [ const options = [
GeneralOption, GeneralOption,
ParentChildOption, ParentChildOption,
// QuestionAnswerOption, QuestionAnswerOption,
] ]
return { return {

@ -12,12 +12,26 @@ const Node: FC<NodeProps<KnowledgeBaseNodeType>> = ({ data }) => {
return ( return (
<div className='mb-1 space-y-0.5 px-3 py-1'> <div className='mb-1 space-y-0.5 px-3 py-1'>
<div className='flex h-6 items-center rounded-md bg-workflow-block-parma-bg px-1.5'> <div className='flex h-6 items-center rounded-md bg-workflow-block-parma-bg px-1.5'>
<div className='system-xs-medium-uppercase mr-2 shrink-0 text-text-tertiary'>{t('datasetCreation.stepTwo.indexMode')}</div> <div className='system-xs-medium-uppercase mr-2 shrink-0 text-text-tertiary'>
<div className='system-xs-medium grow truncate text-right text-text-secondary' title={data.indexing_technique}>{settingsDisplay[data.indexing_technique]}</div> {t('datasetCreation.stepTwo.indexMode')}
</div>
<div
className='system-xs-medium grow truncate text-right text-text-secondary'
title={data.indexing_technique}
>
{settingsDisplay[data.indexing_technique as keyof typeof settingsDisplay]}
</div>
</div> </div>
<div className='flex h-6 items-center rounded-md bg-workflow-block-parma-bg px-1.5'> <div className='flex h-6 items-center rounded-md bg-workflow-block-parma-bg px-1.5'>
<div className='system-xs-medium-uppercase mr-2 shrink-0 text-text-tertiary'>{t('datasetSettings.form.retrievalSetting.title')}</div> <div className='system-xs-medium-uppercase mr-2 shrink-0 text-text-tertiary'>
<div className='system-xs-medium grow truncate text-right text-text-secondary' title={data.retrieval_model.search_method}>{(settingsDisplay as Record<string, string>)[data.retrieval_model.search_method]}</div> {t('datasetSettings.form.retrievalSetting.title')}
</div>
<div
className='system-xs-medium grow truncate text-right text-text-secondary'
title={data.retrieval_model.search_method}
>
{settingsDisplay[data.retrieval_model.search_method as keyof typeof settingsDisplay]}
</div>
</div> </div>
</div> </div>
) )

Loading…
Cancel
Save