-
Notifications
You must be signed in to change notification settings - Fork 107
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
Adding another grading method according to attend duration #477
Conversation
fmido88
commented
May 1, 2023
- Grading now according to the duration of meeting attendance
- set the id with the name for non-registered users so we use it a unique identifier for the user.
- updating records of participants instate of adding new record in case if the non-registered user left the meeting and return
Hi @fmido88, Thank you for sharing your work on grading attendance as a percentage of meeting attendance. This is a very challenging feature to implement and it's clear that you have put a lot of thought into this as there were a few notable resiliencies (such as if a user gets disconnected and needs to reconnect) that you worked hard to add. There are far more risks with percentage attendance grading (because of limitations in Zoom's interfaces) than our current "full grade" approach. For completeness, I'll list as many as I am aware of (including ones you've addressed):
This implementation attempts to resolve these problems in these ways:
Changes needed:
|
@jrchamp |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely making progress, but I want to make sure that we are very comfortable with the logic, because it will affect grades.
Hello @jrchamp |
Thanks @fmido88, I can tell you've worked a lot on this. The one unresolved comment is still true: This needs PHPUnit tests. The grading and duration logic should be outside of the data load loop/function so that grade calculation can be done separately, which should make the PHPUnit tests easier to write. I'm sorry I haven't responded more quickly and this review is not as detailed - it's an extremely busy time for me right now, but I think this should help address the remaining large issues and any small issues can hopefully be folded in at the end. |
Thanks @jrchamp for your response. |
I think putting back the data load code as it was (except we should fix the "only delete if we have data" problem, and I have ideas for that). We don't need a new database table to store the calculated durations, because calculating the grades only needs to happen when the data changes for a user (I have an idea for this too). Rough steps, so I don't forget the ideas:
|
Hi again @jrchamp If it is ok I'll start making the tests for both functions get_participant_overlap_time() and grading_participant_upon_duration() |
You are not bothering me! 😄 I can tell how much you care about doing a good job and I appreciate it. I'm excited about the structure of this new version. I think it's a good idea to move forward with the tests, which will help confirm if the logic is correct. Once you have a test created, I should have more time next week to help. |
Thanks @jrchamp |
PHPUnit test added to test the overlapping time and the new grading method. |
In the last commit I added a notification function that sends teachers in the course containing the meeting a message about grades. Also updating the PHPUnit test for grading: sorry for any grammatical or spelling mistakes, it will be great if someone check them specially in the language file. |
Last thing, is getting list of user clicked join meeting and send those that aren't reconized to teachers to narrow the search for users needs manual grading I think I'm done if there is no other suggestions or comments in the last modifications |
@jrchamp Hi again |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @fmido88,
There's definitely progress here. I wasn't able to review everything, because it's time for me to go home, but I think these suggestions will help keep this moving along.
Hi @jrchamp ; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for incorporating the previous suggestions so quickly. I was able to review some more today, so here's some more.
All suggestions reviewed. Sorry for my rusty language because English isn't my mother language so as I see there so many corrections for grammar and spelling mistakes. I considered your suggestion about any user front strings and checking if the user enrolled in the course before adding the score. I hope the final code is ok, and if there is any more test cases seem to be added , inform me. |
@jrchamp there is a problem with grunt test in form.js but I didn't change any thing in it. |
Tried reviewing the code changes (sorry for the delay), the logic makes sense to me. |
Found the following : |
Hi @sgrandh3! What didn't change: |
The backup/restore process will probably need to add the new field to the list of fields that get backed up. Also, |
In first I thinked about naming it gradingmethod, but there is another field in the mod form with this name in the grading section, so I thought about gradingfor or gradefor, I'll think about something else. I'll work on backup/resotre code as soon as possible. |
Hi @jrchamp I updated the code such that changing the field name gradefor to grading_method, also added the field to backup list of fields. |
What is the expected behavior of this use case: 1. The instructor created a Zoom meeting and started the meeting as per the schedule. The instructor got graded accordingly. 2. After the meeting, the instructor modified the same Zoom meeting to a different time. Now, what should happen to the existing grades? Rest all looks good, did not find any other issues while testing |
Hello @sgrandh3 The grades should be updated automatically, only for higher grades. After modification |
Thank you for the quick reply. @fmido88 |
- Grade according to the duration of meeting attendance - set the id with the name for non-registered users so we use it a unique identifier for the user. - updating records of participants instate of adding new record in case if the non-registered user left the meeting and return fixing some codes and try to fix phpunit test add name condition add a condition for checking the existence of the participant by name along with user id to avoid update existence record if the user id is null this should pass the phpunit test adding a condition to check the existence of a data in zoom_meeting_participants by name along with user id to prevent updating records of users with null id. options for grading methods and display name - Adding setting to choose the grading method. - Adding setting to choose the display name. - Removing the overlapped time when merging a participant record in duration. get_participant_overlap_time creating a function that properly calculate the overlap timing in the meeting reports. Just make the code checker happier. Update get_meeting_reports.php forgot to include join_time field. Creating a function to calculate users grades - Creating a function to calculate users grades according to their duration in the meeting. - Fixing the function get_participant_overlap_time(). - Move the code to calculate the grades outside the loop. - return the original inserting data to the participants table. - prevent inserting multiple data for exist record. - not updating grades until the new grade is larger than the old one. testing the new grading method Notify teachers about grades Send teachers a notification about grades in meeting according to duration. test the notification update tests try preventResetByRollback() maybe messages test work! try to make messages work changing teacher role to editingteacher change graders array key fix message index fix misspelling Add and fix comments remove wrong using class and fix some comments check the existence of user after integer check Try not to be spamy As the task get_meeting_reports run, don't send notifications unless there is new records in meeting participants table Help teacher to fine ungraded users Narrowing the options for teachers needing to grade non-recognized students in participant meeting report. Adding a function to get a list of users clicked (join meeting) using this function and excluding already recognized students displaying a list of the rest student in the notification message to teachers try to solve null readers try to skip error: Call to a member function get_events_select() on null on PHPUnit test. phpcs: small cleanups New grading method is in module level - Add new field to mod_form to specify the grading method instead of specify it on the admin level. fix typo and version Change gradefor field to grading_method namespace: convert to use statements use messages Co-authored-by: Jonathan Champ <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that the v5.1 series seems to have stabilized, it's time for v5.2!