temporary fix for parseKeyboard bug
This commit is contained in:
parent
9eb96ea54c
commit
4363c8dac1
3 changed files with 198 additions and 136 deletions
|
@ -182,6 +182,28 @@ Ox.filter = function(arr, fn) {
|
|||
return ret;
|
||||
};
|
||||
|
||||
Ox.getObjectById = function(arr, id) {
|
||||
var ret = null;
|
||||
Ox.each(arr, function(i, v) {
|
||||
if (v.id == id) {
|
||||
ret = v;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
};
|
||||
|
||||
Ox.getPositionById = function(arr, id) {
|
||||
var ret = -1;
|
||||
Ox.each(arr, function(i, v) {
|
||||
if (v.id == id) {
|
||||
ret = i;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
};
|
||||
|
||||
Ox.keys = function(obj) {
|
||||
/*
|
||||
>>> Ox.keys({"a": 1, "b": 2, "c": 3})
|
||||
|
@ -321,7 +343,7 @@ Ox.shuffle = function(arr) {
|
|||
|
||||
Ox.some = function(obj, fn) {
|
||||
/*
|
||||
Ox.some() forks for arrays, objects and strings, unlike [].some()
|
||||
Ox.some() works for arrays, objects and strings, unlike [].some()
|
||||
>>> Ox.some([2, 1, 0], function(i, v) { return i == v; })
|
||||
true
|
||||
>>> Ox.some({a: 1, b: 2, c: 3}, function(v) { return v == 1; })
|
||||
|
|
|
@ -212,6 +212,10 @@ requires
|
|||
}
|
||||
return {
|
||||
bind: function(id, event, callback) {
|
||||
if (arguments.length == 2) {
|
||||
callback = event;
|
||||
event = id;
|
||||
}
|
||||
if (isKeyboardEvent(event)) {
|
||||
keyboardEvents[id] = keyboardEvents[id] || {};
|
||||
keyboardEvents[id][event] = callback;
|
||||
|
@ -2849,7 +2853,7 @@ requires
|
|||
self.$items[pos].appendTo(self.$pages[page]);
|
||||
});
|
||||
if (self.options.type == "text" && page == 0) {
|
||||
var height = that.height(),
|
||||
var height = that.height() - (that.width() < that.$content.width() ? oxui.scrollbarSize : 0),
|
||||
visibleItems = Math.ceil(height / self.options.itemHeight);
|
||||
if (result.data.items.length < visibleItems) {
|
||||
self.$pages[page].height(height).css({
|
||||
|
@ -4267,6 +4271,7 @@ requires
|
|||
);
|
||||
|
||||
function parseKeyboard(str) {
|
||||
if (Ox.isObject(str)) return str; // fixme: this should not happen
|
||||
var modifiers = str.split(" "),
|
||||
key = modifiers.pop();
|
||||
return {
|
||||
|
|
|
@ -102,129 +102,7 @@ $(function() {
|
|||
orientation: "horizontal"
|
||||
})
|
||||
|
||||
$list = new Ox.TextList({
|
||||
columns: [
|
||||
{
|
||||
align: "left",
|
||||
id: "id",
|
||||
operator: "+",
|
||||
title: "ID",
|
||||
unique: true,
|
||||
visible: true,
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "title",
|
||||
operator: "+",
|
||||
title: "Title",
|
||||
visible: true,
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "director",
|
||||
operator: "+",
|
||||
title: "Director",
|
||||
visible: true,
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "country",
|
||||
operator: "+",
|
||||
title: "Country",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "year",
|
||||
operator: "-",
|
||||
title: "Year",
|
||||
visible: true,
|
||||
width: 60
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "language",
|
||||
operator: "+",
|
||||
title: "Language",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "runtime",
|
||||
operator: "-",
|
||||
title: "Runtime",
|
||||
visible: true,
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "genre",
|
||||
operator: "+",
|
||||
title: "Genre",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "rating",
|
||||
operator: "-",
|
||||
title: "Rating",
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "votes",
|
||||
operator: "-",
|
||||
title: "Votes",
|
||||
width: 80
|
||||
}
|
||||
],
|
||||
id: "list",
|
||||
request: function(options) {
|
||||
app.request("find", $.extend(options, {
|
||||
query: constructQuery()
|
||||
}), options.callback);
|
||||
},
|
||||
sort: [
|
||||
{
|
||||
key: "director",
|
||||
operator: "+"
|
||||
}
|
||||
]
|
||||
}),
|
||||
|
||||
$iconList = new Ox.IconList({
|
||||
id: "list",
|
||||
item: function(data, sort) {
|
||||
return {
|
||||
height: data["posterHeight"],
|
||||
id: data["id"],
|
||||
info: data[$.inArray(sort[0].key, ["title", "director"]) > -1 ? "year" : sort[0].key],
|
||||
title: data["title"] + " (" + data["director"] + ")",
|
||||
url: data["posterURL"],
|
||||
width: data["posterWidth"]
|
||||
};
|
||||
},
|
||||
keys: ["director", "id", "posterHeight", "posterWidth", "posterURL", "title"],
|
||||
request: function(options) {
|
||||
app.request("find", $.extend(options, {
|
||||
query: constructQuery()
|
||||
}), options.callback);
|
||||
},
|
||||
size: 128,
|
||||
sort: [
|
||||
{
|
||||
key: "director",
|
||||
operator: "+"
|
||||
}
|
||||
],
|
||||
unique: "id"
|
||||
}),
|
||||
$list = constructList("text");
|
||||
|
||||
$toolBar = Ox.Bar({
|
||||
size: 24
|
||||
|
@ -365,9 +243,11 @@ $(function() {
|
|||
id: "statusBar"
|
||||
}),
|
||||
|
||||
$totals = new Ox.Element().attr({
|
||||
id: "totals"
|
||||
}).appendTo($statusBar);
|
||||
$totals = new Ox.Element()
|
||||
.attr({
|
||||
id: "totals"
|
||||
})
|
||||
.appendTo($statusBar),
|
||||
|
||||
$leftPanel = new Ox.Container(),
|
||||
|
||||
|
@ -470,9 +350,7 @@ $(function() {
|
|||
});
|
||||
|
||||
Ox.Event.bind(null, "change_viewSelect", function(event, data) {
|
||||
if (data.id == "icons") {
|
||||
$list.replaceWith($iconList);
|
||||
}
|
||||
$list.replaceWith(constructList(data.id));
|
||||
});
|
||||
|
||||
Ox.Event.bind(null, "submit_find", function(event, data) {
|
||||
|
@ -537,22 +415,33 @@ $(function() {
|
|||
|
||||
});
|
||||
Ox.Event.bind(null, "load_list", function(event, data) {
|
||||
$totals.html(constructStatus({
|
||||
"total": data,
|
||||
"selected": {}
|
||||
}));
|
||||
var html = [
|
||||
data.items + " movie" + (data.items != 1 ? "s" : ""),
|
||||
Ox.formatDuration(data.runtime, "long"),
|
||||
Ox.formatNumber(data.items) + " movie" + (data.items != 1 ? "s" : ""),
|
||||
Ox.formatDuration(data.runtime, "medium"),
|
||||
Ox.formatDuration(data.runtime, 3, "short"),
|
||||
data.files + " file" + (data.files != 1 ? "s" : ""),
|
||||
Ox.formatDuration(data.duration, "short"),
|
||||
Ox.formatValue(data.size, "B"),
|
||||
Ox.formatValue(data.pixels, "px")
|
||||
];
|
||||
$totals.html(html.join(", "));
|
||||
$totals.html("Total: " + constructStatus(data) + " — Selected: " + constructStatus({
|
||||
duration: 0,
|
||||
files: 0,
|
||||
items: 0,
|
||||
pixels: 0,
|
||||
runtime: 0,
|
||||
size: 0
|
||||
}));
|
||||
});
|
||||
Ox.Event.bind(null, "sort_list", function(event, data) {
|
||||
|
||||
});
|
||||
|
||||
Ox.Event.bind(null, "select_list", function(event, data) {
|
||||
|
||||
});
|
||||
Ox.Event.bind(null, "click_show_query", function(event, data) {
|
||||
var query = constructQuery(),
|
||||
html = "Conditions<br/><br/>" + $.map(query.conditions, function(v) {
|
||||
|
@ -573,6 +462,136 @@ $(function() {
|
|||
.open();
|
||||
});
|
||||
|
||||
function constructList(view) {
|
||||
var $list;
|
||||
if (view == "text") {
|
||||
$list = new Ox.TextList({
|
||||
columns: [
|
||||
{
|
||||
align: "left",
|
||||
id: "id",
|
||||
operator: "+",
|
||||
title: "ID",
|
||||
unique: true,
|
||||
visible: true,
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "title",
|
||||
operator: "+",
|
||||
title: "Title",
|
||||
visible: true,
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "director",
|
||||
operator: "+",
|
||||
title: "Director",
|
||||
visible: true,
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "country",
|
||||
operator: "+",
|
||||
title: "Country",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "year",
|
||||
operator: "-",
|
||||
title: "Year",
|
||||
visible: true,
|
||||
width: 60
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "language",
|
||||
operator: "+",
|
||||
title: "Language",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "runtime",
|
||||
operator: "-",
|
||||
title: "Runtime",
|
||||
visible: true,
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "left",
|
||||
id: "genre",
|
||||
operator: "+",
|
||||
title: "Genre",
|
||||
visible: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "rating",
|
||||
operator: "-",
|
||||
title: "Rating",
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
align: "right",
|
||||
id: "votes",
|
||||
operator: "-",
|
||||
title: "Votes",
|
||||
width: 80
|
||||
}
|
||||
],
|
||||
id: "list",
|
||||
request: function(options) {
|
||||
app.request("find", $.extend(options, {
|
||||
query: constructQuery()
|
||||
}), options.callback);
|
||||
},
|
||||
sort: [
|
||||
{
|
||||
key: "director",
|
||||
operator: "+"
|
||||
}
|
||||
]
|
||||
});
|
||||
} else if (view == "icons") {
|
||||
$list = new Ox.IconList({
|
||||
id: "list",
|
||||
item: function(data, sort, size) {
|
||||
return {
|
||||
height: data.posterHeight,
|
||||
id: data["id"],
|
||||
info: data[$.inArray(sort[0].key, ["title", "director"]) > -1 ? "year" : sort[0].key],
|
||||
title: data.title + (data.director ? " (" + data.director + ")" : ""),
|
||||
url: "http://0xdb.org/" + data.id + "/poster." + size + "." + "jpg",
|
||||
width: data.posterWidth
|
||||
};
|
||||
},
|
||||
keys: ["director", "id", "posterHeight", "posterWidth", "posterURL", "title"],
|
||||
request: function(options) {
|
||||
app.request("find", $.extend(options, {
|
||||
query: constructQuery()
|
||||
}), options.callback);
|
||||
},
|
||||
size: 128,
|
||||
sort: [
|
||||
{
|
||||
key: "director",
|
||||
operator: "+"
|
||||
}
|
||||
],
|
||||
unique: "id"
|
||||
});
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
function constructQuery(groupId) {
|
||||
var conditions = $.merge(!Ox.isUndefined(findCondition.key) ? [findCondition] : [], $.map(groups, function(v, i) {
|
||||
if (v.id != groupId) {
|
||||
|
@ -590,6 +609,22 @@ $(function() {
|
|||
};
|
||||
}
|
||||
|
||||
function constructStatus(data) {
|
||||
var html = [];
|
||||
$.each(data, function(k, v) {
|
||||
html.push(Ox.toTitleCase(k) + ": " + [
|
||||
Ox.formatNumber(data.items) + " movie" + (data.items != 1 ? "s" : ""),
|
||||
Ox.formatDuration(data.runtime, "medium"),
|
||||
data.files + " file" + (data.files != 1 ? "s" : ""),
|
||||
Ox.formatDuration(data.duration, "short"),
|
||||
Ox.formatValue(data.size, "B"),
|
||||
Ox.formatValue(data.pixels, "px")
|
||||
].join(", "));
|
||||
})
|
||||
return html.join(" — ");
|
||||
|
||||
}
|
||||
|
||||
function getGroupById(id) { // unused
|
||||
$.each(groups, function(i, v) {
|
||||
if (v.id == id) {
|
||||
|
|
Loading…
Reference in a new issue