UNPKG

dtable-utils

Version:

dtable common utils

233 lines (217 loc) 6.87 kB
'use strict'; 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;