Merge pull request #4699 from chimericdream/bulk-add-tasks

Bulk add tasks (first version; seeking review & feedback)
This commit is contained in:
Blade Barringer 2015-02-18 16:41:31 -06:00
commit c215b90869
7 changed files with 67 additions and 17 deletions

View file

@ -3,8 +3,11 @@
"lotOfToDos": "Completed To-Dos are automatically archived after 3 days. You can access them from Settings > Export.",
"deleteToDosExplanation": "If you click the button below, all of your completed To-Dos and archived To-Dos will be permanently deleted. Export them first if you want to keep a record of them.",
"beeminderDeleteWarning": "Beeminder users: <strong>First</strong> read <a href=\"http://habitrpg.wikia.com/wiki/Beeminder#Deleting_Completed_To-Dos_Without_Confusing_Beeminder\">Deleting Completed To-Dos Without Confusing Beeminder</a>!",
"addmultiple": "Add Multiple",
"addsingle": "Add Single",
"habits": "Habits",
"newHabit": "New Habit",
"newHabitBulk": "New Habits (one per line)",
"yellowred": "Weak",
"greenblue": "Strong",
"edit": "Edit",
@ -30,11 +33,13 @@
"progress": "Progress",
"dailies": "Dailies",
"newDaily": "New Daily",
"newDailyBulk": "New Dailies (one per line)",
"streakCounter": "Streak Counter",
"repeat": "Repeat",
"restoreStreak": "Restore Streak",
"todos": "To-Dos",
"newTodo": "New To-Do",
"newTodoBulk": "New To-Dos (one per line)",
"dueDate": "Due Date",
"remaining": "Active",
"complete": "Done",
@ -48,6 +53,7 @@
"gold": "Gold",
"silver": "Silver (100 silver = 1 gold)",
"newReward": "New Reward",
"newRewardBulk": "New Rewards (one per line)",
"price": "Price",
"tags": "Tags",
"editTags": "Edit",

View file

@ -21,16 +21,16 @@ hrpg-button-color-mixin($hrpg-button-color)
@media screen and (min-width:768px)
&:hover
background-color: darken($hrpg-button-color, 2.36%) !important
> a, > button, > input
> a, > button, > input, textarea
color: darken($hrpg-button-color, 70%) !important
border-color: darken($hrpg-button-color, 16.18%) !important
> input
> input, textarea
&:hover
border-color: darken($hrpg-button-color, 32.8%) !important
&:focus
border-color: darken($hrpg-button-color, 61.8%) !important;
outline: none;
> input + button
> input + button, textarea + button
&:focus
border-color: darken($hrpg-button-color, 32.8%) !important;
background-color: darken($hrpg-button-color, 6.18%) !important;
@ -105,11 +105,13 @@ $hrpg-button-with-input
@extend $hrpg-button-master
border: none
border-radius: 0.382em
input, a, button
input, a, button, textarea
display: block
float: left
height: 2em
input
textarea
height: auto
input, textarea
border: 1px solid #ccc
border-radius: 0.382em 0em 0em 0.382em !important
padding-left: 0.618em

View file

@ -145,17 +145,32 @@ for $stage in $stages
// "Add new task" form
// -----------------
.task-add
position: relative
margin-top: 1.5em
@extend $hrpg-button-with-input
hrpg-button-color-mixin($color-options-submenu)
input, button
height: 2.618em
input
input, textarea
width: 80%
textarea
float: none
resize: vertical
border-radius: 4px 0 0 4px
+ button
position: absolute
top: 0
bottom: 0
right: 0
height: 100%
button
width: 20%
span
font-size: 0.8em
.help-block a
border: 0
float: right
font-size: 0.85em
// an individual task entry
// ------------------------

View file

@ -23,18 +23,37 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
User.user.ops.score({params:{id: task.id, direction:direction}})
};
$scope.addTask = function(addTo, listDef) {
function addTask(addTo, listDef, task) {
var newTask = {
text: listDef.newTask,
text: task,
type: listDef.type,
tags: _.transform(User.user.filters, function(m,v,k){
if (v) m[k]=v;
})
}
};
User.user.ops.addTask({body:newTask});
}
$scope.addTask = function(addTo, listDef) {
if (listDef.bulk) {
var tasks = listDef.newTask.split(/[\n\r]+/);
_.each(tasks, function(t) {
addTask(addTo, listDef, t);
});
listDef.bulk = false;
} else {
addTask(addTo, listDef, listDef.newTask);
}
delete listDef.newTask;
};
$scope.toggleBulk = function(list) {
if (typeof list.bulk === 'undefined') {
list.bulk = false;
}
list.bulk = !list.bulk;
};
/**
* Add the new task to the actions log
*/

View file

@ -73,21 +73,25 @@ habitrpg
header: window.env.t('habits'),
type: 'habit',
placeHolder: window.env.t('newHabit'),
placeHolderBulk: window.env.t('newHabitBulk'),
view: "all"
}, {
header: window.env.t('dailies'),
type: 'daily',
placeHolder: window.env.t('newDaily'),
placeHolderBulk: window.env.t('newDailyBulk'),
view: dailiesView
}, {
header: window.env.t('todos'),
type: 'todo',
placeHolder: window.env.t('newTodo'),
placeHolderBulk: window.env.t('newTodoBulk'),
view: "remaining"
}, {
header: window.env.t('rewards'),
type: 'reward',
placeHolder: window.env.t('newReward'),
placeHolderBulk: window.env.t('newRewardBulk'),
view: "all"
}
];

View file

@ -24,9 +24,13 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
// Add New
form.task-add(name='new{{list.type}}form', ng-hide='obj._locked', ng-submit='addTask(obj[list.type+"s"],list)')
input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', required)
textarea(rows='6', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', ui-keydown='{"meta-enter ctrl-enter":"addTask(obj[list.type+\'s\'],list)"}', required)
input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required)
button(type='submit', ng-disabled='new{{list.type}}form.$invalid')
span.glyphicon.glyphicon-plus
small.help-block.btn-link.pull-right(ng-click='toggleBulk(list)')
span(ng-if='!list.bulk')=env.t('addmultiple')
span(ng-if='list.bulk')=env.t('addsingle')
mixin taskColumnTabs(position)
// Habits Tabs