Page MenuHomestyx hydra

No OneTemporary

diff --git a/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js b/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
index 6fb3d90aee..31d8da7ba6 100644
--- a/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
+++ b/webroot/rsrc/js/application/maniphest/behavior-batch-selector.js
@@ -1,158 +1,170 @@
/**
* @provides javelin-behavior-maniphest-batch-selector
* @requires javelin-behavior
* javelin-dom
* javelin-stratcom
* javelin-util
*/
JX.behavior('maniphest-batch-selector', function(config) {
var selected = {};
// Test if a task node is selected.
var get_id = function(task) {
return JX.Stratcom.getData(task).taskID;
};
var is_selected = function(task) {
return (get_id(task) in selected);
};
// Change the selected state of a task.
var change = function(task, to) {
if (to === undefined) {
to = !is_selected(task);
}
if (to) {
selected[get_id(task)] = true;
} else {
delete selected[get_id(task)];
}
JX.DOM.alterClass(
task,
'phui-object-item-selected',
is_selected(task));
update();
};
+ var redraw = function (task) {
+ var selected = is_selected(task);
+ change(task, selected);
+ };
+ JX.Stratcom.listen(
+ 'subpriority-changed',
+ null,
+ function (e) {
+ e.kill();
+ var data = e.getData();
+ redraw(data.task);
+ });
// Change all tasks to some state (used by "select all" / "clear selection"
// buttons).
var changeall = function(to) {
var inputs = JX.DOM.scry(document.body, 'li', 'maniphest-task');
for (var ii = 0; ii < inputs.length; ii++) {
change(inputs[ii], to);
}
};
// Clear any document text selection after toggling a task via shift click,
// since errant clicks tend to start selecting various ranges otherwise.
var clear_selection = function() {
if (window.getSelection) {
if (window.getSelection().empty) {
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) {
window.getSelection().removeAllRanges();
}
} else if (document.selection) {
document.selection.empty();
}
};
// Update the status text showing how many tasks are selected, and the button
// state.
var update = function() {
var count = JX.keys(selected).length;
var status;
if (count === 0) {
status = 'Shift-Click to Select Tasks';
} else if (status == 1) {
status = '1 Selected Task';
} else {
status = count + ' Selected Tasks';
}
JX.DOM.setContent(JX.$(config.status), status);
var submit = JX.$(config.submit);
var disable = (count === 0);
submit.disabled = disable;
JX.DOM.alterClass(submit, 'disabled', disable);
};
// When he user shift-clicks the task, update the rest of the application
// state.
JX.Stratcom.listen(
'click',
'maniphest-task',
function(e) {
var raw = e.getRawEvent();
if (!raw.shiftKey) {
return;
}
if (raw.ctrlKey || raw.altKey || raw.metaKey || e.isRightButton()) {
return;
}
if (JX.Stratcom.pass(e)) {
return;
}
e.kill();
change(e.getNode('maniphest-task'));
clear_selection();
});
// When the user clicks "Select All", select all tasks.
JX.DOM.listen(
JX.$(config.selectNone),
'click',
null,
function(e) {
changeall(false);
e.kill();
});
// When the user clicks "Clear Selection", clear the selection.
JX.DOM.listen(
JX.$(config.selectAll),
'click',
null,
function(e) {
changeall(true);
e.kill();
});
// When the user submits the form, dump selected state into it.
JX.DOM.listen(
JX.$(config.formID),
'submit',
null,
function(e) {
var inputs = [];
for (var k in selected) {
inputs.push(
JX.$N('input', {type: 'hidden', name: 'batch[]', value: k}));
}
JX.DOM.setContent(JX.$(config.idContainer), inputs);
});
update();
});
diff --git a/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js b/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
index 65052e37b4..047811e91f 100644
--- a/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
+++ b/webroot/rsrc/js/application/maniphest/behavior-subpriorityeditor.js
@@ -1,69 +1,72 @@
/**
* @provides javelin-behavior-maniphest-subpriority-editor
* @requires javelin-behavior
* javelin-dom
* javelin-stratcom
* javelin-workflow
* phabricator-draggable-list
*/
JX.behavior('maniphest-subpriority-editor', function(config) {
var draggable = new JX.DraggableList('maniphest-task')
.setFindItemsHandler(function() {
var tasks = JX.DOM.scry(document.body, 'li', 'maniphest-task');
var heads = JX.DOM.scry(document.body, 'h1', 'task-group');
return tasks.concat(heads);
})
.setGhostHandler(function(ghost, target) {
if (!target) {
// The user is trying to drag a task above the first group header;
// don't permit that since it doesn't make sense.
return false;
}
if (target.nextSibling) {
if (JX.DOM.isType(target, 'h1')) {
target.nextSibling.insertBefore(ghost, target.nextSibling.firstChild);
} else {
target.parentNode.insertBefore(ghost, target.nextSibling);
}
} else {
target.parentNode.appendChild(ghost);
}
});
draggable.listen('shouldBeginDrag', function(e) {
if (e.getNode('slippery') || e.getNode('maniphest-edit-task')) {
JX.Stratcom.context().kill();
}
});
draggable.listen('didDrop', function(node, after) {
var data = {
task: JX.Stratcom.getData(node).taskID
};
if (JX.DOM.isType(after, 'h1')) {
data.priority = JX.Stratcom.getData(after).priority;
} else {
data.after = JX.Stratcom.getData(after).taskID;
}
draggable.lock();
JX.DOM.alterClass(node, 'drag-sending', true);
var onresponse = function(r) {
var nodes = JX.$H(r.tasks).getFragment().firstChild;
var task = JX.DOM.find(nodes, 'li', 'maniphest-task');
JX.DOM.replace(node, task);
-
draggable.unlock();
+ JX.Stratcom.invoke(
+ 'subpriority-changed',
+ null,
+ { 'task' : task });
};
new JX.Workflow(config.uri, data)
.setHandler(onresponse)
.start();
});
});

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jun 9, 5:20 PM (1 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
140104
Default Alt Text
(6 KB)

Event Timeline