Skip to content

Commit

Permalink
fix: switch component
Browse files Browse the repository at this point in the history
  • Loading branch information
metc1999 committed Jun 10, 2024
1 parent cbec50f commit 9acda0d
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 2 deletions.
3 changes: 2 additions & 1 deletion zero_true/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@
from zt_backend.models.components.html import HTML, pygwalker
from zt_backend.models.state.state import state
from zt_backend.models.state.state import global_state
from zt_backend.models.components.chat_ui import chat_ui
from zt_backend.models.components.chat_ui import chat_ui
from zt_backend.models.components.switch import Switch
34 changes: 34 additions & 0 deletions zt_backend/models/components/switch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from typing import List, Optional,Union
from pydantic import Field, field_validator, validator
from zt_backend.models.components.zt_component import ZTComponent
from zt_backend.models.components.validations import validate_color
from zt_backend.models.state.user_state import UserContext

class Switch(ZTComponent):
"""A slider component that allows a user to select a range of values"""
component: str = Field("v-switch", description="Vue component name")
value: str = Field ('', description="The input text value")
hint: Optional[str] = Field('', description="Hint text for switch")
disabled: Optional[bool] = Field(None, description="If true, the input is disabled")
color: str = Field('primary', pre=True, description="Color of the switch. Can be custom or standard Material color")
label: Optional[str] = Field(None,description= 'A label for your switch')
multiple: Optional[bool] = Field(None, description="Determines if multiple selections are allowed")
width: Union[int,str] = Field('100%', description="Width of the switch")
triggerEvent: str = Field('update:modelValue',description="Trigger event for when to trigger a run")
readonly: Optional[bool] = Field(None, description="Determines if the Switch is read-only")

@field_validator('color')
def validate_color(cls, color):
return validate_color(color)

@validator('value', always=True) #TODO: debug and replace with field validator
def get_value_from_global_state(cls, value, values):
id = values['id'] # Get the id if it exists in the field values
execution_state = UserContext.get_state()
try:
if execution_state and id and id in execution_state.component_values: # Check if id exists in global_state
return execution_state.component_values[id] # Return the value associated with id in global_state
except Exception as e:
e
return value # If id doesn't exist in global_state, return the original value

5 changes: 4 additions & 1 deletion zt_backend/models/generate_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from .components.timer import Timer
from .components.iframe import iFrame
from .components.html import HTML
from .components.switch import Switch
import json

def generate_json(model, name):
Expand Down Expand Up @@ -62,4 +63,6 @@ def generate_schema():
generate_json(Text,'text')
generate_json(Timer,'timer')
generate_json(iFrame,'iframe')
generate_json(HTML,'html')
generate_json(HTML,'html')
generate_json(Switch,'switch')

0 comments on commit 9acda0d

Please sign in to comment.