Allow tasks to be subprioritized by drag-and-drop
Summary: Like the title says, similar to Facebook Tasks. Not sure how I really feel about this, but I guess it's kind of OK? I never used this feature in Facebook Tasks but I think some people like it. The drag-and-drop to repri across priorities feels okayish. Because subpriority is a double and we just split the difference when reprioritizing, you lose ~a bit of precision every time you repri two tasks against each other and so you can break it by swapping the priorities of two tasks ~50 times. This case is pretty silly and pathological. We can add some code to deal with this at some point if necessary. I think this also fixes the whacky task layout widths once and for all. (There are a couple of minor UI glitches like headers not vanishing and header counts not updating that I'm not fixing because I am lazy.) Test Plan: Dragged and dropped tasks around. Reviewers: btrahan Reviewed By: btrahan CC: aran, epriestley, mgummelt Maniphest Tasks: T859 Differential Revision: https://secure.phabricator.com/D1731
This commit is contained in:
@@ -260,34 +260,65 @@ final class ManiphestTaskListController extends ManiphestController {
|
||||
|
||||
$selector = new AphrontNullView();
|
||||
|
||||
$group = $query->getParameter('group');
|
||||
$order = $query->getParameter('order');
|
||||
$is_draggable =
|
||||
($group == 'priority') ||
|
||||
($group == 'none' && $order == 'priority');
|
||||
|
||||
$lists = new AphrontNullView();
|
||||
$lists->appendChild('<div style="padding: 0em 1em;">');
|
||||
foreach ($tasks as $group => $list) {
|
||||
$task_list = new ManiphestTaskListView();
|
||||
$task_list->setShowBatchControls(true);
|
||||
if ($is_draggable) {
|
||||
$task_list->setShowSubpriorityControls(true);
|
||||
}
|
||||
$task_list->setUser($user);
|
||||
$task_list->setTasks($list);
|
||||
$task_list->setHandles($handles);
|
||||
|
||||
$count = number_format(count($list));
|
||||
$selector->appendChild(
|
||||
'<h1 class="maniphest-task-group-header">'.
|
||||
phutil_escape_html($group).' ('.$count.')'.
|
||||
'</h1>');
|
||||
$selector->appendChild($task_list);
|
||||
|
||||
$lists->appendChild(
|
||||
javelin_render_tag(
|
||||
'h1',
|
||||
array(
|
||||
'class' => 'maniphest-task-group-header',
|
||||
'sigil' => 'task-group',
|
||||
'meta' => array(
|
||||
'priority' => head($list)->getPriority(),
|
||||
),
|
||||
),
|
||||
phutil_escape_html($group).' ('.$count.')'));
|
||||
|
||||
$lists->appendChild($task_list);
|
||||
}
|
||||
$lists->appendChild('</div>');
|
||||
$selector->appendChild($lists);
|
||||
|
||||
|
||||
$selector->appendChild($this->renderBatchEditor($query));
|
||||
|
||||
$form_id = celerity_generate_unique_node_id();
|
||||
$selector = phabricator_render_form(
|
||||
$user,
|
||||
array(
|
||||
'method' => 'POST',
|
||||
'action' => '/maniphest/batch/',
|
||||
'id' => $form_id,
|
||||
),
|
||||
$selector->render());
|
||||
|
||||
$list_container->appendChild($selector);
|
||||
$list_container->appendChild($pager);
|
||||
|
||||
Javelin::initBehavior(
|
||||
'maniphest-subpriority-editor',
|
||||
array(
|
||||
'root' => $form_id,
|
||||
'uri' => '/maniphest/subpriority/',
|
||||
));
|
||||
}
|
||||
|
||||
$list_container->appendChild('</div>');
|
||||
|
||||
Reference in New Issue
Block a user