Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a0c37d642 | |||
| 5a33e641b1 | |||
| 7b4e2e674a |
@@ -4,7 +4,7 @@ A powerful task management and focus timer plugin for [Obsidian](https://obsidia
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## 🎯 Overview
|
||||
|
||||
|
||||
16
main.js
16
main.js
@@ -2,7 +2,6 @@
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
*/
|
||||
/* Build version 1.0.1 */
|
||||
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
@@ -496,6 +495,8 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
this.isBreakMode = false;
|
||||
this.activeTaskId = null;
|
||||
this.pomodoroCount = 0;
|
||||
// Focus time tracking (in seconds for accuracy)
|
||||
this.focusSecondsToday = 0;
|
||||
// Status bar element
|
||||
this.statusBarEl = null;
|
||||
}
|
||||
@@ -544,8 +545,10 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
const loaded = await this.loadData();
|
||||
this.data = Object.assign({}, DEFAULT_DATA, (loaded == null ? void 0 : loaded.data) || {});
|
||||
this.settings = Object.assign({}, DEFAULT_SETTINGS, (loaded == null ? void 0 : loaded.settings) || {});
|
||||
this.focusSecondsToday = (this.data.totalFocusMinutesToday || 0) * 60;
|
||||
}
|
||||
async saveAllData() {
|
||||
this.data.totalFocusMinutesToday = Math.floor(this.focusSecondsToday / 60);
|
||||
await this.saveData({
|
||||
settings: this.settings,
|
||||
data: this.data
|
||||
@@ -563,6 +566,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
}
|
||||
this.data.completedToday = 0;
|
||||
this.data.totalFocusMinutesToday = 0;
|
||||
this.focusSecondsToday = 0;
|
||||
this.data.lastActiveDate = today;
|
||||
this.saveAllData();
|
||||
}
|
||||
@@ -667,6 +671,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
this.timerInterval = window.setInterval(() => {
|
||||
this.currentTimerSeconds++;
|
||||
task.actualMinutes = Math.floor(this.currentTimerSeconds / 60);
|
||||
this.focusSecondsToday++;
|
||||
this.updateStatusBar();
|
||||
this.updateTimerDisplay();
|
||||
if (this.currentTimerSeconds === task.estimatedMinutes * 60) {
|
||||
@@ -690,11 +695,13 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
this.isTimerRunning = true;
|
||||
this.refreshView();
|
||||
this.updateStatusBar();
|
||||
let secondsWorked = 0;
|
||||
this.timerInterval = window.setInterval(() => {
|
||||
this.currentTimerSeconds--;
|
||||
if (!this.isBreakMode) {
|
||||
task.actualMinutes = Math.floor((this.settings.pomodoroWorkMinutes * 60 - this.currentTimerSeconds) / 60);
|
||||
this.data.totalFocusMinutesToday = Math.floor(this.data.totalFocusMinutesToday + 1 / 60);
|
||||
secondsWorked++;
|
||||
task.actualMinutes = Math.floor(secondsWorked / 60);
|
||||
this.focusSecondsToday++;
|
||||
}
|
||||
this.updateStatusBar();
|
||||
this.updateTimerDisplay();
|
||||
@@ -756,6 +763,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
this.currentTimerSeconds--;
|
||||
if (task && !this.isBreakMode) {
|
||||
task.actualMinutes = Math.floor((this.settings.pomodoroWorkMinutes * 60 - this.currentTimerSeconds) / 60);
|
||||
this.focusSecondsToday++;
|
||||
}
|
||||
this.updateStatusBar();
|
||||
this.updateTimerDisplay();
|
||||
@@ -927,7 +935,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
|
||||
pendingCount: pending.length,
|
||||
completedToday: this.data.completedToday,
|
||||
totalEstimatedMinutes: totalEstimate,
|
||||
totalFocusMinutesToday: Math.floor(this.data.totalFocusMinutesToday),
|
||||
totalFocusMinutesToday: Math.floor(this.focusSecondsToday / 60),
|
||||
streak: this.data.streak,
|
||||
pomodorosCompleted: this.data.pomodorosCompleted,
|
||||
avgAccuracy: Math.round(avgAccuracy * 100)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "focus-task",
|
||||
"name": "Focus Task",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "A Blitzit-inspired task management and focus timer plugin. Plan your day, track time with Pomodoro technique, and crush your tasks with satisfying checkoffs.",
|
||||
"author": "Crib",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "focus-task",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"description": "A Blitzit-inspired task management and focus timer plugin for Obsidian",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
24
src/main.ts
24
src/main.ts
@@ -36,6 +36,9 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
activeTaskId: string | null = null;
|
||||
pomodoroCount: number = 0;
|
||||
|
||||
// Focus time tracking (in seconds for accuracy)
|
||||
private focusSecondsToday: number = 0;
|
||||
|
||||
// Status bar element
|
||||
statusBarEl: HTMLElement | null = null;
|
||||
|
||||
@@ -102,9 +105,13 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
const loaded = await this.loadData();
|
||||
this.data = Object.assign({}, DEFAULT_DATA, loaded?.data || {});
|
||||
this.settings = Object.assign({}, DEFAULT_SETTINGS, loaded?.settings || {});
|
||||
// Initialize seconds from stored minutes
|
||||
this.focusSecondsToday = (this.data.totalFocusMinutesToday || 0) * 60;
|
||||
}
|
||||
|
||||
async saveAllData() {
|
||||
// Sync minutes from seconds before saving
|
||||
this.data.totalFocusMinutesToday = Math.floor(this.focusSecondsToday / 60);
|
||||
await this.saveData({
|
||||
settings: this.settings,
|
||||
data: this.data,
|
||||
@@ -126,6 +133,7 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
// Reset daily stats
|
||||
this.data.completedToday = 0;
|
||||
this.data.totalFocusMinutesToday = 0;
|
||||
this.focusSecondsToday = 0;
|
||||
this.data.lastActiveDate = today;
|
||||
this.saveAllData();
|
||||
}
|
||||
@@ -259,6 +267,9 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
this.currentTimerSeconds++;
|
||||
task.actualMinutes = Math.floor(this.currentTimerSeconds / 60);
|
||||
|
||||
// Track focus time
|
||||
this.focusSecondsToday++;
|
||||
|
||||
// Light update - only timer display, no full refresh
|
||||
this.updateStatusBar();
|
||||
this.updateTimerDisplay();
|
||||
@@ -290,12 +301,17 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
this.refreshView();
|
||||
this.updateStatusBar();
|
||||
|
||||
// Track seconds worked for accurate focus time
|
||||
let secondsWorked = 0;
|
||||
|
||||
this.timerInterval = window.setInterval(() => {
|
||||
this.currentTimerSeconds--;
|
||||
|
||||
if (!this.isBreakMode) {
|
||||
task.actualMinutes = Math.floor((this.settings.pomodoroWorkMinutes * 60 - this.currentTimerSeconds) / 60);
|
||||
this.data.totalFocusMinutesToday = Math.floor(this.data.totalFocusMinutesToday + 1/60);
|
||||
secondsWorked++;
|
||||
task.actualMinutes = Math.floor(secondsWorked / 60);
|
||||
// Increment focus time by 1 second
|
||||
this.focusSecondsToday++;
|
||||
}
|
||||
|
||||
// Light update - only timer display, no full refresh
|
||||
@@ -379,6 +395,8 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
this.currentTimerSeconds--;
|
||||
if (task && !this.isBreakMode) {
|
||||
task.actualMinutes = Math.floor((this.settings.pomodoroWorkMinutes * 60 - this.currentTimerSeconds) / 60);
|
||||
// Track focus time
|
||||
this.focusSecondsToday++;
|
||||
}
|
||||
// Light update - only timer display
|
||||
this.updateStatusBar();
|
||||
@@ -588,7 +606,7 @@ export default class FocusTaskPlugin extends Plugin {
|
||||
pendingCount: pending.length,
|
||||
completedToday: this.data.completedToday,
|
||||
totalEstimatedMinutes: totalEstimate,
|
||||
totalFocusMinutesToday: Math.floor(this.data.totalFocusMinutesToday),
|
||||
totalFocusMinutesToday: Math.floor(this.focusSecondsToday / 60),
|
||||
streak: this.data.streak,
|
||||
pomodorosCompleted: this.data.pomodorosCompleted,
|
||||
avgAccuracy: Math.round(avgAccuracy * 100),
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"1.0.1": "0.15.0"
|
||||
"1.0.2": "0.15.0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user