UNPKG

basicprimitives

Version:

Basic Primitives Diagrams for JavaScript - data visualization components library that implements organizational chart and multi-parent dependency diagrams, contains implementations of JavaScript Controls and PDF rendering plugins.

67 lines (57 loc) 2.02 kB
import FamilyNormalizer from './FamilyNormalizer'; import { GroupByType } from '../../../enums'; import Family from '../../../algorithms/Family'; function getLevels(family) { var levels = []; family.loopLevels(this, true, function (itemid, item, level) { var newItem = { id: itemid }; var children = []; family.loopChildren(this, itemid, function (itemid, item, levelIndex) { if (levelIndex > 0) { return family.BREAK; } children.push(itemid); }); if (children.length > 0) { newItem.children = children; } levels.push(newItem); }); return levels; } function normalizeLogicalFamilyTask(items) { var family = Family(); for (var index = 0; index < items.length; index += 1) { var item = items[index]; family.add(item.parents, item.id, item); } var maximumFamItemId = 100; var familyNormalizer = new FamilyNormalizer(true); familyNormalizer.normalize({ groupByType: GroupByType.Parents, alignBylevels: false }, family, maximumFamItemId); return getLevels(family); } test("Function should add extra invisible items between nodes having gaps between levels", () => { var items = [ { id: 1, name: "1" }, { id: 2, parents: [1], name: "2" }, { id: 7, parents: [1], name: "7" }, { id: 3, parents: [2], name: "3" }, { id: 4, parents: [3], name: "4" }, { id: 5, parents: [4], name: "5" }, { id: 6, parents: [5, 7], name: "6" } ]; var levels = normalizeLogicalFamilyTask(items); var expectedLevels = [ { "id": "1", "children": ["2", "7"] }, { "id": "2", "children": ["3"] }, { "id": "7", "children": ["103"] }, { "id": "3", "children": ["4"] }, { "id": "103", "children": ["102"] }, { "id": "4", "children": ["5"] }, { "id": "102", "children": ["101"] }, { "id": "5", "children": ["6"] }, { "id": "101", "children": ["6"] }, { "id": "6" } ]; expect(levels).toEqual(expectedLevels); });