Compare commits

..

No commits in common. "ff94470fb4e171387a4469ee40297f3225d6d18a" and "3250a600c92ce46a5d75e7d74f669d01e223f572" have entirely different histories.

4 changed files with 52 additions and 164 deletions

View File

@ -19,12 +19,6 @@ main {
margin: auto; margin: auto;
} }
section {
margin-top: 20px;
margin-bottom: 20px;
}
/* Exam analysis */ /* Exam analysis */
#select { #select {

View File

@ -5,7 +5,6 @@ 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 import dash_table
import plotly.graph_objects as go
from datetime import date, datetime from datetime import date, datetime
import uuid import uuid
import pandas as pd import pandas as pd
@ -56,8 +55,6 @@ layout = html.Div(
], ],
), ),
html.Main( html.Main(
children=[
html.Section(
children=[ children=[
html.Form( html.Form(
id="new-exam", id="new-exam",
@ -110,11 +107,6 @@ layout = html.Div(
), ),
], ],
), ),
],
id="form",
),
html.Section(
children=[
html.Div( html.Div(
id="exercises", id="exercises",
children=[], children=[],
@ -127,26 +119,6 @@ layout = html.Div(
html.Div( html.Div(
id="summary", id="summary",
), ),
],
id="exercises",
),
html.Section(
children=[
html.Div(
id="score_rate",
),
html.Div(
id="exercises-viz",
),
html.Div(
id="competences-viz",
),
html.Div(
id="themes-viz",
),
],
id="visualisation",
),
] ]
), ),
dcc.Store(id="exam_store"), dcc.Store(id="exam_store"),
@ -307,41 +279,6 @@ def store_exam(tribe, exam_name, date, term, exercices, elements, elements_id):
return exam.to_dict() return exam.to_dict()
@app.callback(
dash.dependencies.Output("score_rate", "children"),
dash.dependencies.Input("exam_store", "data"),
prevent_initial_call=True,
)
def score_rate(data):
exam = Exam(**data)
return [html.P(f"Barème /{exam.score_rate}")]
@app.callback(
dash.dependencies.Output("competences-viz", "figure"),
dash.dependencies.Input("exam_store", "data"),
prevent_initial_call=True,
)
def competences_viz(data):
exam = Exam(**data)
return [html.P(str(exam.competences_rate))]
@app.callback(
dash.dependencies.Output("themes-viz", "children"),
dash.dependencies.Input("exam_store", "data"),
prevent_initial_call=True,
)
def themes_viz(data):
exam = Exam(**data)
themes_rate = exam.themes_rate
fig = go.Figure()
if themes_rate:
fig.add_trace(go.Pie(labels=list(themes_rate.keys()), values=list(themes_rate.values())))
return [dcc.Graph(figure=fig)]
return []
@app.callback( @app.callback(
dash.dependencies.Output("is-saved", "children"), dash.dependencies.Output("is-saved", "children"),
dash.dependencies.Input("save-csv", "n_clicks"), dash.dependencies.Input("save-csv", "n_clicks"),

View File

@ -157,46 +157,3 @@ class Exam:
self.tribe_path.mkdir(exist_ok=True) self.tribe_path.mkdir(exist_ok=True)
base_df.to_csv(self.path(".csv"), index=False) base_df.to_csv(self.path(".csv"), index=False)
@property
def score_rate(self):
total = 0
for ex, questions in self._exercises.items():
total += sum([q["score_rate"] for q in questions])
return total
@property
def competences_rate(self):
""" Dictionnary with competences as key and total rate as value"""
rates = {}
for ex, questions in self._exercises.items():
for q in questions:
try:
q["competence"]
except KeyError:
pass
else:
try:
rates[q["competence"]] += q["score_rate"]
except KeyError:
rates[q["competence"]] = q["score_rate"]
return rates
@property
def themes_rate(self):
""" Dictionnary with themes as key and total rate as value"""
rates = {}
for ex, questions in self._exercises.items():
for q in questions:
try:
q["theme"]
except KeyError:
pass
else:
if q["theme"]:
try:
rates[q["theme"]] += q["score_rate"]
except KeyError:
rates[q["theme"]] = q["score_rate"]
return rates

View File

@ -88,7 +88,7 @@ def new_exam():
@cli.command() @cli.command()
@click.option("--debug", default=0, help="Debug mode for dash") @click.option("--debug", default=0, help="Debug mode for dash")
def dashboard(debug): def exam_analysis(debug):
dash.run_server(debug=bool(debug)) dash.run_server(debug=bool(debug))