Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

`ele.component()` #1878

Closed
maxkfranz opened this issue Jul 4, 2017 · 2 comments

Comments

Projects
None yet
2 participants
@maxkfranz
Copy link
Member

commented Jul 4, 2017

eles.components() gives all components of the elements in the calling collection. It would be nice to have ele.component() that gives the component of a node or an edge.

ele.component() would have to take into account all the elements in the graph --- i.e. you can't specify a subset of elements to consider. For those cases, it's better to use eles.components().

@maxkfranz maxkfranz added this to the future milestone Jul 4, 2017

@shabble

This comment has been minimized.

Copy link

commented Apr 20, 2018

is this as simple as something like:

function (ele) {
    let compEles = new Set(); 
    cy.elements().breadthFirstSearch({ root: ele, visit: (v) => { compEles.add(v) }} );
   return compEles;
}

or is there some better algorithm to use?

If it's as simple as above I can try to look at making a PR for it.

@maxkfranz

This comment has been minimized.

Copy link
Member Author

commented Apr 23, 2018

More or less. You'd use a new cy.collection() and merge() for internal functions for performance. It's basically the existing ele.components() function implementation but only using one node as input rather than all nodes.

@maxkfranz maxkfranz self-assigned this Jan 17, 2019

maxkfranz added a commit that referenced this issue Jan 18, 2019

Add `ele.component()`
- Repurpose `eles.components()` to be more general by allowing setting of the `root` collection -- components that `root` nodes belong to will be returned.  The signature is now `eles.components(root)`, where `root` is `eles.nodes()` by default.
- The repurposing of `eles.components()` makes it so `ele.component()` is basically a one-liner.
- Improve performance a bit by avoiding intermediary collections.
- Add `eles.componentsOf()` alias.

Ref #1878

@maxkfranz maxkfranz modified the milestones: future, 3.4.0 Jan 24, 2019

@maxkfranz maxkfranz closed this Jan 24, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.