Chapter 14: A Brief History Of QWeb¶
Eddig az ingatlan modulunk felületének tervezése meglehetősen korlátozott volt. Egy lista nézet létrehozása egyszerű, mivel csak a mezők listája szükséges. Ugyanez igaz a form nézetre is: néhány címke, mint például a <group> vagy <page> használata ellenére, nagyon kevés a tervezés szempontjából.
Azonban, ha egyedi megjelenést szeretnénk adni alkalmazásunknak, szükséges egy lépéssel tovább menni és képesnek lenni új nézetek tervezésére. Továbbá, más funkciók, mint például a PDF jelentések vagy weboldal oldalak, egy másik eszközt igényelnek, hogy nagyobb rugalmassággal készüljenek: egy sablonmotor.
Lehet, hogy már ismeri a meglévő motorokat, mint például a Jinja (Python), ERB (Ruby) vagy Twig (PHP). Az Odoo saját beépített motorral rendelkezik: QWeb sablonok. A QWeb az Odoo által használt elsődleges sablonmotor. Ez egy XML sablonmotor, amelyet főként HTML töredékek és oldalak generálására használnak.
Valószínűleg már találkozott az Odoo kanban board nézetével, ahol a rekordok kártyaszerű struktúrában jelennek meg. Ilyen nézetet fogunk építeni az ingatlan modulunkhoz.
Konkrét példa: Kanban nézet¶
Hivatkozás: a témával kapcsolatos dokumentáció megtalálható a Kanban hivatkozás alatt.
Megjegyzés
Cél: a szakasz végére egy Kanban nézetet kell létrehozni az ingatlanokról:
Az ingatlan alkalmazásunkban szeretnénk hozzáadni egy Kanban nézetet az ingatlanok megjelenítéséhez. A Kanban nézetek az Odoo szabványos nézetei (mint az űrlap és a lista nézetek), de szerkezetük sokkal rugalmasabb. Valójában minden kártya szerkezete az űrlap elemek (beleértve az alapvető HTML-t) és a QWeb keveréke. A Kanban nézet meghatározása hasonló a lista és űrlap nézetek meghatározásához, kivéve, hogy gyökérelemük <kanban>. A legegyszerűbb formájában egy Kanban nézet így néz ki:
<kanban>
<templates>
<t t-name="kanban-box">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>
Nézzük meg részletesen ezt a példát:
<templates>: egy QWeb sablonok sablonok listáját határozza meg. A Kanban nézeteknek legalább egy gyökér sablontkanban-boxkell meghatározniuk, amely minden rekordhoz egyszer kerül megjelenítésre.<t t-name="kanban-box">:<t>is a placeholder element for QWeb directives. In this case, it is used to set thenameof the template tokanban-box<field name="name"/>: this will add thenamefield to the view.
Exercise
Készítsen egy minimális kanban nézetet.
A megadott egyszerű példa alapján hozzon létre egy minimális Kanban nézetet az ingatlanokhoz. Az egyetlen megjelenítendő mező a name.
Tipp: hozzá kell adnia a kanban-t a megfelelő ir.actions.act_window view_mode-jához.
Miután a Kanban nézet működik, elkezdhetjük annak fejlesztését. Ha feltételesen szeretnénk megjeleníteni egy elemet, használhatjuk a t-if direktívát (lásd Feltételes utasítások).
<kanban>
<field name="state"/>
<templates>
<t t-name="kanban-box">
<div>
<field name="name"/>
<div t-if="record.state.raw_value == 'new'">
This is new!
</div>
</div>
</t>
</templates>
</kanban>
Hozzáadtunk néhány dolgot:
t-if: a<div>elem megjelenik, ha a feltétel igaz.record: egy objektum, amely az összes kért mezőt tartalmazza attribútumként. Minden mezőnek két attribútuma van:valueésraw_value. Az előbbi a jelenlegi felhasználói paraméterek szerint van formázva, míg az utóbbi a közvetlen érték egyread()metódusból.
A fenti példában a name mező hozzá lett adva a <templates> elemhez, de a state azon kívül van. Amikor szükségünk van egy mező értékére, de nem akarjuk megjeleníteni a nézetben, lehetséges azt a <templates> elemen kívül hozzáadni.
Exercise
Fejlessze a Kanban nézetet.
Adja hozzá a következő mezőket a Kanban nézethez: várható ár, legjobb ár, eladási ár és címkék. Figyelem: a legjobb ár csak akkor jelenik meg, ha ajánlat érkezik, míg az eladási ár csak akkor jelenik meg, ha egy ajánlat elfogadásra kerül.
Hivatkozzon a szakasz Cél részére egy vizuális példáért.
Adjunk végső simítást a nézetünkhöz: az ingatlanokat alapértelmezés szerint típus szerint kell csoportosítani. Érdemes lehet megtekinteni a különböző lehetőségeket, amelyeket a Kanban leír.
Exercise
Adjon hozzá alapértelmezett csoportosítást.
Használja a megfelelő attribútumot az alapértelmezett tulajdonságok típus szerinti csoportosításához. Meg kell akadályoznia a húzást és ejtést is.
Hivatkozzon a szakasz Cél részére egy vizuális példáért.
A Kanban nézetek tipikus példái annak, hogy mindig jó ötlet egy meglévő nézetből kiindulni és finomhangolni azt, ahelyett, hogy a nulláról kezdenénk. Számos lehetőség és osztály áll rendelkezésre, tehát… olvasson és tanuljon!