Detalhes do pacote

basicprimitives

BasicPrimitives11.7kSEE LICENSE IN license.pdf6.5.1

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.

data analytics, data visualization, visualization, diagrams

readme (leia-me)

Basic Primitives Diagrams for JavaScript

Data visualization diagramming components library for dependencies visualization and analysis that implements organizational chart, family chart, inheritance, dependency trees, and business ownership diagrams provides a reach feature set for automatic layout customization and visual node annotation.

Project references

Products

Basic Primitives Diagrams for JavaScript

  • 100% client side JavaScript layout and rendering.
  • No dependencies on 3rd party libraries.
  • Webpack Tree Shaking support

Basic Primitives Diagrams for React

Basic Primitives Diagrams for PDFkit

  • Browser based or NodeJS based PDF rendering

Open Source

One of our product's key features is that you can download the source code under any of the licenses, free or not, and make your edits to it. Source code will enable you to make modifications and guarantees long term security for your product. Additionally, the library's source code can be validated and easily tested through our samples, demos, and unit tests. The samples, demos, and unit tests can be found online and provided within the product packages.

Product for visual data analysis of diagrams

Business intelligence systems and applications are designed for two major areas: reporting and analytics. Reporting applications display the original data sets and individual values without modifications, omitted values, roundings, and excessive abbreviations. On the other side, some applications are designed for data analytics and are focused on the most valuable and user-relevant data. Going as far as removing data deemed irrelevant to the end-user depends on what they are interested in analyzing. Our components provide various API options to the developers to configure our diagrams and use them for both reporting and analytics scenarios.

Auto layout and fitting the diagram into a single screen space

When using a graphics editor to draw your diagrams manually, it is common to have large gaps between the nodes. Large gaps between nodes make the chart unreadable, hard to edit, and navigate. On top of that, the diagram could have screen size intervals between items on a large scale, so it is easy to get empty screen size areas between branches of the large chart. Admittedly the computer UI allows the user to scale and fit the diagram for visualizing it on a single screen. But in that case, the items become small and unreadable as there is no scaling priority, and the nodes are just too small to be readable Here is a PDF example demonstrating the problem. The primary goal of our approach to organizational charts and other diagrams visualization is to resolve these issues. Our product component specializes in displaying large graphs on a single screen or nearly removing all scrolling while at the same time not affecting the diagram's usability. Autofit is only possible when the diagramming component is in control of the auto layout for the nodes.

  • Minimizing nodes into markers and labels: Our component provides a special mode that renders the diagram nodes in the form of dots. This mode is a highly scalable form capable of drawing large numbers of nodes while not affecting the general application performance. With this, control can fit huge diagrams into available screen space.
  • The user has focused navigation as they go node by node. The focused nodes are kept full size as the less relevant nodes in the user view are minimized. The user also has the option to customize which nodes are relevant via selection, annotations, and navigation options. By default, the chart displays the cursor selected item and its neighbors in full size and minimizes all other less relevant nodes. By clicking on neighboring nodes, the user will focus on the diagram's newly selected area. Local zoom around the cursor item works for all available types of components.
  • Pinning of nodes in the chart. All selected/checked items are always displayed full size. All other nodes stay minimized. Pinning allows us to pin/select items in different branches of the diagram and shows them side by side within available screen space for visual comparison.
  • Diagram auto-layout consistency. Our auto-layout provides visual uniformity across all diagramming documents. The user can customize the visual appearance for any diagrams that they wish manually. All users have various skills and preferences, so auto-layout provides consistent default diagram viewing throughout the organization regardless of them.
  • Always up to date. Your application's diagrams will not be affected by changes in the component's layout algorithms and application data. Your visualizations will always be up to date and in sync with your data.

Stable rules-based auto-layout of multi-parent hierarchies

The core problem of dependency diagrams layout is the endless number of permutations. As a result, every time we make any changes to the diagram's relations, we get a new "optimal" layout. However, that "optimal" layout can be so different from the previous "optimal" layout that the end-user needs to relearn the diagram again and again. This problem becomes worse the more nodes you have. The analysis takes so much time that it makes the automatic diagram layout useless. So the diagram mustn't change much between user edits. So to overcome that problem, we added support of user rules that the auto layout algorithm respects. The problem is that "hard" rules are equivalent to the manual layout if we start to define the placement of every node manually, which destroys the whole point of even having an auto layout for the nodes. We introduced "soft" rules, which our control follows as long as they don't contradict the purpose. Our layout algorithm ignores them when they are not applicable.

  • Moderate layout changes between edits. Multi parent hierarchy diagram does not change much when we add or remove nodes. The developer is encouraged to add additions options to nodes to indicate relative nodes placement to each other. However, that placement does not enforce layout; control still can choose optimal nodes order itself.

Auto sorting the diagram nodes into levels

It is not apparent, but we group nodes in the diagram into distinct levels. They give the end-user a clear indication of a node's relations. For any given node, all nodes that are below it in the diagram are either it's dependents or minors. On the contrary, any nodes found above the node are either its parents or superiors. Levels give a simple and straightforward visual sorting method that helps when analyzing and viewing large diagrams.

Auto alignment of nodes relative to each other

Our auto-layout engine focuses much effort on the alignment of the nodes when visualizing them. Alignment is essential because when the end-user analyzes the diagram, it is easier to identify their dependencies by looking at their alignment and positions rather than tracing connection lines between nodes. For example, a set of nodes shaped into a pyramid formation gives a clear vision of parent-child relations between individual nodes and groups of children inside the data structure. We need minimal to no connection lines in such an ideal case, so we archive diagrams visualization's ultimate goal where node position shows node relation with other nodes within the chart.

Customizable Placement of children

By default, we display hierarchy as a regular tree, where children that belong to a single parent have the same rank and are equal to each other. Due to that, we place them as a single horizontal row below the parent. However, in real organizational hierarchies, we may have many exceptional cases where the end-user needs to have some child nodes placed differently from its peers. Our control provides child types that the end-user can use to set the child into a custom position around its parent node. These placement options are useful for creating roles such as an Assistant, Adviser, various Partners, and co-heads in the organization. By default, we place children into a horizontal line below the parent; this may result in the end-user having to scroll screens to view all of the nodes. So we provide options to place children into multiple rows or form them into a square/matrix formation to address this issue. Compacting the child nodes into a much smaller area reduces sideways screen scrolling and improves diagrams usability.

Automatic transformation of connection lines between nodes

A diagram can have multiple parent and child nodes all interconnected between each other. This relationship results in an excessive number of connections between the nodes and creates a visual clutter in the diagram. In extreme cases, this makes the chart barely readable.

The following is an example of a complete bipartite graph having every parent node connected with every child node.

Complete Bipartite Graph

A complete bipartite graph is an extreme example of family relations. Still, it could happen, and the component automatically groups connectors into bundles, so it produces the following optimized set of connections:

Complete Bipartite Graph Bundled

This connector bundling method is actively used throughout the product to increase the readability of the diagrams.

Automatic elimination of redundant relations between nodes

Another typical problem with visualizing connections is the possible excessive amount of relations that can take place between multiple grandchildren and grandparent nodes. Usually, when we draw family diagrams, we are more interested to see the overall order of dependencies over the more direct and specific node relations. In a family tree case, we know that nodes have links to one another via their immediate parents. We can remove the direct ties between non-immediate parents and reduce the amount of visual clutter on the screen and still get the same dependencies order. By doing this, the diagram becomes a lot easier to analyze, view and navigate.

Excessive amount of connections

Annotating diagram nodes

Every time we make changes to our diagrams, we need to visualize the performed transaction. Otherwise, it is hard to follow the organizational chart changes, so to show the diagram's transition from one state to another, the control provides various annotations to the end-user. Annotations are API elements that are attached to the diagram nodes. We draw our annotations either in front of the nodes or in the background. The annotations don't affect the placement of the nodes in any way. As a result, the control redraws them instantaneously without rendering or recalculating the actual diagram layout. It would be best if you avoid usage of annotations for every node in the diagram. The application is supposed to show them and add them to the chart only in the current user focus or operation that the user is performing with the data. Please, note that annotations have minimal mutual conflict resolution. As a result, it is possible to clutter the diagram with an excessive number of annotations. But they are nevertheless handy when describing or giving node-specific context or details to the chart.

  • Connector lines - Direct lines between nodes across the diagram.
  • Background - It is equivalent to highlighting text with a marker. The component merges overlapping background annotations into one if they overlap each other.
  • Highlight path - A highlighter styled line that highlights the connections between directly connected nodes and helps the end-user navigate the diagram.
  • Shape annotations - play the role of highlight marker scatches on top of existing diagram nodes.
  • In-layout labels - Are annotations drawn over connector lines. They do not overlap any nodes, so they are placed nicely between them, but their adding is similar to adding new diagram nodes, so our control triggers layout optimization and rendering cycle.

First-time user experience with our product

Visualizing diagrams is a complex task that requires a lot of customizations and tuning. Long before we get something visible on the screen, we need to set and configure many diagram options. To simplify the first-time developer experience with our component, we provide default functionality for almost everything:

  • Default node template - You need to provide your data, and control will render it without setting any visual options.
  • Standard collection control features - Our product follows the standard behavior for regular list and tree collection controls available in many other UI frameworks.
  • User buttons panel - A custom in layout context panel to render context buttons or other UI elements. The diagram needs maximum screen space, so cutting the screen's real estate on the diagram's sides for the context buttons panel takes valuable space out of the chart. Placing the buttons in pop-up context menus or dialogs is also not ideal since it decreases UI discoverability and first-time user experience. So our component reserves space right inside of the diagram layout for the buttons panel.
  • Basic visual categories - Our data visualization component has various ways to display general data categories: titles, vertical titles, title colors, photos, and labels.

Free for Non-commercial

Do you want to use a Basic Primitives diagram for a personal website, a school site, or a non-profit organization? Then you don't need the author's permission. Just go on and use the Basic Primitives diagram. However, for commercial website and project uses, see our License and Pricing.

Compatibility

  • Works in AngularJS directive

Performance

Through a full API, you can add, remove and modify individual items and their properties. The component will only update the visual elements affected by the API changes. We put in much effort to make it happen!

Copyright (c) 2013 - 2021 Basic Primitives Inc

changelog (log de mudanças)

Version 6.5.1

  • Fixed level index for regular children

    Version 6.5.0

    Warning: Non-backward compatible API changes!
  • Added alignBranches option to OrgConfig.
  • Removed children formation for items having levelOffset.
  • Fixed highlight path annotation tracing over partner connection.
  • Fixed placeAssistantsAboveChildren property for multiple assistants rows

    Version 6.4.1

  • Added onGroupTitleRender, onLevelTitleRender and onLevelBackgroundRender options to OrgConfig and FamConfig

    Version 6.4.0

  • Added minimumVisibleLevels option to OrgConfig and FamConfig
  • Added padding option to OrgConfig and FamConfig
  • Fixed childrenPlacementType option breaking multiple root nodes placement.
  • Fixed mouse interactivity for scaled and rotated right or bottom diagrams.
  • Fixed family matrix layout for top and bottom in-row vertical alignment.
  • Fixed non-optimized selection of loops in the family diagram.
  • Fixed arrows rendering for vertical single parent connectors.
  • Fixed loops optimization algorithm. Made it fault-tolerant.
  • Fixed arrows direction for loops.

    Version 6.3.1

  • Fixed family diagram padding
  • Fixed onButtonsRender in TemplateConfig

    Version 6.3.0

    Warning: Non-backward compatible API changes!
  • Added matrixId and addToMatrix properties to FamItemConfig.
  • Fixed label annotations placement for nodes having matrix layout.
  • Fixed label annotations placement to be in between regular node levels.
  • Fixed horizontal arrows for assistants and adviser item types.
  • Removed spouses property from FamItemConfig.
  • Removed loopsLayoutMode property from FamConfig.

    Version 6.2.2

  • Fixed Family Relations Optimizer

    Version 6.2.1

    Warning: Non-backward compatible API changes!
  • Removed Canvas support.
  • Removed GraphicsType enumeration.
  • Removed graphicsType from OrgConfig and FamConfig

    Version 6.1.1

  • Fixed the levelOffset property to work regardless of empty levels

    Version 6.1.0

  • Added LevelAnnotationConfig
  • Added level annotation options to OrgConfig and FamConfig
  • Fixed frame auto-hiding for small control size
  • Fixed group title options in PDFKit plugins.
  • Fixed shapes opacity in PDFKit plugins.

    Version 6.0.0

    Warning: Non-backward compatible API changes!
  • Refactored library into ES6 Modules.
  • Replaced custom merge tool with Webpack
  • Removed common, orgdiagram and famdiagram namespaces.
  • Added Webpack Tree Shaking support
  • Renamed primitives.orgdiagram.Config into OrgConfig
  • Renamed primitives.orgdiagram.ItemConfig into OrgItemConfig
  • Renamed primitives.orgdiagram.Control into OrgDiagram
  • Renamed primitives.famdiagram.Config into FamConfig
  • Renamed primitives.famdiagram.ItemConfig into FamItemConfig
  • Renamed primitives.famdiagram.Control into FamDiagram
  • Renamed primitives.pdf.orgdiagram.Plugin into OrgDiagramPdfkit
  • Renamed primitives.pdf.famdiagram.Plugin into FamDiagramPdfkit
  • Removed ButtonConfig, use onButtonsRender callback instead.
  • Added hasButtons property to TemplateConfig
  • Added onButtonsRender callback to OrgConfig, FamConfig and TemplateConfig.
  • Removed jQuery widgets wrapping library and jQuery samples framework.
  • Refactored jUnit tests into Jest.
  • Refactored samples framework into Bootstrap

    Version 5.9.1

  • Fixed frame placeholder size

    Version 5.9.0

  • Added showFrame, fameInnerPadding, frameOuterPadding properties to primitives.orgdiagram.Config & primitives.famdiagram.Config
  • Modified call-out annotation placement for minimized nodes placed outside view port.
  • Fixed exception when selectedItems collection contains non-existing items.
  • Fixed center on cursor in AutoSize mode

    Version 5.8.2

  • Fixed selectionPathMode in Family Diagram.

    Version 5.8.1

  • Fixed performance bug in loops layout optimization

    Version 5.8.0

  • Added loopsLayoutMode property to primitives.famdiagram.Config. Property sets looped layout optimization mode in Family Diagram. See Loops Layout Optimization use case.
  • Added extra arrows to vertical segments of loops in family diagram
  • Fixed spouses selection in the family diagram
  • Fixed background annotation includeChildren property in family diagram having loops between items.

    Version 5.7.0

  • Added primaryParent property to primitives.famdiagram.ItemConfig. Property defines user preference for item placement relative to its multiple parents in Family Diagram. See Technological Tree Demo.

    Version 5.6.4

  • Updated IntelliSense API annotations

    Version 5.6.3

  • Fixed initial callout placement
  • Fixed neighbors selection in family diagram having inactive nodes

    Version 5.6.2

  • Fixed performance bug in the value-reader.

    Version 5.6.0

  • Added placeAssistantsAboveChildren and placeAdvisersAboveChildren properties to primitives.orgdiagram.Config & primitives.orgdiagram.ItemConfig.
  • Added levelOffset property to primitives.orgdiagram.ItemConfig.

    Version 5.5.0

  • Added IntelliSense API annotations to code
  • Added API annotations conversion into markdown

    Version 5.4.15

  • Fixed minimized items highlight alignment in React

    Version 5.4.14

  • Fixed objects comparison for React JSX

    Version 5.4.12

  • Removed CSS file from React component

    Version 5.4.0

  • Added OrgDiagram & FamDiagram React components and samples.
  • Extracted web-specific functionality out of the core.
  • Added onButtonsRender event to TemplateConfig.
  • Added support of cycles in objects definitions of labels.
  • Fixed CSS scale bugs.
  • Removed jQuery UI Widget Organizational Chart Editor.
  • Removed PHP samples.

    Version 5.3.1

  • Fixed performance issue in react demo.

    Version 5.3.0

  • Added relativeItem, placementType and position properties to primitives.famdiagram.ItemConfig. Properties define user preferences for items ordering in the family diagram. See "Family Members Order" data set in Family Chart & Annotations Demo.

    Version 5.2.4

  • Merged fix for straight connector annotations labels.

    Version 5.2.2

  • Fixed update method. When only node content properties change like title and description, the chart will render only them. See the cursor item properties panel in Organizational Chart Editor Demo in React Demos.
  • Fixed elbows of connection lines.

    Version 5.2.1

  • Fixed performance bug. JSONML Templates triggered layout on every update. See Dependencies Chart Demo in React Demos.

    Version 5.2.0

  • Added optional center on cursor parameter to update method. See React Demos for usage.

    Version 5.1.1

  • Fixed document undefined bug in NodeJS environment.
  • Published React Demo & Tutorial to Github

    Version 5.1.0

Warning: Extracted jQuery UI Widgets into separate file primitives.jquery.latest.js!

  • Added npm package header and published library to www.npmjs.com
  • Added pagination for nodes in page fit mode set to None.

    Version 5.0.4

  • Fixed cursor neighbors selection over template inactive items.

    Version 5.0.3

  • Fixed call-out placement in auto-size mode when control is placed in document layout and scrolled.

    Version 5.0.2

  • Fixed highlight path annotation tracing when famDiagram option hiding direct connections to grandparents is enabled.
  • Fixed false layout invalidation on highlight changed event

    Version 5.0.1

  • Fixed fit to page mode in primitives.famdigram.Control.

    Version 5.0.0

    Warning: Non-backward compatible API changes!
  • Removed dependency on jQuery.
  • Added pure JavaScript Controls primitives.orgdiagram.Control and primitives.famdiagram.Control
  • Added JSON ML support for HTML templates
  • Removed support of VML and IE8
  • Reworked Drag & Scroll to use native JavaScript draggable object
  • Fixed highlight call-out placement in CSS Zoom scale mode.
  • Fixed selection checkboxes to ignore mouse double click event
  • Fixed controls rendering inside divs having computed width and height

    Version 4.3.0

  • Added option groupTitlePlacementType to primitives.famdiagram.Config and primitives.orgdiagram.Config. Property swaps positions of group title and buttons.

    Version 4.2.3

  • Reorganized samples.

    Version 4.2.2

  • Fixed selection/pin checkbox label click in IE

    Version 4.2.1

  • Updated demos and samples to use jQuery 3.3.1 & jQuery UI 1.12.1 libraries.
  • Fixed bug in jQuery UI Layout library used in demos.

    Version 4.2.0

  • Added option enableMatrixLayout, minimumMatrixSize and maximumColumnsInMatrix to primitives.famdiagram.Config. See Family Chart & Annotations demo for usage.
  • Reworked background annotations merge. Items backgrounds don't grow beyond padding area anymore.
  • Reworked keyboard navigation. So it respects nodes crossing multiple layers of nodes.
  • Reworked mouse highlight gravity. Nodes are no longer highlighted when the cursor is out of node bounds.
  • Removed PhantomJS support and page split rendering mode. Use PDFkit plugin for PDF generation and printing.
  • Reworked labels conflicts resolution in labels visibility auto mode.
  • Fixed inactive items usage in Family diagram.
  • Improved layout update and rendering triggered by cursor change event.

    Version 4.1.0

  • Added option hideGrandParentsConnectors for primitives.famdiagram.Config. See patents demo for usage.

    Version 4.0.0

  • Reworked horizontal alignment algorithm for Family chart

    Version 3.7.10

  • Fixed option showCallout for primitives.famdiagram.ItemConfig and primitives.orgdiagram.ItemConfig

    Version 3.7.9

  • Added option calloutMaximumVisibility to primitives.famdiagram.Config and primitives.orgdiagram.Config

    Version 3.7.8

  • Fixed panning in IE10 in Windows 7

    Version 3.7.7

  • Added group title font size option

    Version 3.7.6

  • Fixed refresh dependency on items order in items collection

    Version 3.7.5

  • Added extra horizontal arrows over connection lines with following options showExtraArrows and extraArrowsMinimumSpace to primitives.famdiagram.Config and primitives.orgdiagram.Config.

    Version 3.7.4

  • Added options highlightGravityRadius and calloutPlacementOffset to primitives.famdiagram.Config and primitives.orgdiagram.Config
  • Improved call-out placement, so it is placed across connectors and does not block neighbors of highlighted item anymore.

    Version 3.7.3

  • Named layers with CSS classes

    Version 3.7.2

  • Added alignByLevels options to primitives.famdiagram.Config, see Family Demo

    Version 3.7.1

  • Fixed highlighted item callout placement
  • Fixed bugs in famDiagram layout algorithms

    Version 3.7.0

  • Improved highlight connection path annotations rendering time
  • Added multiple rendering styles support for highlight connection path annotation
  • Improved famDiagram horizontal alignment

    Version 3.6.6

  • Fixed straight line annotation rendering

    Version 3.6.5

  • Fixed organizational chart horizontal alignment

    Version 3.6.4

  • Fixed connection lines of children having vertical layout

    Version 3.6.3

  • Eliminated recursive calls.

    Version 3.6.2

  • Fixed exception on null image reference in default PDF item template.

    Version 3.6.1

  • Fixed user templates support in PDF plugins. See User Item template sample in Client Side PDF Generation Demo.

    Version 3.6.0

  • Added PDF generation support with PDFkit library for Node and in the browser. See Client Side PDF Generation Demo.

    Version 3.5.0

  • Added resolution of straight collinear connectors overlapping. See "Highlight Movement & Annotations" demo.
  • Optimized connector annotations rendering.
  • Improved cross diagram connection lines stacking.
  • Disabled refresh on event handlers binding.

    Version 3.4.1

  • Fixed layout update on widget placeholder resize and forced update in refresh mode.

    Version 3.4.0

  • Added primitives.common.ConnectorShapeType.BothWay option to enumeration. See Connector and Family Chart Demos for Connector Annotation options.

    Version 3.3.1

  • Fixed options updates within onCursorChanging and onHighlightChanging event handlers.

    Version 3.3.0

  • Added primitives.common.ConnectorPlacementType enumerations, having following options: Offbeat & Straight.
  • Added connectorPlacementType option to primitives.orgdiagram.Config & primitives.famdiagram.Config

    Version 3.2.0

  • Added primitives.common.NavigationMode.HighlightOnly option to navigationMode option.
  • Fixed item position in mouse events.
  • Changed order of event handler invocation and cursor/highlight option assignment.

    Version 3.1.2

  • Fixed PositonHighlight update mode

    Version 3.1.1

  • Fixed enablePanning option.

    Version 3.1.0

  • Added enumeration primitives.common.NavigationMode and navigationMode option disabling control's highlight and cursor interactivity when needed. See Interactivity options for Large Hierarchy & Family Demos.

    Version 3.0.0

  • Optimized data processing and rendering. See Controls Processing Diagrams.
  • Fixed CSS scale. See primitives.famdiagram.Config.scale and primitives.orgdiagram.Config.scale options
  • Added neighboursSelectionMode option to primitives.famdiagram.Config. See primitives.common.NeighboursSelectionMode enumeration for ParentsAndChildren & ParentsChildrenSiblingsAndSpouses options of cursor related nodes selection.

    Version 2.1.10

  • Fixed label annotations placement on loop connections in famDiagram.

    Version 2.1.9

  • Fixed label annotations placement on loop connections in famDiagram.
  • Changed arrow size of 2 & 3 pixel wide lines.

    Version 2.1.8

  • Added PageFitMode.AutoSize, autoSizeMaximum and autoSizeMinimum options to Configs of orgDiagram & famDiagram widgets.
  • Changed PageFitMode.PrintPreview mode to auto size widget to show all nodes of the diagram.

    Version 2.1.7

  • Fixed multiple spouse's connection lines.

    Version 2.1.6

  • Added minimizedItemShapeType to Config, ItemConfig & TemplateConfig of orgDigram & famDiagram widgets.
  • Added minimizedItemLineWidth, minimizedItemBorderColor, minimizedItemLineType, minimizedItemFillColor and minimizedItemOpacity to TemplateConfig of orgDigram & famDiagram widgets.
  • Fixed spouses connection lines.
  • Fixed spouses navigation.
  • Fixed annotation labels navigation.

    Version 2.1.5

  • Fixed exception an orphan invisible item.
  • Enforced side alignment for SubAdviser and SubAssistant item types in orgDiagram.

    Version 2.1.4

  • Fixed keyboard navigation with arrow keys.

    Version 2.1.3

  • Fixed horizontal connector lines for vertically aligned items to the top or bottom.

    Version 2.1.2

  • Improved family diagram layout.

    Version 2.1.1

  • Fixed loops visualization in the family diagram.

    Version 2.1.0

  • Added support of loops in the family diagram. The item defined first in users items collection stays at the top of diagram.
  • Added nodes grouping to children/parents. See groupByType option of primitives.famdiagram.Config
  • Fixed disconnected family fragments alignment to the top.

    Version 2.0.24

  • Added onItemDblClick event to famDiagram and orgDiagram widget configs.

    Version 2.0.23

  • Added elbowDotSize option to famDiagram and orgDiagram widget configs.

    Version 2.0.22

  • Added BackgroundAnnotationConfig to famDiagram and orgDiagram widgets. See Partners & Annotations Demo.
  • Added includeChildren option to primitives.orgdiagram.BackgroundAnnotationConfig selecting all descendants of annotated items.

    Version 2.0.21

  • Added arrowsDirection option to primitives.orgdiagram.Config, primitives.famdiagram. Config. See "Arrows Direction" options in "Organizational Chart Navigation" demo.

    Version 2.0.20

  • Fixed connectors rendering.
  • Fixed HighlightPathAnnotationConfig tracing. See financial ownership diagram demo.

    Version 2.0.19

  • Added spouses option to primitives.famdiagram.ItemConfig. See first family chart use case.
  • Fixed group title alignment.

    Version 2.0.18

  • Added LabelAnotationConfig option class and defaultLabelAnnotationTemplate to primitives.famdiagram.Config. See financial ownership diagram demo.
  • Fixed context buttons usage in templates.

    Version 2.0.17

  • Added isActive option to primitives.orgdiagram.ItemConfig, primitives.famdiagram.ItemConfig, primitives.orgdiagram.TemplateConfig and primitives.famdiagram.TemplateConfig. See inactive items example.

    Version 2.0.16

  • Fixed minor data validation bug. Ignores orphan parent references.

    Version 2.0.15

  • Added PrintPreview option to primitives.common.PageFitMode and printPreviewPageSize option to primitives.orgdiagram.Config and primitives.famdiagram.Config. See print preview example.

    Version 2.0.14

  • Added highlight path annotation support to famDiagram. See primitives.famdiagram.HighlightPathAnnotationConfig usage in PERT Chart & Critical Path visualization example.

    Version 2.0.13

  • Disabled labels for regular items. Option primitives.orgdiagram.showLabels is only valid for minimized items now. For regular items see labels in item template example.

    Version 2.0.12

  • Added buttons option to primitives.orgdiagram.TemplateConfig and primitives.famdiagram.TemplateConfig.
  • Fixed mouse events arguments.

    Version 2.0.11

  • Hid connectors for skipped/invisible root items.

    Version 2.0.10

  • Added elbowType option of type primitives.common.ElboyType to style squared connector lines.

    Version 2.0.9

  • Improved famDiagram layout. Added bundles for children and parents. Cross chart connectors length reduced by 20%.

    Version 2.0.8

  • Fixed primitives.common.luminosity.
  • Removed overflow hidden from item style.

    Version 2.0.7

  • Added keyboard navigation with arrow keys and "Enter".

    Version 2.0.6

  • Added partners placement to Left/Right in famDigram Widget depending on cross hierarchy connections.

    Version 2.0.5

  • Added bp-highlight-dot-frame class to css.
  • Fixed Bootstrap compatibility bug related to box-styling.
  • Added labelPlacementType to Connector Annotation Config and to Connector helper Widget Config. See Family Chart & Connector Widget demos.
  • Added minimizedItemCornerRadius to TemplateConfig. See Organizational Chart Navigation demo.

    Version 2.0.4

  • Improved famDiagram layout. Cross chart connectors length reduced by 5%.

    Version 2.0.3

  • Improved famDiagram layout.

    Version 2.0.2

  • Improved famDiagram layout.

    Version 2.0.1

  • Added support of orphan families and groups of families to famDigram Widget.

    Version 2.0.0

  • Added famDiagram Widget - Multi-parent hierarchical chart. It has similar API to orgDiagram widget except it supports multiple parents for items instead of one. Chart does not support loops in hierarchy and does not check for them. It has following set of configuration classes in primitives.famdiagram: Config, ItemConfig, ButtonConfig, TemplateConfig, PaletteItemConfig, ConnectorAnnotationConfig & ShapeAnnotationConfig.
  • Fixed dashed line style for Canvas in IE11
  • Fixed partners alignment in organizational chart.

    Version 1.1.1

  • Added extra constructors to HighlightPathAnnotationConfig, ShapeAnnotationConfig and ConnectorAnnotationConfig.

    Version 1.1.0

    Warning: Non-backward compatible API changes!
  • Added Shape & Connector helper widgets: bpShape & bpConnector.
  • Added Shape, Connector & Highlight path annotations to orgDiagram. Added ConnectorAnnotationConfig, ShapeAnnotationConfig & HighlightPathAnnotationConfig classes to orgDiagram. Added annotations collection property to orgdiagram.Config.
  • Added connection lines styling options: linesType, highlightLinesColor, highlightLinesWidth, highlightLinesType to orgdiagram.Config.
  • Changed API from hierarchical structure defined by rootItem to a flat list of ItemConfig objects defined in items collection property. Added id & parent properties to ItemConfig. Changed type of cursorItem, highlightItem & selectedItems properties from object references to ItemConfig id-s. To define root item, root item in items collection should have its parent property set to null. Chart supports multiple root items. The chart does not search for orphans and ignores looped items. It is the application's responsibility to provide a consistent collection of items.

    Version 1.0.39

  • Fixed SVG blurred lines in IE for charts layouted without absolute positioning.
  • Added tooltip option to ButtonConfig.

    Version 1.0.38

  • Added new ItemType options: GeneralPartner & LimitedPartner & AdviserPartner

    Version 1.0.37

  • Added enablePanning option to Config.
  • ASP.NET 3.5: Added ShowButtons & Buttons properties to control.
  • ASP.NET 3.5: Added ShowButtons property to Item class.

    Version 1.0.36

  • Added showCallout to Config & ItemConfig.
  • Added defaultCalloutTemplateName to Config.
  • Added calloutTemplateName to ItemConfig.

    Version 1.0.35

  • Fixed invisible cursor item bug.

    Version 1.0.34

  • Added showLabels, labelSize, labelOffset, labelOrientation, labelPlacement, labelFontSize, labelFontFamily, labelColor, labelFontWeight, labelFontStyle options to Config.
  • Added label, showLabel, labelSize, labelOrientation, labelPlacement to ItemConfig.
  • Fixed graphics & non-graphics elements alignment
  • Improved curved connectors

    Version 1.0.33

  • Enabled native scroll for Mobile Safari.
  • Made selection checkbox label clickable.

    Version 1.0.32

  • Added cousinsIntervalMultiplier option to Config options class.

    Version 1.0.31

  • Added CSS3 scale transform on zoom gesture for Mobile Safari. Added minimumScale & maximumScale options to primitives.orgdiagram.Config.
  • Enabled annotation for highlight items outside of widget boundaries.

    Version 1.0.30

  • Added: Mouse panning/scrolling for desktop browsers.
  • Changed siblings visibility for cursor item.
  • ASP.NET 3.5: Updated to jQuery 1.9.1
  • Joomla 1.5 & 2.5: Updated to jQuery 1.9.1

    Version 1.0.29

  • Added new ItemType options: SubAdviser & SubAssistant. Deprecated Invisible item type.
  • Added isVisible option to ItemConfig.
  • Joomla 1.5 & 2.5: Added Invisible template and ported new item types.
  • ASP.NET 3.5 Moved templates customization from C# code to JavaScript.
  • ASP.NET 3.5 Removed dependency on jquery.json-2.3.min.js and added json3.min.js instead.
  • ASP.NET 3.5 Added HorizontalAlignmentType, ChildrenPlacementType, OrientationType to control options.
  • ASP.NET 3.5 Added SubAssistant & SubAdviser to available item types.
  • ASP.NET 3.5 Added IsVisible & ChildrenPlacementType options to Item class.

Version 1.0.28

  • Disabled highlight for touch devices.
  • Fixed rotated text in pure IE8. IE9's IE8 compatibility mode is not compatible with IE8.
  • Joomla 2.5: plg_bporgdiagram plug-in added, {bporgdiagarm #} where # is chart id in management panel. Provides optimized support of multiple charts in one article.
  • Joomla 1.5 & 2.5. Added chart orientationType option: Left, Right, Top, Bottom

    Version 1.0.27

  • Fixed performance issues.

    Version 1.0.26

  • Fixed visibility of hierarchy of invisible items.

    Version 1.0.25

  • Added chart orientationType option: Left, Right, Top, Bottom

    Version 1.0.24

  • Added ALT attribute to image of default template.
  • Fixed blurred dots in VML mode.

    Version 1.0.23

  • Fixed performance issues.

    Version 1.0.22

  • Fixed selection check box functionality for diagram inside jQuery UI Dialog.

    Version 1.0.21

  • Added defaultTemplateName to Config options class.
  • Added templateName to RenderEventArgs parameter class.
  • Joomla 1.5, 2.5: com_bporgdiagram added, organizational charts management component wrapping BP jQuery orgEditor widget.
  • Joomla 2.5: mod_bp_orgdiagram_editor added, places organizational charts created in management panel in module position, it is compatible with {module [#]} plugin.
  • Joomla 1.5, 2.5: com_bpwidgets added, rendering widgets component distributed under its own license.
  • Joomla 1.5: plg_bporgdiagram plug-in added, {bporgdiagarm #} where # is chart id in management panel. Provides optimized support of multiple charts in one article.

    Version 1.0.20

  • Fixed connectors drawing for items having assistants, but no children.
  • Fixed group title update for different heights.

    Version 1.0.19

  • Added childrenPlacementType to Config & ItemConfig options classes.
  • Added horizontalAlignment in Config.

    Version 1.0.18

  • Fixed layout performance bug.

    Version 1.0.17

  • Added primitives.min.js.
  • Added primitives.latest.css
  • Fixed large canvas issue. When chart width is over 6000px it uses pure HTML graphics now.
  • Fixed user jQuery UI buttons initialization.

    Version 1.0.16

  • Fixed Bootstrap compatibility bugs. http://twitter.github.com/bootstrap/ Added Bootstrap demo for registered users.
  • Added onMouseClick event to Config.

    Version 1.0.15

  • Fixed narrow tree alignment to the center instead of stretching it to available viewport width.
  • Fixed Assistants & Advisers children placement. Parent's regular children are shifted down in order to provide space for them inside of parent's hierarchy.
  • Added maximumColumnsInMatrix option to org chart Config.
  • ASP.NET 3.5 Fixed IE8 related bugs.
  • ASP.NET 3.5 Fixed JSON serialization in IE6-IE7. Added dependency on jquery.json-2.3.min.js. http://code.google.com/p/jquery-json/
  • ASP.NET 3.5 Added LeavesPlacementType & MaximumColumnsInMatrix properties to Control class.
  • ASP.NET 3.5 Added GroupTitle, GroupTitleColor, ItemType, AdviserPlacementType properties to Item class.

    Version 1.0.14

  • Added leavesPlacementType option to Config. Vertical, Horizontal & Matrix layouts.
  • Added adviserPlacementType option to ItemConfig. Left, Right placement.
  • Added Adviser and Assistant item types to ItemType.

    Version 1.0.13

  • Added explicit hasButtons option to orgDiagram Config.
  • Added onSelectionChanging Event to orgDiagram Config.
  • Added groupTitle, groupTitleColor, hasSelectorCheckbox and hasButtons to orgDiagram ItemConfig.
  • Added isCursor & isSelected options to RenderEventArgs indicating current state of rendered item.
  • ASP.NET 3.5 Custom control: Fixed Item's ShowCheckBox property.

    Version 1.0.12

  • Added call out shape to annotation.
  • Joomla 152-256 menu module: Added verticalAlignment & connectorType properties.
  • ASP.NET 3.5 Custom control: Added verticalAlignment & connectorType properties.

    Version 1.0.11

  • Fixed annotation placement.

    Version 1.0.10

  • Improved tree balancing.

    Version 1.0.9

  • Added bpText widget. Displays vertical text using VML or CSS3.
  • Added bpCallout widget. Draws call-out geometry in VML, SVG or Canvas formats.
  • Added narrow hierarchy auto stretching up to available view port width.
  • Added items verticalAlignment property. It defines relative items alignment within one row: Top, Middle, Bottom. It only affects rows containing items of different heights.
  • Added connectorType options: Squared, Angular and Curved connector lines style for dots.

    Version 1.0.8

  • Fixed widget placement inside divs having non-absolute position.
  • Joomla 152-256 menu module: Suppressed layout update before sending server post-back.
  • ASP.NET 3.5 Custom control: Fixed custom control placement inside panels having non-absolute position.

    Version 1.0.7

  • Added parentItem to EventArgs class. (See use case: "Adding new items at run time")

    Version 1.0.6

  • Added itemTitleFirstFontColor & itemTitleSecondFontColor options to orgDiagram Config class.
  • Added common functions: highestContrast, luminosity, beforeOpacity, getColorHexValue, getRed, getBlue, getGreen.
  • Fixed itemTitleColor option.
  • ASP.NET custom control: Added TitleColor property to Item class.
  • Removed BOM marks from the release file.

    Version 1.0.5

  • Added onHighlightChanging & onCursorChanging events to orgDiagram Config class.
  • Named noname event arguments to named classes: primitives.orgdiagram.EventArgs & primitives.common.RenderEventArgs.
  • Published ASP.NET 3.5 custom control BPOrgDiagram & Demo.

    Version 1.0.4

  • Fixed bugs blocking jQuery 1.6.2 compatibility.

    Version 1.0.3

  • Fixed bugs in page auto layout.

    Version 1.0.2

  • Joomla 1.5.2 and 2.5.6 compliant menu modules added.
  • Added minimalVisibility option to Config options class.
  • Fixed page sizing in PageFitMode.None mode.

    Version 1.0.1

  • Fixed mootools compatibility bug.

    Version 1.0.0

  • Initial check-in.