constellation-app / constellation

A graph-focused data visualisation and interactive analysis application.
https://constellation-app.com
Apache License 2.0
385 stars 59 forks source link

Layers View: Graph element selection issues #2182

Closed OrionsGuardian closed 3 days ago

OrionsGuardian commented 1 month ago

Prerequisites

Description

There needs to be a way to select only the elements that are shown for the active layers.

Currently, if you have elements that belong to different layers, when you activate a single layer you will only see the elements that belong to the active layer ... But, if you click and drag the mouse over the graph to create a selection rectangle, it will select everything within the area including the hidden elements. Same issue if you use the 'Select All' shortcut. It will select all entries in the graph, regardless of whether they are visible or not.

To address this we could provide a "Select Layer Elements" button in each Layer segment. (the button should only be active if the layer is active) And also provide a "Select all active layer elements" button, as a shortcut to pressing the button in each active segment.

Some additional functionality to consider: While there are no layers active, and all graph elements are visible ... A user could select a set of graph elements, then activate some layers, then click on a new button to "Assign pre-selected graph elements to the currently active layers"

This would also provide an easier way to move elements between layers ... We can select elements from one layer and then switch to a different layer where they can then be assigned via the new button. There could be an assign button in each layer segment ... to assign only to that segment. And a global assign button, which assigns to the combination of active layers.

Steps to Reproduce

Create a new empty graph. Open the Layers View. Add a layer. Activate Layer 1 only. Create 2 nodes in the graph (they will be auto-allocated to layer 1) De-Activate layer 1, then activate Layer 2 only. Create 2 nodes in the graph (these will be auto-allocated to Layer 2)

Now, while only Layer 2 is active, click and drag a selection rectangle in the graph window, so that it is large enough to include the locations where the currently hidden Layer 1 nodes were created. Complete the selection and notice the status bar at the bottom shows 4/4 nodes selected. De-activate Layer 2. Notice that all 4 nodes are selected, when visually, while Layer 2 was active, you would only expect the Layer 2 nodes to be selected.

Expected behaviour: Selection functionality to be limited to graph elements that belong to the active layers.

Actual behaviour: Selection functionality does not consider active layers and selects everything.

Reproduces how often: 100%

OrionsGuardian commented 4 weeks ago

Revised summary of functionality which should be added:

Functionality within each Layer segment

Global functionality

OrionsGuardian commented 4 weeks ago

Further functionality to consider: Should the Selection menu options only select elements that are shown on the graph (ie. limit functionality to selected layers only ?) Should the Arrangements menu options also be limited to the currently visible graph elements ?

HolandCrick commented 3 days ago

@OrionsGuardian - thanks for fixing the Layer View Bug. Now the Selection functionality to be limited to graph elements that belong to the active layers.