From 0138f5222028b7046035766220afc83b180bb598 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Sat, 8 Jul 2023 14:15:13 +1000 Subject: [PATCH] feat(ui): add ui for cpu noise not hooked up to graphs --- .../Parameters/Noise/ParamCpuNoise.tsx | 39 +++++++++++++++++++ .../Parameters/Noise/ParamNoiseCollapse.tsx | 2 + .../parameters/store/generationSlice.ts | 6 +++ 3 files changed, 47 insertions(+) create mode 100644 invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx new file mode 100644 index 0000000000..5d0ea077c1 --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx @@ -0,0 +1,39 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAISwitch from 'common/components/IAISwitch'; +import { shouldUseCpuNoiseChanged } from 'features/parameters/store/generationSlice'; +import { ChangeEvent } from 'react'; +import { useTranslation } from 'react-i18next'; + +const selector = createSelector( + stateSelector, + (state) => { + const { shouldUseNoiseSettings, shouldUseCpuNoise } = state.generation; + return { + isDisabled: !shouldUseNoiseSettings, + shouldUseCpuNoise, + }; + }, + defaultSelectorOptions +); + +export const ParamCpuNoiseToggle = () => { + const dispatch = useAppDispatch(); + const { isDisabled, shouldUseCpuNoise } = useAppSelector(selector); + + const { t } = useTranslation(); + + const handleChange = (e: ChangeEvent) => + dispatch(shouldUseCpuNoiseChanged(e.target.checked)); + + return ( + + ); +}; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx index 4dea1dad4f..053c1cfec0 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx @@ -7,6 +7,7 @@ import IAICollapse from 'common/components/IAICollapse'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; +import { ParamCpuNoiseToggle } from './ParamCpuNoise'; import ParamNoiseThreshold from './ParamNoiseThreshold'; import { ParamNoiseToggle } from './ParamNoiseToggle'; import ParamPerlinNoise from './ParamPerlinNoise'; @@ -40,6 +41,7 @@ const ParamNoiseCollapse = () => { > + diff --git a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts index 79372914b4..867eb6ed07 100644 --- a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts +++ b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts @@ -55,6 +55,7 @@ export interface GenerationState { seamlessXAxis: boolean; seamlessYAxis: boolean; clipSkip: number; + shouldUseCpuNoise: boolean; } export const initialGenerationState: GenerationState = { @@ -90,6 +91,7 @@ export const initialGenerationState: GenerationState = { seamlessXAxis: false, seamlessYAxis: false, clipSkip: 0, + shouldUseCpuNoise: true, }; const initialState: GenerationState = initialGenerationState; @@ -239,6 +241,9 @@ export const generationSlice = createSlice({ setClipSkip: (state, action: PayloadAction) => { state.clipSkip = action.payload; }, + shouldUseCpuNoiseChanged: (state, action: PayloadAction) => { + state.shouldUseCpuNoise = action.payload; + }, }, extraReducers: (builder) => { builder.addCase(configChanged, (state, action) => { @@ -298,6 +303,7 @@ export const { setSeamlessXAxis, setSeamlessYAxis, setClipSkip, + shouldUseCpuNoiseChanged, } = generationSlice.actions; export default generationSlice.reducer;