Provide scheduling tool for schools in general.
  • Goal: The goal is to provide a minimum viable product, that demonstrates, how such a tool would look and work like.
  • Ticket: https://github.com/www-splitcells-net/net.splitcells.network/issues/252

Tasks

  • [x] Provide runnable application with GUI.
    • [x] Place MathJax files into dedicated repo, because it is too big.
    • [x] https://github.com/www-splitcells-net/net.splitcells.network/issues/249
    • [x] https://github.com/www-splitcells-net/net.splitcells.network/issues/199
    • [x] Clean up all links via renderingValidator of the ProjectsRendererI. -> The result is good enough for now.
    • [x] Provide function to execute tests via the GUI.
    • [x] Provide page listing all commands.
      • [x] Register all commands. -> This is done via an index page manually for now.
    • [x] Add NOTICE.md etc. files to website.
    • [x] Provide closeable GUI window via flatlaf.
  • [x] Provide distro builds.
    • [x] Create Windows executable via launch4j. -> Use an Eclipse RCP application instead.
      • [x] Sign resulting Windows exe. -> Not relevant anymore.
    • [x] Use Eclipse RCP instead
      • [x] Document reasons for using Eclipse RCP:
        • [x] trustable and unbranded signed executable.
        • [x] Can bundle JRE via build and provide an application with all required dependencies.
        • [x] Provides builds for different OSs
        • [x] Has a fitting license
        • [x] Alternatives have a lot lower download rate and launch4j-
      • [x] Provide help text with a short description and license info reference. -> Locally hosted website in application window is enough for that right now.
      • [x] Provide splash screen with loading info. -> This is not important for now.
      • [x] Correctly manage lifetime of backend program.
      • [x] Bundle application with an JRE.
        • [x] Fix the fact, that new dependencies are not downlaoded from sites in target platform, and therefore not found.
          • [x] Maybe caused by the fact, that the new dependency is not attempted to downloaded at all. -> This isnot the case.
            • [x] Maybe this dependency needs to be donwloaded via a custom feature module. -> This is not the case.
          • [x] Maybe the incorrect plugin or feature id is used. -> This is not the case.
          • [x] Incorrect target platform is used, because the incorrect id was used. This error was found, by deleting the local .m2 repo.
      • [x] Document Eclipse RCP in license notice.
      • [x] Bundle server with application.
      • [x] Provide application icon.
    • [x] Support Flatpak via jreleaser.
      • -> Do this only, when there are normal releases for the software.
      • -> This will be done via the following issue: https://github.com/www-splitcells-net/net.splitcells.network/issues/195
      • [x] https://docs.flathub.org/docs/for-app-authors/requirements/
  • [x] Provide generic editor.
    • [x] Provide front menu, that present main application.
      • [x] Create config to define menu items.
      • [x] Render front menu.
        • [x] Title
        • [x] Image
        • [x] Link
        • [x] Description
      • [x] Define default front page.
      • [x] Reset front page for personal site.
      • [x] Create dedicated UI project for Gel.
      • [x] Add front menu item for editor.
    • [x] Provide editor to define constraints.
      • [x] Create grammar.
        • [x] Define demand attributes
        • [x] Define supply attributes
        • [x] Define constraints.
      • [x] Parse problem definition.
        • [x] Parse demand attributes.
        • [x] Parse supply attributes.
        • [x] Parse constraints' root.
        • [x] Parse complete constraint definition.
        • [x] Make grammar an abstract perspective grammar, in order to use this as the basis for perspective framework.
        • [x] Parse multiple constraint paths.
      • [x] Upload data via HTML form.
        • [x] Extend webserver.
        • [x] Provide form for uploading an optimization problem.
          • [x] Give visual feedback for click.
          • [x] Respond to form with JSON document.
            • [x] BinaryProcessor should use single byte array for request and response, because putting multiple binary arrays into one string and extracting the byte arrays from that string is easy via base64. -> BinaryProcessor was renamed to Processor and is generic. The Processor used for the webserver now retrieves a single wrapped Perspective and returns a single wrapped Perspective.
          • [x] Show current status.
          • [x] Block submit button, if already active.
          • [x] Minimize chapter content and add buttons to chapter titles in order to hide and show its content. Otherwise, the content of the form can be irritating because of the big text areas.
          • [x] Create processor, that parses and solves given problem.
          • [x] Create mini framework for forms.
            • [x] Upload data via Tabulator. -> Will be done later, when the feature is useful.
            • [x] Download data via Tabulator.
            • [x] Make button more visible as such. Differentiating between links/task resulting in a different page and the same page.
              • [x] Create website styling guidelines.
                • [x] Buttons linking to other pages.
                • [x] Buttons for actions on current page.
          • [x] Test webserver's processor.
        • [x] Clean up HTTP server.
    • [x] Provide way to upload problem data.
    • [x] Test complete optimization on simplest parsed problem, without webserver.
    • [x] Provide way to download solution.
  • [ ] Redeploy website as last deployment was kaput.
    • [ ] Fix loading of class resources located inside nested jars. CURRENT
      • [ ] Create custom Maven plugin in order to create a list of all resources and to store this file inside the jars.
      • [ ] Use resource list file inside FileSystemViaClassResources.
  • [ ] Improve logging system.
    • [ ] Log all requests in detail.
    • [ ] Ensure, that logs are present in application.
  • [ ] Provide good error messages.
    • [ ] Expand code guidelines regarding error messages.
      • [ ] Pojos and other static types are not needed, as stability regarding the error message format is not guaranteed in order to make error reporting easy to create and adjust.
    • [ ] Use alternative to Optionals.
    • [ ] Support error reports.
  • [ ] Support a school scheduling problem as a presentable example with a link to a preload.
  • [ ] Provide application downloads.
  • [ ] Deploy application as server.

Tasks to be planned

  • [ ] User should be able to define part of the solution.
  • [ ] Use JQuery instead of own functions.

Ideas

  • [ ] Find teacher/school for testing?
  • [ ] Consider making program runnable in Browser via Javascript.
    • [ ] https://github.com/mirkosertic/Bytecoder
  • [ ] Consider htmx for complex UI in the future: https://htmx.org/