/**
*
*/
(function(jQ) {
/**
* Default options
*/
var Defaults = {
cols: 0,
rows: 0,
cssClass: null, //if not set will try to get it from the object
itself
//if titles on the first table raw is needed
//
thead: false,
ajax: false, //if loaded by ajax
//set to specific url from where the JSON object will be loaded.
Makes an effect only if "ajax"param is true.
//the default value is taken from "loadUrl" attribute of the
table
loadUrl: false,
//is the table sortable; if needed set to list of column names
to
sort by
sortable: false,
preLoad: null, //function to run right before loading process
onDataReceived: null, //callabck to run whenever the table data
is
received
onDataError: null, //a callback, if error occures while data
fetch
postLoad: null //a callback that called when the JSON data load
finished
}
/**
* if the table was initialized
*/
var Initialized = false;
var Selector = "";
var Titles = { // id: "title text"
col1: "Column 1",
col2: "Column 2",
col3: "Column 3"
};
var Data = new Object();
var Options = null;
/**
* Constructor
*/
jQ.fn.table = function(options, titles, data){
if(jQ(this).length == 0){
//try to find at least one element
$.log("Matching element "+jQ(this).selector+" was not
found!")
return null;
}
//validate that this element is unique i=on hte page
if(jQ(this).length > 1){
$.log("The element's selector must be unique on the
page!");
return null;
}
//check if the elemment is a table
alert(jQ(this).selector);
if(!jQ(this).is("table")){
$.log("The element must be valid table element!");
return null;
}
/**
* Save the selector for further
*/
Selector = jQ(this).selector;
//extend defaults
Options = jQ.extend({}, Defaults, options);
//init additional data
//init UI
jQ.fn.table.initUI();
return jQ(this);
};
/**
* Set new set of titles.
* If the table is empty the definition of titles will define the
table from the scratch
* if the number of columns is already defined, only those
matching by id will be replaced.
*/
jQ.fn.table.SetTitles = function(tlsObj){
return $.each(tlsObj, function(id, val){
jQ("thead tr td#"+id, this).text(val);
})
};
jQ.fn.table.Clear = function(dataOnly){
if(dataOnly){
jQ(Selector+" > :not('thead')").remove();
} else {
jQ(this).remove();
}
};
/**
* initialize UI. create a first look of the table
*/
jQ.fn.table.initUI = function(){
if(Initialized){
return;
}
Options.cols = Object.size(Titles);
c = 0;
//set scc if needed
if(Options.cssClass != "" || Options.cssClass != null){
jQ(this).addClass(Options.cssClass)
}
//deal with the thead
if(Options.thead == true){
//need to wrap first row with thead
}
//fill in the thead
var tHead = $("<thead></thead>");
var tr = $("<tr></tr>")
$.each(Titles, function(i, val){
$("<td></td>").attr({
id: i
}).text(val).appendTo(tr);
});
tHead.append(tr).prependTo(this); //Options.rows++;
}
// /**
// * Cleans and polulates the whole entier table with data
// */
// jQ.fn.TablePopulate = function(obj){
// //$.each
// };
//
// /**
// * Adds data to the end of the table
// */
// jQ.fn.TableAdd = function(obj){
//
// };
})(jQuery);
Here you go.