var ExpTable = function () {
this.table = [];
};
ExpTable.prototype.addRow = function (row) {
this.table.push(row);
};
ExpTable.prototype.getConfigFromExp = function(total_exp) {
var row;
for (row = 0, len = this.table.length; row < len; row++) {
if (this.table[row].end >= total_exp) {
return this.table[row];
}
}
return this.table[row - 1]; // top level
};
ExpTable.prototype.getConfigFromLevel0 = function(level0) {
return this.table[level0];
};
ExpTable.prototype.getConfigFromLevel1 = function(level1) {
return this.table[level1 - 1];
};
ExpTable.createWithInterval = function (data) {
var expTable = new ExpTable();
var lastRow = null;
_.each(data, function (rowData, idx) {
var row = {
lv0: idx,
lv1: idx + 1
};
if (lastRow === null) {
row.start = 0;
row.end = rowData - 1;
row.interval = rowData;
} else {
row.start = lastRow.start + lastRow.interval;
row.end = lastRow.end + rowData;
row.interval = rowData;
}
expTable.addRow(row);
lastRow = row;
});
return expTable;
};
ExpTable.createWithEnd = function (data) {
var expTable = new ExpTable();
var lastRow = null;
_.each(data, function (rowData, idx) {
var row = {
lv0: idx,
lv1: idx + 1
};
if (lastRow === null) {
row.start = 0;
row.end = rowData;
row.interval = rowData + 1;
} else {
row.start = lastRow.start + lastRow.interval;
row.end = rowData;
row.interval = rowData - lastRow.interval + 1;
}
expTable.addRow(row);
lastRow = row;
});
return expTable;
};