×

Plug-In: Kanban Board

A plug-in for creating and maintaining a tag-based Kanban Board in OmniFocus. Based upon a creative concept and project by Serena (www.sleepyowl.ink) where the Kanban Board is OmniFocus tag-based and displayed as stack of horizontal elements (categories).

From Wikipedia: A Kanban Board is one of the tools that can be used to implement Kanban to manage work at a personal or organizational level. An overview of Kanban can be viewed at the Atlassian website.

Installation

Follow these steps to install, setup, and use the plug-in:

Using the Plug-In

To use the plug-in:

The Kanban Board Interface

Traditionally Kanban Board categories are displayed as columns. In OmniFocus, categories are displayed as a vertical stack of horizontal entries:

Kanban Board Interface

Plug-In Scripts

Here are two of the scripts contained in the plug-in:

Setup Script


(() => { var action = new PlugIn.Action(function(selection, sender){ // IDENTIFY KANBAN TAG, CREATE IF MISSING var targetTag = flattenedTags.byName("Kanban") || new Tag("Kanban") // ADD KANBAN CATEGORIES IF MISSING var tagTitles = ["To Do", "In Progress", "Waiting", "Done"] tagTitles.forEach(title => { if (!targetTag.children.byName(title)){ new Tag(title, targetTag) } }) // REORDER THE CATEGORIES tagTitles.forEach(title => { var tag = targetTag.children.byName(title) moveTags([tag], targetTag) }) // SHOW THE TAGS var tagIDs = targetTag.children.map(tag => tag.id.primaryKey) var tagIDsString = tagIDs.join(",") URL.fromString("omnifocus:///tag/" + tagIDsString).open() }); return action; })();
Assign as “To Do”


(() => { var action = new PlugIn.Action(function(selection, sender){ try { var parentTag = flattenedTags.byName("Kanban") if(!parentTag){ var errMessage = "There is no “Kanban” tag. Please select “Display Board” from the “Kanban Board” sub-menu in the Automation menu to add the missing tag." throw new Error(errMessage) } var childTag = parentTag.children.byName("To Do") if(!childTag){ var errMessage = "There is no “To Do” tag. Please select “Display Board” from the “Kanban Board” sub-menu in the Automation menu to add the missing tag." throw new Error(errMessage) } var tagSet = parentTag.flattenedChildren; selection.tasks.forEach(task => { task.removeTags(tagSet) task.addTag(childTag) }) } catch(err){ new Alert("Missing Tag", err.message).show() } }); action.validate = function(selection, sender){ return (selection.tasks.length > 0 ) }; return action; })();

Return to: OmniFocus Plug-In Collection