illinois / queue Goto Github PK
View Code? Open in Web Editor NEWA microservice queue for holding open office hours
License: University of Illinois/NCSA Open Source License
A microservice queue for holding open office hours
License: University of Illinois/NCSA Open Source License
Ex:
http://edu.cs.illinois.edu/queue/cs225/ shows only cs225 queues
http://edu.cs.illinois.edu/queue/cs241/ shows only cs241 queues
http://edu.cs.illinois.edu/queue/stat400/ shows only stat400 queues
The most basic utilization graph might include:
Other useful metrics (or overlays):
as title. Maybe just Queues @ Illinois or something?
Now that the repo is public, we can easily add CI to make our tests and linting even more valuable ๐
as discussed in #57, would allow course staff to "close" the queue by blocking new questions from being added. would get rid of the need for a course to keep deleting and recreating queues daily.
Every course has a short URL that redirects a user to the active queue for that course (ex: https://edu.cs.illinois.edu/queue/cs225 ). Currently, we don't inform the users or course staff about the URL.
allow a queue (course staff) to specify which locations a student can be for a specific queue.
change location to a drop down instead of a text box
Useful if location changes, for example. Allows us to update queue information without wiping all existing questions.
Currently, using "Add to home screen" on an Android device uses a generic icon and loads the page like a standard webpage.
Adding a Web App Manifest with icons
and display: minimal-ui
would show our custom icon alongside native apps and load the queue in a separate browser window with minimal navigation elements and a more app-like experience.
Dont think on duty staff needs to add a question to the queue. only reason I would see that being the case is if the staff wants to put a dummy question on the queue to mark the end of the queue.
in that case, maybe a button that would allow the queue to be closed for new questions, but allows the current questions to be viewed and answered?
Not sure if the button would encourage courses to just use one queue for eternity (instead of deleting and making new queues). Not sure if this would like to be avoided or not.
I'm fine with something as permissive as possible, don't know if people have any particular thoughts about licensing.
(This is a subset of the work that is likely done under #19)
may be important to give some indication of which queue and course the user is on, esp now that it could be a bit easier to accidentally join the wrong queue from the homepage
Would it be possible to create a "priority" system that would incentivize students attending class? For example, many students skip CS 233's lab sections and then come to office hours to ask questions that were directly covered during lab section. We'd like to explore the effect of a system where students who attended lab section during the week would be given some type of priority in the queue who did not attend lab section.
Because all routing + data loading is done client side, requests will start transparently failing when Shib auth expires because Shib returns a 200 + "expired" HTML. For all network requests, we should assume that a 200 response + invalid JSON means that Shib auth has expired and offer to hard-reload the page to trigger the auth process again.
When creating a new queue in homepage, the number of questions showed in queue card is "undefined questions" instead of supposed "0 questions".
Copy/paste is sometimes messy.
This will reduce the number of clicks required to get to the desired queue. If we use the member header from #4, we could even only display queues for the courses that someone is either in or on staff for.
as title, maybe useful for links/instructions/announcements?
n: do you see this living at a course level (applying to all queues) or being specific to a particular queue?
g : I was thinking on a queue level - just because it would get more visibility from students there imo. but if it stays on a queue level, i think it would be important to allow a default message to be preloaded into the box. but if you think on a course level makes more sense, then i'm not opposed
n : Right, it should definitely be displayed on the queue page. I was moreso wondering if the message itself would be attached to the course, and thus persist between queues over the days, or if it should be created on a per-queue basis. The default message would kind of answer that though!
If you visit the insecure http://edu.cs.illinois.edu/queue/ it redirects into Shibboleth but then loops the redirects. The page never loads but you see the URL change as things bounce around.
The https link works so maybe it's just something broken in how it redirects?
Also, I noticed queue/ needs the trailing slash to work.
Fixing those might make the queue more approachable (especially if you're typing it in as a URL instead of following a link) and could be fixed in apache configs. Need help with that?
specifically : the finish answering button shows for all questions that are being answered (for example when there are multiple TAs on the queue), not just for the specific question the TA is answering.
Candy (in CS Advising) e-mailed me about a problem they had yesterday where 3 people were unable to log into the queue (probably due to the shib auth error). Even as an admin, she could only add one of them to the queue herself.
A worthwhile feature would be to allow admins ("course staff") to add a question to the queue "as someone else" (eg: an ask a question with a NetID field?).
We can use our fancy new websocket infrastructure to make this update in real time, because why not?
Preferably in a way that wouldn't expose it to everyone through the JSON api gets, but even then I think it would do more good than harm as who is really going to look at those, and OH aren't really private either
From a conversation this morning, STAT advising may start using our queue next week. As we grow in courses, the list of all available courses may be less and less useful.
Two ideas:
When viewing the home page in a narrow width window, the buttons under "Or, select a course" wrap to multiple rows. Some spacing needs to be added between rows, potentially by adding a vertical margin to the buttons themselves.
visible to all staff or just the person answering?
Expected result: "waf" is added
Actual result: "waf " is added
If we want this queue to become widely used, we should have an About page that allwos someone to trace the app back to an actual organization (CS225) or person if they're interested in using it.
j : Allow the creator of a question to modify the location (maybe with an UPDATE / retooled POST?) Preferably would be usable both while unanswered and while marked as answered
g : also to allow update topic? not name tho
#74 has shown the dangers of having different testing and prod environments. Our tests would have caught that problem had they been running with the right DB.
Currently, all rendering decisions for questions are made based solely on if the current user is active queue staff. However, someone shouldn't have to join queue staff to see netids or to delete a question. So, we should change QuestionListContainer
to pass both isUserCourseStaff
and isUserActiveQueueStaff
so we can be a little more fine-grained about what exactly is shown.
We should create a workflow that allows faculty/staff to contact us to get a queue created for their course with minimal effort (possibly even a web form)? This should be prominent in the README, as most of our users will be other courses at Illinois.
We should make sure that the next.js statics build process (essentially babel+webpack) succeeds during the CI checks.
j : tooltip like Chara would work in my opinion
n : Another idea: use a green bar to the left of the question (like the green bar that indicates a question belongs to you), combined with a "NAME is answering this question" text below the question.
queue/components/UserProfileSettings.js misspells "University" as "Univsersity" (Line 37)
Cheers
When going to a queue link that has been closed, autoredirect to a queue from the same course. This may involve changing the way urls are handled.
Ex. instead of
https://edu.cs.illinois.edu/queue/queue/8
we could do
https://edu.cs.illinois.edu/queue/cs225/queue/8
Maybe only if >0 people on it, but probably safer and easier to have a popup no matter what with some sort of warning
ConfirmDeleteQueueModal
and friends currently use the same propTypes as ConfirmModal
, but they should only use a subset since descText
and confirmText
are never provided as props to those components.
queue.js:1 WebSocket connection to 'wss://edu.cs.illinois.edu/queue/socket.io/?EIO=3&transport=websocket&sid=0ivi-FlHXRTsKvjRAAPY' failed: Error during WebSocket handshake: Unexpected response code: 400
m.doOpen @ queue.js:1
queue.js:1 WebSocket connection to 'wss://edu.cs.illinois.edu/queue/socket.io/?EIO=3&transport=websocket&sid=PURmXOFAVKVX8djqAAPa' failed: Error during WebSocket handshake: Unexpected response code: 400
m.doOpen @ queue.js:1
queue.js:1 WebSocket connection to 'wss://edu.cs.illinois.edu/queue/socket.io/?EIO=3&transport=websocket&sid=NE83MXp6RYkY55-uAAPe' failed: Error during WebSocket handshake: Unexpected response code: 400
m.doOpen @ queue.js:1
edu.cs.illinois.edu/ Failed to load resource: the server responded with a status of 502 (Proxy Error)
answered Failed to load resource: the server responded with a status of 502 (Proxy Error)
queue.js:1 Error: Request failed with status code 502
at e (app.js:269)
at e (app.js:269)
at XMLHttpRequest.e (app.js:269)
(anonymous) @ queue.js:1
answered Failed to load resource: the server responded with a status of 502 (Proxy Error)
queue.js:1 Error: Request failed with status code 502
at e (app.js:269)
at e (app.js:269)
at XMLHttpRequest.e (app.js:269)
(anonymous) @ queue.js:1
2answered Failed to load resource: the server responded with a status of 502 (Proxy Error)
2queue.js:1 Error: Request failed with status code 502
at e (app.js:269)
at e (app.js:269)
at XMLHttpRequest.e (app.js:269)
(anonymous) @ queue.js:1
answered Failed to load resource: the server responded with a status of 502 (Proxy Error)
queue.js:1 Error: Request failed with status code 502
at e (app.js:269)
at e (app.js:269)
at XMLHttpRequest.e (app.js:269)
Replace the hard-coded values with ENV variables in config/config.json
for production.
This will be like the old queue-creation script on Chara, but as a first-class feature. Should allow a course to enter a recurring schedule for their office hours and automatically create queues based on that.We could probably just run a weekly cronjob to create the next week's worth of queues based on the schedule.
w : Even better (since we have this data): have course staff automatically added to the course based on their LDAP/Shib membership in the course staff group.
When creating a queue, the queue should be able to have either a "fixed location" or a "student-supplied" location.
If a queue has a "fixed location", students are unable to enter a custom location.
If a queue has a "student supplied" location, students are able to enter a custom location.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.