dtable-utils
Version:
dtable common utils
122 lines (119 loc) • 3.81 kB
JavaScript
import { CellType } from '../../constants/cell-type.js';
import { NOT_SUPPORT_EDIT_COLUMN_TYPE, NUMERIC_COLUMNS_TYPES } from '../../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 '../../constants/sort.js';
import '../../constants/group.js';
import 'dayjs';
import { isNumber } from '../../number.js';
import { getOptionName } from '../../cell-value-get/option.js';
import '../../cell-value-get/cell-value.js';
/**
* What: get converted value to update row.
* Where: big data view
* @param {Object} column
* @param {Object} { [column.key]: 'xxx' }
* @returns converted value
*/
var getConvertedUpdatedValue = function getConvertedUpdatedValue(column, updated) {
if (!column || NOT_SUPPORT_EDIT_COLUMN_TYPE.includes(column.type)) {
return null;
}
var columnType = column.type,
data = column.data;
var columnValue = Object.values(updated)[0];
if (NUMERIC_COLUMNS_TYPES.includes(columnType)) {
return isNumber(columnValue) ? columnValue : null;
}
switch (columnType) {
case CellType.TEXT:
case CellType.URL:
case CellType.EMAIL:
{
if (!columnValue) {
return null;
}
var text = columnValue.trim();
return text || null;
}
case CellType.CHECKBOX:
{
if (typeof columnValue !== 'boolean') {
return null;
}
return columnValue;
}
case CellType.DATE:
{
if (!columnValue) {
return null;
}
// compatible with underlying storage
var format = data && data.format;
var isHasMinute = format && format.indexOf('HH:mm') > -1;
// eslint-disable-next-line prefer-template
return isHasMinute ? columnValue + ':00' : columnValue;
}
case CellType.LONG_TEXT:
{
if (!columnValue || !Object.prototype.hasOwnProperty.call(columnValue, 'text')) {
return null;
}
return columnValue.text || null;
}
case CellType.SINGLE_SELECT:
{
var options = data && data.options;
return getOptionName(options, columnValue) || null;
}
case CellType.MULTIPLE_SELECT:
{
var _options = data && data.options;
if (!Array.isArray(columnValue) || columnValue.length === 0 || !Array.isArray(_options) || _options.length === 0) {
return null;
}
var optionNames = columnValue.map(function (optionId) {
return getOptionName(_options, optionId);
}).filter(Boolean);
if (optionNames.length === 0) {
return null;
}
return optionNames;
}
case CellType.COLLABORATOR:
{
if (!Array.isArray(columnValue) || columnValue.length === 0) {
return null;
}
return columnValue.map(function (item) {
return item;
});
}
case CellType.FILE:
{
return Array.isArray(columnValue) ? columnValue : [];
}
default:
{
return columnValue || null;
}
}
};
var generatorUpdateSql = function generatorUpdateSql(table, columns, updated, rowId) {
var columnKey = Object.keys(updated)[0];
var column = columns.find(function (item) {
return item.key === columnKey;
});
var columnName = column.name;
var sql = "update `".concat(table.name, "` set `").concat(columnName, "` = ? where `_id` = ?;");
var updateValue = getConvertedUpdatedValue(column, updated);
var parameters = [updateValue, rowId];
return {
sql: sql,
parameters: parameters
};
};
export { generatorUpdateSql, getConvertedUpdatedValue };