File size: 1,052 Bytes
f3141ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ff3d12
f3141ae
 
6ff3d12
b470e8d
 
 
 
f3141ae
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import json

import mesop as me

import components as mex
import handlers
from constants import DIALOG_INPUT_WIDTH
from state import State
from state import Prompt


@me.component
def load_prompt():
  state = me.state(State)
  with mex.dialog(state.dialog_show_load):
    with me.box(style=me.Style(width=DIALOG_INPUT_WIDTH)):
      me.text("Upload saved prompt", type="headline-6")
      me.uploader(
        label="Upload",
        accepted_file_types=["application/json"],
        type="flat",
        color="primary",
        on_upload=on_upload_prompt,
        style=me.Style(border_radius=10),
      )
      with mex.dialog_actions():
        mex.button(
          "Close",
          key="dialog_show_load",
          on_click=handlers.on_close_dialog,
        )


def on_upload_prompt(e: me.UploadEvent):
  state = me.state(State)
  data = json.loads(e.file.getvalue())
  data["prompts"] = [Prompt(**raw_prompt) for raw_prompt in data["prompts"]]
  for key, value in data.items():
    setattr(state, key, value)
  state.dialog_show_load = False