@flourish/sdk
Version:
The Flourish SDK
81 lines (66 loc) • 2.19 kB
JavaScript
/* * * * * * GENERATED FILE - DO NOT EDIT * * * * * *
* * * * * * GENERATED FILE - DO NOT EDIT * * * * * *
* * * * * * GENERATED FILE - DO NOT EDIT * * * * * */
;
Object.defineProperty(exports, '__esModule', { value: true });
function extractData(data_binding, data_by_id) {
var columns = [];
var data_table_ids = [];
var num_rows = 0;
var dataset = [];
dataset.column_names = {};
for (var key in data_binding) {
if (data_binding[key].columns === undefined && data_binding[key].column === undefined) continue;
var b = data_binding[key];
b.key = key;
if (!(b.data_table_id in data_by_id)) {
var data_by_id_keys = [];
for (var k in data_by_id) data_by_id_keys.push(k);
console.error("Data table id " + b.data_table_id + " not in " + JSON.stringify(data_by_id_keys));
continue;
}
if ("columns" in b && b.columns != null) {
dataset.column_names[key] = b.columns.map(function(i) {
return data_by_id[b.data_table_id][0][i];
});
}
else if ("column" in b && b.column != null) {
dataset.column_names[key] = data_by_id[b.data_table_id][0][b.column];
}
else {
throw new Error("Data binding includes no column(s) specification: " + JSON.stringify(b));
}
if (data_table_ids.indexOf(b.data_table_id) == -1) {
data_table_ids.push(b.data_table_id);
num_rows = Math.max(num_rows, data_by_id[b.data_table_id].length - 1);
}
columns.push(b);
}
for (var i = 0; i < num_rows; i++) {
var o = {};
for (var j = 0; j < columns.length; j++) {
b = columns[j];
var table = data_by_id[b.data_table_id];
if (i+1 >= table.length) continue;
if ("columns" in b && b.columns != null) {
o[b.key] = b.columns.map(function(c) { return table[i+1][c]; });
}
else if ("column" in b && b.column != null) {
o[b.key] = table[i+1][b.column];
}
}
dataset.push(o);
}
return dataset;
}
function trimTrailingEmptyRows(data) {
for (var i = data.length; i-- > 0;) {
if (data[i].findIndex(function(col) { return col !== null && col !== ""; }) == -1) {
data.splice(i, 1);
}
else break;
}
return data;
}
exports.extractData = extractData;
exports.trimTrailingEmptyRows = trimTrailingEmptyRows;