grouped_view_widget.js 1.31 KB
odoo.define('account.ShowGroupedList', function (require) {
    "use strict";

    const {Component} = owl;
    const {useState} = owl.hooks;
    const AbstractFieldOwl = require('web.AbstractFieldOwl');
    const field_registry = require('web.field_registry_owl');

    class ListItem extends Component {
    }

    ListItem.template = 'account.GroupedItemTemplate';
    ListItem.props = ["item_vals", "options"];

    class ListGroup extends Component {
    }

    ListGroup.template = 'account.GroupedItemsTemplate';
    ListGroup.components = {ListItem}
    ListGroup.props = ["group_vals", "options"];


    class ShowGroupedList extends AbstractFieldOwl {
        constructor(...args) {
            super(...args);
            this.data = this.value ? JSON.parse(this.value) : {
                groups_vals: [],
                options: {
                    discarded_number: '',
                    columns: [],
                },
            };
        }

        async willUpdateProps(nextProps) {
            await super.willUpdateProps(nextProps);
            Object.assign(this.data, JSON.parse(this.value));
        }
    }

    ShowGroupedList.template = 'account.GroupedListTemplate';
    ShowGroupedList.components = {ListGroup}

    field_registry.add('grouped_view_widget', ShowGroupedList);
    return ShowGroupedList;
});