This past week ended with me completely breaking the library I was working with. I am not sure what exactly I did, but two days were spent repairing the damage. Despite the setback, I think I have made all the modifications needed to the library to meet my needs.
I now also have checkbox reading fixed, so I can now test a number of my other functions involving calculating sets. The code behind this could be improved, but I figured the ugly route of numerous if statements was better than nothing. My testing with it did not seem to have any noticeable issues with performance, so it could be passable for now. It also makes sure that the generated strings of selected elements are in alphabetical order, so I do not need to add any ability for correcting that in my set generating function.
I was able to add a function for handling that in other generated sets though, so all of the sets that will be output by the site should be in alphabetical order to make it easier to read.
After the testing on the calculation functions that will be done today, the next major milestone will be finishing the recursive descent parsing functions for the set notation. After that, the functions for generating the output need to be made. With those done, I will have a basic functional product to show. After that, I see myself as having two ways of focusing my remaining time: I can focus on adding functionality like statistics and randomization, or I can try to expand my program to accept multiple separate notations at once. Of the two, the first would be far easier, especially since I had done work ahead of time to set some things up for my database. Allowing for multiple notations to be checked at once wouldn’t require a complete overhaul, but parsing and display would require work, perhaps more. There is also a potential issue it would cause with my screen size. Until I actually write and test my visual output, I am not sure how much room I will have to play with at any given time. Currently, the workspace is fitting to the size of the user’s screen, so this could require changing that. Admittedly, I have not done much testing with screen sizing yet in relation to the workspace, only with menus and modals - so I would bet that if one had a small browser window that they then expanded to fullscreen, the workspace might not expand with it without reloading the page.