Files
habitica/views/tasks/tasks.html
T
2013-08-25 10:57:19 -04:00

285 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<task-lists:>
<!--helpTitle & helpContent moved to tour -->
<!--
header="habits"
type="habit"
inputValue={_newHabit}
placeHolder="New Habit"
list={@habits}
main={{@main}}
editable={@editable}
-->
<!-- Habits Column -->
<div class="module" ng-class="'rewards-module': type=='reward'">
<div class="task-column {{type}}s" ng-class="'tabbable tabs-below': type=='todo'">
<!-- todos export/graph options -->
<span ng-if="main && type=='todo'" class='option-box pull-right'>
<a ng-show='user.history.todos' class="option-action" x-bind=click:toggleChart data-id="todos" rel=tooltip title="Progress"><i class=icon-signal></i></a>
<a class="option-action" ng-href="/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}" rel=tooltip title="iCal"><i class=icon-calendar></i></a>
<!-- <a href="https://www.google.com/calendar/render?cid={{encodeiCalLink(_user.id, _user.apiToken)}}" rel=tooltip title="Google Calendar"><i class=icon-calendar></i></a> -->
</span>
<!-- cash or gems -->
<span ng-if="main && type=='reward'" class='option-box pull-right wallet'>
<div class="money">
{{gold(floor(user.stats.gp))}}
<span class='shop_gold' rel='tooltip' title='Gold'></span>
</div>
<div class="money">
{{silver(user.stats.gp)}}
<span class='shop_silver' rel='tooltip' title='Silver'></span>
</div>
</span>
<h2 class="task-column_title">{{header}}</h2>
<div ng-if='type == "todo"' class='todos-chart' ng-class="hidden:_page.charts.todos"></div>
<form ng-show='editable' class="addtask-form form-inline new-task-form" ng-class="hidden: _showCompleted && type=='todo'" data-task-type="{{type}}" x-bind="submit:addTask">
<span class="addtask-field"><input value="{{inputValue}}" type="text" placeholder="{{placeHolder}}"/></span>
<input class="addtask-btn" type="submit" value="">
</form>
<hr>
<ul class="{{type}}s" ng-class="hidden: !list">
<app:tasks:task ng-repeat='task in list' />
</ul>
<!-- Static Rewards -->
<ul ng-show="main && type=='reward'" class='items' ng-class="hidden:!user.flags.itemsEnabled">
<app:rewards:item item={{_items.next.weapon}} />
<app:rewards:item item={{_items.next.armor}} />
<app:rewards:item item={{_items.next.head}} />
<app:rewards:item item={{_items.next.shield}} />
<app:rewards:item item={{_items.potion}} />
<app:rewards:item item={{_items.reroll}} />
</ul>
<br/>
<!-- ads -->
<div ng-if="authenticated() && user.flags.ads != hide && main">
<span class='pull-right'>
<a x-bind="click:showStripe" rel='tooltip' title='Remove Ads'><i class='icon-remove'></i></a><br/>
<a href="#" data-target="#why-ads-modal" data-toggle="modal" rel='tooltip' title='Why Ads?'><i class='icon-question-sign'></i></a>
</span>
<a ng-if='type=="habit"' href="http://www.amazon.com/gp/product/1400069289/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1400069289&linkCode=as2&tag=ha0d2-20">The Power of Habit: Why We Do What We Do in Life and Business</a><img src="//www.assoc-amazon.com/e/ir?t=ha0d2-20&l=as2&o=1&a=1400069289" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a ng-if='type=="daily"' href="http://www.amazon.com/gp/product/0142000280/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0142000280&linkCode=as2&tag=ha0d2-20">Getting Things Done: The Art of Stress-Free Productivity</a><img src="//www.assoc-amazon.com/e/ir?t=ha0d2-20&l=as2&o=1&a=0142000280" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a ng-if='type=="todo"' href="http://www.amazon.com/gp/product/0312430000/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0312430000&linkCode=as2&tag=ha0d2-20">The Checklist Manifesto: How to Get Things Right</a><img src="//www.assoc-amazon.com/e/ir?t=ha0d2-20&l=as2&o=1&a=0312430000" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a ng-if='type="reward"' href="http://www.amazon.com/gp/product/1594484805/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1594484805&linkCode=as2&tag=ha0d2-20">Drive: The Surprising Truth About What Motivates Us</a><img src="//www.assoc-amazon.com/e/ir?t=ha0d2-20&l=as2&o=1&a=1594484805" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</div>
<div ng-if="type='todo'">
<button class='task-action-btn tile spacious bright' ng-show="_showCompleted" x-bind=click:clearCompleted>Clear Completed</button>
<!-- remaining/completed tabs -->
<ul class="nav nav-tabs">
<li ng-class="active:!_showCompleted"><a x-bind="click:todosShowRemaining">Remaining</a></li>
<li ng-class="active:_showCompleted"><a x-bind="click:todosShowCompleted">Complete</a></li>
</ul>
</div>
</div>
</div>
<!-- all the parts of a single task -->
<task:>
<li data-id={{:task.id}} class="task {taskClasses(:task, users[_userId].filters, _user.preferences.dayStart, _user.lastCron, _showCompleted, @main)}">
<!-- right-hand side control buttons -->
<div class="task-meta-controls">
<!-- Streak -->
<span class='{#unless :task.streak}hide{/}'>
{:task.streak}<span rel='tooltip' title='Streak Counter'><i class='icon-forward'></i></span>
</span>
<app:filters:applied-filters />
<!-- edit -->
<a x-bind=click:toggleTaskEdit rel=tooltip title="Edit"><i class="icon-pencil"></i></a>
<!-- challenges -->
{{#if :task.challenge}}
{{#if brokenChallengeLink(:task)}}
<i class='icon-bullhorn' style='background-color:red;' x-bind=click:toggleTaskEdit rel=tooltip title="Broken Challenge Link"></i>
{{else}}
<i class='icon-bullhorn' rel=tooltip title="Challenge Task"></i>
{{/}}
{{else}}
<!-- delete -->
<a x-bind=click:del rel=tooltip title="Delete"><i class="icon-trash"></i></a>
{{/}}
<!-- chart -->
{#if :task.history}
<a x-bind=click:toggleChart data-id="{{:task.id}}" rel="tooltip" title="Progress"><i class="icon-signal"></i></a>
{/}
<!-- notes -->
{#if :task.notes}
<span rel="popover" data-trigger="hover" data-placement="left" data-content="{:task.notes}" data-original-title="{:task.text}" class='task-notes'><i class="icon-comment"></i></span>
{/}
</div>
<!-- left-hand side checkbox -->
<div class="task-controls task-primary">
<!-- Habits -->
{{#if equal(:task.type,'habit')}}
{{#if @main}} <!-- only allow scoring on main tasks, not when viewing others' public tasks or when creating challenges -->
{#if :task.up}<a class="task-action-btn" data-direction=up x-bind=click:score></a>{/}
{#if :task.down}<a class="task-action-btn" data-direction=down x-bind=click:score></a>{/}
{{else}}
{#if :task.up}<span class="task-action-btn"></span>{/}
{#if :task.down}<span class="task-action-btn"></span>{/}
{{/}}
<!-- Rewards -->
{{else if equal(:task.type,'reward')}}
{{#if @main}} <!-- only allow scoring on main tasks, not when viewing others' public tasks or when creating challenges -->
<a class="money btn-buy" x-bind=click:score data-direction=down>
<span class="reward-cost">{:task.value}</span>
<span class='shop_gold'></span>
</a>
{{else}}
<span class="money btn-buy">
<span class="reward-cost">{:task.value}</span>
<span class='shop_gold'></span>
</span>
{{/}}
<!-- Daily & Todos -->
{{else}}
<span class="task-checker action-yesno">
{{#if @main}} <!-- only allow scoring on main tasks, not when viewing others' public tasks or when creating challenges -->
<input type=checkbox id="box-{{:task.id}}" class="visuallyhidden focusable" checked="{:task.completed}">
<label for="box-{{:task.id}}"></label>
{{else}}
<input type=checkbox id="box-{{:task.id}}-static" class="visuallyhidden focusable" checked="false">
<label for="box-{{:task.id}}-static"></label>
{{/}}
</span>
{{/}}
</div>
<!-- main content -->
<p class="task-text">
{{#if taskInChallenge(:task)}}
{{taskAttrFromChallenge(:task,'text')}}
{{else}}
{:task.text}
{{/}}
</p>
<!-- edit/options dialog -->
<app:tasks:taskMeta main={{@main}} />
</li>
<!-- task edit/options -->
<taskMeta:>
<div class="{#unless _tasks.editing[:task.id]}visuallyhidden{/} task-options">
{{#if brokenChallengeLink(:task)}}
<div class='well'>
<p>Broken Challenge Link: this task was part of a challenge, but (a) challenge (or containing group) has been deleted, or (b) the task was deleted from the challenge.</p>
<p><a>Keep</a> | <a>Keep all from challenge</a> | <a>Delete</a> | <a>Delete all from challenge</a></p>
</div>
{{/}}
<form x-bind="submit:toggleTaskEdit" >
<!-- text & notes -->
<fieldset class="option-group">
{{#unless taskInChallenge(:task)}}
<label class="option-title">Text</label><input class="option-content" type=text value={:task.text}>
{{/}}
<label class="option-title">Extra Notes</label>
{{#if taskInChallenge(:task)}}
<textarea class="option-content" rows=3 disabled>{{taskAttrFromChallenge(:task,'notes')}}</textarea>
{{else}}
<textarea class="option-content" rows=3>{:task.notes}</textarea>
{{/}}
</fieldset>
<!-- if Habit, plus/minus command options -->
{#if equal(:task.type, 'habit')}
{#unless taskInChallenge(:task)}
<fieldset class="option-group">
<legend class="option-title">Direction/Actions</legend>
<span class="task-checker action-plusminus select-toggle">
<input class="visuallyhidden focusable" type=checkbox id="{{:task.id}}-option-plus" checked={:task.up}>
<label for="{{:task.id}}-option-plus"></label>
</span>
<span class="task-checker action-plusminus select-toggle">
<input class="visuallyhidden focusable" type=checkbox id="{{:task.id}}-option-minus" checked={:task.down}>
<label for="{{:task.id}}-option-minus"></label>
</span>
</fieldset>
{/}
<!-- if Daily, calendar -->
{else if equal(:task.type, 'daily')}
<fieldset class="option-group">
<legend class="option-title">Repeat</legend>
<div class="task-controls tile-group repeat-days">
<!-- note, does not use data-toggle="buttons-checkbox" - it would interfere with our own click binding -->
<button type="button" class="task-action-btn tile {#if :task.repeat.su}active{/}" data-day='su' x-bind=click:toggleDay>Su</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.m}active{/}" data-day='m' x-bind=click:toggleDay>M</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.t}active{/}" data-day='t' x-bind=click:toggleDay>T</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.w}active{/}" data-day='w' x-bind=click:toggleDay>W</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.th}active{/}" data-day='th' x-bind=click:toggleDay>Th</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.f}active{/}" data-day='f' x-bind=click:toggleDay>F</button>
<button type="button" class="task-action-btn tile {#if :task.repeat.s}active{/}" data-day='s' x-bind=click:toggleDay>S</button>
</div>
</fieldset>
<!-- if Reward, pricing -->
{else if equal(:task.type, 'reward')}
<fieldset class="option-group option-short">
<legend class="option-title">Price</legend>
<input class="option-content" size="16" type="number" min="0" value={:task.value}>
<div class="money input-suffix"><span class='shop_gold'></span></div>
</fieldset>
<!-- if Todo, the due date -->
{else if equal(:task.type, 'todo')}
<fieldset class="option-group">
<legend class="option-title">Due Date</legend>
<input class="option-content datepicker" type="text" value="{:task.date}" data-date-format="mm/dd/yyyy">
</fieldset>
{/}
{{#if @main}}<app:filters:filter-fieldgroup />{{/}}
<!-- Advanced Options -->
{#unless equal(:task.type, 'reward')}
<p x-bind="click:tasksToggleAdvanced" class="option-title mega">Advanced Options</p>
<fieldset class="option-group advanced-option visuallyhidden">
<legend class="option-title"><a class='priority-multiplier-help' href="https://trello.com/card/priority-multiplier/50e5d3684fe3a7266b0036d6/17" target="_blank"><i class='icon-question-sign'></i></a> Difficulty</legend>
{{#if taskInChallenge(:task)}}
<button disabled type="button" class="task-action-btn tile active">
{{taskAttrFromChallenge(:task,'priority')}}
</button>
{{else}}
<div class="task-controls tile-group priority-multiplier" data-id="{{:task.id}}">
<button type="button" class="task-action-btn tile {#if or(equal(:task.priority,'!'),not(:task.priority))}active{/}" data-priority='!' x-bind=click:tasksSetPriority>Easy</button>
<button type="button" class="task-action-btn tile {#if equal(:task.priority,'!!')}active{/}" data-priority='!!' x-bind=click:tasksSetPriority>Medium</button>
<button type="button" class="task-action-btn tile {#if equal(:task.priority,'!!!')}active{/}" data-priority='!!!' x-bind=click:tasksSetPriority>Hard</button>
</div>
{{/}}
{{#if equal(:task.type,'daily')}}
<legend class="option-title">Restore Streak</legend>
<input class='option-content' type=number value="{int(:task.streak)}" />
{{/}}
</fieldset>
{/}
<button type=submit class="task-action-btn tile spacious" x-bind="click:tasksSaveAndClose">Save & Close</button>
</form>
</div>
<div class="{#unless _page.charts[:task.id]}hidden{/} {{:task.id}}-chart"></div>