Giter Site home page Giter Site logo

bug-free-spork's People

Watchers

 avatar  avatar

bug-free-spork's Issues

Add `/rechnungen` backend endpoint

Requires #5

Add a new backend endpoint that will return a rechnungen collection, containing all available rechnung

Methode 1 liefert bei Übergabe von Paginator Informationen eine kleine Liste an Rechnungen zurück (ca. 3 Zeilen)

— from #2

Add Koa Backend

Create a new Backend with 3 asynchronous Endpoints

  • Erstelle einen Service mit 3 asynchronen Methoden, der ein kleines Set an Example Testdaten liefern kann
    [...]
  • Verwende Domänen spezifische Namings

— from #2

Add `Rechnung` shared interface

There is no backend to retrieve 'real' Rechnung objects, but we still want to be prepared if there is one added later.

If the backend is using a compatible stack (such as koa on node) the interfaces can be used directly. If not, it is sufficient documentation about what the frontend expects from the backend.

As per the client's requirements a Rechnung object contains these properties:

  • # Rechnungs-UID: string
  • # Rechnungspositionen: []Rechnungsposition1
  • # Rechnungsnummer: string
  • # Rechnungsempfänger: string
  • # Betrag Netto: number
  • # Datum: Date

The Property Names will be used verbatim. Without a backend we do not know the normalization approach of the involved stack and can't align the interface accordingly.


1. This property will be added when `Rechnungsposition` is implemented

Client Requirement

Original Requirements:

  • Erstelle Angular 8 Projekt mit Material
  • Erstelle einen Service mit 3 asynchronen Methoden, der ein kleines Set an Example Testdaten liefern kann
    • Exemplarisch für die Anbindung an eine fiktive RESTFul Schnittstelle
    • Methode 1 liefert bei Übergabe von Paginator Informationen eine kleine Liste an Rechnungen zurück (ca. 3 Zeilen)
      • Rechnungs-UID
      • Rechnungsnummer
      • Rechnungsempfänger
      • Betrag Netto
      • Datum
      • ...
    • Methode 2 liefert für eine konkrete Rechnungs-UID die in der Rechnung enthaltenen n-Rechnungspositionen zurück
      • Produkt Name
      • Produkt Betrag Netto
    • Methode 3 liefert für eine konkrete Rechnungs- UID den Lieferstatus der in der Rechnung enthaltenen Rechnungspositionen zurück
  • Verwende Domänen spezifische Namings
  • Schreibe 2 Komponenten
    • Komponente 1 listet als paginierte Tabelle (etwa Angular DataTable) die Produkte Rechnungen von Methode 1 auf
    • Komponente 2 wird als Einblendung über einen Button aus der jeweiligen Paginator Zeile aus gestartet – und soll die Informationen aus Methode 2 (Rechnungspositionen) und Methode 3 (Lieferstatus der Rechnungspositionen) in Tabellenform darstellen
  • Schreibe dazu erforderliche Tests

Add `RechnungFilter` shared interface

There is no backend to retrieve 'real' Rechnung objects, but we still want to be prepared if there is one added later.

If the backend is using a compatible stack (such as koa on node) the interfaces can be used directly. If not, it is sufficient documentation about what the frontend expects from the backend.

While this object will be only used for retrieving chunks of available data (e.g. Pagination in a Table) it should be treated like a generic filter applied to the datasource.

The filter contains following properties:

  • ChunkSize
    • a Chunk is at least 1
  • ChunkOffset
    • multiplicator of ChunkSize
    • providing a ChunkOffset that exceeds the available Data, defaults to displaying the last chunk possible

Display a Dialog for `Rechnungposition` and `Lieferstatus`

Feature of #10

As an Application User I want a Modal Form to open when I click on a Rechnung Table Entry, to inspect Rechnungposition and Lieferstatus of that specific Rechnung

Display a Modal Form and display all Rechnungposition and Lieferstatus for the selected Rechnung.

Add `RechnungService` to App

Provide the environment for future improvement

Erstelle einen Service mit 3 asynchronen Methoden, der ein kleines Set an Example Testdaten liefern kann

— from #2

Add `Rechnungposition` shared interface

Child of #33, Related Wiki

There is no backend to retrieve 'real' Rechnungposition objects, but we still want to be prepared if there is one added later.

If the backend is using a compatible stack (such as koa on node) the interfaces can be used directly. If not, it is sufficient documentation about what the frontend expects from the backend.

The interface contains following properties:

  • # Rechnungs-UID: string
  • # Produkt Name: string
  • # Produkt Betrag Netto: number

Filtering for `Rechung` Table

Feature of #10 ; Child of #11; Requires #9

As an Application User I want to be able to filter the displayed Rechnung Data by Pages

To make it easier navigating a large Amount of Data, the Rechnung Table should always be displayed in chunks, as defined by a paginator.

The filter contains following properties:

  • ChunkSize
    • a Chunk is at least 1
  • ChunkOffset
    • a multiple of ChunkSize
    • providing a ChunkOffset that exceedes the available Data, defaults to displaying the last chunk possible

Add `RechnungspositionService` to App

Erstelle einen Service mit 3 asynchronen Methoden, der ein kleines Set an Example Testdaten liefern kann
Exemplarisch für die Anbindung an eine fiktive RESTFul Schnittstelle
[...]
Methode 2 liefert für eine konkrete Rechnungs-UID die in der Rechnung enthaltenen n-Rechnungspositionen zurück
— from #2

The Client Requirement does suggest that Rechnungsposition is functionally nested within a Rechnung but not technically. This means we should put this Method in a more appropriate RechnungspositionService that handles CRUD for Rechnungsposition Objects

Rework `RechnungTable` Styling

Currently RechnungTable just uses what little styling comes out of the Angular-Material box.

Columns should use sensible styling to make data more readable

Add `filter` method to `RechnungService`

Child of #9

The signature of this new method is

RechnungService.filter(filter: Filter): []Rechnung

This new method takes a Filter object and applies it to the available Rechnung collection.

Fake Backend access. Retrieve a complete List of available Rechnung Objects from a static file and do the filtering in the service.
Add Unit Tests to ensure that replacing this Implementation with Backend Access won't break something downstream.

[POC]Dynamic DataSource Paging

Do before #12; Timeboxed 2h

Material Table does not support server-based paging (per their documentation). However, this isn't really needed since we want to simulate filtering on the backend anyway.

Check if Paging/Filtering can be implemented in a manageable timeframe

Alpha

As an Application User I want to pick a Rechnung from a Table to see its specific List of Rechnungsposition and Lieferstatus Information

Isolate Demo Data loading from Services

Child of #60

There are multiple scenarios for replacing the loading of data through services (like RechnungspositionService) if the need should arise in the future.

By taking out the preparation (and reviving) of the Demo Data this should be a much smaller task.

Load Services through `BusinessLogicService`

Methods defined in Client Requirements (#2) shouldn't be handled within the same service but should be grouped together to resemble the requested Business Logic.

Using a Facade to aggregate the different service into bespoke methods is probably the easiest ways to have our cake and eat it too.

Also this should make swapping backend services much easier

Add Angular 8 Project

Create a new Angular Application using Major Version 8

Erstelle Angular 8 Projekt mit Material

— from #2

Generate Test `Rechnung` Data

A small set of Test Data that was hand crafted might not show potential runtime issues. Generate some believable amounts of data.

Add `Lieferstatus` shared interface

Child of #33; Wiki Entry

There is no backend to retrieve 'real' Lieferstatus objects, but we still want to be prepared if there is one added later.

If the backend is using a compatible stack (such as koa on node) the interfaces can be used directly. If not, it is sufficient documentation about what the frontend expects from the backend.

Lieferposition\Produkt Name and Lieferstatus\Produkt Name will be used as Identites and matched with a case sensitive string compare.

The interface contains following properties:

  • # Produkt Name: string
  • # Lieferstatus: string

Clarification about `Rechnungs-UID` required

Rechnungs-UID is a Property/Field of Rechnung. There are two possible Definitions:

  1. The Receivers "UID" (Umsatz-Steuer-Identifikations-Nummer) Number
  2. An Identifier to be used for this Entity/Object

A Request for Clarification / further Information was sent to the Client on 2020-02-06.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.