1

かんばんビューとかんばんカード

かんばんカードをある列から別の列 (分析から進行中) にドラッグ アンド ドロップした場合、カードが移動したことをどのように検出できますか?

4

2 に答える 2

1

基本的にあなたの場合、かんばんカードにドラッグアンドドロップイベントを追加したい場合は、この場合、状態フィールドまたは任意の選択のようなフィールドのグループ化として、またはdefault_group_by="company_id"を使用して many2one フィールドとして 1 つのフィールドを設定する必要があります。

default_group_byは、主に、データベース テーブルの group_by 操作と同様に、各段階でかんばんカードをグループ化するために使用されます。

default_group_by :

アクションまたは現在の調査でグループ化が指定されていない場合に、かんばんビューをグループ化するかどうか。グループ化が特に指定されていない場合は、グループ化するフィールドの名前にする必要があります。

潜在的な問題:

ただし、潜在的な問題があります。アイテムのないグループを表す列は含まれません。これは、ユーザーが存在しないグループにアイテムを移動できないことを意味しますが、これはおそらく意図したものではありません。

Odoo には、この準備ができているための答えがあります。オプションのモデル属性です_group_by_full

_group_by_full :

これは、(グループ化に使用するフィールドの) フィールド名を、それらのフィールドで使用可能なすべてのグループに関する情報を返すメソッドにマッピングする辞書である必要があります。

class Store(models.Model):
    @api.model
    def company_groups(self, present_ids, domain, **kwargs):
        companies = self.env['res.company'].search([]).name_get()
        return companies, None

    _name = 'store'
    _group_by_full = {
        'company_id': company_groups,
    }

    name = fields.Char()
    company_id = fields.Many2many('res.company')

上記のコードは、company_id でグループ化された店舗オブジェクトを表示するときに、利用可能なすべての企業が (既に店舗を持っている企業だけでなく) 表示されることを保証します。

上記のコードは、company_id でグループ化された店舗オブジェクトを表示するときに、利用可能なすべての企業が (既に店舗を持っている企業だけでなく) 表示されることを保証します。

_group_by_full は 2 要素のタプルを返します。

最初の要素:

個々のグループを表す 2 つの要素タプルのリスト。リスト内のすべてのタプルには、特定のグループの値 (この例では特定の会社の ID) とグループのわかりやすい名前 (この例では会社の名前) を含める必要があります。そのため、(オブジェクト ID、オブジェクト名) タプルのリストを返す name_get メソッドを使用できます。

2 番目の要素:

グループの値をブール値にマッピングするディクショナリで、カンバン ビューでグループを折りたたむ必要があるかどうかを示します。このディクショナリにグループを含めないことは、それを False にマッピングすることと同じ意味です。

例えば ​​:

このバージョンの company_groups メソッドは、Kanban ビューで折り畳まれた ID 1 を持つ会社を表すグループを作成します。

また、crm.lead モデルの理解を深めるために crm モジュールを参照することもできます。これは、stage_id フィールドのかんばんレコードのグループ化の良い例です。

以下の投稿を参照してください。

https://www.odoo.com/documentation/8.0/reference/views.html#かんばん

http://ludwiktrammer.github.io/odoo/odoo-grouping-kanban-view-empty.html

私の答えがあなたに役立つことを願っています:)

于 2016-02-13T06:12:08.157 に答える
1

ドラッグ アンド ドロップ イベントごとに set_record() が呼び出されます

set_record: function(record) {
    var self = this;
    this.id = record.id;
    this.values = {};
    _.each(record, function(v, k) {
        self.values[k] = {
            value: v
        };
    });
    this.record = this.transform_record(record);
},

ソース: https://github.com/odoo/odoo/blob/8.0/addons/web_kanban/static/src/js/kanban.js#L894

于 2016-09-22T22:17:43.277 に答える