UNPKG

dtable-utils

Version:

dtable common utils

127 lines (122 loc) 4.04 kB
'use strict'; 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;