@ -0,0 +1,19 @@ | |||
MIT License Copyright (c) <year> <copyright holders> | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is furnished | |||
to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice (including the next | |||
paragraph) shall be included in all copies or substantial portions of the | |||
Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS | |||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF | |||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -0,0 +1,3 @@ | |||
# ProjectManager | |||
A simple TiddlyWiki plugin for managing projects & todo lists, inspired by tools such as Todoist and Basecamp. |
@ -0,0 +1,12 @@ | |||
{ | |||
"title": "$:/plugins/nico/pm", | |||
"name": "Project Manager", | |||
"description": "Simple project management for TiddlyWiki", | |||
"author": "NicolasPetton", | |||
"version": "0.1.0", | |||
"core-version": ">=5.0.8", | |||
"source": "https://github.com/NicolasPetton/pm", | |||
"list": "installation usage", | |||
"dependents": "$:/plugins/kixam/moment $:/plugins/kixam/datepicker $:/plugins/flibbles/relink", | |||
"plugin-type": "plugin" | |||
} |
@ -0,0 +1,7 @@ | |||
created: 20200427182541625 | |||
modified: 20201130170204047 | |||
tags: | |||
title: $:/config/ShortcutInfo/pm-quick-capture | |||
type: text/vnd.tiddlywiki | |||
Trigger a quick capture to add a todo to the inbox. |
@ -0,0 +1,7 @@ | |||
created: 20200427182712912 | |||
modified: 20201130170204080 | |||
tags: | |||
title: $:/config/shortcuts/pm-quick-capture | |||
type: text/vnd.tiddlywiki | |||
alt+c |
@ -0,0 +1,9 @@ | |||
caption: Projects | |||
created: 20200430123440360 | |||
list-before: $:/plugins/nico/notebook/Sidebar/Open | |||
modified: 20201130164535672 | |||
tags: $:/plugins/nico/notebook/tags/SidebarSection | |||
title: $:/plugins/nico/pm/NotebookSidebar/Projects | |||
type: text/vnd.tiddlywiki | |||
<<toc-selective-expandable "Project" "!tag[Archived]!tag[done]sort[title]">> |
@ -0,0 +1,9 @@ | |||
created: 20200423195159541 | |||
modified: 20201130163459505 | |||
tags: $:/tags/Image | |||
title: $:/plugins/nico/pm/images/calendar-check | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" version="1.1" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"> | |||
<path d="m16.379 5.7482h-14.758c-0.23066 0-0.41768-0.18701-0.41768-0.41768v-1.253c0-0.92271 0.74799-1.6707 1.6707-1.6707h1.6707v-1.8099c0-0.23066 0.18701-0.41768 0.41768-0.41768h1.3923c0.23066 0 0.41768 0.18701 0.41768 0.41768v1.8099h4.4552v-1.8099c0-0.23066 0.18702-0.41768 0.41768-0.41768h1.3923c0.23066 0 0.41768 0.18701 0.41768 0.41768v1.8099h1.6707c0.92271 0 1.6707 0.74799 1.6707 1.6707v1.253c0 0.23066-0.18701 0.41768-0.41768 0.41768zm-14.758 1.1138h14.758c0.23066 0 0.41768 0.18701 0.41768 0.41768v9.0496c0 0.92272-0.74799 1.6707-1.6707 1.6707h-12.252c-0.92271 0-1.6707-0.74799-1.6707-1.6707v-9.0496c0-0.23066 0.18701-0.41768 0.41768-0.41768zm11.601 3.3396-0.98046-0.98843c-0.16244-0.16376-0.4269-0.16484-0.59066-0.0023667l-3.6908 3.6611-1.6004-1.6133c-0.16244-0.16376-0.42693-0.16484-0.5907-0.002412l-0.98839 0.98049c-0.16376 0.16244-0.16484 0.4269-0.00237 0.59066l2.875 2.8983c0.16244 0.16376 0.4269 0.16484 0.59066 0.0024l4.9757-4.9357c0.16376-0.16244 0.16484-0.4269 0.0024-0.59066z" stroke-width=".034806"/> | |||
</svg> |
@ -0,0 +1,6 @@ | |||
created: 20200428152931864 | |||
modified: 20201130164535573 | |||
title: $:/plugins/nico/pm/images/check-circle-light | |||
type: text/vnd.tiddlywiki | |||
<svg width="18px" height="18px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"/></svg> |
@ -0,0 +1,6 @@ | |||
created: 20200428151952093 | |||
modified: 20201130164535276 | |||
title: $:/plugins/nico/pm/images/check-circle | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"/></svg> |
@ -0,0 +1,6 @@ | |||
created: 20200428151856963 | |||
modified: 20201130164535597 | |||
title: $:/plugins/nico/pm/images/circle | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"/></svg> |
@ -0,0 +1,6 @@ | |||
created: 20200427142105097 | |||
modified: 20201130164535605 | |||
title: $:/plugins/nico/pm/images/inbox | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"/></svg> |
@ -0,0 +1,6 @@ | |||
created: 20200427142105097 | |||
modified: 20201130164535613 | |||
title: $:/plugins/nico/pm/images/quick-capture | |||
type: text/vnd.tiddlywiki | |||
<svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"/></svg> |
@ -0,0 +1,7 @@ | |||
created: 20200425202748433 | |||
modified: 20201130164535630 | |||
tags: $:/tags/Image | |||
title: $:/plugins/nico/pm/images/target | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"/></svg> |
@ -0,0 +1,7 @@ | |||
created: 20200424203654397 | |||
modified: 20201130164535638 | |||
tags: $:/tags/Image | |||
title: $:/plugins/nico/pm/images/tasks | |||
type: text/vnd.tiddlywiki | |||
<svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"/></svg> |
@ -0,0 +1,36 @@ | |||
created: 20200427152938733 | |||
modified: 20201130164535652 | |||
tags: | |||
title: $:/plugins/nico/pm/installation | |||
type: text/vnd.tiddlywiki | |||
! Dependencies | |||
Project-Manager depends on the following plugins: | |||
* [[$:/plugins/kixam/moment]] | |||
* [[$:/plugins/kixam/datepicker]] | |||
Install these plugins by dragging the above links to your wiki. | |||
While not strictly required, we strongly recommand installing the [[Relink|$:/plugins/flibbles/relink]] plugin as well, as it makes renaming projects much more convenient. | |||
* [[$:/plugins/flibbles/relink]] | |||
! Plugin | |||
Drag&drop the following link into your wiki | |||
* [[$:/plugins/nico/pm]] | |||
Then save & reload your wiki. | |||
! Getting started | |||
Transclude the Dashboard tiddler into another tiddler like the following: | |||
``` | |||
{{$:/plugins/nico/pm/ui/Dashboard}} | |||
``` | |||
See [[Usage|$:/plugins/nico/pm/usage]] for more information. |
@ -0,0 +1,74 @@ | |||
created: 20200422200514984 | |||
modified: 20201130164535664 | |||
tags: $:/tags/Macro | |||
title: $:/plugins/nico/pm/macros/project | |||
type: text/vnd.tiddlywiki | |||
\define archive-project() | |||
<$fieldmangler> | |||
<$button class="pm-btn btn-danger nc-archive-project"> | |||
<$action-sendmessage $message="tm-add-tag" $param="Archived"/> | |||
{{$:/core/images/delete-button}} Archive project | |||
</$button> | |||
</$fieldmangler> | |||
\end | |||
\define restore-project() | |||
<$fieldmangler> | |||
<$button class="tc-btn-invisible"> | |||
<$action-sendmessage $message="tm-remove-tag" $param="Archived"/> | |||
Restore project | |||
</$button> | |||
</$fieldmangler> | |||
\end | |||
\define todo-list(tag emptyMessage:"''🙌 All done!''") | |||
<<list-tagged-draggable tag:"$tag$" subFilter:"!has[draft.of]!tag[done]" itemTemplate:"$:/plugins/nico/pm/ui/TodoTemplate" emptyMessage:"$emptyMessage$">> | |||
\end | |||
\define todo-list-completed(tag) | |||
<$list filter="[!has[draft.of]tag[$tag$]tag[done]sort[created]]" template="$:/plugins/nico/pm/ui/CompletedTodoTemplate"/> | |||
\end | |||
\define new-todo-button(tag label) | |||
<$button class="pm-btn"> | |||
<$action-sendmessage $message="tm-new-tiddler" tags="[[$tag$]] todo"/> | |||
{{$:/core/images/list-bullet}} | |||
$label$ | |||
</$button> | |||
\end | |||
\define todo-count(tag) | |||
<span class="pm-todo-count"> | |||
<$list filter="[tag[$tag$]!has[draft.of]tag[done]count[]]">{{!!title}}</$list> | |||
/ | |||
<$list filter="[tag[$tag$]!has[draft.of]count[]]">{{!!title}}</$list> | |||
</span> | |||
\end | |||
\define project-with-tag(tag newTodoLabel:"Add a todo") | |||
<$list filter="[is[current]tag[Archived]]"> | |||
<div class="pm-banner"> | |||
This project is archived. <$macrocall $name="restore-project"/> | |||
</div> | |||
</$list> | |||
<h2>Todos | |||
<$macrocall $name="todo-count" tag="$tag$"/> | |||
</h2> | |||
<$macrocall $name="todo-list" tag="$tag$"/> | |||
<$macrocall $name="new-todo-button" tag="$tag$" label="$newTodoLabel$"/> | |||
<$list filter="[is[current]!tag[Archived]]"> | |||
or <$macrocall $name="archive-project"/> | |||
</$list> | |||
<$list filter="[!has[draft.of]tag[$tag$]tag[done]limit[1]]" variable="ignore"> | |||
<h2>Completed</h2> | |||
<$macrocall $name="todo-list-completed" tag="$tag$"/> | |||
</$list> | |||
\end | |||
\define project() | |||
<$macrocall $name="project-with-tag" tag={{!!title}}/> | |||
\end |
@ -0,0 +1,10 @@ | |||
created: 20200427182745230 | |||
key: ((pm-quick-capture)) | |||
modified: 20201130164535681 | |||
tags: $:/tags/KeyboardShortcut | |||
title: $:/plugins/nico/pm/quick-capture | |||
type: text/vnd.tiddlywiki | |||
<$navigator story="$:/StoryList" history="$:/HistoryList"> | |||
<$action-navigate $to="$:/plugins/nico/pm/ui/QuickCapture"/> | |||
</$navigator> |
@ -0,0 +1,190 @@ | |||
created: 20200426194806637 | |||
modified: 20201130164535690 | |||
tags: $:/tags/Stylesheet | |||
title: $:/plugins/nico/pm/stylesheet | |||
type: text/vnd.tiddlywiki | |||
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline | |||
.pm-btn { | |||
border-radius: 1.5em; | |||
border: 1px solid #ccc; | |||
background: white; | |||
padding: .3em 1em; | |||
cursor: pointer; | |||
} | |||
.pm-btn.btn-primary { | |||
background-color: #2da562; | |||
border-color: #2da562; | |||
color: white; | |||
fill: white; | |||
} | |||
.pm-btn.btn-danger { | |||
background-color: #ffefef; | |||
border-color: #c63636; | |||
color: #c63636; | |||
fill: #c63636; | |||
} | |||
input.pm-input { | |||
transition: box-shadow 0.15s ease-in-out; | |||
border: 1px solid #d9d9d9; | |||
padding: 0.3em; | |||
border-radius: 4px; | |||
} | |||
input.pm-input:focus { | |||
border-color: <<colour primary>>; | |||
} | |||
input.pm-input.input-large { | |||
width: 100%; | |||
padding: .5em 1em; | |||
font-size: 1.1em; | |||
} | |||
.pm-todo input[type="checkbox"] { | |||
display: none; | |||
} | |||
.pm-checkbox { | |||
fill: <<colour muted-foreground>>; | |||
cursor: pointer; | |||
transition: all ease-in .2s; | |||
margin-right: 3px; | |||
} | |||
.pm-checkbox .todo-hover { | |||
display: none; | |||
} | |||
.pm-checkbox:hover .todo-hover { | |||
display: initial; | |||
} | |||
.pm-checkbox:hover .todo { | |||
display: none; | |||
} | |||
.pm-checkbox:hover { | |||
fill: #2da562; | |||
} | |||
.pm-checkbox .done { | |||
fill: #2da562; | |||
} | |||
.pm-label { | |||
display: block; | |||
text-align: right; | |||
font-size: .8em; | |||
opacity: .6; | |||
} | |||
.pm-todo { | |||
white-space: nowrap; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
} | |||
.pm-todo-count { | |||
background: #2da562; | |||
border-radius: 1em; | |||
font-size: .6em; | |||
font-weight: bold; | |||
padding: .1em .5em; | |||
color: white; | |||
vertical-align: middle; | |||
} | |||
.pm-count { | |||
background: #df3f3f; | |||
color: white; | |||
font-weight: bold; | |||
padding: .2em .7em; | |||
border-radius: 1em; | |||
font-size: 12px; | |||
vertical-align: middle; | |||
} | |||
.pm-tiddler-due-date { | |||
margin-top: 5px; | |||
} | |||
.pm-due-date { | |||
color: #753e2d; | |||
fill: #753e2d; | |||
white-space: nowrap; | |||
} | |||
.pm-due-date svg { | |||
cursor: pointer; | |||
} | |||
.pm-due-date a { | |||
text-decoration: underline; | |||
cursor: pointer; | |||
} | |||
.pm-todo .pm-due-date { | |||
padding-left: 14px; | |||
font-size: .8em; | |||
transition: opacity ease-in-out .15s; | |||
} | |||
.pm-todo .pm-due-date.no-due-date { | |||
opacity: 0; | |||
} | |||
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { | |||
.pm-todo .pm-due-date { | |||
display: block; | |||
margin-left: 6px; | |||
} | |||
.pm-todo .pm-due-date.no-due-date { | |||
display: none; | |||
} | |||
} | |||
.pm-todo:hover .pm-due-date.no-due-date { | |||
opacity: 1; | |||
} | |||
.pm-projects .tc-droppable.tc-dragover { | |||
background: #ffd; | |||
display: block; | |||
} | |||
.pm-tabs.tc-tab-buttons button { | |||
font-weight: bold; | |||
font-size: 1.3em; | |||
border: 0; | |||
padding: 5px 10px; | |||
background: transparent; | |||
cursor: pointer; | |||
color: <<colour tiddler-title-foreground>>; | |||
} | |||
.pm-tabs.tc-tab-buttons button.tc-tab-selected { | |||
border: 0; | |||
border-bottom: 4px solid <<colour primary>>; | |||
color: <<colour tiddler-title-foreground>>; | |||
} | |||
.pm-banner { | |||
padding: 10px 20px; | |||
background: #f9f9d5; | |||
border: 1px solid #dbdba8; | |||
color: #626235; | |||
margin: 10px 0; | |||
border-radius: 3px; | |||
} | |||
.pm-banner button { | |||
color: #554535; | |||
fill: #554535; | |||
text-decoration: underline; | |||
} |
@ -0,0 +1,15 @@ | |||
created: 20200428151242242 | |||
modified: 20201130164535704 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/CheckboxTemplate | |||
type: text/vnd.tiddlywiki | |||
<span class="pm-checkbox"> | |||
<$list filter="[is[current]!tag[done]]"> | |||
<span class="todo"> {{$:/plugins/nico/pm/images/circle}}</span> | |||
<span class="todo-hover"> {{$:/plugins/nico/pm/images/check-circle-light}}</span> | |||
</$list> | |||
<$list filter="[is[current]tag[done]]"> | |||
<span class="done"> {{$:/plugins/nico/pm/images/check-circle}}</span> | |||
</$list> | |||
</span> |
@ -0,0 +1,12 @@ | |||
created: 20200425151042805 | |||
modified: 20201130164535713 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/CompletedTodoTemplate | |||
type: text/vnd.tiddlywiki | |||
<div class="pm-todo pm-completed"> | |||
<$checkbox tag="done"> | |||
{{||$:/plugins/nico/pm/ui/CheckboxTemplate}} | |||
<$link to={{!!title}}>~~<$view field="title"/>~~</$link> | |||
</$checkbox> | |||
</div> |
@ -0,0 +1,7 @@ | |||
created: 20200424192751342 | |||
modified: 20201130164535721 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/Dashboard | |||
type: text/vnd.tiddlywiki | |||
<<tabs "[all[tiddlers+shadows]tag[$:/plugins/nico/pm/tags/dashboard]]" "$:/plugins/nico/pm/ui/InboxAndProjects" "$:/state/projects-and-schedule" "pm-tabs">> |
@ -0,0 +1,22 @@ | |||
caption: {{$:/plugins/nico/pm/images/inbox}} Inbox | |||
created: 20200425193337699 | |||
modified: 20201130164535731 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/Inbox | |||
type: text/vnd.tiddlywiki | |||
\define inbox-count() | |||
<span class="pm-count"> | |||
<$list filter="[tag[Inbox]!has[draft.of]!tag[done]count[]]">{{!!title}}</$list> | |||
</span> | |||
\end | |||
<h2>Inbox <$macrocall $name="inbox-count"/></h2> | |||
<$keyboard key="enter"> | |||
<$action-setfield $tiddler={{$:/state/Inbox!!todo_name}} tags="Inbox todo"/> | |||
<$action-setfield $tiddler="$:/state/Inbox" todo_name=""/> | |||
<$edit-text class="pm-input" tiddler="$:/state/Inbox" field="todo_name" placeholder="Add to inbox..."/> | |||
</$keyboard> | |||
<$macrocall class="nc-inbox-input" $name="todo-list" tag="Inbox" emptyMessage="🌞 You're all done! Have a good day."/> |
@ -0,0 +1,9 @@ | |||
caption: {{$:/plugins/nico/pm/images/tasks}} Projects | |||
created: 20200425193559847 | |||
modified: 20201130164535737 | |||
tags: $:/plugins/nico/pm/tags/dashboard | |||
title: $:/plugins/nico/pm/ui/InboxAndProjects | |||
type: text/vnd.tiddlywiki | |||
{{$:/plugins/nico/pm/ui/Inbox}} | |||
{{$:/plugins/nico/pm/ui/Projects}} |
@ -0,0 +1,11 @@ | |||
caption: {{$:/plugins/nico/pm/images/target}} Next | |||
created: 20200425195221581 | |||
list-after: $:/plugins/nico/pm/ui/Schedule | |||
modified: 20201130164535747 | |||
tags: $:/plugins/nico/pm/tags/dashboard | |||
title: $:/plugins/nico/pm/ui/NextActions | |||
type: text/vnd.tiddlywiki | |||
<dl> | |||
<$list filter="[tag[Project]!tag[Archived]]" template="$:/plugins/nico/pm/ui/ProjectNextActionTemplate"/> | |||
</dl> |
@ -0,0 +1,12 @@ | |||
created: 20200425201356996 | |||
modified: 20201130164535753 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/ProjectNextActionTemplate | |||
type: text/vnd.tiddlywiki | |||
<dt> | |||
{{!!title}} <$macrocall $name="todo-count" tag={{!!title}}/> | |||
</dt> | |||
<dd> | |||
<$list filter="[!has[daft.of]tag{!!title}tag[todo]!tag[done]limit[1]]" template="$:/plugins/nico/pm/ui/TodoTemplate"></$list> | |||
</dd> |
@ -0,0 +1,49 @@ | |||
caption: {{$:/plugins/nico/pm/images/tasks}} Projects | |||
created: 20200424193106051 | |||
modified: 20201130164535764 | |||
tags: $:/plugins/nico/pm/ui/Projects | |||
title: $:/plugins/nico/pm/ui/Projects | |||
type: text/vnd.tiddlywiki | |||
\define refile-inbox-actions() | |||
<$fieldmangler tiddler=<<actionTiddler>>> | |||
<$action-sendmessage $message="tm-add-tag" $param=<<currentTiddler>>/> | |||
<$action-sendmessage $message="tm-remove-tag" $param="Inbox"/> | |||
</$fieldmangler> | |||
\end | |||
<h2>Projects</h2> | |||
<ul class="pm-projects"> | |||
<$list filter="[tag[Project]!title[Inbox]!tag[Archived]]"> | |||
<$droppable actions=<<refile-inbox-actions>>> | |||
<li><$link to={{!!title}}><$view field="title"/></$link> <$macrocall $name="todo-count" tag={{!!title}}/></li> | |||
</$droppable> | |||
</$list> | |||
</ul> | |||
<$button class="pm-btn btn-primary"> | |||
<$action-sendmessage $message="tm-new-tiddler" tags="Project" text="<<project>>"/> | |||
{{$:/core/images/edit-button}} | |||
New project | |||
</$button> | |||
or | |||
<$reveal type="match" state="$:/state/pm-show-archived" text=""> | |||
<$button class="tc-btn-invisible tc-tiddlylink" set="$:/state/pm-show-archived" setTo="show"> | |||
Show archived | |||
</$button> | |||
</$reveal> | |||
<$reveal type="match" state="$:/state/pm-show-archived" text="show"> | |||
<$button class="tc-btn-invisible tc-tiddlylink" set="$:/state/pm-show-archived" setTo=""> | |||
Hide archived | |||
</$button> | |||
<h2>Archive</h2> | |||
<ul> | |||
<$list filter="[tag[Project]!title[Inbox]tag[Archived]]" emptyMessage="No archived project yet."> | |||
<li><$link to={{!!title}}><$view field="title"/></$link> <$macrocall $name="todo-count" tag={{!!title}}/></li> | |||
</$list> | |||
</ul> | |||
</$reveal> |
@ -0,0 +1,17 @@ | |||
color: #0088cc | |||
created: 20200427182956318 | |||
icon: $:/plugins/nico/pm/images/quick-capture | |||
modified: 20201130164535770 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/QuickCapture | |||
type: text/vnd.tiddlywiki | |||
!! {{$:/plugins/nico/pm/images/tasks}} Quick add todo | |||
<$keyboard key="enter"> | |||
<$action-setfield $tiddler={{$:/state/Inbox!!todo_name}} tags="Inbox todo"/> | |||
<$action-setfield $tiddler="$:/state/Inbox" todo_name=""/> | |||
<$action-sendmessage $message="tm-close-tiddler"/> | |||
<$edit-text class="pm-input input-large" tiddler="$:/state/Inbox" field="todo_name" placeholder="Add to inbox..." focus="true"/> | |||
<label class="pm-label">Press ⏎ to capture</label> | |||
</$keyboard> |
@ -0,0 +1,39 @@ | |||
caption: {{$:/plugins/nico/pm/images/calendar-check}} Schedule | |||
created: 20200424193230404 | |||
list-after: $:/plugins/nico/pm/ui/InboxAndProjects | |||
modified: 20201130164535781 | |||
tags: $:/plugins/nico/pm/tags/dashboard | |||
title: $:/plugins/nico/pm/ui/Schedule | |||
type: text/vnd.tiddlywiki | |||
\define schedule-today() | |||
<$list filter="[!has[draft.of]!tag[done]tag[todo]days:due[0]]" template="$:/plugins/nico/pm/ui/TodoTemplate" emptyMessage="🌞 All clear!"/> | |||
\end | |||
\define schedule-range(start end) | |||
<$list filter="[!has[draft.of]!tag[done]tag[todo]!days:due[$start$]days:due[$end$]sort[due]]" template="$:/plugins/nico/pm/ui/TodoTemplate" emptyMessage="🌞 All clear!"/> | |||
\end | |||
\define schedule-overdue() | |||
<$list filter="[!has[draft.of]!tag[done]tag[todo]!days:due[-1]sort[due]]" template="$:/plugins/nico/pm/ui/TodoTemplate"/> | |||
\end | |||
<$list filter="[!has[draft.of]!tag[done]tag[todo]!days:due[-1]limit[1]]"> | |||
!! Overdue | |||
<<schedule-overdue>> | |||
</$list> | |||
!! Today | |||
<<schedule-today>> | |||
!! Next 7 days | |||
<<schedule-range 1 7>> | |||
!! Next 30 days | |||
<<schedule-range 7 30>> |
@ -0,0 +1,12 @@ | |||
created: 20200420105800700 | |||
list-after: $:/core/ui/ViewTemplate/tags | |||
modified: 20201130164535787 | |||
tags: $:/tags/ViewTemplate | |||
title: $:/plugins/nico/pm/ui/TiddlerDueDateTemplate | |||
type: text/vnd.tiddlywiki | |||
<$list filter="[all[current]tag[todo]]"> | |||
<div class="pm-tiddler-due-date"> | |||
{{||$:/plugins/nico/pm/ui/TodoDueDateTemplate}} | |||
</div> | |||
</$list> |
@ -0,0 +1,12 @@ | |||
created: 20200422200123438 | |||
modified: 20201130164535796 | |||
tags: | |||
title: $:/plugins/nico/pm/ui/TodoTemplate | |||
type: text/vnd.tiddlywiki | |||
<div class="pm-todo"> | |||
<$checkbox tag="done"> | |||
{{||$:/plugins/nico/pm/ui/CheckboxTemplate}} | |||
<$link to={{!!title}}><$view field="title"/></$link> | |||
</$checkbox> {{||$:/plugins/nico/pm/ui/TodoDueDateTemplate}} | |||
</div> |
@ -0,0 +1,76 @@ | |||
caption: Usage & Help | |||
created: 20200427133943777 | |||
modified: 20201130164535802 | |||
tags: | |||
title: $:/plugins/nico/pm/usage | |||
type: text/vnd.tiddlywiki | |||
! How to display the project dashboard | |||
The main entry point to the Project Manager plugin is the dashboard. | |||
The dashboard can be embedded ([[transcluded|https://tiddlywiki.com/#Transclusion]]) in any tiddler using the following: | |||
``` | |||
{{$:/plugins/nico/pm/ui/Dashboard}} | |||
``` | |||
<$reveal type="match" state="$:/state/pm-usage-show-dashboard" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-show-dashboard" setTo="">Hide</$button> | |||
<hr/> | |||
{{$:/plugins/nico/pm/ui/Dashboard}} | |||
<hr/> | |||
</$reveal> | |||
<$reveal type="nomatch" state="$:/state/pm-usage-show-dashboard" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-show-dashboard" setTo="show">Show result</$button> | |||
</$reveal> | |||
! How to add extra tabs to the Dashboard | |||
Any tiddler with the tag <<tag $:/plugins/nico/pm/tags/dashboard>> will be displayed as a tab in the dashboard. | |||
! What if I want to display the Inbox in a separate tab? | |||
You can build your own Dashboard using the following: | |||
``` | |||
<<tabs "$:/plugins/nico/pm/ui/Inbox $:/plugins/nico/pm/ui/Projects $:/plugins/nico/pm/ui/Schedule" "$:/plugins/nico/pm/ui/Inbox" "$:/state/pm-custom-dashboard" "pm-tabs">> | |||
``` | |||
<$reveal type="match" state="$:/state/pm-usage-custom-dashboard" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-custom-dashboard" setTo="">Hide</$button> | |||
<hr/> | |||
<<tabs "$:/plugins/nico/pm/ui/Inbox $:/plugins/nico/pm/ui/Projects $:/plugins/nico/pm/ui/Schedule" "$:/plugins/nico/pm/ui/Inbox" "$:/state/pm-custom-dashboard" "pm-tabs">> | |||
<hr/> | |||
</$reveal> | |||
<$reveal type="nomatch" state="$:/state/pm-usage-custom-dashboard" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-custom-dashboard" setTo="show">Show result</$button> | |||
</$reveal> | |||
! Can I make sub-projects? | |||
Yes, any todo (or tiddler, for that matter) can be used as a project using the `<<project>>` macro. | |||
This means that you can effectively make any todo a sub-project of another project, and go as deep as you wish! | |||
Note that only tiddlers with the <<tag Project>> tag will be listed in the Dashboard. | |||
``` | |||
<<project>> | |||
``` | |||
<$reveal type="match" state="$:/state/pm-usage-subproject" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-subproject" setTo="">Hide</$button> | |||
<hr/> | |||
<<project>> | |||
<hr/> | |||
</$reveal> | |||
<$reveal type="nomatch" state="$:/state/pm-usage-subproject" text="show"> | |||
<$button class="pm-btn btn-primary" set="$:/state/pm-usage-subproject" setTo="show">Show result</$button> | |||
</$reveal> | |||
! Can I quickly capture todos to my inbox? | |||
''Yes!'' The default shortcut is {{$:/config/shortcuts/pm-quick-capture}}, but you can change it in the [[Keyboard section of the Control Panel|$:/core/ui/ControlPanel/KeyboardShortcuts]]. | |||
! Can I easily move todos out of the inbox? | |||
Yes, just drag a todo from the inbox into one of the projects. |
@ -0,0 +1,7 @@ | |||
created: 20201130170713469 | |||
modified: 20201130170715666 | |||
title: $:/DefaultTiddlers | |||
type: text/vnd.tiddlywiki | |||
GettingStarted | |||
Demo |
@ -0,0 +1,5 @@ | |||
created: 20201130171447005 | |||
list: GettingStarted Demo | |||
modified: 20201130171447005 | |||
title: $:/StoryList | |||
type: text/vnd.tiddlywiki |
@ -0,0 +1,13 @@ | |||
author: Flibbles | |||
core-version: >=5.1.14 | |||
created: 20190921200305594 | |||
dependents: | |||
description: Relink - flexibility when relinking renamed tiddlers | |||
list: readme configuration | |||
modified: 20201130170503431 | |||
plugin-type: plugin | |||
source: https://github.com/flibbles/tw5-relink | |||
tags: tb | |||
title: $:/plugins/flibbles/relink | |||
type: application/json | |||
version: 1.5.3 |
@ -0,0 +1,12 @@ | |||
author: kixam | |||
core-version: >=5.1.8 | |||
created: 20201130170503417 | |||
dependents: | |||
description: datepicker plugin for TiddlyWiki5, based on Pikaday version 1.6.1 | |||
list: readme license usage | |||
modified: 20201130170503417 | |||
plugin-type: plugin | |||
source: https://github.com/kixam/TW5-datepicker | |||
title: $:/plugins/kixam/datepicker | |||
type: application/json | |||
version: 0.5.2 |
@ -0,0 +1,12 @@ | |||
author: kixam | |||
core-version: >=5.1.8 | |||
created: 20201130170503289 | |||
dependents: | |||
description: moment.js plugin for TiddlyWiki5 | |||
list: readme license | |||
modified: 20201130170503289 | |||
plugin-type: plugin | |||
source: https://github.com/kixam/TW5-moment.js | |||
title: $:/plugins/kixam/moment | |||
type: application/json | |||
version: 2.24.0 |
@ -0,0 +1,7 @@ | |||
created: 20201130170640112 | |||
modified: 20201130170645165 | |||
tags: | |||
title: Demo | |||
type: text/vnd.tiddlywiki | |||
{{$:/plugins/nico/pm/ui/Dashboard}} |
@ -0,0 +1,10 @@ | |||
caption: | |||
created: 20201130170606065 | |||
modified: 20201130170625087 | |||
tags: $:/tags/GettingStarted | |||
title: GettingStarted | |||
type: text/vnd.tiddlywiki | |||
~ProjectManager is a simple [[TiddlyWiki|https://tiddlywiki.com]] plugin for managing projects & todo lists, inspired by other tools such as [[Todoist|https://todoist.com]] and [[Basecamp|https://basecamp.com]]. | |||
I started this project as an experiment to see how good ~TiddlyWiki could be as a Web Application Platform. It turns out to be an extremely good foundation for building SPA. |
@ -0,0 +1,39 @@ | |||
{ | |||
"description": "Basic client-server edition", | |||
"plugins": [ | |||
"tiddlywiki/tiddlyweb", | |||
"tiddlywiki/filesystem", | |||
"tiddlywiki/highlight" | |||
], | |||
"themes": [ | |||
"tiddlywiki/vanilla", | |||
"tiddlywiki/snowwhite" | |||
], | |||
"build": { | |||
"index": [ | |||
"--rendertiddler", | |||
"$:/plugins/tiddlywiki/tiddlyweb/save/offline", | |||
"index.html", | |||
"text/plain" | |||
], | |||
"static": [ | |||
"--rendertiddler", | |||
"$:/core/templates/static.template.html", | |||
"static.html", | |||
"text/plain", | |||
"--rendertiddler", | |||
"$:/core/templates/alltiddlers.template.html", | |||
"alltiddlers.html", | |||
"text/plain", | |||
"--rendertiddlers", | |||
"[!is[system]]", | |||
"$:/core/templates/static.tiddler.html", | |||
"static", | |||
"text/plain", | |||
"--rendertiddler", | |||
"$:/core/templates/static.template.css", | |||
"static/static.css", | |||
"text/plain" | |||
] | |||
} | |||
} |