dtable-utils
Version:
dtable common utils
233 lines (217 loc) • 6.87 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var core = require('../filter/core.js');
var core$1 = require('../group/core.js');
var core$2 = require('../sort/core.js');
var cellType = require('../constants/cell-type.js');
/**
* Get view by id
* @param {array} views e.g. [{ _id, ... }, ...]
* @param {string} viewId
* @returns view, object
*/
var getViewById = function getViewById(views, viewId) {
if (!Array.isArray(views) || !viewId) return null;
return views.find(function (view) {
return view._id === viewId;
});
};
/**
* Get view by name
* @param {array} views
* @param {string} viewName
* @returns view, object
*/
var getViewByName = function getViewByName(views, viewName) {
if (!Array.isArray(views) || !viewName) return null;
return views.find(function (view) {
return view.name === viewName;
});
};
/**
* Check whether the view is archived
* @param {object} view
* @returns bool
*/
var isArchiveView = function isArchiveView(view) {
return view.type === 'archive';
};
/**
* Check whether the view is private
* @param {object} view
* @returns bool
*/
var isPrivateView = function isPrivateView(view) {
return view && view.private_for && view.private_for.length > 0;
};
/**
* Check whether the view contains filters
* @param {object} view e.g. { filters, ... }
* @param {array} columns
* @returns bool
*/
var isFilterView = function isFilterView(view, columns) {
var validFilters = core.getValidFilters(view.filters, columns);
return validFilters.length > 0;
};
/**
* Check whether the view contains groupbys
* @param {object} view e.g. { groupbys, ... }
* @param {array} columns
* @returns bool
*/
var isGroupView = function isGroupView(view, columns) {
var validGroupbys = core$1.getValidGroupbys(view.groupbys, columns);
return validGroupbys.length > 0;
};
/**
* Check whether the view contains sorts
* @param {object} view e.g. { sorts, ... }
* @param {array} columns
* @returns bool
*/
var isSortView = function isSortView(view, columns) {
var validSorts = core$2.getValidSorts(view.sorts, columns);
return validSorts.length > 0;
};
/**
* Check whether the view has hidden columns
* @param {object} view e.g. { hidden_columns, ... }
* @returns bool
*/
var isHiddenColumnsView = function isHiddenColumnsView(view) {
var _ref = view || {},
hidden_columns = _ref.hidden_columns;
return Array.isArray(hidden_columns) && hidden_columns.length > 0;
};
/**
* Check is default view which no contains filters, sorts, groupbys etc.
* @param {object} view e.g. { filters, groupbys, sorts, ... }
* @param {array} columns
* @returns bool
*/
var isDefaultView = function isDefaultView(view, columns) {
return !isFilterView(view, columns) && !isSortView(view, columns) && !isGroupView(view, columns);
};
/**
* Get link columns which used either in filters, groupbys, sorts etc.
* @param {object} view e.g. { filters, groupbys, sorts, ... }
* @param {object} table e.g. { columns, ... }
* @returns link columns, array
*/
var getLinkColumnsUsedInFilters = function getLinkColumnsUsedInFilters(view, table) {
var filters = view.filters,
sorts = view.sorts,
groupbys = view.groupbys;
var columns = table.columns;
if (!Array.isArray(columns)) return [];
var flattenFilters = core.getOneDimensionalFilters(filters);
var validFilters = core.getValidFiltersWithoutError(flattenFilters, columns);
var validSorts = core$2.getValidSorts(sorts, columns);
var validGroupbys = core$1.getValidGroupbys(groupbys, columns);
var hasFilters = validFilters && validFilters.length > 0;
var hasSorts = validSorts && validSorts.length > 0;
var hasGroupbys = validGroupbys && validGroupbys.length > 0;
if (!hasFilters && !hasSorts && !hasGroupbys) return [];
var keyLinkColumnMap = {};
var keyExistLinkColumnMap = {};
var linkColumns = [];
columns.forEach(function (column) {
var key = column.key,
name = column.name,
type = column.type,
data = column.data,
width = column.width;
if (type === cellType.CellType.LINK) {
keyLinkColumnMap[column.key] = {
key: key,
name: name,
type: type,
data: data,
width: width
};
}
});
if (Object.keys(keyLinkColumnMap).length === 0) return [];
if (hasFilters) {
validFilters.forEach(function (filter) {
var filterColumnKey = filter.column_key;
var filterLinkColumn = keyLinkColumnMap[filterColumnKey];
if (filterLinkColumn && !keyExistLinkColumnMap[filterColumnKey]) {
linkColumns.push(filterLinkColumn);
keyExistLinkColumnMap[filterColumnKey] = true;
}
});
}
if (hasSorts) {
validSorts.forEach(function (sort) {
var sortColumnKey = sort.column_key;
var sortLinkColumn = keyLinkColumnMap[sortColumnKey];
if (sortLinkColumn && !keyExistLinkColumnMap[sortColumnKey]) {
linkColumns.push(sortLinkColumn);
keyExistLinkColumnMap[sortColumnKey] = true;
}
});
}
if (hasGroupbys) {
validGroupbys.forEach(function (groupby) {
var groupbyColumnKey = groupby.column_key;
var groupbyLinkColumn = keyLinkColumnMap[groupbyColumnKey];
if (groupbyLinkColumn && !keyExistLinkColumnMap[groupbyColumnKey]) {
linkColumns.push(groupbyLinkColumn);
keyExistLinkColumnMap[groupbyColumnKey] = true;
}
});
}
return linkColumns;
};
/**
* Get no-archived views
* @param {array} views
* @returns no-archived views, array
*/
var getNonArchiveViews = function getNonArchiveViews(views) {
if (!Array.isArray(views)) {
return [];
}
return views.filter(function (view) {
return !isArchiveView(view);
});
};
var getViewShownColumns = function getViewShownColumns(view, columns) {
if (!Array.isArray(columns)) {
return [];
}
if (!isHiddenColumnsView(view)) {
return columns;
}
var hidden_columns = view.hidden_columns;
return columns.filter(function (column) {
return !hidden_columns.includes(column.key);
});
};
/**
* Get non-private views
* @param {array} views
* @returns non-private views, array
*/
var getNonPrivateViews = function getNonPrivateViews(views) {
if (!Array.isArray(views)) {
return [];
}
return views.filter(function (view) {
return !isPrivateView(view);
});
};
exports.getLinkColumnsUsedInFilters = getLinkColumnsUsedInFilters;
exports.getNonArchiveViews = getNonArchiveViews;
exports.getNonPrivateViews = getNonPrivateViews;
exports.getViewById = getViewById;
exports.getViewByName = getViewByName;
exports.getViewShownColumns = getViewShownColumns;
exports.isArchiveView = isArchiveView;
exports.isDefaultView = isDefaultView;
exports.isFilterView = isFilterView;
exports.isGroupView = isGroupView;
exports.isHiddenColumnsView = isHiddenColumnsView;
exports.isSortView = isSortView;
;