Skip to content
Snippets Groups Projects
  1. Mar 13, 2025
  2. Mar 12, 2025
    • Thore Strassburg's avatar
      refactor: separate user-tracking related modules · 309d97f9
      Thore Strassburg authored
      The directory of `user-tracking` was quite unpleasant when opened. This
      is partially due to the very expressive names of the metrics. But there
      was also a lot of things mixed together all in one.
      The new directory names should provide a little more guidance. Though,
      the term `core` is a very generic word that is abused too often. With
      further added complexity to it, its likely it should get separated from
      the application and put into its own package. Only the application
      specific metrics should then remain there. Potentially even aligned with
      their related application features.
      309d97f9
    • Thore Strassburg's avatar
      refactor: extract routing from feature(s) · 04a008ff
      Thore Strassburg authored
      The features should be very independent and somewhat agnostic. After
      all, they should be segregated from the routing logic. This
      responsibility has to be pushed upwards.
      
      What was special about this, were the usage of routing after forms got
      submit. Furthermore, the submit/navigate button is outside the layout of
      the form components of the abfrageteil feature. To solve this, an
      external submit button is used. This was enabled by simple optional
      properties for the forms. Thereby, testing remains stable and there is
      no coupling to any routing logic at all.
      
      Within this commit, the ButtonGroup component was resolved. This led to
      kinda repetitive code. Anyhow, there is no 100% clear re-usable
      structure yet. The costs are minimal.
      04a008ff
    • Thore Strassburg's avatar
      refactor: resolve component categories · 72435168
      Thore Strassburg authored
      This is an old design pattern that was still kept alive. Though, since
      the project has moved the maintainer, it never felt just right anymore.
      Anyhow, there were 0 organisms left, 2 atoms and a bunch of molecules.
      Furthermore, the pages components never really fit into this scheme.
      
      The new structure is not perfect, but should go into the right direct
      and simplify things. The whole routing/pages part is not well refined
      yet. But they have a stronger bonding than being re-usable components
      for all features.
      
      There are still some wild cross project dependencies that need to be
      sorted. Some could be resolved with this commit.
      72435168
    • Thore Strassburg's avatar
      refactor: move some shared components to their features · 5b441a33
      Thore Strassburg authored
      It is currently not 100% clear what is and what could be a shared
      re-usable component. Though, these have been moved to clear the
      directory structure even more.
      5b441a33
    • Thore Strassburg's avatar
      refactor: extract elterngelderklaerungen as application feature · a4deea4d
      Thore Strassburg authored
      This is a very independent part of the application which has already
      been shifted in the past. Its not re-usable component and also doesn't
      belong to any other feature.
      a4deea4d
    • Thore Strassburg's avatar
      refactor: move state bounding into abfrageteil feature · bb7f8c34
      Thore Strassburg authored
      There is no reason to expose this from the feature itself. It exposes
      a much larger interface than actually necessary. This also means the
      tests have shifted. Though, they basically stayed exactly the same.
      
      Notice that the navigation issue isn't solved yet. The feature should
      not know how to navigate where. But this is a broader issue in itself.
      bb7f8c34
    • Thore Strassburg's avatar
      refactor: extract abfrageteil as application feature · ff1b3d4c
      Thore Strassburg authored
      This is just the first step. This is a very messy process for this
      feature. There are plenty of cluttered interfaces and cross
      relationships. But to maintain some usable history in the version
      control system, this commit tries to limits its impact.
      ff1b3d4c
    • Thore Strassburg's avatar
      test: improve tests with Redux states · 40aac9e4
      Thore Strassburg authored
      We already used `immer` for other tests, as it leads to much cleaner,
      shorter and less messy tests (in context of Redux, which uses immer
      itself).
      
      Furthermore, the test utilities now expose the created store to further
      simplify the usage in tests.
      
      Moreover, the exported interface of the individual Redux slices has been
      reduced to simplify dependencies. This will help future refactoring.
      40aac9e4
    • Thore Strassburg's avatar
      refactor: extract user feedback as application feature · 248c56a5
      Thore Strassburg authored
      It might be very a big exaggerated to define this as a feature of the
      user-interface. Anyhow, it is a collection of resources that as a whole
      and should be free to move around. It should not matter where this user
      feedback is actually integrated in the application. This is especially
      true with our recent considerations to find better placements.
      There is some dependency inversion to the tracking layer in place. This
      is actually great, but feels a bit awkward in the context of the state
      management in parallel to it. However this will be kept for now.
      
      The code was kept close to the original. Though, some improvements based
      on a good feature interface was made.
      
      There were also minor improvements to some tests and code around the
      Redux store management.
      248c56a5
    • Thore Strassburg's avatar
      refactor: extract lohnsteuerechner into new package · 2a5e155f
      Thore Strassburg authored
      These algorithms are solely used by the elterngeldrechner. Anyhow, they
      are kind of an dependency by the calculation. Historically this actually
      was an external library. Before we had to replace it with a custom
      implementation. Encapsulating this package provides some structure and
      more overview in the elterngeldrechner. The latter now primarily focuses
      on the implementation of the law and their guidelines.
      
      The current approach uses a very strong/direct dependency model without
      any inversion or injection. This might be some work for future
      refactoring, nevertheless should be mentioned here.
      2a5e155f
    • Thore Strassburg's avatar
      refactor: extract lebensmonatrechner into new package · cc7188b7
      Thore Strassburg authored
      Currently this logic is primarily used by the applications planer
      feature. Thereby, it was located in the domain of the monatsplaner. But
      this is only co-located by usage. Actually this a much more fundamental
      logic which gets used by other features too. But for example the
      elterngeldrechner package implements its own (wrong/buggy)
      lebensmonatrechner too.
      This should help to sharpen the focus of the different packages and
      increase their re-usability.
      cc7188b7
    • Thore Strassburg's avatar
    • Thore Strassburg's avatar
      f7a4e7c4
    • Thore Strassburg's avatar
      refactor: collect application directories for stronger structure · a439e323
      Thore Strassburg authored
      With the previous work to carve out some core "packages", the (majority)
      leftovers where collected into the application directory. This continues
      the intent to build up a stronger and more clean project directory
      structure.
      The term of just `application` is very generic, though widely adopted.
      As we don't have multiple applications/entry-points yet, there is no
      further naming necessary as typical monorepo tooling would apply.
      a439e323
    • Thore Strassburg's avatar
      refactor: move out elterngeldrechner for stronger structure · a45b14bb
      Thore Strassburg authored
      This is a follow up on the intent to create a stronger and more clean
      project directory structure. It finishes with the former suspicious
      `globals/js` directory. A remnant of old migrations.
      
      The naming of `elterngeldrechner` is a but unlucky, taking the
      repository name itself into account. Though, the former `calculations`
      does not properly fit too. But the repository (and the production
      webiste) name isn't the best too. Therefore, this name is currently the
      best for this package.
      a45b14bb
    • Thore Strassburg's avatar
      refactor: move out planer domain for stronger structure · 917a8fef
      Thore Strassburg authored
      This a first step of the intention to give the project a stronger and
      more clean structure. A stronger emphasize on the directory structure
      and naming should help. It is a potential intermediate step into further
      structuring measurements.
      
      It also starts to extend the code documentation. A first README local to
      the new montasplaner package provides initial helpful information.
      917a8fef
  3. Mar 11, 2025
    • Thore Strassburg's avatar
      feat(monatsplaner): add tracking for opening Lebensmonate · 04fde968
      Thore Strassburg authored
      There is a hypotheses we need to verify. Therefore new data must be
      tracked. As always: the new tracking variable will be picked up by a new
      version of the tag manager.
      The naming of the tracking variable and associated function, module, ...
      is not great. Though, it nails it pretty much down to what is actually
      is.
      
      Unfortunately, after some refinement for what we actually need to track,
      this is quite low level, down in the monatsplaner feature. We still
      wanna keep the features focused and segregate responsibilities like
      tracking. As the result, there is quite some "callback drilling" through
      the component tree to forward the toggle event for the `<details>`
      elements. As this event usually does not bubble by default, there is no
      other possibility to observe this behavior. We hope this remains an
      exception and might be removed soonish.
      04fde968
    • Thore Strassburg's avatar
      feat(monatsplaner): improve imperative handle for Lebensmonat details · 8db5eac0
      Thore Strassburg authored
      Instead of creating a new type for the HTML element referenced, it just
      forwards the `<details>` element itself and improves the `focus` method
      of it. This is a more universal solution that will allow further
      features using the forwarded reference for something else but the focus.
      8db5eac0
    • Thore Strassburg's avatar
      refactor(monatsplaner): restructure passing of callbacks · 311c4b38
      Thore Strassburg authored
      The number of callbacks exposed by the monatsplaner feature starts to
      grow. The former approach to use optional, positioned arguments does not
      scale well. Therefore, this was restructured.
      
      Furthermore, the naming was strengthened. Callbacks that are associated
      1:1 with a use-case of the Planer service use the same naming now.
      Though, the expressiveness of the `onPlanChanged` was reduced to
      `onChange`. But it uses the same verb presence as typical for events and
      it re-uses a commonly used term that everyone is familiar with. The
      context of the monatsPLANER should do the rest.
      
      Moreover, some tests have been added to actual test that the callbacks
      are actually called. These have been partially missing.
      311c4b38
  4. Mar 10, 2025
  5. Mar 05, 2025
  6. Mar 04, 2025
Loading

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.