dtable-utils
Version:
dtable common utils
127 lines (122 loc) • 4.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var cellType = require('../../constants/cell-type.js');
var column = require('../../constants/column.js');
require('../../constants/filter/filter-column-options.js');
require('../../constants/filter/filter-modifier.js');
require('../../constants/filter/filter-predicate.js');
require('../../constants/filter/filter-is-within.js');
require('../../constants/formula.js');
require('../../constants/sort.js');
require('../../constants/group.js');
require('dayjs');
var number = require('../../number.js');
var option = require('../../cell-value-get/option.js');
require('../../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$1, updated) {
if (!column$1 || column.NOT_SUPPORT_EDIT_COLUMN_TYPE.includes(column$1.type)) {
return null;
}
var columnType = column$1.type,
data = column$1.data;
var columnValue = Object.values(updated)[0];
if (column.NUMERIC_COLUMNS_TYPES.includes(columnType)) {
return number.isNumber(columnValue) ? columnValue : null;
}
switch (columnType) {
case cellType.CellType.TEXT:
case cellType.CellType.URL:
case cellType.CellType.EMAIL:
{
if (!columnValue) {
return null;
}
var text = columnValue.trim();
return text || null;
}
case cellType.CellType.CHECKBOX:
{
if (typeof columnValue !== 'boolean') {
return null;
}
return columnValue;
}
case cellType.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.CellType.LONG_TEXT:
{
if (!columnValue || !Object.prototype.hasOwnProperty.call(columnValue, 'text')) {
return null;
}
return columnValue.text || null;
}
case cellType.CellType.SINGLE_SELECT:
{
var options = data && data.options;
return option.getOptionName(options, columnValue) || null;
}
case cellType.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 option.getOptionName(_options, optionId);
}).filter(Boolean);
if (optionNames.length === 0) {
return null;
}
return optionNames;
}
case cellType.CellType.COLLABORATOR:
{
if (!Array.isArray(columnValue) || columnValue.length === 0) {
return null;
}
return columnValue.map(function (item) {
return item;
});
}
case cellType.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
};
};
exports.generatorUpdateSql = generatorUpdateSql;
exports.getConvertedUpdatedValue = getConvertedUpdatedValue;