buttons, testing, etc
This commit is contained in:
parent
7dcb0a3eaa
commit
dc42c90e2d
|
@ -93,6 +93,21 @@ def api_error(request):
|
||||||
success = error_is_success
|
success = error_is_success
|
||||||
return render_to_json_response({})
|
return render_to_json_response({})
|
||||||
|
|
||||||
|
|
||||||
|
def api_find(request):
|
||||||
|
data = json.loads(request.POST['data'])
|
||||||
|
print json.dumps(data)
|
||||||
|
module = __import__(data['module'])
|
||||||
|
model = module.models.__getattribute__(data['model'])
|
||||||
|
response = json_response({})
|
||||||
|
l = model.get_list(data)
|
||||||
|
if data.has_key('range'):
|
||||||
|
response['data']['items'] = l
|
||||||
|
else:
|
||||||
|
response['data']['items'] = len(l)
|
||||||
|
response['status'] = {'code': 200}
|
||||||
|
return render_to_json_response(response)
|
||||||
|
|
||||||
def get_api_doc(f):
|
def get_api_doc(f):
|
||||||
f = 'api_' + f
|
f = 'api_' + f
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,109 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
import operator
|
||||||
|
from django.db.models import Q
|
||||||
|
from ox.text import smartSplit
|
||||||
|
from django.core.paginator import Paginator, InvalidPage, EmptyPage
|
||||||
|
|
||||||
|
def splitSearch(string):
|
||||||
|
ret = []
|
||||||
|
for s in smartSplit(string):
|
||||||
|
word = s.replace("'", "").replace('"', '')
|
||||||
|
ret.append(word)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
class ItfModel(models.Model):
|
||||||
|
fts_fields = []
|
||||||
|
fk_filters = []
|
||||||
|
sort_fields = []
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
def list_dict(self):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def info_dict(self):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def fts(kls, qset, search):
|
||||||
|
terms = splitSearch(search)
|
||||||
|
qobjects = []
|
||||||
|
for t in terms:
|
||||||
|
for f in kls.fts_fields:
|
||||||
|
qstring = f + '__icontains'
|
||||||
|
qobject = Q(**{qstring:t})
|
||||||
|
qobjects.append(qobject)
|
||||||
|
return qset.filter(reduce(operator.or_, qobjects))
|
||||||
|
|
||||||
|
'''
|
||||||
|
eg. fks = {
|
||||||
|
'somefield': [1, 5, 7],
|
||||||
|
'someotherfield': [3]
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
@classmethod
|
||||||
|
def filter_by_fks(kls, qset, fks):
|
||||||
|
qobjects = []
|
||||||
|
for key in fks.keys():
|
||||||
|
field = getField(kls._meta.fields, key)
|
||||||
|
if field:
|
||||||
|
# rel_class = field.related.parent_model
|
||||||
|
for i in fks[key]:
|
||||||
|
qobject = Q(**{field.name: i})
|
||||||
|
qobjects.append(qobject)
|
||||||
|
return qset.filter(reduce(operator.or_, qobjects))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_fk_objects(kls):
|
||||||
|
ret = {}
|
||||||
|
for f in kls.fk_filters:
|
||||||
|
ret[f] = []
|
||||||
|
field = getField(kls._meta.fields, f)
|
||||||
|
rel_class = field.related.parent_model
|
||||||
|
for o in rel_class.objects.all():
|
||||||
|
ret[f].append({
|
||||||
|
'id': o.id,
|
||||||
|
'title': unicode(o)
|
||||||
|
})
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_list(kls, data):
|
||||||
|
options = {
|
||||||
|
'page_no': 1,
|
||||||
|
'list_size': 8,
|
||||||
|
'search': '',
|
||||||
|
'sort': []
|
||||||
|
}
|
||||||
|
options.update(data)
|
||||||
|
ret = []
|
||||||
|
page_no = options['page_no']
|
||||||
|
list_size = options['list_size']
|
||||||
|
qset = kls.objects.all()
|
||||||
|
|
||||||
|
search = options['search']
|
||||||
|
if search != '':
|
||||||
|
qset = kls.fts(qset, search)
|
||||||
|
|
||||||
|
sort = options['sort']
|
||||||
|
if sort != []:
|
||||||
|
qset = qset.order_by(sort[0]) #FIXME: Do Sort!
|
||||||
|
|
||||||
|
paginator = Paginator(qset, list_size)
|
||||||
|
try:
|
||||||
|
results = paginator.page(page_no)
|
||||||
|
except (EmptyPage, InvalidPage):
|
||||||
|
results = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
|
for r in results.object_list:
|
||||||
|
ret.append(r.list_dict())
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def getField(fields, name):
|
||||||
|
for f in fields:
|
||||||
|
if f.name == name:
|
||||||
|
return f
|
||||||
|
return False
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from tagging.fields import TagField
|
from tagging.fields import TagField
|
||||||
|
from django.core.paginator import Paginator, InvalidPage, EmptyPage
|
||||||
|
from app.models import ItfModel
|
||||||
|
|
||||||
class BestPractice(models.Model):
|
class BestPractice(ItfModel):
|
||||||
title = models.CharField(max_length=512)
|
title = models.CharField(max_length=512)
|
||||||
story = models.TextField()
|
story = models.TextField()
|
||||||
guideline = models.TextField(blank=True)
|
guideline = models.TextField(blank=True)
|
||||||
|
@ -11,9 +13,33 @@ class BestPractice(models.Model):
|
||||||
tags = TagField(blank=True, help_text="Enter as many tags as you like, separated by commas.")
|
tags = TagField(blank=True, help_text="Enter as many tags as you like, separated by commas.")
|
||||||
category = models.ForeignKey("BestPracticeCategory")
|
category = models.ForeignKey("BestPracticeCategory")
|
||||||
|
|
||||||
|
fts_fields = ['title', 'story', 'guideline', 'law', 'theatre', 'quick_howto']
|
||||||
|
fk_filters = ['category']
|
||||||
|
sort_fields = ['title']
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
|
def info_dict(self):
|
||||||
|
return {
|
||||||
|
'title': self.title,
|
||||||
|
'story': self.story,
|
||||||
|
'guideline': self.guideline,
|
||||||
|
'law': self.law,
|
||||||
|
'theatre': self.theatre,
|
||||||
|
'quick_howto': self.quick_howto,
|
||||||
|
'category': self.category.name,
|
||||||
|
'category_id': self.category.id
|
||||||
|
}
|
||||||
|
|
||||||
|
def list_dict(self):
|
||||||
|
return {
|
||||||
|
'id': self.id,
|
||||||
|
'title': self.title,
|
||||||
|
'category': self.category.name,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class BestPracticeCategory(models.Model):
|
class BestPracticeCategory(models.Model):
|
||||||
name = models.CharField(max_length=256)
|
name = models.CharField(max_length=256)
|
||||||
description = models.TextField(blank=True)
|
description = models.TextField(blank=True)
|
||||||
|
|
|
@ -2,6 +2,7 @@ from django.db import models
|
||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
from ckeditor.fields import RichTextField
|
from ckeditor.fields import RichTextField
|
||||||
|
from app.models import ItfModel
|
||||||
|
|
||||||
class Comment(models.Model):
|
class Comment(models.Model):
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
@ -30,10 +31,11 @@ class CommentCaptcha(models.Model):
|
||||||
# class CommentVote(models.Model):
|
# class CommentVote(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Meeting(models.Model):
|
class Meeting(ItfModel):
|
||||||
title = models.CharField(max_length=255)
|
title = models.CharField(max_length=255)
|
||||||
intro = models.TextField(blank=True, null=True)
|
intro = models.TextField(blank=True, null=True)
|
||||||
slug = models.SlugField()
|
slug = models.SlugField()
|
||||||
|
fts_fields = ['title', 'intro']
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from tagging.fields import TagField
|
from tagging.fields import TagField
|
||||||
|
from django.core.paginator import Paginator, InvalidPage, EmptyPage
|
||||||
|
from app.models import ItfModel
|
||||||
|
|
||||||
GENRES = (
|
GENRES = (
|
||||||
('Fiction', 'Fiction'),
|
('Fiction', 'Fiction'),
|
||||||
|
@ -14,7 +16,7 @@ LANGUAGE_CHOICES = (
|
||||||
('be', 'Bengali'),
|
('be', 'Bengali'),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Script(models.Model):
|
class Script(ItfModel):
|
||||||
user = models.ForeignKey(User)
|
user = models.ForeignKey(User)
|
||||||
title = models.CharField(max_length=255)
|
title = models.CharField(max_length=255)
|
||||||
synopsis = models.TextField(blank=True)
|
synopsis = models.TextField(blank=True)
|
||||||
|
@ -30,10 +32,45 @@ class Script(models.Model):
|
||||||
script = models.FileField(null=True, upload_to='upload/scripts/')
|
script = models.FileField(null=True, upload_to='upload/scripts/')
|
||||||
license_adapt = models.ForeignKey("LicensePerform", help_text="License for adaptation rights")
|
license_adapt = models.ForeignKey("LicensePerform", help_text="License for adaptation rights")
|
||||||
license_perform = models.ForeignKey("LicenseAdapt", help_text="License for performance rights")
|
license_perform = models.ForeignKey("LicenseAdapt", help_text="License for performance rights")
|
||||||
|
fts_fields = ['title', 'synopsis', 'author']
|
||||||
|
fk_fields = ['license_adapt', 'license_perform']
|
||||||
|
|
||||||
|
#Meta
|
||||||
|
added = models.DateTimeField(auto_now_add=True)
|
||||||
|
modified = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
|
'''
|
||||||
|
@classmethod
|
||||||
|
def get_list(kls, data):
|
||||||
|
options = {
|
||||||
|
'page_no': 1,
|
||||||
|
'list_size': 8
|
||||||
|
}
|
||||||
|
options.update(data)
|
||||||
|
l = []
|
||||||
|
page_no = options['page_no']
|
||||||
|
list_size = options['list_size']
|
||||||
|
qset = kls.objects.all()
|
||||||
|
|
||||||
|
paginator = Paginator(qset, list_size)
|
||||||
|
try:
|
||||||
|
results = paginator.page(page_no)
|
||||||
|
except (EmptyPage, InvalidPage):
|
||||||
|
results = paginator.page(paginator.num_pages)
|
||||||
|
for r in results.object_list:
|
||||||
|
l.append({
|
||||||
|
'id': r.id,
|
||||||
|
'title': r.title
|
||||||
|
})
|
||||||
|
return l
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class License(models.Model):
|
class License(models.Model):
|
||||||
letter = models.CharField(max_length=2)
|
letter = models.CharField(max_length=2)
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
|
|
@ -20,6 +20,8 @@ PROJECT_ROOT = PROJECT_PATH
|
||||||
CKEDITOR_MEDIA_PREFIX = "/static/ckeditor/"
|
CKEDITOR_MEDIA_PREFIX = "/static/ckeditor/"
|
||||||
CKEDITOR_UPLOAD_PATH = join(PROJECT_PATH, "static/upload/images/")
|
CKEDITOR_UPLOAD_PATH = join(PROJECT_PATH, "static/upload/images/")
|
||||||
|
|
||||||
|
AUTH_PROFILE_MODULE = "profiles.Person"
|
||||||
|
|
||||||
ADMINS = (
|
ADMINS = (
|
||||||
# ('Your Name', 'your_email@domain.com'),
|
# ('Your Name', 'your_email@domain.com'),
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
var ITF = {};
|
||||||
|
|
||||||
var app = new Ox.App({
|
var app = new Ox.App({
|
||||||
apiURL: '/api/',
|
apiURL: '/api/',
|
||||||
|
@ -53,6 +53,143 @@ app.launch(function(data) {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.Query = (function() {
|
||||||
|
|
||||||
|
function constructFind(query) {
|
||||||
|
Ox.print('cF', query)
|
||||||
|
return /*encodeURI(*/$.map(query.conditions, function(v, i) {
|
||||||
|
if (!Ox.isUndefined(v.conditions)) {
|
||||||
|
return '[' + constructFind(v) + ']';
|
||||||
|
} else {
|
||||||
|
return v.value !== '' ? v.key + (v.key ? ':' : '') + constructValue(v.value, v.operator) : null;
|
||||||
|
}
|
||||||
|
}).join(query.operator)/*)*/;
|
||||||
|
}
|
||||||
|
|
||||||
|
function constructValue(value, operator) {
|
||||||
|
operator = operator.replace('=', '^$');
|
||||||
|
if (operator.indexOf('$') > -1) {
|
||||||
|
value = operator.substr(0, operator.length - 1) + value + '$'
|
||||||
|
} else {
|
||||||
|
value = operator + value;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mergeFind() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseFind(str) {
|
||||||
|
var find = {
|
||||||
|
conditions: [],
|
||||||
|
operator: ''
|
||||||
|
},
|
||||||
|
subconditions = str.match(/\[.*?\]/g) || [];
|
||||||
|
$.each(subconditions, function(i, v) {
|
||||||
|
subconditions[i] = v.substr(1, v.length - 2);
|
||||||
|
str = str.replace(v, '[' + i + ']');
|
||||||
|
});
|
||||||
|
if (str.indexOf(',') > -1) {
|
||||||
|
find.operator = '&';
|
||||||
|
} else if (str.indexOf('|') > -1) {
|
||||||
|
find.operator = '|';
|
||||||
|
}
|
||||||
|
Ox.print('pF', str, find.operator)
|
||||||
|
find.conditions = $.map(find.operator === '' ? [str] : str.split(find.operator == '&' ? ',' : '|'), function(v, i) {
|
||||||
|
Ox.print('v', v)
|
||||||
|
var ret, kv;
|
||||||
|
if (v[0] == '[') {
|
||||||
|
Ox.print('recursion', subconditions)
|
||||||
|
ret = parseFind(subconditions[parseInt(v.substr(1, v.length - 2))]);
|
||||||
|
} else {
|
||||||
|
kv = ((v.indexOf(':') > - 1 ? '' : ':') + v).split(':');
|
||||||
|
ret = $.extend({
|
||||||
|
key: kv[0]
|
||||||
|
}, parseValue(kv[1]));
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
});
|
||||||
|
return find;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseValue(str) {
|
||||||
|
var value = {
|
||||||
|
value: decodeURI(str),
|
||||||
|
operator: ''
|
||||||
|
};
|
||||||
|
if (value.value[0] == '!') {
|
||||||
|
value.operator = '!'
|
||||||
|
value.value = value.value.substr(1);
|
||||||
|
}
|
||||||
|
if ('^<>'.indexOf(value.value[0]) > -1) {
|
||||||
|
value.operator += value.value[0];
|
||||||
|
value.value = value.value.substr(1);
|
||||||
|
}
|
||||||
|
if (value.value.substr(-1) == '$') {
|
||||||
|
value.operator += '$';
|
||||||
|
value.value = value.value.substr(0, value.value.length - 1);
|
||||||
|
}
|
||||||
|
value.operator = value.operator.replace('^$', '=');
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
|
||||||
|
fromString: function(str) {
|
||||||
|
var query = Ox.unserialize(str),
|
||||||
|
sort = [];
|
||||||
|
if ('find' in query) {
|
||||||
|
app.user.ui.findQuery = parseFind(query.find);
|
||||||
|
Ox.print('user.ui.findQuery', app.user.ui.findQuery)
|
||||||
|
}
|
||||||
|
if ('sort' in query) {
|
||||||
|
sort = query.sort.split(',')
|
||||||
|
app.user.ui.sort = $.map(query.sort.split(','), function(v, i) {
|
||||||
|
var hasOperator = '+-'.indexOf(v[0]) > -1,
|
||||||
|
key = hasOperator ? query.sort.substr(1) : query.sort,
|
||||||
|
operator = hasOperator ? v[0].replace('+', '') : Ox.getObjectById(app.config.sortKeys, key).operator;
|
||||||
|
return {
|
||||||
|
key: key,
|
||||||
|
operator: operator
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ('view' in query) {
|
||||||
|
app.user.ui.listView = query.view;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
toObject: function(groupId) {
|
||||||
|
Ox.print('tO', app.user.ui.findQuery.conditions)
|
||||||
|
// the inner $.merge() creates a clone
|
||||||
|
var conditions = $.merge($.merge([], app.user.ui.listQuery.conditions), app.user.ui.findQuery.conditions);
|
||||||
|
$.merge(conditions, app.ui.groups ? $.map(app.ui.groups, function(v, i) {
|
||||||
|
if (v.id != groupId && v.query.conditions.length) {
|
||||||
|
return v.query.conditions.length == 1 ?
|
||||||
|
v.query.conditions : v.query;
|
||||||
|
}
|
||||||
|
}) : []),
|
||||||
|
operator = conditions.length < 2 ? '' : ','; // fixme: should be &
|
||||||
|
Ox.print('>>', groupId, app.user.ui.find, conditions);
|
||||||
|
return {
|
||||||
|
conditions: conditions,
|
||||||
|
operator: operator
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
toString: function() {
|
||||||
|
Ox.print('tS', app.user.ui.find)
|
||||||
|
return Ox.serialize({
|
||||||
|
find: constructFind(app.Query.toObject()),
|
||||||
|
sort: app.user.ui.sort[0].operator + app.user.ui.sort[0].key,
|
||||||
|
view: app.user.ui.listView
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
|
||||||
app.construct = {
|
app.construct = {
|
||||||
/*
|
/*
|
||||||
|
@ -148,6 +285,10 @@ BEGIN headerPanel
|
||||||
i.bindEvent("submit", function(val) {
|
i.bindEvent("submit", function(val) {
|
||||||
Ox.print("Should be doing a search");
|
Ox.print("Should be doing a search");
|
||||||
});
|
});
|
||||||
|
i.css({
|
||||||
|
'marginRight': '15px',
|
||||||
|
'marginTop': '6px'
|
||||||
|
});
|
||||||
return i;
|
return i;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -215,10 +356,16 @@ BEGIN mainPanel
|
||||||
var id = 'cityPicker';
|
var id = 'cityPicker';
|
||||||
var i = app.$ui[id] = new Ox.Input({
|
var i = app.$ui[id] = new Ox.Input({
|
||||||
id: id,
|
id: id,
|
||||||
placeholder: 'Chose Your City'
|
placeholder: 'Chose Your City',
|
||||||
|
autocomplete: ['Mumbai', 'Gurgaon', 'Agra', 'Delhi', 'Bangalore', 'Calcutta', 'Hyderabad'],
|
||||||
|
autocompleteSelect: true,
|
||||||
|
autocompleteSelectHighlight: true,
|
||||||
|
autocompleteSelectSubmit: true,
|
||||||
|
autocompleteReplaceCorrect: true
|
||||||
});
|
});
|
||||||
i.submit(function(val) {
|
i.bindEvent("submit", function(event, data) {
|
||||||
Ox.Print("should handle submit of city name");
|
Ox.print(data);
|
||||||
|
// alert(data.value);
|
||||||
});
|
});
|
||||||
return i;
|
return i;
|
||||||
},
|
},
|
||||||
|
@ -303,7 +450,7 @@ BEGIN mainPanel
|
||||||
|
|
||||||
'newsfeedBox': function() {
|
'newsfeedBox': function() {
|
||||||
var id = 'newsfeedBox';
|
var id = 'newsfeedBox';
|
||||||
var c = app.$ui[id] = new Ox.ItfBox({
|
var c = app.$ui[id] = new Ox.Container({
|
||||||
id: id,
|
id: id,
|
||||||
title: 'ITF NewsFeed'
|
title: 'ITF NewsFeed'
|
||||||
});
|
});
|
||||||
|
@ -372,20 +519,26 @@ BEGIN mainPanel
|
||||||
},
|
},
|
||||||
|
|
||||||
'scriptArchiveBox': function() {
|
'scriptArchiveBox': function() {
|
||||||
var id = 'scriptArchiveBox';
|
var id = 'scriptbankBox';
|
||||||
var c = app.$ui[id] = new Ox.Container({
|
var c = app.$ui[id] = new Ox.ItfBox({
|
||||||
id: id
|
'id': id,
|
||||||
|
'title': 'Script Bank',
|
||||||
|
'module': 'scriptbank',
|
||||||
|
'model': 'Script'
|
||||||
});
|
});
|
||||||
c.$content.html("script archive goes here");
|
// c.$content.html("script archive goes here");
|
||||||
return c;
|
return c;
|
||||||
},
|
},
|
||||||
|
|
||||||
'bestPracticesBox': function() {
|
'bestPracticesBox': function() {
|
||||||
var id = 'bestPracticesBox';
|
var id = 'bestpracticesBox';
|
||||||
var c = app.$ui[id] = new Ox.Container({
|
var c = app.$ui[id] = new Ox.ItfBox({
|
||||||
id: id
|
'id': id,
|
||||||
|
'title': 'Best Practices',
|
||||||
|
'module': 'bestpractices',
|
||||||
|
'model': 'BestPractice'
|
||||||
});
|
});
|
||||||
c.$content.html("best practices goes here");
|
// c.$content.html("best practices goes here");
|
||||||
return c;
|
return c;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -534,33 +687,82 @@ Ox.ItfBox = function(options, self) {
|
||||||
var title = self.options.title;
|
var title = self.options.title;
|
||||||
var $titlebar = new Ox.Bar({
|
var $titlebar = new Ox.Bar({
|
||||||
orientation: 'horizontal',
|
orientation: 'horizontal',
|
||||||
size: 16
|
size: 18
|
||||||
})
|
})
|
||||||
// .dblclick(dblclickTitlebar)
|
// .dblclick(dblclickTitlebar)
|
||||||
.appendTo(that),
|
.appendTo(that);
|
||||||
|
|
||||||
/*
|
|
||||||
$switch = new Ox.Button({
|
var $title = new Ox.Element()
|
||||||
id: options.id + 'Switch',
|
|
||||||
style: 'symbol',
|
|
||||||
title: title,
|
|
||||||
type: 'image',
|
|
||||||
})
|
|
||||||
// .click(toggleCollapsed)
|
|
||||||
.appendTo($titlebar),
|
|
||||||
*/
|
|
||||||
$title = new Ox.Element()
|
|
||||||
.addClass('OxTitle')
|
.addClass('OxTitle')
|
||||||
.html(title/*.toUpperCase()*/)
|
.html(title/*.toUpperCase()*/)
|
||||||
.appendTo($titlebar);
|
.appendTo($titlebar);
|
||||||
|
|
||||||
|
var $search = new Ox.Input({
|
||||||
|
'placeholder': 'Search',
|
||||||
|
})
|
||||||
|
.css({'width': '128px', 'marginLeft': 'auto', 'marginRight': 'auto'})
|
||||||
|
.appendTo(that)
|
||||||
|
.hide();
|
||||||
|
|
||||||
|
var $switch = new Ox.Button({
|
||||||
|
id: options.id + 'Switch',
|
||||||
|
style: 'symbol',
|
||||||
|
title: 'collapse',
|
||||||
|
type: 'image',
|
||||||
|
tooltip: 'Search'
|
||||||
|
})
|
||||||
|
.css({'position': 'absolute', 'top': '1px', 'right': '1px', 'marginLeft': '6px'})
|
||||||
|
.bindEvent("click", function() {
|
||||||
|
// alert("foo");
|
||||||
|
// $search.slideDown();
|
||||||
|
$search.is(":visible") ? $search.slideUp() : $search.slideDown();
|
||||||
|
})
|
||||||
|
.appendTo($title);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var $list = new Ox.ItfList({
|
||||||
|
'width': 256,
|
||||||
|
'itemWidth': 256,
|
||||||
|
'orientation': 'horizontal',
|
||||||
|
'request': function(data, callback) {
|
||||||
|
// var queryParams = $.extend(data, {'model': options.id, 'query': app.Query.toObject()});
|
||||||
|
var queryParams = $.extend(data, {'model': options.model, 'module': options.module, 'query': {}});
|
||||||
|
// alert(JSON.stringify(queryParams));
|
||||||
|
return app.api.find(queryParams, callback)
|
||||||
|
},
|
||||||
|
'id': options.id + 'List',
|
||||||
|
'construct': function(data) {
|
||||||
|
var $a = $('<a />').attr("href", "/" + options.module.toLowerCase() + "/" + data.id).text(data.title);
|
||||||
|
var $item = $('<div />').addClass('OxTarget').append($a);
|
||||||
|
return $item;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.appendTo(that);
|
||||||
|
|
||||||
|
|
||||||
// $buttons = new Ox.
|
// $buttons = new Ox.
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ox.ItfList = function(options, self) {
|
||||||
|
var self = self || {};
|
||||||
|
var that = new Ox.List(options, self);
|
||||||
|
return that;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ox.ItfCalendar = function(options, self) {
|
||||||
|
var self = self || {};
|
||||||
|
var that = new Ox.Element(options, self);
|
||||||
|
var $titleBar = new Ox.Bar({
|
||||||
|
'size': 'small'
|
||||||
|
}).addClass('OxTitleBar').appendTo(that);
|
||||||
|
var $title = new Ox.Element().html("Calendar").appendTo($titleBar);
|
||||||
|
return that;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ITF.templates = {};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ if(typeof(console)=='undefined') {
|
||||||
<script type="text/javascript" src="/static/oxjs/build/js/ox.load.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/js/ox.load.js"></script>
|
||||||
<script type="text/javascript" src="/static/oxjs/build/js/ox.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/js/ox.js"></script>
|
||||||
<script type="text/javascript" src="/static/oxjs/build/js/ox.ui.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/js/ox.ui.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/itf.js"></script>
|
<script type="text/javascript" src="/static/js/itf/itf.js"></script>
|
||||||
|
<script type="text/javascript" src="/static/js/bookmyshow.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body></body>
|
<body></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user