mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-12-20 23:41:20 +00:00
Fix analysis
This commit is contained in:
parent
7c29114587
commit
dd4908cc45
2 changed files with 40 additions and 21 deletions
|
@ -1467,32 +1467,47 @@ class AnalysisView(SecureAdminBaseView):
|
||||||
|
|
||||||
return AnalysisView.htmlFig(fig)
|
return AnalysisView.htmlFig(fig)
|
||||||
|
|
||||||
|
def get_experiment_marks(assistant, attr):
|
||||||
|
data = []
|
||||||
|
|
||||||
|
for experimentMark in assistant.experiment_marks:
|
||||||
|
mark = getattr(experimentMark, attr)
|
||||||
|
if mark is not None:
|
||||||
|
data.append(mark)
|
||||||
|
|
||||||
|
return np.array(data)
|
||||||
|
|
||||||
def markHists(markType, activeAssistants):
|
def markHists(markType, activeAssistants):
|
||||||
attr = markType.lower() + "_mark"
|
attr = markType.lower() + "_mark"
|
||||||
markTypeTitleAddition = f" | {markType} marks"
|
markTypeTitleAddition = f" | {markType} marks"
|
||||||
|
marks = [AnalysisView.get_experiment_marks(assistant, attr) for assistant in activeAssistants]
|
||||||
|
|
||||||
hists = [
|
hists = [
|
||||||
AnalysisView.markHist(
|
AnalysisView.markHist(
|
||||||
data=np.array([getattr(experimentMark, attr) for experimentMark in assistant.experiment_marks]),
|
data=marks[i],
|
||||||
title=assistant.repr() + markTypeTitleAddition,
|
title=activeAssistants[i].repr() + markTypeTitleAddition,
|
||||||
)
|
)
|
||||||
for assistant in activeAssistants
|
for i in range(len(marks))
|
||||||
]
|
]
|
||||||
|
|
||||||
hists.append(
|
hists.append(
|
||||||
AnalysisView.markHist(
|
AnalysisView.markHist(
|
||||||
data=np.hstack(
|
data=np.hstack(marks),
|
||||||
[
|
|
||||||
[getattr(experimentMark, attr) for experimentMark in assistant.experiment_marks]
|
|
||||||
for assistant in activeAssistants
|
|
||||||
]
|
|
||||||
),
|
|
||||||
title="All" + markTypeTitleAddition,
|
title="All" + markTypeTitleAddition,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return hists
|
return hists
|
||||||
|
|
||||||
|
def get_final_part_marks(part):
|
||||||
|
data = []
|
||||||
|
for partStudent in part.part_students:
|
||||||
|
mark = partStudent.final_part_mark
|
||||||
|
if mark is not None:
|
||||||
|
data.append(mark)
|
||||||
|
|
||||||
|
return np.array(data)
|
||||||
|
|
||||||
@expose(methods=("GET", "POST"))
|
@expose(methods=("GET", "POST"))
|
||||||
def index(self):
|
def index(self):
|
||||||
form = AnalysisView.AnalysisForm()
|
form = AnalysisView.AnalysisForm()
|
||||||
|
@ -1515,7 +1530,7 @@ class AnalysisView(SecureAdminBaseView):
|
||||||
parts = current_user.active_semester.parts
|
parts = current_user.active_semester.parts
|
||||||
activeSemesterFinalPartMarksHists = [
|
activeSemesterFinalPartMarksHists = [
|
||||||
AnalysisView.markHist(
|
AnalysisView.markHist(
|
||||||
data=np.array([partStudent.final_part_mark for partStudent in part.part_students]),
|
data=AnalysisView.get_final_part_marks(part),
|
||||||
title=part.repr(),
|
title=part.repr(),
|
||||||
)
|
)
|
||||||
for part in parts
|
for part in parts
|
||||||
|
@ -1538,17 +1553,19 @@ class AnalysisView(SecureAdminBaseView):
|
||||||
)
|
)
|
||||||
|
|
||||||
fig = Figure()
|
fig = Figure()
|
||||||
ax = fig.subplots()
|
lenMeanFinalPartMarks = len(meanFinalPartMarks)
|
||||||
x = range(1, len(meanFinalPartMarks) + 1)
|
if lenMeanFinalPartMarks > 0:
|
||||||
ax.plot(
|
ax = fig.subplots()
|
||||||
x,
|
x = range(1, lenMeanFinalPartMarks + 1)
|
||||||
meanFinalPartMarks,
|
ax.plot(
|
||||||
marker="d",
|
x,
|
||||||
)
|
meanFinalPartMarks,
|
||||||
# TODO: Change ticks to semester labels
|
marker="d",
|
||||||
# TODO: Check linestyle
|
)
|
||||||
ax.set_xticks(x)
|
# TODO: Change ticks to semester labels
|
||||||
ax.set_xlim(0.5, x[-1] + 0.5)
|
# TODO: Check linestyle
|
||||||
|
ax.set_xticks(x)
|
||||||
|
ax.set_xlim(0.5, x[-1] + 0.5)
|
||||||
|
|
||||||
meanFinalPartMarksPlot = AnalysisView.htmlFig(fig)
|
meanFinalPartMarksPlot = AnalysisView.htmlFig(fig)
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ python-dotenv = ">=0.20.0"
|
||||||
gunicorn = ">=20.1.0"
|
gunicorn = ">=20.1.0"
|
||||||
email-validator = ">=1.2.1"
|
email-validator = ">=1.2.1"
|
||||||
|
|
||||||
|
[tool.poetry.dev-dependencies]
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry-core>=1.0.0"]
|
requires = ["poetry-core>=1.0.0"]
|
||||||
build-backend = "poetry.core.masonry.api"
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
Loading…
Reference in a new issue