From 2a6cf5bb0e7281b6e56f68f107db2f1bf6dbd279 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Wed, 30 Sep 2015 13:13:40 -0400 Subject: [PATCH] Fix responses list update issue after response name change (#1490555) --- program/js/list.js | 35 ++++++++++++++++++++++------------- CHANGELOG | 1 + 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 50512f0..52a6c1b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -36,6 +36,7 @@ - Fix so microseconds macro (u) in log_date_format works (#1490446) - Fix so unrecognized TNEF attachments are displayed on the list of attachments (#1490351) - Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542) +- Fix responses list update issue after response name change (#1490555) RELEASE 1.1.3 ------------- diff --git a/program/js/list.js b/program/js/list.js index 0dc700e..de2be7a 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -114,7 +114,8 @@ var r, len, rows = this.tbody.childNodes; for (r=0, len=rows.length; r<len; r++) { - this.rowcount += this.init_row(rows[r]) ? 1 : 0; + if (rows[r].nodeType == 1) + this.rowcount += this.init_row(rows[r]) ? 1 : 0; } this.init_header(); @@ -150,8 +151,9 @@ var self = this, uid = row.uid; this.rows[uid] = {uid:uid, id:row.id, obj:row}; - // set eventhandlers to table row (only left-button-clicks in mouseup) - $(row).mousedown(function(e) { return self.drag_row(e, this.uid); }) + $(row).data('uid', uid) + // set eventhandlers to table row (only left-button-clicks in mouseup) + .mousedown(function(e) { return self.drag_row(e, this.uid); }) .mouseup(function(e) { if (e.which == 1 && !self.drag_active) return self.click_row(e, this.uid); @@ -355,10 +357,11 @@ if (row.nodeName === undefined) { // for performance reasons use DOM instead of jQuery here var domrow = document.createElement(this.row_tagname()); + if (row.id) domrow.id = row.id; + if (row.uid) domrow.uid = row.uid; if (row.className) domrow.className = row.className; if (row.style) $.extend(domrow.style, row.style); - if (row.uid) $(domrow).data('uid', String(row.uid)); // #1489906 for (var e, domcell, col, i=0; row.cols && i < row.cols.length; i++) { col = row.cols[i]; @@ -394,18 +397,22 @@ var row = this.rows[id]; if (!row) return false; - var domrow = row.obj; - for (var domcell, col, i=0; cols && i < cols.length; i++) { + var i, domrow = row.obj; + for (i = 0; cols && i < cols.length; i++) { this.get_cell(domrow, i).html(cols[i]); } if (newid) { delete this.rows[id]; + domrow.uid = newid; domrow.id = 'rcmrow' + newid; this.init_row(domrow); if (select) this.selection[0] = newid; + + if (this.last_selected == id) + this.last_selected = newid; } }, @@ -826,14 +833,16 @@ get_row_uid: function(row) { - if (row && row.uid) - return row.uid; + if (!row) + return; - var uid; - if (row && (uid = $(row).data('uid'))) - row.uid = uid; - else if (row && String(row.id).match(this.id_regexp)) - row.uid = RegExp.$1; + if (!row.uid) { + var uid = $(row).data('uid'); + if (uid) + row.uid = uid; + else if (String(row.id).match(this.id_regexp)) + row.uid = RegExp.$1; + } return row.uid; }, -- Gitblit v1.9.1