mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat: Update Checkpoint Model Edit to use config picker
This commit is contained in:
parent
5351171d0e
commit
92029e69c6
@ -16,14 +16,13 @@ import {
|
|||||||
ASSETS_CATEGORIES,
|
ASSETS_CATEGORIES,
|
||||||
IMAGE_CATEGORIES,
|
IMAGE_CATEGORIES,
|
||||||
IMAGE_LIMIT,
|
IMAGE_LIMIT,
|
||||||
selectImagesAll,
|
|
||||||
} from 'features/gallery//store/gallerySlice';
|
} from 'features/gallery//store/gallerySlice';
|
||||||
import { selectFilteredImages } from 'features/gallery/store/gallerySelectors';
|
import { selectFilteredImages } from 'features/gallery/store/gallerySelectors';
|
||||||
import { VirtuosoGrid } from 'react-virtuoso';
|
import { VirtuosoGrid } from 'react-virtuoso';
|
||||||
import { receivedPageOfImages } from 'services/api/thunks/image';
|
import { receivedPageOfImages } from 'services/api/thunks/image';
|
||||||
|
import { useListBoardImagesQuery } from '../../../../services/api/endpoints/boardImages';
|
||||||
import ImageGridItemContainer from './ImageGridItemContainer';
|
import ImageGridItemContainer from './ImageGridItemContainer';
|
||||||
import ImageGridListContainer from './ImageGridListContainer';
|
import ImageGridListContainer from './ImageGridListContainer';
|
||||||
import { useListBoardImagesQuery } from '../../../../services/api/endpoints/boardImages';
|
|
||||||
|
|
||||||
const selector = createSelector(
|
const selector = createSelector(
|
||||||
[stateSelector, selectFilteredImages],
|
[stateSelector, selectFilteredImages],
|
||||||
@ -180,7 +179,6 @@ const GalleryImageGrid = () => {
|
|||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
console.log({ selectedBoardId });
|
|
||||||
|
|
||||||
if (status !== 'rejected') {
|
if (status !== 'rejected') {
|
||||||
return (
|
return (
|
||||||
|
@ -4,17 +4,20 @@ import { makeToast } from 'app/components/Toaster';
|
|||||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||||
import IAIButton from 'common/components/IAIButton';
|
import IAIButton from 'common/components/IAIButton';
|
||||||
import IAIMantineTextInput from 'common/components/IAIMantineInput';
|
import IAIMantineTextInput from 'common/components/IAIMantineInput';
|
||||||
|
import IAISimpleCheckbox from 'common/components/IAISimpleCheckbox';
|
||||||
import { MODEL_TYPE_MAP } from 'features/parameters/types/constants';
|
import { MODEL_TYPE_MAP } from 'features/parameters/types/constants';
|
||||||
import { selectIsBusy } from 'features/system/store/systemSelectors';
|
import { selectIsBusy } from 'features/system/store/systemSelectors';
|
||||||
import { addToast } from 'features/system/store/systemSlice';
|
import { addToast } from 'features/system/store/systemSlice';
|
||||||
import { useCallback } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import {
|
import {
|
||||||
CheckpointModelConfigEntity,
|
CheckpointModelConfigEntity,
|
||||||
|
useGetCheckpointConfigsQuery,
|
||||||
useUpdateMainModelsMutation,
|
useUpdateMainModelsMutation,
|
||||||
} from 'services/api/endpoints/models';
|
} from 'services/api/endpoints/models';
|
||||||
import { CheckpointModelConfig } from 'services/api/types';
|
import { CheckpointModelConfig } from 'services/api/types';
|
||||||
import BaseModelSelect from '../shared/BaseModelSelect';
|
import BaseModelSelect from '../shared/BaseModelSelect';
|
||||||
|
import CheckpointConfigsSelect from '../shared/CheckpointConfigsSelect';
|
||||||
import ModelVariantSelect from '../shared/ModelVariantSelect';
|
import ModelVariantSelect from '../shared/ModelVariantSelect';
|
||||||
import ModelConvert from './ModelConvert';
|
import ModelConvert from './ModelConvert';
|
||||||
|
|
||||||
@ -28,6 +31,15 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) {
|
|||||||
const { model } = props;
|
const { model } = props;
|
||||||
|
|
||||||
const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation();
|
const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation();
|
||||||
|
const { data: availableCheckpointConfigs } = useGetCheckpointConfigsQuery();
|
||||||
|
|
||||||
|
const [useCustomConfig, setUseCustomConfig] = useState<boolean>(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!availableCheckpointConfigs?.includes(model.config)) {
|
||||||
|
setUseCustomConfig(true);
|
||||||
|
}
|
||||||
|
}, [availableCheckpointConfigs, model.config]);
|
||||||
|
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@ -123,12 +135,15 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) {
|
|||||||
{...checkpointEditForm.getInputProps('description')}
|
{...checkpointEditForm.getInputProps('description')}
|
||||||
/>
|
/>
|
||||||
<BaseModelSelect
|
<BaseModelSelect
|
||||||
|
required
|
||||||
{...checkpointEditForm.getInputProps('base_model')}
|
{...checkpointEditForm.getInputProps('base_model')}
|
||||||
/>
|
/>
|
||||||
<ModelVariantSelect
|
<ModelVariantSelect
|
||||||
|
required
|
||||||
{...checkpointEditForm.getInputProps('variant')}
|
{...checkpointEditForm.getInputProps('variant')}
|
||||||
/>
|
/>
|
||||||
<IAIMantineTextInput
|
<IAIMantineTextInput
|
||||||
|
required
|
||||||
label={t('modelManager.modelLocation')}
|
label={t('modelManager.modelLocation')}
|
||||||
{...checkpointEditForm.getInputProps('path')}
|
{...checkpointEditForm.getInputProps('path')}
|
||||||
/>
|
/>
|
||||||
@ -136,10 +151,27 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) {
|
|||||||
label={t('modelManager.vaeLocation')}
|
label={t('modelManager.vaeLocation')}
|
||||||
{...checkpointEditForm.getInputProps('vae')}
|
{...checkpointEditForm.getInputProps('vae')}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<Flex flexDirection="column" gap={2}>
|
||||||
|
{!useCustomConfig ? (
|
||||||
|
<CheckpointConfigsSelect
|
||||||
|
required
|
||||||
|
{...checkpointEditForm.getInputProps('config')}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
<IAIMantineTextInput
|
<IAIMantineTextInput
|
||||||
|
required
|
||||||
label={t('modelManager.config')}
|
label={t('modelManager.config')}
|
||||||
{...checkpointEditForm.getInputProps('config')}
|
{...checkpointEditForm.getInputProps('config')}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
|
<IAISimpleCheckbox
|
||||||
|
isChecked={useCustomConfig}
|
||||||
|
onChange={() => setUseCustomConfig(!useCustomConfig)}
|
||||||
|
label="Use Custom Config"
|
||||||
|
/>
|
||||||
|
</Flex>
|
||||||
|
|
||||||
<IAIButton
|
<IAIButton
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={isBusy || isLoading}
|
isDisabled={isBusy || isLoading}
|
||||||
|
@ -112,9 +112,16 @@ export default function DiffusersModelEdit(props: DiffusersModelEditProps) {
|
|||||||
label={t('modelManager.description')}
|
label={t('modelManager.description')}
|
||||||
{...diffusersEditForm.getInputProps('description')}
|
{...diffusersEditForm.getInputProps('description')}
|
||||||
/>
|
/>
|
||||||
<BaseModelSelect {...diffusersEditForm.getInputProps('base_model')} />
|
<BaseModelSelect
|
||||||
<ModelVariantSelect {...diffusersEditForm.getInputProps('variant')} />
|
required
|
||||||
|
{...diffusersEditForm.getInputProps('base_model')}
|
||||||
|
/>
|
||||||
|
<ModelVariantSelect
|
||||||
|
required
|
||||||
|
{...diffusersEditForm.getInputProps('variant')}
|
||||||
|
/>
|
||||||
<IAIMantineTextInput
|
<IAIMantineTextInput
|
||||||
|
required
|
||||||
label={t('modelManager.modelLocation')}
|
label={t('modelManager.modelLocation')}
|
||||||
{...diffusersEditForm.getInputProps('path')}
|
{...diffusersEditForm.getInputProps('path')}
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user