User Guide
Welcome to Le Tracker ~
“The tragedy in life doesn’t lie in not reaching your goal. The tragedy lies in having no goal to reach.” - Benjamin E. Mays
School is hard. With numerous modules to juggle and endless topics to master, being a student can feel overwhelming at times. But does this truly need to be the case?
We believe that with a little help, content mastery is more than achievable.
“You don’t actually do a project; you can only do action steps related to it. When enough of the right action steps have been taken, some situation will have been created that matches your initial picture of the outcome closely enough that you can call it “done.” ― David Allen, Getting Things Done: The Art of Stress-Free Productivity
Le Tracker makes it easy to measure your overall study progress by tracking how much lecture content you have covered across various modules. More than just a simple to-do list app, Le Tracker blends the efficiency of a command line interface with the elegance of modern graphical user interface.
Now it’s time to CONQUER the semester!
Table of Contents
- Quick Start Guide
- Command Syntax
- Argument Formats
- Navigation
- Command Manual
- Notes
- Warning
- FAQ
- Command Summary
Quick Start Guide
Prerequisite
Make sure you have Java 11
installed on your computer by typing java --version
from your terminal. The output should be something similar to:
openjdk 11.0.18 2023-01-17 LTS
OpenJDK Runtime Environment Zulu11.62+17-CA (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
If not, please download it from the Oracle website.
Installation and Setup
-
Download the latest version of letracker.jar.
-
Open your terminal and navigate to the directory of the downloaded jar file.
-
Run the jar file by
java -jar letracker.jar
.
User Interface and Getting Started
-
Type any input in the command box.
-
Press
Enter
to execute a command.
For example, typinghelp
and pressingEnter
will open the help window. -
Use
and
arrow keys to scroll through previous commands that were executed successfully.
A Brief Guide to Navigation
Current Working Context Indicator
-
The blue label on the left of the command box displays your current working context.
-
Navigating to different contexts
- Here are some ways you can navigate between different contexts.
For more information on navigation, please view the navigation section.
Tutorials and Examples
Both scenarios achieve the same results, the difference lies in the context system used. You may try on either one of the scenario. If you are familiar with navigation, try out
Scenario 2
to be more comfortable with the syntax. If not, try out Scenario 1
to gain a better understanding of how navigation works.
Scenario 1 - Using Navigation
- To add a module, execute
add CS2103 /name Software Engineering
. - To add a tag of
BestModule
, executetag CS2103 /tags BestModule
. - To navigate into module
CS2103
, executenav CS2103
. - To add a lecture, execute
add Week 1
. - To navigate into lecture
Week 1
, executenav Week 1
. - To add a video, execute
add Vid 1
. - To add a timestamp, execute
edit Vid 1 /timestamp 10:20:15
. - To mark video as watched, execute
mark Vid 1
. - To change video name to
video 1
, executeedit Vid 1 /name video 1
. - To delete a video, execute
delete video 1
. - To navigate back into module
CS2103
and list it’s lectures, executenavb
. - To add a tag of
Intro
, executeedit Week 1 /tags Intro
. - To remove a tag of
Intro
, executeuntag Week 1 /tags Intro
- To navigate back to root context and list all modules, execute
nav
ornavb
.
Scenario 2 - Not using Navigation
- To add a module, execute
add CS2103 /name Software Engineering
. - To add a tag of
BestModule
, executetag CS2103 /tags BestModule
. - To add a lecture, execute
add Week 1 /mod CS2103
. - To add a video, execute
add Vid 1 /mod CS2103 /lec Week 1
. - To add a timestamp, execute
edit Vid 1 /mod CS2103 /lec Week 1 /timestamp 10:20:15
. - To list videos, execute
list /mod CS2103 /lec Week 1
. - To mark video as watched, execute
mark Vid 1 /mod CS2103 /lec Week 1
. - To change video name to
video 1
, executeedit Vid 1 /mod CS2103 /lec Week 1 /name video 1
. - To delete a video, execute
delete video 1 /mod CS2103 /lec Week 1
. - To list lectures, execute
list /mod CS2103
. - To add a tag of
Intro
, executeedit Week 1 /mod CS2103 /tags Intro
. - To remove a tag of
Intro
, executeuntag Week 1 /mod CS2103 /tags Intro
- To list all modules, execute
list
.
That covers all the main commands. Refer to the Command Manual section for details of each command. Feel free to play around with the sample data to familiarise yourself with the commands. Once you are comfortable, execute
clear
to delete all data and start from scratch.
Command Syntax
Named arguments are arguments which have a prefix while unnamed arguments are arguments without a prefix.
e.g. For the command add CS2040S /name DSAG
, “CS2040S” is the value of the unnamed argument and “DSAG” is the value of the named argument /name
.
- Items in curly braces (i.e.
{}
) are placeholders for some actual value. In a command format, they represent the argument values to be supplied by the user.Example
For a command with formatadd {module_code}
,{module_code}
is an argument value. The command can be used asadd CS2040
. - Items in square brackets (i.e.
[]
) are optional.Example
For a command with formatadd {module_code} [/name {module_name}]
, the/name
argument is optional. The command can be used asadd CS2040 /name Data Structures and Algorithms
or asadd CS2040
. - Named arguments can be specified in any order as long as it is after all unnamed arguments (if any).
Example
For a command with formatedit {module_code} /code {updated_code} /name {updated_name}
, the command can be used asedit CS2040 /code CS2040S /name DSAG
or asedit CS2040 /name DSAG /code CS2040S
. - If a named argument is expected only once in the command but the user specified it multiple times, only the last occurrence of the argument will be taken.
Example
For a command with formatadd {module_code} [/name {module_name}]
, if used asadd CS2040 /name Data Structures and Algorithms /name DSAG
,DSAG
will be taken as the value of the/name
argument. - Extraneous arguments will be ignored.
Example
For a command with formatadd {module_code} /name {module_name}
, if used asadd CS2040 /name DSAG /foo bar
, the/foo
argument is ignored. - Any occurrence of
/{argument_name}
, where{argument_name}
contains only alphabetical characters (a-z, A-Z), will be treated as a named argument if the following 2 conditions are met:- There is a whitespace before
/{argument_name}
-
/{argument_name}
is followed by a whitespace or it is the end of the command
Example
For the commandfind Intro /mod CS2040S /byTag
,/mod
and/byTag
are both recognised as named arguments. For the commandfind Intro /modCS2040S /byTag
, only/byTag
is recognised as a named argument whileIntro /modCS2040S
is treated as the value of the unnamed argument. - There is a whitespace before
Argument Formats
-
Lecture Name
Lecture names should only contain alphanumeric characters and spaces, and it should not be blank.
e.g. Week 1 -
Module Code
Module codes should begin with uppercase alphabetcal characters (A-Z), followed by numeric characters, optionally followed by more uppercase alphabetical characters (A-Z).
e.g. CS2040S -
Module Name
Module names should only contain alphanumeric characters and spaces, and it can be blank.
e.g. Data Structures and Algorithms -
Tag
Tags should only contain alphanumeric characters, and it should not be blank.
e.g. 4MCs -
Timestamp
Timestamp should be of the format
HH:mm:ss
whereHH
is the number of hours,mm
is the number of minutes, andss
is number of seconds, each integer being exactly 2 digits long.
e.g. 01:20:03 -
Video Name
Video names should only contain alphanumeric characters and spaces, and it should not be blank.
e.g. Video 1
Navigation
Current Working Context
Le Tracker organises content using a hierarchical structure (Modules -> Lectures -> Videos). When you are studying a specific lecture topic (e.g. Week 1 of CS2040S), you may find yourself frequently performing commands that are related to the module “CS2040S” and lecture “Week 1”.
To avoid the need to constantly specify the module and lecture parameters for such commands, the navigation system allows you to specify a current working context instead.
Type of contexts
-
Root context: The default and top-most context.
-
Module context: Represents a specified module.
-
Lecture context: Represents a specified lecture that belongs to a specified module.
Two Ways of Navigating
You can specify a current working context by navigating.
- There are two ways of navigating - relatively or directly.
For example, you can navigate to the lecture context - lecture “Week 1” of the module “CS2040S” by
-
Navigating relatively from the root context
- Navigate to the module context from the root context.
nav CS2040S
- Navigate to the lecture context from the module context.
nav Week 1
- Navigate to the module context from the root context.
-
Navigating directly from any context
- Navigate directly to the lecture “Week 1” of the module “CS2040S”.
nav /mod CS2040S /lec Week 1
- Navigate directly to the lecture “Week 1” of the module “CS2040S”.
Navigation Injection
After navigating to a lecture or module context, the navigation system will inject the required module and lecture parameters (i.e. /mod CS2040S
, /lec Week 1
) into commands so you don’t have to!
Here are some examples of how the navigation system injects the necessary context-related parameters into your commands:
-
Add “Video 2” to the lecture “Week 1” of module “CS2040S”.
add Video 2
->add Video 2 /mod CS2040S /lec Week 1
-
List the videos of lecture “Week 1” of module “CS2040S”.
list
->list /mod CS2040S /lec Week 1
-
Add “Video 1” to lecture “Week 1” of module “CS2040S”.
add Video 1 /lec Week 1
->add Video 1 /mod CS2040S /lec Week 1
Specifying Your Own Context In Commands
To specify your own context for a command without any injection, you can use the /r
, /mod
, /lec
arguments in your commands.
The following can be performed at any current working context
- Including the
/r
argument will perform a command from the root context.- e.g. List all modules at the root context.
list /r
->list
- e.g. List all modules at the root context.
- Including the
/mod
argument will perform a command from the module context.- e.g. Add lecture “Week 10” for module “CS2040S”.
add Week 10 /mod CS2040S
->add Week 10 /mod CS2040S
(No injection)
- e.g. Add lecture “Week 10” for module “CS2040S”.
- Including the
/mod
and/lec
arguments will perform a command from the lecture context.- e.g. Add video “BST Challenge” for lecture “Week 5” of module “CS2040S”.
add BST Challenge /mod CS2040S /lec Week 5
->add BST Challenge /mod CS2040S /lec Week 5
(No injection)
- e.g. Add video “BST Challenge” for lecture “Week 5” of module “CS2040S”.
To make it easier to specify a lecture context which shares the same module code as your current working context, the /mod
prefix can be injected when only the /lec
prefix is specified.
- e.g.
List videos of lecture “Week 5” of module “CS2040S”.
list /lec Week 5
->list /mod CS2040S /lec Week 5
- Note that the lecture week is different from the current working context and that only the
/mod
prefix has been injected into the command input.
Command Manual
The matching of values is case sensitive unless otherwise stated. For example, the lecture names “Week 1” and “week 1” are not the same.
If an argument value requires a specific format, click the argument value placeholder beside the argument description to go to the section containing the format.
Nav
Navigate to the Root Context
nav
Navigate to the root context from any context.
Navigate from Root Context to Module Context
nav {module_code}
Navigates from the root context to a module context.
-
module_code
: The code of the module to navigate to- Must belong to an existing module in Le Tracker
Navigate from Module Context to Lecture Context
nav {lecture_name}
Navigates from a module context to a lecture context.
-
lecture_name
: The name of the lecture to navigate to- Must belong to an existing lecture in the module of the current working context
Navigate Directly
nav /mod {module_code} [/lec {lecture_name}]
Navigates directly to the specified module or lecture context.
-
module_code
: The code of the module to navigate to- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture to navigate to- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
Navigate Backwards
navb
Navigates backwards to a higher context unless already at root context.
List
Items are listed in an alphabetical order sorted by
module_code
for Module
, lecture_name
for Lecture
and video_name
for Video
.
List Modules
list
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in List Lectures or List Videos (refer to Navigation Injection for more information).
List Lectures
list /mod {module_code}
Lists all lectures of a module.
-
module_code
: The code of the module to list the lectures from.- Must belong to an existing module in Le Tracker
Example
-
list /mod CS2040S
lists lectures belonging to CS2040S
List Videos
list /mod {module_code} /lec {lecture_name}
Lists all videos of a lecture in a module.
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture- Must belong to an existing lecture in the specified
module_code
- Must belong to an existing lecture in the specified
Example
-
list /mod CS2040 /lec Week 1
lists videos in lecture Week 1 belonging to CS2040S
Find
This is a case insensitive search and matches a target that starts with the search term.
E.g:
Type | Data | Keyword | Matched |
---|---|---|---|
ModuleCode | [CS2040S, CS2103, ST2334, MA2001] | cs21 | [CS2103] |
LectureName | [Week 1, Week 2, Week 3] | week | [Week 1, Week 2, Week 3] |
VideoName | [Video 1, Video 2, Some video] | video 1, some | [Video 1, Some video] |
Find Modules
find {keywords} [/byTag]
Find all modules whose code starts with any of the keyword(s).
-
/byTag
: If specified, the list filters for modules whose tag list contains any tag that starts with any of the keyword(s)
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Find Lectures or Find Videos (refer to Navigation Injection for more information).
Example
-
Assuming only a module
CS2040S
has tags["heavy", "math"]
,
find heav /byTag
will list modules [CS2040S].
Find Lectures
find {keywords} /mod {module_code} [/byTag]
Find all lectures in a specified module whose name starts with any of the keyword(s).
-
/byTag
: If specified, the list filters for lectures in a specifed module whose tag list contains any tag that starts with any of the keyword(s) -
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
Example
-
find week 1, week 2 /mod CS2040S
will list lectures ["Week 1", "Week 2"] of module "CS2040S". -
find intro, array /mod CS2040S /byTag
will list lectures belonging to module "CS2040S" with tags containing "intro" or "array".
Find Videos
find {keywords} /mod {module_code} /lec {lecture_name} [/byTag]
Find all videos in a specified lecture in a specified module whose name starts with any of the keyword(s).
-
/byTag
: If specified, the list filters for videos in a specified lecture in a specified module whose tag list contains any tag that starts with any of the keyword(s) -
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture- Must belong to an existing lecture in the specified
module_code
- Must belong to an existing lecture in the specified
Example
-
find vid1, vid2 /mod CS2040S /lec Week 2
will list videos ["Vid1", "Vid2"] in lecture Week 2 of module "CS2040S". -
find content /mod CS2040S /lec Week 2 /byTag
will list videos belonging to lecture "Week 2" of module "CS2040S" with tags containing "content".
Add
Add a Module
add {module_code} [/name {name}] [/tags {tag_1}[, {tag_2}[, ...]]]
Add a module to Le Tracker.
-
module_code
: The code of the module- Must be unique among the module code of the modules in Le Tracker
-
module_name
: The name of the module -
tag_1, tag_2, ...
: The tags to apply to the module- Repeated tags (if any) will be ignored
Example
-
add CS2040S /name Data Structures and Algorithms /tags Heavy, Math, Analysis
Add a module with code "CS2040S" to Le Tracker. The module is named "Data Structures and Algorithms" and has tags "Heavy", "Math", and "Analysis".
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Add a Lecture or Add a Video (refer to Navigation Injection for more information).
Add a Lecture
add {lecture_name} /mod {module_code} [/tags {tag_1}[, {tag_2}[, ...]]]
Add a lecture to a module.
-
lecture_name
: The name of the lecture- Must be unique among the names of the lectures belonging to the module specified in
module_code
- Must be unique among the names of the lectures belonging to the module specified in
-
module_code
: The code of the module to add the lecture to- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to apply to the lecture- Repeated tags (if any) will be ignored
Example
-
add Week 1 /mod CS2040S /tags Intro, Important
Add a lecture named "Week 1" to the module with code "CS2040S". The lecture has tags "Intro" and "Important".
Add a Video
add {video_name} /mod {module_code} /lec {lecture_name} [/timestamp {timestamp}] [/tags {tag_1}[, {tag_2}[, ...]]] [/watch]
Add a video to a lecture.
-
video_name
: The name of the video- Must be unique among the names of the videos belonging to the lecture specified in
lecture_name
- Must be unique among the names of the videos belonging to the lecture specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture to add the video to- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
timestamp
: The timestamp of the video where the user last stopped watching at- Defaults to
00:00:00
if the/timestamp
argument is not specified
- Defaults to
-
tag_1, tag_2, ...
: The tags to apply to the video- Repeated tags (if any) will be ignored
-
/watch
: If specified, the video will be marked as “watched”, else, it will be marked as “not watched”
Example
-
add Video 1 /mod CS2040S /lec Week 1 /timestamp 01:04:20 /tags Intro, Short /watch
Add a video named "Video 1" to the lecture named "Week 1" which belongs to the module with code "CS2040S". The video has timestamp "01:04:20" and has tags "Intro" and "Short". The video is also marked as watched.
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Edit
Edit a Module
edit {module_code} [/code {updated_code}] [/name {updated_name}] [/tags {tag_1}[, {tag_2}[, ...]]]
Edit the details of a module.
-
module_code
: The code of the module to be edited- Must belong to an existing module in Le Tracker
-
updated_code
: The updated module code- Must be unique among the module code of the modules in Le Tracker
-
updated_name
: The updated module name -
tag_1, tag_2, ...
: The tags that will replace the current tags applied to the module- Repeated tags (if any) will be ignored
Example
-
edit CS2040S /code CS2040 /name DSAG /tags Heavy, Math, Analysis
Edit the module with code "CS2040S". The module's code is updated to "CS2040", it's name updated to "DSAG" and it's tags are updated to "Heavy", "Math" and "Analysis".
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Edit a Lecture or Edit a Video (refer to Navigation Injection for more information).
Edit a Lecture
edit {lecture_name} /mod {module_code} [/name {updated_name}] [/tags {tag_1}[, {tag_2}[, ...]]]
Edit the details of a lecture.
-
lecture_name
: The name of the lecture to be edited- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
updated_name
: The updated lecture name- Must be unique among the names of the lectures belonging to the module specified in
module_code
- Must be unique among the names of the lectures belonging to the module specified in
-
tag_1, tag_2, ...
: The tags that will replace the current tags applied to the lecture- Repeated tags (if any) will be ignored
Example
-
edit Week 1 /mod CS2040S /name Week 01 Introduction /tags Intro, Important
Edit the lecture named "Week 1" in the module with code "CS2040S". The lecture's name is updated to "Week 01 Introduction" and it's tags are updated to "Intro" and "Important".
Edit a Video
edit {video_name} /mod {module_code} /lec {lecture_name} [/name {updated_name}] [/timestamp {updated_timestamp}] [/tags {tag_1}[, {tag_2}[, ...]]] [/watch] [/unwatch]
Edit the details of a video.
-
video_name
: The name of the video to be edited- Must belong to an existing video in the lecture specified in
lecture_name
- Must belong to an existing video in the lecture specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture that contains the video specified invideo_name
- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
updated_name
: The updated video name- Must be unique among the names of the videos belonging to the lecture specified in
lecture_name
- Must be unique among the names of the videos belonging to the lecture specified in
-
updated_timestamp
: The updated timestamp of the video where the user last stopped watching at -
tag_1, tag_2, ...
: The tags that will replace the current tags applied to the lecture- Repeated tags (if any) will be ignored
-
/watch
: If specified, the video will be marked as “watched”- If this argument is specified, then
/unwatch
should not be specified
- If this argument is specified, then
-
/unwatch
: If specified, the video will be marked as “not watched”- If this argument is specified, then
/watch
should not be specified
- If this argument is specified, then
Example
-
edit Video 1 /mod CS2040S /lec Week 1 /name Video 01 Grade Breakdown /timestamp 01:04:20 /tags Intro, Short /watch
Edit the video named "Video 1" in the lecture named "Week 1" which belongs to the module with code "CS2040S". The video's name is updated to "Video 01 Grade Breakdown", it's timestamp updated to "01:04:20" and it's tags are updated to "Intro" and "Short". The video is also marked as watched.
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Delete
Delete Module
delete {module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]]
Deletes the specified module(s) and all its embodied content from the application
-
module_code_1, module_code_2, module_code_3, ...
: The codes of the modules- Must belong to an existing module in Le Tracker
- Must not contain duplicates
Examples:
-
delete CS2040
deletesCS2040
module -
delete CS2040, ST2334
deletesCS2040
andST2334
modules
When in a module or lecture context, the navigation system will automatically inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Delete Lecture or Delete Video (refer to Navigation Injection for more information).
Delete Lecture
delete {lecture_name_1}[, {lecture_name_2}[, {lecture_name_3}[, ...]]] /mod {module_code}
Deletes the specified lecture(s) and all its embodied content from the same specified module
-
lecture_name_1, lecture_name_2, lecture_name_3, ...
: The names of lectures- Must belong to an existing lecture in the module specified in
module_code
- Must not contain duplicates
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of module that contains the lectures specified by the names of lectures- Must belong to an existing module in Le Tracker
Examples:
-
delete lecture 1 /mod CS2040
deleteslecture 1
lecture found in moduleCS2040
-
delete lecture 1, lecture 2 /mod ST2334
deleteslecture 1
andlecture 2
lectures found in moduleST2334
Delete Video
delete {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name}
Deletes the specified video(s) and all its embodied content from the same specified lecture of the specified module
-
video_name_1, video_name_2, video_name_3, ...
: The names of videos- Must belong to existing videos in the lecture specified in
lecture_name
- Must not contain duplicates
- Must belong to existing videos in the lecture specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture that contains the videos specified by the names of videos- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
Examples:
-
delete video 3 /mod CS2040 /lec lecture 1
deletesvideo 3
from lecturelecture 1
of module `CS2040` -
delete video 1, video 3 /mod CS2040 /lec lecture 1
deletesvideo 1
andvideo 3
from lecturelecture 1
of moduleCS2040
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Mark or Unmark
mark {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name}
Marks video(s) as watched in lecture of its specified module
unmark {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name}
Marks video(s) as unwatched in a lecture of its specified module.
-
video_name_1
,video_name_2
,video_name_3
, …: The names of videos- Must belong to existing videos in the lecture specified in
lecture_name
- For
mark
, must not contain duplicates
- Must belong to existing videos in the lecture specified in
-
module_code
: The code of the module- Must belong to an existing module in Le Tracker
-
lecture_name
: The name of the lecture- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
Examples:
-
mark Vid 1 /mod CS2040 /lec Week 1
marks `Vid 1` in `Week 1` lecture of `CS2040` module as watched -
mark Vid 1, Vid 2 /mod CS2040 /lec Week 1
marks `Vid 1` and `Vid 2` in lecture of `Week 1` of `CS2040` module as watched -
unmark Vid 2 /mod CS2040 /lec Week 1
marks `Vid 2` in lecture `Week 1` of module `CS2040` as unwatched -
unmark Vid 1, Vid 2 /mod CS2040 /lec Week 1
marks `Vid 1` and `Vid 2` in lecture `Week 1` of `CS2040` module as unwatched
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Tag
Tag a Module
tag {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Tag a specified module.
-
module_code
: The code of the module- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be applied to the module- Refer to Argument Formats for the “Tag” format
- Repeated tags (if any) will be ignored
- Tags that were already applied to the module (if any) will be ignored
Example:
tag EG2310 /tags fun, hard
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Tag a Lecture or Tag a Video (refer to Navigation Injection for more information).
Tag a Lecture
tag {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Tag a specified lecture.
-
lecture_name
: The name of the lecture- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be applied to the lecture- Refer to Argument Formats for the “Tag” format
- Repeated tags (if any) will be ignored
- Tags that were already applied to the lecture (if any) will be ignored
Examples:
tag Lecture_1 /mod CS2040 /tags Yay
Tag a Video
tag {video_name} /lec {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Tag a specified video.
-
video_name
: The name of the video- Must belong to an existing video in the lecture specified in
lecture_name
- Must belong to an existing video in the lecture specified in
-
lecture_name
: The name of the lecture that contains the video specified invideo_name
- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be applied to the video- Refer to Argument Formats for the “Tag” format
- Repeated tags (if any) will be ignored
- Tags that were already applied to the video (if any) will be ignored
Examples:
tag Video_1 /lec Lecture_1 /mod CS2040 /tags Yay
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Untag
Untag a Module
untag {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Remove specified tags from a module.
-
module_code
: The code of the module- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be removed from the module- Must belong to existing tags in the module specified by
module_code
- Repeated tags (if any) will be ignored
- Must belong to existing tags in the module specified by
Example:
untag EG2310 /tags fun, hard
When in a module or lecture context, the navigation system will inject the
/mod
and /lec
arguments transforming the user’s command into the command specified in Untag a Lecture or Untag a Video (refer to Navigation Injection for more information).
Untag a Lecture
untag {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Remove specified tags from a lecture.
-
lecture_name
: The name of the lecture- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be removed from the lecture - Must belong to existing tags in the lecture specified in
lecture_name
- Repeated tags (if any) will be ignored
Examples:
untag Lecture_1 /mod CS2040 /tags Yay
Untag a Video
untag {video_name} /lec {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]]
Remove specified tags from a video.
-
video_name
: The name of the video- Must belong to an existing video in the lecture specified in
lecture_name
- Must belong to an existing video in the lecture specified in
-
lecture_name
: The name of the lecture that contains the video specified invideo_name
- Must belong to an existing lecture in the module specified in
module_code
- Must belong to an existing lecture in the module specified in
-
module_code
: The code of the module that contains the lecture specified inlecture_name
- Must belong to an existing module in Le Tracker
-
tag_1, tag_2, ...
: The tags to be removed from the video- Must belong to existing tags in the video specified in
video_name
- Repeated tags (if any) will be ignored
- Must belong to existing tags in the video specified in
Examples:
untag Video_1 /lec Lecture_1 /mod CS2040 /tags Yay
When in a module or lecture context, the
/mod
argument will be injected if only the /mod
argument is omitted in the original command (refer to Navigation Injection for more information).
Export
export {file_path} [/overwrite]
Export all module data to a file.
-
file_path
: The path of the file- User must have writing permission to
file_path
- If
/overwrite
is not specified, the file specified infile_path
must not exist - Must be relative to Le Tracker’s default saving directory (
The default saving directory is
{JAR_file_location}/data
) - Must not coincide with Le Tracker’s current tracker file path. (
The default tracker file path is
{JAR_file_location}/data/letracker.json
)
- User must have writing permission to
-
/overwrite
: If specified, Le Tracker will overwrite all data infile_path
if it exists- If the file specified in
file_path
doesn’t exist, the flag/overwrite
will be ignored
- If the file specified in
Examples:
export hello.json
export /../../haha.json /overwrite
Import
import {file_path} [/mod {module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]]] [/overwrite]
Import data from a specified file path to the current tracker.
-
file_path
: The path of the file- User must have read permission of the file in
file_path
- Must be a valid Le Tracker data file
- Must be relative to Le Tracker’s default saving directory (
The default saving directory is
{JAR_file_location}/data
) - The file specified in
file_path
must exist. (If only the file’s name is specified, the file must exist in the default saving directory at
{JAR_file_location}/data
)
- User must have read permission of the file in
-
/mod
: If specified, Le Tracker will only import progress from the modules specified in{module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]]
- If specified,
{module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]]
must also be specified - If unspecified, Le Tracker will import progress of all modules in the file specified in
file_path
- If specified,
-
module_code_1, module_code_2, module_code_3, ...
: The modules to import fromfile_path
- If
/overwrite
is not specified,module_code_1, module_code_2, module_code_3, ...
must not exist in the current tracker - Must belong to existing modules in the file specified in
file_path
- Repeated modules (if any) will be ignored
- If
-
/overwrite
: If specified, Le Tracker will overwrite existing modules progress with the progress of the imported modules, provided they have the same code- If the imported modules do not exist in the current tracker, the flag
/overwrite
will be ignored
- If the imported modules do not exist in the current tracker, the flag
Examples:
import hello.json
import /../../haha.json /overwrite
import hehe.json /mod CS2040, MA2401
import hihi.json /mod EG2310 /overwrite
Clear
clear
Clears all data from Le Tracker.
Exit
exit
Exit the application.
Notes
-
Saving the data
Le Tracker data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. -
Editing the data file
Le Tracker data are saved as a JSON file{JAR_file_location}/data/letracker.json
. Advanced users are welcome to update data directly by editing that data file.
Warning
If your changes to the tracker data file makes its format invalid, Le Tracker will discard all data and start with an empty data file at the next run.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Le Tracker home folder.
Command Summary
Action | Format |
---|---|
Navigate to the Root Context | nav |
Navigate from Root Context to Module Context | nav {module_code} |
Navigate from Module Context to Lecture Context | nav {lecture_name} |
Navigate Directly | nav /mod {module_code} [/lec {lecture_name}] |
Navigate Backwards | navb |
List Modules | list |
List Lectures | list /mod {module_code} |
List Videos | list /mod {module_code} /lec {lecture_name} |
Find Modules | find {keywords} [/byTag] |
Find Lectures | find {keywords} /mod {module_code} [/byTag] |
Find Videos | find {keywords} /mod {module_code} /lec {lecture_name} [/byTag] |
Add a Module | add {module_code} [/name {name}] [/tags {tag_1}[, {tag_2}[, ...]]] |
Add a Lecture | add {lecture_name} /mod {module_code} [/tags {tag_1}[, {tag_2}[, ...]]] |
Add a Video | add {video_name} /mod {module_code} /lec {lecture_name} [/timestamp {timestamp}] [/tags {tag_1}[, {tag_2}[, ...]]] [/watch] |
Edit a Module | edit {module_code} [/code {updated_code}] [/name {updated_name}] [/tags {tag_1}[, {tag_2}[, ...]]] |
Edit a Lecture | edit {lecture_name} /mod {module_code} [/name {updated_name}] [/tags {tag_1}[, {tag_2}[, ...]]] |
Edit a Video | edit {video_name} /mod {module_code} /lec {lecture_name} [/name {updated_name}] [/timestamp {updated_timestamp}] [/tags {tag_1}[, {tag_2}[, ...]]] [/watch] [/unwatch] |
Delete Module | delete {module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]] |
Delete Lecture | delete {lecture_name_1}[, {lecture_name_2}[, {lecture_name_3}[, ...]]] /mod {module_code} |
Delete Video | delete {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name} |
Mark Video | mark {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name} |
Unmark Video | unmark {video_name_1}[, {video_name_2}[, {video_name_3}[, ...]]] /mod {module_code} /lec {lecture_name} |
Tag a Module | tag {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Tag a Lecture | tag {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Tag a Video | tag {video_name} /lec {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Untag a Module | untag {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Untag a Lecture | untag {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Untag a Video | untag {video_name} /lec {lecture_name} /mod {module_code} /tags {tag_1}[, {tag_2}[, {tag_3}[, ...]]] |
Export Data | export {file_path} [/overwrite] |
Import Data | import {file_path} [/mod {module_code_1}[, {module_code_2}[, {module_code_3}[, ...]]]] [/overwrite] |
Clear | clear |
Exit | exit |