Widgets d'Odoo

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Les vistes form, tree o kanban de Odoo mostren els fields en els anomenats widgets. Aquests permenten, per exemple, que les dates tinguen un calendari o que es mostre una llista en un many2many.

Cada field te un widget per defecte, però es poden canviar si volem representar la informació de manera distinta. Aquests són els widgets disponibles per a cada tipus de field, sobretot per al form, encara que alguns funcionen en el tree:

Integer i Float

Els camps integer poden ser representats per molts widgets, es a dir, no donen error. Encara que no tots tenen sentit, com per exemple el text.

  • widget="integer": Tan sols mostra el número sense comes. En cas de no tindre valor, mostra 0.
  • widget="char": També mostra el número, si no te valor deixa un buit i el camp és més ample.
  • widget="id": Mostra el número però no es pot editar.
  • widget="float": Mostra el número en decimals.
  • widget="percentpie": Mostra un gràfic circular amb el percentatge (no funciona en la vista tree ni en kanban).

Percentpie.png

  • widget="float_time": Mostra els float com si representaren el temps.
  • widget="progressbar": Mostra una barra de progrés (funciona en la vista tree i form, però no en kanban):

Progressbar.png

  • widget="monetary": Mostra el número amb 2 decimals.
  • widget="gauge": Mostra un curiós gràfic de semi-circul. Sols funciona en kanban.

Gauge.png

 <field name="integrity" widget="gauge" style="width:150px; height: 110px;" options="{'levelcolors': ['#a9d70b', '#f9c802', '#ff0000'], 'action_jump': '357'}">Integrity</field>

Char i Text

  • widget="char": Mostra un editor d'un línia.
  • widget="text": Mostra un camp més alt per fer més d'una línia.
  • widget="email": Crea el enllaç per enviar-li un correu.
  • widget="url": Crea el enllaç amb http.
  • widget="date": Permet guardar dates com cadenes de text.
  • widget="html": Permet guardar textos però amb format. Apareix un wysiwyg
  • widget="sparkline": Mostra un gràfic menut indicant alguna progressió. Necessita tindre guardat (o generat) en el char un json determinat, per exemple:
[{"tooltip": "julio 2015", "value": "1.00"}, 
 {"tooltip": "agosto 2015", "value": "-1.00"}, 
 {"tooltip": "septiembre 2015", "value": "30.00"}, 
 {"tooltip": "octubre 2015", "value": "0.00"}, 
 {"tooltip": "noviembre 2015", "value": "0.00"}]

I aquest seria un exemple del XML per a que funcione:

  • <a type="action" class="oe_sparkline_bar_link"> Level: <field name="state" widget="sparkline_bar" options="{'delayIn': '3000'}" /> </a>
  • Un altre exemple: <field name="state" widget="sparkline_bar" options="{'type': 'tristate', 'colorMap': {'0': 'orange', '-1': 'red', '1': 'green'}}" /> En els exemples que es poden veure en Odoo, aquests valors són sempre computed, generant un json i invocant la funció de python json.dumps(). Amés, accepta algunes opcions:

      • type: Per defecte el type es bar, en altres exemples usa tristate. Segons el manual de la llibreria es poden usar pie, bullet, box o discrete Cadascun dona una apariència distinta al gràfic.
      • height: Altura
      • Més opcions i opcions específiques de cada type: [1]

    Sparkline.png

    Many2one

    • widget="many2one": Per defecte, crea un selection amb opció de crear nous. Accepta arguments per evitar les opcions de crear:
     <field name="field_name" options="{'no_create': True, 'no_open': True}"/>
    
    • widget="many2onebutton": Crea un simple botó que indica si està assignat. Si polses s'obri el formulari.

    Many2onebutton.png

    Many2Many

    • widget="many2many": Per defecte, crea una llista amb opció de esborrar o afegir nous.
    • widget="many2many_tags": Llista amb etiquetes com en els filtres

    Many2many tags.png

    • widget="many2many_checkboxes": Llista de checkboxes.

    Many2many checkboxes.png

    • widget="many2many_kanban": Mostra un kanban dels que té associats, necessita que la vista kanban estiga definida.
    • widget="x2many_counter": Mostra sols la quantitat.

    One2many

    • widget="one2many": Per defecte.
    • widget="one2many_list": Aparentment igual, es manté per retrocompatibilitat

    To Do

    char_domain, barchart, statusbar, kanban_state_selection, statinfo, priority