Skip to content

feat: [WIP]Complete course table view, animation and connect to data layer#135

Draft
Dao-you wants to merge 26 commits intomainfrom
course_table_blocks
Draft

feat: [WIP]Complete course table view, animation and connect to data layer#135
Dao-you wants to merge 26 commits intomainfrom
course_table_blocks

Conversation

@Dao-you
Copy link
Contributor

@Dao-you Dao-you commented Feb 28, 2026

Define course table block component, illustrate background and arrange courses to the table, fulfill and replace placeholder on current course table screen.

Brfore repository layer complete, use the temp datatype below:

/// Temporary UI contract for one course entry in the course table.
///
/// Field names and types align with current database schema as much as possible
/// so repository implementation can migrate without API changes.
typedef CourseTableInfoObject = ({
  /// [CourseOfferings.number].
  String number,

  /// [Courses.nameZh].
  String? courseNameZh,

  /// [Teachers.nameZh] of this offering.
  ///
  /// A course offering can have multiple teachers.
  List<String> teacherNamesZh,

  /// [Courses.credits].
  double credits,

  /// [Courses.hours].
  int hours,

  /// [Classrooms.nameZh] of this offering.
  ///
  /// A course offering can use multiple classrooms.
  List<String> classroomNamesZh,

  /// Raw schedule format from [Schedules] table.
  ///
  /// Each entry is one `(dayOfWeek, period)` slot.
  List<({DayOfWeek dayOfWeek, Period period})> schedule,

  /// [Classes.nameZh] of this offering.
  ///
  /// A course offering can target multiple classes.
  List<String> classNamesZh,
});

/// Temporary UI contract for one renderable time block in the course table.
typedef CourseTableBlockObject = ({
  /// Course metadata shown in this block.
  CourseTableInfoObject courseInfo,

  /// Weekday of this block.
  DayOfWeek dayOfWeek,

  /// Inclusive start slot of this block.
  Period startSection,

  /// Inclusive end slot of this block.
  Period endSection,
});


typedef CourseTableSummaryObject = ({
  // The semester this course table belongs to.
  Semester semester,

  /// Course blocks to render in the table.
  List<CourseTableBlockObject> courses,

  /// Whether the table has courses in the morning (before 12:00).
  bool hasAmCourse,
  bool hasNCourse,
  bool hasPmCourse,
  bool hasNightCourse,
  Period earliestStartSection,
  Period latestEndSection,
  bool hasSatCourse,
  bool hasSunCourse,

  /// Total credits of all courses in the table.
  double totalCredits,

  /// Total hours of all courses in the table.
  int totalHours,
});

TODOs

  • design course table block component
  • define datatype and start session to implement repo layer, thanks to @rileychh !
  • illustrate course table
  • use real data

@rileychh-dokploy-riley-ntut-npc
Copy link

rileychh-dokploy-riley-ntut-npc bot commented Feb 28, 2026

Dokploy Preview Deployment

Name Status Preview Updated (UTC)
API Docs ✅ Done Preview URL 2026-03-05T06:15:36.851Z

@github-actions
Copy link

github-actions bot commented Feb 28, 2026

PR Preview Builds

Build Number: 566
Commit: 63fbca5
Message: feat: add fake loading effect and make course table grid stateful

Deploy

  • Android (Firebase App Distribution)
  • iOS (TestFlight)

Android (Firebase App Distribution)

Install build 566

iOS (TestFlight)

  1. Open the TestFlight app on your iOS device
  2. Select "Project Tattoo"
  3. Install build 566

@Dao-you Dao-you force-pushed the course_table_blocks branch from b38518d to e4f5b74 Compare March 5, 2026 04:09
@Dao-you Dao-you changed the title feat: Complete course table feat: [WIP]Complete course table view, animation and connect to data layer Mar 6, 2026
@Dao-you Dao-you force-pushed the course_table_blocks branch from 01381ca to 63fbca5 Compare March 7, 2026 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant