Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
447988e
Began work on classroom assignments
erinharrington-12 Apr 16, 2026
7798b8f
Added classroom assignment interface
erinharrington-12 Apr 23, 2026
4082f32
Redoing UI for teacher view to allow teachers to see more details abo…
erinharrington-12 Apr 23, 2026
8da2824
Added custom css to Card
erinharrington-12 Apr 23, 2026
682cfb1
Dialog pop up for selecting what students get assigned created assign…
erinharrington-12 Apr 23, 2026
9c094cf
Added various teacher tabs for teacher view including Home, Assignmen…
erinharrington-12 Apr 23, 2026
47513c6
People view for teacher classroom view to see who is in the classroom
erinharrington-12 Apr 23, 2026
e2ace5a
Interface for creating classroom assignments
erinharrington-12 Apr 23, 2026
7e985a2
Created Assignment view in Teacher tabs
erinharrington-12 Apr 23, 2026
bff2a03
Added topics for higher level organization as well as adding points t…
erinharrington-12 Apr 24, 2026
31defb0
Sim's Resizeable Combo Box, also in Ivygate, may combine later
erinharrington-12 Apr 24, 2026
e43d68f
Slight styling difference
erinharrington-12 Apr 24, 2026
333b39a
Tentative Classroom create Assignment that details what JBC challenge…
erinharrington-12 Apr 24, 2026
297d373
Added more attributes to ClassroomAssignment, changed ClassroomAssign…
erinharrington-12 Apr 28, 2026
c973190
Add set assignment actions
erinharrington-12 Apr 28, 2026
66b8fea
Added functionality to edit already created assignments
erinharrington-12 Apr 28, 2026
ec3fb7b
Visual dialog popup to see who is assigned to a specific assignment
erinharrington-12 Apr 28, 2026
1fe7777
Visual dialog pop up to see what challenges are included in the assig…
erinharrington-12 Apr 28, 2026
722dc60
Added prop to show who was already assigned and ability to change it
erinharrington-12 Apr 28, 2026
7d04353
Student row styling
erinharrington-12 Apr 28, 2026
3c6911b
After creating/editing an assignment, stay on Assignment tab in Teach…
erinharrington-12 Apr 28, 2026
10b5b8d
Assignment view now shows no subject assignments and specific subject…
erinharrington-12 Apr 28, 2026
dafbee4
Teacher view now has grades and leaderboard views. Can rename and del…
erinharrington-12 May 14, 2026
ba6384c
Added challenge completion time stamp to aid teacher view grade book
erinharrington-12 May 14, 2026
3f689f8
Assignments view differentiates between teacher and student. Student …
erinharrington-12 May 14, 2026
ba28e21
Differentiates student vs teacher view of classroom leaderboard
erinharrington-12 May 14, 2026
26eab87
Creating an assignment requires title with optional assignment descri…
erinharrington-12 May 14, 2026
361d7d8
Grades view shows table of each student and their progress on any ass…
erinharrington-12 May 14, 2026
e9e8be2
Home view for both student and teacher view shows a stream of upcomin…
erinharrington-12 May 14, 2026
76843c6
Both student and teacher view can see the classroom's teacher and stu…
erinharrington-12 May 14, 2026
ef23f63
Student tabs contain Home, Assignments, People and Leaderboard views
erinharrington-12 May 14, 2026
76a7d2e
Assigned challenges dialog details the assigned challenges and the a…
erinharrington-12 May 14, 2026
aef5c7c
Assignment details dialog shows the current completion status of any …
erinharrington-12 May 14, 2026
eaa6cd8
Submission details dialog shows the basic assignment information, opt…
erinharrington-12 May 14, 2026
ae4eccf
Dialog box that allows teacher to pick and choose what students curre…
erinharrington-12 May 14, 2026
6278680
Dialog popup for displaying the classroom invite code
erinharrington-12 May 14, 2026
a0e37fa
Are you sure dialog popup for removing a student from a classroom.
erinharrington-12 May 14, 2026
22c28a5
Slight change to dialog to enable the tour registry for guided tours
erinharrington-12 May 14, 2026
3f60fc5
Rename classroom dialog popup
erinharrington-12 May 14, 2026
fd53e1c
Basic dialog popup to show what students are assigned to the assignment
erinharrington-12 May 14, 2026
2777186
Added completed timestamp
erinharrington-12 May 14, 2026
c7ccbb6
Slight change to description for localization
erinharrington-12 May 14, 2026
2c1152f
Completion time for challenge
erinharrington-12 May 14, 2026
b2bf11a
Classroom internal state and database handlers
erinharrington-12 May 14, 2026
7d85d14
Override classroom assignment challenge points helper
erinharrington-12 May 14, 2026
e85c5fd
Export classroom assignment grades helper
erinharrington-12 May 14, 2026
4126c06
Scroll bar helper
erinharrington-12 May 14, 2026
79a52d7
Student assignment visibilty helper
erinharrington-12 May 14, 2026
9500550
UI field for override classroom assignment challenge points
erinharrington-12 May 14, 2026
a041b67
Teacher view overlay
erinharrington-12 May 14, 2026
535b8e2
Selected classroom background color to theme
erinharrington-12 May 14, 2026
b92887e
Updated guided tour for classrooms
erinharrington-12 May 14, 2026
54beacb
Removed console logs
erinharrington-12 May 14, 2026
08fa5b2
Linting/type changes
erinharrington-12 May 14, 2026
6480267
Update localization for classroom changes
erinharrington-12 May 14, 2026
00ac56b
Merge branch 'master' into classroomAssignments
erinharrington-12 May 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 173 additions & 68 deletions classrooms.js

Large diffs are not rendered by default.

531 changes: 530 additions & 1 deletion i18n/base.txt

Large diffs are not rendered by default.

6,116 changes: 4,006 additions & 2,110 deletions i18n/i18n.json

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ar-SA.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/bg-BG.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/cs-CZ.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/da-DK.po

Large diffs are not rendered by default.

1,653 changes: 1,040 additions & 613 deletions i18n/po/de-DE.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/el-GR.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/en-UK.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/en-US.po

Large diffs are not rendered by default.

1,157 changes: 842 additions & 315 deletions i18n/po/es-ES.po

Large diffs are not rendered by default.

2,165 changes: 1,346 additions & 819 deletions i18n/po/es-MX.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/fa-IR.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/fi-FI.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/fr-FR.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/he-IL.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/hi-IN.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/hu-HU.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/id-ID.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/it-IT.po

Large diffs are not rendered by default.

6,749 changes: 1,415 additions & 5,334 deletions i18n/po/ja-JP.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ko-KR.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ms-MY.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/nl-NL.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/no-NO.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/pl-PL.po

Large diffs are not rendered by default.

1,394 changes: 934 additions & 460 deletions i18n/po/pt-BR.po

Large diffs are not rendered by default.

1,475 changes: 975 additions & 500 deletions i18n/po/pt-PT.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ro-RO.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ru-RU.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/sk-SK.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/sv-SE.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/th-TH.po

Large diffs are not rendered by default.

1,775 changes: 1,151 additions & 624 deletions i18n/po/tl-PH.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/tr-TR.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/ur-PK.po

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions i18n/po/vi-VN.po

Large diffs are not rendered by default.

1,347 changes: 937 additions & 410 deletions i18n/po/zh-CN.po

Large diffs are not rendered by default.

1,369 changes: 948 additions & 421 deletions i18n/po/zh-TW.po

Large diffs are not rendered by default.

15 changes: 1 addition & 14 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ class App extends React.Component<Props, State> {
*/

const storedSettings = localStorage.getItem('bbSettings');
console.log("App componentDidMount called with bbSettings:", localStorage.getItem('bbSettings'));
if (storedSettings) {

const parsedSettings: Partial<Settings> = JSON.parse(storedSettings) as Partial<Settings>;
Expand All @@ -113,7 +112,6 @@ class App extends React.Component<Props, State> {
const lang: LocalizedString.Language = LocalizedString.validate(localStorage.getItem('bblocale'));
if (lang) {
this.props.setLocale(lang);
console.log(`Read locale from localstorage: ${lang}`);
} else {
switch (navigator.language) {
case 'ja':
Expand Down Expand Up @@ -154,7 +152,6 @@ class App extends React.Component<Props, State> {

const interfaceMode = localStorage.getItem('interfaceMode');
if (interfaceMode) {
console.log("Read interfaceMode from localstorage:", interfaceMode);
this.props.setInterfaceMode(interfaceMode === 'Advanced' ? InterfaceMode.ADVANCED : InterfaceMode.SIMPLE);
}

Expand Down Expand Up @@ -185,17 +182,6 @@ class App extends React.Component<Props, State> {
console.error('Failed to read user consent from DB');
});

// db.get<Tours>(Selector.tours(user.uid))
// .then(tours => {
// console.log('Tours info:', tours);
// })
// .catch(error => {
// if (DbError.is(error) && error.code === DbError.CODE_NOT_FOUND) {
// console.log('Tours info does not exist');
// } else {
// console.error('Failed to read tours info from DB', error);
// }
// });
} else {
this.props.login();
}
Expand Down Expand Up @@ -245,6 +231,7 @@ class App extends React.Component<Props, State> {
<Route path="/classrooms/:teacherId/teacherView" element={<ClassroomTeacherView theme={DARK} />} />
<Route path="/classrooms/:studentId/studentView/" element={<ClassroomStudentView theme={DARK} />} />
<Route path="/classrooms/:studentId/studentView/:classroomId" element={<ClassroomStudentView theme={DARK} />} />
<Route path="/classrooms/:studentId/curriculumPage" element={<CurriculumPage />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
<DocumentationWindow theme={DARK} documentationType={'default'} />
Expand Down
7 changes: 7 additions & 0 deletions src/components/Challenge/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@ class Challenge extends React.PureComponent<Props, State> {
locale={locale}
type="success"
/>
{latestChallengeCompletion?.success?.exprStates?.completion &&
latestChallengeCompletion.completedAt && (
<div style={{ fontSize: '0.85em', padding: '0.35em 0 0 0.25em', opacity: 0.9 }}>
{LocalizedString.lookup(tr('Completed at'), locale)}:{' '}
{new Date(latestChallengeCompletion.completedAt).toLocaleString(locale)}
</div>
)}
</Section>
)}
{latestChallenge.failureGoals && latestChallenge.failureGoals.length > 0 && (
Expand Down
Loading
Loading