From b7fa0f9740556fa575e34a8707a1d9e9cc11dea6 Mon Sep 17 00:00:00 2001 From: Brian Hicks Date: Fri, 27 Jan 2023 08:19:44 -0600 Subject: [PATCH] make a view that shows projects with flagged tasks --- .../Resources/en.lproj/showFlagged.strings | 5 +++ Picker.omnifocusjs/Resources/index-cards.png | Bin 0 -> 346 bytes Picker.omnifocusjs/Resources/showFlagged.js | 27 ++++++++++++++ Picker.omnifocusjs/Resources/showFlagged.ts | 33 ++++++++++++++++++ Picker.omnifocusjs/manifest.json | 4 +++ 5 files changed, 69 insertions(+) create mode 100644 Picker.omnifocusjs/Resources/en.lproj/showFlagged.strings create mode 100644 Picker.omnifocusjs/Resources/index-cards.png create mode 100644 Picker.omnifocusjs/Resources/showFlagged.js create mode 100644 Picker.omnifocusjs/Resources/showFlagged.ts diff --git a/Picker.omnifocusjs/Resources/en.lproj/showFlagged.strings b/Picker.omnifocusjs/Resources/en.lproj/showFlagged.strings new file mode 100644 index 0000000..49604df --- /dev/null +++ b/Picker.omnifocusjs/Resources/en.lproj/showFlagged.strings @@ -0,0 +1,5 @@ +"label" = "Show Flagged Projects"; +"shortLabel" = "Flagged"; +"mediumLabel" = "Show Flagged"; +"longLabel" = "Show Flagged Projects"; +"paletteLabel" = "Flagged"; diff --git a/Picker.omnifocusjs/Resources/index-cards.png b/Picker.omnifocusjs/Resources/index-cards.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff4e6cba4cb38d047767ac3e7ca594d627e87ae GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!%mREuT!FOwfqkT+O9C(RfjWgs zg8YIR7*kJtmfZV)n~dkrTqjbd(hLxF{Fa=?X{~54?74r2kK@Wd-Jcm zw&$S+&-44&x3nye7D_s0d6Xe=<)47=ivOqdO&tV(DmzW|n6-PNPe95fK8uq*&L7UM zWb!>NTjPE!P4hz0e1_Xg8NPFW5M+LqSM{J;=2hc+Z-04%<4oK4GWDs}-D~*AwfsLf ztHX6>jiiJF(;azwgzbD5{}8mS7g;v*QNGIYg;Nrj$o*Kh=aA4tWjntEGSNHUewUv9 wGn4t3cFfWE3bv?sORw@p-k-)7>F@8qevg9|S4Czopr09!SbQ2+n{ literal 0 HcmV?d00001 diff --git a/Picker.omnifocusjs/Resources/showFlagged.js b/Picker.omnifocusjs/Resources/showFlagged.js new file mode 100644 index 0000000..08b55f0 --- /dev/null +++ b/Picker.omnifocusjs/Resources/showFlagged.js @@ -0,0 +1,27 @@ +"use strict"; +(() => { + var action = new PlugIn.Action(async () => { + try { + let toFocus = []; + flattenedProjects + .filter((p) => p.status == Project.Status.Active) + .flatMap((p) => p.flattenedTasks.filter((t) => t.flagged && + (t.taskStatus == Task.Status.Available || + t.taskStatus == Task.Status.DueSoon || + t.taskStatus == Task.Status.Next || + t.taskStatus == Task.Status.Overdue))) + .forEach((task) => { + if (task.containingProject && toFocus.indexOf(task.containingProject) === -1) { + toFocus.push(task.containingProject); + } + }); + document.windows[0].perspective = Perspective.BuiltIn.Projects; + document.windows[0].focus = toFocus; + } + catch (err) { + console.error(err); + throw err; + } + }); + return action; +})(); diff --git a/Picker.omnifocusjs/Resources/showFlagged.ts b/Picker.omnifocusjs/Resources/showFlagged.ts new file mode 100644 index 0000000..0718284 --- /dev/null +++ b/Picker.omnifocusjs/Resources/showFlagged.ts @@ -0,0 +1,33 @@ +(() => { + var action = new PlugIn.Action(async () => { + try { + let toFocus: Project[] = []; + + flattenedProjects + .filter((p) => p.status == Project.Status.Active) + .flatMap((p) => + p.flattenedTasks.filter( + (t: Task) => + t.flagged && + (t.taskStatus == Task.Status.Available || + t.taskStatus == Task.Status.DueSoon || + t.taskStatus == Task.Status.Next || + t.taskStatus == Task.Status.Overdue) + ) + ) + .forEach((task: Task) => { + if (task.containingProject && toFocus.indexOf(task.containingProject) === -1) { + toFocus.push(task.containingProject); + } + }); + + document.windows[0].perspective = Perspective.BuiltIn.Projects; + document.windows[0].focus = toFocus as SectionArray; + } catch (err) { + console.error(err); + throw err; + } + }); + + return action; +})(); diff --git a/Picker.omnifocusjs/manifest.json b/Picker.omnifocusjs/manifest.json index ae5dc0f..fcfb370 100644 --- a/Picker.omnifocusjs/manifest.json +++ b/Picker.omnifocusjs/manifest.json @@ -8,6 +8,10 @@ { "identifier": "pick", "image": "arrow-clockwise.png" + }, + { + "identifier": "showFlagged", + "image": "index-cards.png", } ] }