@formant/ava
Version:
A framework for automated visual analytics.
74 lines (73 loc) • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.advicesForChart = exports.assembleDataProps = void 0;
var tslib_1 = require("tslib");
var data_1 = require("../../data");
var utils_1 = require("../utils");
var data_to_advices_1 = require("./data-to-advices");
/**
* A utility function that assemble dataProps with user input and DataFrame
* @param copyData a copy of original data
* @param fields the fields that user specified to be used in dataset
* @param inputDataProps user input dataProps which will cover or combine with dataProps from DataFrame
* @returns assembled data props
*/
function assembleDataProps(copyData, fields, inputDataProps) {
// transform data into DataFrame
var dataFrame;
if (fields) {
dataFrame = new data_1.DataFrame(copyData, { columns: fields });
}
else {
dataFrame = new data_1.DataFrame(copyData);
}
var dataPropsForAdvice;
var defaultDataProps = dataFrame.info();
if (inputDataProps) {
dataPropsForAdvice = defaultDataProps.map(function (dwItem) {
var inputProps = inputDataProps.find(function (item) {
return item.name === dwItem.name;
});
return tslib_1.__assign(tslib_1.__assign({}, dwItem), inputProps);
});
}
else {
dataPropsForAdvice = defaultDataProps;
}
return dataPropsForAdvice;
}
exports.assembleDataProps = assembleDataProps;
function advicesForChart(params, ckb, ruleBase) {
var data = params.data, dataProps = params.dataProps, smartColor = params.smartColor, options = params.options, colorOptions = params.colorOptions, fields = params.fields;
try {
// otherwise the input data will be mutated
var copyData = (0, utils_1.cloneDeep)(data);
// get dataProps from DataFrame
var dataPropsForAdvice = assembleDataProps(copyData, fields, dataProps);
// filter out fields that are not included for advising
var filteredData = [];
if (fields) {
filteredData = copyData.map(function (row) {
var filteredRow = row;
Object.keys(filteredRow).forEach(function (col) {
if (!fields.includes(col)) {
delete filteredRow[col];
}
});
return row;
});
}
else {
filteredData = copyData;
}
var adviceResult = (0, data_to_advices_1.dataToAdvices)(filteredData, dataPropsForAdvice, ckb, ruleBase, smartColor, options, colorOptions);
return adviceResult;
}
catch (error) {
// if the input data cannot be transformed into DataFrame
// eslint-disable-next-line no-console
console.error('error: ', error);
return { advices: [], log: [] };
}
}
exports.advicesForChart = advicesForChart;