moksha/public/javascript/moksha.js | 50 ++++++++++++++++++++++++++ moksha/public/javascript/ui/moksha.ui.grid.js | 35 +++++++++++++----- 2 files changed, 76 insertions(+), 9 deletions(-)
New commits: commit ba567c1da5130d0add3cada26900f8c0812dd105 Merge: 6c8ed33... a85b06f... Author: John (J5) Palmieri johnp@redhat.com Date: Mon Mar 30 14:00:09 2009 -0400
Merge branch 'master' of git+ssh://johnp@git.fedorahosted.org/git/moksha
commit 6c8ed33b2bb6fbd38926f4543a3e0883cc33c86f Author: John (J5) Palmieri johnp@redhat.com Date: Mon Mar 30 13:58:55 2009 -0400
display a load indicator when loading data
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js index c1f162c..64d8c18 100644 --- a/moksha/public/javascript/moksha.js +++ b/moksha/public/javascript/moksha.js @@ -210,8 +210,58 @@ moksha = { return uri; },
+ json_load: function(path, params, callback, $overlay_div) { + moksha.ajax_load(path, params, callback, $overlay_div, 'json') + }, + + xml_load: function(path, params, callback, $overlay_div) { + moksha.ajax_load(path, params, callback, $overlay_div, 'xml') + },
+ html_load: function(path, params, callback, $overlay_div) { + moksha.ajax_load(path, params, callback, $overlay_div, 'html') + }, + + ajax_load: function(path, params, callback, $overlay_div, data_type) { + self = this; + + var success = function(data, status) { + if (typeof($overlay_div) == 'object') + $overlay_div.hide(); + + callback(data); + } + + var error = function(XMLHttpRequest, status, err) { + // TODO: provide a reload link in the overlay + if (typeof($overlay_div) == 'object') { + var $msg = $('.message', $overlay_div); + $msg.html(status); + } + } + + // show loading + if (typeof($overlay_div) == 'object') { + var $msg = $('.message', $overlay_div); + // FIXME: make this globally configurable + $msg.html('<img src="/images/spinner.gif"></img>'); + + var $parent = $overlay_div.parent(); + $overlay_div.css({'height': $parent.height(), + 'width': $parent.width()}) + $overlay_div.show(); + } + + o = { + 'url': path, + 'data': params, + 'success': success, + 'error': error, + 'dataType': data_type + }
+ $.ajax(o); + } }
})(); diff --git a/moksha/public/javascript/ui/moksha.ui.grid.js b/moksha/public/javascript/ui/moksha.ui.grid.js index 0393e25..7d1d269 100644 --- a/moksha/public/javascript/ui/moksha.ui.grid.js +++ b/moksha/public/javascript/ui/moksha.ui.grid.js @@ -6,8 +6,6 @@ var self = this; var o = self.options;
- self.$visible_rows = []; - // add placeholder for row appends self.$rowplaceholder = jQuery('<span />').addClass('moksha_rowplaceholder'); self.$rowplaceholder.hide(); @@ -32,6 +30,8 @@ var self = this; var o = self.options; var $ph = self.$rowplaceholder; + + /* var $rows = $('.' + o.rowClass, $ph.parent());
for (j=0; j < $rows.length; j++) { @@ -42,7 +42,9 @@ for (i=j; i<o.rows_per_page; i++) { var $blank = $(self._blank_row).addClass(o.rowClass + '_' + i.toString()); $ph.before($blank); - } + }*/ + + $('.' + o.rowClass, self.element).replaceWith(''); },
insert_row: function(i, row_data) { @@ -62,9 +64,8 @@ var $ph = self.$rowplaceholder; if (i == -1 || row_count == i) { var row_class = o.rowClass + '_' + row_count.toString(); - var $row = $('.' + row_class, $ph.parent()); + $ph.parent().append($new_row); $new_row.addClass(row_class).addClass(o.rowClass); - $row.replaceWith($new_row); } else { // insert before i element and update all row numbers // if it is a blank row, replace the row @@ -118,14 +119,12 @@ // throbber var self = this;
- self.element.find('tbody').fadeOut('slow'); if (typeof(moksha_csrf_token)!='undefined' && moksha_csrf_token) args['_csrf_token'] = moksha_csrf_token; - var xmlrequest = jQuery.getJSON(path, args, function (json) { + moksha.json_load(path, args, function (json) { callback(json); - self.element.find('tbody').fadeIn('slow');
- }); + }, this.$overlay_div);
},
@@ -297,6 +296,24 @@ return false; })
+ var $overlay = $('.overlay', self.element) + if ($overlay.length == 0) { + $overlay = $('<div />').addClass('overlay') + $overlay.css({'opacity': .75, + 'z-index': 99, + 'background-color': 'white', + 'position': 'absolute', + } + ) + + $overlay.append($('<div />').addClass('message')); + $overlay.hide(); + + } + + self.element.parent().prepend($overlay); + self.$overlay_div = $overlay; + self.request_data_refresh(); },
moksha-commits@lists.fedorahosted.org