Coder Social home page Coder Social logo

spread-monitor-task's Introduction

Munkaidő

Összességében nagyságrendileg 11-12 órát foglalkoztam vele. Ennél pontosabban sajnos nem tudom, mert kicsit kaotikusan jutott rá időm a hétvégén. Ez a következő módon oszlott meg.

  • 2 óra CSS a user részen
  • 3 óra Angular-ozás
  • 4-5 óra utána olvasgatás (mit hogyan érdemes csinálni/lehet szépen megoldani), dokumentáció olvasása és planning
  • 2 óra refaktorálás

Döntések

  • Mivel a formoknak az admin felületen ugyanazt kellett tudniuk, így érdemes volt kiszervezni közös komponensbe, ez lett a Table component, ennek adtam át a type specific dolgokat, hogy használja (pl. updateFunction, editorForm stb.), emiatt sokkal könnyebb lenne bővíteni az appot új táblázattal
  • Az összes rekord lekérdezése nem túl gazdaságos, ehelyett mindig csak egy kissebb range-nyit kellene elkérni, amit éppen meg kell jeleníteni (pl. lapozásnál csak annyit, amennyi a limit), erre viszont az én API mockom nem volt képes és ez még mindig sokkal jobb megoldás volt, mint egyesével lekérdezgetni a szüséges számút, az az overhead miatt rosszabbul jött volna ki
  • A user view-ból kihagytam két rész, az új hozzáadását és a header alatti gombokat, mert ezek nem funkcionáltak volna, ha kell ezt pótlom szívesen
  • A navbart-t beraktam a user-view-hoz is a könnyebb navigáció végett
  • Törekedtem a clean code-ra és szép architektúrára, bár biztosan van, ahol még fejleszthető a dolog, főleg a CSS-ben
  • A table és card component még bontható lenne tovább, de nem akartam, hogy nagyon sok komponens legyen, bővítés esetén erre már biztosan szükség lenne
  • A modellek leválasztása miatt a séma megváltozása, viszonylag könnyen kezelhető

Rövid leírás

Az APP összesen 4 nézetből áll van egy user view, ahol listázom az "adatbázisban" lévő felhasználókat kártyákkal, ezen megjelenítve az adataikat. Ezen kívül ez a nézet tartalmaz még egy headert. A többi nézet az adminisztratív rész, ide a felső navigációt használva vagy direktben a /products /users /login url-eken érhetünk el. Az első két nézet eléréséhet autentikálni kell magunkat, ha anélkül próbáljuk elérni őket, akkor átirányítódunk a login oldalra. A login nézetről be tudunk lépni bármelyik felhasználó adataival, ezeket az src/app/services/in-memory-data.service.ts-ben találjuk a users változóban, az egyszerűség kedvéért itt egy email jelszó páros, hogy ki lehessen próbálni ([email protected] asdfasdf). Email-re van formátum check, jelszó 6-12 karakter kell, hogy legyen és mindkettő required. (Illetve kicsit hackelősebb megoldás, ha a local storage-ben csinálunk egy token nevű elemet bármilyen stringgel, ez gyorsabb, de cserébe nem megy az átirányítás olyan szépen.) Sikeres bejelentkezéssel a products oldalra kerülünk, ami lapozható és kereshető, rákattintva valamire, szerkeszthető is az adott bejegyzés, amit fel is küldünk az API-nkra, azaz "perzisztens" marad, tehát a navigációt túléli, de oldal frissítésre eltűnik. Hasonlóan működik a user szekció, itt a regisztrált felhasználóink vannak listázva, kereshetően, szerkeszthetően, lapozhatóan. Mindkét form elemei validálva vannak, search field direkt nincs validálva.

Struktúrájában 5 fontos rész van az appban, a modulok a root folderben, ebből van a megszokott app, az appban lévő importok csökkentése miatt a material és a routing szeparálásához az app-routing. Az adatmodellek a models alatt a service-ek a services alatt laknak, mert ezeket többen haszálják. Az app két logikailag elkülöníthető része a user és az admin folderben van. A user-ben van a user view, ez egy kártya lista komponens a "keretnek", a kátya komponens és header. Az adminisztratív rész tartalmaz a product és user entitásnak egy-egy saját komponenst amik a type specific funkciókat látják el és egy közöst table néven, ami a közös funkcionalítást végzi. Van egy login, ami az autentikációhoz szükséges form (a tényleges autentikálást az AuthenticationService és az AuthGuardService végzi). A navigation-t a kényelmesebb navigáció miatt tettem bele. Service-ből háromról nem volt még szó, az in-memory-data az API mock, a product és user pedig a megfelelő típus HTTP műveleteit végző service.

spread-monitor-task's People

Contributors

horvathmarton avatar

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.