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:

Kanban nézet

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 sablont kanban-box kell 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 the name of the template to kanban-box

  • <field name="name"/>: this will add the name field 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 és raw_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 egy read() 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!