/**
* @namespace commands.factor
*/
import uniq from 'lodash/uniq';
import pluralize from 'pluralize';
/**
* Generates the response for the "factor" command.
* @memberOf commands.factor
* @param {Object} data - The data from the viz.
* @param {string[]} data.x - Values of the independent variable.
* @param {Object} options - The options supplied to voxlens when creating the viz.
* @param {string} options.key - key for the x-axis.
* @param {boolean} options.listAll - flag to list all values.
* @returns {object} - Response for the "factor" command.
*/
export default (data, options) => {
const formattedData = Array.isArray(data.x[0]) ? data.x : [data.x];
let xs = Array.isArray(options.x) ? options.x : [options.x];
let sentence = '';
xs.forEach((x, i) => {
if (!options.key || (options.key && x === options.key)) {
const values = uniq(formattedData[i]);
sentence += 'Data is from ' + values.length + ' ' + pluralize(x);
if (options.listAll) {
sentence += ': ' + values.join(', ');
} else {
sentence +=
'. Say tell me factor levels for ' +
x +
' to hear all ' +
pluralize(x);
}
sentence += '. ';
}
});
if (sentence === '') return null;
return { sentence: sentence.trim() };
};