From bb7e788f0f0d0730c74a6dcd1440c9039b36570d Mon Sep 17 00:00:00 2001 From: hen Date: Fri, 15 Nov 2024 11:30:48 -0300 Subject: [PATCH] Add settings for show total today --- src/main.ts | 4 ++-- src/settings-tab.ts | 23 ++++++++++++++----- src/settings.ts | 5 ++-- src/tracker.ts | 9 +++++--- .../plugins/simple-time-tracker/data.json | 3 ++- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/main.ts b/src/main.ts index 329b37a..49f5289 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,13 +1,13 @@ import { MarkdownRenderChild, Plugin, TFile } from "obsidian"; import { defaultSettings, SimpleTimeTrackerSettings } from "./settings"; import { SimpleTimeTrackerSettingsTab } from "./settings-tab"; -import { displayTracker, Entry, formatDuration, formatTimestamp, getDuration, getRunningEntry, getTotalDuration, isRunning, loadAllTrackers, loadTracker, orderedEntries } from "./tracker"; +import { displayTracker, Entry, formatDuration, formatTimestamp, getDuration, getDurationToday, getRunningEntry, getTotalDuration, getTotalDurationToday, isRunning, loadAllTrackers, loadTracker, orderedEntries } from "./tracker"; export default class SimpleTimeTrackerPlugin extends Plugin { public api = { // verbatim versions of the functions found in tracker.ts with the same parameters - loadTracker, loadAllTrackers, getDuration, getTotalDuration, getRunningEntry, isRunning, + loadTracker, loadAllTrackers, getDuration, getTotalDuration, getDurationToday, getTotalDurationToday, getRunningEntry, isRunning, // modified versions of the functions found in tracker.ts, with the number of required arguments reduced formatTimestamp: (timestamp: string) => formatTimestamp(timestamp, this.settings), diff --git a/src/settings-tab.ts b/src/settings-tab.ts index 06bae5c..eec6639 100644 --- a/src/settings-tab.ts +++ b/src/settings-tab.ts @@ -1,6 +1,6 @@ -import {App, PluginSettingTab, Setting} from "obsidian"; +import { App, PluginSettingTab, Setting } from "obsidian"; import SimpleTimeTrackerPlugin from "./main"; -import {defaultSettings} from "./settings"; +import { defaultSettings } from "./settings"; export class SimpleTimeTrackerSettingsTab extends PluginSettingTab { @@ -13,14 +13,14 @@ export class SimpleTimeTrackerSettingsTab extends PluginSettingTab { display(): void { this.containerEl.empty(); - this.containerEl.createEl("h2", {text: "Super Simple Time Tracker Settings"}); + this.containerEl.createEl("h2", { text: "Super Simple Time Tracker Settings" }); new Setting(this.containerEl) .setName("Timestamp Display Format") .setDesc(createFragment(f => { - f.createSpan({text: "The way that timestamps in time tracker tables should be displayed. Uses "}); - f.createEl("a", {text: "moment.js", href: "https://momentjs.com/docs/#/parsing/string-format/"}); - f.createSpan({text: " syntax."}); + f.createSpan({ text: "The way that timestamps in time tracker tables should be displayed. Uses " }); + f.createEl("a", { text: "moment.js", href: "https://momentjs.com/docs/#/parsing/string-format/" }); + f.createSpan({ text: " syntax." }); })) .addText(t => { t.setValue(String(this.plugin.settings.timestampFormat)); @@ -74,6 +74,17 @@ export class SimpleTimeTrackerSettingsTab extends PluginSettingTab { }); }); + new Setting(this.containerEl) + .setName('Show Total Today') + .setDesc('Whether the total time spent today should be displayed in the tracker table.') + .addToggle(t => { + t.setValue(this.plugin.settings.showToday); + t.onChange(async v => { + this.plugin.settings.showToday = v; + await this.plugin.saveSettings(); + }); + }); + this.containerEl.createEl("hr"); this.containerEl.createEl("p", { text: "Need help using the plugin? Feel free to join the Discord server!" }); this.containerEl.createEl("a", { href: "https://link.ellpeck.de/discordweb" }).createEl("img", { diff --git a/src/settings.ts b/src/settings.ts index a70e817..19ee4ec 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -4,7 +4,8 @@ export const defaultSettings: SimpleTimeTrackerSettings = { csvDelimiter: ",", fineGrainedDurations: true, reverseSegmentOrder: false, - timestampDurations: false + timestampDurations: false, + showToday: false, }; export interface SimpleTimeTrackerSettings { @@ -15,5 +16,5 @@ export interface SimpleTimeTrackerSettings { fineGrainedDurations: boolean; reverseSegmentOrder: boolean; timestampDurations: boolean; - + showToday: boolean; } diff --git a/src/tracker.ts b/src/tracker.ts index 9daf635..eaf8952 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -100,9 +100,12 @@ export function displayTracker(tracker: Tracker, element: HTMLElement, getFile: let totalDiv = timer.createEl("div", { cls: "simple-time-tracker-timer" }); let total = totalDiv.createEl("span", { cls: "simple-time-tracker-timer-time", text: "0s" }); totalDiv.createEl("span", { text: "Total" }); - let totalTodayDiv = timer.createEl("div", { cls: "simple-time-tracker-timer" }) - let totalToday = totalTodayDiv.createEl("span", { cls: "simple-time-tracker-timer-time", text: "0s" }) - totalTodayDiv.createEl("span", { text: "Total Today" }) + + if (settings.showToday) { + let totalTodayDiv = timer.createEl("div", { cls: "simple-time-tracker-timer" }) + let totalToday = totalTodayDiv.createEl("span", { cls: "simple-time-tracker-timer-time", text: "0s" }) + totalTodayDiv.createEl("span", { text: "Today" }) + } if (tracker.entries.length > 0) { // add table diff --git a/test-vault/.obsidian/plugins/simple-time-tracker/data.json b/test-vault/.obsidian/plugins/simple-time-tracker/data.json index de2b77c..41cc682 100644 --- a/test-vault/.obsidian/plugins/simple-time-tracker/data.json +++ b/test-vault/.obsidian/plugins/simple-time-tracker/data.json @@ -4,5 +4,6 @@ "csvDelimiter": ",", "fineGrainedDurations": true, "reverseSegmentOrder": false, - "timestampDurations": true + "timestampDurations": true, + "showToday": true } \ No newline at end of file