Skip to content

Commit

Permalink
finished 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua Tazman Reinier committed Dec 24, 2023
1 parent e86c6ea commit 94f4b22
Show file tree
Hide file tree
Showing 26 changed files with 1,005 additions and 811 deletions.
15 changes: 11 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,21 @@

# Changelog

## 1.7.1 (Upcoming)
## 2.0.0 (12/24/2023)

**Major changes:**
- Added **Queries!** `[query:: ]` tasks will auto-assign their children based on a Dataview query. Useful for automatic scheduling!
- Search is now a "Jump to:" search a task to jump to it within Time Ruler.
- Three layouts are now available: One (single date with split day/hours), Row (rolling view of days), and Grid (week view).
- Four options for grouping: Path, Priority, Hybrid (priority first, then path if no priority set), or None
- Times now exist alongside scheduled tasks, saving vertical space, and are no longer full-width. To schedule, drag tasks on top of the times to the right.
- Tasks now have handles at the right for scheduling/dragging.

**Added:**
- Three layouts now available: One (single date with split day/hours), Row (rolling view of days), and Grid (week view)
- Day start setting now sets when days transition, allowing days to extend past 12 AM
- Use Daily Note template when creating new daily notes
- Improved [borders between dates](https://github.com/joshuatazrein/obsidian-time-ruler/issues/88#issuecomment-1846164954) and button layout for grid view
- Option to turn off times globally
- Improved styling: [borders between dates](https://github.com/joshuatazrein/obsidian-time-ruler/issues/88#issuecomment-1846164954) and button layout for grid view
- Option to toggle times moved to menu, turn on/off from within Time Ruler

**Fixed:**
- Parsing error with daily notes
Expand Down
43 changes: 24 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,24 @@ Time Ruler uses the [Dataview](obsidian://show-plugin?id=dataview) plugin to rea

## Reading tasks
Task metadata can be specified in any of the following formats:
- **Day Planner**: `YYYY-MM-DD hh:mm - hh:mm task content > yyyy-mm-dd ?/!/!!/!!!`
- **Day Planner**: `YYYY-MM-DD hh:mm - hh:mm task content > yyyy-mm-dd [query:: <query>] ?/!/!!/!!!`
- Beginning date/times: scheduled & length, `>`: due date.
- In Daily Notes, you can omit the date from scheduled and Time Ruler will parse the date from the note title. Only 24-hour format times are understood.
- You can omit minutes and only put `hh - hh` for times.
- **Dataview**: `[scheduled:: yyyy-mm-ddThh:mm] [due:: yyyy-mm-dd] [length:: #h#m] [priority:: lowest/low/medium/high/highest]`
- **Dataview**: `[scheduled:: yyyy-mm-ddThh:mm] [due:: yyyy-mm-dd] [length:: #h#m] [priority:: lowest/low/medium/high/highest] [query:: <query>]`
- `#h#m` examples: `1h`, `1h30m`, `1.5h`, etc. Any [Dataview duration](https://blacksmithgu.github.io/obsidian-dataview/annotation/types-of-metadata/#duration) will work.
- **Tasks**: `[startTime:: hh:mm] [length:: #h#m] ⏳ yyyy-mm-dd 📅 yyyy-mm-dd ⏬/🔽/🔼/⏫/🔺`
- **Tasks**: `[startTime:: hh:mm] [length:: #h#m] [query:: <query>] ⏳ yyyy-mm-dd 📅 yyyy-mm-dd ⏬/🔽/🔼/⏫/🔺`
- ⏳: scheduled, 📅: due. See the [Tasks docs](https://publish.obsidian.md/tasks/Getting+Started/Dates) for a full description.
- Order matters: inline fields must go before tasks emojis or Tasks won't understand it.
- **Full Calendar**: `[date:: yyyy-mm-dd] [startTime:: hh:mm] [endTime:: hh:mm] or [allDay:: true] [due:: yyyy-mm-dd] [priority:: lowest/low/medium/high/highest]`
- **Full Calendar**: `[date:: yyyy-mm-dd] [startTime:: hh:mm] [endTime:: hh:mm] or [allDay:: true] [due:: yyyy-mm-dd] [priority:: lowest/low/medium/high/highest] [query:: <query>]`

### Queries
As of version 2.0, Time ruler includes **queries**, tasks whose children are taken from a Dataview search. Some example searches:
- `[query:: "Path/to/folder"]` (notice the double-quotes, which are used for Dataview folder sources. Use `#` to designate a heading afterwards)
- `[query:: "#heading"]` (headings begin with #, but are framed in double-quotes).
- `[query:: #tag]`
- `[query:: incoming([[link to note]]) WHERE scheduled and !due]`
- Time Ruler supports sources, as well as WHERE queries with task properties. Read the full reference [here](https://blacksmithgu.github.io/obsidian-dataview/).

### Pages (tasks from full notes)
Time Ruler now reads **Full Calendar note events** as well as any page with `completed: false` or `completed: null` and the following optional Properties:
Expand Down Expand Up @@ -57,33 +64,31 @@ When editing a task via drag-and-drop, tasks are converted back to the formattin
- You can also drag **groups, headings, and blocks** to reschedule all of the tasks contained in them.
- Dragging and holding over a **date button** will scroll to that date, allowing you to drop the task there.

## Buttons

- Click the **menu** `...` button (top-left) to view settings.
- **Search**: Show all tasks and headings. Filter by tag, priority, filepath, or heading.
- `scheduled` and `due` views show tasks sorted by scheduled and due. `unscheduled` and `all` sort & group tasks by heading.
- **Daily / Hourly view**: Toggle between daily and hourly views. In daily view, hours are hidden.
- **Refresh**: Reload Obsidian tasks and online calendars.
- **Unscheduled:** Drag a task here to unschedule it. Click to show unscheduled tasks (shortcut to Search view).
- **Dates:** Click to scroll to that date, drag a task on top to schedule it for that date.

## Obsidian integrations
- **Click** on tasks and headings to show them in Obsidian (Time Ruler will update while you edit them)
- You can drag the Time Ruler tab icon into the **main editor** to expand it, showing an expanded four-day view.

## Online calendars
- To **import** a calendar, simply copy a shared link (iCal format) into Settings.
- **Events** show as blocks which can contain tasks scheduled at the same time. You can drag an event to reschedule the tasks contained, but the event is read-only.
- To **refresh** events, click the `Refresh` button (the circular arrow) in the toolbar.

## Buttons

- **Search**: Jump to a specific task.
- **Unscheduled:** Drag a task here to unschedule it. Click to show unscheduled tasks (shortcut to Search view).
- **Dates:** Click to scroll to that date, drag a task on top to schedule it for that date.
- **Quick add:** To create a task, drag the `+` button onto a time. By default, you will create in today's Daily note, but you can pick a specific heading or file.
- Click the **menu** `...` button (top-left) to view settings.
- **Past / Future**: show dates going to past or future. Past shows only completed tasks, while future shows uncompleted.
- **Reload**: Reload Obsidian tasks and online calendars.
- **Hide / Show Times**: Toggle the display of tic marks on Time Ruler.
- **Hours / Days / Weeks view**: Toggle between daily and hourly views. In daily view, hours are hidden.

## Timer

![timer](assets/timer.png)

- To start a **stopwatch**, click the play button without any time entered.
- To start a **timer**, enter an amount in minutes and press the play button or "Enter."
- You can **add or subtract** 5 minutes while the timer is playing by clicking the `+` and `-` buttons.
- Click the `focus` button (outwards arrows) to expand the timer and focus on current tasks. Shows all-day tasks if Calendar view is on, and only time-based tasks if not.
- Click the `focus` button (outwards arrows) to expand the timer and focus on current tasks.

## Customization Settings
- **Custom Filter**: This is passed to `dv.pages(<custom filter>)`. It only filters out certain pages, and can't filter specific tasks within those. Use Custom Statuses to filter out tasks. See this [link](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/#dvpagessource) for `dv.pages()` and this [link](https://blacksmithgu.github.io/obsidian-dataview/reference/sources/) for how to format query sources.
Expand Down
2 changes: 1 addition & 1 deletion dist/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "time-ruler",
"name": "Time Ruler",
"version": "1.7.0",
"version": "2.0.0",
"minAppVersion": "0.15.0",
"description": "A drag-and-drop time ruler combining the best of a task list and a calendar view (integrates with Tasks, Full Calendar, and Dataview).",
"author": "Joshua Tazman Reinier",
Expand Down
121 changes: 53 additions & 68 deletions dist/styles.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "time-ruler",
"name": "Time Ruler",
"version": "1.7.0",
"version": "2.0.0",
"minAppVersion": "0.15.0",
"description": "A drag-and-drop time ruler combining the best of a task list and a calendar view (integrates with Tasks, Full Calendar, and Dataview).",
"author": "Joshua Tazman Reinier",
Expand Down
4 changes: 2 additions & 2 deletions src/app/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type AppState = {
settings: Pick<
TimeRulerPlugin['settings'],
| 'dayStartEnd'
| 'hideHeadings'
| 'groupBy'
| 'muted'
| 'twentyFourHourFormat'
| 'showCompleted'
Expand Down Expand Up @@ -70,7 +70,7 @@ export const useAppStore = createWithEqualityFn<AppState>(() => ({
collapsed: {},
settings: {
dayStartEnd: [0, 24],
hideHeadings: false,
groupBy: 'path',
muted: false,
twentyFourHourFormat: false,
showCompleted: false,
Expand Down
Loading

0 comments on commit 94f4b22

Please sign in to comment.