@formant/ava
Version:
A framework for automated visual analytics.
79 lines (78 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("../../utils");
var utils_2 = require("./utils");
/* Base data structure */
var BaseFrame = /** @class */ (function () {
function BaseFrame(data, extra) {
var _a, _b, _c, _d, _e;
this.axes = [[]];
this.data = [];
(0, utils_1.assert)(!extra || (0, utils_1.isObject)(extra), 'If extra exists, it must be an object.');
/* 1D: basic type */
if ((0, utils_1.isBasicType)(data)) {
// generate indexes
if (extra === null || extra === void 0 ? void 0 : extra.indexes) {
this.setAxis(0, extra === null || extra === void 0 ? void 0 : extra.indexes);
this.data = Array(extra === null || extra === void 0 ? void 0 : extra.indexes.length).fill((0, utils_2.convertDataType)((0, utils_2.fillMissingValue)(data, extra === null || extra === void 0 ? void 0 : extra.fillValue), (_a = extra === null || extra === void 0 ? void 0 : extra.columnTypes) === null || _a === void 0 ? void 0 : _a[0]));
}
else {
this.data = [(0, utils_2.convertDataType)((0, utils_2.fillMissingValue)(data, extra === null || extra === void 0 ? void 0 : extra.fillValue), (_b = extra === null || extra === void 0 ? void 0 : extra.columnTypes) === null || _b === void 0 ? void 0 : _b[0])];
this.setAxis(0, [0]);
}
}
else if ((0, utils_1.isArray)(data)) {
/* 1D: array */
var legal = true;
for (var i = 0; i < data.length; i += 1) {
var datum = data[i];
// For DataFrame, as long as any datum in data is basic type, it's a 1D array
if (!(0, utils_1.isBasicType)(datum)) {
legal = false;
break;
}
}
this.setAxis(0, (0, utils_2.generateArrayIndex)(data, extra === null || extra === void 0 ? void 0 : extra.indexes));
if (legal) {
if (extra === null || extra === void 0 ? void 0 : extra.indexes) {
(0, utils_1.assert)(((_c = extra === null || extra === void 0 ? void 0 : extra.indexes) === null || _c === void 0 ? void 0 : _c.length) === data.length, "Index length is ".concat(extra === null || extra === void 0 ? void 0 : extra.indexes.length, ", but data size ").concat(data.length));
this.setAxis(0, extra === null || extra === void 0 ? void 0 : extra.indexes);
}
this.data = (extra === null || extra === void 0 ? void 0 : extra.fillValue) ? data.map(function (datum) { return (0, utils_2.fillMissingValue)(datum, extra === null || extra === void 0 ? void 0 : extra.fillValue); }) : data;
if ((_d = extra === null || extra === void 0 ? void 0 : extra.columnTypes) === null || _d === void 0 ? void 0 : _d.length) {
for (var i = 0; i < this.data.length; i += 1) {
this.data[i] = (0, utils_2.convertDataType)(this.data[i], (_e = extra === null || extra === void 0 ? void 0 : extra.columnTypes) === null || _e === void 0 ? void 0 : _e[0]);
}
}
}
}
}
Object.defineProperty(BaseFrame.prototype, "indexes", {
get: function () {
return this.getAxis(0);
},
enumerable: false,
configurable: true
});
Object.defineProperty(BaseFrame.prototype, "columns", {
get: function () {
return this.getAxis(1);
},
enumerable: false,
configurable: true
});
BaseFrame.prototype.getAxis = function (axis) {
return this.axes[axis];
};
/**
* Set axis. Only the 0 and 1 are currently supported.
* @param axis
* @param labels
*/
BaseFrame.prototype.setAxis = function (axis, values) {
(0, utils_1.assert)((0, utils_1.isArray)(values), 'Index or columns must be Axis array.');
this.axes[axis] = values;
};
return BaseFrame;
}());
exports.default = BaseFrame;