added timestamp format setting

This commit is contained in:
Ell 2022-09-28 13:18:37 +02:00
parent f694dfcc57
commit 10251de71c
7 changed files with 46 additions and 15 deletions

View file

@ -15,7 +15,6 @@ The tracker's information is stored in the code block as JSON data. The names, s
# 🛣️ Roadmap
Super Simple Time Tracker is still in its early stages! There are a lot of plans for it, including:
- A setting to allow users to decide what format timestamps should be displayed in
- A setting to link segments to corresponding daily notes automatically
- A neat interface to edit previous segments' names and time stamps
- The ability to copy the table in various formats, including as text, markdown, and csv

View file

@ -15,7 +15,7 @@ export default class SimpleTimeTrackerPlugin extends Plugin {
this.registerMarkdownCodeBlockProcessor("simple-time-tracker", (s, e, i) => {
let tracker = loadTracker(s);
e.empty();
displayTracker(tracker, e, () => i.getSectionInfo(e));
displayTracker(tracker, e, () => i.getSectionInfo(e), this.settings);
});
this.addCommand({

View file

@ -1,5 +1,6 @@
import { App, PluginSettingTab } from "obsidian";
import { App, PluginSettingTab, Setting } from "obsidian";
import SimpleTimeTrackerPlugin from "./main";
import { defaultSettings } from "./settings";
export class SimpleTimeTrackerSettingsTab extends PluginSettingTab {
@ -14,7 +15,20 @@ export class SimpleTimeTrackerSettingsTab extends PluginSettingTab {
this.containerEl.empty();
this.containerEl.createEl("h2", { text: "Super Simple Time Tracker Settings" });
this.containerEl.createEl("p", { text: "Settings coming soon!" });
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. Clear to reset to default." });
}))
.addText(t => {
t.setValue(String(this.plugin.settings.timestampFormat));
t.onChange(async v => {
this.plugin.settings.timestampFormat = v.length ? v : defaultSettings.timestampFormat;
await this.plugin.saveSettings();
});
});
this.containerEl.createEl("hr");
this.containerEl.createEl("p", { text: "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" });

View file

@ -1,7 +1,9 @@
export const defaultSettings: SimpleTimeTrackerSettings = {
timestampFormat: "YY-MM-DD hh:mm:ss"
};
export interface SimpleTimeTrackerSettings {
timestampFormat: string;
}

View file

@ -1,4 +1,5 @@
import { moment, App, MarkdownSectionInformation, ButtonComponent, TextComponent } from "obsidian";
import { SimpleTimeTrackerSettings } from "./settings";
export class Tracker {
entries: Entry[];
@ -52,7 +53,7 @@ export function loadTracker(json: string): Tracker {
return { entries: [] };
}
export function displayTracker(tracker: Tracker, element: HTMLElement, getSectionInfo: () => MarkdownSectionInformation): void {
export function displayTracker(tracker: Tracker, element: HTMLElement, getSectionInfo: () => MarkdownSectionInformation, settings: SimpleTimeTrackerSettings): void {
// add start/stop controls
let running = isRunning(tracker);
let btn = new ButtonComponent(element)
@ -92,9 +93,9 @@ export function displayTracker(tracker: Tracker, element: HTMLElement, getSectio
for (let entry of tracker.entries) {
let row = table.createEl("tr");
row.createEl("td", { text: entry.name });
row.createEl("td", { text: moment.unix(entry.startTime).format("YY-MM-DD hh:mm:ss") });
row.createEl("td", { text: moment.unix(entry.startTime).format(settings.timestampFormat) });
if (entry.endTime) {
row.createEl("td", { text: moment.unix(entry.endTime).format("YY-MM-DD hh:mm:ss") });
row.createEl("td", { text: moment.unix(entry.endTime).format(settings.timestampFormat) });
let duration = moment.unix(entry.endTime).diff(moment.unix(entry.startTime));
row.createEl("td", { text: getCountdownDisplay(moment.duration(duration)) });
}

View file

@ -0,0 +1,3 @@
{
"timestampFormat": "YY-MM-DD hh:mm:ss"
}

File diff suppressed because one or more lines are too long