UNPKG

dtable-utils

Version:

dtable common utils

122 lines (119 loc) 3.81 kB
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 };