mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
see #78
Work in progress. Multi selection is working (using shift+click) but I've made a mistake somewhere because the default shift key behaviour is not working anymore.
This commit is contained in:
@@ -42,6 +42,9 @@ html > body #listing {
|
||||
width: 100%;
|
||||
/*position: relative;*/
|
||||
border-bottom: 1px solid #C8D6E8;
|
||||
user-select: none; /* CSS3 */
|
||||
-moz-user-select: none; /* Gecko (Firefox) */
|
||||
-khtml-user-select:none; /* Webkit (Safari, Chrome) */
|
||||
}
|
||||
|
||||
tr.selected {
|
||||
|
||||
@@ -208,15 +208,57 @@
|
||||
}
|
||||
|
||||
var selectedRows = new Array();
|
||||
var fromrow = -1;
|
||||
var torow = -1;
|
||||
|
||||
$(document.body).addEvent("keydown", function(event) {
|
||||
if (event.shift) {
|
||||
event.stop();
|
||||
}
|
||||
});
|
||||
|
||||
/* The IE way for disabling default selection */
|
||||
$$("tbody>tr").set("unselectable", "on");
|
||||
|
||||
$$("tbody>tr").addEvent("click", function(event) {
|
||||
var tr = $(event.target).getParent();
|
||||
|
||||
if (event.shift && fromrow != -1) {
|
||||
var currentrow = parseInt(tr.get("name"));
|
||||
|
||||
if (fromrow < currentrow) {
|
||||
rangeUp2Down(fromrow, currentrow);
|
||||
} else {
|
||||
rangeDown2Up(fromrow, currentrow);
|
||||
}
|
||||
fromrow = currentrow;
|
||||
return;
|
||||
}
|
||||
fromrow = parseInt(tr.get("name"));
|
||||
toggleSelectRow(tr);
|
||||
});
|
||||
|
||||
rangeUp2Down = function(start, end) {
|
||||
for (var i = start + 1; i <= end; i++) {
|
||||
var tr = $$("tr[name=" + i + "]")[0];
|
||||
toggleSelectRow(tr)
|
||||
}
|
||||
}
|
||||
|
||||
rangeDown2Up = function(start, end) {
|
||||
for (var i = start - 1; i >= end; i--) {
|
||||
var tr = $$("tr[name=" + i + "]")[0];
|
||||
toggleSelectRow(tr)
|
||||
}
|
||||
}
|
||||
|
||||
toggleSelectRow = function(tr) {
|
||||
if (!tr.hasClass("selected")) {
|
||||
selectRow(tr);
|
||||
} else {
|
||||
unselectRow(tr, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
selectRow = function(tr) {
|
||||
tr.addClass("selected");
|
||||
|
||||
+3
-1
@@ -54,8 +54,9 @@ class Table(object):
|
||||
except AttributeError:
|
||||
self.columns += [m[1]]
|
||||
self.rows = []
|
||||
trcpt = 0
|
||||
for row in rows:
|
||||
nrow = {"id" : row[self.idkey], "cols" : []}
|
||||
nrow = {"id" : row[self.idkey], "cols" : [], "trcpt" : trcpt}
|
||||
for c in self.columns:
|
||||
newcol = {"name" : c.name}
|
||||
for key in ["width", "align", "cssclass"]:
|
||||
@@ -82,6 +83,7 @@ class Table(object):
|
||||
newcol["value"] = row[c.name]
|
||||
nrow["cols"] += [newcol]
|
||||
self.rows += [nrow]
|
||||
trcpt += 1
|
||||
|
||||
def render(self, request):
|
||||
if len(self.rows):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<tbody>
|
||||
{% for row in table.rows %}
|
||||
<tr id="{{ row.id }}" class="{% cycle 'odd' 'even' %}">
|
||||
<tr id="{{ row.id }}" class="{% cycle 'odd' 'even' %}" name="{{ row.trcpt }}">
|
||||
{% for cell in row.cols %}
|
||||
<td name="{{ cell.name }}" width="{{ cell.width }}" align="{{ cell.align }}" class="{{ cell.cssclass }}">
|
||||
{% if cell.safe %}{{ cell.value|safe }}{% else %}{{ cell.value }}{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user