// Note here, we need this part of Habit to be a directive since we're going to be passing it variables from various // parts of the app. The alternative would be to create new scopes for different containing sections, but that // started to get unwieldy script(id='templates/habitrpg-tasks.html', type="text/ng-template") .grid .module(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}') .task-column(class='{{list.type}}s') // Todos export/graph options span.option-box.pull-right(bo-if='main && list.type=="todo"') a.option-action(ng-show='obj.history.todos', ng-click='toggleChart("todos")', tooltip='Progress') i.icon-signal //a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal') a.option-action(ng-click='notPorted()', tooltip='iCal', ng-show='false') i.icon-calendar // // Gold & Gems span.option-box.pull-right.wallet(bo-if='main && list.type=="reward"') .money | {{Shared.gold(user.stats.gp)}} span.shop_gold(tooltip='Gold') .money | {{Shared.silver(user.stats.gp)}} span.shop_silver(tooltip='Silver') // Header h2.task-column_title {{list.header}} // Todo Chart .todos-chart(bo-if='list.type == "todo"', ng-show='charts.todos') // Add New form.addtask-form.form-inline.new-task-form(name='new{{list.type}}form', ng-hide='obj._locked || (list.showCompleted && list.type=="todo")', ng-submit='addTask(obj[list.type+"s"],list)') span.addtask-field input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', required) input.addtask-btn(type='submit', value='+', ng-disabled='new{{list.type}}form.$invalid') hr .alert.alert-warning(ng-if='list.type=="todo" && obj[list.type+"s"].length > 100') | Clear completed To-Dos  i.icon-question-sign(popover="You have a lot of To-Dos, which can cause performance issues. Be sure to clear them periodically (see \"Completed\" tab at the bottom).", popover-trigger='mouseenter', popover-placement='left') // Actual List ul(class='{{list.type}}s', ng-show='obj[list.type + "s"].length > 0', habitrpg-sortable) include ./task // Static Rewards ul.items.rewards(bo-if='main && list.type=="reward" && user.flags.itemsEnabled') li.task.reward-item(ng-repeat='item in itemStore') // right-hand side control buttons .task-meta-controls span.task-notes(popover-trigger='mouseenter', popover-placement='left', popover='{{item.notes}}', popover-title='{{item.text}}') i.icon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='buy(item)') span.reward-cost {{item.value}} span.shop_gold // main content span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}') p.task-text {{item.text}} // Spells ul.items(ng-if='main && list.type=="reward" && user.stats.class') li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-show='user.stats.lvl >= spell.lvl') .task-meta-controls span.task-notes(popover-trigger='mouseenter', popover-placement='left', popover='{{spell.notes}}', popover-title='{{spell.text}}') i.icon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='castStart(spell)') span.reward-cost strong {{spell.mana}} |  MP // main content span(ng-class='{"shop_{{spell.key}} shop-sprite item-img": true}') p.task-text {{spell.text}} br // Ads div(bo-if='main && !user.purchased.ads && list.type!="reward"') span.pull-right a(ng-click='modals.buyGems=true', tooltip=env.t('removeAds')) i.icon-remove // Habit3 ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576') // Todo Tabs div(bo-if='main && list.type=="todo"', bo-class='{"tabbable tabs-below": list.type=="todo"}') button.task-action-btn.tile.spacious.bright(ng-show='list.showCompleted', ng-click='clearCompleted()') Clear Completed // remaining/completed tabs ul.nav.nav-tabs li(ng-class='{active: !list.showCompleted}') a(ng-click='list.showCompleted = false') Remaining li(ng-class='{active: list.showCompleted}') a(ng-click='list.showCompleted= true') Complete