After several weeks, the first prototype of the tagging feature has been implemented. While the views for this feature are not final, this gives an idea of what the final product may look like. In the next few weeks, Nathan and I will be hooking the tagging views into the controller and model.
Feedback on the new views is very much encouraged! This is still a work in progress. Without further ado, here are some screenshots of the views.
The Tag View:
The Submissions View:
Individual Submission View:
There you have it. As always, feel free to check out the tagging branch of the MarkUs repo and again, feel free to suggest any improvements that you have on the feature.
- Completed initial prototypes for the Tagging feature views. This includes a new tagging view and additions to the Submissions and Results views to implement the tagging features.
- Created CSS elements for tags and tagging features.
- Improved my proficiency in CSS.
- Getting feedback on the initial prototype and making improvements to it.
- Cleaning up some of the visual elements to make them conform to the MarkUs standard.
- Learned about how the controller connects with the models and views
- Completed dashboard design (sketch and wireframe)
- Started implementation of the new dashboard. I have split the view into two with the list of assignments and grading spreadsheets on the left but I am still trying to change the view on the right through links in the list. Still trying to figure out how the controller links to the view (getting a nil class error)
- Continue to implement the dashboard. Next I will need to implement the functionality t hat determines which assignment to display.
- finished implementing proof-of-concept to create tags associated with groupings, save in database, and retrieve tags by groupings when loading submissions table
- minor revisions to migration files as a result of the code I implemented this week
- opened pull request with migration files and models
- I’m not quite sure what I should do prior to Bryan’s view implementation being merged into the tagging branch. Once that is merged in, I will implement the code in the correct places to allow creation of tags wherever he has created an UI to do so. Also I will implement the code to retrieve tags wherever tags are displayed.
- converting repo browser table to React
- finish converting repo browser table to React
- UI Fixes with the PDF viewer.
- Very busy week so not as much work was completed as I would have liked.
- Complete PDF.JS UI so that the viewer does not interfere with the page.
- Work on front end annotation system.
- Pushed updated rspec tests from previous week
- Did not have much time to work on more testing due to other assignments and midterm
- Move more tests over
- Make up last weeks work
- revised the proposed schema for database definitions upon further research/readings
- implemented two migration files for creating Tags Model and a join table for the has_many_and_belongs_to relationships between tags and groupings
- implemented some code to retrieve tags for each grouping when the submissions table is loaded (hasn’t been tested yet)
- sync up with David/Bryan about my migration files
- implement code to create tags (need to sync with Bryan exactly what information the user will enter for each tag i.e. name, description) etc.
- once code to create tags is implemented, test creating tags and retrieving when submissions table loaded
- revised Dashboard plan based on feedback from Karen and David
- sketched three versions of Dashboard wireframes and chose one with feedback from David
- started implementing the changes (phase one: separate the view with list on the left that controls the details on the right)
- continue implementation of new design
- commit phase one
- I posted a couple of issues, #1840 and #1841, that both deal with adding consistency to the application
- I have been working on converting the rake Assignment tests over. There are many!
- I hope to have the majority of the rake Assignment test both reviewed and ported over by the end of the week.
- I was able to get the PDF.js viewer is in MarkUs, and can view, and control zoom on PDFs.
- Finish some implementation details and cleanup code with the viewer.
- Fix styling problems with the viewer in MarkUs.
- Fix deprecation warning according to server log from running rspec test.(Relation#all, Relation#first warnings etc),
but there are still many deprecation warnings and errors when I run rake test.
- Fix the error when log in as admin.
- Eliminate more deprecation warnings and errors.
- Fixed and closed Issue #1720 - Ascending/Descending icons change column widths
- Emailed dashboard plan to Karen and David
- Revise plan based on feedback and design wireframes
- Submitted a new view for issue #1726 (https://github.com/
MarkUsProject/Markus/issues/ 1726). The Flexible Criteria view now has an upload dialog that only enables its upload button when a file is selected.
- Added and improved a Tag view for the tagging feature. This view is not connected to a working controller but has working upload, download, create dialogs and a React table that is currently filled with “dummy data”.
- Submitted a post to the MarkUs blog outlining the tagging feature and upcoming features for it.
- Adding tag functionality to the submissions page and the assignment screen. This will allow filtering by tag and assigning tags to assignments. This will still not be connected to the tag controller.
- Looked over the database schema and wrote up proposed changes to the schema for the tagging project
- Read up on ActiveRecord
- Unfortunately did not have much time to work on Markus due to other course commitments and going out of town for Thanksgiving weekend
- Begin implementing changes reflected by the proposed changes to the database schema
- implement logic to create new tags, query for tags, and display tags next to submissions
- checking out React.js tutorials
- looking over existing React tables for reference
- conversion of table in Repository view to React
Note: I had a hectic sort of week and didn’t put much time into this course; my goal for this week is to put in a minimum of 10h and make up for lost time the following week, which should be less busy.
Since the UCOSP code sprint that occurred several weeks ago at Mozilla, our development group for this semester has been assigned projects to work on. Nathan and I have been tasked to create a new tagging feature for MarkUs. This post has been written to serve as a Q&A for this new feature and to provide an early look into what this feature may look like from a user perspective.
Tagging Feature? What’s that?
Glad you asked! Essentially, this feature will allow TAs and administrators to tag student submissions based on certain criteria. This criteria could be things such as incomplete assignments, assignments that appear to be really well done, etcetera. The purpose of these tags will allow people marking assignments to then filter the submissions based on certain tags. For instance, say a TA only wants to mark assignments that have a certain tag. To do this, the TA can simply filter assignments by that tag and then only mark those assignments. Voila! It’s that easy!
Another use for this feature could be for TAs that want to notify a course administrator about a certain issue in an assignment. The TA can simply tag the assignment as needing further attention from an administrator. Administrators can then log in to MarkUs and filter the submissions to see if any have this tag.
What has been done so far?
Now onto the technical stuff! Currently, the models and controllers for the tagging system are being created by Nathan (which will not be covered in detail in this post) and I’m working on the views for this feature.
Probably the most important view would be the “Tag Creation View”. Here, administrators are able to create, monitor, edit and delete tags. The motive behind this is that administrators can create “pre-defined” tags for the assignment before marking has commenced. As of now, this view has been created but is not connected to the tag controller.
Essentially, the tag creation view was designed to be as consistent with the MarkUs interface as possible. Basically, other views were looked at and used as a reference to create the view. Additionally, the code for the React tables in the student and submissions views were referenced to ensure similar structure. This makes the code more readable and easier to alter and upgrade in the future.
As you can see in the pictures below, the upload and download dialog boxes are also standardized.
What can I expect in the future?
This is where things get exciting (relatively speaking anyway). Probably the biggest goal is to actually get the views working and to be able to pull Tag data from the ActiveRecord. This will get a working prototype that Nathan and I can begin to refine.
Something that I am beginning to work on now is incorporating the tagging feature into the submissions view. In this, the React table containing all the submissions will have a new column named “Tags”. This will keep track of what tags are assigned to assignments and will allow administrators and TAs to filter assignments by tags. Additionally, in the grading view, there will be a new pane above the rubric panel that will allow markers to add and see current tags.
Currently, Nathan is working on the database side of this project. He is working on creating a proper model and controller for this feature. In the next few weeks, we will begin the process of integrating this model and controller with the view.
Where can I see updates for this feature?
This code is currently being held in the official MarkUs GitHub repository under the “tagging” branch. You can access this code here.
- Modified the collection process so that PDF files are not converted to images.
- Worked on integrating the full PDF.JS viewer into the grading page.
- Wasn’t able to work on the CSV upload problem because the VM still needs to be configured fully.
- Complete integration of the viewer into the page.
- Plan and start implementing annotations.
- Upgraded rails to 4.0 before upgrading to 4.1.
- Wrapped the conditions, order in lambda. The syntax we used before caused errors after upgrading to rails 4
- An error related to Active Record appears When log in as admin. The error disappeared when i switched back to rails 3.
Fix Deprecation warnings and errors.
- pushed rspec tests for the Assignment model’s associations and attributes
- Learned more rspec for the next tests I will write.
- Test the Assignment model methods and carry over existing tests from rake test.
- closed rspec tests and issue 1701
- started back end investigations for tagging project
- investigated how to interact with database, putting, getting etc.
- grab Bryan’s starter code when it’s ready
- hash out concrete design and schema changes
- start implementing the back end
- Made revisions to grouping rspec test file
- Closed Pull Request #1800
- Write plan for dashboard and send to Karen and David
- Submitted an updated fix for issue #1726 (https://github.com/
- Created a model, controller and new view for the tagging system. This new view can be accessed off each assignment page. It allows administrators to create, manage and delete tags. The view currently has no functionality.
- A major roadblock was learning how to incorporate views into MarkUs. It took several hours to ensure the links and stylesheets all worked for the new view.
- Improving the tag view.
- Adding tag functionality to the submissions page and the assignment screen. From here, TAs can see tagged assignments and can tag assignments with preset tags.
- testing issue #1722
- get a feel for React tables
- begin conversion of table in Repository view to React
- Researched and created a blog post outlining the feasibility of PDF.js
- Made some prototypes to prove PDF.js could work for annotations.
- Not much documentation outlining the actual PDF.js API so a lot of reverse engineering of the code needed to be done.
- Start implementing PDF.js annotation system.
- Continue work on CSV upload problem.
- Submitted pull request for Mark model RSpec test.
- Researched and read some documentation about upgrading from rails 3.2 to rails 4, made a small to do list.
- Start working on the upgrade by following checklist in the upgrade guide.
- Find new issue to fix.