make menu and list talk to each other

This commit is contained in:
rolux 2010-07-07 14:36:12 +02:00
parent cca5b99fed
commit 5a655b3e20

View file

@ -142,7 +142,7 @@ requires
requestURL: oxui.requestURL requestURL: oxui.requestURL
}, options); }, options);
self.change = function() { self.change = function(key, value) {
}; };
@ -1897,7 +1897,9 @@ requires
}) })
.click(select) .click(select)
.appendTo(that); .appendTo(that);
self.selectId = self.options.id + "_placeholder"; self.selectId = Ox.toCamelCase(
self.options.id + "_" + (self.options.label.length > 1 ? "label" : "placeholder")
);
self.selectMenu = new Ox.Menu({ self.selectMenu = new Ox.Menu({
element: that, element: that,
id: self.selectId, id: self.selectId,
@ -2134,6 +2136,11 @@ requires
} : that.$input.val()); } : that.$input.val());
} }
that.changeLabel = function(id) {
that.$label.html(Ox.getObjectById(self.options.label, id).title);
self.selectMenu.checkItem(id);
};
that.height = function(value) { that.height = function(value) {
var stop = 8 / value; var stop = 8 / value;
if (self.options.type == "textarea") { if (self.options.type == "textarea") {
@ -2485,6 +2492,13 @@ requires
}; };
that.selectItem = function(id) {
that.$button.options({
value: Ox.getObjectById(self.options.items, id).title
});
that.$menu.checkItem(id);
};
that.width = function(val) { that.width = function(val) {
// fixme: silly hack, and won't work for css() // fixme: silly hack, and won't work for css()
that.$element.width(val + 16); that.$element.width(val + 16);
@ -3301,7 +3315,7 @@ requires
$order = $("<div>") $order = $("<div>")
.addClass("OxOrder") .addClass("OxOrder")
.html(oxui.symbols["triangle_" + ( .html(oxui.symbols["triangle_" + (
v.operator == "+" ? "up" : "down" v.operator === "" ? "up" : "down"
)]) )])
.click(function() { .click(function() {
$(this).prev().trigger("click") $(this).prev().trigger("click")
@ -3388,7 +3402,7 @@ requires
isSelected = self.options.sort[0].key == self.options.columns[i].id; isSelected = self.options.sort[0].key == self.options.columns[i].id;
that.sort( that.sort(
self.options.columns[i].id, isSelected ? self.options.columns[i].id, isSelected ?
(self.options.sort[0].operator == "+" ? "-" : "+") : (self.options.sort[0].operator === "" ? "-" : "") :
self.options.columns[i].operator self.options.columns[i].operator
); );
} }
@ -3544,6 +3558,7 @@ requires
function toggleSelected(id) { function toggleSelected(id) {
var pos = getColumnPositionById(id); var pos = getColumnPositionById(id);
if (pos > -1) {
updateOrder(id); updateOrder(id);
pos > 0 && that.$titles[pos].prev().children().eq(2).toggleClass("OxSelected"); pos > 0 && that.$titles[pos].prev().children().eq(2).toggleClass("OxSelected");
that.$titles[pos].toggleClass("OxSelected"); that.$titles[pos].toggleClass("OxSelected");
@ -3555,12 +3570,13 @@ requires
) + "px" ) + "px"
}); });
} }
}
function updateOrder(id) { function updateOrder(id) {
var pos = getColumnPositionById(id); var pos = getColumnPositionById(id);
Ox.print(id, pos) Ox.print(id, pos)
that.$titles[pos].next().html(oxui.symbols[ that.$titles[pos].next().html(oxui.symbols[
"triangle_" + (self.options.sort[0].operator == "+" ? "up" : "down") "triangle_" + (self.options.sort[0].operator === "" ? "up" : "down")
]); ]);
} }
@ -3677,6 +3693,17 @@ requires
} }
} }
function getMenuById(id) {
var menu = null;
$.each(that.menus, function(i, v) {
if (v.options("id") == id) {
menu = v;
return false;
}
});
return menu;
}
function mousemove(event) { function mousemove(event) {
var $target = $(event.target), var $target = $(event.target),
focused, focused,
@ -3713,6 +3740,12 @@ requires
}; };
that.checkItem = function(id) {
that.getItem(id).options({
checked: true
});
};
that.disableItem = function(id) { that.disableItem = function(id) {
}; };
@ -3722,11 +3755,16 @@ requires
}; };
that.getItem = function(id) { that.getItem = function(id) {
var item; var ids = id.split("_"),
item;
if (ids.length == 1) {
$.each(that.menus, function(i, menu) { $.each(that.menus, function(i, menu) {
item = menu.getItem(id); item = menu.getItem(id);
return !item; return !item;
}); });
} else {
item = getMenuById(ids.shift()).getItem(ids.join("_"));
}
return item; return item;
}; };
@ -3746,6 +3784,10 @@ requires
} }
}; };
that.uncheckItem = function(id) {
};
return that; return that;
}; };
@ -3765,6 +3807,8 @@ requires
side open to "bottom" or "right" side open to "bottom" or "right"
size "large", "medium" or "small" size "large", "medium" or "small"
methods:
events: events:
change_groupId {id, value} checked item of a group has changed change_groupId {id, value} checked item of a group has changed
click_itemId item not belonging to a group was clicked click_itemId item not belonging to a group was clicked
@ -4211,14 +4255,31 @@ requires
}; };
that.checkItem = function(id) {
that.getItem(id).options({
checked: true
});
};
that.getItem = function(id) { that.getItem = function(id) {
var item; var ids = id.split("_"),
$.each(this.items, function(i, v) { item;
if (ids.length == 1) {
$.each(that.items, function(i, v) {
if (v.options("id") == id) { if (v.options("id") == id) {
item = v; item = v;
return false; return false;
} }
}); });
if (!item) {
$.each(that.submenus, function(k, submenu) {
item = submenu.getItem(id);
return !item;
});
}
} else {
item = that.submenus[ids.shift()].getItem(ids.join("_"));
}
return item; return item;
}; };