Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add trafficlight feedback #183

Closed
wants to merge 53 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
bcac0a3
start building feedback algorithm
MaHaWo Nov 15, 2024
2e1c3d7
add feedback algorithm prototype
MaHaWo Nov 18, 2024
b8aa3bc
start writing tests
MaHaWo Nov 18, 2024
648cc57
work on tests for backend
MaHaWo Nov 18, 2024
b77e795
add test for milestone score
MaHaWo Nov 18, 2024
ab73365
add list of missing stuff to do later
MaHaWo Nov 18, 2024
baf520d
add edge case tests
MaHaWo Nov 18, 2024
2804964
work more on backend tests
MaHaWo Nov 18, 2024
78c168f
add tests, allow for presupplied answers
MaHaWo Nov 19, 2024
f4a09e9
adjust tests and score functionality
MaHaWo Nov 19, 2024
17bc4df
add docstrings, rename sigma variable
MaHaWo Nov 19, 2024
372a80a
finish route implementation
MaHaWo Nov 19, 2024
5923746
fix type annotations
MaHaWo Nov 19, 2024
52f9648
adjust tests
MaHaWo Nov 19, 2024
eabadd1
work on frontend integration of feedback
MaHaWo Nov 19, 2024
d602f90
work on frontend integration, refactoring of backend code
MaHaWo Nov 19, 2024
e92b6e9
work on streamlining backend
MaHaWo Nov 20, 2024
ce2140d
refactor backend feedback computation to make it simpler
MaHaWo Nov 21, 2024
16581a7
make utils test work again
MaHaWo Nov 21, 2024
222ef01
work on adjusting tests
MaHaWo Nov 21, 2024
fda8a30
work on tests
MaHaWo Nov 21, 2024
263650f
finish backend refactoring
MaHaWo Nov 22, 2024
0811d5d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 22, 2024
a57f836
update openapi.json & openapi-ts client
github-actions[bot] Nov 22, 2024
d0a09d2
unify await messages
MaHaWo Nov 22, 2024
613d31d
add milestonegroup frontend summary view
MaHaWo Nov 22, 2024
20d0f3d
adjust backend code to frontend demands
MaHaWo Nov 22, 2024
421bc40
Merge branch 'add-trafficlight-feedback' of github.com:ssciwr/mondey …
MaHaWo Nov 22, 2024
8683e7a
update openapi.json & openapi-ts client
github-actions[bot] Nov 22, 2024
dbca76f
add modal for detailed milestonegroup feedback
MaHaWo Nov 22, 2024
df51847
Merge branch 'add-trafficlight-feedback' of github.com:ssciwr/mondey …
MaHaWo Nov 22, 2024
133d3de
update openapi.json & openapi-ts client
github-actions[bot] Nov 22, 2024
114b497
finish frontend part structurally, styling corrections still missing
MaHaWo Nov 24, 2024
4a6e29f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 24, 2024
7f95d47
fix comparison issues
MaHaWo Nov 24, 2024
8cc833b
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 24, 2024
d257b9e
finish frontend, adjust backend, augment tests
MaHaWo Nov 25, 2024
4393d1a
add remark about filtering
MaHaWo Nov 25, 2024
eac7c51
improve comment
MaHaWo Nov 25, 2024
4b3dce7
work on a better design for the feedback component
MaHaWo Nov 25, 2024
4bde874
add steps to feedback scale
MaHaWo Nov 25, 2024
49afb5a
add legend, better text
MaHaWo Nov 25, 2024
96ef1ac
work on frontend design some more, correct backend stuff
MaHaWo Nov 26, 2024
61eb0fa
correct some small screen mistakes
MaHaWo Nov 26, 2024
cb96694
Merge branch 'main' into add-trafficlight-feedback
MaHaWo Nov 26, 2024
1a88b0f
update openapi.json & openapi-ts client
github-actions[bot] Nov 26, 2024
c531137
correct database queries
MaHaWo Nov 26, 2024
4206d2d
Merge branch 'add-trafficlight-feedback' of github.com:ssciwr/mondey …
MaHaWo Nov 26, 2024
e8e3542
adjust tests, incorporate review feedback
MaHaWo Nov 26, 2024
4f74797
undo unnecessary changes, add debug output
MaHaWo Nov 26, 2024
aaee889
fix date error
MaHaWo Nov 26, 2024
d9f87f1
undo milestone changes the current design doesn´t need anymore. corre…
MaHaWo Nov 26, 2024
858a17e
merge in backend from main
MaHaWo Dec 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion frontend/src/lib/client/schemas.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,10 @@ export const MilestoneAdminSchema = {

export const MilestoneAgeScoreSchema = {
properties: {
milestone_id: {
type: 'integer',
title: 'Milestone Id'
},
age_months: {
type: 'integer',
title: 'Age Months'
Expand All @@ -476,13 +480,17 @@ export const MilestoneAgeScoreSchema = {
type: 'number',
title: 'Avg Score'
},
stddev_score: {
type: 'number',
title: 'Stddev Score'
},
expected_score: {
type: 'number',
title: 'Expected Score'
}
},
type: 'object',
required: ['age_months', 'avg_score', 'expected_score'],
required: ['milestone_id', 'age_months', 'avg_score', 'stddev_score', 'expected_score'],
title: 'MilestoneAgeScore'
} as const;

Expand Down
52 changes: 51 additions & 1 deletion frontend/src/lib/client/services.gen.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// This file is auto-generated by @hey-api/openapi-ts

import { createClient, createConfig, type Options, formDataBodySerializer, urlSearchParamsBodySerializer } from '@hey-api/client-fetch';
import type { GetLanguagesError, GetLanguagesResponse, GetMilestonesError, GetMilestonesResponse, GetMilestoneData, GetMilestoneError, GetMilestoneResponse, GetMilestoneGroupsData, GetMilestoneGroupsError, GetMilestoneGroupsResponse, SubmitMilestoneImageData, SubmitMilestoneImageError, SubmitMilestoneImageResponse, GetUserQuestionsError, GetUserQuestionsResponse, GetChildQuestionsError, GetChildQuestionsResponse, CreateLanguageData, CreateLanguageError, CreateLanguageResponse, DeleteLanguageData, DeleteLanguageError, DeleteLanguageResponse, UpdateI18NData, UpdateI18NError, UpdateI18NResponse, GetMilestoneGroupsAdminError, GetMilestoneGroupsAdminResponse, CreateMilestoneGroupAdminError, CreateMilestoneGroupAdminResponse, UpdateMilestoneGroupAdminData, UpdateMilestoneGroupAdminError, UpdateMilestoneGroupAdminResponse, DeleteMilestoneGroupAdminData, DeleteMilestoneGroupAdminError, DeleteMilestoneGroupAdminResponse, OrderMilestoneGroupsAdminData, OrderMilestoneGroupsAdminError, OrderMilestoneGroupsAdminResponse, UploadMilestoneGroupImageData, UploadMilestoneGroupImageError, UploadMilestoneGroupImageResponse, CreateMilestoneData, CreateMilestoneError, CreateMilestoneResponse, UpdateMilestoneData, UpdateMilestoneError, UpdateMilestoneResponse, DeleteMilestoneData, DeleteMilestoneError, DeleteMilestoneResponse, OrderMilestonesAdminData, OrderMilestonesAdminError, OrderMilestonesAdminResponse, UploadMilestoneImageData, UploadMilestoneImageError, UploadMilestoneImageResponse, DeleteMilestoneImageData, DeleteMilestoneImageError, DeleteMilestoneImageResponse, GetSubmittedMilestoneImagesError, GetSubmittedMilestoneImagesResponse, ApproveSubmittedMilestoneImageData, ApproveSubmittedMilestoneImageError, ApproveSubmittedMilestoneImageResponse, DeleteSubmittedMilestoneImageData, DeleteSubmittedMilestoneImageError, DeleteSubmittedMilestoneImageResponse, GetMilestoneAgeScoresData, GetMilestoneAgeScoresError, GetMilestoneAgeScoresResponse, GetUserQuestionsAdminError, GetUserQuestionsAdminResponse, UpdateUserQuestionData, UpdateUserQuestionError, UpdateUserQuestionResponse, CreateUserQuestionError, CreateUserQuestionResponse, DeleteUserQuestionData, DeleteUserQuestionError, DeleteUserQuestionResponse, OrderUserQuestionsAdminData, OrderUserQuestionsAdminError, OrderUserQuestionsAdminResponse, GetChildQuestionsAdminError, GetChildQuestionsAdminResponse, UpdateChildQuestionData, UpdateChildQuestionError, UpdateChildQuestionResponse, CreateChildQuestionError, CreateChildQuestionResponse, DeleteChildQuestionData, DeleteChildQuestionError, DeleteChildQuestionResponse, OrderChildQuestionsAdminData, OrderChildQuestionsAdminError, OrderChildQuestionsAdminResponse, GetUsersError, GetUsersResponse, UsersCurrentUserError, UsersCurrentUserResponse, UsersPatchCurrentUserData, UsersPatchCurrentUserError, UsersPatchCurrentUserResponse, UsersUserData, UsersUserError, UsersUserResponse, UsersPatchUserData, UsersPatchUserError, UsersPatchUserResponse, UsersDeleteUserData, UsersDeleteUserError, UsersDeleteUserResponse, GetChildrenError, GetChildrenResponse, UpdateChildData, UpdateChildError, UpdateChildResponse, CreateChildData, CreateChildError, CreateChildResponse, GetChildData, GetChildError, GetChildResponse, DeleteChildData, DeleteChildError, DeleteChildResponse, GetChildImageData, GetChildImageError, GetChildImageResponse, UploadChildImageData, UploadChildImageError, UploadChildImageResponse, DeleteChildImageData, DeleteChildImageError, DeleteChildImageResponse, GetCurrentMilestoneAnswerSessionData, GetCurrentMilestoneAnswerSessionError, GetCurrentMilestoneAnswerSessionResponse, UpdateMilestoneAnswerData, UpdateMilestoneAnswerError, UpdateMilestoneAnswerResponse, GetCurrentUserAnswersError, GetCurrentUserAnswersResponse, UpdateCurrentUserAnswersData, UpdateCurrentUserAnswersError, UpdateCurrentUserAnswersResponse, GetCurrentChildAnswersData, GetCurrentChildAnswersError, GetCurrentChildAnswersResponse, UpdateCurrentChildAnswersData, UpdateCurrentChildAnswersError, UpdateCurrentChildAnswersResponse, AuthCookieLoginData, AuthCookieLoginError, AuthCookieLoginResponse, AuthCookieLogoutError, AuthCookieLogoutResponse, RegisterRegisterData, RegisterRegisterError, RegisterRegisterResponse, ResetForgotPasswordData, ResetForgotPasswordError, ResetForgotPasswordResponse, ResetResetPasswordData, ResetResetPasswordError, ResetResetPasswordResponse, VerifyRequestTokenData, VerifyRequestTokenError, VerifyRequestTokenResponse, VerifyVerifyData, VerifyVerifyError, VerifyVerifyResponse, AuthError, AuthResponse } from './types.gen';
import type { GetLanguagesError, GetLanguagesResponse, GetMilestonesError, GetMilestonesResponse, GetMilestoneData, GetMilestoneError, GetMilestoneResponse, GetMilestoneGroupsData, GetMilestoneGroupsError, GetMilestoneGroupsResponse, SubmitMilestoneImageData, SubmitMilestoneImageError, SubmitMilestoneImageResponse, GetUserQuestionsError, GetUserQuestionsResponse, GetChildQuestionsError, GetChildQuestionsResponse, CreateLanguageData, CreateLanguageError, CreateLanguageResponse, DeleteLanguageData, DeleteLanguageError, DeleteLanguageResponse, UpdateI18NData, UpdateI18NError, UpdateI18NResponse, GetMilestoneGroupsAdminError, GetMilestoneGroupsAdminResponse, CreateMilestoneGroupAdminError, CreateMilestoneGroupAdminResponse, UpdateMilestoneGroupAdminData, UpdateMilestoneGroupAdminError, UpdateMilestoneGroupAdminResponse, DeleteMilestoneGroupAdminData, DeleteMilestoneGroupAdminError, DeleteMilestoneGroupAdminResponse, OrderMilestoneGroupsAdminData, OrderMilestoneGroupsAdminError, OrderMilestoneGroupsAdminResponse, UploadMilestoneGroupImageData, UploadMilestoneGroupImageError, UploadMilestoneGroupImageResponse, CreateMilestoneData, CreateMilestoneError, CreateMilestoneResponse, UpdateMilestoneData, UpdateMilestoneError, UpdateMilestoneResponse, DeleteMilestoneData, DeleteMilestoneError, DeleteMilestoneResponse, OrderMilestonesAdminData, OrderMilestonesAdminError, OrderMilestonesAdminResponse, UploadMilestoneImageData, UploadMilestoneImageError, UploadMilestoneImageResponse, DeleteMilestoneImageData, DeleteMilestoneImageError, DeleteMilestoneImageResponse, GetSubmittedMilestoneImagesError, GetSubmittedMilestoneImagesResponse, ApproveSubmittedMilestoneImageData, ApproveSubmittedMilestoneImageError, ApproveSubmittedMilestoneImageResponse, DeleteSubmittedMilestoneImageData, DeleteSubmittedMilestoneImageError, DeleteSubmittedMilestoneImageResponse, GetMilestoneAgeScoresData, GetMilestoneAgeScoresError, GetMilestoneAgeScoresResponse, GetUserQuestionsAdminError, GetUserQuestionsAdminResponse, UpdateUserQuestionData, UpdateUserQuestionError, UpdateUserQuestionResponse, CreateUserQuestionError, CreateUserQuestionResponse, DeleteUserQuestionData, DeleteUserQuestionError, DeleteUserQuestionResponse, OrderUserQuestionsAdminData, OrderUserQuestionsAdminError, OrderUserQuestionsAdminResponse, GetChildQuestionsAdminError, GetChildQuestionsAdminResponse, UpdateChildQuestionData, UpdateChildQuestionError, UpdateChildQuestionResponse, CreateChildQuestionError, CreateChildQuestionResponse, DeleteChildQuestionData, DeleteChildQuestionError, DeleteChildQuestionResponse, OrderChildQuestionsAdminData, OrderChildQuestionsAdminError, OrderChildQuestionsAdminResponse, GetUsersError, GetUsersResponse, UsersCurrentUserError, UsersCurrentUserResponse, UsersPatchCurrentUserData, UsersPatchCurrentUserError, UsersPatchCurrentUserResponse, UsersUserData, UsersUserError, UsersUserResponse, UsersPatchUserData, UsersPatchUserError, UsersPatchUserResponse, UsersDeleteUserData, UsersDeleteUserError, UsersDeleteUserResponse, GetChildrenError, GetChildrenResponse, UpdateChildData, UpdateChildError, UpdateChildResponse, CreateChildData, CreateChildError, CreateChildResponse, GetChildData, GetChildError, GetChildResponse, DeleteChildData, DeleteChildError, DeleteChildResponse, GetChildImageData, GetChildImageError, GetChildImageResponse, UploadChildImageData, UploadChildImageError, UploadChildImageResponse, DeleteChildImageData, DeleteChildImageError, DeleteChildImageResponse, GetCurrentMilestoneAnswerSessionData, GetCurrentMilestoneAnswerSessionError, GetCurrentMilestoneAnswerSessionResponse, UpdateMilestoneAnswerData, UpdateMilestoneAnswerError, UpdateMilestoneAnswerResponse, GetCurrentUserAnswersError, GetCurrentUserAnswersResponse, UpdateCurrentUserAnswersData, UpdateCurrentUserAnswersError, UpdateCurrentUserAnswersResponse, GetCurrentChildAnswersData, GetCurrentChildAnswersError, GetCurrentChildAnswersResponse, UpdateCurrentChildAnswersData, UpdateCurrentChildAnswersError, UpdateCurrentChildAnswersResponse, GetExpiredMilestoneAnswerSessionsData, GetExpiredMilestoneAnswerSessionsError, GetExpiredMilestoneAnswerSessionsResponse, GetMilestonegroupsForSessionData, GetMilestonegroupsForSessionError, GetMilestonegroupsForSessionResponse, GetDetailedFeedbackForMilestonegroupData, GetDetailedFeedbackForMilestonegroupError, GetDetailedFeedbackForMilestonegroupResponse, GetSummaryFeedbackForAnswersessionData, GetSummaryFeedbackForAnswersessionError, GetSummaryFeedbackForAnswersessionResponse, GetDetailedFeedbackForAnswersessionData, GetDetailedFeedbackForAnswersessionError, GetDetailedFeedbackForAnswersessionResponse, AuthCookieLoginData, AuthCookieLoginError, AuthCookieLoginResponse, AuthCookieLogoutError, AuthCookieLogoutResponse, RegisterRegisterData, RegisterRegisterError, RegisterRegisterResponse, ResetForgotPasswordData, ResetForgotPasswordError, ResetForgotPasswordResponse, ResetResetPasswordData, ResetResetPasswordError, ResetResetPasswordResponse, VerifyRequestTokenData, VerifyRequestTokenError, VerifyRequestTokenResponse, VerifyVerifyData, VerifyVerifyError, VerifyVerifyResponse, AuthError, AuthResponse } from './types.gen';

export const client = createClient(createConfig());

Expand Down Expand Up @@ -585,6 +585,56 @@ export const updateCurrentChildAnswers = <ThrowOnError extends boolean = false>(
});
};

/**
* Get Expired Milestone Answer Sessions
*/
export const getExpiredMilestoneAnswerSessions = <ThrowOnError extends boolean = false>(options: Options<GetExpiredMilestoneAnswerSessionsData, ThrowOnError>) => {
return (options?.client ?? client).get<GetExpiredMilestoneAnswerSessionsResponse, GetExpiredMilestoneAnswerSessionsError, ThrowOnError>({
...options,
url: '/users/milestone-answers-sessions/{child_id}'
});
};

/**
* Get Milestonegroups For Session
*/
export const getMilestonegroupsForSession = <ThrowOnError extends boolean = false>(options: Options<GetMilestonegroupsForSessionData, ThrowOnError>) => {
return (options?.client ?? client).get<GetMilestonegroupsForSessionResponse, GetMilestonegroupsForSessionError, ThrowOnError>({
...options,
url: '/users/feedback/answersession={answersession_id}'
});
};

/**
* Get Detailed Feedback For Milestonegroup
*/
export const getDetailedFeedbackForMilestonegroup = <ThrowOnError extends boolean = false>(options: Options<GetDetailedFeedbackForMilestonegroupData, ThrowOnError>) => {
return (options?.client ?? client).get<GetDetailedFeedbackForMilestonegroupResponse, GetDetailedFeedbackForMilestonegroupError, ThrowOnError>({
...options,
url: '/users/feedback/answersession={answersession_id}/milestonegroup={milestonegroup_id}/detailed'
});
};

/**
* Get Summary Feedback For Answersession
*/
export const getSummaryFeedbackForAnswersession = <ThrowOnError extends boolean = false>(options: Options<GetSummaryFeedbackForAnswersessionData, ThrowOnError>) => {
return (options?.client ?? client).get<GetSummaryFeedbackForAnswersessionResponse, GetSummaryFeedbackForAnswersessionError, ThrowOnError>({
...options,
url: '/users/feedback/answersession={answersession_id}/summary'
});
};

/**
* Get Detailed Feedback For Answersession
*/
export const getDetailedFeedbackForAnswersession = <ThrowOnError extends boolean = false>(options: Options<GetDetailedFeedbackForAnswersessionData, ThrowOnError>) => {
return (options?.client ?? client).get<GetDetailedFeedbackForAnswersessionResponse, GetDetailedFeedbackForAnswersessionError, ThrowOnError>({
...options,
url: '/users/feedback/answersession={answersession_id}/detailed'
});
};

/**
* Auth:Cookie.Login
*/
Expand Down
65 changes: 65 additions & 0 deletions frontend/src/lib/client/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,10 @@ export type MilestoneAdmin = {
};

export type MilestoneAgeScore = {
milestone_id: number;
age_months: number;
avg_score: number;
stddev_score: number;
expected_score: number;
};

Expand Down Expand Up @@ -751,6 +753,69 @@ export type UpdateCurrentChildAnswersResponse = (unknown);

export type UpdateCurrentChildAnswersError = (HTTPValidationError);

export type GetExpiredMilestoneAnswerSessionsData = {
path: {
child_id: number;
};
};

export type GetExpiredMilestoneAnswerSessionsResponse = ({
[key: string]: MilestoneAnswerSessionPublic;
});

export type GetExpiredMilestoneAnswerSessionsError = (HTTPValidationError);

export type GetMilestonegroupsForSessionData = {
path: {
answersession_id: number;
};
};

export type GetMilestonegroupsForSessionResponse = ({
[key: string]: MilestoneGroupPublic;
});

export type GetMilestonegroupsForSessionError = (HTTPValidationError);

export type GetDetailedFeedbackForMilestonegroupData = {
path: {
answersession_id: number;
milestonegroup_id: number;
};
};

export type GetDetailedFeedbackForMilestonegroupResponse = ({
[key: string]: (number);
});

export type GetDetailedFeedbackForMilestonegroupError = (HTTPValidationError);

export type GetSummaryFeedbackForAnswersessionData = {
path: {
answersession_id: number;
};
};

export type GetSummaryFeedbackForAnswersessionResponse = ({
[key: string]: (number);
});

export type GetSummaryFeedbackForAnswersessionError = (HTTPValidationError);

export type GetDetailedFeedbackForAnswersessionData = {
path: {
answersession_id: number;
};
};

export type GetDetailedFeedbackForAnswersessionResponse = ({
[key: string]: {
[key: string]: (number);
};
});

export type GetDetailedFeedbackForAnswersessionError = (HTTPValidationError);

export type AuthCookieLoginData = {
body: Body_auth_cookie_login_auth_login_post;
};
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/lib/components/AlertMessage.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<svelte:options runes={true} />
<script lang='ts'>
import type { ValidationError } from "$lib/client";
import { Alert, Button } from "flowbite-svelte";
import { EyeSolid, InfoCircleSolid } from "flowbite-svelte-icons";
import { _ } from "svelte-i18n";
Expand All @@ -14,7 +15,7 @@ let {
console.log(event);
},
}: {
message?: string;
message?: string | ValidationError[];
title?: string;
infotitle?: string;
lastpage?: string;
Expand Down
Loading