moksha/lib
by John (J5) Palmieri
moksha/lib/helpers.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit f77af904798853e6a7c4a0cf6874cef03b2fdabe
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Mar 31 19:10:50 2009 -0400
don't pass None params since they get evaluated to the string 'None'
diff --git a/moksha/lib/helpers.py b/moksha/lib/helpers.py
index eef8bf6..eb800d2 100644
--- a/moksha/lib/helpers.py
+++ b/moksha/lib/helpers.py
@@ -45,7 +45,8 @@ def _update_params(params, d):
# FIXME: This should be recursive
value = json.dumps(value)
- p[k] = value
+ if value != None:
+ p[k] = value
return p
15 years, 2 months
moksha/public
by John (J5) Palmieri
moksha/public/javascript/ui/moksha.ui.grid.js | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 0c3bd5fd6e0d198681016601137e2a10b363304f
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Mar 31 18:32:46 2009 -0400
add a range to the pager message
diff --git a/moksha/public/javascript/ui/moksha.ui.grid.js b/moksha/public/javascript/ui/moksha.ui.grid.js
index e3d963c..53ece3b 100644
--- a/moksha/public/javascript/ui/moksha.ui.grid.js
+++ b/moksha/public/javascript/ui/moksha.ui.grid.js
@@ -213,11 +213,15 @@
console.log(json);
var msg = '';
var pager = '';
- if (vr < tr) {
- msg = 'Viewing ' + vr.toString() + ' of ' + tr.toString();
- msg += ' rows.';
- }
+ var show_range = vr.toString();
+ // show an actual range if we are not starting from 0
+ if (sr > 0)
+ show_range = sr.toString() + '-' + (sr + vr).toString();
+
+
+ msg = 'Viewing ' + show_range + ' of ' + tr.toString();
+ msg += ' items.';
$('.message', self.$pager_bottom_placeholder).html(msg);
15 years, 2 months
3 commits - moksha/api moksha/lib moksha/public
by John (J5) Palmieri
moksha/api/errorcodes.py | 81 ++++----------------------
moksha/api/widgets/grid.py | 3
moksha/api/widgets/moksha.py | 8 ++
moksha/lib/helpers.py | 64 ++++++++++++++++++++
moksha/public/javascript/moksha.js | 5 +
moksha/public/javascript/ui/moksha.ui.grid.js | 18 +++++
6 files changed, 107 insertions(+), 72 deletions(-)
New commits:
commit ba96d2087eb1beb1ab4fb54007ebbd2595793ec3
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Mar 31 17:44:30 2009 -0400
add the ability to add a "more" link instead of a pager
diff --git a/moksha/api/widgets/grid.py b/moksha/api/widgets/grid.py
index bd0555d..5d63284 100644
--- a/moksha/api/widgets/grid.py
+++ b/moksha/api/widgets/grid.py
@@ -21,7 +21,7 @@ class Grid(FormField):
params= ['rows_per_page', 'page_num', 'total_rows',
'filters', 'unique_key', 'sort_key', 'sort_order',
'row_template', 'resource', 'resource_path',
- 'loading_throbber', 'uid']
+ 'loading_throbber', 'uid', 'more_link']
hidden = True # hide from the moksha main menu
rows_per_page = 10
@@ -35,6 +35,7 @@ class Grid(FormField):
resource = None
resource_path = None
loading_throbber = None
+ more_link = None
def update_params(self, d):
super(Grid, self).update_params(d)
diff --git a/moksha/public/javascript/ui/moksha.ui.grid.js b/moksha/public/javascript/ui/moksha.ui.grid.js
index cd12a9a..e3d963c 100644
--- a/moksha/public/javascript/ui/moksha.ui.grid.js
+++ b/moksha/public/javascript/ui/moksha.ui.grid.js
@@ -220,7 +220,14 @@
}
$('.message', self.$pager_bottom_placeholder).html(msg);
- var pager = self._generate_numerical_pager(tr, sr, rpp);
+
+ var pager;
+ if (o.more_link)
+ pager = self._generate_more_link(o.more_link,
+ search_criteria.filters);
+ else
+ pager = self._generate_numerical_pager(tr, sr, rpp);
+
$('.pager', self.$pager_bottom_placeholder).html(pager);
}
@@ -347,6 +354,14 @@
self.request_data_refresh();
},
+ _generate_more_link: function (more_link, filters) {
+ var go = moksha.csrf_rewrite_url(more_link);
+ var pager = $('<a>View more ></a>').attr('href',
+ 'javascript:moksha.goto("' + go + '")');
+
+ return pager;
+ },
+
_generate_numerical_pager: function (total_rows, start_row, rows_per_page) {
var self = this;
var o = self.options;
@@ -483,6 +498,7 @@
pagerTopClass: 'moksha-grid-pager-top',
pagerBottomClass: 'moksha-grid-pager-bottom',
pagerPageLimit: 10,
+ more_link: null,
loading_throbber: ["Loading", // list of img urls or text
"Loading.",
"Loading..",
commit 99d26a84589afe2262cfcc680dec8ef8473d33f0
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Mar 31 17:43:08 2009 -0400
export debug config to javascript so we can check if we are in debug mode
diff --git a/moksha/api/widgets/moksha.py b/moksha/api/widgets/moksha.py
index 86d6d28..7970161 100644
--- a/moksha/api/widgets/moksha.py
+++ b/moksha/api/widgets/moksha.py
@@ -31,14 +31,16 @@ class MokshaGlobals(Widget):
moksha_base_url = "${base_url}";
moksha_csrf_token = "${csrf_token}";
moksha_userid = "${user_id}";
+moksha_debug = ${debug};
</script>
"""
- params = ['base_url', 'csrf_token', 'user_id']
+ params = ['base_url', 'csrf_token', 'user_id', 'debug']
engine_name = 'mako'
base_url = '/'
csrf_token = ''
user_id = ''
+ debug = 'false'
def __init__(self, *args, **kw):
super(MokshaGlobals, self).__init__(*args, **kw)
@@ -46,6 +48,10 @@ moksha_userid = "${user_id}";
def update_params(self, d):
super(MokshaGlobals, self).update_params(d)
+
+ if pylons.config.get('debug'):
+ d['debug'] = 'true'
+
d['base_url'] = tg.url('/')
identity = pylons.request.environ.get('repoze.who.identity')
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js
index ef38348..382b3bd 100644
--- a/moksha/public/javascript/moksha.js
+++ b/moksha/public/javascript/moksha.js
@@ -236,7 +236,10 @@ moksha = {
// TODO: provide a reload link in the overlay
if (typeof($overlay_div) == 'object') {
var $msg = $('.message', $overlay_div);
- $msg.html(status);
+ if (moksha_debug)
+ console.log(err);
+
+ $msg.html(error);
}
}
commit 501d07fd80d9225341d24f8944418fcbeca9963c
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Mar 31 17:42:03 2009 -0400
make enums generic, not just for passing errors
diff --git a/moksha/api/errorcodes.py b/moksha/api/errorcodes.py
index 2fbc4bf..43dda48 100644
--- a/moksha/api/errorcodes.py
+++ b/moksha/api/errorcodes.py
@@ -1,76 +1,21 @@
from paste.response import replace_header
+from moksha.lib.helpers import CategoryEnum
-class ErrObj(dict):
- def __init__(self, code, msg):
- super(ErrObj, self).__init__(code=code, msg=msg)
-
- def __getattribute__(self, name):
- try:
- return super(ErrObj, self).__getattribute__(name)
- except AttributeError, e:
- if name in self:
- return self[name]
-
- raise e
-
- def replace_app_header(self, app, header_name):
- if app.headers:
- headers = list(app.headers)
- else:
- headers = []
-
- replace_header(headers, header_name, self.code)
- app.headers = headers
-
- def __repr__(self):
- # act as if the user requested the code
- return str(self['code'])
-
-class ErrEnum(object):
- def __init__(self, prefix, *errs):
- self._prefix = prefix
- self._code_map = {}
-
- for number, e in enumerate(errs):
- # we prefix the code so we can validate
- code = '%s_%d' % (prefix, number)
- eob = ErrObj(code, e[1])
- setattr(self, e[0], eob)
- setattr(self, code, eob)
- self._code_map[code] = e[0]
-
- def is_valid_class(self, err_code):
- if err_code.beginswith(self._prefix + '_'):
- return True
-
- return False
-
- def code_to_attr(self, code):
- return self._code_map[code]
-
- def attr_to_code(self, attr):
- return self.__getattribute__(attr).code
-
+class ErrEnum(CategoryEnum):
def attr_to_message(self, attr):
- return self.__getattribute__(attr).msg
-
- def get_code(self, attr):
- return self.attr_to_code(attr)
+ return self.attr_to_data(attr)
def get_message(self, attr):
- return self.attr_to_message(attr)
-
- def __call__(self, err_code):
- return self.get_message(err_code)
+ return self.get_data(attr)
login_err = ErrEnum ('login_err',
('USERNAME_PASSWORD_ERROR',
- ('The username or password you entered is not valid. Please '
- 'try again.')
- ),
- ('UNKOWN_AUTH_ERROR',
- ('An unknown error occurred while trying to log you in. '
- 'Please try again later or notify an admin if the problem '
- 'persists')
- )
- )
\ No newline at end of file
+ ('The username or password you entered is not valid. Please '
+ 'try again.')
+ ),
+ ('UNKOWN_AUTH_ERROR',
+ ('An unknown error occurred while trying to log you in. '
+ 'Please try again later or notify an admin if the problem '
+ 'persists')
+ )
+ )
\ No newline at end of file
diff --git a/moksha/lib/helpers.py b/moksha/lib/helpers.py
index b181d20..eef8bf6 100644
--- a/moksha/lib/helpers.py
+++ b/moksha/lib/helpers.py
@@ -674,3 +674,67 @@ def to_unicode(obj, encoding='utf-8'):
if not isinstance(obj, unicode):
obj = unicode(obj, encoding, 'replace')
return obj
+
+class EnumDataObj(dict):
+ def __init__(self, code, data):
+ super(EnumDataObj, self).__init__(code=code, data=data)
+
+ def __getattribute__(self, name):
+ try:
+ return super(EnumDataObj, self).__getattribute__(name)
+ except AttributeError, e:
+ if name in self:
+ return self[name]
+
+ raise e
+
+ def replace_app_header(self, app, header_name):
+ from paste.response import replace_header
+ if app.headers:
+ headers = list(app.headers)
+ else:
+ headers = []
+
+ replace_header(headers, header_name, self.code)
+ app.headers = headers
+
+ def __repr__(self):
+ # act as if the user requested the code
+ return str(self['code'])
+
+class CategoryEnum(object):
+ def __init__(self, prefix, *data):
+ self._prefix = prefix
+ self._code_map = {}
+
+ for number, d in enumerate(data):
+ # we prefix the code so we can validate
+ code = '%s_%d' % (prefix, number)
+ dob = EnumDataObj(code, d[1])
+ setattr(self, d[0], dob)
+ setattr(self, code, dob)
+ self._code_map[code] = d[0]
+
+ def is_valid_class(self, code):
+ if code.beginswith(self._prefix + '_'):
+ return True
+
+ return False
+
+ def code_to_attr(self, code):
+ return self._code_map[code]
+
+ def attr_to_code(self, attr):
+ return self.__getattribute__(attr).code
+
+ def attr_to_data(self, attr):
+ return self.__getattribute__(attr).data
+
+ def get_code(self, attr):
+ return self.attr_to_code(attr)
+
+ def get_data(self, attr):
+ return self.attr_to_data(attr)
+
+ def __call__(self, code):
+ return self.get_data(code)
\ No newline at end of file
15 years, 2 months
2 commits - moksha/public
by John (J5) Palmieri
moksha/public/javascript/ui/moksha.ui.grid.js | 98 ++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
New commits:
commit 2533c08bac8d0ea7dddd4e9f403b1af59b342bd3
Merge: 6190649... 15c8945...
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Mon Mar 30 19:00:13 2009 -0400
Merge branch 'master' of git+ssh://johnp@git.fedorahosted.org/git/moksha
commit 61906499bd23bf8ce17f9338c84b7a6e7c5e51c3
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Mon Mar 30 18:59:44 2009 -0400
add numeric pagination
diff --git a/moksha/public/javascript/ui/moksha.ui.grid.js b/moksha/public/javascript/ui/moksha.ui.grid.js
index 7d1d269..cd12a9a 100644
--- a/moksha/public/javascript/ui/moksha.ui.grid.js
+++ b/moksha/public/javascript/ui/moksha.ui.grid.js
@@ -163,6 +163,11 @@
self.refresh_data(event, search_criteria);
},
+ goto_page: function(page) {
+ this.options.page_num = page;
+ this.request_data_refresh();
+ },
+
request_update: function(search_criteria) {
var self = this;
@@ -195,9 +200,28 @@
var results = function(json) {
self.clear();
+
for (var i in json.rows) {
self.append_row(json.rows[i]);
}
+
+ var tr = json.total_rows;
+ var vr = self.visible_row_count();
+ var sr = json.start_row;
+ var rpp = json.rows_per_page;
+
+ console.log(json);
+ var msg = '';
+ var pager = '';
+ if (vr < tr) {
+ msg = 'Viewing ' + vr.toString() + ' of ' + tr.toString();
+ msg += ' rows.';
+
+ }
+
+ $('.message', self.$pager_bottom_placeholder).html(msg);
+ var pager = self._generate_numerical_pager(tr, sr, rpp);
+ $('.pager', self.$pager_bottom_placeholder).html(pager);
}
var dispatch_data = {}
@@ -314,9 +338,79 @@
self.element.parent().prepend($overlay);
self.$overlay_div = $overlay;
+ var $pager_bottom_placeholder = $('<div></div>').addClass(o.pagerBottomClass);
+ $pager_bottom_placeholder.append($("<span />").addClass('message'));
+ $pager_bottom_placeholder.append($("<span></span>").addClass('pager'));
+ $pager_bottom_placeholder.insertAfter(self.element);
+ self.$pager_bottom_placeholder = $pager_bottom_placeholder;
+
self.request_data_refresh();
},
+ _generate_numerical_pager: function (total_rows, start_row, rows_per_page) {
+ var self = this;
+ var o = self.options;
+ var total_pages = parseInt(total_rows / rows_per_page);
+ if (total_rows != total_pages * rows_per_page)
+ total_pages += 1;
+
+ var curr_page = parseInt((start_row + 0.5) / rows_per_page) + 1;
+
+ var next_page = curr_page + 1;
+
+ var pager = $('<span />');
+ var goto_page = function() {
+ var page_jump = $(this).data('page.moksha_grid');
+ self.goto_page(page_jump);
+ }
+
+ var show_prev = parseInt((o.pagerPageLimit + 0.5) / 2) + 1;
+ var show_next = o.pagerPageLimit - show_prev;
+ var num_next_left = total_pages - curr_page;
+ if (num_next_left < show_next)
+ show_prev += (show_next - num_next_left)
+
+ var page_list = [];
+ var i, j;
+ for (i = curr_page, j = 0; i > 0 && j < show_prev ; i--, j++) {
+ page_list.push(i);
+ }
+
+ page_list.reverse();
+ if (page_list.length < show_prev)
+ show_next += (show_prev - page_list.length)
+
+ for (i = curr_page + 1, j = 0; i <= total_pages && j < show_next ; i++, j++) {
+ page_list.push(i);
+ }
+
+ for (i in page_list) {
+ var page_num = page_list[i];
+ var page = page_num;
+ if (page != curr_page) {
+ page = $('<a href="javascript:void(0)"></a>').html(page_num);
+
+ page.data('page.moksha_grid', page_num);
+ page.click(goto_page);
+ }
+
+ pager.append(" ");
+ pager.append(page);
+ pager.append(" ");
+ }
+
+ if (curr_page < total_pages) {
+ var page = $('<a href="javascript:void(0)"></a>').html('Next');
+
+ page.data('page.moksha_grid', next_page);
+ page.click(goto_page);
+ pager.append(page);
+
+ }
+
+ return(pager);
+ },
+
_generate_table: function() {
var self = this;
var t = $('<table />');
@@ -385,6 +479,10 @@
resource_path: null,
blankRowClass: 'moksha-grid-blank-row',
rowClass: 'moksha-grid-row',
+ moreClass: 'moksha-grid-more',
+ pagerTopClass: 'moksha-grid-pager-top',
+ pagerBottomClass: 'moksha-grid-pager-bottom',
+ pagerPageLimit: 10,
loading_throbber: ["Loading", // list of img urls or text
"Loading.",
"Loading..",
15 years, 2 months
2 commits - moksha/wsgiapp.py
by Luke Macken
moksha/wsgiapp.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
New commits:
commit 15c89459735d09e1441ea1fcff9046cf31385a52
Merge: 29a1234... d55fc66...
Author: Luke Macken <lmacken(a)redhat.com>
Date: Mon Mar 30 11:55:18 2009 -0400
Merge branch 'master' of git+ssh://git.fedorahosted.org/git/moksha
commit 29a123439f91304f179b4dfce4ddd35cbe8c26b6
Author: Luke Macken <lmacken(a)redhat.com>
Date: Mon Mar 30 11:54:42 2009 -0400
Instantiate Moksha's RootController every request, fixing a race condition.
diff --git a/moksha/wsgiapp.py b/moksha/wsgiapp.py
index aa01376..82e6fe9 100644
--- a/moksha/wsgiapp.py
+++ b/moksha/wsgiapp.py
@@ -17,6 +17,7 @@
# Authors: Luke Macken <lmacken(a)redhat.com>
from pylons.wsgiapp import PylonsApp
+from moksha.controllers.root import RootController
class MokshaAppDispatcher(PylonsApp):
""" Moksha WSGI Application Dispatcher.
@@ -29,8 +30,6 @@ class MokshaAppDispatcher(PylonsApp):
def __init__(self):
super(MokshaAppDispatcher, self).__init__()
- from moksha.controllers.root import RootController
- self.root = RootController()
def resolve(self, environ, start_response):
""" Uses dispatching information found in
@@ -40,4 +39,4 @@ class MokshaAppDispatcher(PylonsApp):
"""
environ['pylons.routes_dict'] = environ['wsgiorg.routing_args'][1]
- return self.root
+ return RootController()
15 years, 2 months
moksha/api moksha/public
by John (J5) Palmieri
moksha/api/widgets/containers/templates/layout_applist.mak | 24 +++++----
moksha/public/javascript/moksha.js | 8 +--
moksha/public/javascript/ui/moksha.ui.tabs.js | 32 ++++++++++---
3 files changed, 43 insertions(+), 21 deletions(-)
New commits:
commit d55fc66ca3b700e43a43f1f217b1bdca5076a0ba
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Mon Mar 30 15:04:27 2009 -0400
have all widgets use the new moksha load functions
diff --git a/moksha/api/widgets/containers/templates/layout_applist.mak b/moksha/api/widgets/containers/templates/layout_applist.mak
index 0c7cfd9..4623c85 100644
--- a/moksha/api/widgets/containers/templates/layout_applist.mak
+++ b/moksha/api/widgets/containers/templates/layout_applist.mak
@@ -4,7 +4,7 @@
% if app['label']:
<h3>${app['label']}</h3>
% endif
-
+ <div id="${app['id']}_overlay"><div class="message"></div></div>
<div id="${app['id']}">
% if app.has_key('widget'):
${app['widget'](**app['params'])}
@@ -14,18 +14,20 @@
% if not app.has_key('widget'):
<script type="text/javascript">
<!-- TODO: make this a JS widget -->
- var ajaxOptions = {
- url: moksha.csrf_rewrite_url("${app['url']}"),
- success: function(r, s) {
- var $panel = $("#${app['id']}");
- var $stripped = moksha.filter_resources(r);
- $panel.html($stripped);
- },
- data: ${app['params']}
- };
+ var success = function(r) {
+ var $panel = $("#${app['id']}");
+ var $stripped = moksha.filter_resources(r);
+ $panel.html($stripped);
+ }
- $(document).ready(function () {$.ajax(ajaxOptions)});
+ $(document).ready(function () {
+ moksha.html_load(moksha.csrf_rewrite_url("${app['url']}"),
+ ${app['params']},
+ success,
+ $('#${app["id"]}_overlay')
+ )
+ });
</script>
% endif
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js
index 64d8c18..ef38348 100644
--- a/moksha/public/javascript/moksha.js
+++ b/moksha/public/javascript/moksha.js
@@ -211,15 +211,15 @@ moksha = {
},
json_load: function(path, params, callback, $overlay_div) {
- moksha.ajax_load(path, params, callback, $overlay_div, 'json')
+ return 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')
+ return 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')
+ return moksha.ajax_load(path, params, callback, $overlay_div, 'html')
},
ajax_load: function(path, params, callback, $overlay_div, data_type) {
@@ -260,7 +260,7 @@ moksha = {
'dataType': data_type
}
- $.ajax(o);
+ return $.ajax(o);
}
}
diff --git a/moksha/public/javascript/ui/moksha.ui.tabs.js b/moksha/public/javascript/ui/moksha.ui.tabs.js
index cbfe5e5..8497396 100644
--- a/moksha/public/javascript/ui/moksha.ui.tabs.js
+++ b/moksha/public/javascript/ui/moksha.ui.tabs.js
@@ -68,6 +68,29 @@ $.widget("ui.mokshatabs", {
self.path_remainder = '';
+ 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();
+
+ if (typeof(self.$panels[0]) != 'undefined')
+ $overlay.insertBefore(self.$panels[0]);
+ else
+ $overlay.insertAfter(self.element);
+
+ }
+
+
+ self.$overlay_div = $overlay;
+
this.$tabs.each(function(i, a) {
// inline tab
if (a.hash && a.hash.replace('#', '')) // Safari 2 reports '#' for an empty hash
@@ -540,9 +563,7 @@ $.widget("ui.mokshatabs", {
//if (o.passPathRemainder)
// url += self.path_remainder;
- var ajaxOptions = $.extend({}, o.ajaxOptions, {
- url: moksha.csrf_rewrite_url(url),
- success: function(r, s) {
+ var success_cb = function(r, s) {
var $panel = $(a.hash + ':first', self.element);
var $stripped = moksha.filter_resources(r);
@@ -556,14 +577,13 @@ $.widget("ui.mokshatabs", {
$(self.element).triggerHandler('tabsload',
[self.fakeEvent('tabsload'), self.ui(self.$tabs[index], self.$panels[index])], o.load
);
- o.ajaxOptions.success && o.ajaxOptions.success($temp, s);
// This callback is required because the switch has to take
// place after loading has completed. Call last in order to
// fire load before show callback...
callback();
}
- });
+
if (this.xhr) {
// terminate pending requests from other tabs and restore tab label
this.xhr.abort();
@@ -571,7 +591,7 @@ $.widget("ui.mokshatabs", {
}
$a.addClass(o.loadingClass);
setTimeout(function() { // timeout is again required in IE, "wait" for id being restored
- self.xhr = $.ajax(ajaxOptions);
+ self.xhr = moksha.html_load(moksha.csrf_rewrite_url(url), {}, success_cb, this.$overlay_div)
}, 0);
},
15 years, 2 months
2 commits - moksha/public
by John (J5) Palmieri
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(a)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(a)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();
},
15 years, 2 months
normal-reqs.txt
by Luke Macken
normal-reqs.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit a85b06fba9ec8df30fb41918c53e9c9f44093edf
Author: Luke Macken <lmacken(a)redhat.com>
Date: Sun Mar 29 22:20:14 2009 -0400
Require 0.9.4 of ToscaWidgets since 0.9.5dev in the TG2 index
is somehow older than 0.9.4...
diff --git a/normal-reqs.txt b/normal-reqs.txt
index 89b0f04..224f063 100644
--- a/normal-reqs.txt
+++ b/normal-reqs.txt
@@ -21,7 +21,7 @@ Sphinx
SymbolType
Tempita
## FIXME: could not find svn URL in dependency_links for this package:
-ToscaWidgets
+ToscaWidgets==0.9.4
TurboGears2
TurboJson
Twisted
15 years, 2 months
moksha/public
by John (J5) Palmieri
moksha/public/javascript/moksha.js | 3 +++
1 file changed, 3 insertions(+)
New commits:
commit 0a32b231b2635031ddac322c9c2ff04aff27fdf6
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Sat Mar 28 14:48:01 2009 -0400
make params an empty dict if none was passed in
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js
index bde0601..c1f162c 100644
--- a/moksha/public/javascript/moksha.js
+++ b/moksha/public/javascript/moksha.js
@@ -97,6 +97,9 @@ moksha = {
csrf_rewrite_url: function(url, params) {
var ourl = moksha.parseUri(url);
+ if (typeof(params) == 'undefined')
+ params = {};
+
if (typeof(moksha_csrf_token) != 'undefined' && moksha_csrf_token)
params['_csrf_token'] = moksha_csrf_token;
15 years, 2 months
moksha/api moksha/public
by John (J5) Palmieri
moksha/api/widgets/containers/dashboardcontainer.py | 5 +++++
moksha/public/javascript/ui/moksha.ui.tabs.js | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
New commits:
commit c6c9444b12d6a083920eb70b3a3729905c4a5fdb
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Sat Mar 28 13:28:17 2009 -0400
fix some issues
* Don't assume 2 level navigation in tab widget
* throw error if we don't find a requested category - this makes it easier to debug
typos
diff --git a/moksha/api/widgets/containers/dashboardcontainer.py b/moksha/api/widgets/containers/dashboardcontainer.py
index 62df5c3..101f9fb 100644
--- a/moksha/api/widgets/containers/dashboardcontainer.py
+++ b/moksha/api/widgets/containers/dashboardcontainer.py
@@ -16,11 +16,16 @@ class AppListWidget(Widget):
# we want to error out if there is no category
c = d['category']
if isinstance(c, basestring):
+ found = False
for cat in d['layout']:
if cat['label'] == c:
d['category'] = cat
+ found = True
break
+ if not found:
+ raise IndexError('Category "%s" not found in layout' % c)
+
applist_widget = AppListWidget('applist');
class DashboardContainer(Widget):
diff --git a/moksha/public/javascript/ui/moksha.ui.tabs.js b/moksha/public/javascript/ui/moksha.ui.tabs.js
index 28fc1a5..cbfe5e5 100644
--- a/moksha/public/javascript/ui/moksha.ui.tabs.js
+++ b/moksha/public/javascript/ui/moksha.ui.tabs.js
@@ -537,8 +537,8 @@ $.widget("ui.mokshatabs", {
.find('em').data('label.tabs', label).html(o.spinner);
}
- if (o.passPathRemainder)
- url += self.path_remainder;
+ //if (o.passPathRemainder)
+ // url += self.path_remainder;
var ajaxOptions = $.extend({}, o.ajaxOptions, {
url: moksha.csrf_rewrite_url(url),
15 years, 2 months