scinote-web/app/assets/javascripts/reports/content.js

64 lines
1.8 KiB
JavaScript
Raw Normal View History

(function() {
/**
* Initialize the hands on table on the given
* element with the specified data.
* @param el - The jQuery element/s selector.
*/
function initializeHandsonTable(el) {
var input = el.siblings('input.hot-table-contents');
var inputObj = JSON.parse(input.attr('value'));
var metadata = el.siblings('input.hot-table-metadata');
var data = inputObj.data;
var headers;
var parentEl;
var order;
// Special handling if this is a repository table
if (input.hasClass('hot-repository-items')) {
headers = inputObj.headers;
parentEl = el.closest('.report-module-repository-element');
order = parentEl.attr('data-order') === 'asc';
el.handsontable({
disableVisualSelection: true,
rowHeaders: false,
colHeaders: headers,
columnSorting: false,
editor: false,
copyPaste: false,
formulas: true,
data: data
});
el.handsontable('getInstance').getPlugin('columnSorting').sort(3, order);
} else {
el.handsontable({
disableVisualSelection: true,
rowHeaders: true,
colHeaders: true,
editor: false,
copyPaste: false,
formulas: true,
data: data,
cell: JSON.parse(metadata.val() || '{}').cells || []
});
}
}
/** Convert Handsone table to normal table **/
function reportHandsonTableConverter() {
$.each($('.hot-table-container'), function(index, value) {
var table = $(value);
var header = table.find('.ht_master thead');
var body = table.find('.ht_master tbody');
table.next().append(header).append(body);
table.remove();
});
}
$('.hot-table-container').each(function() {
initializeHandsonTable($(this));
});
reportHandsonTableConverter();
}());