Feat: New page with input fields
This commit is contained in:
parent
eb60734c26
commit
9c19e2ac56
@ -4,10 +4,13 @@
|
|||||||
import dash
|
import dash
|
||||||
import dash_html_components as html
|
import dash_html_components as html
|
||||||
import dash_core_components as dcc
|
import dash_core_components as dcc
|
||||||
|
import dash_table
|
||||||
from datetime import date
|
from datetime import date
|
||||||
import uuid
|
import uuid
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
from ...scripts.getconfig import config, CONFIGPATH
|
from ...scripts.getconfig import config
|
||||||
|
from ...config import NO_ST_COLUMNS
|
||||||
from ..app import app
|
from ..app import app
|
||||||
|
|
||||||
|
|
||||||
@ -112,13 +115,15 @@ layout = html.Div(
|
|||||||
dash.dependencies.Input("add-exercise", "n_clicks"),
|
dash.dependencies.Input("add-exercise", "n_clicks"),
|
||||||
dash.dependencies.State("exercises", "children"),
|
dash.dependencies.State("exercises", "children"),
|
||||||
)
|
)
|
||||||
def display_dropdowns(n_clicks, children):
|
def add_exercise(n_clicks, children):
|
||||||
new_element = html.Div(
|
element_table = pd.DataFrame(columns=NO_ST_COLUMNS)
|
||||||
|
element_table = element_table.append(pd.Series(name=0))
|
||||||
|
new_exercise = html.Div(
|
||||||
children=[
|
children=[
|
||||||
html.Div(
|
html.Div(
|
||||||
children=[
|
children=[
|
||||||
dcc.Input(
|
dcc.Input(
|
||||||
id={"type": "exercice", "index": str("n_clicks")},
|
id={"type": "exercice", "index": str(n_clicks)},
|
||||||
type="text",
|
type="text",
|
||||||
placeholder="Nom de l'exercice",
|
placeholder="Nom de l'exercice",
|
||||||
className="exercise-name",
|
className="exercise-name",
|
||||||
@ -131,22 +136,66 @@ def display_dropdowns(n_clicks, children):
|
|||||||
],
|
],
|
||||||
className="exercise-head",
|
className="exercise-head",
|
||||||
),
|
),
|
||||||
html.Div(
|
dash_table.DataTable(
|
||||||
id={"type": "elements", "index": str(n_clicks)},
|
id={"type": "elements", "index": str(n_clicks)},
|
||||||
children=[],
|
columns=[
|
||||||
|
{"id": "Question", "name": "Question"},
|
||||||
|
{
|
||||||
|
"id": "Competence",
|
||||||
|
"name": "Competence",
|
||||||
|
"presentation": "dropdown",
|
||||||
|
},
|
||||||
|
{"id": "Domaine", "name": "Domaine"},
|
||||||
|
{"id": "Commentaire", "name": "Commentaire"},
|
||||||
|
{"id": "Bareme", "name": "Bareme"},
|
||||||
|
{"id": "Est_nivele", "name": "Est_nivele"},
|
||||||
|
],
|
||||||
|
data=element_table.to_dict("records"),
|
||||||
|
editable=True,
|
||||||
|
dropdown={
|
||||||
|
"Competence": {"options": [
|
||||||
|
{'label': i, 'value': i} for i in config["competences"]
|
||||||
|
]},
|
||||||
|
},
|
||||||
|
style_cell={
|
||||||
|
"whiteSpace": "normal",
|
||||||
|
"height": "auto",
|
||||||
|
},
|
||||||
),
|
),
|
||||||
html.Button(
|
html.Button(
|
||||||
"Ajouter un élément de notation",
|
"Ajouter un élément de notation",
|
||||||
id=f"add-element-{n_clicks}",
|
id={"type": "add-element", "index": str(n_clicks)},
|
||||||
className="add-element",
|
className="add-element",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
className="exercise",
|
className="exercise",
|
||||||
)
|
)
|
||||||
children.append(new_element)
|
children.append(new_exercise)
|
||||||
return children
|
return children
|
||||||
|
|
||||||
|
|
||||||
|
@app.callback(
|
||||||
|
dash.dependencies.Output(
|
||||||
|
{"type": "elements", "index": dash.dependencies.MATCH}, "data"
|
||||||
|
),
|
||||||
|
dash.dependencies.Input(
|
||||||
|
{"type": "add-element", "index": dash.dependencies.MATCH}, "n_clicks"
|
||||||
|
),
|
||||||
|
[
|
||||||
|
dash.dependencies.State(
|
||||||
|
{"type": "elements", "index": dash.dependencies.MATCH}, "data"
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def add_element(n_clicks, elements):
|
||||||
|
if n_clicks is None or n_clicks < len(elements):
|
||||||
|
return elements
|
||||||
|
|
||||||
|
df = pd.DataFrame.from_records(elements)
|
||||||
|
df = df.append(pd.Series(name=n_clicks))
|
||||||
|
return df.to_dict("records")
|
||||||
|
|
||||||
|
|
||||||
@app.callback(
|
@app.callback(
|
||||||
dash.dependencies.Output("output", "children"),
|
dash.dependencies.Output("output", "children"),
|
||||||
dash.dependencies.Input(
|
dash.dependencies.Input(
|
||||||
@ -155,10 +204,3 @@ def display_dropdowns(n_clicks, children):
|
|||||||
)
|
)
|
||||||
def display_output(exercices):
|
def display_output(exercices):
|
||||||
return html.Div([html.P(f"{value}") for (i, value) in enumerate(exercices)])
|
return html.Div([html.P(f"{value}") for (i, value) in enumerate(exercices)])
|
||||||
|
|
||||||
|
|
||||||
# @app.callback(
|
|
||||||
# dash.dependencies.Output("exam_store", "data"),
|
|
||||||
# )
|
|
||||||
# def update_exam_store():
|
|
||||||
# pass
|
|
||||||
|
@ -4,6 +4,7 @@ from dash.dependencies import Input, Output
|
|||||||
|
|
||||||
from .app import app
|
from .app import app
|
||||||
from .exam_analysis import app as exam_analysis
|
from .exam_analysis import app as exam_analysis
|
||||||
|
from .create_exam import app as create_exam
|
||||||
|
|
||||||
|
|
||||||
app.layout = html.Div(
|
app.layout = html.Div(
|
||||||
@ -15,6 +16,8 @@ app.layout = html.Div(
|
|||||||
def display_page(pathname):
|
def display_page(pathname):
|
||||||
if pathname == "/":
|
if pathname == "/":
|
||||||
return exam_analysis.layout
|
return exam_analysis.layout
|
||||||
|
elif pathname == "/create-exam":
|
||||||
|
return create_exam.layout
|
||||||
else:
|
else:
|
||||||
return "404"
|
return "404"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user