dtable-utils
Version:
dtable common utils
144 lines (141 loc) • 5.8 kB
JavaScript
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 };