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:
tonio
2010-11-27 10:02:08 +01:00
parent bd32445e3e
commit 50af9c4355
4 changed files with 50 additions and 3 deletions
@@ -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
View File
@@ -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 -1
View File
@@ -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 %}