fix for replace groups

This commit is contained in:
rolux 2011-01-03 23:39:10 +00:00
parent f2b60633b4
commit 405c72099a

View file

@ -771,7 +771,13 @@ var pandora = new Ox.App({
return that; return that;
}, },
group: function(id, query) { group: function(id, query) {
Ox.print('group', id, query) Ox.print('group', id, query);
/*
query && query.conditions.length && alert($.map(query.conditions, function(v) {
return v.value;
}));
*/
//alert(id + ' ' + JSON.stringify(Query.toObject(id)))
var i = app.user.ui.groups.indexOf(id), var i = app.user.ui.groups.indexOf(id),
panelWidth = app.$ui.document.width() - app.user.ui.listsSize - 1, panelWidth = app.$ui.document.width() - app.user.ui.listsSize - 1,
title = Ox.getObjectById(app.config.groups, id).title, title = Ox.getObjectById(app.config.groups, id).title,
@ -800,13 +806,14 @@ var pandora = new Ox.App({
request: function(data, callback) { request: function(data, callback) {
Ox.print('sending request', data) Ox.print('sending request', data)
delete data.keys; delete data.keys;
//alert(id + " Query.toObject " + JSON.stringify(Query.toObject(id)) + ' ' + JSON.stringify(data))
return pandora.api.find($.extend(data, { return pandora.api.find($.extend(data, {
group: id, group: id,
query: Query.toObject(id) query: Query.toObject(id)
}), callback); }), callback);
}, },
selected: query ? $.map(query.conditions, function(v) { selected: query ? $.map(query.conditions, function(v) {
return v.key; return v.value;
}) : [], }) : [],
sort: [ sort: [
{ {
@ -825,7 +832,7 @@ var pandora = new Ox.App({
operator: '=' operator: '='
}; };
}); });
reloadGroups(); reloadGroups(i);
}); });
new Ox.Select({ new Ox.Select({
items: $.map(app.config.groups, function(v) { items: $.map(app.config.groups, function(v) {
@ -842,36 +849,42 @@ var pandora = new Ox.App({
.bindEvent('change', function(event, data) { .bindEvent('change', function(event, data) {
var id_ = data.selected[0].id, var id_ = data.selected[0].id,
i_ = app.user.ui.groups.indexOf(id_); i_ = app.user.ui.groups.indexOf(id_);
i_ == -1 ? replaceGroup(i, id_) : swapGroups();
function replaceGroup(i, id, query) {
var isOuter = i % 4 == 0;
if (i_ == -1) { if (i_ == -1) {
// new group was not part of old group set
if (app.ui.groups[i].query.conditions.length) { if (app.ui.groups[i].query.conditions.length) {
// if group with selection gets replaced, reload
app.ui.groups[i].query.conditions = []; app.ui.groups[i].query.conditions = [];
reloadGroups(); reloadGroups(i);
} }
app.ui.groups[i] = getGroupObject(id); app.ui.groups[i] = getGroupObject(id_);
} app.user.ui.groups[i] = id_;
app.user.ui.groups[i] = id; replaceGroup(i, id_);
app.$ui[isOuter ? 'browser' : 'groupsInnerPanel'].replace( } else {
isOuter ? i / 2 : i - 1, // swap two existing groups
app.$ui.groups[i] = ui.group(id, query) var group = $.extend({}, app.ui.groups[i]);
);
}
function swapGroups() {
var group = $.extend({}, app.ui.groups[i]),
query = app.ui.groups[i].query;
query_ = app.ui.groups[i_].query;
app.ui.groups[i] = app.ui.groups[i_]; app.ui.groups[i] = app.ui.groups[i_];
app.ui.groups[i_] = group; app.ui.groups[i_] = group;
app.user.ui.groups[i] = id_; app.user.ui.groups[i] = id_;
app.user.ui.groups[i_] = id; app.user.ui.groups[i_] = id;
replaceGroup(i, id_, query_); replaceGroup(i, id_, app.ui.groups[i].query);
replaceGroup(i_, id, query); replaceGroup(i_, id, app.ui.groups[i_].query);
}
function replaceGroup(i, id, query) {
// if query is passed, selected items will be derived from it
var isOuter = i % 4 == 0;
//foo = app.$ui.groups[i];
app.$ui[isOuter ? 'browser' : 'groupsInnerPanel'].replace(
isOuter ? i / 2 : i - 1,
app.$ui.groups[i] = ui.group(id, query)
);
//foo.remove();
} }
}) })
.appendTo(that.$bar.$element); .appendTo(that.$bar.$element);
if (!query) {
// if query is set, group object has already been taken care of
app.ui.groups[i] = getGroupObject(id); app.ui.groups[i] = getGroupObject(id);
}
function getGroupObject(id) { function getGroupObject(id) {
var i = app.user.ui.groups.indexOf(id), var i = app.user.ui.groups.indexOf(id),
title = Ox.getObjectById(app.config.groups, id).title, title = Ox.getObjectById(app.config.groups, id).title,
@ -887,31 +900,6 @@ var pandora = new Ox.App({
title: title title: title
}; };
} }
function reloadGroups() {
var query = Query.toObject();
app.$ui.list.options({
request: function(data, callback) {
return pandora.api.find($.extend(data, {
query: query
}), callback);
}
});
$.each(app.ui.groups, function(i_, group_) {
if (i_ != i) {
Ox.print('setting groups request', i, i_)
app.$ui.groups[i_].options({
request: function(data, callback) {
delete data.keys;
return pandora.api.find($.extend(data, {
group: group_.id,
query: Query.toObject(group_.id)
}), callback);
}
});
}
});
history.pushState({}, '', Query.toString(query));
}
return that; return that;
}, },
groups: function() { groups: function() {
@ -2323,6 +2311,33 @@ var pandora = new Ox.App({
) > -1 ? '' : '-'; ) > -1 ? '' : '-';
} }
function reloadGroups(i) {
var query = Query.toObject();
app.$ui.list.options({
request: function(data, callback) {
return pandora.api.find($.extend(data, {
query: query
}), callback);
}
});
$.each(app.ui.groups, function(i_, group_) {
if (i_ != i) {
Ox.print('setting groups request', i, i_)
app.$ui.groups[i_].options({
request: function(data, callback) {
delete data.keys;
//alert(i_ + " Query.toObject " + JSON.stringify(Query.toObject(group_.id)))
return pandora.api.find($.extend(data, {
group: group_.id,
query: Query.toObject(group_.id)
}), callback);
}
});
}
});
history.pushState({}, '', Query.toString(query));
}
function resizeGroups(width) { function resizeGroups(width) {
var widths = $.map(app.ui.groups, function(v, i) { var widths = $.map(app.ui.groups, function(v, i) {
return getGroupWidth(i, width); return getGroupWidth(i, width);