UNPKG

dtable-utils

Version:

dtable common utils

144 lines (141 loc) 5.8 kB
import _typeof from '@babel/runtime/helpers/typeof'; import { getTableById } from '../table/core.js'; import { CellType } from '../constants/cell-type.js'; import { FILL_DEFAULT_VALUE_COLUMNS_TYPE, DATE_DEFAULT_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 { DateUtils } from '../date.js'; /** * 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(rows[0]) === 'object'; }; var updateTableRowsWithRowsData = function updateTableRowsWithRowsData(tables, tableId) { var rowsData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var table = 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) { var columnType = column.type, columnData = column.data; if (!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.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 DATE_DEFAULT_TYPES.SPECIFIC_DATE: { var validDate = DateUtils.getValidDate(defaultValue); if (!validDate) break; defaultValueData[column.key] = DateUtils.format(defaultValue, normalFormat); break; } case DATE_DEFAULT_TYPES.CURRENT_DATE: { var date = new Date(); var today = DateUtils.format(date, normalFormat); defaultValueData[column.key] = today; break; } case DATE_DEFAULT_TYPES.DAYS_BEFORE: case 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 === DATE_DEFAULT_TYPES.DAYS_AFTER) { numberOfDaysFromNow = new Date(year, month, day + num, hours, minutes); } else if (defaultValueType === DATE_DEFAULT_TYPES.DAYS_BEFORE) { numberOfDaysFromNow = new Date(year, month, day - num, hours, minutes); } var _validDate = DateUtils.format(numberOfDaysFromNow, normalFormat); defaultValueData[column.key] = _validDate; break; } } } else if (columnType === CellType.COLLABORATOR) { var default_collaborator_type = columnData.default_collaborator_type; if (default_collaborator_type === 'current_user') { defaultValueData[column.key] = [username]; } else { defaultValueData[column.key] = defaultValue; } } else if (columnType === 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.key] = null; return; } var currentUserDepartmentId = currentUserDepartmentIds[0]; if (typeof currentUserDepartmentId !== 'number') { defaultValueData[column.key] = null; return; } defaultValueData[column.key] = currentUserDepartmentId; } } else if (defaultValue || defaultValue === 0) { if (columnType === CellType.TEXT) { defaultValueData[column.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.key] = defaultValue; } } }); return defaultValueData; }; export { getRowDefaultData, isTableRows, updateTableRowsWithRowsData };