dtable-utils
Version:
dtable common utils
82 lines (78 loc) • 2.51 kB
JavaScript
import '../constants/column.js';
import '../constants/filter/filter-column-options.js';
import '../constants/filter/filter-modifier.js';
import '../constants/filter/filter-predicate.js';
import '../constants/filter/filter-is-within.js';
import '../constants/formula.js';
import { SELECT_OPTION_COLORS } from '../constants/select-option.js';
import '../constants/sort.js';
import '../constants/group.js';
import { generateOptionID } from '../column/option.js';
import '@babel/runtime/helpers/typeof';
import { formatTextToSingleOption } from './single-select.js';
var formatTextToMultipleOption = function formatTextToMultipleOption(value, column) {
var formatValue = typeof value === 'number' ? value + '' : value;
if (!formatValue || !formatValue.trim()) {
return null;
}
var optionName = formatValue.trim();
var options = null;
if (column.data) {
options = column.data && column.data.options;
} else {
column.data = {};
}
if (!options || !Array.isArray(options)) {
column.data.options = [];
options = [];
}
// is exist
var option = options.find(function (item) {
return item.name === optionName;
});
if (option) {
return [option.id];
}
// not exist
var optionNames = optionName.split(' ');
var optionIds = optionNames.map(function (item) {
return formatTextToSingleOption(item, column);
});
return optionIds;
};
var formatValueToMultipleOption = function formatValueToMultipleOption(value, column) {
if (!value || !Array.isArray(value)) {
return null;
}
var options;
if (column.data) {
options = column.data && column.data.options;
} else {
column.data = {};
}
if (!options || !Array.isArray(options)) {
column.data.options = [];
options = [];
}
var selectOptions = value.map(function (optionName) {
var option = options.find(function (item) {
return item.name === optionName;
});
if (option) return option;
var random = Math.floor(Math.random() * (SELECT_OPTION_COLORS.length - 1));
var optionColor = SELECT_OPTION_COLORS[random];
var newOption = {
id: generateOptionID(options),
name: optionName,
color: optionColor.COLOR,
textColor: optionColor.TEXT_COLOR
};
column.data.options.push(newOption);
return newOption;
});
var optionIds = selectOptions.map(function (option) {
return option.id;
});
return optionIds.length > 0 ? optionIds : null;
};
export { formatTextToMultipleOption, formatValueToMultipleOption };