File size: 2,889 Bytes
bc1d804
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
import json
from datetime import datetime

from . import os, st
from .BasePage import BasePage
from APIModules.ObjectModels.Task import Task

class ConfigPage(BasePage):

    def render(self):
        super().render(keys={"WATSON_API_KEY": os.getenv("WATSON_API_KEY")})
        initial_state_from_json : dict = st.session_state.get("INITIAL_STATE", {})
        if st.button("use_preloaded_state"):
            with open("initial_state.json") as f:
                initial_state_from_json : dict = json.load(f)
                st.session_state.INITIAL_STATE = initial_state_from_json
                st.rerun()
        initial_team_members = st.session_state.get('team')
        if not initial_team_members:st.session_state.team = initial_state_from_json.get('team', ["Alessio", "Joy", "Nicola C", "Nicola D", "Dragosh"])
        initial_tasks = st.session_state.get('tasks')
        if not initial_tasks:st.session_state.tasks = [Task(**task).model_dump() for task in initial_state_from_json.get('tasks', [])]
        initial_assignments = st.session_state.get('assignments')
        if not initial_tasks:st.session_state.assignments = initial_state_from_json.get('assignments', {})

        with st.expander("Set Team", expanded=True):
            st.header("Configurazione")
            new_member = st.text_input("Enter team name", value="Team name")
            if st.button("Add team member"):
                st.session_state.team.append(new_member)
        with st.expander("Tasks", expanded=True):
            st.header("Task")
            new_task_name = st.text_input("Enter task name", value="Task name")
            new_task_description = st.text_area("Enter task description", value="Task description")
            new_task_start_date = st.date_input("Enter task start date", value=datetime.today())
            new_task_end_date = st.date_input("Enter task end date", value=datetime.today())
            if st.button("Add Task"):
                new_task = Task(
                    name=new_task_name, description=new_task_description, 
                    start_date=new_task_start_date, end_date=new_task_end_date
                )
                st.session_state.tasks.append(new_task.model_dump())
        with st.expander("Assing Tasks", expanded=True):
            st.header("Assing Tasks")
            cols = st.columns(2)
            with cols[0]:_team_member = st.selectbox("Team Member", st.session_state.team)
            _tasks_to_assing = st.multiselect("Task", [task['name'] for task in st.session_state.tasks])
            task_indices = [i for i, task in enumerate(st.session_state.tasks) if task['name'] in _tasks_to_assing]
            tasks_selected = [task["name"] for i, task in enumerate(st.session_state.tasks) if i in task_indices]
            if st.button("Assing Task"):
                st.session_state.assignments[_team_member] = tasks_selected