Activity Feed
- Got a Like for Re: Develop Javascript / GraphQL on Test Instance?. yesterday
- Got a Like for Re: Develop Javascript / GraphQL on Test Instance?. yesterday
- Got a Like for Re: Course specific Page Views. yesterday
- Got a Like for Re: JavaScript. yesterday
- Got a Like for Re: JavaScript. yesterday
- Posted Re: JavaScript on Canvas Question Forum. Tuesday
- Posted Re: Course specific Page Views on Canvas Question Forum. Tuesday
- Posted Re: Develop Javascript / GraphQL on Test Instance? on Canvas Developers Group. Tuesday
- Posted Re: Develop Javascript / GraphQL on Test Instance? on Canvas Developers Group. Tuesday
- Got a Like for Re: Seeking Data Source/Report for "Last Date of Attendance" (aka Last Date of Submission). Tuesday
- Liked Canvas Data 2: status report for Edina_Tipter. Sunday
- Posted Re: Find all assignments with no submissions on Canvas Developers Group. Sunday
- Posted Re: Seeking Data Source/Report for "Last Date of Attendance" (aka Last Date of Submission) on Canvas Question Forum. Sunday
- Got a Like for Re: Login page customization. Thursday
- Liked Re: Login page customization for chriscas. Thursday
- Posted Re: Login page customization on Canvas Question Forum. Thursday
- Got a Like for Re: Find all assignments with no submissions. a week ago
- Got a Like for Re: Find all assignments with no submissions. a week ago
- Posted Re: Find all assignments with no submissions on Canvas Developers Group. 05-28-2023 05:08 PM
- Got a Like for Re: Enrolment. 05-19-2023 08:25 PM
My Posts
Post Details | Date Published | Views | Likes |
---|---|---|---|
Custom JS to display full sortable To Do list (List of Ungraded submissions) The built-in To Do list is a great tool for trainers to keep up with their grading. However, items on the list are displayed in no particular order. Thus I have written this script to improve it. T... |
01-20-2022 |
717 |
4 |
Exporting Live Events to SQL database with Fluentd (WIP, Contributions and Testers needed) Inspiring by @robotcars 's solution to export SQS (Live Events) to SQL (LEDbelly), I'm working on a similar concept. However, by using Fluentd (open-source), we can eliminate the need for... |
07-13-2021 |
2128 |
4 |
Tuesday
2 Likes
@mcarrion
The theme editor is the only way to add custom Javascript to Canvas.
Another way to integrate an app into Canvas is through LTI
As an example of a third-party app that provides accessibility tools for Canvas and is integrated deeply with Canvas, you can check out this software: https://cidilabs.com/landing/udoit/
... View more
Tuesday
1 Like
@PVSargent
If you don't need up to the minute data, then I would suggest using Canvas Data. This is the table containing user click/view data: https://portal.inshosteddata.com/docs#requests
... View more
Tuesday
1 Like
@DanielLim
1. You should test the code in the beta/test environment of your Canvas instance: https://community.canvaslms.com/t5/Canvas-Releases/What-is-the-Canvas-beta-environment/ta-p/255260
2. Yes, that's where you need to go to upload custom Javascript and CSS https://community.canvaslms.com/t5/Admin-Guide/How-do-I-upload-custom-JavaScript-and-CSS-files-to-an-account/ta-p/253
3. If you have Admin access to Canvas then you can upload the code to "Themes"
... View more
Tuesday
1 Like
@DanielLim
I've written a custom Javascript to pull data from GraphQL and display on Canvas. You can use my script here as a starting point: https://community.canvaslms.com/t5/Canvas-Developers-Group/Custom-JS-to-display-full-sortable-To-Do-list-List-of-Ungraded/m-p/507219#M7862
... View more
Sunday
@matt2
Canvas has 3 separate environments for your instance (production/live, beta, and testing). I usually use beta/testing environment to test my custom javascript/CSS before applying to the live environment
https://community.canvaslms.com/t5/Canvas-Releases/What-is-the-Canvas-beta-environment/ta-p/255260
... View more
Sunday
1 Like
@KristinaB
To get those data using Canvas API, you would need to make several different calls per student (E.g. submissions, and conversations). In order to get data for every student in your Canvas, you will need to input a list to your students to your macro to pull the data.
If you don't need up to a minute data, you can use Canvas Data (Canvas Data 1 has a latency of 24-48 hours, and the new Canvas Data 2 is 4 hours). Canvas Data is a preferable method to pull site-wide data, you can easily pull those data with one query. I can help you with the necessary SQL.
... View more
Thursday
1 Like
@SusanSeyfarth
From my understanding, you can't customise the wording on the login page. A workaround is to upload a custom CSS The following CSS will hide the word "Email" and change it to "FirstName.LastName"
#login_form > :nth-child(5) > .ic-Label:after {
content: 'FirstName.LastName' !important;
display: block !important;
visibility: visible !important;
}
#login_form > :nth-child(5) > .ic-Label {
visibility: hidden;
}
However, this CSS will not work on the Canvas mobile app and it might not work in future Canvas releases
... View more
05-28-2023
05:08 PM
2 Likes
@matt2 if you wanted a report of ungraded submissions, the best option is to use Canvas Data as it allows you to apply different filters through SQL and also you can get site-wide data. There is a latency depending on Canvas Data version that's available to you ( E.g. Canvas Data 1 is up to 48 hours, the new Canvas Data 2 is 4 hours)
if you need up-to-date data then GraphQL is preferable. As you're aware, filtering in GraphQL is very limited, however, you can use Javascript to filter the data. You can take a look at the code I've implemented to our Canvas for our trainers to view their pending grading submissions: https://community.canvaslms.com/t5/Canvas-Developers-Group/Custom-JS-to-display-full-sortable-To-Do-list-List-of-Ungraded/td-p/507219
... View more
05-18-2023
05:28 PM
1 Like
@Graham3
Do you use any sort of Student Management System (SIS) at your organisation? they may have an integration with Canvas for enrolment.
Alternatively, you can either use Canvas API or SIS Import (both can be automated) to create users and enrollments. They will be added to the course without the system sending out invitation links.
... View more
05-18-2023
05:12 PM
1 Like
@ChrisRenfrow
You will need to ask the person who requested your CSM to enable Canvas Data on your Canvas instance to grant you access.
... View more
05-18-2023
05:08 PM
1 Like
@MikeCerminara
No, you can't pull those data as they're stored in the viewer's web browser session only.
You will need to use a third-party SCORM hosting (E.g. https://rusticisoftware.com/products/scorm-cloud/#features) if you would like to view their responses.
... View more
05-18-2023
04:55 PM
@dcurry
You can open the "Files" section, hold Shift (or CRTL) to select multiple files
To restore a file that you have deleted, you can go to https://yourschool.instructure.com/courses/(course ID)/undelete
... View more
05-03-2023
04:33 PM
@Amanda_Spofford I have attached the SQL for Module Progression. As for the "student module progression" , I can't share it here as it's quite a complicated SQL combined with a custom Javascript table to display the data, thus you will need a web server to set it up.
... View more
04-02-2023
05:57 PM
We are still getting Timeout error when trying to initdb for large tables (E.g. assignments) 2023-04-03 10:14:44,533 - DEBUG - Traceback (most recent call last):
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\__main__.py", line 126, in console_entry
main()
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\__main__.py", line 115, in main
asyncio.run(dapCommand.execute(args))
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\commands.py", line 31, in execute
executed = await super().execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\base.py", line 49, in execute
if await subcommand.execute(args):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\base.py", line 45, in execute
await self._execute_impl(args)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\initdb_command.py", line 31, in _execute_impl
await init_db(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\actions\init_db.py", line 16, in init_db
await SQLReplicator(session, db_connection).initialize(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\replicator\sql.py", line 49, in initialize
await client.download(processor)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 78, in download
await wait_n(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\concurrency.py", line 39, in wait_n
raise exc
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 76, in logged_download_and_save
await self._download(context_aware_object, processor=processor)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 105, in _download
async for record in get_json_lines_from_gzip_stream(stream):
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\payload.py", line 23, in get_json_lines_from_gzip_stream
compressed_data = await stream.read(64 * 1024)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\aiohttp\streams.py", line 385, in read
await self._wait("read")
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\aiohttp\streams.py", line 303, in _wait
with self._timer:
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\aiohttp\helpers.py", line 721, in __exit__
raise asyncio.TimeoutError from None
TimeoutError
(__main__.py:140)
2023-04-03 10:14:44,543 - ERROR - (__main__.py:141) And when I tried to increase the timeout as mentioned by Colin, I get the following error 2023-04-03 11:03:15,066 - DEBUG - Traceback (most recent call last):
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\__main__.py", line 126, in console_entry
main()
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\__main__.py", line 115, in main
asyncio.run(dapCommand.execute(args))
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\commands.py", line 31, in execute
executed = await super().execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\base.py", line 49, in execute
if await subcommand.execute(args):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\base.py", line 45, in execute
await self._execute_impl(args)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\commands\initdb_command.py", line 31, in _execute_impl
await init_db(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\actions\init_db.py", line 16, in init_db
await SQLReplicator(session, db_connection).initialize(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\replicator\sql.py", line 49, in initialize
await client.download(processor)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 78, in download
await wait_n(
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\concurrency.py", line 39, in wait_n
raise exc
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 76, in logged_download_and_save
await self._download(context_aware_object, processor=processor)
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\downloader.py", line 105, in _download
async for record in get_json_lines_from_gzip_stream(stream):
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\dap\payload.py", line 23, in get_json_lines_from_gzip_stream
compressed_data = await stream.read(64 * 1024)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\aiohttp\streams.py", line 385, in read
await self._wait("read")
File "C:\Users\96122\AppData\Roaming\Python\Python311\site-packages\aiohttp\streams.py", line 304, in _wait
await waiter
aiohttp.client_exceptions.ClientPayloadError: Response payload is not completed
(__main__.py:140)
2023-04-03 11:03:15,076 - ERROR - Response payload is not completed (__main__.py:141)
... View more
11-14-2022
08:56 PM
@BarbaraPorwit Yes, a user enrolled in a Canvas course can be assigned multiple roles
... View more
11-07-2022
03:17 PM
2 Likes
@PraveenShukla You can use "Masquerading" to send API requests as another user instead of creating an access token for that user, this is useful when you wanted to perform an action on behalf of a user https://canvas.instructure.com/doc/api/file.masquerading.html However, if your account is an Admin, you can get data for any users without their API token. If you're designing an app for users to utilise API, you will need to implement OAuth2, which requires a user to login to Canvas using their credentials then it will generate the necessary API token for the user to perform API requests. https://canvas.instructure.com/doc/api/file.oauth.html
... View more
11-03-2022
03:30 PM
@manilpit Unfortunately, all API endpoints related to a student's progression become unavailable once the student's enrollment is concluded. You can reactive the student by following the instructions here https://community.canvaslms.com/t5/Instructor-Guide/How-do-I-restore-a-concluded-enrollment-in-a-course/ta-p/930 or via API https://canvas.instructure.com/doc/api/enrollments.html#method.enrollments_api.reactivate You can contact me if you need help setting up Canvas Data
... View more
11-02-2022
11:32 PM
2 Likes
@theaht123 Yes, that endpoint will be unavailable when the student is not active, you can temporary reactive the student, or use Canvas Data to get the data
... View more
09-27-2022
10:20 PM
1 Like
@FabCom-Aaron You can use "Masquerading": https://canvas.instructure.com/doc/api/file.masquerading.html
... View more
09-26-2022
05:55 PM
1 Like
@JJF1 You should be able to see all of your students and their submissions in a spreadsheet-like form by going to the "Marks" page (or gradebook) https://community.canvaslms.com/t5/Instructor-Guide/How-do-I-use-the-Gradebook/ta-p/701
... View more