jan-ka / bug-free-spork Goto Github PK
View Code? Open in Web Editor NEWExample Implementation for Interview Purposes
License: The Unlicense
Example Implementation for Interview Purposes
License: The Unlicense
Child of #33
If we want to change how Data is Loaded, it will be done via replacing the DataSource.
Pin down node version with nvm
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
Child of #33
Feature of #10
Rechnung
DataDisplay a Table containing all Rechnung
Properties
Child of #61
Found while building for production
Child of #33
Retrieve all Rechnungsposition
from Service
New Pipe to format values of Rechnung\Betrag Netto
to the format 0.000,00 €
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:
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.
Original Requirements:
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:
Rechnungsposition
DataA user should not be served a technical error but something he can understand or at least communicate.
If an error is thrown by the backend, display a customer understandable notification.
Feature of #10
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
.
Provide the environment for future improvement
Erstelle einen Service mit 3 asynchronen Methoden, der ein kleines Set an Example Testdaten liefern kann
— from #2
To better align with the Client Requirements (#2), introduce a Facade Service to group all other required Services.
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:
Feature of #10 ; Child of #11; Requires #9
Rechnung
Data by PagesTo 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:
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
Currently RechnungTable
just uses what little styling comes out of the Angular-Material box.
Columns should use sensible styling to make data more readable
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.
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
Rechnung
from a Table to see its specific List of Rechnungsposition
and Lieferstatus
InformationChild 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.
Komponente 2 wird als Einblendung über einen Button aus der jeweiligen Paginator Zeile aus gestartet
— from #2
Remove the click function and replace with a designated button
Don't send static data from within the service, load demo content from a JSON File
Check if there are unused shared Interfaces and consolidate local Interfaces where possible
Child of #33
Add a new component to display data related to Rechnungposition
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
Instead of hardwiring the demo data into RechnungService
, inject the JSON Module via the environment files.
Create a new Angular Application using Major Version 8
Erstelle Angular 8 Projekt mit Material
— from #2
A small set of Test Data that was hand crafted might not show potential runtime issues. Generate some believable amounts of data.
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:
Rechnungs-UID
is a Property/Field of Rechnung
. There are two possible Definitions:
A Request for Clarification / further Information was sent to the Client on 2020-02-06.
Convert the Datum to something sensible like dd. mm. YYYY
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.