Created an ActionStack class to handle the undo/redo functionality#8
Merged
iloveskittles82 merged 5 commits intodevfrom May 31, 2025
Merged
Created an ActionStack class to handle the undo/redo functionality#8iloveskittles82 merged 5 commits intodevfrom
iloveskittles82 merged 5 commits intodevfrom
Conversation
koppor
requested changes
May 29, 2025
Member
koppor
left a comment
There was a problem hiding this comment.
- strange variable names (see other PRs)
- no tests
- no wiring to the current UI / jsMind (can be left as future work)
- no wiriting to
jabsrv(which is OK)
It should be commented that the "Mememtno Pattern" is used. See https://stackoverflow.com/a/54416376/873282 :) (I just learned that name)
I think, there should be a library for this - and there is
https://github.com/iMrDJAi/UndoRedo.js/tree/master --> https://github.com/iMrDJAi/UndoRedo.js/blob/master/src/UndoRedo.js
7 tasks
Robert35-dll
added a commit
that referenced
this pull request
Jun 17, 2025
* Add gh-publish workflow * Make files available * Fix path * # Added Bootstrap Navbar with Mock-Buttons Integrated Bootstrap and added a Navbar with 5 useless buttons. More buttons are to follow in the upcoming sprints. The 5 buttons will bring the following functionalities: - undo - redo - add sibling node (topic) - add child node (subtopic) - add tags The navbar currently collapses if the width of the site is too small. This gives a cleaner appearance on small window sizes. * Code cleanup and comments. * added tooltips for the buttons * added save and open buttons to the right of "JabMap" (on the left hand side in the topbar) * added save and open buttons to the right of "JabMap" (on the left hand side in the topbar) and a min. size for the mindmap container the buttons have to be implemented still * removed fixed size of the midnmap container the page is now no longer accidentally scrollable which means the topbar will always stay where it is and the mindmap container will fill the rest of the window * Local installation of dependencies/packages (#3) for details see #3 commits: * preemptively added vite build output to gitignore * created package.json with ```npm init -y``` * installed bootstrap, bootstrap icons and jsmind with npm ```npm install jsmind bootstrap bootstrap-icons``` * installed vite ran ```npm install --save-dev vite``` response: ´´´ added 57 packages, and audited 62 packages in 4s 8 packages are looking for funding run `npm fund` for details found 0 vulnerabilities ´´´ * added main.js with basic mindmap example * changed index.html to reference the src/main.js by using vite, we can now import all important recources in the main.js file and only need to reference it in the index.html also added vite helper functions in the package.json file * quickly added comments * moved drag-and-drop-nodes code to an extra file and added default options for creating a mindmap to main.js * uninstalled jsmind, copied repo to src folder and modified import statements I essentially reset parts of my "progress" with "npm uninstall jsmind". Nonetheless, i chose to import the code manually since it would allow us to more easily modify it in the future. it also circumvents the problem that the drag and drop functionality has caused before. I hope this way doesn't cause any compatibility issues. U can now run ``` npm install npm run dev ``` to start the dev server. And ``` npm install npm run build npm run preview ``` to build and display the built application. * deleted unused folders the "js" and "css" folders were created with the project and contain bootstrap code. this was rendered useless with the npm installation of bootstrap. * installed popperjs and did minor adjustments installed popperjs dependency for bootstrap downdown menus, Changed licence to MIT and changed language in html to english * tidy work * fixed navbar alignment * Refine check.yml (#4) * Update NodeJS from 20 to 22 * Create vite.config.js (#5) * moved "save" and "load" buttons out of dropdown and next to "Jabmap", centered the buttons * added html ids to buttons, added clickhandlers for sibling and child-nodes * added empty click handlers for all the buttons * Created an ActionStack class to handle the undo/redo functionality and bound it to GUI (#8) * Created an ActionStack class to handle the undo/redo functionality * imported action stack and set up click handlers * implemented undo & redo functionality with gui-buttons * added shortcuts --------- Co-authored-by: iloveskittles <40355179+iloveskittles82@users.noreply.github.com> * Saving and loading maps (#7) * Created a FileManager class to include file access * Created a HTTP-client to handle basic save/load requests * Reversed the default options dictionary to be assigned if passed one is null or undefined * Added ListMap() for retrieving available maps and updated docstrings of HTTPClient * Extended performFetch() to differ between GET and PUT requests as well as error handling to differ between connection and response failures * Provided some minor comments to functions' parameters and URLs * Removed FileManager class since it's functionality has been fully taken by HTTPClient class * added shortcuts * included a NULL_MAP as default return value for PUT and failed requests * simplified default paths in save/loadMap() * integrated http client into GUI * fixed http client class export * added comments and a POST function to create a file through the server * add modal with placeholders * add dialog with libraries to choose from --------- Co-authored-by: iloveskittles <40355179+iloveskittles82@users.noreply.github.com> * Update README.md * Comments and README polishing * Fixed a bug with double state saving after editing a node * Small refactor of saving maps' states in jsMind class with some comments * Updated comments in HTTPClient class * Removed ActionStack's import and updated saving initial state of a mind map in main.js * Updated and compressed comments in main.js * Improved code readability of click handlers for "Open buttons" * Cleaned jsMind's options' definition in main.js * Fixed spacings and comments in index.html * Removed second default value from preformFetch() and fixed docstrings in jsMind undo()/redo() * Capitalized chapters and added one for installing the server * Added alternative method to start the server and linked it's section in Try It Out chapter * Improved formatting of the building guide * change POST to PUT * Icons for nodes (#14) * Adding Icons and Tags Feature to MindMap * Initial test for icons and tags feature in the mind map * Add new tags and icons;test integration with additional node-text * adding complete Mindmap icons and it's keyboard shortcuts * Added Shalabi's index.html with tags * adding icons list with its shortcuts in the icons list and solving node editing text problems * Update request for initial Icons-and-Tags branch (#15) * change POST to PUT * experimenting with data-attribute * trying to setup "enum" for icons and stuff * Disabled standard browser's <Ctrl> + <number_key> shortcut in case a tag should be toggled * Refactored toggling tags and highlights using jsMind shortcuts' handling * Added a node extension method to include "icons" and "highlight" properties to all nodes * Changed tags' button to a dropdown * WIP set up shortcut handler and added sources for icons * got the icons working with shortcuts open todos: - [] Source manager to save nodes cleanly - [] functionality for buttons in dropdown - [] icons in dropdown - [] removing shortcuts for align,pdf and comment * cleanup and comments * Added a ResourceManager for unified / easier access to icons * add debug button for printing out mindmap data to console * add empty button handlers and a third, invisible div in the navbar to center the buttons in the middle while allowing the dropdown menu to function properly * add clickhandlers * renaming the ids for the buttons * Removed doubled comments from jsmind.view_provider._default_node_render() * Refactored ActionStack class to save maps' copies instead of objects * adding shortcuts to buttons * Fixed bugs with undefined icons' lists in new nodes * Enabled standard shortcuts for editing nodes' topics * Added check icons and implemented toggle cycles --------- Co-authored-by: iloveskittles <40355179+iloveskittles82@users.noreply.github.com> --------- Co-authored-by: Shalabi <Mohamed.Shalabi@Student.HTW-Berlin.de> Co-authored-by: Robert Koch <Robert.Koch@Student.HTW-Berlin.de> --------- Co-authored-by: Oliver Kopp <kopp.dev@gmail.com> Co-authored-by: Robert Koch <Robert.Koch@Student.HTW-Berlin.de> Co-authored-by: Shalabi <Mohamed.Shalabi@Student.HTW-Berlin.de>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Description
An essential feature which allows users to quickly discard and reapply their latest changes made to a mind map.
To do this, the Memento pattern is implemented.
✨ What's New
With this PR following functionalities will be introduced:
📑 Open TODOs:
undo()/redo()as shortcuts in new app's structure