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

Refactor tabs implementation #254

Closed
isaisabel opened this issue Dec 8, 2020 · 1 comment
Closed

Refactor tabs implementation #254

isaisabel opened this issue Dec 8, 2020 · 1 comment
Assignees
Labels
bug Something isn't working priority/high High priority Issue timescale/imminent Ready to be assigned to developers
Milestone

Comments

@isaisabel
Copy link
Contributor

As a user of the ATT&CK Navigator, I want to be able to use the application without significant performance issues as a result of opening many tabs/layers.

The current implementation of the tabs interface has poor performance. Essentially the contents of each tab is its own DOM element, and while these elements are added/removed when tabs are switched for performance reasons, they are separate and the removal/addition of DOM elements can have poor performance. This is likely the cause of #251.

A new system should be developed to change how tabs work. Ideally:

  • A data-table is always loaded. There are never multiple data-tables, that single data table will be used for displaying all layers.
  • The "new tab" UI and "help" page are moved to modals/dialogs or some otherwise separate system, and are not represented in "tabs". The SVG export interface is likewise moved to a modal/dialog.
  • Changing the "tab" changes the current ViewModel (layer) by changing which layer the data-table displays.
    • the layer simply determines the current set of annotations and data-table settings (layout, gradient...). It also sets the domain/version data used to determine the table contents.
    • This may also change the current domain/version according to the domain/version of the layer.
    • Some of this may happen asynchronously since data may have to be loaded when a layer is imported.

Something vaguely like this in terms of data flow:

image

@isaisabel isaisabel added bug Something isn't working priority/high High priority Issue timescale/imminent Ready to be assigned to developers labels Dec 8, 2020
@isaisabel isaisabel added this to the Version 4.2 milestone Dec 9, 2020
@clemiller clemiller self-assigned this Dec 11, 2020
@isaisabel
Copy link
Contributor Author

Addressed in #257.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working priority/high High priority Issue timescale/imminent Ready to be assigned to developers
Projects
None yet
Development

No branches or pull requests

2 participants