diff --git a/public/js/controllers/tasksCtrl.js b/public/js/controllers/tasksCtrl.js
index 58c5a6bae7..cad6de1b91 100644
--- a/public/js/controllers/tasksCtrl.js
+++ b/public/js/controllers/tasksCtrl.js
@@ -185,4 +185,24 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
$.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js');
(window.adsbygoogle = window.adsbygoogle || []).push({});
}
+
+ /*
+ ------------------------
+ Hiding Tasks
+ ------------------------
+ */
+
+ $scope.shouldShow = function(task, list, prefs){
+ if (task.type == 'habit' || task.type == 'reward')
+ return true;
+ var shouldDo = task.type == 'daily' ? habitrpgShared.shouldDo(new Date, task.repeat, prefs) : true;
+ switch (list.view) {
+ case "remaining":
+ return !task.completed && shouldDo;
+ case "complete":
+ return task.completed || !shouldDo;
+ case "all":
+ return true;
+ }
+ }
}]);
diff --git a/public/js/directives/directives.js b/public/js/directives/directives.js
index baef14ccdb..ba0270d019 100644
--- a/public/js/directives/directives.js
+++ b/public/js/directives/directives.js
@@ -69,11 +69,13 @@ habitrpg
}, {
header: window.env.t('dailies'),
type: 'daily',
- placeHolder: window.env.t('newDaily')
+ placeHolder: window.env.t('newDaily'),
+ view: "remaining"
}, {
header: window.env.t('todos'),
type: 'todo',
- placeHolder: window.env.t('newTodo')
+ placeHolder: window.env.t('newTodo'),
+ view: "remaining"
}, {
header: window.env.t('rewards'),
type: 'reward',
@@ -159,4 +161,4 @@ habitrpg
"
\n" +
" \n" +
"\n");
- }]);
\ No newline at end of file
+ }]);
diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade
index 78c5c3142b..5cd803d480 100644
--- a/views/shared/tasks/lists.jade
+++ b/views/shared/tasks/lists.jade
@@ -101,15 +101,17 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
// 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"}')
- div(ng-show='list.showCompleted')
+ // Todo/Daily Tabs
+ div(bo-if='main && (list.type=="daily" || list.type=="todo")', class='tabbable tabs-below')
+ div(ng-show='(list.view == "complete" || list.view == "all") && list.type == todo')
.alert
=env.t('lotOfToDos')
button.task-action-btn.tile.spacious.bright(ng-click='user.ops.clearCompleted({})',popover=env.t('deleteToDosExplanation'),popover-trigger='mouseenter')=env.t('clearCompleted')
// remaining/completed tabs
ul.nav.nav-tabs
- li(ng-class='{active: !list.showCompleted}')
- a(ng-click='list.showCompleted = false')=env.t('remaining')
- li(ng-class='{active: list.showCompleted}')
- a(ng-click='list.showCompleted= true')=env.t('complete')
\ No newline at end of file
+ li(ng-class='{active: list.view == "remaining"}')
+ a(ng-click='list.view = "remaining"')=env.t('remaining')
+ li(ng-class='{active: list.view == "complete"}')
+ a(ng-click='list.view = "complete"')=env.t('complete')
+ li(ng-class='{active: list.view == "all"}')
+ a(ng-click='list.view = "all"')=env.t('all')
diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade
index 70dc518598..7ae312992e 100644
--- a/views/shared/tasks/task.jade
+++ b/views/shared/tasks/task.jade
@@ -1,4 +1,4 @@
-li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s"]', class='task {{Shared.taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main)}}', ng-click='spell && castEnd(task, "task", $event)', ng-class='{"cast-target":spell}', popover-trigger='mouseenter', data-popover-html="{{task.notes | markdown}}", data-popover-placement="top")
+li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s"]', class='task {{Shared.taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main)}}', ng-click='spell && castEnd(task, "task", $event)', ng-class='{"cast-target":spell}', popover-trigger='mouseenter', data-popover-html="{{task.notes | markdown}}", data-popover-placement="top", ng-show='shouldShow(task, list, user.preferences)')
// right-hand side control buttons
.task-meta-controls