dtable-utils
Version:
dtable common utils
154 lines (147 loc) • 6.25 kB
JavaScript
;
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;