From 5f9347457034a2ee3d0c771c7bb5b5485e5e68ea Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Thu, 29 Jun 2023 13:12:54 +0200 Subject: [PATCH] [IMP] web: Allow displaying simple json fields Purpose ======= It is currently impossible to display a json field on a form view without defining a specific widget. Allow displaying the json field in its simplest form, aka the stringified content in readonly mode. TaskID: 3101400 --- .../static/src/views/fields/jsonb/jsonb.js | 26 +++++++++++++++++++ .../static/src/views/fields/jsonb/jsonb.xml | 8 ++++++ 2 files changed, 34 insertions(+) create mode 100644 addons/web/static/src/views/fields/jsonb/jsonb.js create mode 100644 addons/web/static/src/views/fields/jsonb/jsonb.xml diff --git a/addons/web/static/src/views/fields/jsonb/jsonb.js b/addons/web/static/src/views/fields/jsonb/jsonb.js new file mode 100644 index 00000000000..58dc2e1083f --- /dev/null +++ b/addons/web/static/src/views/fields/jsonb/jsonb.js @@ -0,0 +1,26 @@ +/** @odoo-module **/ + +import { _lt } from "@web/core/l10n/translation"; +import { registry } from "@web/core/registry"; +import { standardFieldProps } from "../standard_field_props"; + +import { Component } from "@odoo/owl"; + +export class JsonField extends Component { + static template = "web.JsonbField"; + static props = { + ...standardFieldProps, + }; + get formattedValue() { + const value = this.props.record.data[this.props.name]; + return value ? JSON.stringify(value) : ""; + } +} + +export const jsonField = { + component: JsonField, + displayName: _lt("Json"), + supportedTypes: ["jsonb"], +}; + +registry.category("fields").add("jsonb", jsonField); diff --git a/addons/web/static/src/views/fields/jsonb/jsonb.xml b/addons/web/static/src/views/fields/jsonb/jsonb.xml new file mode 100644 index 00000000000..ac059c152fb --- /dev/null +++ b/addons/web/static/src/views/fields/jsonb/jsonb.xml @@ -0,0 +1,8 @@ + + + + + + + +