mirror of
https://github.com/langgenius/dify.git
synced 2026-04-24 00:59:19 +08:00
Merge branch 'feat/support-free-try-app' of github.com:langgenius/dify into feat/support-free-try-app
This commit is contained in:
commit
df4e32aaa0
@ -33,7 +33,7 @@ const VarItem: FC<ItemProps> = ({
|
|||||||
const [isDeleting, setIsDeleting] = useState(false)
|
const [isDeleting, setIsDeleting] = useState(false)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn('group relative mb-1 flex h-[34px] w-full items-center rounded-lg border-[0.5px] border-components-panel-border-subtle bg-components-panel-on-panel-item-bg pl-2.5 pr-3 shadow-xs last-of-type:mb-0 hover:bg-components-panel-on-panel-item-bg-hover hover:shadow-sm', isDeleting && 'border-state-destructive-border hover:bg-state-destructive-hover', readonly && 'cursor-not-allowed opacity-30')}>
|
<div className={cn('group relative mb-1 flex h-[34px] w-full items-center rounded-lg border-[0.5px] border-components-panel-border-subtle bg-components-panel-on-panel-item-bg pl-2.5 pr-3 shadow-xs last-of-type:mb-0 hover:bg-components-panel-on-panel-item-bg-hover hover:shadow-sm', isDeleting && 'border-state-destructive-border hover:bg-state-destructive-hover', readonly && 'cursor-not-allowed')}>
|
||||||
<VarIcon className='mr-1 h-4 w-4 shrink-0 text-text-accent' />
|
<VarIcon className='mr-1 h-4 w-4 shrink-0 text-text-accent' />
|
||||||
<div className='flex w-0 grow items-center'>
|
<div className='flex w-0 grow items-center'>
|
||||||
<div className='truncate' title={`${name} · ${label}`}>
|
<div className='truncate' title={`${name} · ${label}`}>
|
||||||
|
|||||||
@ -79,7 +79,8 @@ const Config: FC = () => {
|
|||||||
|
|
||||||
{/* Dataset */}
|
{/* Dataset */}
|
||||||
<DatasetConfig
|
<DatasetConfig
|
||||||
// readonly={readonly}
|
readonly={readonly}
|
||||||
|
hideMetadataFilter={readonly}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Tools */}
|
{/* Tools */}
|
||||||
|
|||||||
@ -29,6 +29,7 @@ const Item: FC<ItemProps> = ({
|
|||||||
config,
|
config,
|
||||||
onSave,
|
onSave,
|
||||||
onRemove,
|
onRemove,
|
||||||
|
readonly = false,
|
||||||
editable = true,
|
editable = true,
|
||||||
}) => {
|
}) => {
|
||||||
const media = useBreakpoints()
|
const media = useBreakpoints()
|
||||||
@ -55,6 +56,7 @@ const Item: FC<ItemProps> = ({
|
|||||||
<div className={cn(
|
<div className={cn(
|
||||||
'group relative mb-1 flex h-10 w-full cursor-pointer items-center justify-between rounded-lg border-[0.5px] border-components-panel-border-subtle bg-components-panel-on-panel-item-bg px-2 last-of-type:mb-0 hover:bg-components-panel-on-panel-item-bg-hover',
|
'group relative mb-1 flex h-10 w-full cursor-pointer items-center justify-between rounded-lg border-[0.5px] border-components-panel-border-subtle bg-components-panel-on-panel-item-bg px-2 last-of-type:mb-0 hover:bg-components-panel-on-panel-item-bg-hover',
|
||||||
isDeleting && 'border-state-destructive-border hover:bg-state-destructive-hover',
|
isDeleting && 'border-state-destructive-border hover:bg-state-destructive-hover',
|
||||||
|
readonly && 'cursor-not-allowed',
|
||||||
)}>
|
)}>
|
||||||
<div className='flex w-0 grow items-center space-x-1.5'>
|
<div className='flex w-0 grow items-center space-x-1.5'>
|
||||||
<AppIcon
|
<AppIcon
|
||||||
@ -68,7 +70,7 @@ const Item: FC<ItemProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
<div className='ml-2 hidden shrink-0 items-center space-x-1 group-hover:flex'>
|
<div className='ml-2 hidden shrink-0 items-center space-x-1 group-hover:flex'>
|
||||||
{
|
{
|
||||||
editable && <ActionButton
|
editable && !readonly && <ActionButton
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
setShowSettingsModal(true)
|
setShowSettingsModal(true)
|
||||||
@ -77,14 +79,18 @@ const Item: FC<ItemProps> = ({
|
|||||||
<RiEditLine className='h-4 w-4 shrink-0 text-text-tertiary' />
|
<RiEditLine className='h-4 w-4 shrink-0 text-text-tertiary' />
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
}
|
}
|
||||||
<ActionButton
|
{
|
||||||
onClick={() => onRemove(config.id)}
|
!readonly && (
|
||||||
state={isDeleting ? ActionButtonState.Destructive : ActionButtonState.Default}
|
<ActionButton
|
||||||
onMouseEnter={() => setIsDeleting(true)}
|
onClick={() => onRemove(config.id)}
|
||||||
onMouseLeave={() => setIsDeleting(false)}
|
state={isDeleting ? ActionButtonState.Destructive : ActionButtonState.Default}
|
||||||
>
|
onMouseEnter={() => setIsDeleting(true)}
|
||||||
<RiDeleteBinLine className={cn('h-4 w-4 shrink-0 text-text-tertiary', isDeleting && 'text-text-destructive')} />
|
onMouseLeave={() => setIsDeleting(false)}
|
||||||
</ActionButton>
|
>
|
||||||
|
<RiDeleteBinLine className={cn('h-4 w-4 shrink-0 text-text-tertiary', isDeleting && 'text-text-destructive')} />
|
||||||
|
</ActionButton>
|
||||||
|
)
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
{
|
{
|
||||||
config.indexing_technique && <Badge
|
config.indexing_technique && <Badge
|
||||||
|
|||||||
@ -37,7 +37,11 @@ import {
|
|||||||
MetadataFilteringVariableType,
|
MetadataFilteringVariableType,
|
||||||
} from '@/app/components/workflow/nodes/knowledge-retrieval/types'
|
} from '@/app/components/workflow/nodes/knowledge-retrieval/types'
|
||||||
|
|
||||||
const DatasetConfig: FC = () => {
|
type Props = {
|
||||||
|
readonly?: boolean
|
||||||
|
hideMetadataFilter?: boolean
|
||||||
|
}
|
||||||
|
const DatasetConfig: FC<Props> = ({ readonly, hideMetadataFilter }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const userProfile = useAppContextSelector(s => s.userProfile)
|
const userProfile = useAppContextSelector(s => s.userProfile)
|
||||||
const {
|
const {
|
||||||
@ -254,10 +258,10 @@ const DatasetConfig: FC = () => {
|
|||||||
className='mt-2'
|
className='mt-2'
|
||||||
title={t('appDebug.feature.dataSet.title')}
|
title={t('appDebug.feature.dataSet.title')}
|
||||||
headerRight={
|
headerRight={
|
||||||
<div className='flex items-center gap-1'>
|
!readonly && (<div className='flex items-center gap-1'>
|
||||||
{!isAgent && <ParamsConfig disabled={!hasData} selectedDatasets={dataSet} />}
|
{!isAgent && <ParamsConfig disabled={!hasData} selectedDatasets={dataSet} />}
|
||||||
<OperationBtn type="add" onClick={showSelectDataSet} />
|
<OperationBtn type="add" onClick={showSelectDataSet} />
|
||||||
</div>
|
</div>)
|
||||||
}
|
}
|
||||||
hasHeaderBottomBorder={!hasData}
|
hasHeaderBottomBorder={!hasData}
|
||||||
noBodySpacing
|
noBodySpacing
|
||||||
@ -271,7 +275,8 @@ const DatasetConfig: FC = () => {
|
|||||||
config={item}
|
config={item}
|
||||||
onRemove={onRemove}
|
onRemove={onRemove}
|
||||||
onSave={handleSave}
|
onSave={handleSave}
|
||||||
editable={item.editable}
|
editable={item.editable && !readonly}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
@ -282,25 +287,27 @@ const DatasetConfig: FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className='border-t border-t-divider-subtle py-2'>
|
{!hideMetadataFilter && (
|
||||||
<MetadataFilter
|
<div className='border-t border-t-divider-subtle py-2'>
|
||||||
metadataList={metadataList}
|
<MetadataFilter
|
||||||
selectedDatasetsLoaded
|
metadataList={metadataList}
|
||||||
metadataFilterMode={datasetConfigs.metadata_filtering_mode}
|
selectedDatasetsLoaded
|
||||||
metadataFilteringConditions={datasetConfigs.metadata_filtering_conditions}
|
metadataFilterMode={datasetConfigs.metadata_filtering_mode}
|
||||||
handleAddCondition={handleAddCondition}
|
metadataFilteringConditions={datasetConfigs.metadata_filtering_conditions}
|
||||||
handleMetadataFilterModeChange={handleMetadataFilterModeChange}
|
handleAddCondition={handleAddCondition}
|
||||||
handleRemoveCondition={handleRemoveCondition}
|
handleMetadataFilterModeChange={handleMetadataFilterModeChange}
|
||||||
handleToggleConditionLogicalOperator={handleToggleConditionLogicalOperator}
|
handleRemoveCondition={handleRemoveCondition}
|
||||||
handleUpdateCondition={handleUpdateCondition}
|
handleToggleConditionLogicalOperator={handleToggleConditionLogicalOperator}
|
||||||
metadataModelConfig={datasetConfigs.metadata_model_config}
|
handleUpdateCondition={handleUpdateCondition}
|
||||||
handleMetadataModelChange={handleMetadataModelChange}
|
metadataModelConfig={datasetConfigs.metadata_model_config}
|
||||||
handleMetadataCompletionParamsChange={handleMetadataCompletionParamsChange}
|
handleMetadataModelChange={handleMetadataModelChange}
|
||||||
isCommonVariable
|
handleMetadataCompletionParamsChange={handleMetadataCompletionParamsChange}
|
||||||
availableCommonStringVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.string || item.type === MetadataFilteringVariableType.select)}
|
isCommonVariable
|
||||||
availableCommonNumberVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.number)}
|
availableCommonStringVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.string || item.type === MetadataFilteringVariableType.select)}
|
||||||
/>
|
availableCommonNumberVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.number)}
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{mode === AppType.completion && dataSet.length > 0 && (
|
{mode === AppType.completion && dataSet.length > 0 && (
|
||||||
<ContextVar
|
<ContextVar
|
||||||
|
|||||||
@ -70,6 +70,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const {
|
const {
|
||||||
|
readonly,
|
||||||
appId,
|
appId,
|
||||||
mode,
|
mode,
|
||||||
modelModeType,
|
modelModeType,
|
||||||
@ -413,19 +414,23 @@ const Debug: FC<IDebug> = ({
|
|||||||
}
|
}
|
||||||
{mode !== AppType.completion && (
|
{mode !== AppType.completion && (
|
||||||
<>
|
<>
|
||||||
<TooltipPlus
|
{!readonly && (
|
||||||
popupContent={t('common.operation.refresh')}
|
<TooltipPlus
|
||||||
>
|
popupContent={t('common.operation.refresh')}
|
||||||
<ActionButton onClick={clearConversation}>
|
>
|
||||||
<RefreshCcw01 className='h-4 w-4' />
|
<ActionButton onClick={clearConversation}>
|
||||||
</ActionButton>
|
<RefreshCcw01 className='h-4 w-4' />
|
||||||
</TooltipPlus>
|
</ActionButton>
|
||||||
|
|
||||||
|
</TooltipPlus>
|
||||||
|
)}
|
||||||
|
|
||||||
{varList.length > 0 && (
|
{varList.length > 0 && (
|
||||||
<div className='relative ml-1 mr-2'>
|
<div className='relative ml-1 mr-2'>
|
||||||
<TooltipPlus
|
<TooltipPlus
|
||||||
popupContent={t('workflow.panel.userInputField')}
|
popupContent={t('workflow.panel.userInputField')}
|
||||||
>
|
>
|
||||||
<ActionButton state={expanded ? ActionButtonState.Active : undefined} onClick={() => setExpanded(!expanded)}>
|
<ActionButton state={expanded ? ActionButtonState.Active : undefined} onClick={() => !readonly && setExpanded(!expanded)}>
|
||||||
<RiEqualizer2Line className='h-4 w-4' />
|
<RiEqualizer2Line className='h-4 w-4' />
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</TooltipPlus>
|
</TooltipPlus>
|
||||||
@ -553,7 +558,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{!isAPIKeySet && (<HasNotSetAPIKEY isTrailFinished={!IS_CE_EDITION} onSetting={onSetting} />)}
|
{!isAPIKeySet && !readonly && (<HasNotSetAPIKEY isTrailFinished={!IS_CE_EDITION} onSetting={onSetting} />)}
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -305,7 +305,7 @@ const Configuration: FC<Props> = ({
|
|||||||
return (
|
return (
|
||||||
<ConfigContext.Provider value={value as any}>
|
<ConfigContext.Provider value={value as any}>
|
||||||
<FeaturesProvider features={featuresData}>
|
<FeaturesProvider features={featuresData}>
|
||||||
<div className="flex h-full flex-col">
|
<div className="flex h-full flex-col bg-components-panel-on-panel-item-bg">
|
||||||
<div className='relative flex h-[200px] grow'>
|
<div className='relative flex h-[200px] grow'>
|
||||||
<div className={'flex h-full w-full shrink-0 flex-col sm:w-1/2'}>
|
<div className={'flex h-full w-full shrink-0 flex-col sm:w-1/2'}>
|
||||||
<Config />
|
<Config />
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user