AppSuite:VGrid: Difference between revisions
From Open-Xchange
No edit summary |
mNo edit summary |
||
| Line 60: | Line 60: | ||
// get all IDs of all objects | // get all IDs of all objects | ||
grid.setAllRequest(function (cont) { | grid.setAllRequest(function (cont) { | ||
api.getAll().done(cont); | // must return deferred object | ||
return api.getAll().done(cont); | |||
}); | }); | ||
// define a named "search" request | // define a named "search" request | ||
grid.setAllRequest("search", function (cont) { | grid.setAllRequest("search", function (cont) { | ||
api.search(win.search.query).done(cont); | // must return deferred object | ||
return api.search(win.search.query).done(cont); | |||
}); | }); | ||
// define a request that loads detailled data on demand | // define a request that loads detailled data on demand | ||
grid.setListRequest(function (ids, cont) { | grid.setListRequest(function (ids, cont) { | ||
api.getList(ids).done(cont); | // must return deferred object | ||
return api.getList(ids).done(cont); | |||
}); | }); | ||
</pre> | </pre> | ||
Revision as of 13:55, 10 January 2014
API status: In Development
VGrid
Abstract: The VGrid is a grid used to structure contents in the main viewport. For example, if you see mails stacked in the v-split of the mail module, this is the VGrid at work.
Create new instance:
// pass jQuery node where VGrid should be drawn var grid = new ox.ui.tk.VGrid(node);
Add basic template:
grid.addTemplate({
build: function () {
var name, email;
this
.addClass("contact")
.append(name = $("<div/>").addClass("fullname"))
.append(email = $("<div/>"))
.append(job = $("<div/>").addClass("bright-text"));
return { name: name, job: job, email: email };
},
set: function (data, fields, index) {
fields.name.text(data.display_name);
fields.email.text(data.email);
fields.job.text(data.job);
}
});
Add label template:
grid.addLabelTemplate({
build: function () { },
set: function (data, fields, index) {
var name = data.last_name || data.display_name || "#";
this.text(name.substr(0, 1).toUpperCase());
}
});
Add a function to determine if a new label is needed:
grid.requiresLabel = function (i, data, current) {
var name = data.last_name || data.display_name || "#",
prefix = name.substr(0, 1).toUpperCase();
return (i === 0 || prefix !== current) ? prefix : false;
};
Define functions to get data:
// get all IDs of all objects
grid.setAllRequest(function (cont) {
// must return deferred object
return api.getAll().done(cont);
});
// define a named "search" request
grid.setAllRequest("search", function (cont) {
// must return deferred object
return api.search(win.search.query).done(cont);
});
// define a request that loads detailled data on demand
grid.setListRequest(function (ids, cont) {
// must return deferred object
return api.getList(ids).done(cont);
});