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

Constraint editor #16

Closed
ekuiter opened this issue Sep 19, 2018 · 4 comments
Closed

Constraint editor #16

ekuiter opened this issue Sep 19, 2018 · 4 comments
Labels
client enhancement New feature or request server

Comments

@ekuiter
Copy link
Owner

ekuiter commented Sep 19, 2018

Cross-tree constraints are often used in feature models. They should get a dedicated editing area, maybe with different layouts too (simplest is a list of propositional formulas, but maybe add filters or a visualization of formulas).

Constraints have many interactions with the feature model editor (like, the constraints need to be updated when a feature is renamed or removed).

@ekuiter ekuiter added enhancement New feature or request client server labels Sep 19, 2018
@ekuiter
Copy link
Owner Author

ekuiter commented Oct 3, 2018

For starters, we could use a simple text editor listing constraints (as in DarwinSPL). This can then be extended into a (kind of) graphical editor.

@ekuiter
Copy link
Owner Author

ekuiter commented Feb 20, 2019

Simple constraint view is implemented. Apart from the missing editing commands (add, edit, remove), some TODOs include:

  • can not scroll vertically when the list overflows in Firefox on Windows
  • the scroll bars are ugly on Windows
  • on Firefox/Windows, the width of constraints is not readjusted when the window width changes
  • the drawer/handle is not touch-friendly (only works with mouse, add touch events)
  • double clicking to change the split direction does not work on Firefox/Windows
  • when rotating the device, auto-adjust the split direction

In the long run, a proper constraint editor should be implemented (cf. FeatureIDE). For now, we may simply input constraints more or less in the internal representation.
That is: To add a constraint, open the command palette, choose "add constraint", enter a constraint in prefix notation with parentheses, e.g. (imp A (disj B C)) (possibly allowing symbols such as -> and |). While typing, use the command palette API to display the parsed and rendered constraint (if it is well-formed), e.g. A -> B v C so that the user gets an idea what the constraint will be parsed as (maybe even display hints for the syntax, which symbols may be used etc.).
This prefix notation can then be easily parsed as JSON by string-replacing symbols and parentheses and passed into the kernel.

@ekuiter ekuiter added this to the Basic kernel integration milestone Feb 20, 2019
@ekuiter ekuiter mentioned this issue Feb 20, 2019
32 tasks
@ekuiter
Copy link
Owner Author

ekuiter commented Mar 22, 2019

  • Regarding "the width is not readjusted": I have no idea what causes this, IDetailsList's forceUpdate (or rerender with new items) does not help. Not a very pressing issue for now, though.
  • Regarding "auto-adjust split direction": This interacts with the manual split direction change.

@ekuiter
Copy link
Owner Author

ekuiter commented Mar 22, 2019

Simple cross-tree constraint editor is now implemented. In the long run, we may add a dedicated UI for adding/editing constraints, and add a context menu and filtering options for the constraints.

@ekuiter ekuiter closed this as completed Mar 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client enhancement New feature or request server
Projects
None yet
Development

No branches or pull requests

1 participant