// CytoTable v0.1 // By MacKinley Smith (function($){ var defaults = { widget:{ table:{ cell:{ padding:0, spacing:0, }, css:{ width:"100%", "margin-bottom":15, "box-shadow":"0px 0px 10px rgba(0,0,0,0.5)" }, element:false, tr:{ css:{}, elements:[], td:{ css:{ padding:10 }, elements:[], types:{ header:{ css:{}, tag:"h3" }, icon:{ css:{ width:16, cursor:'pointer' } }, info:{ css:{} }, label:{ css:{ width:100, font:"<%=Cytoplasm.vars()[:fonts][:sizes][:small]+" "+Cytoplasm.vars()[:fonts][:faces][:light]%>", } } } } } } }, events:{ onCreate:function(cy){}, onChange:function(cy,event){}, onDestroy:function(cy){} } }; var methods = { init:function(options){ return this.each(function(){ var $this = $(this); if (!$this.is('table')) return console.warn("$.cytoTable expects a table!"); var settings = $.extend(true,{},defaults,options); // Setup table settings.widget.table.element = $(this).addClass('cytoTable') .attr({cellpadding:settings.widget.table.cell.padding,cellspacing:settings.widget.table.cell.spacing}) .css(settings.widget.table.css); // Setup tr var colspan = 0; settings.widget.table.tr.elements = settings.widget.table.element.find("tr").each(function(){ var tds = $(this).css(settings.widget.table.tr.css).find("td"); if (tds.length > colspan) colspan = tds.length; tds.each(function(){settings.widget.table.tr.td.elements.push($(this));}); }); // Setup td $.each(settings.widget.table.tr.td.elements,function(i,td){ td.css(settings.widget.table.tr.td.css); $.each(settings.widget.table.tr.td.types,function(type,opts){if (td.hasClass(type+'cell')) td.attr('data-type',type);}); if (td.data("type")!=null) { var type = td.data('type'); td.css(settings.widget.table.tr.td.types[type].css); switch (type) { case "header": td.attr('colspan',colspan); var tag = settings.widget.table.tr.td.types.header.tag; if (td.data('tag')!=null) tag = td.data('tag'); if (!td.children(tag).length) { tag = $('<'+tag+'>').html(td.html()) td.html("").append(tag); } else { tag = td.children(tag); tag.css("margin",0); } break; case "icon": break; case "info": td.attr('colspan',colspan); break; case "label": break; } } }); $this.data('cytoTable',settings); }); }, resize:function(){ return this.each(function(){ }); }, destroy:function(){ return this.each(function(){ }); } }; $.fn.cytoTable=function(method){ if (methods[method]) return methods[method].apply(this,Array.prototype.slice.call(arguments,1)); else if (typeof method == 'object' || !method) return methods.init.apply(this,arguments); else $.error('Method ' + method + ' does not exist on $.cytoTable!'); }; $(window).resize(function(){$('.cytoTable').cytoTable('resize');}); $.Cytoplasm("ready",function(){$('.cytoTable').cytoTable();}); })(jQuery);