UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

74 lines (73 loc) 2.9 kB
"use strict"; 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;