CC-6067 - implement hybrid selection

This commit is contained in:
Duncan Sommerville 2015-08-18 12:20:06 -04:00
parent 4bfb8fa0cb
commit 263c2709bf
2 changed files with 44 additions and 8 deletions

View File

@ -836,8 +836,8 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.library.dblClickAdd(data, data.ftype);
});
$libTable.find("tbody").on("mousedown", "tr", function(ev) {
var $tr = $(this),
$libTable.find("tbody").on("mousedown", "tr > td.library_checkbox", function(ev) {
var $tr = $(this).parent(),
// Get the ID of the selected row
$rowId = $tr.attr("id");
@ -871,19 +871,53 @@ var AIRTIME = (function(AIRTIME) {
$previouslySelected = $tr;
});
$libTable.find("tbody").on("click", "tr", function(ev) {
//ev.preventDefault();
$libTable.find("tbody").on("mousedown", "tr > td:not(.library_checkbox)", function(ev) {
var $tr = $(this).parent(),
// Get the ID of the selected row
$rowId = $tr.attr("id");
if (ev.shiftKey && $previouslySelected !== undefined) {
if ($previouslySelected.attr("id") == $rowId) {
return;
}
// If the selected row comes before the previously selected row,
// we want to select previous rows, otherwise we select next
if ($previouslySelected.prevAll("#" + $rowId).length !== 0) {
$previouslySelected.prevUntil($tr).each(function (i, el) {
mod.selectItem($(el));
mod.checkItem($(el));
});
} else {
$previouslySelected.nextUntil($tr).each(function (i, el) {
mod.selectItem($(el));
mod.checkItem($(el));
});
}
} else if (!ev.ctrlKey) {
AIRTIME.library.selectNone();
}
mod.selectItem($tr);
mod.checkItem($tr);
// Remember this row so we can properly multiselect
$previouslySelected = $tr;
});
$libTable.find("tbody").on("click", "tr", function() {
var tr = $(this);
if (flagForDeselection) {
flagForDeselection = false;
mod.deselectItem($(this));
mod.uncheckItem($(this));
mod.deselectItem(tr);
mod.uncheckItem(tr);
} else {
mod.checkItem($(this));
mod.checkItem(tr);
}
});
$libTable.find("thead").on("click", "th > input[type='checkbox']", function(ev) {
$libTable.find("thead").on("click", "th > input[type='checkbox']", function() {
if ($(this).is(":checked")) {
AIRTIME.library.selectCurrentPage();
$(this).prop("checked", true);

View File

@ -436,6 +436,8 @@ var AIRTIME = (function(AIRTIME){
* Should all be moved to builder.js eventually
*/
function buildNewTab(json) {
AIRTIME.library.selectNone();
var tabId = $openTabs[json.type + json.id];
if (tabId !== undefined) {
AIRTIME.showbuilder.switchTab($("#pl-tab-content-" + tabId), $("#pl-tab-" + tabId));