med-table
Version:
Wrapper over table of primeng library for Ministry of Health
56 lines • 10.5 kB
JavaScript
import { isEqual } from 'lodash';
export const isExist = (value) => value !== undefined && value !== null && value !== '' || Array.isArray(value) && value.length;
export const deepClone = (data) => JSON.parse(JSON.stringify(data));
export const getMaxDeepKeyLevel = (data, key, deep = 1) => {
const STEP = 1;
const levels = data.map(({ [key]: prop }) => prop ? getMaxDeepKeyLevel(prop, key, deep + STEP) : deep);
return Math.max(...levels);
};
export const getNestedList = (data, key, deep) => {
const STEP = 1;
if (!deep)
return data;
const mapHandler = (data) => data.map(el => el ? el[key] : el).flat(deep);
return deep - STEP ? mapHandler(getNestedList(data, key, deep - STEP)) : mapHandler(data);
};
export const getColspanByKey = (column, key) => {
const ONE_COL = 1;
const { [key]: prop } = column;
if (!prop || !prop.length)
return ONE_COL;
let total = 0;
prop.forEach(el => {
total += el[key] ? getColspanByKey(el, key) : ONE_COL;
});
return total;
};
export const getRowspanByLevelAndKey = (data, key, deepLevel, currentLevel) => {
const DELTA = 1;
const { [key]: prop = [] } = data;
const levelsToDown = getMaxDeepKeyLevel(prop, key);
const emptyRows = !currentLevel ? deepLevel - (levelsToDown + DELTA) : 0;
if (!isFinite(levelsToDown))
return deepLevel - currentLevel;
return deepLevel - (levelsToDown + currentLevel + emptyRows);
};
export const getObjectsByLevel = (list, level, childKey) => {
if (!level)
return list;
const newList = list.map(el => el[childKey] ? el[childKey] : el).flat();
const hasChildren = newList.some(el => el[childKey]);
if (hasChildren) {
return getObjectsByLevel(newList, --level, childKey);
}
return newList;
};
export const getColumnIndex = (list, obj, childKey) => {
const index = list.findIndex((el) => isEqual(obj, el));
if (index < 0)
return 0;
const elementsBeforeCurrent = list.slice(0, index);
return elementsBeforeCurrent
.map(({ [childKey]: children }) => children ? children.length : 1)
.reduce((acc, cur) => acc + cur, 0);
};
export const createArrayByNumber = (length) => Array(length).fill(0).map((x, i) => i);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWQtdGFibGUvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO0FBRXJJLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFJLElBQU8sRUFBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBZ0MsSUFBUyxFQUFFLEdBQVcsRUFBRSxPQUFlLENBQUMsRUFBVSxFQUFFO0lBQ3BILE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNmLE1BQU0sTUFBTSxHQUFhLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUE0QyxJQUFTLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBUyxF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QUFRLENBQUMsQ0FBQztLQUN6RDtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFnQyxJQUFTLEVBQUUsR0FBTSxFQUFFLFFBQWlCLEVBQVUsRUFBRTtJQUM1RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkQsSUFBSSxLQUFLLEdBQUcsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbkQsT0FBTyxxQkFBcUI7U0FDekIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqRSxNQUFNLENBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBYyxFQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjb25zdCBpc0V4aXN0ID0gKHZhbHVlOiBhbnkpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aDtcblxuZXhwb3J0IGNvbnN0IGRlZXBDbG9uZSA9IDxSPihkYXRhOiBSKTogUiA9PiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuZXhwb3J0IGNvbnN0IGdldE1heERlZXBLZXlMZXZlbCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oZGF0YTogVFtdLCBrZXk6IHN0cmluZywgZGVlcDogbnVtYmVyID0gMSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IFNURVAgPSAxO1xuICBjb25zdCBsZXZlbHM6IG51bWJlcltdID0gZGF0YS5tYXAoKHsgW2tleV06IHByb3AgfSkgPT4gcHJvcCA/IGdldE1heERlZXBLZXlMZXZlbChwcm9wLCBrZXksIGRlZXAgKyBTVEVQKSA6IGRlZXApO1xuICByZXR1cm4gTWF0aC5tYXgoLi4ubGV2ZWxzKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldE5lc3RlZExpc3QgPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ+KGRhdGE6IFRbXSwga2V5OiBzdHJpbmcsIGRlZXA6IG51bWJlcik6IGFueVtdID0+IHtcbiAgY29uc3QgU1RFUCA9IDE7XG4gIGlmICghZGVlcCkgcmV0dXJuIGRhdGE7XG4gIGNvbnN0IG1hcEhhbmRsZXIgPSAoZGF0YTogVFtdKSA9PiBkYXRhLm1hcChlbCA9PiBlbCA/IGVsW2tleV0gOiBlbCkuZmxhdChkZWVwKTtcbiAgcmV0dXJuIGRlZXAgLSBTVEVQID8gbWFwSGFuZGxlcihnZXROZXN0ZWRMaXN0KGRhdGEsIGtleSwgZGVlcCAtIFNURVApKSA6IG1hcEhhbmRsZXIoZGF0YSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xzcGFuQnlLZXkgPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KGNvbHVtbjogVCwga2V5OiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICBjb25zdCBPTkVfQ09MID0gMTtcbiAgY29uc3QgeyBba2V5XTogcHJvcCB9ID0gY29sdW1uO1xuXG4gIGlmICghcHJvcCB8fCAhcHJvcC5sZW5ndGgpIHJldHVybiBPTkVfQ09MO1xuICBsZXQgdG90YWwgPSAwO1xuXG4gIChwcm9wIGFzIFRbXSkuZm9yRWFjaChlbCA9PiB7XG4gICAgdG90YWwgKz0gZWxba2V5XSA/IGdldENvbHNwYW5CeUtleShlbCwga2V5KSA6IE9ORV9DT0w7XG4gIH0pO1xuXG4gIHJldHVybiB0b3RhbDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFJvd3NwYW5CeUxldmVsQW5kS2V5ID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgZGF0YTogVCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlZXBMZXZlbDogbnVtYmVyLFxuICBjdXJyZW50TGV2ZWw6IG51bWJlcixcbik6IG51bWJlciA9PiB7XG4gIGNvbnN0IERFTFRBID0gMTtcbiAgY29uc3Qge1trZXldOiBwcm9wID0gW119ID0gZGF0YTtcbiAgY29uc3QgbGV2ZWxzVG9Eb3duID0gZ2V0TWF4RGVlcEtleUxldmVsKHByb3AsIGtleSk7XG4gIGNvbnN0IGVtcHR5Um93cyA9ICFjdXJyZW50TGV2ZWwgPyBkZWVwTGV2ZWwgLSAobGV2ZWxzVG9Eb3duICsgREVMVEEpIDogMDtcblxuICBpZiAoIWlzRmluaXRlKGxldmVsc1RvRG93bikpIHJldHVybiBkZWVwTGV2ZWwgLSBjdXJyZW50TGV2ZWw7XG4gIHJldHVybiBkZWVwTGV2ZWwgLSAobGV2ZWxzVG9Eb3duICsgY3VycmVudExldmVsICsgZW1wdHlSb3dzKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldE9iamVjdHNCeUxldmVsID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihsaXN0OiBUW10sIGxldmVsOiBudW1iZXIsIGNoaWxkS2V5OiBrZXlvZiBUKTogVFtdID0+IHtcbiAgaWYgKCFsZXZlbCkgcmV0dXJuIGxpc3Q7XG5cbiAgY29uc3QgbmV3TGlzdDogVFtdID0gbGlzdC5tYXAoZWwgPT4gZWxbY2hpbGRLZXldID8gZWxbY2hpbGRLZXldIDogZWwpLmZsYXQoKSBhcyBUW107XG4gIGNvbnN0IGhhc0NoaWxkcmVuID0gbmV3TGlzdC5zb21lKGVsID0+IGVsW2NoaWxkS2V5XSk7XG5cbiAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgcmV0dXJuIGdldE9iamVjdHNCeUxldmVsPFQ+KG5ld0xpc3QsIC0tbGV2ZWwsIGNoaWxkS2V5KTtcbiAgfVxuXG4gIHJldHVybiBuZXdMaXN0O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29sdW1uSW5kZXggPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KGxpc3Q6IFRbXSwgb2JqOiBULCBjaGlsZEtleToga2V5b2YgVCk6IG51bWJlciA9PiB7XG4gIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoKGVsKSA9PiBpc0VxdWFsKG9iaiwgZWwpKTtcblxuICBpZiAoaW5kZXggPCAwKSByZXR1cm4gMDtcblxuICBjb25zdCBlbGVtZW50c0JlZm9yZUN1cnJlbnQgPSBsaXN0LnNsaWNlKDAsIGluZGV4KTtcblxuICByZXR1cm4gZWxlbWVudHNCZWZvcmVDdXJyZW50XG4gICAgLm1hcCgoeyBbY2hpbGRLZXldOiBjaGlsZHJlbiB9KSA9PiBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDEpXG4gICAgLnJlZHVjZTxudW1iZXI+KChhY2MsIGN1cikgPT4gYWNjICsgY3VyLCAwKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycmF5QnlOdW1iZXIgPSAobGVuZ3RoOiBudW1iZXIpOiBudW1iZXJbXSA9PiBBcnJheShsZW5ndGgpLmZpbGwoMCkubWFwKCh4LGkpID0+IGkpO1xuIl19