define([ '/bower_components/jquery/dist/jquery.min.js', ],function () { var $ = window.jQuery; var Table = function ($t, xy) { var $head = $t.find('thead'); var $body = $t.find('tbody'); var $foot = $t.find('tfoot'); var width = $body.find('tr:first-of-type td').length; var height = $body.find('tr').length; var addRow = function (first, Rest, uid) { var $row = $('', { 'data-rt-uid': uid, }).append($('').append(first)); $head.find('th').each(function (i) { var colId = $(this).data('rt-uid'); $row.append($('').append(Rest(xy(colId, uid)))); }); $body.append($row); height++; return $row; }; var addColumn = function (first, Rest, uid) { $head.find('tr').append($('', { 'data-rt-uid': uid, }).append(first)); $body.find('tr').each(function (i) { // each checkbox needs a uid corresponding to its role var rowId = $(this).data('rt-uid'); $(this).append($('').append(Rest(xy(uid, rowId)))); }); $foot.find('tr').append($('', { })); width++; return width; }; return { $: $t, addRow: addRow, addColumn: addColumn, }; }; return Table; });