diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index be21369050..cbf5d1bfae 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -170,6 +170,7 @@ class _InputField(BaseModel): ui_hidden: bool ui_type: Optional[UIType] ui_component: Optional[UIComponent] + ui_order: Optional[int] class _OutputField(BaseModel): @@ -182,6 +183,7 @@ class _OutputField(BaseModel): ui_hidden: bool ui_type: Optional[UIType] + ui_order: Optional[int] def InputField( @@ -215,6 +217,7 @@ def InputField( ui_type: Optional[UIType] = None, ui_component: Optional[UIComponent] = None, ui_hidden: bool = False, + ui_order: Optional[int] = None, **kwargs: Any, ) -> Any: """ @@ -273,6 +276,7 @@ def InputField( ui_type=ui_type, ui_component=ui_component, ui_hidden=ui_hidden, + ui_order=ui_order, **kwargs, ) @@ -306,6 +310,7 @@ def OutputField( repr: bool = True, ui_type: Optional[UIType] = None, ui_hidden: bool = False, + ui_order: Optional[int] = None, **kwargs: Any, ) -> Any: """ @@ -352,6 +357,7 @@ def OutputField( repr=repr, ui_type=ui_type, ui_hidden=ui_hidden, + ui_order=ui_order, **kwargs, ) @@ -380,7 +386,7 @@ class BaseInvocationOutput(BaseModel): """Base class for all invocation outputs""" # All outputs must include a type name like this: - # type: Literal['your_output_name'] + # type: Literal['your_output_name'] # noqa f821 @classmethod def get_all_subclasses_tuple(cls): @@ -421,7 +427,7 @@ class BaseInvocation(ABC, BaseModel): """ # All invocations must include a type name like this: - # type: Literal['your_output_name'] + # type: Literal['your_output_name'] # noqa f821 @classmethod def get_all_subclasses(cls): diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index ba7f9e754f..314301663b 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -107,12 +107,12 @@ class DenoiseLatentsInvocation(BaseInvocation): # Inputs positive_conditioning: ConditioningField = InputField( - description=FieldDescriptions.positive_cond, input=Input.Connection + description=FieldDescriptions.positive_cond, input=Input.Connection, ui_order=0 ) negative_conditioning: ConditioningField = InputField( - description=FieldDescriptions.negative_cond, input=Input.Connection + description=FieldDescriptions.negative_cond, input=Input.Connection, ui_order=1 ) - noise: Optional[LatentsField] = InputField(description=FieldDescriptions.noise, input=Input.Connection) + noise: Optional[LatentsField] = InputField(description=FieldDescriptions.noise, input=Input.Connection, ui_order=3) steps: int = InputField(default=10, gt=0, description=FieldDescriptions.steps) cfg_scale: Union[float, List[float]] = InputField( default=7.5, ge=1, description=FieldDescriptions.cfg_scale, ui_type=UIType.Float, title="CFG Scale" @@ -122,11 +122,13 @@ class DenoiseLatentsInvocation(BaseInvocation): scheduler: SAMPLER_NAME_VALUES = InputField( default="euler", description=FieldDescriptions.scheduler, ui_type=UIType.Scheduler ) - unet: UNetField = InputField(description=FieldDescriptions.unet, input=Input.Connection, title="UNet") + unet: UNetField = InputField(description=FieldDescriptions.unet, input=Input.Connection, title="UNet", ui_order=2) control: Union[ControlField, list[ControlField]] = InputField( - default=None, description=FieldDescriptions.control, input=Input.Connection + default=None, description=FieldDescriptions.control, input=Input.Connection, ui_order=5 + ) + latents: Optional[LatentsField] = InputField( + description=FieldDescriptions.latents, input=Input.Connection, ui_order=4 ) - latents: Optional[LatentsField] = InputField(description=FieldDescriptions.latents, input=Input.Connection) mask: Optional[ImageField] = InputField( default=None, description=FieldDescriptions.mask, diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts index e2615a391e..1e03f92190 100644 --- a/invokeai/frontend/web/src/services/api/schema.d.ts +++ b/invokeai/frontend/web/src/services/api/schema.d.ts @@ -6215,6 +6215,8 @@ export type components = { ui_hidden: boolean; ui_type?: components["schemas"]["UIType"]; ui_component?: components["schemas"]["UIComponent"]; + /** Ui Order */ + ui_order?: number; }; /** * _OutputField @@ -6227,6 +6229,8 @@ export type components = { /** Ui Hidden */ ui_hidden: boolean; ui_type?: components["schemas"]["UIType"]; + /** Ui Order */ + ui_order?: number; }; /** * StableDiffusion1ModelFormat @@ -6234,12 +6238,6 @@ export type components = { * @enum {string} */ StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; - /** - * StableDiffusionOnnxModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusionOnnxModelFormat: "olive" | "onnx"; /** * ControlNetModelFormat * @description An enumeration. @@ -6258,6 +6256,12 @@ export type components = { * @enum {string} */ StableDiffusion2ModelFormat: "checkpoint" | "diffusers"; + /** + * StableDiffusionOnnxModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusionOnnxModelFormat: "olive" | "onnx"; }; responses: never; parameters: never;