forked from rc/aircox
on_air
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
from django.template.loader import render_to_string
|
||||
from django.http import HttpResponse
|
||||
from django.conf.urls import url
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.text import slugify
|
||||
@ -73,7 +74,7 @@ def part(view, name = None, pattern = None):
|
||||
view_.url = url
|
||||
return view_
|
||||
|
||||
def template(template_name):
|
||||
def template(name):
|
||||
"""
|
||||
the decorated function returns a context that is used to
|
||||
render a template value.
|
||||
@ -84,10 +85,10 @@ def template(template_name):
|
||||
def wrapper(func):
|
||||
def view_(cl, request, *args, **kwargs):
|
||||
context = func(cl, request, *args, **kwargs)
|
||||
if not context and hide_empty:
|
||||
if not context:
|
||||
return ''
|
||||
context['embed'] = True
|
||||
return render_to_string(template_name, context, request=request)
|
||||
return render_to_string(name, context, request=request)
|
||||
view_.__name__ = func.__name__
|
||||
return view_
|
||||
return wrapper
|
||||
|
@ -24,6 +24,9 @@ Part_.prototype = {
|
||||
|
||||
/// parse request result and save in this.stanza
|
||||
__parse_dom: function() {
|
||||
if(self.stanza)
|
||||
return;
|
||||
|
||||
var doc = document.implementation.createHTMLDocument('xhr').documentElement;
|
||||
doc.innerHTML = this.xhr.responseText;
|
||||
this.stanza = doc;
|
||||
@ -61,9 +64,10 @@ Part_.prototype = {
|
||||
return this;
|
||||
},
|
||||
|
||||
// set selectors. if callback is set, call this callback
|
||||
// once data are retrieved with an object of
|
||||
// `selector_name: select_result`
|
||||
// set selectors.
|
||||
// * callback: if set, call it once data are downloaded with an object
|
||||
// of elements matched with the given selectors only. The object is
|
||||
// made of `selector_name: select_result` items.
|
||||
select: function(selectors, callback = undefined) {
|
||||
for(var i in selectors) {
|
||||
selector = selectors[i];
|
||||
@ -71,15 +75,19 @@ Part_.prototype = {
|
||||
selector = [selector]
|
||||
|
||||
selector = new Part_.Selector(i, selector[0], selector[1], selector[2])
|
||||
selectors[i] = selector;
|
||||
this.selectors.push(selector)
|
||||
}
|
||||
|
||||
if(callback) {
|
||||
var self = this;
|
||||
this.actions.push(function() {
|
||||
self.__parse_dom();
|
||||
|
||||
var r = {}
|
||||
for(var i in self.selectors)
|
||||
r[i] = self.selectors[i].select(self.stanza);
|
||||
for(var i in selectors) {
|
||||
r[i] = selectors[i].select(self.stanza);
|
||||
}
|
||||
callback(r);
|
||||
});
|
||||
}
|
||||
@ -90,8 +98,7 @@ Part_.prototype = {
|
||||
map: function(dest) {
|
||||
var self = this;
|
||||
this.actions.push(function() {
|
||||
if(!self.stanza)
|
||||
self.__parse_dom();
|
||||
self.__parse_dom();
|
||||
|
||||
for(var i = 0; i < self.selectors.length; i++) {
|
||||
selector = self.selectors[i]
|
||||
@ -119,9 +126,7 @@ Part_.Selector = function(name, selector, attribute = null, all = false) {
|
||||
Part_.Selector.prototype = {
|
||||
select: function(obj, use_attr = true) {
|
||||
if(!this.all) {
|
||||
obj = obj.querySelectorAll(this.selector)
|
||||
if(obj)
|
||||
obj = obj[0];
|
||||
obj = obj.querySelector(this.selector)
|
||||
return (this.attribute && use_attr && obj) ? obj[this.attribute] : obj;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user