canvaslms-cli 1.4.7 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  A modern, user-friendly command-line interface for Canvas LMS. Manage courses, assignments, submissions, grades, and more directly from your terminal.
4
4
 
5
- ---
6
-
7
5
  ## Features
8
6
 
9
7
  - List and filter enrolled/starred courses
@@ -13,8 +11,6 @@ A modern, user-friendly command-line interface for Canvas LMS. Manage courses, a
13
11
  - Display user profile information
14
12
  - Direct access to Canvas API endpoints
15
13
 
16
- ---
17
-
18
14
  ## Installation
19
15
 
20
16
  ### Global (Recommended)
@@ -46,8 +42,6 @@ npm install -g canvaslms-cli
46
42
  CANVAS_API_TOKEN=your-api-token
47
43
  ```
48
44
 
49
- ---
50
-
51
45
  ## Usage
52
46
 
53
47
  ### Common Commands
@@ -57,7 +51,8 @@ canvas config # Configure domain and API token
57
51
  canvas list # List starred courses
58
52
  canvas list -a # List all enrolled courses
59
53
  canvas assignments <course> # List assignments for a course
60
- canvas grades # Show grades for all courses
54
+ canvas grades # Interactive course selection + detailed grades
55
+ canvas grades <course-id> # Show detailed grades for specific course
61
56
  canvas announcements # Show recent announcements
62
57
  canvas profile # Show user profile
63
58
  canvas submit # Interactive assignment submission
@@ -72,6 +67,35 @@ canvas submit -a <assignmentId> # Specify assignment
72
67
  canvas submit -f <file> # Submit specific file
73
68
  ```
74
69
 
70
+ ### Viewing Grades
71
+
72
+ The grades command provides an enhanced, interactive experience:
73
+
74
+ ```bash
75
+ canvas grades # Interactive course selection (active courses)
76
+ canvas grades --all # Include inactive/completed courses
77
+ canvas grades <course-id> # Direct course grade view
78
+ canvas grades --verbose # Include enrollment details
79
+ canvas grades -a -v # All courses with verbose details
80
+ ```
81
+
82
+ **Features:**
83
+ - šŸ“Š Interactive course selection with grade summary table
84
+ - šŸ“ Detailed assignment breakdown with scores
85
+ - āœ“ Color-coded status indicators (graded, pending, not done)
86
+ - šŸ“ˆ Calculated totals based on graded assignments
87
+ - šŸ“‹ Table-formatted overall grades
88
+ - šŸ” Option to view all courses including inactive ones
89
+ - šŸŽÆ Visual progress tracking with emojis
90
+
91
+ **What you'll see:**
92
+ 1. List of all courses with current/final scores
93
+ 2. Select a course to view detailed breakdown
94
+ 3. Overall grades (Canvas official + calculated average)
95
+ 4. Complete assignment list with individual scores
96
+ 5. Points earned vs points possible
97
+ 6. Assignment submission status
98
+
75
99
  ## Command Reference
76
100
 
77
101
  | Command | Alias | Description |
@@ -84,16 +108,12 @@ canvas submit -f <file> # Submit specific file
84
108
  | `profile` | `me` | Show user profile |
85
109
  | `config` | - | Show configuration |
86
110
 
87
- ---
88
-
89
111
  ## Requirements
90
112
 
91
113
  - Node.js >= 14.x
92
114
  - npm >= 6.x
93
115
  - Valid Canvas LMS API token
94
116
 
95
- ---
96
-
97
117
  ## Contributing
98
118
 
99
119
  1. Fork the repository
@@ -104,8 +124,6 @@ canvas submit -f <file> # Submit specific file
104
124
  6. Push: `git push origin feature-name`
105
125
  7. Submit a pull request
106
126
 
107
- ---
108
-
109
127
  ## License
110
128
 
111
129
  MIT License - see [LICENSE](LICENSE) for details.
@@ -1 +1 @@
1
- {"version":3,"file":"announcements.d.ts","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEpG,wBAAsB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGhH"}
1
+ {"version":3,"file":"announcements.d.ts","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEpG,wBAAsB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGhH"}
@@ -7,7 +7,7 @@ export async function showAnnouncements(courseId, options = {}) {
7
7
  let selectedCourseId = courseId;
8
8
  if (!selectedCourseId) {
9
9
  console.log(chalk.cyan.bold('Loading your courses, please wait...\n'));
10
- const courses = await makeCanvasRequest('get', 'courses', [
10
+ let courses = await makeCanvasRequest('get', 'courses', [
11
11
  'enrollment_state=active',
12
12
  'include[]=favorites'
13
13
  ]);
@@ -16,6 +16,11 @@ export async function showAnnouncements(courseId, options = {}) {
16
16
  rl.close();
17
17
  return;
18
18
  }
19
+ if (courses.length === 0) {
20
+ console.log(chalk.red('Error: No courses found (after filtering).'));
21
+ rl.close();
22
+ return;
23
+ }
19
24
  console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
20
25
  console.log(chalk.cyan.bold('Select a course:'));
21
26
  courses.forEach((course, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grades.d.ts","sourceRoot":"","sources":["../../commands/grades.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAkC,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAM3F,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JlG"}
1
+ {"version":3,"file":"grades.d.ts","sourceRoot":"","sources":["../../commands/grades.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAoD,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAuS7G,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqNlG"}
@@ -1,59 +1,232 @@
1
1
  import { makeCanvasRequest } from '../lib/api-client.js';
2
+ import { createReadlineInterface, askQuestionWithValidation } from '../lib/interactive.js';
2
3
  import chalk from 'chalk';
3
4
  function pad(str, len) {
4
5
  return str + ' '.repeat(Math.max(0, len - str.length));
5
6
  }
6
- export async function showGrades(courseId, options = {}) {
7
- try {
8
- if (courseId) {
9
- console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
10
- console.log(chalk.cyan.bold('Loading course grades, please wait...'));
11
- const course = await makeCanvasRequest('get', `courses/${courseId}`);
12
- const enrollments = await makeCanvasRequest('get', `courses/${courseId}/enrollments`, ['user_id=self', 'include[]=total_scores']);
13
- if (!enrollments || enrollments.length === 0) {
14
- console.log(chalk.red('Error: No enrollment found for this course.'));
15
- return;
7
+ async function showDetailedGrades(courseId, options) {
8
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
9
+ console.log(chalk.cyan.bold('Loading course grades, please wait...'));
10
+ const course = await makeCanvasRequest('get', `courses/${courseId}`);
11
+ const enrollmentParams = ['user_id=self', 'include[]=total_scores'];
12
+ enrollmentParams.push('state[]=active');
13
+ enrollmentParams.push('state[]=invited');
14
+ enrollmentParams.push('state[]=creation_pending');
15
+ enrollmentParams.push('state[]=rejected');
16
+ enrollmentParams.push('state[]=completed');
17
+ enrollmentParams.push('state[]=inactive');
18
+ const enrollments = await makeCanvasRequest('get', `courses/${courseId}/enrollments`, enrollmentParams);
19
+ if (!enrollments || enrollments.length === 0) {
20
+ console.log(chalk.red('Error: No enrollment found for this course.'));
21
+ return;
22
+ }
23
+ const enrollment = enrollments[0];
24
+ const grades = enrollment?.grades;
25
+ const assignments = await makeCanvasRequest('get', `courses/${courseId}/assignments`, ['include[]=submission', 'per_page=100']);
26
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
27
+ console.log(chalk.cyan.bold(`Course: ${course.name}`));
28
+ console.log(chalk.cyan('='.repeat(80)));
29
+ const assignmentGrades = assignments.map(assignment => {
30
+ const submission = assignment.submission;
31
+ return {
32
+ name: assignment.name,
33
+ id: assignment.id,
34
+ score: submission?.score ?? null,
35
+ pointsPossible: assignment.points_possible || 0,
36
+ submitted: !!(submission && submission.submitted_at),
37
+ graded: submission?.score !== null && submission?.score !== undefined,
38
+ dueAt: assignment.due_at
39
+ };
40
+ });
41
+ const gradedAssignments = assignmentGrades.filter(a => a.graded);
42
+ const totalPointsEarned = gradedAssignments.reduce((sum, a) => sum + (a.score || 0), 0);
43
+ const totalPointsPossible = gradedAssignments.reduce((sum, a) => sum + a.pointsPossible, 0);
44
+ const calculatedPercentage = totalPointsPossible > 0
45
+ ? ((totalPointsEarned / totalPointsPossible) * 100).toFixed(2)
46
+ : 'N/A';
47
+ console.log(chalk.white.bold('\nšŸ“ˆ Overall Grades:'));
48
+ if (grades) {
49
+ const colMetric = 25;
50
+ const colScore = 20;
51
+ const colStatus = 15;
52
+ console.log(chalk.gray('ā”Œā”€') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┬─') +
53
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┬─') +
54
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┐'));
55
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('Metric', colMetric)) + chalk.gray('│ ') +
56
+ chalk.cyan.bold(pad('Score/Grade', colScore)) + chalk.gray('│ ') +
57
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│'));
58
+ console.log(chalk.gray('ā”œā”€') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┼─') +
59
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┼─') +
60
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┤'));
61
+ const currentScoreValue = grades.current_score !== null ? `${grades.current_score}%` : 'N/A';
62
+ const finalScoreValue = grades.final_score !== null ? `${grades.final_score}%` : 'N/A';
63
+ const currentGradeValue = grades.current_grade || 'N/A';
64
+ const finalGradeValue = grades.final_grade || 'N/A';
65
+ console.log(chalk.gray('│ ') + chalk.white(pad('Current Score', colMetric)) + chalk.gray('│ ') +
66
+ chalk.green.bold(pad(currentScoreValue, colScore)) + chalk.gray('│ ') +
67
+ chalk.gray(pad('Official', colStatus)) + chalk.gray('│'));
68
+ console.log(chalk.gray('│ ') + chalk.white(pad('Final Score', colMetric)) + chalk.gray('│ ') +
69
+ chalk.green.bold(pad(finalScoreValue, colScore)) + chalk.gray('│ ') +
70
+ chalk.gray(pad('Official', colStatus)) + chalk.gray('│'));
71
+ console.log(chalk.gray('│ ') + chalk.white(pad('Current Grade', colMetric)) + chalk.gray('│ ') +
72
+ chalk.green.bold(pad(currentGradeValue, colScore)) + chalk.gray('│ ') +
73
+ chalk.gray(pad('Letter Grade', colStatus)) + chalk.gray('│'));
74
+ console.log(chalk.gray('│ ') + chalk.white(pad('Final Grade', colMetric)) + chalk.gray('│ ') +
75
+ chalk.green.bold(pad(finalGradeValue, colScore)) + chalk.gray('│ ') +
76
+ chalk.gray(pad('Letter Grade', colStatus)) + chalk.gray('│'));
77
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┓─') +
78
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┓─') +
79
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('ā”˜'));
80
+ }
81
+ else {
82
+ console.log(chalk.yellow(' No official grades available from Canvas.'));
83
+ }
84
+ console.log();
85
+ const colLabel = 30;
86
+ const colValue = 25;
87
+ const colNote = 20;
88
+ console.log(chalk.gray('ā”Œā”€') + chalk.gray('─'.repeat(colLabel)) + chalk.gray('┬─') +
89
+ chalk.gray('─'.repeat(colValue)) + chalk.gray('┬─') +
90
+ chalk.gray('─'.repeat(colNote)) + chalk.gray('┐'));
91
+ console.log(chalk.gray('│ ') + chalk.white(pad('Graded Assignments', colLabel)) + chalk.gray('│ ') +
92
+ chalk.cyan.bold(pad(`${gradedAssignments.length} / ${assignments.length}`, colValue)) + chalk.gray('│ ') +
93
+ chalk.gray(pad('Completed', colNote)) + chalk.gray('│'));
94
+ console.log(chalk.gray('│ ') + chalk.white(pad('Points Earned', colLabel)) + chalk.gray('│ ') +
95
+ chalk.cyan.bold(pad(`${totalPointsEarned.toFixed(2)} / ${totalPointsPossible.toFixed(2)}`, colValue)) + chalk.gray('│ ') +
96
+ chalk.gray(pad('Total', colNote)) + chalk.gray('│'));
97
+ console.log(chalk.gray('│ ') + chalk.white(pad('Calculated Average', colLabel)) + chalk.gray('│ ') +
98
+ chalk.cyan.bold(pad(typeof calculatedPercentage === 'string' ? calculatedPercentage : `${calculatedPercentage}%`, colValue)) + chalk.gray('│ ') +
99
+ chalk.gray(pad('From Graded', colNote)) + chalk.gray('│'));
100
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colLabel)) + chalk.gray('┓─') +
101
+ chalk.gray('─'.repeat(colValue)) + chalk.gray('┓─') +
102
+ chalk.gray('─'.repeat(colNote)) + chalk.gray('ā”˜'));
103
+ console.log(chalk.white.bold('\nAssignment Breakdown:'));
104
+ if (assignments.length === 0) {
105
+ console.log(chalk.yellow(' No assignments found for this course.'));
106
+ }
107
+ else {
108
+ const colNo = 6;
109
+ const colName = 40;
110
+ const colScore = 15;
111
+ const colStatus = 15;
112
+ const colDate = 20;
113
+ console.log(chalk.gray('ā”Œā”€') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┬─') +
114
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┬─') +
115
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┬─') +
116
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┬─') +
117
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('┐'));
118
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('#', colNo)) + chalk.gray('│ ') +
119
+ chalk.cyan.bold(pad('Assignment Name', colName)) + chalk.gray('│ ') +
120
+ chalk.cyan.bold(pad('Score', colScore)) + chalk.gray('│ ') +
121
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│ ') +
122
+ chalk.cyan.bold(pad('Due Date', colDate)) + chalk.gray('│'));
123
+ console.log(chalk.gray('ā”œā”€') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┼─') +
124
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┼─') +
125
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┼─') +
126
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┼─') +
127
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('┤'));
128
+ assignmentGrades.forEach((assignment, index) => {
129
+ const scoreDisplay = assignment.graded
130
+ ? `${(assignment.score || 0).toFixed(1)}/${assignment.pointsPossible}`
131
+ : assignment.pointsPossible > 0
132
+ ? `–/${assignment.pointsPossible}`
133
+ : 'N/A';
134
+ let statusDisplay = '';
135
+ let statusColor = chalk.gray;
136
+ if (assignment.graded) {
137
+ const percentage = assignment.pointsPossible > 0
138
+ ? ((assignment.score || 0) / assignment.pointsPossible) * 100
139
+ : 0;
140
+ if (percentage >= 80) {
141
+ statusDisplay = 'āœ“ Graded';
142
+ statusColor = chalk.green;
143
+ }
144
+ else if (percentage >= 50) {
145
+ statusDisplay = 'āœ“ Graded';
146
+ statusColor = chalk.yellow;
147
+ }
148
+ else {
149
+ statusDisplay = 'āœ“ Graded';
150
+ statusColor = chalk.red;
151
+ }
16
152
  }
17
- const enrollment = enrollments[0];
18
- const grades = enrollment?.grades;
19
- console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
20
- console.log(chalk.cyan.bold(`Grades for: ${course.name}`));
21
- console.log(chalk.cyan('-'.repeat(60)));
22
- if (grades) {
23
- console.log(chalk.white('Current Score: ') + chalk.bold.green(grades.current_score !== null ? `${grades.current_score}%` : 'N/A'));
24
- console.log(chalk.white('Final Score: ') + chalk.bold.green(grades.final_score !== null ? `${grades.final_score}%` : 'N/A'));
25
- console.log(chalk.white('Current Grade: ') + chalk.bold.green(grades.current_grade || 'N/A'));
26
- console.log(chalk.white('Final Grade: ') + chalk.bold.green(grades.final_grade || 'N/A'));
153
+ else if (assignment.submitted) {
154
+ statusDisplay = 'Pending';
155
+ statusColor = chalk.cyan;
27
156
  }
28
157
  else {
29
- console.log(chalk.yellow('No grades available for this course.'));
158
+ statusDisplay = 'Not Done';
159
+ statusColor = chalk.gray;
30
160
  }
31
- if (options.verbose && enrollment) {
32
- console.log(chalk.cyan('\n' + '-'.repeat(60)));
33
- console.log(chalk.cyan.bold('Enrollment Details:'));
34
- console.log(chalk.white('Enrollment ID: ') + enrollment.id);
35
- console.log(chalk.white('Type: ') + enrollment.type);
36
- console.log(chalk.white('State: ') + enrollment.enrollment_state);
161
+ const dueDate = assignment.dueAt
162
+ ? new Date(assignment.dueAt).toLocaleDateString()
163
+ : 'No due date';
164
+ let displayName = assignment.name;
165
+ if (displayName.length > colName) {
166
+ displayName = displayName.substring(0, colName - 3) + '...';
37
167
  }
38
- console.log(chalk.cyan('-'.repeat(60)));
168
+ console.log(chalk.gray('│ ') + chalk.white(pad((index + 1).toString(), colNo)) + chalk.gray('│ ') +
169
+ chalk.white(pad(displayName, colName)) + chalk.gray('│ ') +
170
+ chalk.white(pad(scoreDisplay, colScore)) + chalk.gray('│ ') +
171
+ statusColor(pad(statusDisplay, colStatus)) + chalk.gray('│ ') +
172
+ chalk.gray(pad(dueDate, colDate)) + chalk.gray('│'));
173
+ });
174
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┓─') +
175
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┓─') +
176
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┓─') +
177
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┓─') +
178
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('ā”˜'));
179
+ }
180
+ console.log(chalk.cyan('='.repeat(80)));
181
+ if (options.verbose && enrollment) {
182
+ console.log(chalk.cyan('\n' + '-'.repeat(80)));
183
+ console.log(chalk.cyan.bold('Enrollment Details:'));
184
+ console.log(chalk.white(' Enrollment ID: ') + enrollment.id);
185
+ console.log(chalk.white(' Type: ') + enrollment.type);
186
+ console.log(chalk.white(' State: ') + enrollment.enrollment_state);
187
+ console.log(chalk.cyan('-'.repeat(80)));
188
+ }
189
+ }
190
+ export async function showGrades(courseId, options = {}) {
191
+ try {
192
+ if (courseId) {
193
+ await showDetailedGrades(courseId, options);
39
194
  }
40
195
  else {
41
- console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
42
- console.log(chalk.cyan.bold('Loading grades for all courses, please wait...'));
43
- const courses = await makeCanvasRequest('get', 'courses', [
44
- 'enrollment_state=active',
196
+ const rl = createReadlineInterface();
197
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
198
+ console.log(chalk.cyan.bold('Loading your courses, please wait...'));
199
+ const enrollmentState = options.all ? undefined : 'active';
200
+ const queryParams = [
45
201
  'include[]=total_scores',
46
202
  'include[]=current_grading_period_scores',
47
203
  'per_page=100'
48
- ]);
204
+ ];
205
+ if (enrollmentState) {
206
+ queryParams.unshift(`enrollment_state=${enrollmentState}`);
207
+ }
208
+ let courses = await makeCanvasRequest('get', 'courses', queryParams);
49
209
  if (!courses || courses.length === 0) {
50
- console.log(chalk.red('Error: No courses found.'));
210
+ console.log(chalk.red('āŒ Error: No courses found.'));
211
+ rl.close();
212
+ return;
213
+ }
214
+ if (courses.length === 0) {
215
+ console.log(chalk.red('āŒ Error: No courses found (after filtering).'));
216
+ rl.close();
51
217
  return;
52
218
  }
53
219
  const coursesWithGrades = [];
54
220
  for (const course of courses) {
55
221
  try {
56
- const enrollments = await makeCanvasRequest('get', `courses/${course.id}/enrollments`, ['user_id=self', 'include[]=total_scores']);
222
+ const enrollmentParams = ['user_id=self', 'include[]=total_scores'];
223
+ enrollmentParams.push('state[]=active');
224
+ enrollmentParams.push('state[]=invited');
225
+ enrollmentParams.push('state[]=creation_pending');
226
+ enrollmentParams.push('state[]=rejected');
227
+ enrollmentParams.push('state[]=completed');
228
+ enrollmentParams.push('state[]=inactive');
229
+ const enrollments = await makeCanvasRequest('get', `courses/${course.id}/enrollments`, enrollmentParams);
57
230
  coursesWithGrades.push({
58
231
  course,
59
232
  enrollment: enrollments[0] || null
@@ -66,28 +239,39 @@ export async function showGrades(courseId, options = {}) {
66
239
  });
67
240
  }
68
241
  }
69
- console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
70
- console.log(chalk.cyan.bold('Grades Summary'));
71
- console.log(chalk.cyan('-'.repeat(60)));
72
- console.log(chalk.green(`Success: Found ${coursesWithGrades.length} course(s).`));
73
- console.log(chalk.cyan('-'.repeat(60)));
74
- if (options.verbose) {
75
- console.log(pad(chalk.bold('No.'), 5) +
76
- pad(chalk.bold('Course Name'), 35) +
77
- pad(chalk.bold('ID'), 10) +
78
- pad(chalk.bold('Current Score'), 15) +
79
- pad(chalk.bold('Final Score'), 15) +
80
- pad(chalk.bold('Current Grade'), 15) +
81
- pad(chalk.bold('Final Grade'), 15));
82
- }
83
- else {
84
- console.log(pad(chalk.bold('No.'), 5) +
85
- pad(chalk.bold('Course Name'), 35) +
86
- pad(chalk.bold('ID'), 10) +
87
- pad(chalk.bold('Current'), 12) +
88
- pad(chalk.bold('Final'), 12));
89
- }
90
- console.log(chalk.cyan('-'.repeat(60)));
242
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
243
+ console.log(chalk.cyan.bold('Your Courses - Grades Summary'));
244
+ console.log(chalk.green(`āœ“ Found ${coursesWithGrades.length} course(s)${options.all ? ' (including inactive)' : ' (active only)'}.`));
245
+ const colNo = Math.max(3, coursesWithGrades.length.toString().length + 1);
246
+ const colStatus = Math.max(8, ...coursesWithGrades.map(c => (c.course.workflow_state === 'available' ? 'Active' : (c.course.workflow_state || 'Inactive')).length));
247
+ const colCurrent = Math.max(9, ...coursesWithGrades.map(c => {
248
+ const s = c.enrollment?.grades?.current_score;
249
+ return s !== null && s !== undefined ? `${s}%`.length : 3;
250
+ }));
251
+ const colFinal = Math.max(7, ...coursesWithGrades.map(c => {
252
+ const s = c.enrollment?.grades?.final_score;
253
+ return s !== null && s !== undefined ? `${s}%`.length : 3;
254
+ }));
255
+ const terminalWidth = process.stdout.columns || 80;
256
+ const overhead = 16;
257
+ const availableForName = Math.max(20, terminalWidth - (colNo + colStatus + colCurrent + colFinal + overhead));
258
+ const maxNameLength = Math.max(11, ...coursesWithGrades.map(c => c.course.name.length));
259
+ const colName = Math.min(maxNameLength, availableForName);
260
+ console.log(chalk.gray('ā”Œā”€') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┬─') +
261
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┬─') +
262
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┬─') +
263
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┬─') +
264
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('┐'));
265
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('#', colNo)) + chalk.gray('│ ') +
266
+ chalk.cyan.bold(pad('Course Name', colName)) + chalk.gray('│ ') +
267
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│ ') +
268
+ chalk.cyan.bold(pad('Current', colCurrent)) + chalk.gray('│ ') +
269
+ chalk.cyan.bold(pad('Final', colFinal)) + chalk.gray('│'));
270
+ console.log(chalk.gray('ā”œā”€') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┼─') +
271
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┼─') +
272
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┼─') +
273
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┼─') +
274
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('┤'));
91
275
  coursesWithGrades.forEach((item, index) => {
92
276
  const { course, enrollment } = item;
93
277
  const grades = enrollment?.grades;
@@ -97,26 +281,49 @@ export async function showGrades(courseId, options = {}) {
97
281
  const finalScore = grades?.final_score !== null && grades?.final_score !== undefined
98
282
  ? `${grades.final_score}%`
99
283
  : 'N/A';
100
- const currentGrade = grades?.current_grade || 'N/A';
101
- const finalGrade = grades?.final_grade || 'N/A';
102
- if (options.verbose) {
103
- console.log(pad(chalk.white((index + 1) + '.'), 5) +
104
- pad(course.name, 35) +
105
- pad(String(course.id), 10) +
106
- pad(currentScore, 15) +
107
- pad(finalScore, 15) +
108
- pad(currentGrade, 15) +
109
- pad(finalGrade, 15));
110
- }
111
- else {
112
- console.log(pad(chalk.white((index + 1) + '.'), 5) +
113
- pad(course.name, 35) +
114
- pad(String(course.id), 10) +
115
- pad(currentScore, 12) +
116
- pad(finalScore, 12));
284
+ const statusText = course.workflow_state === 'available' ? 'Active' : (course.workflow_state || 'Inactive');
285
+ const statusColored = course.workflow_state === 'available' ?
286
+ chalk.green(pad(statusText, colStatus)) :
287
+ chalk.gray(pad(statusText, colStatus));
288
+ let displayName = course.name;
289
+ if (displayName.length > colName) {
290
+ displayName = displayName.substring(0, colName - 3) + '...';
117
291
  }
292
+ console.log(chalk.gray('│ ') + chalk.white(pad((index + 1).toString(), colNo)) + chalk.gray('│ ') +
293
+ chalk.white(pad(displayName, colName)) + chalk.gray('│ ') +
294
+ statusColored + chalk.gray('│ ') +
295
+ chalk.white(pad(currentScore, colCurrent)) + chalk.gray('│ ') +
296
+ chalk.white(pad(finalScore, colFinal)) + chalk.gray('│'));
118
297
  });
119
- console.log(chalk.cyan('-'.repeat(60)));
298
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┓─') +
299
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┓─') +
300
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┓─') +
301
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┓─') +
302
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('ā”˜'));
303
+ console.log(chalk.yellow('\nšŸ’” Select a course to view detailed grades for all assignments.'));
304
+ console.log(chalk.gray(' Or enter 0 to exit.'));
305
+ if (!options.all) {
306
+ console.log(chalk.gray(' Tip: Use --all flag to include inactive courses.\n'));
307
+ }
308
+ else {
309
+ console.log();
310
+ }
311
+ const validator = (input) => {
312
+ const num = parseInt(input);
313
+ return !isNaN(num) && num >= 0 && num <= coursesWithGrades.length;
314
+ };
315
+ const answer = await askQuestionWithValidation(rl, chalk.bold.cyan('Enter course number: '), validator, chalk.red(`Please enter a number between 0 and ${coursesWithGrades.length}.`));
316
+ const choice = parseInt(answer);
317
+ rl.close();
318
+ if (choice === 0) {
319
+ console.log(chalk.yellow('\nšŸ‘‹ Exiting grades viewer.'));
320
+ return;
321
+ }
322
+ const selectedCourse = coursesWithGrades[choice - 1];
323
+ if (selectedCourse) {
324
+ console.log(chalk.green(`\nāœ“ Selected: ${selectedCourse.course.name}\n`));
325
+ await showDetailedGrades(String(selectedCourse.course.id), options);
326
+ }
120
327
  }
121
328
  }
122
329
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"grades.js","sourceRoot":"","sources":["../../commands/grades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grades.js","sourceRoot":"","sources":["../../commands/grades.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../commands/list.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5E"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../commands/list.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF5E"}