UNPKG

dtable-utils

Version:

dtable common utils

154 lines (147 loc) 6.25 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _typeof = require('@babel/runtime/helpers/typeof'); var core = require('../table/core.js'); 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'); var date = require('../date.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof); /** * Check is table rows * @param {array} rows e.g. table rows: [{ _id, xxx }, ...] | view rows: [ row._id, ... ] * @returns bool */ var isTableRows = function isTableRows(rows) { return Array.isArray(rows) && _typeof__default["default"](rows[0]) === 'object'; }; var updateTableRowsWithRowsData = function updateTableRowsWithRowsData(tables, tableId) { var rowsData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var table = core.getTableById(tables, tableId); var idRowDataMap = {}; rowsData.forEach(function (rowData) { return idRowDataMap[rowData._id] = rowData; }); table.rows.forEach(function (row, index) { var rowId = row._id; var newRowData = idRowDataMap[rowId]; if (!newRowData) { return; } var newRow = Object.assign({}, row, newRowData); table.rows[index] = newRow; table.id_row_map[rowId] = newRow; }); }; var getRowDefaultData = function getRowDefaultData(table, collaborators, _ref) { var username = _ref.username, userId = _ref.userId, userDepartmentIdsMap = _ref.userDepartmentIdsMap; var columns = table.columns; var defaultValueData = {}; columns.forEach(function (column$1) { var columnType = column$1.type, columnData = column$1.data; if (!column.FILL_DEFAULT_VALUE_COLUMNS_TYPE.includes(columnType)) return; var enable_fill_default_value = columnData && columnData.enable_fill_default_value; if (!enable_fill_default_value) return; var defaultValue = columnData.default_value; if (columnType === cellType.CellType.DATE) { var defaultValueType = columnData.default_date_type, dateFormat = columnData.format; var showHourAndMinute = dateFormat.indexOf('HH:mm'); var normalFormat = showHourAndMinute > -1 ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD'; switch (defaultValueType) { case column.DATE_DEFAULT_TYPES.SPECIFIC_DATE: { var validDate = date.DateUtils.getValidDate(defaultValue); if (!validDate) break; defaultValueData[column$1.key] = date.DateUtils.format(defaultValue, normalFormat); break; } case column.DATE_DEFAULT_TYPES.CURRENT_DATE: { var date$1 = new Date(); var today = date.DateUtils.format(date$1, normalFormat); defaultValueData[column$1.key] = today; break; } case column.DATE_DEFAULT_TYPES.DAYS_BEFORE: case column.DATE_DEFAULT_TYPES.DAYS_AFTER: { var num = Number(defaultValue); if (!Number.isInteger(num)) { break; } var _date = new Date(); var year = _date.getFullYear(); var month = _date.getMonth(); var day = _date.getDate(); var hours = _date.getHours(); var minutes = _date.getMinutes(); var numberOfDaysFromNow; if (defaultValueType === column.DATE_DEFAULT_TYPES.DAYS_AFTER) { numberOfDaysFromNow = new Date(year, month, day + num, hours, minutes); } else if (defaultValueType === column.DATE_DEFAULT_TYPES.DAYS_BEFORE) { numberOfDaysFromNow = new Date(year, month, day - num, hours, minutes); } var _validDate = date.DateUtils.format(numberOfDaysFromNow, normalFormat); defaultValueData[column$1.key] = _validDate; break; } } } else if (columnType === cellType.CellType.COLLABORATOR) { var default_collaborator_type = columnData.default_collaborator_type; if (default_collaborator_type === 'current_user') { defaultValueData[column$1.key] = [username]; } else { defaultValueData[column$1.key] = defaultValue; } } else if (columnType === cellType.CellType.DEPARTMENT_SINGLE_SELECT) { if (defaultValue === 'current_user_department') { var currentUserDepartmentIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_ids; if (!Array.isArray(currentUserDepartmentIds) || currentUserDepartmentIds.length === 0) { defaultValueData[column$1.key] = null; return; } var currentUserDepartmentId = currentUserDepartmentIds[0]; if (typeof currentUserDepartmentId !== 'number') { defaultValueData[column$1.key] = null; return; } defaultValueData[column$1.key] = currentUserDepartmentId; } } else if (defaultValue || defaultValue === 0) { if (columnType === cellType.CellType.TEXT) { defaultValueData[column$1.key] = defaultValue.replace(/\{[^\}]+\}/ig, function (specialVariable) { var collaborator = collaborators.find(function (item) { return item.email === username; }); if (specialVariable.toLocaleLowerCase() === '{creator.name}') { if (collaborator) { return collaborator.name; } } else if (specialVariable.toLocaleLowerCase() === '{creator.id}') { if (userId) { return userId; } } return ''; }); } else { defaultValueData[column$1.key] = defaultValue; } } }); return defaultValueData; }; exports.getRowDefaultData = getRowDefaultData; exports.isTableRows = isTableRows; exports.updateTableRowsWithRowsData = updateTableRowsWithRowsData;