documentationfor yFiles for HTML 2.6

IncrementalHintItemMapping

Provides different ways to define a mapping from model items to incremental hints for use with HierarchicLayoutData.

Remarks

Only one of the provided ways to define a mapping can be used at the same time, therefore only one of the properties of this class should be set on an instance.

Functions, IMapper<K,V>s and constant values are automatically converted to IncrementalHintItemMappings. For example:

// Constant
new HierarchicLayoutData({
  incrementalHints: hintsFactory.createSequenceIncrementallyHint(node)
})

// Context Delegate
new HierarchicLayoutData({
  incrementalHints: (item, factory) =>
    incremental ? factory.createLayerIncrementallyHint(item) : null
})
// or
const factory = hierarchicLayout.createIncrementalHintsFactory()
new HierarchicLayoutData({
  incrementalHints: (item) =>
    incremental ? factory.createLayerIncrementallyHint(item) : null
})

// Mapper
new HierarchicLayoutData({ incrementalHints: new Mapper() })
// or a JavaScript Map
new HierarchicLayoutData({ incrementalHints: new Map() })// Constant
new HierarchicLayoutData({
  incrementalHints: hintsFactory.createSequenceIncrementallyHint(node)
})

// Context Delegate
new HierarchicLayoutData({
  incrementalHints: (item: IModelItem, factory: IIncrementalHintsFactory) =>
    incremental ? factory.createLayerIncrementallyHint(item) : null
})
// or
const factory = hierarchicLayout.createIncrementalHintsFactory()
new HierarchicLayoutData({
  incrementalHints: (item: IModelItem) =>
    incremental ? factory.createLayerIncrementallyHint(item) : null
})

// Mapper
new HierarchicLayoutData({ incrementalHints: new Mapper() })
// or a JavaScript Map
new HierarchicLayoutData({ incrementalHints: new Map() })

Note that the properties incrementalLayeringNodes and incrementalSequencingItems cannot be defined directly using this converter.

Furthermore, the conversion supports a parameter object to initialize the properties. For example:

// Create a new IncrementalHintItemMapping from a JavaScript Map and initialize its 'mapper' with the new Map.
// This also works for the different properties as well.
const mappingFromMap = IncrementalHintItemMapping.from({
  mapper: new Map()
})

// Or, instead of providing the specific property, the 'includes' key can be used
const mappingWithIncludes = IncrementalHintItemMapping.from({
  includes: new Map()
})

Examples

Elements which should be placed incrementally can be provided as collections:

Creating incremental hints for nodes and edges
// create a HierarchicLayout which rearranges
// only the incremental graph elements
const hl = new HierarchicLayout({ layoutMode: LayoutMode.INCREMENTAL })

// provide additional data to configure the HierarchicLayout
const hlData = new HierarchicLayoutData()
// specify the nodes to rearrange
hlData.incrementalHints.incrementalLayeringNodes = incrementalNodes
// specify the edges to rearrange
hlData.incrementalHints.incrementalSequencingItems =
  ItemCollection.from(incrementalEdges)

graph.applyLayout(hl, hlData)// create a HierarchicLayout which rearranges
// only the incremental graph elements
const hl = new HierarchicLayout({ layoutMode: LayoutMode.INCREMENTAL })

// provide additional data to configure the HierarchicLayout
const hlData = new HierarchicLayoutData()
// specify the nodes to rearrange
hlData.incrementalHints.incrementalLayeringNodes = incrementalNodes
// specify the edges to rearrange
hlData.incrementalHints.incrementalSequencingItems =
  ItemCollection.from<IModelItem>(incrementalEdges)

graph.applyLayout(hl, hlData)

More specific hints can be created using an IIncrementalHintsFactory:

Creating incremental hints for nodes and edges using a factory
// create a HierarchicLayout which rearranges
// only the incremental graph elements
const hl = new HierarchicLayout({ layoutMode: LayoutMode.INCREMENTAL })

// provide additional data to configure the HierarchicLayout
const hlData = new HierarchicLayoutData()

hlData.incrementalHints.contextDelegate = (item, factory) => {
  if (item instanceof INode && incrementalNodes.includes(item)) {
    // create a hint for incremental nodes
    if (graph.isGroupNode(item)) {
      // special hint for groups
      return factory.createIncrementalGroupHint(item)
    }
    if (fixedNodes.includes(item)) {
      // exact layer for the fixedNodes
      return factory.createUseExactLayerCoordinatesHint(item)
    }
    // simple layer hint for all other nodes
    return factory.createLayerIncrementallyHint(item)
  }
  if (item instanceof IEdge && incrementalEdges.includes(item)) {
    // sequence hint for incremental edges
    return factory.createSequenceIncrementallyHint(item)
  }
  // all other items don't get hints
  return null
}

// provide hints

graph.applyLayout(hl, hlData)// create a HierarchicLayout which rearranges
// only the incremental graph elements
const hl = new HierarchicLayout({ layoutMode: LayoutMode.INCREMENTAL })

// provide additional data to configure the HierarchicLayout
const hlData = new HierarchicLayoutData()

hlData.incrementalHints.contextDelegate = (
  item: IModelItem,
  factory: IIncrementalHintsFactory
) => {
  if (item instanceof INode && incrementalNodes.includes(item)) {
    // create a hint for incremental nodes
    if (graph.isGroupNode(item)) {
      // special hint for groups
      return factory.createIncrementalGroupHint(item)
    }
    if (fixedNodes.includes(item)) {
      // exact layer for the fixedNodes
      return factory.createUseExactLayerCoordinatesHint(item)
    }
    // simple layer hint for all other nodes
    return factory.createLayerIncrementallyHint(item)
  }
  if (item instanceof IEdge && incrementalEdges.includes(item)) {
    // sequence hint for incremental edges
    return factory.createSequenceIncrementallyHint(item)
  }
  // all other items don't get hints
  return null
}

// provide hints

graph.applyLayout(hl, hlData)

Type Details

yfiles module
view-layout-bridge
yfiles-umd modules
view-layout-bridge
Legacy UMD name
yfiles.hierarchic.IncrementalHintItemMapping

See Also

Constructors

Properties

Static Methods